commit 404412da9e58b7a46ad984dd261883834fc9160c Author: suhas Date: Sun Mar 12 23:46:23 2023 -0500 code diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..53b061a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..0a07094 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,45 @@ +module.exports = { + env: { + commonjs: true, + es6: true, + node: true + }, + extends: ['eslint:recommended', 'prettier/@typescript-eslint', 'plugin:prettier/recommended'], + globals: { + NodeJS: true, + BigInt: true + }, + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaVersion: 6, + sourceType: 'module' + }, + plugins: ['@typescript-eslint'], + rules: { + 'prettier/prettier': 'warn', + 'no-cond-assign': [2, 'except-parens'], + 'no-unused-vars': 0, + '@typescript-eslint/no-unused-vars': 1, + 'no-empty': [ + 'error', + { + allowEmptyCatch: true + } + ], + 'prefer-const': [ + 'warn', + { + destructuring: 'all' + } + ], + 'spaced-comment': 'warn' + }, + overrides: [ + { + files: ['slash-up.config.js'], + env: { + node: true + } + } + ] +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..483b6e7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# Packages +node_modules/ +yarn.lock +package_lock.json + +# Log files +logs/ +*.log + +# Miscellaneous +.tmp/ +.vscode/**/* +!.vscode/extensions.json +.env +dist/ diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..fe3c1fd --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "semi": false, + "singleQuote": true, + "tabWidth": 2, + "useTabs": false, + "trailingComma": "none", + "printWidth": 120 +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..1c2c86d --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,8 @@ +{ + "recommendations": [ + "deepscan.vscode-deepscan", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "editorconfig.editorconfig" + ] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..753b05a --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# slash-create-template in TypeScript +This templates helps you in creating slash commands in TypeScript from a webserver. + +| [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/Snazzah/slash-create-template/tree/typescript) | [![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/new/template/GL2qbv?referralCode=snazzah) | +|:-:|:-:| + +## Installation +```sh +npx slash-up init typescript slash-commands +cd slash-commands +# edit variables in the ".env" file! +# Create and edit commands in the `commands` folder +npx slash-up sync +yarn build +yarn start +``` + +### From Railway/Heroku +For Railway and Heroku users, you must sync commands locally to push any command changes to Discord. You can do this by using `slash-up sync` within your Git repository. + +Heroku users will have their commands synced when they initially deploy to Heroku. + +### Using PM2 +```sh +npm i -g pm2 +# Follow the installation process above +pm2 start pm2.json +pm2 dump # recommended +``` diff --git a/app.json b/app.json new file mode 100644 index 0000000..37a9218 --- /dev/null +++ b/app.json @@ -0,0 +1,21 @@ +{ + "name": "/create (TypeScript)", + "description": "Deploy a slash-create server for Discord interactions.", + "repository": "https://github.com/Snazzah/slash-create-template/tree/typescript", + "logo": "https://slash-create.js.org/static/logo-nomargin.png", + "scripts": { + "postdeploy": "npx slash-up sync" + }, + "env": { + "DISCORD_APP_ID": { + "description": "The application ID of the Discord app" + }, + "DISCORD_PUBLIC_KEY": { + "description": "The public key of the Discord app" + }, + "DISCORD_BOT_TOKEN": { + "description": "The bot token of the Discord app" + } + }, + "keywords": ["node", "fastify", "discord", "interactions"] +} diff --git a/err.txt b/err.txt new file mode 100644 index 0000000..9c3743d --- /dev/null +++ b/err.txt @@ -0,0 +1,1739 @@ + 03/12 12:47:35 warn Syncing command permissions has been deprecated and will be removed in the future: https://link.snaz.in/sc-cpd +node:internal/process/promises:289 + triggerUncaughtException(err, true /* fromPromise */); + ^ + +DiscordRESTError [404]: Unknown interaction + at RequestHandler.request (/Users/suhas/code/fl/devnics-trial/node_modules/.pnpm/slash-create@5.11.0_fastify@3.29.5/node_modules/slash-create/lib/util/requestHandler.js:62:15) + at SlashCreatorAPI.interactionCallback (/Users/suhas/code/fl/devnics-trial/node_modules/.pnpm/slash-create@5.11.0_fastify@3.29.5/node_modules/slash-create/lib/api.js:84:45) + at CommandContext._respond (/Users/suhas/code/fl/devnics-trial/node_modules/.pnpm/slash-create@5.11.0_fastify@3.29.5/node_modules/slash-create/lib/creator.js:695:28) + at CommandContext.send (/Users/suhas/code/fl/devnics-trial/node_modules/.pnpm/slash-create@5.11.0_fastify@3.29.5/node_modules/slash-create/lib/structures/interfaces/messageInteraction.js:64:24) + at HelloCommand.finalize (/Users/suhas/code/fl/devnics-trial/node_modules/.pnpm/slash-create@5.11.0_fastify@3.29.5/node_modules/slash-create/lib/command.js:231:24) + at SlashCreator._runCommand (/Users/suhas/code/fl/devnics-trial/node_modules/.pnpm/slash-create@5.11.0_fastify@3.29.5/node_modules/slash-create/lib/creator.js:681:32) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + req: ClientRequest { + _events: [Object: null prototype] { + abort: [Function: bound onceWrapper] { listener: [Function (anonymous)] }, + error: [Function: bound onceWrapper] { listener: [Function (anonymous)] }, + socket: [Function (anonymous)], + timeout: [Function: bound onceWrapper] { listener: [Function (anonymous)] }, + finish: [Function: requestOnFinish] + }, + _eventsCount: 5, + _maxListeners: undefined, + outputData: [], + outputSize: 0, + writable: true, + destroyed: true, + _last: false, + chunkedEncoding: false, + shouldKeepAlive: true, + maxRequestsOnConnectionReached: false, + _defaultKeepAlive: true, + useChunkedEncodingByDefault: true, + sendDate: false, + _removedConnection: false, + _removedContLen: false, + _removedTE: false, + strictContentLength: false, + _contentLength: 100, + _hasBody: true, + _trailer: '', + finished: true, + _headerSent: true, + _closed: true, + socket: TLSSocket { + _tlsOptions: { + allowHalfOpen: undefined, + pipe: false, + secureContext: SecureContext { context: SecureContext {} }, + isServer: false, + requestCert: true, + rejectUnauthorized: true, + session: Buffer(1706) [Uint8Array] [ + 48, 130, 6, 166, 2, 1, 1, 2, 2, 3, 4, 4, + 2, 19, 2, 4, 32, 126, 75, 80, 244, 143, 11, 79, + 202, 45, 220, 55, 222, 217, 4, 7, 9, 201, 212, 10, + 3, 244, 81, 255, 200, 179, 18, 11, 203, 11, 104, 180, + 11, 4, 48, 94, 68, 44, 254, 230, 55, 208, 227, 125, + 146, 237, 131, 71, 168, 212, 45, 110, 43, 176, 181, 183, + 123, 219, 61, 4, 51, 190, 16, 103, 241, 96, 244, 49, + 198, 197, 204, 111, 235, 141, 98, 79, 18, 122, 52, 233, + 243, 14, 78, 161, + ... 1606 more items + ], + ALPNProtocols: undefined, + requestOCSP: undefined, + enableTrace: undefined, + pskCallback: undefined, + highWaterMark: undefined, + onread: undefined, + signal: undefined + }, + _secureEstablished: true, + _securePending: false, + _newSessionPending: false, + _controlReleased: true, + secureConnecting: false, + _SNICallback: null, + servername: 'discord.com', + alpnProtocol: false, + authorized: true, + authorizationError: null, + encrypted: true, + _events: [Object: null prototype] { + close: [ + [Function: onSocketCloseDestroySSL], + [Function: bound onceWrapper] { + listener: [Function (anonymous)] + }, + [Function: onClose] + ], + end: [Function: onReadableStreamEnd], + newListener: [Function: keylogNewListener], + secure: [Function: onConnectSecure], + session: [Function (anonymous)], + free: [Function: onFree], + timeout: [Function: onTimeout], + agentRemove: [Function: onRemove], + error: [Function: bound onceWrapper] { + listener: [Function: freeSocketErrorListener] + } + }, + _eventsCount: 9, + connecting: false, + _hadError: false, + _parent: null, + _host: 'discord.com', + _closeAfterHandlingError: false, + _readableState: ReadableState { + objectMode: false, + highWaterMark: 16384, + buffer: BufferList { head: null, tail: null, length: 0 }, + length: 0, + pipes: [], + flowing: true, + ended: false, + endEmitted: false, + reading: true, + constructed: true, + sync: false, + needReadable: true, + emittedReadable: false, + readableListening: false, + resumeScheduled: false, + errorEmitted: false, + emitClose: false, + autoDestroy: true, + destroyed: false, + errored: null, + closed: false, + closeEmitted: false, + defaultEncoding: 'utf8', + awaitDrainWriters: null, + multiAwaitDrain: false, + readingMore: false, + dataEmitted: true, + decoder: null, + encoding: null, + [Symbol(kPaused)]: false + }, + _maxListeners: undefined, + _writableState: WritableState { + objectMode: false, + highWaterMark: 16384, + finalCalled: false, + needDrain: false, + ending: false, + ended: false, + finished: false, + destroyed: false, + decodeStrings: false, + defaultEncoding: 'utf8', + length: 0, + writing: false, + corked: 0, + sync: false, + bufferProcessing: false, + onwrite: [Function: bound onwrite], + writecb: null, + writelen: 0, + afterWriteTickInfo: null, + buffered: [], + bufferedIndex: 0, + allBuffers: true, + allNoop: true, + pendingcb: 0, + constructed: true, + prefinished: false, + errorEmitted: false, + emitClose: false, + autoDestroy: true, + errored: null, + closed: false, + closeEmitted: false, + [Symbol(kOnFinished)]: [] + }, + allowHalfOpen: false, + _sockname: null, + _pendingData: null, + _pendingEncoding: '', + server: undefined, + _server: null, + ssl: TLSWrap { + _parent: TCP { + reading: [Getter/Setter], + onconnection: null, + [Symbol(owner_symbol)]: [Circular *1] + }, + _parentWrap: undefined, + _secureContext: SecureContext { context: SecureContext {} }, + reading: true, + onkeylog: [Function: onkeylog], + onhandshakestart: {}, + onhandshakedone: [Function (anonymous)], + onocspresponse: [Function: onocspresponse], + onnewsession: [Function: onnewsessionclient], + onerror: [Function: onerror], + [Symbol(owner_symbol)]: [Circular *1] + }, + _requestCert: true, + _rejectUnauthorized: true, + timeout: 5000, + parser: null, + _httpMessage: null, + [Symbol(res)]: TLSWrap { + _parent: TCP { + reading: [Getter/Setter], + onconnection: null, + [Symbol(owner_symbol)]: [Circular *1] + }, + _parentWrap: undefined, + _secureContext: SecureContext { context: SecureContext {} }, + reading: true, + onkeylog: [Function: onkeylog], + onhandshakestart: {}, + onhandshakedone: [Function (anonymous)], + onocspresponse: [Function: onocspresponse], + onnewsession: [Function: onnewsessionclient], + onerror: [Function: onerror], + [Symbol(owner_symbol)]: [Circular *1] + }, + [Symbol(verified)]: true, + [Symbol(pendingSession)]: null, + [Symbol(async_id_symbol)]: -1, + [Symbol(kHandle)]: TLSWrap { + _parent: TCP { + reading: [Getter/Setter], + onconnection: null, + [Symbol(owner_symbol)]: [Circular *1] + }, + _parentWrap: undefined, + _secureContext: SecureContext { context: SecureContext {} }, + reading: true, + onkeylog: [Function: onkeylog], + onhandshakestart: {}, + onhandshakedone: [Function (anonymous)], + onocspresponse: [Function: onocspresponse], + onnewsession: [Function: onnewsessionclient], + onerror: [Function: onerror], + [Symbol(owner_symbol)]: [Circular *1] + }, + [Symbol(lastWriteQueueSize)]: 0, + [Symbol(timeout)]: Timeout { + _idleTimeout: 5000, + _idlePrev: TimersList { + _idleNext: [Circular *2], + _idlePrev: [Circular *2], + expiry: 18131, + id: -9007199254740976, + msecs: 5000, + priorityQueuePosition: 2 + }, + _idleNext: TimersList { + _idleNext: [Circular *2], + _idlePrev: [Circular *2], + expiry: 18131, + id: -9007199254740976, + msecs: 5000, + priorityQueuePosition: 2 + }, + _idleStart: 13318, + _onTimeout: [Function: bound ], + _timerArgs: undefined, + _repeat: null, + _destroyed: false, + [Symbol(refed)]: false, + [Symbol(kHasPrimitive)]: false, + [Symbol(asyncId)]: 145, + [Symbol(triggerId)]: 143 + }, + [Symbol(kBuffer)]: null, + [Symbol(kBufferCb)]: null, + [Symbol(kBufferGen)]: null, + [Symbol(kCapture)]: false, + [Symbol(kSetNoDelay)]: false, + [Symbol(kSetKeepAlive)]: true, + [Symbol(kSetKeepAliveInitialDelay)]: 1, + [Symbol(kBytesRead)]: 0, + [Symbol(kBytesWritten)]: 0, + [Symbol(connect-options)]: { + rejectUnauthorized: true, + ciphers: 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA', + checkServerIdentity: [Function: checkServerIdentity], + minDHSize: 1024, + session: Buffer(1706) [Uint8Array] [ + 48, 130, 6, 166, 2, 1, 1, 2, 2, 3, 4, 4, + 2, 19, 2, 4, 32, 126, 75, 80, 244, 143, 11, 79, + 202, 45, 220, 55, 222, 217, 4, 7, 9, 201, 212, 10, + 3, 244, 81, 255, 200, 179, 18, 11, 203, 11, 104, 180, + 11, 4, 48, 94, 68, 44, 254, 230, 55, 208, 227, 125, + 146, 237, 131, 71, 168, 212, 45, 110, 43, 176, 181, 183, + 123, 219, 61, 4, 51, 190, 16, 103, 241, 96, 244, 49, + 198, 197, 204, 111, 235, 141, 98, 79, 18, 122, 52, 233, + 243, 14, 78, 161, + ... 1606 more items + ], + method: 'POST', + host: 'discord.com', + path: null, + headers: { + 'User-Agent': 'DiscordBot (https://github.com/Snazzah/slash-create, 5.11.0)', + 'Accept-Encoding': 'gzip,deflate', + 'X-RateLimit-Precision': 'millisecond', + 'Content-Type': 'application/json' + }, + agent: null, + _defaultAgent: Agent { + _events: [Object: null prototype] { + free: [Function (anonymous)], + newListener: [Function: maybeEnableKeylog] + }, + _eventsCount: 2, + _maxListeners: undefined, + defaultPort: 443, + protocol: 'https:', + options: [Object: null prototype] { + keepAlive: true, + scheduling: 'lifo', + timeout: 5000, + noDelay: true, + path: null + }, + requests: [Object: null prototype] {}, + sockets: [Object: null prototype] {}, + freeSockets: [Object: null prototype] { + 'discord.com:443:::::::::::::::::::::': [Array] + }, + keepAliveMsecs: 1000, + keepAlive: true, + maxSockets: Infinity, + maxFreeSockets: 256, + scheduling: 'lifo', + maxTotalSockets: Infinity, + totalSocketCount: 1, + maxCachedSessions: 100, + _sessionCache: { map: [Object], list: [Array] }, + [Symbol(kCapture)]: false + }, + port: 443, + keepAlive: true, + scheduling: 'lifo', + timeout: 5000, + noDelay: true, + servername: 'discord.com', + _agentKey: 'discord.com:443:::::::::::::::::::::', + encoding: null, + keepAliveInitialDelay: 1000 + } + }, + _header: 'POST /api/v10/interactions/1084533210211426316/aW50ZXJhY3Rpb246MTA4NDUzMzIxMDIxMTQyNjMxNjpiUFUxUDdCS2NUSUVtZkpyUjVyc29obzF3V0FlTFVET0gyRFo2bUw3a0dPSE83R05SV21KdGJkQWJDbm1vRFdHRXNpV2N6QXh6NXlpbXVhNk9ON0RoemxZTmVzODlDYkRzUldWZVVyOVc0T1FBQkJCQkRCR1hPbm1oZUxKbjd6Tw/callback HTTP/1.1\r\n' + + 'User-Agent: DiscordBot (https://github.com/Snazzah/slash-create, 5.11.0)\r\n' + + 'Accept-Encoding: gzip,deflate\r\n' + + 'X-RateLimit-Precision: millisecond\r\n' + + 'Content-Type: application/json\r\n' + + 'Host: discord.com\r\n' + + 'Connection: keep-alive\r\n' + + 'Content-Length: 100\r\n' + + '\r\n', + _keepAliveTimeout: 0, + _onPendingData: [Function: nop], + agent: Agent { + _events: [Object: null prototype] { + free: [Function (anonymous)], + newListener: [Function: maybeEnableKeylog] + }, + _eventsCount: 2, + _maxListeners: undefined, + defaultPort: 443, + protocol: 'https:', + options: [Object: null prototype] { + keepAlive: true, + scheduling: 'lifo', + timeout: 5000, + noDelay: true, + path: null + }, + requests: [Object: null prototype] {}, + sockets: [Object: null prototype] {}, + freeSockets: [Object: null prototype] { + 'discord.com:443:::::::::::::::::::::': [ + TLSSocket { + _tlsOptions: [Object], + _secureEstablished: true, + _securePending: false, + _newSessionPending: false, + _controlReleased: true, + secureConnecting: false, + _SNICallback: null, + servername: 'discord.com', + alpnProtocol: false, + authorized: true, + authorizationError: null, + encrypted: true, + _events: [Object: null prototype], + _eventsCount: 9, + connecting: false, + _hadError: false, + _parent: null, + _host: 'discord.com', + _closeAfterHandlingError: false, + _readableState: [ReadableState], + _maxListeners: undefined, + _writableState: [WritableState], + allowHalfOpen: false, + _sockname: null, + _pendingData: null, + _pendingEncoding: '', + server: undefined, + _server: null, + ssl: [TLSWrap], + _requestCert: true, + _rejectUnauthorized: true, + timeout: 5000, + parser: null, + _httpMessage: null, + [Symbol(res)]: [TLSWrap], + [Symbol(verified)]: true, + [Symbol(pendingSession)]: null, + [Symbol(async_id_symbol)]: -1, + [Symbol(kHandle)]: [TLSWrap], + [Symbol(lastWriteQueueSize)]: 0, + [Symbol(timeout)]: [Timeout], + [Symbol(kBuffer)]: null, + [Symbol(kBufferCb)]: null, + [Symbol(kBufferGen)]: null, + [Symbol(kCapture)]: false, + [Symbol(kSetNoDelay)]: false, + [Symbol(kSetKeepAlive)]: true, + [Symbol(kSetKeepAliveInitialDelay)]: 1, + [Symbol(kBytesRead)]: 0, + [Symbol(kBytesWritten)]: 0, + [Symbol(connect-options)]: [Object] + } + ] + }, + keepAliveMsecs: 1000, + keepAlive: true, + maxSockets: Infinity, + maxFreeSockets: 256, + scheduling: 'lifo', + maxTotalSockets: Infinity, + totalSocketCount: 1, + maxCachedSessions: 100, + _sessionCache: { + map: { + 'discord.com:443:::::::::::::::::::::': Buffer(1707) [Uint8Array] [ + 48, 130, 6, 167, 2, 1, 1, 2, 2, 3, 4, 4, + 2, 19, 2, 4, 32, 94, 207, 55, 41, 198, 240, 46, + 130, 106, 129, 98, 129, 210, 142, 244, 61, 40, 223, 83, + 17, 162, 147, 78, 66, 9, 244, 65, 114, 46, 105, 100, + 236, 4, 48, 245, 15, 215, 107, 207, 77, 22, 152, 10, + 172, 237, 80, 39, 157, 126, 97, 131, 112, 230, 30, 155, + 89, 135, 42, 20, 240, 219, 97, 232, 121, 211, 200, 225, + 35, 75, 218, 76, 60, 79, 186, 104, 12, 63, 57, 212, + 53, 189, 110, 161, + ... 1607 more items + ] + }, + list: [ 'discord.com:443:::::::::::::::::::::' ] + }, + [Symbol(kCapture)]: false + }, + socketPath: undefined, + method: 'POST', + maxHeaderSize: undefined, + insecureHTTPParser: undefined, + path: '/api/v10/interactions/1084533210211426316/aW50ZXJhY3Rpb246MTA4NDUzMzIxMDIxMTQyNjMxNjpiUFUxUDdCS2NUSUVtZkpyUjVyc29obzF3V0FlTFVET0gyRFo2bUw3a0dPSE83R05SV21KdGJkQWJDbm1vRFdHRXNpV2N6QXh6NXlpbXVhNk9ON0RoemxZTmVzODlDYkRzUldWZVVyOVc0T1FBQkJCQkRCR1hPbm1oZUxKbjd6Tw/callback', + _ended: true, + res: IncomingMessage { + _readableState: ReadableState { + objectMode: false, + highWaterMark: 16384, + buffer: BufferList { head: null, tail: null, length: 0 }, + length: 0, + pipes: [], + flowing: false, + ended: true, + endEmitted: true, + reading: false, + constructed: true, + sync: false, + needReadable: false, + emittedReadable: false, + readableListening: false, + resumeScheduled: false, + errorEmitted: false, + emitClose: true, + autoDestroy: true, + destroyed: true, + errored: null, + closed: true, + closeEmitted: true, + defaultEncoding: 'utf8', + awaitDrainWriters: null, + multiAwaitDrain: false, + readingMore: false, + dataEmitted: true, + decoder: null, + encoding: null, + [Symbol(kPaused)]: true + }, + _events: [Object: null prototype] { + end: [Function: responseOnEnd], + aborted: [Function: bound onceWrapper] { + listener: [Function (anonymous)] + } + }, + _eventsCount: 2, + _maxListeners: undefined, + socket: null, + httpVersionMajor: 1, + httpVersionMinor: 1, + httpVersion: '1.1', + complete: true, + rawHeaders: [ + 'Date', + 'Sun, 12 Mar 2023 17:47:47 GMT', + 'Content-Type', + 'application/json', + 'Transfer-Encoding', + 'chunked', + 'Connection', + 'keep-alive', + 'set-cookie', + '__dcfduid=fff886dcc0fd11edbc601aac3022a639; Expires=Fri, 10-Mar-2028 17:47:47 GMT; Max-Age=157680000; Secure; HttpOnly; Path=/', + 'strict-transport-security', + 'max-age=31536000; includeSubDomains; preload', + 'Via', + '1.1 google', + 'Alt-Svc', + 'h3=":443"; ma=86400, h3-29=":443"; ma=86400', + 'CF-Cache-Status', + 'DYNAMIC', + 'Report-To', + '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=K4zVIHnFHf3%2FcSpVS95ORanGeTEjM8J%2F3Zz5Au3LZ4Bh%2FD3241lTwy4DaleO4KQpuDq9cezxGC%2F2aA7mAPu%2BuvPSUD3waLvnKPZFn0mArh0YSPbUd81T1d2KJeT0"}],"group":"cf-nel","max_age":604800}', + 'NEL', + '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', + 'X-Content-Type-Options', + 'nosniff', + 'Set-Cookie', + '__sdcfduid=fff886dcc0fd11edbc601aac3022a63955dac456377e11fe86899223d3642017495539424d0595f853bc3fa779adfba3; Expires=Fri, 10-Mar-2028 17:47:47 GMT; Max-Age=157680000; Secure; HttpOnly; Path=/', + 'Set-Cookie', + '__cfruid=fadb701c45f71ae8ed067b27cd008f64033912a5-1678643267; path=/; domain=.discord.com; HttpOnly; Secure; SameSite=None', + 'Server', + 'cloudflare', + 'CF-RAY', + '7a6ddd437e8ae542-DFW', + 'Content-Encoding', + 'gzip' + ], + rawTrailers: [], + aborted: false, + upgrade: false, + url: '', + method: null, + statusCode: 404, + statusMessage: 'Not Found', + client: TLSSocket { + _tlsOptions: { + allowHalfOpen: undefined, + pipe: false, + secureContext: SecureContext { context: SecureContext {} }, + isServer: false, + requestCert: true, + rejectUnauthorized: true, + session: Buffer(1706) [Uint8Array] [ + 48, 130, 6, 166, 2, 1, 1, 2, 2, 3, 4, 4, + 2, 19, 2, 4, 32, 126, 75, 80, 244, 143, 11, 79, + 202, 45, 220, 55, 222, 217, 4, 7, 9, 201, 212, 10, + 3, 244, 81, 255, 200, 179, 18, 11, 203, 11, 104, 180, + 11, 4, 48, 94, 68, 44, 254, 230, 55, 208, 227, 125, + 146, 237, 131, 71, 168, 212, 45, 110, 43, 176, 181, 183, + 123, 219, 61, 4, 51, 190, 16, 103, 241, 96, 244, 49, + 198, 197, 204, 111, 235, 141, 98, 79, 18, 122, 52, 233, + 243, 14, 78, 161, + ... 1606 more items + ], + ALPNProtocols: undefined, + requestOCSP: undefined, + enableTrace: undefined, + pskCallback: undefined, + highWaterMark: undefined, + onread: undefined, + signal: undefined + }, + _secureEstablished: true, + _securePending: false, + _newSessionPending: false, + _controlReleased: true, + secureConnecting: false, + _SNICallback: null, + servername: 'discord.com', + alpnProtocol: false, + authorized: true, + authorizationError: null, + encrypted: true, + _events: [Object: null prototype] { + close: [ + [Function: onSocketCloseDestroySSL], + [Function], + [Function: onClose] + ], + end: [Function: onReadableStreamEnd], + newListener: [Function: keylogNewListener], + secure: [Function: onConnectSecure], + session: [Function (anonymous)], + free: [Function: onFree], + timeout: [Function: onTimeout], + agentRemove: [Function: onRemove], + error: [Function: bound onceWrapper] { + listener: [Function: freeSocketErrorListener] + } + }, + _eventsCount: 9, + connecting: false, + _hadError: false, + _parent: null, + _host: 'discord.com', + _closeAfterHandlingError: false, + _readableState: ReadableState { + objectMode: false, + highWaterMark: 16384, + buffer: BufferList { head: null, tail: null, length: 0 }, + length: 0, + pipes: [], + flowing: true, + ended: false, + endEmitted: false, + reading: true, + constructed: true, + sync: false, + needReadable: true, + emittedReadable: false, + readableListening: false, + resumeScheduled: false, + errorEmitted: false, + emitClose: false, + autoDestroy: true, + destroyed: false, + errored: null, + closed: false, + closeEmitted: false, + defaultEncoding: 'utf8', + awaitDrainWriters: null, + multiAwaitDrain: false, + readingMore: false, + dataEmitted: true, + decoder: null, + encoding: null, + [Symbol(kPaused)]: false + }, + _maxListeners: undefined, + _writableState: WritableState { + objectMode: false, + highWaterMark: 16384, + finalCalled: false, + needDrain: false, + ending: false, + ended: false, + finished: false, + destroyed: false, + decodeStrings: false, + defaultEncoding: 'utf8', + length: 0, + writing: false, + corked: 0, + sync: false, + bufferProcessing: false, + onwrite: [Function: bound onwrite], + writecb: null, + writelen: 0, + afterWriteTickInfo: null, + buffered: [], + bufferedIndex: 0, + allBuffers: true, + allNoop: true, + pendingcb: 0, + constructed: true, + prefinished: false, + errorEmitted: false, + emitClose: false, + autoDestroy: true, + errored: null, + closed: false, + closeEmitted: false, + [Symbol(kOnFinished)]: [] + }, + allowHalfOpen: false, + _sockname: null, + _pendingData: null, + _pendingEncoding: '', + server: undefined, + _server: null, + ssl: TLSWrap { + _parent: TCP { + reading: [Getter/Setter], + onconnection: null, + [Symbol(owner_symbol)]: [Circular *1] + }, + _parentWrap: undefined, + _secureContext: SecureContext { context: SecureContext {} }, + reading: true, + onkeylog: [Function: onkeylog], + onhandshakestart: {}, + onhandshakedone: [Function (anonymous)], + onocspresponse: [Function: onocspresponse], + onnewsession: [Function: onnewsessionclient], + onerror: [Function: onerror], + [Symbol(owner_symbol)]: [Circular *1] + }, + _requestCert: true, + _rejectUnauthorized: true, + timeout: 5000, + parser: null, + _httpMessage: null, + [Symbol(res)]: TLSWrap { + _parent: TCP { + reading: [Getter/Setter], + onconnection: null, + [Symbol(owner_symbol)]: [Circular *1] + }, + _parentWrap: undefined, + _secureContext: SecureContext { context: SecureContext {} }, + reading: true, + onkeylog: [Function: onkeylog], + onhandshakestart: {}, + onhandshakedone: [Function (anonymous)], + onocspresponse: [Function: onocspresponse], + onnewsession: [Function: onnewsessionclient], + onerror: [Function: onerror], + [Symbol(owner_symbol)]: [Circular *1] + }, + [Symbol(verified)]: true, + [Symbol(pendingSession)]: null, + [Symbol(async_id_symbol)]: -1, + [Symbol(kHandle)]: TLSWrap { + _parent: TCP { + reading: [Getter/Setter], + onconnection: null, + [Symbol(owner_symbol)]: [Circular *1] + }, + _parentWrap: undefined, + _secureContext: SecureContext { context: SecureContext {} }, + reading: true, + onkeylog: [Function: onkeylog], + onhandshakestart: {}, + onhandshakedone: [Function (anonymous)], + onocspresponse: [Function: onocspresponse], + onnewsession: [Function: onnewsessionclient], + onerror: [Function: onerror], + [Symbol(owner_symbol)]: [Circular *1] + }, + [Symbol(lastWriteQueueSize)]: 0, + [Symbol(timeout)]: Timeout { + _idleTimeout: 5000, + _idlePrev: TimersList { + _idleNext: [Circular *2], + _idlePrev: [Circular *2], + expiry: 18131, + id: -9007199254740976, + msecs: 5000, + priorityQueuePosition: 2 + }, + _idleNext: TimersList { + _idleNext: [Circular *2], + _idlePrev: [Circular *2], + expiry: 18131, + id: -9007199254740976, + msecs: 5000, + priorityQueuePosition: 2 + }, + _idleStart: 13318, + _onTimeout: [Function: bound ], + _timerArgs: undefined, + _repeat: null, + _destroyed: false, + [Symbol(refed)]: false, + [Symbol(kHasPrimitive)]: false, + [Symbol(asyncId)]: 145, + [Symbol(triggerId)]: 143 + }, + [Symbol(kBuffer)]: null, + [Symbol(kBufferCb)]: null, + [Symbol(kBufferGen)]: null, + [Symbol(kCapture)]: false, + [Symbol(kSetNoDelay)]: false, + [Symbol(kSetKeepAlive)]: true, + [Symbol(kSetKeepAliveInitialDelay)]: 1, + [Symbol(kBytesRead)]: 0, + [Symbol(kBytesWritten)]: 0, + [Symbol(connect-options)]: { + rejectUnauthorized: true, + ciphers: 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA', + checkServerIdentity: [Function: checkServerIdentity], + minDHSize: 1024, + session: Buffer(1706) [Uint8Array] [ + 48, 130, 6, 166, 2, 1, 1, 2, 2, 3, 4, 4, + 2, 19, 2, 4, 32, 126, 75, 80, 244, 143, 11, 79, + 202, 45, 220, 55, 222, 217, 4, 7, 9, 201, 212, 10, + 3, 244, 81, 255, 200, 179, 18, 11, 203, 11, 104, 180, + 11, 4, 48, 94, 68, 44, 254, 230, 55, 208, 227, 125, + 146, 237, 131, 71, 168, 212, 45, 110, 43, 176, 181, 183, + 123, 219, 61, 4, 51, 190, 16, 103, 241, 96, 244, 49, + 198, 197, 204, 111, 235, 141, 98, 79, 18, 122, 52, 233, + 243, 14, 78, 161, + ... 1606 more items + ], + method: 'POST', + host: 'discord.com', + path: null, + headers: { + 'User-Agent': 'DiscordBot (https://github.com/Snazzah/slash-create, 5.11.0)', + 'Accept-Encoding': 'gzip,deflate', + 'X-RateLimit-Precision': 'millisecond', + 'Content-Type': 'application/json' + }, + agent: null, + _defaultAgent: Agent { + _events: [Object: null prototype], + _eventsCount: 2, + _maxListeners: undefined, + defaultPort: 443, + protocol: 'https:', + options: [Object: null prototype], + requests: [Object: null prototype] {}, + sockets: [Object: null prototype] {}, + freeSockets: [Object: null prototype], + keepAliveMsecs: 1000, + keepAlive: true, + maxSockets: Infinity, + maxFreeSockets: 256, + scheduling: 'lifo', + maxTotalSockets: Infinity, + totalSocketCount: 1, + maxCachedSessions: 100, + _sessionCache: [Object], + [Symbol(kCapture)]: false + }, + port: 443, + keepAlive: true, + scheduling: 'lifo', + timeout: 5000, + noDelay: true, + servername: 'discord.com', + _agentKey: 'discord.com:443:::::::::::::::::::::', + encoding: null, + keepAliveInitialDelay: 1000 + } + }, + _consuming: true, + _dumped: false, + req: [Circular *3], + [Symbol(kCapture)]: false, + [Symbol(kHeaders)]: { + date: 'Sun, 12 Mar 2023 17:47:47 GMT', + 'content-type': 'application/json', + 'transfer-encoding': 'chunked', + connection: 'keep-alive', + 'set-cookie': [ + '__dcfduid=fff886dcc0fd11edbc601aac3022a639; Expires=Fri, 10-Mar-2028 17:47:47 GMT; Max-Age=157680000; Secure; HttpOnly; Path=/', + '__sdcfduid=fff886dcc0fd11edbc601aac3022a63955dac456377e11fe86899223d3642017495539424d0595f853bc3fa779adfba3; Expires=Fri, 10-Mar-2028 17:47:47 GMT; Max-Age=157680000; Secure; HttpOnly; Path=/', + '__cfruid=fadb701c45f71ae8ed067b27cd008f64033912a5-1678643267; path=/; domain=.discord.com; HttpOnly; Secure; SameSite=None' + ], + 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', + via: '1.1 google', + 'alt-svc': 'h3=":443"; ma=86400, h3-29=":443"; ma=86400', + 'cf-cache-status': 'DYNAMIC', + 'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=K4zVIHnFHf3%2FcSpVS95ORanGeTEjM8J%2F3Zz5Au3LZ4Bh%2FD3241lTwy4DaleO4KQpuDq9cezxGC%2F2aA7mAPu%2BuvPSUD3waLvnKPZFn0mArh0YSPbUd81T1d2KJeT0"}],"group":"cf-nel","max_age":604800}', + nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', + 'x-content-type-options': 'nosniff', + server: 'cloudflare', + 'cf-ray': '7a6ddd437e8ae542-DFW', + 'content-encoding': 'gzip' + }, + [Symbol(kHeadersCount)]: 34, + [Symbol(kTrailers)]: null, + [Symbol(kTrailersCount)]: 0 + }, + aborted: false, + timeoutCb: null, + upgradeOrConnect: false, + parser: null, + maxHeadersCount: null, + reusedSocket: false, + host: 'discord.com', + protocol: 'https:', + [Symbol(kCapture)]: false, + [Symbol(kBytesWritten)]: 0, + [Symbol(kEndCalled)]: true, + [Symbol(kNeedDrain)]: false, + [Symbol(corked)]: 0, + [Symbol(kOutHeaders)]: [Object: null prototype] { + 'user-agent': [ + 'User-Agent', + 'DiscordBot (https://github.com/Snazzah/slash-create, 5.11.0)' + ], + 'accept-encoding': [ 'Accept-Encoding', 'gzip,deflate' ], + 'x-ratelimit-precision': [ 'X-RateLimit-Precision', 'millisecond' ], + 'content-type': [ 'Content-Type', 'application/json' ], + host: [ 'Host', 'discord.com' ] + }, + [Symbol(errored)]: null, + [Symbol(kUniqueHeaders)]: null + }, + res: IncomingMessage { + _readableState: ReadableState { + objectMode: false, + highWaterMark: 16384, + buffer: BufferList { head: null, tail: null, length: 0 }, + length: 0, + pipes: [], + flowing: false, + ended: true, + endEmitted: true, + reading: false, + constructed: true, + sync: false, + needReadable: false, + emittedReadable: false, + readableListening: false, + resumeScheduled: false, + errorEmitted: false, + emitClose: true, + autoDestroy: true, + destroyed: true, + errored: null, + closed: true, + closeEmitted: true, + defaultEncoding: 'utf8', + awaitDrainWriters: null, + multiAwaitDrain: false, + readingMore: false, + dataEmitted: true, + decoder: null, + encoding: null, + [Symbol(kPaused)]: true + }, + _events: [Object: null prototype] { + end: [Function: responseOnEnd], + aborted: [Function: bound onceWrapper] { listener: [Function (anonymous)] } + }, + _eventsCount: 2, + _maxListeners: undefined, + socket: null, + httpVersionMajor: 1, + httpVersionMinor: 1, + httpVersion: '1.1', + complete: true, + rawHeaders: [ + 'Date', + 'Sun, 12 Mar 2023 17:47:47 GMT', + 'Content-Type', + 'application/json', + 'Transfer-Encoding', + 'chunked', + 'Connection', + 'keep-alive', + 'set-cookie', + '__dcfduid=fff886dcc0fd11edbc601aac3022a639; Expires=Fri, 10-Mar-2028 17:47:47 GMT; Max-Age=157680000; Secure; HttpOnly; Path=/', + 'strict-transport-security', + 'max-age=31536000; includeSubDomains; preload', + 'Via', + '1.1 google', + 'Alt-Svc', + 'h3=":443"; ma=86400, h3-29=":443"; ma=86400', + 'CF-Cache-Status', + 'DYNAMIC', + 'Report-To', + '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=K4zVIHnFHf3%2FcSpVS95ORanGeTEjM8J%2F3Zz5Au3LZ4Bh%2FD3241lTwy4DaleO4KQpuDq9cezxGC%2F2aA7mAPu%2BuvPSUD3waLvnKPZFn0mArh0YSPbUd81T1d2KJeT0"}],"group":"cf-nel","max_age":604800}', + 'NEL', + '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', + 'X-Content-Type-Options', + 'nosniff', + 'Set-Cookie', + '__sdcfduid=fff886dcc0fd11edbc601aac3022a63955dac456377e11fe86899223d3642017495539424d0595f853bc3fa779adfba3; Expires=Fri, 10-Mar-2028 17:47:47 GMT; Max-Age=157680000; Secure; HttpOnly; Path=/', + 'Set-Cookie', + '__cfruid=fadb701c45f71ae8ed067b27cd008f64033912a5-1678643267; path=/; domain=.discord.com; HttpOnly; Secure; SameSite=None', + 'Server', + 'cloudflare', + 'CF-RAY', + '7a6ddd437e8ae542-DFW', + 'Content-Encoding', + 'gzip' + ], + rawTrailers: [], + aborted: false, + upgrade: false, + url: '', + method: null, + statusCode: 404, + statusMessage: 'Not Found', + client: TLSSocket { + _tlsOptions: { + allowHalfOpen: undefined, + pipe: false, + secureContext: SecureContext { context: SecureContext {} }, + isServer: false, + requestCert: true, + rejectUnauthorized: true, + session: Buffer(1706) [Uint8Array] [ + 48, 130, 6, 166, 2, 1, 1, 2, 2, 3, 4, 4, + 2, 19, 2, 4, 32, 126, 75, 80, 244, 143, 11, 79, + 202, 45, 220, 55, 222, 217, 4, 7, 9, 201, 212, 10, + 3, 244, 81, 255, 200, 179, 18, 11, 203, 11, 104, 180, + 11, 4, 48, 94, 68, 44, 254, 230, 55, 208, 227, 125, + 146, 237, 131, 71, 168, 212, 45, 110, 43, 176, 181, 183, + 123, 219, 61, 4, 51, 190, 16, 103, 241, 96, 244, 49, + 198, 197, 204, 111, 235, 141, 98, 79, 18, 122, 52, 233, + 243, 14, 78, 161, + ... 1606 more items + ], + ALPNProtocols: undefined, + requestOCSP: undefined, + enableTrace: undefined, + pskCallback: undefined, + highWaterMark: undefined, + onread: undefined, + signal: undefined + }, + _secureEstablished: true, + _securePending: false, + _newSessionPending: false, + _controlReleased: true, + secureConnecting: false, + _SNICallback: null, + servername: 'discord.com', + alpnProtocol: false, + authorized: true, + authorizationError: null, + encrypted: true, + _events: [Object: null prototype] { + close: [ + [Function: onSocketCloseDestroySSL], + [Function: bound onceWrapper] { + listener: [Function (anonymous)] + }, + [Function: onClose] + ], + end: [Function: onReadableStreamEnd], + newListener: [Function: keylogNewListener], + secure: [Function: onConnectSecure], + session: [Function (anonymous)], + free: [Function: onFree], + timeout: [Function: onTimeout], + agentRemove: [Function: onRemove], + error: [Function: bound onceWrapper] { + listener: [Function: freeSocketErrorListener] + } + }, + _eventsCount: 9, + connecting: false, + _hadError: false, + _parent: null, + _host: 'discord.com', + _closeAfterHandlingError: false, + _readableState: ReadableState { + objectMode: false, + highWaterMark: 16384, + buffer: BufferList { head: null, tail: null, length: 0 }, + length: 0, + pipes: [], + flowing: true, + ended: false, + endEmitted: false, + reading: true, + constructed: true, + sync: false, + needReadable: true, + emittedReadable: false, + readableListening: false, + resumeScheduled: false, + errorEmitted: false, + emitClose: false, + autoDestroy: true, + destroyed: false, + errored: null, + closed: false, + closeEmitted: false, + defaultEncoding: 'utf8', + awaitDrainWriters: null, + multiAwaitDrain: false, + readingMore: false, + dataEmitted: true, + decoder: null, + encoding: null, + [Symbol(kPaused)]: false + }, + _maxListeners: undefined, + _writableState: WritableState { + objectMode: false, + highWaterMark: 16384, + finalCalled: false, + needDrain: false, + ending: false, + ended: false, + finished: false, + destroyed: false, + decodeStrings: false, + defaultEncoding: 'utf8', + length: 0, + writing: false, + corked: 0, + sync: false, + bufferProcessing: false, + onwrite: [Function: bound onwrite], + writecb: null, + writelen: 0, + afterWriteTickInfo: null, + buffered: [], + bufferedIndex: 0, + allBuffers: true, + allNoop: true, + pendingcb: 0, + constructed: true, + prefinished: false, + errorEmitted: false, + emitClose: false, + autoDestroy: true, + errored: null, + closed: false, + closeEmitted: false, + [Symbol(kOnFinished)]: [] + }, + allowHalfOpen: false, + _sockname: null, + _pendingData: null, + _pendingEncoding: '', + server: undefined, + _server: null, + ssl: TLSWrap { + _parent: TCP { + reading: [Getter/Setter], + onconnection: null, + [Symbol(owner_symbol)]: [Circular *1] + }, + _parentWrap: undefined, + _secureContext: SecureContext { context: SecureContext {} }, + reading: true, + onkeylog: [Function: onkeylog], + onhandshakestart: {}, + onhandshakedone: [Function (anonymous)], + onocspresponse: [Function: onocspresponse], + onnewsession: [Function: onnewsessionclient], + onerror: [Function: onerror], + [Symbol(owner_symbol)]: [Circular *1] + }, + _requestCert: true, + _rejectUnauthorized: true, + timeout: 5000, + parser: null, + _httpMessage: null, + [Symbol(res)]: TLSWrap { + _parent: TCP { + reading: [Getter/Setter], + onconnection: null, + [Symbol(owner_symbol)]: [Circular *1] + }, + _parentWrap: undefined, + _secureContext: SecureContext { context: SecureContext {} }, + reading: true, + onkeylog: [Function: onkeylog], + onhandshakestart: {}, + onhandshakedone: [Function (anonymous)], + onocspresponse: [Function: onocspresponse], + onnewsession: [Function: onnewsessionclient], + onerror: [Function: onerror], + [Symbol(owner_symbol)]: [Circular *1] + }, + [Symbol(verified)]: true, + [Symbol(pendingSession)]: null, + [Symbol(async_id_symbol)]: -1, + [Symbol(kHandle)]: TLSWrap { + _parent: TCP { + reading: [Getter/Setter], + onconnection: null, + [Symbol(owner_symbol)]: [Circular *1] + }, + _parentWrap: undefined, + _secureContext: SecureContext { context: SecureContext {} }, + reading: true, + onkeylog: [Function: onkeylog], + onhandshakestart: {}, + onhandshakedone: [Function (anonymous)], + onocspresponse: [Function: onocspresponse], + onnewsession: [Function: onnewsessionclient], + onerror: [Function: onerror], + [Symbol(owner_symbol)]: [Circular *1] + }, + [Symbol(lastWriteQueueSize)]: 0, + [Symbol(timeout)]: Timeout { + _idleTimeout: 5000, + _idlePrev: TimersList { + _idleNext: [Circular *2], + _idlePrev: [Circular *2], + expiry: 18131, + id: -9007199254740976, + msecs: 5000, + priorityQueuePosition: 2 + }, + _idleNext: TimersList { + _idleNext: [Circular *2], + _idlePrev: [Circular *2], + expiry: 18131, + id: -9007199254740976, + msecs: 5000, + priorityQueuePosition: 2 + }, + _idleStart: 13318, + _onTimeout: [Function: bound ], + _timerArgs: undefined, + _repeat: null, + _destroyed: false, + [Symbol(refed)]: false, + [Symbol(kHasPrimitive)]: false, + [Symbol(asyncId)]: 145, + [Symbol(triggerId)]: 143 + }, + [Symbol(kBuffer)]: null, + [Symbol(kBufferCb)]: null, + [Symbol(kBufferGen)]: null, + [Symbol(kCapture)]: false, + [Symbol(kSetNoDelay)]: false, + [Symbol(kSetKeepAlive)]: true, + [Symbol(kSetKeepAliveInitialDelay)]: 1, + [Symbol(kBytesRead)]: 0, + [Symbol(kBytesWritten)]: 0, + [Symbol(connect-options)]: { + rejectUnauthorized: true, + ciphers: 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA', + checkServerIdentity: [Function: checkServerIdentity], + minDHSize: 1024, + session: Buffer(1706) [Uint8Array] [ + 48, 130, 6, 166, 2, 1, 1, 2, 2, 3, 4, 4, + 2, 19, 2, 4, 32, 126, 75, 80, 244, 143, 11, 79, + 202, 45, 220, 55, 222, 217, 4, 7, 9, 201, 212, 10, + 3, 244, 81, 255, 200, 179, 18, 11, 203, 11, 104, 180, + 11, 4, 48, 94, 68, 44, 254, 230, 55, 208, 227, 125, + 146, 237, 131, 71, 168, 212, 45, 110, 43, 176, 181, 183, + 123, 219, 61, 4, 51, 190, 16, 103, 241, 96, 244, 49, + 198, 197, 204, 111, 235, 141, 98, 79, 18, 122, 52, 233, + 243, 14, 78, 161, + ... 1606 more items + ], + method: 'POST', + host: 'discord.com', + path: null, + headers: { + 'User-Agent': 'DiscordBot (https://github.com/Snazzah/slash-create, 5.11.0)', + 'Accept-Encoding': 'gzip,deflate', + 'X-RateLimit-Precision': 'millisecond', + 'Content-Type': 'application/json' + }, + agent: null, + _defaultAgent: Agent { + _events: [Object: null prototype] { + free: [Function (anonymous)], + newListener: [Function: maybeEnableKeylog] + }, + _eventsCount: 2, + _maxListeners: undefined, + defaultPort: 443, + protocol: 'https:', + options: [Object: null prototype] { + keepAlive: true, + scheduling: 'lifo', + timeout: 5000, + noDelay: true, + path: null + }, + requests: [Object: null prototype] {}, + sockets: [Object: null prototype] {}, + freeSockets: [Object: null prototype] { + 'discord.com:443:::::::::::::::::::::': [Array] + }, + keepAliveMsecs: 1000, + keepAlive: true, + maxSockets: Infinity, + maxFreeSockets: 256, + scheduling: 'lifo', + maxTotalSockets: Infinity, + totalSocketCount: 1, + maxCachedSessions: 100, + _sessionCache: { map: [Object], list: [Array] }, + [Symbol(kCapture)]: false + }, + port: 443, + keepAlive: true, + scheduling: 'lifo', + timeout: 5000, + noDelay: true, + servername: 'discord.com', + _agentKey: 'discord.com:443:::::::::::::::::::::', + encoding: null, + keepAliveInitialDelay: 1000 + } + }, + _consuming: true, + _dumped: false, + req: ClientRequest { + _events: [Object: null prototype] { + abort: [Function: bound onceWrapper] { + listener: [Function (anonymous)] + }, + error: [Function: bound onceWrapper] { + listener: [Function (anonymous)] + }, + socket: [Function (anonymous)], + timeout: [Function: bound onceWrapper] { + listener: [Function (anonymous)] + }, + finish: [Function: requestOnFinish] + }, + _eventsCount: 5, + _maxListeners: undefined, + outputData: [], + outputSize: 0, + writable: true, + destroyed: true, + _last: false, + chunkedEncoding: false, + shouldKeepAlive: true, + maxRequestsOnConnectionReached: false, + _defaultKeepAlive: true, + useChunkedEncodingByDefault: true, + sendDate: false, + _removedConnection: false, + _removedContLen: false, + _removedTE: false, + strictContentLength: false, + _contentLength: 100, + _hasBody: true, + _trailer: '', + finished: true, + _headerSent: true, + _closed: true, + socket: TLSSocket { + _tlsOptions: { + allowHalfOpen: undefined, + pipe: false, + secureContext: SecureContext { context: SecureContext {} }, + isServer: false, + requestCert: true, + rejectUnauthorized: true, + session: Buffer(1706) [Uint8Array] [ + 48, 130, 6, 166, 2, 1, 1, 2, 2, 3, 4, 4, + 2, 19, 2, 4, 32, 126, 75, 80, 244, 143, 11, 79, + 202, 45, 220, 55, 222, 217, 4, 7, 9, 201, 212, 10, + 3, 244, 81, 255, 200, 179, 18, 11, 203, 11, 104, 180, + 11, 4, 48, 94, 68, 44, 254, 230, 55, 208, 227, 125, + 146, 237, 131, 71, 168, 212, 45, 110, 43, 176, 181, 183, + 123, 219, 61, 4, 51, 190, 16, 103, 241, 96, 244, 49, + 198, 197, 204, 111, 235, 141, 98, 79, 18, 122, 52, 233, + 243, 14, 78, 161, + ... 1606 more items + ], + ALPNProtocols: undefined, + requestOCSP: undefined, + enableTrace: undefined, + pskCallback: undefined, + highWaterMark: undefined, + onread: undefined, + signal: undefined + }, + _secureEstablished: true, + _securePending: false, + _newSessionPending: false, + _controlReleased: true, + secureConnecting: false, + _SNICallback: null, + servername: 'discord.com', + alpnProtocol: false, + authorized: true, + authorizationError: null, + encrypted: true, + _events: [Object: null prototype] { + close: [ + [Function: onSocketCloseDestroySSL], + [Function], + [Function: onClose] + ], + end: [Function: onReadableStreamEnd], + newListener: [Function: keylogNewListener], + secure: [Function: onConnectSecure], + session: [Function (anonymous)], + free: [Function: onFree], + timeout: [Function: onTimeout], + agentRemove: [Function: onRemove], + error: [Function: bound onceWrapper] { + listener: [Function: freeSocketErrorListener] + } + }, + _eventsCount: 9, + connecting: false, + _hadError: false, + _parent: null, + _host: 'discord.com', + _closeAfterHandlingError: false, + _readableState: ReadableState { + objectMode: false, + highWaterMark: 16384, + buffer: BufferList { head: null, tail: null, length: 0 }, + length: 0, + pipes: [], + flowing: true, + ended: false, + endEmitted: false, + reading: true, + constructed: true, + sync: false, + needReadable: true, + emittedReadable: false, + readableListening: false, + resumeScheduled: false, + errorEmitted: false, + emitClose: false, + autoDestroy: true, + destroyed: false, + errored: null, + closed: false, + closeEmitted: false, + defaultEncoding: 'utf8', + awaitDrainWriters: null, + multiAwaitDrain: false, + readingMore: false, + dataEmitted: true, + decoder: null, + encoding: null, + [Symbol(kPaused)]: false + }, + _maxListeners: undefined, + _writableState: WritableState { + objectMode: false, + highWaterMark: 16384, + finalCalled: false, + needDrain: false, + ending: false, + ended: false, + finished: false, + destroyed: false, + decodeStrings: false, + defaultEncoding: 'utf8', + length: 0, + writing: false, + corked: 0, + sync: false, + bufferProcessing: false, + onwrite: [Function: bound onwrite], + writecb: null, + writelen: 0, + afterWriteTickInfo: null, + buffered: [], + bufferedIndex: 0, + allBuffers: true, + allNoop: true, + pendingcb: 0, + constructed: true, + prefinished: false, + errorEmitted: false, + emitClose: false, + autoDestroy: true, + errored: null, + closed: false, + closeEmitted: false, + [Symbol(kOnFinished)]: [] + }, + allowHalfOpen: false, + _sockname: null, + _pendingData: null, + _pendingEncoding: '', + server: undefined, + _server: null, + ssl: TLSWrap { + _parent: TCP { + reading: [Getter/Setter], + onconnection: null, + [Symbol(owner_symbol)]: [Circular *1] + }, + _parentWrap: undefined, + _secureContext: SecureContext { context: SecureContext {} }, + reading: true, + onkeylog: [Function: onkeylog], + onhandshakestart: {}, + onhandshakedone: [Function (anonymous)], + onocspresponse: [Function: onocspresponse], + onnewsession: [Function: onnewsessionclient], + onerror: [Function: onerror], + [Symbol(owner_symbol)]: [Circular *1] + }, + _requestCert: true, + _rejectUnauthorized: true, + timeout: 5000, + parser: null, + _httpMessage: null, + [Symbol(res)]: TLSWrap { + _parent: TCP { + reading: [Getter/Setter], + onconnection: null, + [Symbol(owner_symbol)]: [Circular *1] + }, + _parentWrap: undefined, + _secureContext: SecureContext { context: SecureContext {} }, + reading: true, + onkeylog: [Function: onkeylog], + onhandshakestart: {}, + onhandshakedone: [Function (anonymous)], + onocspresponse: [Function: onocspresponse], + onnewsession: [Function: onnewsessionclient], + onerror: [Function: onerror], + [Symbol(owner_symbol)]: [Circular *1] + }, + [Symbol(verified)]: true, + [Symbol(pendingSession)]: null, + [Symbol(async_id_symbol)]: -1, + [Symbol(kHandle)]: TLSWrap { + _parent: TCP { + reading: [Getter/Setter], + onconnection: null, + [Symbol(owner_symbol)]: [Circular *1] + }, + _parentWrap: undefined, + _secureContext: SecureContext { context: SecureContext {} }, + reading: true, + onkeylog: [Function: onkeylog], + onhandshakestart: {}, + onhandshakedone: [Function (anonymous)], + onocspresponse: [Function: onocspresponse], + onnewsession: [Function: onnewsessionclient], + onerror: [Function: onerror], + [Symbol(owner_symbol)]: [Circular *1] + }, + [Symbol(lastWriteQueueSize)]: 0, + [Symbol(timeout)]: Timeout { + _idleTimeout: 5000, + _idlePrev: TimersList { + _idleNext: [Circular *2], + _idlePrev: [Circular *2], + expiry: 18131, + id: -9007199254740976, + msecs: 5000, + priorityQueuePosition: 2 + }, + _idleNext: TimersList { + _idleNext: [Circular *2], + _idlePrev: [Circular *2], + expiry: 18131, + id: -9007199254740976, + msecs: 5000, + priorityQueuePosition: 2 + }, + _idleStart: 13318, + _onTimeout: [Function: bound ], + _timerArgs: undefined, + _repeat: null, + _destroyed: false, + [Symbol(refed)]: false, + [Symbol(kHasPrimitive)]: false, + [Symbol(asyncId)]: 145, + [Symbol(triggerId)]: 143 + }, + [Symbol(kBuffer)]: null, + [Symbol(kBufferCb)]: null, + [Symbol(kBufferGen)]: null, + [Symbol(kCapture)]: false, + [Symbol(kSetNoDelay)]: false, + [Symbol(kSetKeepAlive)]: true, + [Symbol(kSetKeepAliveInitialDelay)]: 1, + [Symbol(kBytesRead)]: 0, + [Symbol(kBytesWritten)]: 0, + [Symbol(connect-options)]: { + rejectUnauthorized: true, + ciphers: 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA', + checkServerIdentity: [Function: checkServerIdentity], + minDHSize: 1024, + session: Buffer(1706) [Uint8Array] [ + 48, 130, 6, 166, 2, 1, 1, 2, 2, 3, 4, 4, + 2, 19, 2, 4, 32, 126, 75, 80, 244, 143, 11, 79, + 202, 45, 220, 55, 222, 217, 4, 7, 9, 201, 212, 10, + 3, 244, 81, 255, 200, 179, 18, 11, 203, 11, 104, 180, + 11, 4, 48, 94, 68, 44, 254, 230, 55, 208, 227, 125, + 146, 237, 131, 71, 168, 212, 45, 110, 43, 176, 181, 183, + 123, 219, 61, 4, 51, 190, 16, 103, 241, 96, 244, 49, + 198, 197, 204, 111, 235, 141, 98, 79, 18, 122, 52, 233, + 243, 14, 78, 161, + ... 1606 more items + ], + method: 'POST', + host: 'discord.com', + path: null, + headers: { + 'User-Agent': 'DiscordBot (https://github.com/Snazzah/slash-create, 5.11.0)', + 'Accept-Encoding': 'gzip,deflate', + 'X-RateLimit-Precision': 'millisecond', + 'Content-Type': 'application/json' + }, + agent: null, + _defaultAgent: Agent { + _events: [Object: null prototype], + _eventsCount: 2, + _maxListeners: undefined, + defaultPort: 443, + protocol: 'https:', + options: [Object: null prototype], + requests: [Object: null prototype] {}, + sockets: [Object: null prototype] {}, + freeSockets: [Object: null prototype], + keepAliveMsecs: 1000, + keepAlive: true, + maxSockets: Infinity, + maxFreeSockets: 256, + scheduling: 'lifo', + maxTotalSockets: Infinity, + totalSocketCount: 1, + maxCachedSessions: 100, + _sessionCache: [Object], + [Symbol(kCapture)]: false + }, + port: 443, + keepAlive: true, + scheduling: 'lifo', + timeout: 5000, + noDelay: true, + servername: 'discord.com', + _agentKey: 'discord.com:443:::::::::::::::::::::', + encoding: null, + keepAliveInitialDelay: 1000 + } + }, + _header: 'POST /api/v10/interactions/1084533210211426316/aW50ZXJhY3Rpb246MTA4NDUzMzIxMDIxMTQyNjMxNjpiUFUxUDdCS2NUSUVtZkpyUjVyc29obzF3V0FlTFVET0gyRFo2bUw3a0dPSE83R05SV21KdGJkQWJDbm1vRFdHRXNpV2N6QXh6NXlpbXVhNk9ON0RoemxZTmVzODlDYkRzUldWZVVyOVc0T1FBQkJCQkRCR1hPbm1oZUxKbjd6Tw/callback HTTP/1.1\r\n' + + 'User-Agent: DiscordBot (https://github.com/Snazzah/slash-create, 5.11.0)\r\n' + + 'Accept-Encoding: gzip,deflate\r\n' + + 'X-RateLimit-Precision: millisecond\r\n' + + 'Content-Type: application/json\r\n' + + 'Host: discord.com\r\n' + + 'Connection: keep-alive\r\n' + + 'Content-Length: 100\r\n' + + '\r\n', + _keepAliveTimeout: 0, + _onPendingData: [Function: nop], + agent: Agent { + _events: [Object: null prototype] { + free: [Function (anonymous)], + newListener: [Function: maybeEnableKeylog] + }, + _eventsCount: 2, + _maxListeners: undefined, + defaultPort: 443, + protocol: 'https:', + options: [Object: null prototype] { + keepAlive: true, + scheduling: 'lifo', + timeout: 5000, + noDelay: true, + path: null + }, + requests: [Object: null prototype] {}, + sockets: [Object: null prototype] {}, + freeSockets: [Object: null prototype] { + 'discord.com:443:::::::::::::::::::::': [ [TLSSocket] ] + }, + keepAliveMsecs: 1000, + keepAlive: true, + maxSockets: Infinity, + maxFreeSockets: 256, + scheduling: 'lifo', + maxTotalSockets: Infinity, + totalSocketCount: 1, + maxCachedSessions: 100, + _sessionCache: { + map: { + 'discord.com:443:::::::::::::::::::::': [Buffer [Uint8Array]] + }, + list: [ 'discord.com:443:::::::::::::::::::::' ] + }, + [Symbol(kCapture)]: false + }, + socketPath: undefined, + method: 'POST', + maxHeaderSize: undefined, + insecureHTTPParser: undefined, + path: '/api/v10/interactions/1084533210211426316/aW50ZXJhY3Rpb246MTA4NDUzMzIxMDIxMTQyNjMxNjpiUFUxUDdCS2NUSUVtZkpyUjVyc29obzF3V0FlTFVET0gyRFo2bUw3a0dPSE83R05SV21KdGJkQWJDbm1vRFdHRXNpV2N6QXh6NXlpbXVhNk9ON0RoemxZTmVzODlDYkRzUldWZVVyOVc0T1FBQkJCQkRCR1hPbm1oZUxKbjd6Tw/callback', + _ended: true, + res: [Circular *4], + aborted: false, + timeoutCb: null, + upgradeOrConnect: false, + parser: null, + maxHeadersCount: null, + reusedSocket: false, + host: 'discord.com', + protocol: 'https:', + [Symbol(kCapture)]: false, + [Symbol(kBytesWritten)]: 0, + [Symbol(kEndCalled)]: true, + [Symbol(kNeedDrain)]: false, + [Symbol(corked)]: 0, + [Symbol(kOutHeaders)]: [Object: null prototype] { + 'user-agent': [ + 'User-Agent', + 'DiscordBot (https://github.com/Snazzah/slash-create, 5.11.0)' + ], + 'accept-encoding': [ 'Accept-Encoding', 'gzip,deflate' ], + 'x-ratelimit-precision': [ 'X-RateLimit-Precision', 'millisecond' ], + 'content-type': [ 'Content-Type', 'application/json' ], + host: [ 'Host', 'discord.com' ] + }, + [Symbol(errored)]: null, + [Symbol(kUniqueHeaders)]: null + }, + [Symbol(kCapture)]: false, + [Symbol(kHeaders)]: { + date: 'Sun, 12 Mar 2023 17:47:47 GMT', + 'content-type': 'application/json', + 'transfer-encoding': 'chunked', + connection: 'keep-alive', + 'set-cookie': [ + '__dcfduid=fff886dcc0fd11edbc601aac3022a639; Expires=Fri, 10-Mar-2028 17:47:47 GMT; Max-Age=157680000; Secure; HttpOnly; Path=/', + '__sdcfduid=fff886dcc0fd11edbc601aac3022a63955dac456377e11fe86899223d3642017495539424d0595f853bc3fa779adfba3; Expires=Fri, 10-Mar-2028 17:47:47 GMT; Max-Age=157680000; Secure; HttpOnly; Path=/', + '__cfruid=fadb701c45f71ae8ed067b27cd008f64033912a5-1678643267; path=/; domain=.discord.com; HttpOnly; Secure; SameSite=None' + ], + 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', + via: '1.1 google', + 'alt-svc': 'h3=":443"; ma=86400, h3-29=":443"; ma=86400', + 'cf-cache-status': 'DYNAMIC', + 'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=K4zVIHnFHf3%2FcSpVS95ORanGeTEjM8J%2F3Zz5Au3LZ4Bh%2FD3241lTwy4DaleO4KQpuDq9cezxGC%2F2aA7mAPu%2BuvPSUD3waLvnKPZFn0mArh0YSPbUd81T1d2KJeT0"}],"group":"cf-nel","max_age":604800}', + nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', + 'x-content-type-options': 'nosniff', + server: 'cloudflare', + 'cf-ray': '7a6ddd437e8ae542-DFW', + 'content-encoding': 'gzip' + }, + [Symbol(kHeadersCount)]: 34, + [Symbol(kTrailers)]: null, + [Symbol(kTrailersCount)]: 0 + }, + response: { message: 'Unknown interaction', code: 10062 }, + code: 404 +} + +Node.js v19.4.0 diff --git a/out.txt b/out.txt new file mode 100644 index 0000000..bd0f945 --- /dev/null +++ b/out.txt @@ -0,0 +1,8 @@ + +> slash-create-template@1.0.0 start +> cd dist && node index.js + + 03/12 12:47:34 info Registered command hello +ready! + 03/12 12:47:35 info Commands synced! + 03/12 12:47:47 info ZeroMomentum#6560 (435206857276260353) ran command hello diff --git a/package.json b/package.json new file mode 100644 index 0000000..aca5e2f --- /dev/null +++ b/package.json @@ -0,0 +1,40 @@ +{ + "name": "slash-create-template", + "version": "1.0.0", + "description": "A template for slash-create", + "main": "dist/index.js", + "scripts": { + "sync": "slash-up sync", + "sync:dev": "slash-up sync -e development", + "start": "cd dist && node index.js", + "build": "npx tsc", + "lint": "npx eslint --ext .ts ./src", + "lint:fix": "npx eslint --ext .ts ./src --fix" + }, + "dependencies": { + "@prisma/client": "^4.11.0", + "cat-loggr": "^1.1.0", + "discord.js": "^14.7.1", + "dotenv": "^8.2.0", + "fastify": "^3.9.2", + "node-fetch": "^3.3.1", + "robert": "^2.6.5", + "slash-create": "^5.2.0", + "stream": "^0.0.2", + "undici": "^5.20.0" + }, + "devDependencies": { + "@types/express": "^4.17.11", + "@types/node": "^14.14.37", + "@typescript-eslint/eslint-plugin": "^4.19.0", + "@typescript-eslint/parser": "^4.19.0", + "eslint": "^7.15.0", + "eslint-config-prettier": "^7.0.0", + "eslint-plugin-prettier": "^3.3.0", + "prettier": "^2.2.1", + "prisma": "^4.11.0", + "slash-up": "^1.0.11", + "ts-node": "^9.1.1", + "typescript": "^4.2.3" + } +} diff --git a/pm2.json b/pm2.json new file mode 100644 index 0000000..de262a4 --- /dev/null +++ b/pm2.json @@ -0,0 +1,9 @@ +{ + "apps": [ + { + "name": "slash-commands", + "script": "node", + "args": "dist/index.js" + } + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..8b110c4 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,2077 @@ +lockfileVersion: 5.4 + +specifiers: + '@prisma/client': ^4.11.0 + '@types/express': ^4.17.11 + '@types/node': ^14.14.37 + '@typescript-eslint/eslint-plugin': ^4.19.0 + '@typescript-eslint/parser': ^4.19.0 + cat-loggr: ^1.1.0 + discord.js: ^14.7.1 + dotenv: ^8.2.0 + eslint: ^7.15.0 + eslint-config-prettier: ^7.0.0 + eslint-plugin-prettier: ^3.3.0 + fastify: ^3.9.2 + node-fetch: ^3.3.1 + prettier: ^2.2.1 + prisma: ^4.11.0 + robert: ^2.6.5 + slash-create: ^5.2.0 + slash-up: ^1.0.11 + stream: ^0.0.2 + ts-node: ^9.1.1 + typescript: ^4.2.3 + undici: ^5.20.0 + +dependencies: + '@prisma/client': 4.11.0_prisma@4.11.0 + cat-loggr: 1.2.2 + discord.js: 14.7.1 + dotenv: 8.6.0 + fastify: 3.29.5 + node-fetch: 3.3.1 + robert: 2.6.5 + slash-create: 5.11.0_fastify@3.29.5 + stream: 0.0.2 + undici: 5.20.0 + +devDependencies: + '@types/express': 4.17.17 + '@types/node': 14.18.37 + '@typescript-eslint/eslint-plugin': 4.33.0_s2qqtxhzmb7vugvfoyripfgp7i + '@typescript-eslint/parser': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe + eslint: 7.32.0 + eslint-config-prettier: 7.2.0_eslint@7.32.0 + eslint-plugin-prettier: 3.4.1_qw22266jc4bxgzaxteviiakqha + prettier: 2.8.4 + prisma: 4.11.0 + slash-up: 1.3.0_fastify@3.29.5 + ts-node: 9.1.1_typescript@4.9.5 + typescript: 4.9.5 + +packages: + + /@babel/code-frame/7.12.11: + resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@discordjs/builders/1.4.0: + resolution: {integrity: sha512-nEeTCheTTDw5kO93faM1j8ZJPonAX86qpq/QVoznnSa8WWcCgJpjlu6GylfINTDW6o7zZY0my2SYdxx2mfNwGA==} + engines: {node: '>=16.9.0'} + dependencies: + '@discordjs/util': 0.1.0 + '@sapphire/shapeshift': 3.8.1 + discord-api-types: 0.37.35 + fast-deep-equal: 3.1.3 + ts-mixer: 6.0.3 + tslib: 2.5.0 + dev: false + + /@discordjs/collection/1.3.0: + resolution: {integrity: sha512-ylt2NyZ77bJbRij4h9u/wVy7qYw/aDqQLWnadjvDqW/WoWCxrsX6M3CIw9GVP5xcGCDxsrKj5e0r5evuFYwrKg==} + engines: {node: '>=16.9.0'} + dev: false + + /@discordjs/rest/1.5.0: + resolution: {integrity: sha512-lXgNFqHnbmzp5u81W0+frdXN6Etf4EUi8FAPcWpSykKd8hmlWh1xy6BmE0bsJypU1pxohaA8lQCgp70NUI3uzA==} + engines: {node: '>=16.9.0'} + dependencies: + '@discordjs/collection': 1.3.0 + '@discordjs/util': 0.1.0 + '@sapphire/async-queue': 1.5.0 + '@sapphire/snowflake': 3.4.0 + discord-api-types: 0.37.35 + file-type: 18.2.1 + tslib: 2.5.0 + undici: 5.20.0 + dev: false + + /@discordjs/util/0.1.0: + resolution: {integrity: sha512-e7d+PaTLVQav6rOc2tojh2y6FE8S7REkqLldq1XF4soCx74XB/DIjbVbVLtBemf0nLW77ntz0v+o5DytKwFNLQ==} + engines: {node: '>=16.9.0'} + dev: false + + /@esbuild-kit/cjs-loader/2.4.2: + resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} + dependencies: + '@esbuild-kit/core-utils': 3.1.0 + get-tsconfig: 4.4.0 + dev: true + + /@esbuild-kit/core-utils/3.1.0: + resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} + dependencies: + esbuild: 0.17.11 + source-map-support: 0.5.21 + dev: true + + /@esbuild/android-arm/0.17.11: + resolution: {integrity: sha512-CdyX6sRVh1NzFCsf5vw3kULwlAhfy9wVt8SZlrhQ7eL2qBjGbFhRBWkkAzuZm9IIEOCKJw4DXA6R85g+qc8RDw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64/0.17.11: + resolution: {integrity: sha512-QnK4d/zhVTuV4/pRM4HUjcsbl43POALU2zvBynmrrqZt9LPcLA3x1fTZPBg2RRguBQnJcnU059yKr+bydkntjg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64/0.17.11: + resolution: {integrity: sha512-3PL3HKtsDIXGQcSCKtWD/dy+mgc4p2Tvo2qKgKHj9Yf+eniwFnuoQ0OUhlSfAEpKAFzF9N21Nwgnap6zy3L3MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64/0.17.11: + resolution: {integrity: sha512-pJ950bNKgzhkGNO3Z9TeHzIFtEyC2GDQL3wxkMApDEghYx5Qers84UTNc1bAxWbRkuJOgmOha5V0WUeh8G+YGw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64/0.17.11: + resolution: {integrity: sha512-iB0dQkIHXyczK3BZtzw1tqegf0F0Ab5texX2TvMQjiJIWXAfM4FQl7D909YfXWnB92OQz4ivBYQ2RlxBJrMJOw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64/0.17.11: + resolution: {integrity: sha512-7EFzUADmI1jCHeDRGKgbnF5sDIceZsQGapoO6dmw7r/ZBEKX7CCDnIz8m9yEclzr7mFsd+DyasHzpjfJnmBB1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64/0.17.11: + resolution: {integrity: sha512-iPgenptC8i8pdvkHQvXJFzc1eVMR7W2lBPrTE6GbhR54sLcF42mk3zBOjKPOodezzuAz/KSu8CPyFSjcBMkE9g==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm/0.17.11: + resolution: {integrity: sha512-M9iK/d4lgZH0U5M1R2p2gqhPV/7JPJcRz+8O8GBKVgqndTzydQ7B2XGDbxtbvFkvIs53uXTobOhv+RyaqhUiMg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64/0.17.11: + resolution: {integrity: sha512-Qxth3gsWWGKz2/qG2d5DsW/57SeA2AmpSMhdg9TSB5Svn2KDob3qxfQSkdnWjSd42kqoxIPy3EJFs+6w1+6Qjg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32/0.17.11: + resolution: {integrity: sha512-dB1nGaVWtUlb/rRDHmuDQhfqazWE0LMro/AIbT2lWM3CDMHJNpLckH+gCddQyhhcLac2OYw69ikUMO34JLt3wA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.17.11: + resolution: {integrity: sha512-aCWlq70Q7Nc9WDnormntGS1ar6ZFvUpqr8gXtO+HRejRYPweAFQN615PcgaSJkZjhHp61+MNLhzyVALSF2/Q0g==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el/0.17.11: + resolution: {integrity: sha512-cGeGNdQxqY8qJwlYH1BP6rjIIiEcrM05H7k3tR7WxOLmD1ZxRMd6/QIOWMb8mD2s2YJFNRuNQ+wjMhgEL2oCEw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64/0.17.11: + resolution: {integrity: sha512-BdlziJQPW/bNe0E8eYsHB40mYOluS+jULPCjlWiHzDgr+ZBRXPtgMV1nkLEGdpjrwgmtkZHEGEPaKdS/8faLDA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64/0.17.11: + resolution: {integrity: sha512-MDLwQbtF+83oJCI1Cixn68Et/ME6gelmhssPebC40RdJaect+IM+l7o/CuG0ZlDs6tZTEIoxUe53H3GmMn8oMA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x/0.17.11: + resolution: {integrity: sha512-4N5EMESvws0Ozr2J94VoUD8HIRi7X0uvUv4c0wpTHZyZY9qpaaN7THjosdiW56irQ4qnJ6Lsc+i+5zGWnyqWqQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64/0.17.11: + resolution: {integrity: sha512-rM/v8UlluxpytFSmVdbCe1yyKQd/e+FmIJE2oPJvbBo+D0XVWi1y/NQ4iTNx+436WmDHQBjVLrbnAQLQ6U7wlw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64/0.17.11: + resolution: {integrity: sha512-4WaAhuz5f91h3/g43VBGdto1Q+X7VEZfpcWGtOFXnggEuLvjV+cP6DyLRU15IjiU9fKLLk41OoJfBFN5DhPvag==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64/0.17.11: + resolution: {integrity: sha512-UBj135Nx4FpnvtE+C8TWGp98oUgBcmNmdYgl5ToKc0mBHxVVqVE7FUS5/ELMImOp205qDAittL6Ezhasc2Ev/w==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64/0.17.11: + resolution: {integrity: sha512-1/gxTifDC9aXbV2xOfCbOceh5AlIidUrPsMpivgzo8P8zUtczlq1ncFpeN1ZyQJ9lVs2hILy1PG5KPp+w8QPPg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64/0.17.11: + resolution: {integrity: sha512-vtSfyx5yRdpiOW9yp6Ax0zyNOv9HjOAw8WaZg3dF5djEHKKm3UnoohftVvIJtRh0Ec7Hso0RIdTqZvPXJ7FdvQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32/0.17.11: + resolution: {integrity: sha512-GFPSLEGQr4wHFTiIUJQrnJKZhZjjq4Sphf+mM76nQR6WkQn73vm7IsacmBRPkALfpOCHsopSvLgqdd4iUW2mYw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64/0.17.11: + resolution: {integrity: sha512-N9vXqLP3eRL8BqSy8yn4Y98cZI2pZ8fyuHx6lKjiG2WABpT2l01TXdzq5Ma2ZUBzfB7tx5dXVhge8X9u0S70ZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint/eslintrc/0.4.3: + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 7.3.1 + globals: 13.20.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@fastify/ajv-compiler/1.1.0: + resolution: {integrity: sha512-gvCOUNpXsWrIQ3A4aXCLIdblL0tDq42BG/2Xw7oxbil9h11uow10ztS2GuFazNBfjbrsZ5nl+nPl5jDSjj5TSg==} + dependencies: + ajv: 6.12.6 + + /@fastify/error/2.0.0: + resolution: {integrity: sha512-wI3fpfDT0t7p8E6dA2eTECzzOd+bZsZCJ2Hcv+Onn2b7ZwK3RwD27uW2QDaMtQhAfWQQP+WNK7nKf0twLsBf9w==} + + /@humanwhocodes/config-array/0.5.0: + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@prisma/client/4.11.0_prisma@4.11.0: + resolution: {integrity: sha512-0INHYkQIqgAjrt7NzhYpeDQi8x3Nvylc2uDngKyFDDj1tTRQ4uV1HnVmd1sQEraeVAN63SOK0dgCKQHlvjL0KA==} + engines: {node: '>=14.17'} + requiresBuild: true + peerDependencies: + prisma: '*' + peerDependenciesMeta: + prisma: + optional: true + dependencies: + '@prisma/engines-version': 4.11.0-57.8fde8fef4033376662cad983758335009d522acb + prisma: 4.11.0 + dev: false + + /@prisma/engines-version/4.11.0-57.8fde8fef4033376662cad983758335009d522acb: + resolution: {integrity: sha512-3Vd8Qq06d5xD8Ch5WauWcUUrsVPdMC6Ge8ILji8RFfyhUpqon6qSyGM0apvr1O8n8qH8cKkEFqRPsYjuz5r83g==} + dev: false + + /@prisma/engines/4.11.0: + resolution: {integrity: sha512-0AEBi2HXGV02cf6ASsBPhfsVIbVSDC9nbQed4iiY5eHttW9ZtMxHThuKZE1pnESbr8HRdgmFSa/Kn4OSNYuibg==} + requiresBuild: true + + /@sapphire/async-queue/1.5.0: + resolution: {integrity: sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==} + engines: {node: '>=v14.0.0', npm: '>=7.0.0'} + dev: false + + /@sapphire/shapeshift/3.8.1: + resolution: {integrity: sha512-xG1oXXBhCjPKbxrRTlox9ddaZTvVpOhYLmKmApD/vIWOV1xEYXnpoFs68zHIZBGbqztq6FrUPNPerIrO1Hqeaw==} + engines: {node: '>=v14.0.0', npm: '>=7.0.0'} + dependencies: + fast-deep-equal: 3.1.3 + lodash: 4.17.21 + dev: false + + /@sapphire/snowflake/3.4.0: + resolution: {integrity: sha512-zZxymtVO6zeXVMPds+6d7gv/OfnCc25M1Z+7ZLB0oPmeMTPeRWVPQSS16oDJy5ZsyCOLj7M6mbZml5gWXcVRNw==} + engines: {node: '>=v14.0.0', npm: '>=7.0.0'} + dev: false + + /@tokenizer/token/0.3.0: + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + dev: false + + /@types/body-parser/1.19.2: + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + dependencies: + '@types/connect': 3.4.35 + '@types/node': 14.18.37 + dev: true + + /@types/connect/3.4.35: + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + dependencies: + '@types/node': 14.18.37 + dev: true + + /@types/express-serve-static-core/4.17.33: + resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} + dependencies: + '@types/node': 14.18.37 + '@types/qs': 6.9.7 + '@types/range-parser': 1.2.4 + dev: true + + /@types/express/4.17.17: + resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} + dependencies: + '@types/body-parser': 1.19.2 + '@types/express-serve-static-core': 4.17.33 + '@types/qs': 6.9.7 + '@types/serve-static': 1.15.1 + dev: true + + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true + + /@types/mime/3.0.1: + resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} + dev: true + + /@types/node/14.18.37: + resolution: {integrity: sha512-7GgtHCs/QZrBrDzgIJnQtuSvhFSwhyYSI2uafSwZoNt1iOGhEN5fwNrQMjtONyHm9+/LoA4453jH0CMYcr06Pg==} + + /@types/qs/6.9.7: + resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} + dev: true + + /@types/range-parser/1.2.4: + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + dev: true + + /@types/serve-static/1.15.1: + resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} + dependencies: + '@types/mime': 3.0.1 + '@types/node': 14.18.37 + dev: true + + /@types/ws/8.5.4: + resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} + dependencies: + '@types/node': 14.18.37 + dev: false + + /@typescript-eslint/eslint-plugin/4.33.0_s2qqtxhzmb7vugvfoyripfgp7i: + resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + '@typescript-eslint/parser': ^4.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/experimental-utils': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/parser': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/scope-manager': 4.33.0 + debug: 4.3.4 + eslint: 7.32.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.4 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils/4.33.0_jofidmxrjzhj7l6vknpw5ecvfe: + resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.5 + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@7.32.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser/4.33.0_jofidmxrjzhj7l6vknpw5ecvfe: + resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.5 + debug: 4.3.4 + eslint: 7.32.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/4.33.0: + resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + dev: true + + /@typescript-eslint/types/4.33.0: + resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dev: true + + /@typescript-eslint/typescript-estree/4.33.0_typescript@4.9.5: + resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/visitor-keys/4.33.0: + resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /abstract-logging/2.0.1: + resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} + + /acorn-jsx/5.3.2_acorn@7.4.1: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: true + + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ajv/8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + /ansi-colors/4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /archy/1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + + /arg/4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /argparse/1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /astral-regex/2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /atomic-sleep/1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + /avvio/7.2.5: + resolution: {integrity: sha512-AOhBxyLVdpOad3TujtC9kL/9r3HnTkxwQ5ggOsYrvvZP1cCFvzHWJd5XxZDFuTn+IN8vkKSG5SEJrd27vCSbeA==} + dependencies: + archy: 1.0.0 + debug: 4.3.4 + fastq: 1.15.0 + queue-microtask: 1.2.3 + transitivePeerDependencies: + - supports-color + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /busboy/1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: false + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /cat-loggr/1.2.2: + resolution: {integrity: sha512-4CiRwzPZ4E5/1XX+zgu4cxUZ0otElnSYUjx5KZO+ZhthGUSH5ly7UrMXqcYHC/yep+pv1HhXJAP8KkCPt7G2AA==} + dependencies: + chalk: 2.4.2 + dayjs: 1.11.7 + dev: false + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /cliui/8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /common-tags/1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /cookie/0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + /create-require/1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /data-uri-to-buffer/4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: false + + /dayjs/1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} + dev: false + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge/4.3.0: + resolution: {integrity: sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==} + engines: {node: '>=0.10.0'} + + /degit/2.8.4: + resolution: {integrity: sha512-vqYuzmSA5I50J882jd+AbAhQtgK6bdKUJIex1JNfEUPENCgYsxugzKVZlFyMwV4i06MmnV47/Iqi5Io86zf3Ng==} + engines: {node: '>=8.0.0'} + hasBin: true + dev: true + + /diff/4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /discord-api-types/0.37.35: + resolution: {integrity: sha512-iyKZ/82k7FX3lcmHiAvvWu5TmyfVo78RtghBV/YsehK6CID83k5SI03DKKopBcln+TiEIYw5MGgq7SJXSpNzMg==} + dev: false + + /discord.js/14.7.1: + resolution: {integrity: sha512-1FECvqJJjjeYcjSm0IGMnPxLqja/pmG1B0W2l3lUY2Gi4KXiyTeQmU1IxWcbXHn2k+ytP587mMWqva2IA87EbA==} + engines: {node: '>=16.9.0'} + dependencies: + '@discordjs/builders': 1.4.0 + '@discordjs/collection': 1.3.0 + '@discordjs/rest': 1.5.0 + '@discordjs/util': 0.1.0 + '@sapphire/snowflake': 3.4.0 + '@types/ws': 8.5.4 + discord-api-types: 0.37.35 + fast-deep-equal: 3.1.3 + lodash.snakecase: 4.1.1 + tslib: 2.5.0 + undici: 5.20.0 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dotenv/16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + dev: true + + /dotenv/8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + dev: false + + /emitter-component/1.1.1: + resolution: {integrity: sha512-G+mpdiAySMuB7kesVRLuyvYRqDmshB7ReKEVuyBPkzQlmiDiLrt7hHHIy4Aff552bgknVN7B2/d3lzhGO5dvpQ==} + dev: false + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /enquirer/2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + dev: true + + /esbuild/0.17.11: + resolution: {integrity: sha512-pAMImyokbWDtnA/ufPxjQg0fYo2DDuzAlqwnDvbXqHLphe+m80eF++perYKVm8LeTuj2zUuFXC+xgSVxyoHUdg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.11 + '@esbuild/android-arm64': 0.17.11 + '@esbuild/android-x64': 0.17.11 + '@esbuild/darwin-arm64': 0.17.11 + '@esbuild/darwin-x64': 0.17.11 + '@esbuild/freebsd-arm64': 0.17.11 + '@esbuild/freebsd-x64': 0.17.11 + '@esbuild/linux-arm': 0.17.11 + '@esbuild/linux-arm64': 0.17.11 + '@esbuild/linux-ia32': 0.17.11 + '@esbuild/linux-loong64': 0.17.11 + '@esbuild/linux-mips64el': 0.17.11 + '@esbuild/linux-ppc64': 0.17.11 + '@esbuild/linux-riscv64': 0.17.11 + '@esbuild/linux-s390x': 0.17.11 + '@esbuild/linux-x64': 0.17.11 + '@esbuild/netbsd-x64': 0.17.11 + '@esbuild/openbsd-x64': 0.17.11 + '@esbuild/sunos-x64': 0.17.11 + '@esbuild/win32-arm64': 0.17.11 + '@esbuild/win32-ia32': 0.17.11 + '@esbuild/win32-x64': 0.17.11 + dev: true + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-prettier/7.2.0_eslint@7.32.0: + resolution: {integrity: sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 7.32.0 + dev: true + + /eslint-plugin-prettier/3.4.1_qw22266jc4bxgzaxteviiakqha: + resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} + engines: {node: '>=6.0.0'} + peerDependencies: + eslint: '>=5.0.0' + eslint-config-prettier: '*' + prettier: '>=1.13.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 7.32.0 + eslint-config-prettier: 7.2.0_eslint@7.32.0 + prettier: 2.8.4 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-utils/2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@7.32.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint/7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} + hasBin: true + dependencies: + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + enquirer: 2.3.6 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.20.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.3.8 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.8.1 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/7.3.1: + resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2_acorn@7.4.1 + eslint-visitor-keys: 1.3.0 + dev: true + + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery/1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /eventemitter3/5.0.0: + resolution: {integrity: sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==} + + /fast-content-type-parse/1.0.0: + resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} + + /fast-decode-uri-component/1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-diff/1.2.0: + resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + dev: true + + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-json-stringify/2.7.13: + resolution: {integrity: sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA==} + engines: {node: '>= 10.0.0'} + dependencies: + ajv: 6.12.6 + deepmerge: 4.3.0 + rfdc: 1.3.0 + string-similarity: 4.0.4 + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-redact/3.1.2: + resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} + engines: {node: '>=6'} + + /fast-safe-stringify/2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + /fastify/3.29.5: + resolution: {integrity: sha512-FBDgb1gkenZxxh4sTD6AdI6mFnZnsgckpjIXzIvfLSYCa4isfQeD8QWGPib63dxq6btnY0l1j8I0xYhMvUb+sw==} + dependencies: + '@fastify/ajv-compiler': 1.1.0 + '@fastify/error': 2.0.0 + abstract-logging: 2.0.1 + avvio: 7.2.5 + fast-content-type-parse: 1.0.0 + fast-json-stringify: 2.7.13 + find-my-way: 4.5.1 + flatstr: 1.0.12 + light-my-request: 4.12.0 + pino: 6.14.0 + process-warning: 1.0.0 + proxy-addr: 2.0.7 + rfdc: 1.3.0 + secure-json-parse: 2.7.0 + semver: 7.3.8 + tiny-lru: 8.0.2 + transitivePeerDependencies: + - supports-color + + /fastq/1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + + /fetch-blob/3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: false + + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /file-type/18.2.1: + resolution: {integrity: sha512-Yw5MtnMv7vgD2/6Bjmmuegc8bQEVA9GmAyaR18bMYWKqsWDG9wgYZ1j4I6gNMF5Y5JBDcUcjRQqNQx7Y8uotcg==} + engines: {node: '>=14.16'} + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 7.0.0 + token-types: 5.0.1 + dev: false + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-my-way/4.5.1: + resolution: {integrity: sha512-kE0u7sGoUFbMXcOG/xpkmz4sRLCklERnBcg7Ftuu1iAxsfEt2S46RLJ3Sq7vshsEy2wJT2hZxE58XZK27qa8kg==} + engines: {node: '>=10'} + dependencies: + fast-decode-uri-component: 1.0.1 + fast-deep-equal: 3.1.3 + safe-regex2: 2.0.0 + semver-store: 0.3.0 + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatstr/1.0.12: + resolution: {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==} + + /flatted/3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + + /formdata-polyfill/4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: false + + /forwarded/0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /functional-red-black-tree/1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + + /get-caller-file/2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-tsconfig/4.4.0: + resolution: {integrity: sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==} + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals/13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + + /ignore/4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + + /ignore/5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ipaddr.js/1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-unicode-supported/0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml/3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-schema-traverse/1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /light-my-request/4.12.0: + resolution: {integrity: sha512-0y+9VIfJEsPVzK5ArSIJ8Dkxp8QMP7/aCuxCUtG/tr9a2NoOf/snATE/OUc05XUplJCEnRh6gTkH7xh9POt1DQ==} + dependencies: + ajv: 8.12.0 + cookie: 0.5.0 + process-warning: 1.0.0 + set-cookie-parser: 2.5.1 + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.isequal/4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.snakecase/4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: false + + /lodash.truncate/4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /log-symbols/4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /make-error/1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-domexception/1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: false + + /node-fetch/3.3.1: + resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /peek-readable/5.0.0: + resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==} + engines: {node: '>=14.16'} + dev: false + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pino-std-serializers/3.2.0: + resolution: {integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==} + + /pino/6.14.0: + resolution: {integrity: sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==} + hasBin: true + dependencies: + fast-redact: 3.1.2 + fast-safe-stringify: 2.1.1 + flatstr: 1.0.12 + pino-std-serializers: 3.2.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + sonic-boom: 1.4.1 + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers/1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.2.0 + dev: true + + /prettier/2.8.4: + resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /prisma/4.11.0: + resolution: {integrity: sha512-4zZmBXssPUEiX+GeL0MUq/Yyie4ltiKmGu7jCJFnYMamNrrulTBc+D+QwAQSJ01tyzeGHlD13kOnqPwRipnlNw==} + engines: {node: '>=14.17'} + hasBin: true + requiresBuild: true + dependencies: + '@prisma/engines': 4.11.0 + + /process-warning/1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + + /progress/2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /proxy-addr/2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + /punycode/2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /quick-format-unescaped/4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + /readable-stream/3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + + /readable-web-to-node-stream/3.0.2: + resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + engines: {node: '>=8'} + dependencies: + readable-stream: 3.6.2 + dev: false + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /require-directory/2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string/2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /ret/0.2.2: + resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} + engines: {node: '>=4'} + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rfdc/1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /robert-util/1.0.0: + resolution: {integrity: sha512-RDLBjCaQdbY1Rv6OBmEJqD5PzLo150/xwcqhJHpIb8mpfArY705Dw9VGfZNLsWQiZjq1H24/kKyFucpR2rQddA==} + dev: false + + /robert/2.6.5: + resolution: {integrity: sha512-mhIssfzJblk8sOI8cmZ3nCnAY5rPrxspi16BuZQhWC53yWD393MrQLi80wRz30Sstbjnh/5FYggNATVi8vqe3Q==} + dependencies: + robert-util: 1.0.0 + dev: false + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + + /safe-regex2/2.0.0: + resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} + dependencies: + ret: 0.2.2 + + /secure-json-parse/2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + + /semver-store/0.3.0: + resolution: {integrity: sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg==} + + /semver/7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /set-cookie-parser/2.5.1: + resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /slash-create/5.11.0_fastify@3.29.5: + resolution: {integrity: sha512-FIJxEv6gOXLCYf1ds7mdcsJywyrw359h2ytACEJ9DL/8LQ6CujAov4bbnZjSvgmr/QsztUvZEX9B4bIQjQtoNA==} + engines: {node: '>=14'} + peerDependencies: + express: ^4 + fastify: ^3 || ^4 + peerDependenciesMeta: + express: + optional: true + fastify: + optional: true + dependencies: + eventemitter3: 5.0.0 + fastify: 3.29.5 + lodash.isequal: 4.5.0 + tweetnacl: 1.0.3 + + /slash-up/1.3.0_fastify@3.29.5: + resolution: {integrity: sha512-M3KwqVWyN8tY0mYtQXdjF23zbSh0UErZ/4jQy9+zntvJV9gdYxCFajZ1wbosdoat3fvAEcH3h6LI14A52PNQWg==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@esbuild-kit/cjs-loader': 2.4.2 + ansi-colors: 4.1.3 + common-tags: 1.8.2 + cross-spawn: 7.0.3 + degit: 2.8.4 + dotenv: 16.0.3 + enquirer: 2.3.6 + find-up: 5.0.0 + log-symbols: 4.1.0 + slash-create: 5.11.0_fastify@3.29.5 + yargs: 17.7.1 + transitivePeerDependencies: + - express + - fastify + dev: true + + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi/4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /sonic-boom/1.4.1: + resolution: {integrity: sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==} + dependencies: + atomic-sleep: 1.0.0 + flatstr: 1.0.12 + + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sprintf-js/1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stream/0.0.2: + resolution: {integrity: sha512-gCq3NDI2P35B2n6t76YJuOp7d6cN/C7Rt0577l91wllh0sY9ZBuw9KaSGqH/b0hzn3CWWJbpbW0W0WvQ1H/Q7g==} + dependencies: + emitter-component: 1.1.1 + dev: false + + /streamsearch/1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false + + /string-similarity/4.0.4: + resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==} + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string_decoder/1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strtok3/7.0.0: + resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} + engines: {node: '>=14.16'} + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 5.0.0 + dev: false + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /table/6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.12.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /text-table/0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /tiny-lru/8.0.2: + resolution: {integrity: sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg==} + engines: {node: '>=6'} + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /token-types/5.0.1: + resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} + engines: {node: '>=14.16'} + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + dev: false + + /ts-mixer/6.0.3: + resolution: {integrity: sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==} + dev: false + + /ts-node/9.1.1_typescript@4.9.5: + resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} + engines: {node: '>=10.0.0'} + hasBin: true + peerDependencies: + typescript: '>=2.7' + dependencies: + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + source-map-support: 0.5.21 + typescript: 4.9.5 + yn: 3.1.1 + dev: true + + /tslib/1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib/2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + dev: false + + /tsutils/3.21.0_typescript@4.9.5: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.9.5 + dev: true + + /tweetnacl/1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /typescript/4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /undici/5.20.0: + resolution: {integrity: sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==} + engines: {node: '>=12.18'} + dependencies: + busboy: 1.6.0 + dev: false + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false + + /v8-compile-cache/2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + dev: true + + /web-streams-polyfill/3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: false + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + + /wrap-ansi/7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /ws/8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /y18n/5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yargs-parser/21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs/17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yn/3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + + /yocto-queue/0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..5543c25 --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,30 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +model GuildConfig { + id String @id + welcome_message String @default("Hello %USER%!") + welcome_channel String? + daily_message_text String @default("daily message") + daily_message_channel String? + daily_message_time DateTime @default(now()) @db.Timetz + users User[] +} + +model User { + id String + guild GuildConfig @relation(fields: [guild_id], references: [id]) + guild_id String + messages Int @default(0) + + @@id([id, guild_id]) +} diff --git a/slash-up.config.js b/slash-up.config.js new file mode 100644 index 0000000..7604fc8 --- /dev/null +++ b/slash-up.config.js @@ -0,0 +1,19 @@ +// This is the slash-up config file. +// Make sure to fill in "token" and "applicationId" before using. +// You can also use environment variables from the ".env" file if any. + +module.exports = { + // The Token of the Discord bot + token: process.env.TOKEN, + // The Application ID of the Discord bot + applicationId: process.env.APPLICATION_ID, + // This is where the path to command files are, .ts files are supported! + commandPath: './src/commands', + // You can use different environments with --env (-e) + env: { + development: { + // The "globalToGuild" option makes global commands sync to the specified guild instead. + globalToGuild: process.env.DEVELOPMENT_GUILD_ID + } + } +}; diff --git a/src/commands/leaderboard.ts b/src/commands/leaderboard.ts new file mode 100644 index 0000000..9cefb55 --- /dev/null +++ b/src/commands/leaderboard.ts @@ -0,0 +1,27 @@ +import { PrismaClient } from '@prisma/client' +import { SlashCommand, SlashCreator, CommandContext, MessageEmbed } from 'slash-create' + +export default class LeaderboardCommand extends SlashCommand { + constructor(creator: SlashCreator) { + super(creator, { + name: 'leaderboard', + description: 'see top 10 messages' + }) + } + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async run(ctx: CommandContext) { + const prisma = new PrismaClient() + const users = await prisma.user.findMany({ + where: { guild_id: ctx.guildID }, + take: 10, + orderBy: { messages: 'desc' } + }) + let st = '' + for (const u of users) { + let uu = await this.client.users.fetch(u.id) + st += `${uu.username}#${uu.discriminator} - ${u.messages} message(s)\n` + } + return st + } +} diff --git a/src/commands/messages.ts b/src/commands/messages.ts new file mode 100644 index 0000000..f352275 --- /dev/null +++ b/src/commands/messages.ts @@ -0,0 +1,34 @@ +import { CommandContext, CommandOptionType, SlashCommand, SlashCreator } from 'slash-create' +import { PrismaClient } from '@prisma/client' + +export default class MessagesCommand extends SlashCommand { + constructor(creator: SlashCreator) { + super(creator, { + name: 'messages', + description: 'show message count, either for yourself, or someone else', + options: [ + { + name: 'user', + description: 'person to show messages for (blank shows your own)', + required: false, + type: CommandOptionType.USER + } + ] + }) + } + + async run(ctx: CommandContext) { + const prisma = new PrismaClient() + if (ctx.options.user == null) { + const u = await prisma.user.findFirst({ where: { id: ctx.member?.id, guild: { id: ctx.guildID } } }) + if (!u) return `you have no messages!` + return `you have ${u.messages} message(s)` + } else { + const uid = ctx.options.user + const u = await prisma.user.findFirst({ where: { id: uid, guild: { id: ctx.guildID } } }) + if (!u) return `this user has no messages!` + const uu = await this.client.users.fetch(u.id) + return `${uu.username}#${uu.discriminator} has ${u.messages} message(s)` + } + } +} diff --git a/src/commands/ping.ts b/src/commands/ping.ts new file mode 100644 index 0000000..bcb21b4 --- /dev/null +++ b/src/commands/ping.ts @@ -0,0 +1,15 @@ +import { SlashCommand, SlashCreator, CommandContext } from 'slash-create'; + +export default class PingCommand extends SlashCommand { + constructor(creator: SlashCreator) { + super(creator, { + name: 'ping', + description: 'pongs' + }); + } + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async run(_ctx: CommandContext) { + return `pong from ${this.client.user.tag}!`; + } +} diff --git a/src/commands/stock.ts b/src/commands/stock.ts new file mode 100644 index 0000000..e5f0123 --- /dev/null +++ b/src/commands/stock.ts @@ -0,0 +1,23 @@ +/* eslint-disable prettier/prettier */ +import { SlashCommand, SlashCreator, CommandOptionType, CommandContext } from 'slash-create'; + +export default class StockCommand extends SlashCommand { + constructor(creator: SlashCreator) { + super(creator, { + name: 'stock', + description: 'checks stock price', + options: [{ type: CommandOptionType.STRING, name: 'ticker', description: 'the ticker to check', required: true }] + }); + } + + async run(ctx: CommandContext) { + const tkr = ctx.options.ticker + const req = await fetch(`https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=${tkr}&apikey=8O1INVBY11E0GRGC`) + const info = await req.json() + if (Object.keys(info['Global Quote']).length == 0) { + return `stock not found!` + } + const i = info['Global Quote'] + return `stock info for ${i['01. symbol']} - OPEN: ${i['02. open']} - PRICE: ${i['05. price']} - % CHANGE: ${i['10. change percent']}` + } +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..af906c4 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,79 @@ +import dotenv from 'dotenv' +import { SlashCreator, GatewayServer } from 'slash-create' +import path from 'path' +import CatLoggr from 'cat-loggr/ts' +import { Client, GatewayDispatchEvents, Events, Guild, Message } from 'discord.js' +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() +const client = new Client({ intents: [131071] }) + +let dotenvPath = path.join(process.cwd(), '.env') +if (path.parse(process.cwd()).name === 'dist') dotenvPath = path.join(process.cwd(), '..', '.env') + +dotenv.config({ path: dotenvPath }) + +const logger = new CatLoggr().setLevel(process.env.COMMANDS_DEBUG === 'true' ? 'debug' : 'info') +const creator = new SlashCreator({ + client, + applicationID: process.env.APPLICATION_ID ?? 'AASDF', + publicKey: process.env.PUBLIC_KEY, + token: process.env.TOKEN +}) + +creator.on('debug', (message) => logger.log(message)) +creator.on('warn', (message) => logger.warn(message)) +creator.on('error', (error) => logger.error(error)) +creator.on('synced', () => logger.info('Commands synced!')) +creator.on('commandRun', (command, _, ctx) => + logger.info(`${ctx.user.username}#${ctx.user.discriminator} (${ctx.user.id}) ran command ${command.commandName}`) +) +creator.on('commandRegister', (command) => logger.info(`Registered command ${command.commandName}`)) +creator.on('commandError', (command, error) => logger.error(`Command ${command.commandName}:`, error)) + +creator + .withServer(new GatewayServer((handler) => client.ws.on(GatewayDispatchEvents.InteractionCreate, handler))) + .registerCommandsIn(path.join(__dirname, 'commands')) + .syncCommands() + +client.once('ready', async () => console.log('ready!')) + +client.on(Events.GuildCreate, async (g: Guild) => { + await prisma.guildConfig.create({ + data: { + id: g.id + } + }) +}) + +client.on(Events.MessageCreate, async (msg: Message) => { + if (!msg.guild || msg.author == client.user) return + const u = await prisma.user.findFirst({ + where: { + guild_id: msg.guild.id, + id: msg.author.id + } + }) + + if (!u) { + await prisma.user.create({ + data: { + guild_id: msg.guild.id, + id: msg.author.id, + messages: 1 + } + }) + return + } + const newMessagesCount = (u.messages ?? 0) + 1 + await prisma.user.update({ + where: { + id_guild_id: { id: msg.author.id, guild_id: msg.guild.id } + }, + data: { + messages: newMessagesCount + } + }) +}) + +client.login(process.env.TOKEN) diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6e93634 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "outDir": "dist", + "strict": false, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "typeRoots": ["./node_modules/@types", "types"] + }, + "include": [ + "./src/**/*" + ], + "exclude": [ + "node_modules", + "dist", + "testing", + ] +}