From b22edc781bdcd6ca223583c337e2937593512630 Mon Sep 17 00:00:00 2001 From: anuj-weebjs Date: Sat, 18 May 2024 14:48:05 +0530 Subject: [PATCH] Switched Javascript To TypeScript --- .gitignore | 193 +- Action Commands.txt | 25 - README.md | 18 +- src/config.json => config.json | 14 +- example.env | 2 + package-lock.json | 2365 +++++++++-------- package.json | 58 +- src/Handlers/commandHandler.ts | 26 + src/Handlers/eventHandler.ts | 20 + .../Cool Commands/afk/{afk.js => afk.ts} | 17 +- .../meme/{sendMeme.js => sendMeme.ts} | 24 +- ...endCuddleAction.js => sendCuddleAction.ts} | 10 +- .../actions/handshake/sendHandshakeAction.ts | 21 + ...ighfiveAction.js => sendHighfiveAction.ts} | 10 +- src/commands/actions/hug/sendHugAction.ts | 21 + src/commands/actions/kick/sendkickAction.ts | 21 + src/commands/actions/kiss/sendKissAction.ts | 21 + .../{sendPokeAction.js => sendPokeAction.ts} | 42 +- src/commands/actions/punch/sendPunchAction.ts | 21 + ...{sendShootAction.js => sendShootAction.ts} | 44 +- src/commands/actions/slap/sendSlapAction.ts | 22 + .../blush/sendBlushEmotion.ts} | 14 +- .../bored/sendBoredEmotion.ts} | 12 +- .../cry/sendCryEmotion.ts} | 12 +- .../dance/sendDanceEmotion.ts} | 12 +- .../happy/sendHappyEmotion.ts} | 12 +- src/commands/emotes/laugh/sendLaughEmote.ts | 7 + .../nope/sendNopeEmotion.ts} | 12 +- .../sleep/sendSleepEmotion.ts} | 14 +- .../smile/sendSmileEmotion.ts} | 14 +- .../think/sendThinkEmotion.ts} | 14 +- .../yawn/sendYawnEmotion.ts} | 12 +- .../{sendServerInfo.js => sendServerInfo.ts} | 84 +- .../{sendUserInfo.js => sendUserInfo.ts} | 92 +- .../mics/help/{sendHelp.js => sendHelp.ts} | 74 +- .../mics/ping/{sendPing.js => sendPing.ts} | 69 +- .../mics/start/{start.js => start.ts} | 12 +- src/database.js | 38 - ...ryMessage.js => afkCheckOnEveryMessage.ts} | 6 +- ...Message.js => afkCheckOnMentionMessage.ts} | 8 +- ...Message.js => afkCheckOnRepliedMessage.ts} | 10 +- src/events/messageCreate/prefixHandler.js | 91 - src/events/messageCreate/prefixHandler.ts | 71 + ...entLoginLogger.js => clientLoginLogger.ts} | 17 +- src/index.js | 86 - src/index.ts | 75 + src/model/{afkModel.js => afkModel.ts} | 4 +- .../{economyModel.js => economyModel.ts} | 4 +- src/model/{miscModel.js => miscmodel.ts} | 4 +- src/model/userSchema.js | 0 src/utils/{fetchAction.js => fetchAction.ts} | 39 +- src/utils/{getUserById.js => getUserById.ts} | 5 +- ...ByRawMessage.js => getUserByRawMessage.ts} | 8 +- ...{sendActionEmbed.js => sendActionEmbed.ts} | 61 +- tsconfig.json | 109 + 55 files changed, 2146 insertions(+), 1951 deletions(-) delete mode 100644 Action Commands.txt rename src/config.json => config.json (68%) create mode 100644 example.env create mode 100644 src/Handlers/commandHandler.ts create mode 100644 src/Handlers/eventHandler.ts rename src/commands/Cool Commands/afk/{afk.js => afk.ts} (84%) rename src/commands/Cool Commands/meme/{sendMeme.js => sendMeme.ts} (82%) rename src/commands/actions/cuddle/{sendCuddleAction.js => sendCuddleAction.ts} (68%) create mode 100644 src/commands/actions/handshake/sendHandshakeAction.ts rename src/commands/actions/highfive/{sendHighfiveAction.js => sendHighfiveAction.ts} (68%) create mode 100644 src/commands/actions/hug/sendHugAction.ts create mode 100644 src/commands/actions/kick/sendkickAction.ts create mode 100644 src/commands/actions/kiss/sendKissAction.ts rename src/commands/actions/poke/{sendPokeAction.js => sendPokeAction.ts} (65%) create mode 100644 src/commands/actions/punch/sendPunchAction.ts rename src/commands/actions/shoot/{sendShootAction.js => sendShootAction.ts} (66%) create mode 100644 src/commands/actions/slap/sendSlapAction.ts rename src/commands/{emotions/blush/sendBlushEmotion.js => emotes/blush/sendBlushEmotion.ts} (65%) rename src/commands/{emotions/bored/sendBoredEmotion.js => emotes/bored/sendBoredEmotion.ts} (66%) rename src/commands/{emotions/cry/sendCryEmotion.js => emotes/cry/sendCryEmotion.ts} (66%) rename src/commands/{emotions/dance/sendDanceEmotion.js => emotes/dance/sendDanceEmotion.ts} (68%) rename src/commands/{emotions/happy/sendHappyEmotion.js => emotes/happy/sendHappyEmotion.ts} (67%) create mode 100644 src/commands/emotes/laugh/sendLaughEmote.ts rename src/commands/{emotions/nope/sendNopeEmotion.js => emotes/nope/sendNopeEmotion.ts} (57%) rename src/commands/{emotions/sleep/sendSleepEmotion.js => emotes/sleep/sendSleepEmotion.ts} (55%) rename src/commands/{emotions/smile/sendSmileEmotion.js => emotes/smile/sendSmileEmotion.ts} (56%) rename src/commands/{emotions/think/sendThingEmotion.js => emotes/think/sendThinkEmotion.ts} (54%) rename src/commands/{emotions/yawn/sendYawnEmotion.js => emotes/yawn/sendYawnEmotion.ts} (54%) rename src/commands/info/serverinfo/{sendServerInfo.js => sendServerInfo.ts} (75%) rename src/commands/info/userinfo/{sendUserInfo.js => sendUserInfo.ts} (93%) rename src/commands/mics/help/{sendHelp.js => sendHelp.ts} (59%) rename src/commands/mics/ping/{sendPing.js => sendPing.ts} (70%) rename src/commands/mics/start/{start.js => start.ts} (65%) delete mode 100644 src/database.js rename src/events/messageCreate/{afkCheckOnEveryMessage.js => afkCheckOnEveryMessage.ts} (65%) rename src/events/messageCreate/{afkCheckOnMentionMessage.js => afkCheckOnMentionMessage.ts} (88%) rename src/events/messageCreate/{afkCheckOnRepliedMessage.js => afkCheckOnRepliedMessage.ts} (73%) delete mode 100644 src/events/messageCreate/prefixHandler.js create mode 100644 src/events/messageCreate/prefixHandler.ts rename src/events/ready/{clientLoginLogger.js => clientLoginLogger.ts} (65%) delete mode 100644 src/index.js create mode 100644 src/index.ts rename src/model/{afkModel.js => afkModel.ts} (75%) rename src/model/{economyModel.js => economyModel.ts} (88%) rename src/model/{miscModel.js => miscmodel.ts} (78%) delete mode 100644 src/model/userSchema.js rename src/utils/{fetchAction.js => fetchAction.ts} (66%) rename src/utils/{getUserById.js => getUserById.ts} (64%) rename src/utils/{getUserByRawMessage.js => getUserByRawMessage.ts} (60%) rename src/utils/{sendActionEmbed.js => sendActionEmbed.ts} (64%) create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index 9e4e3c5..7b5f4b8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,131 +1,68 @@ - Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache +.node_modules/ +built/* +tests/cases/rwc/* +tests/cases/perf/* +!tests/cases/webharness/compilerToString.js +test-args.txt +~*.docx +\#*\# +.\#* +tests/baselines/local/* +tests/baselines/local.old/* +tests/services/baselines/local/* +tests/baselines/prototyping/local/* +tests/baselines/rwc/* +tests/baselines/reference/projectOutput/* +tests/baselines/local/projectOutput/* +tests/baselines/reference/testresults.tap +tests/baselines/symlinks/* +tests/services/baselines/prototyping/local/* +tests/services/browser/typescriptServices.js +src/harness/*.js +src/compiler/diagnosticInformationMap.generated.ts +src/compiler/diagnosticMessages.generated.json +src/parser/diagnosticInformationMap.generated.ts +src/parser/diagnosticMessages.generated.json +rwc-report.html +*.swp +build.json +*.actual +tests/webTestServer.js +tests/webTestServer.js.map +tests/webhost/*.d.ts +tests/webhost/webtsc.js +tests/cases/**/*.js +tests/cases/**/*.js.map +*.config +scripts/eslint/built/ +scripts/debug.bat +scripts/run.bat +scripts/**/*.js +scripts/**/*.js.map +coverage/ +internal/ +**/.DS_Store +.settings +**/.vs +**/.vscode/* +!**/.vscode/tasks.json +!**/.vscode/settings.template.json +!**/.vscode/launch.template.json +!**/.vscode/extensions.json +!tests/cases/projects/projectOption/**/node_modules +!tests/cases/projects/NodeModulesSearch/**/* +!tests/baselines/reference/project/nodeModules*/**/* +.idea +yarn.lock +yarn-error.log +.parallelperf.* +tests/baselines/reference/dt +.failed-tests +TEST-results.xml +package-lock.json .eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files +*v8.log +/lib/ .env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test -.vs - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* \ No newline at end of file +*.js \ No newline at end of file diff --git a/Action Commands.txt b/Action Commands.txt deleted file mode 100644 index db4203f..0000000 --- a/Action Commands.txt +++ /dev/null @@ -1,25 +0,0 @@ -// Done -think -bored -yawn -happy -nope -cry -dance -highfive -cuddle - - -// To do -kick -hug -kiss -punch -handshake -slap -handhold -thumbsup -laugh -wave - -queryEndpoint \ No newline at end of file diff --git a/README.md b/README.md index 6bfb2f7..dafdc72 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ -# osBot -It is a prefix based Discord Bot Created in Node.js +# [Invite](https://discord.com/oauth2/authorize?client_id=1227972298653302826) | [Vote](https://top.gg/bot/1227972298653302826/vote) +Os is an Open Source prefix based Discord Bot With Lot Of Fun Features Like Meme, Afk, Actions, Emotion etc. + It is written in Typescript, intentionally made to solve day to day problems with the help of apis and database integration. + # Setting up Locally

Node.js is nessesory to run The bot

@@ -16,14 +18,16 @@ TOKEN=YOURTOKENHERELIKETHIS ```env MONGO_DB_CONNECTION_STRING=YOURCONNECTIONSTRINGHERELIKETHIS ``` -- Now open terminal in osBot folder and type following commands -```cmd -npm install + +- Now open terminal in osBot folder and type following commands To install Dependencies and Make a Build. +```terminal +npm run build ``` - And Finally Startup The Bot By typing following command in your terminal -```cmd -node src/index +```terminal +npm start ``` +- Make sure to Change values in config.json as you like - And all set! diff --git a/src/config.json b/config.json similarity index 68% rename from src/config.json rename to config.json index 8316fa1..1158777 100644 --- a/src/config.json +++ b/config.json @@ -1,8 +1,8 @@ -{ - "PREFIX":"os", - "activities":{ - "name":"os Help" - }, - "status":"dnd", - "adminId": "808318773257437216" +{ + "PREFIX":"os", + "activities":{ + "name":"os Help" + }, + "status":"dnd", + "developerId": "808318773257437216" } \ No newline at end of file diff --git a/example.env b/example.env new file mode 100644 index 0000000..611c9a5 --- /dev/null +++ b/example.env @@ -0,0 +1,2 @@ +TOKEN= +MONGO_DB_CONNECTION_STRING= \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4a48cdf..d5ef50e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1153 +1,1212 @@ -{ - "name": "osbot", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "osbot", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "discord.js": "^14.14.1", - "dotenv": "^16.3.1", - "express": "^4.18.2", - "memory": "^0.0.3", - "mongoose": "^8.2.3" - }, - "engines": { - "node": "20.11.1" - } - }, - "node_modules/@discordjs/builders": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.7.0.tgz", - "integrity": "sha512-GDtbKMkg433cOZur8Dv6c25EHxduNIBsxeHrsRoIM8+AwmEZ8r0tEpckx/sHwTLwQPOF3e2JWloZh9ofCaMfAw==", - "dependencies": { - "@discordjs/formatters": "^0.3.3", - "@discordjs/util": "^1.0.2", - "@sapphire/shapeshift": "^3.9.3", - "discord-api-types": "0.37.61", - "fast-deep-equal": "^3.1.3", - "ts-mixer": "^6.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.11.0" - } - }, - "node_modules/@discordjs/collection": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz", - "integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==", - "engines": { - "node": ">=16.11.0" - } - }, - "node_modules/@discordjs/formatters": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.3.tgz", - "integrity": "sha512-wTcI1Q5cps1eSGhl6+6AzzZkBBlVrBdc9IUhJbijRgVjCNIIIZPgqnUj3ntFODsHrdbGU8BEG9XmDQmgEEYn3w==", - "dependencies": { - "discord-api-types": "0.37.61" - }, - "engines": { - "node": ">=16.11.0" - } - }, - "node_modules/@discordjs/rest": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.2.0.tgz", - "integrity": "sha512-nXm9wT8oqrYFRMEqTXQx9DUTeEtXUDMmnUKIhZn6O2EeDY9VCdwj23XCPq7fkqMPKdF7ldAfeVKyxxFdbZl59A==", - "dependencies": { - "@discordjs/collection": "^2.0.0", - "@discordjs/util": "^1.0.2", - "@sapphire/async-queue": "^1.5.0", - "@sapphire/snowflake": "^3.5.1", - "@vladfrangu/async_event_emitter": "^2.2.2", - "discord-api-types": "0.37.61", - "magic-bytes.js": "^1.5.0", - "tslib": "^2.6.2", - "undici": "5.27.2" - }, - "engines": { - "node": ">=16.11.0" - } - }, - "node_modules/@discordjs/rest/node_modules/@discordjs/collection": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.0.0.tgz", - "integrity": "sha512-YTWIXLrf5FsrLMycpMM9Q6vnZoR/lN2AWX23/Cuo8uOOtS8eHB2dyQaaGnaF8aZPYnttf2bkLMcXn/j6JUOi3w==", - "engines": { - "node": ">=18" - } - }, - "node_modules/@discordjs/util": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.0.2.tgz", - "integrity": "sha512-IRNbimrmfb75GMNEjyznqM1tkI7HrZOf14njX7tCAAUetyZM1Pr8hX/EK2lxBCOgWDRmigbp24fD1hdMfQK5lw==", - "engines": { - "node": ">=16.11.0" - } - }, - "node_modules/@discordjs/ws": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.0.2.tgz", - "integrity": "sha512-+XI82Rm2hKnFwAySXEep4A7Kfoowt6weO6381jgW+wVdTpMS/56qCvoXyFRY0slcv7c/U8My2PwIB2/wEaAh7Q==", - "dependencies": { - "@discordjs/collection": "^2.0.0", - "@discordjs/rest": "^2.1.0", - "@discordjs/util": "^1.0.2", - "@sapphire/async-queue": "^1.5.0", - "@types/ws": "^8.5.9", - "@vladfrangu/async_event_emitter": "^2.2.2", - "discord-api-types": "0.37.61", - "tslib": "^2.6.2", - "ws": "^8.14.2" - }, - "engines": { - "node": ">=16.11.0" - } - }, - "node_modules/@discordjs/ws/node_modules/@discordjs/collection": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.0.0.tgz", - "integrity": "sha512-YTWIXLrf5FsrLMycpMM9Q6vnZoR/lN2AWX23/Cuo8uOOtS8eHB2dyQaaGnaF8aZPYnttf2bkLMcXn/j6JUOi3w==", - "engines": { - "node": ">=18" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", - "engines": { - "node": ">=14" - } - }, - "node_modules/@mongodb-js/saslprep": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.5.tgz", - "integrity": "sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA==", - "dependencies": { - "sparse-bitfield": "^3.0.3" - } - }, - "node_modules/@sapphire/async-queue": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.1.tgz", - "integrity": "sha512-1RdpsmDQR/aWfp8oJzPtn4dNQrbpqSL5PIA0uAB/XwerPXUf994Ug1au1e7uGcD7ei8/F63UDjr5GWps1g/HxQ==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/shapeshift": { - "version": "3.9.5", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.5.tgz", - "integrity": "sha512-AGdHe+51gF7D3W8hBfuSFLBocURDCXVQczScTHXDS3RpNjNgrktIx/amlz5y8nHhm8SAdFt/X8EF8ZSfjJ0tnA==", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@sapphire/snowflake": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.1.tgz", - "integrity": "sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@types/node": { - "version": "20.11.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.0.tgz", - "integrity": "sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", - "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" - }, - "node_modules/@types/whatwg-url": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz", - "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==", - "dependencies": { - "@types/webidl-conversions": "*" - } - }, - "node_modules/@types/ws": { - "version": "8.5.9", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.9.tgz", - "integrity": "sha512-jbdrY0a8lxfdTp/+r7Z4CkycbOFN8WX+IOchLJr3juT/xzbJ8URyTVSJ/hvNdadTgM1mnedb47n+Y31GsFnQlg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@vladfrangu/async_event_emitter": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.4.tgz", - "integrity": "sha512-ButUPz9E9cXMLgvAW8aLAKKJJsPu1dY1/l/E8xzLFuysowXygs6GBcyunK9rnGC4zTsnIc2mQo71rGw9U+Ykug==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/bson": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.5.0.tgz", - "integrity": "sha512-DXf1BTAS8vKyR90BO4x5v3rKVarmkdkzwOrnYDFdjAY694ILNDkmA3uRh1xXJEl+C1DAh8XCvAQ+Gh3kzubtpg==", - "engines": { - "node": ">=16.20.1" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/discord-api-types": { - "version": "0.37.61", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.61.tgz", - "integrity": "sha512-o/dXNFfhBpYHpQFdT6FWzeO7pKc838QeeZ9d91CfVAtpr5XLK4B/zYxQbYgPdoMiTDvJfzcsLW5naXgmHGDNXw==" - }, - "node_modules/discord.js": { - "version": "14.14.1", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.14.1.tgz", - "integrity": "sha512-/hUVzkIerxKHyRKopJy5xejp4MYKDPTszAnpYxzVVv4qJYf+Tkt+jnT2N29PIPschicaEEpXwF2ARrTYHYwQ5w==", - "dependencies": { - "@discordjs/builders": "^1.7.0", - "@discordjs/collection": "1.5.3", - "@discordjs/formatters": "^0.3.3", - "@discordjs/rest": "^2.1.0", - "@discordjs/util": "^1.0.2", - "@discordjs/ws": "^1.0.2", - "@sapphire/snowflake": "3.5.1", - "@types/ws": "8.5.9", - "discord-api-types": "0.37.61", - "fast-deep-equal": "3.1.3", - "lodash.snakecase": "4.1.1", - "tslib": "2.6.2", - "undici": "5.27.2", - "ws": "8.14.2" - }, - "engines": { - "node": ">=16.11.0" - } - }, - "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/kareem": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", - "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" - }, - "node_modules/magic-bytes.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.8.0.tgz", - "integrity": "sha512-lyWpfvNGVb5lu8YUAbER0+UMBTdR63w2mcSUlhhBTyVbxJvjgqwyAf3AZD6MprgK0uHuBoWXSDAMWLupX83o3Q==" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/memory/-/memory-0.0.3.tgz", - "integrity": "sha512-1T8bBUmCpgbj0OapyaQO+fD4gdJewfyE3pqSifpmRbBOIxJRTu968Nw5mdFnmK6eAdERJXHjXReGz7/uOggcBw==", - "engines": { - "node": "~v0.4.11" - } - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mongodb": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.3.0.tgz", - "integrity": "sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA==", - "dependencies": { - "@mongodb-js/saslprep": "^1.1.0", - "bson": "^6.2.0", - "mongodb-connection-string-url": "^3.0.0" - }, - "engines": { - "node": ">=16.20.1" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.1.0", - "gcp-metadata": "^5.2.0", - "kerberos": "^2.0.1", - "mongodb-client-encryption": ">=6.0.0 <7", - "snappy": "^7.2.2", - "socks": "^2.7.1" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "@mongodb-js/zstd": { - "optional": true - }, - "gcp-metadata": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - }, - "socks": { - "optional": true - } - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz", - "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==", - "dependencies": { - "@types/whatwg-url": "^11.0.2", - "whatwg-url": "^13.0.0" - } - }, - "node_modules/mongoose": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.2.3.tgz", - "integrity": "sha512-ZB8K8AgbVgLCcqjtmZMxaQBEztwEEZCtAIPMx2Q56Uo4WWKmwf5Nu/EEIFo8d/17P946X0z6xzxwIqCxUMKxrA==", - "dependencies": { - "bson": "^6.2.0", - "kareem": "2.5.1", - "mongodb": "6.3.0", - "mpath": "0.9.0", - "mquery": "5.0.0", - "ms": "2.1.3", - "sift": "16.0.1" - }, - "engines": { - "node": ">=16.20.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, - "node_modules/mongoose/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", - "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dependencies": { - "debug": "4.x" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/mquery/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mquery/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sift": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", - "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" - }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "dependencies": { - "punycode": "^2.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/ts-mixer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz", - "integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==" - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/undici": { - "version": "5.27.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.27.2.tgz", - "integrity": "sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", - "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", - "dependencies": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", - "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 - } - } - } - } -} +{ + "name": "osbot", + "version": "2.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "osbot", + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "discord.js": "^14.15.2", + "dotenv": "^16.4.5", + "express": "^4.19.2", + "mongoose": "^8.4.0", + "tsc": "^2.0.4", + "typescript": "^5.4.5" + }, + "devDependencies": {} + }, + "node_modules/@discordjs/builders": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.8.1.tgz", + "integrity": "sha512-GkF+HM01FHy+NSoTaUPR8z44otfQgJ1AIsRxclYGUZDyUbdZEFyD/5QVv2Y1Flx6M+B0bQLzg2M9CJv5lGTqpA==", + "dependencies": { + "@discordjs/formatters": "^0.4.0", + "@discordjs/util": "^1.1.0", + "@sapphire/shapeshift": "^3.9.7", + "discord-api-types": "0.37.83", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.11.0" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@discordjs/collection": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz", + "integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==", + "engines": { + "node": ">=16.11.0" + } + }, + "node_modules/@discordjs/formatters": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.4.0.tgz", + "integrity": "sha512-fJ06TLC1NiruF35470q3Nr1bi95BdvKFAF+T5bNfZJ4bNdqZ3VZ+Ttg6SThqTxm6qumSG3choxLBHMC69WXNXQ==", + "dependencies": { + "discord-api-types": "0.37.83" + }, + "engines": { + "node": ">=16.11.0" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@discordjs/rest": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.3.0.tgz", + "integrity": "sha512-C1kAJK8aSYRv3ZwMG8cvrrW4GN0g5eMdP8AuN8ODH5DyOCbHgJspze1my3xHOAgwLJdKUbWNVyAeJ9cEdduqIg==", + "dependencies": { + "@discordjs/collection": "^2.1.0", + "@discordjs/util": "^1.1.0", + "@sapphire/async-queue": "^1.5.2", + "@sapphire/snowflake": "^3.5.3", + "@vladfrangu/async_event_emitter": "^2.2.4", + "discord-api-types": "0.37.83", + "magic-bytes.js": "^1.10.0", + "tslib": "^2.6.2", + "undici": "6.13.0" + }, + "engines": { + "node": ">=16.11.0" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@discordjs/rest/node_modules/@discordjs/collection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.0.tgz", + "integrity": "sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@discordjs/util": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.0.tgz", + "integrity": "sha512-IndcI5hzlNZ7GS96RV3Xw1R2kaDuXEp7tRIy/KlhidpN/BQ1qh1NZt3377dMLTa44xDUNKT7hnXkA/oUAzD/lg==", + "engines": { + "node": ">=16.11.0" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@discordjs/ws": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.1.0.tgz", + "integrity": "sha512-O97DIeSvfNTn5wz5vaER6ciyUsr7nOqSEtsLoMhhIgeFkhnxLRqSr00/Fpq2/ppLgjDGLbQCDzIK7ilGoB/M7A==", + "dependencies": { + "@discordjs/collection": "^2.1.0", + "@discordjs/rest": "^2.3.0", + "@discordjs/util": "^1.1.0", + "@sapphire/async-queue": "^1.5.2", + "@types/ws": "^8.5.10", + "@vladfrangu/async_event_emitter": "^2.2.4", + "discord-api-types": "0.37.83", + "tslib": "^2.6.2", + "ws": "^8.16.0" + }, + "engines": { + "node": ">=16.11.0" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@discordjs/ws/node_modules/@discordjs/collection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.0.tgz", + "integrity": "sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.7.tgz", + "integrity": "sha512-dCHW/oEX0KJ4NjDULBo3JiOaK5+6axtpBbS+ao2ZInoAL9/YRQLhXzSNAFz7hP4nzLkIqsfYAK/PDE3+XHny0Q==", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, + "node_modules/@sapphire/async-queue": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.2.tgz", + "integrity": "sha512-7X7FFAA4DngXUl95+hYbUF19bp1LGiffjJtu7ygrZrbdCSsdDDBaSjB7Akw0ZbOu6k0xpXyljnJ6/RZUvLfRdg==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/shapeshift": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.7.tgz", + "integrity": "sha512-4It2mxPSr4OGn4HSQWGmhFMsNFGfFVhWeRPCRwbH972Ek2pzfGRZtb0pJ4Ze6oIzcyh2jw7nUDa6qGlWofgd9g==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=v16" + } + }, + "node_modules/@sapphire/snowflake": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.3.tgz", + "integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@types/node": { + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" + }, + "node_modules/@types/whatwg-url": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz", + "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==", + "dependencies": { + "@types/webidl-conversions": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vladfrangu/async_event_emitter": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.4.tgz", + "integrity": "sha512-ButUPz9E9cXMLgvAW8aLAKKJJsPu1dY1/l/E8xzLFuysowXygs6GBcyunK9rnGC4zTsnIc2mQo71rGw9U+Ykug==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/bson": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.7.0.tgz", + "integrity": "sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ==", + "engines": { + "node": ">=16.20.1" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/discord-api-types": { + "version": "0.37.83", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.83.tgz", + "integrity": "sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==" + }, + "node_modules/discord.js": { + "version": "14.15.2", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.15.2.tgz", + "integrity": "sha512-wGD37YCaTUNprtpqMIRuNiswwsvSWXrHykBSm2SAosoTYut0VUDj9yo9t4iLtMKvuhI49zYkvKc2TNdzdvpJhg==", + "dependencies": { + "@discordjs/builders": "^1.8.1", + "@discordjs/collection": "1.5.3", + "@discordjs/formatters": "^0.4.0", + "@discordjs/rest": "^2.3.0", + "@discordjs/util": "^1.1.0", + "@discordjs/ws": "^1.1.0", + "@sapphire/snowflake": "3.5.3", + "discord-api-types": "0.37.83", + "fast-deep-equal": "3.1.3", + "lodash.snakecase": "4.1.1", + "tslib": "2.6.2", + "undici": "6.13.0" + }, + "engines": { + "node": ">=16.11.0" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/kareem": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", + "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" + }, + "node_modules/magic-bytes.js": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.10.0.tgz", + "integrity": "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mongodb": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.6.2.tgz", + "integrity": "sha512-ZF9Ugo2JCG/GfR7DEb4ypfyJJyiKbg5qBYKRintebj8+DNS33CyGMkWbrS9lara+u+h+yEOGSRiLhFO/g1s1aw==", + "dependencies": { + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.7.0", + "mongodb-connection-string-url": "^3.0.0" + }, + "engines": { + "node": ">=16.20.1" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", + "dependencies": { + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" + } + }, + "node_modules/mongoose": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.4.0.tgz", + "integrity": "sha512-fgqRMwVEP1qgRYfh+tUe2YBBFnPO35FIg2lfFH+w9IhRGg1/ataWGIqvf/MjwM29cZ60D5vSnqtN2b8Qp0sOZA==", + "dependencies": { + "bson": "^6.7.0", + "kareem": "2.6.3", + "mongodb": "6.6.2", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "17.1.3" + }, + "engines": { + "node": ">=16.20.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/mquery/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mquery/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sift": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", + "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==" + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/ts-mixer": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", + "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==" + }, + "node_modules/tsc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/tsc/-/tsc-2.0.4.tgz", + "integrity": "sha512-fzoSieZI5KKJVBYGvwbVZs/J5za84f2lSTLPYf6AGiIf43tZ3GNrI1QzTLcjtyDDP4aLxd46RTZq1nQxe7+k5Q==", + "bin": { + "tsc": "bin/tsc" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.13.0.tgz", + "integrity": "sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==", + "engines": { + "node": ">=18.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "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 + } + } + } + } +} diff --git a/package.json b/package.json index 5061583..6a62964 100644 --- a/package.json +++ b/package.json @@ -1,22 +1,36 @@ -{ - "name": "osbot", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "discord.js": "^14.14.1", - "dotenv": "^16.3.1", - "express": "^4.18.2", - "memory": "^0.0.3", - "mongoose": "^8.2.3" - }, - "engines": { - "node": "20.11.1" - } -} +{ + "dependencies": { + "discord.js": "^14.15.2", + "dotenv": "^16.4.5", + "express": "^4.19.2", + "mongoose": "^8.4.0", + "tsc": "^2.0.4", + "typescript": "^5.4.5" + }, + "name": "osbot", + "description": "It is a prefix based Discord Bot Created in Node.js", + "version": "2.0.0", + "main": "dist/index.js", + "devDependencies": {}, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node dist/index.js", + "build": "npm i && tsc" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/anuj-weebjs/osBot.git" + }, + "keywords": [ + "discord", + "discord-bot", + "prefix-bot", + "afk-bot" + ], + "author": "@weeb.js", + "license": "MIT", + "bugs": { + "url": "https://github.com/anuj-weebjs/osBot/issues" + }, + "homepage": "https://github.com/anuj-weebjs/osBot#readme" +} diff --git a/src/Handlers/commandHandler.ts b/src/Handlers/commandHandler.ts new file mode 100644 index 0000000..344bc49 --- /dev/null +++ b/src/Handlers/commandHandler.ts @@ -0,0 +1,26 @@ +var fs = require('fs'); +var path = require('path'); + +module.exports = (client: any) => { + client.handleCommands = async () => { + const commandFolderPath = path.join(__dirname, '..', 'commands'); + const commandCategories = fs.readdirSync(commandFolderPath); + + const { commands } = client; + + for (const commandCategory of commandCategories) { + const commandCategoryPath = path.join(commandFolderPath, commandCategory); + const commandNames = fs.readdirSync(commandCategoryPath); + for( const commandName of commandNames){ + const commandNamePath = path.join(commandCategoryPath, commandName); + const commandFiles = fs.readdirSync(commandNamePath); + for(const commandFile of commandFiles){ + const commandFilePath = path.join(commandNamePath, commandFile); + const command = require(commandFilePath); + commands.set(commandName, command); + console.log(`✅ ${commandName}`); + } + } + } + } +} \ No newline at end of file diff --git a/src/Handlers/eventHandler.ts b/src/Handlers/eventHandler.ts new file mode 100644 index 0000000..e368c12 --- /dev/null +++ b/src/Handlers/eventHandler.ts @@ -0,0 +1,20 @@ +var fs = require('node:fs'); +var path = require('node:path'); + +module.exports = (client: any) => { + client.handleEvents = async () => { + const eventFolderPath = path.join(__dirname, '..', 'events'); + const events = fs.readdirSync(eventFolderPath); + for (const eventName of events) { + const eventFiles = fs.readdirSync(path.join(eventFolderPath, eventName)); + for (const eventFile of eventFiles) { + const eventModule = require(path.join(eventFolderPath, eventName, eventFile)); + if (eventModule.once) { + client.once(eventName, (...args: any[]) => eventModule.execute(...args, client)); + } else { + client.on(eventName, (...args: any[]) => eventModule.execute(...args, client)); + } + } + } + } +} \ No newline at end of file diff --git a/src/commands/Cool Commands/afk/afk.js b/src/commands/Cool Commands/afk/afk.ts similarity index 84% rename from src/commands/Cool Commands/afk/afk.js rename to src/commands/Cool Commands/afk/afk.ts index 543fa98..4787def 100644 --- a/src/commands/Cool Commands/afk/afk.js +++ b/src/commands/Cool Commands/afk/afk.ts @@ -1,10 +1,9 @@ -const afkModel = require('../../../model/afkModel.js'); -const config = require('../../../config.json'); - -const prefix = config.PREFIX; +var afkModel = require('../../../model/afkModel.js'); +var config = require('../../../../config.json') +var prefix = config.PREFIX; module.exports = { - execute: async (message) => { + execute: async (message: any) => { const args = await message.content.slice(prefix.length).trim().split(/ +/); args.shift(); @@ -19,14 +18,12 @@ module.exports = { const timeStamp = (a / 1000) | 0; if (args[0].toLowerCase() == "on") { - - - + var _reason: string; args.shift(); if (args.length == 0) { - var _reason = "none" + _reason = "none" } else { - var _reason = args.join(" "); + _reason = args.join(" "); } try { await afkModel.deleteMany({ userId: userid }); diff --git a/src/commands/Cool Commands/meme/sendMeme.js b/src/commands/Cool Commands/meme/sendMeme.ts similarity index 82% rename from src/commands/Cool Commands/meme/sendMeme.js rename to src/commands/Cool Commands/meme/sendMeme.ts index 4f74442..f26a991 100644 --- a/src/commands/Cool Commands/meme/sendMeme.js +++ b/src/commands/Cool Commands/meme/sendMeme.ts @@ -1,11 +1,9 @@ -const { EmbedBuilder } = require('discord.js'); -const index = require('../../../index'); -const client = index.client; -const config = require('../../../config.json'); -const prefix = config.PREFIX; -const adminId = config.adminId; - -async function fetchMeme(subreddit) { +var { EmbedBuilder } = require('discord.js'); +var config = require('../../../../config.json'); +var prefix = config.PREFIX; +var developerId = config.developerId; + +async function fetchMeme(subreddit: string) { try { const response = await fetch(`https://meme-api.com/gimme/${subreddit}`); @@ -21,9 +19,9 @@ async function fetchMeme(subreddit) { } return data; - } catch (err) { + } catch (err: any) { console.error("Fetch error:", err); - client.users.fetch(adminId, false).then((user) => { + client.users.fetch(developerId, false).then((user: any) => { user.send(`${err.toString()} In sendMeme.js.. subreddit: ${subreddit}`); }); } @@ -31,7 +29,7 @@ async function fetchMeme(subreddit) { module.exports = { - execute: async (message) => { + execute: async (message: any) => { const args = await message.content.slice(prefix.length).trim().split(/ +/); args.shift(); @@ -47,7 +45,7 @@ module.exports = { } - message.channel.send({ embeds: [Embed] }).then(async (sentMessage) => { + message.channel.send({ embeds: [Embed] }).then(async (sentMessage: any) => { if (args.length == 0) { var meme = await fetchMeme(""); } else { @@ -69,7 +67,7 @@ module.exports = { sentMessage.edit({ embeds: [Embed] }); - }).catch(error => { + }).catch((error: any) => { console.log("Error sending or editing message: " + error); message.channel.send("[500] Internal Server Error"); }); diff --git a/src/commands/actions/cuddle/sendCuddleAction.js b/src/commands/actions/cuddle/sendCuddleAction.ts similarity index 68% rename from src/commands/actions/cuddle/sendCuddleAction.js rename to src/commands/actions/cuddle/sendCuddleAction.ts index aa6e1a5..40dc737 100644 --- a/src/commands/actions/cuddle/sendCuddleAction.js +++ b/src/commands/actions/cuddle/sendCuddleAction.ts @@ -1,11 +1,11 @@ -const send = require('../../../utils/sendActionEmbed'); -const config = require('../../../config.json'); -const getUserById = require('../../../utils/getUserByRawMessage'); +var send = require('../../../utils/sendActionEmbed'); +var config = require('../../../../config.json'); +var getUserById = require('../../../utils/getUserByRawMessage'); -const prefix = config.PREFIX; +var prefix = config.PREFIX; module.exports = { - execute: async (message) => { + execute: async (message: any) => { const args = await message.content.slice(prefix.length).trim().split(/ +/); args.shift(); if (args.length != 1 && args.length < 1) { diff --git a/src/commands/actions/handshake/sendHandshakeAction.ts b/src/commands/actions/handshake/sendHandshakeAction.ts new file mode 100644 index 0000000..c2a1671 --- /dev/null +++ b/src/commands/actions/handshake/sendHandshakeAction.ts @@ -0,0 +1,21 @@ +var send = require('../../../utils/sendActionEmbed'); +var config = require('../../../../config.json'); +var getUserById = require('../../../utils/getUserByRawMessage'); + +var prefix = config.PREFIX; + +module.exports = { + execute: async (message: any) => { + const args = await message.content.slice(prefix.length).trim().split(/ +/); + args.shift(); + if (args.length != 1 && args.length < 1) { + message.reply(`INVAILD ARGS! use \`${prefix} shoot \``); + return; + } + + const mentionedUser = await getUserById(message.mentions.users.first().toString()); + + send(message, 'handshake', `${message.author.globalName} and ${mentionedUser.globalName} clasp hands in a firm handshake, sealing their agreement with mutual respect`); + + } +} diff --git a/src/commands/actions/highfive/sendHighfiveAction.js b/src/commands/actions/highfive/sendHighfiveAction.ts similarity index 68% rename from src/commands/actions/highfive/sendHighfiveAction.js rename to src/commands/actions/highfive/sendHighfiveAction.ts index 55c32ff..bde1bf7 100644 --- a/src/commands/actions/highfive/sendHighfiveAction.js +++ b/src/commands/actions/highfive/sendHighfiveAction.ts @@ -1,11 +1,11 @@ -const send = require('../../../utils/sendActionEmbed'); -const config = require('../../../config.json'); -const getUserById = require('../../../utils/getUserByRawMessage'); +var send = require('../../../utils/sendActionEmbed'); +var config = require('../../../../config.json'); +var getUserById = require('../../../utils/getUserByRawMessage'); -const prefix = config.PREFIX; +var prefix = config.PREFIX; module.exports = { - execute: async (message) => { + execute: async (message: any) => { const args = await message.content.slice(prefix.length).trim().split(/ +/); args.shift(); if (args.length != 1 && args.length < 1) { diff --git a/src/commands/actions/hug/sendHugAction.ts b/src/commands/actions/hug/sendHugAction.ts new file mode 100644 index 0000000..68bdfa0 --- /dev/null +++ b/src/commands/actions/hug/sendHugAction.ts @@ -0,0 +1,21 @@ +var send = require('../../../utils/sendActionEmbed'); +var config = require('../../../../config.json'); +var getUserById = require('../../../utils/getUserByRawMessage'); + +var prefix = config.PREFIX; + +module.exports = { + execute: async (message: any) => { + const args = await message.content.slice(prefix.length).trim().split(/ +/); + args.shift(); + if (args.length != 1 && args.length < 1) { + message.reply(`INVAILD ARGS! use \`${prefix} poke \``); + return; + } + + const mentionedUser = await getUserById(message.mentions.users.first().toString()); + + send(message, 'hug', `${message.author.globalName} envelops ${mentionedUser.globalName} in a warm embrace, their connection palpable in the tightness of the hug`); + + } +} \ No newline at end of file diff --git a/src/commands/actions/kick/sendkickAction.ts b/src/commands/actions/kick/sendkickAction.ts new file mode 100644 index 0000000..3fbc14d --- /dev/null +++ b/src/commands/actions/kick/sendkickAction.ts @@ -0,0 +1,21 @@ +var send = require('../../../utils/sendActionEmbed'); +var config = require('../../../../config.json'); +var getUserById = require('../../../utils/getUserByRawMessage'); + +var prefix = config.PREFIX; + +module.exports = { + execute: async (message: any) => { + const args = await message.content.slice(prefix.length).trim().split(/ +/); + args.shift(); + if (args.length != 1 && args.length < 1) { + message.reply(`INVAILD ARGS! use \`${prefix} poke \``); + return; + } + + const mentionedUser = await getUserById(message.mentions.users.first().toString()); + + send(message, 'kick', `${message.author.globalName}'s foot meets ${mentionedUser.globalName}'s side with a thud - a kick in the heat of the moment`); + + } +} \ No newline at end of file diff --git a/src/commands/actions/kiss/sendKissAction.ts b/src/commands/actions/kiss/sendKissAction.ts new file mode 100644 index 0000000..0dff6bc --- /dev/null +++ b/src/commands/actions/kiss/sendKissAction.ts @@ -0,0 +1,21 @@ +var send = require('../../../utils/sendActionEmbed'); +var config = require('../../../../config.json'); +var getUserById = require('../../../utils/getUserByRawMessage'); + +var prefix = config.PREFIX; + +module.exports = { + execute: async (message: any) => { + const args = await message.content.slice(prefix.length).trim().split(/ +/); + args.shift(); + if (args.length != 1 && args.length < 1) { + message.reply(`INVAILD ARGS! use \`${prefix} poke \``); + return; + } + + const mentionedUser = await getUserById(message.mentions.users.first().toString()); + + send(message, 'kiss', `${message.author.globalName} leans in, their lips meeting ${mentionedUser.globalName}'s in a fleeting moment of affection`); + + } +} \ No newline at end of file diff --git a/src/commands/actions/poke/sendPokeAction.js b/src/commands/actions/poke/sendPokeAction.ts similarity index 65% rename from src/commands/actions/poke/sendPokeAction.js rename to src/commands/actions/poke/sendPokeAction.ts index 2715c68..18d915e 100644 --- a/src/commands/actions/poke/sendPokeAction.js +++ b/src/commands/actions/poke/sendPokeAction.ts @@ -1,21 +1,21 @@ -const send = require('../../../utils/sendActionEmbed'); -const config = require('../../../config.json'); -const getUserById = require('../../../utils/getUserByRawMessage'); - -const prefix = config.PREFIX; - -module.exports = { - execute: async (message) => { - const args = await message.content.slice(prefix.length).trim().split(/ +/); - args.shift(); - if (args.length != 1 && args.length < 1) { - message.reply(`INVAILD ARGS! use \`${prefix} shoot \``); - return; - } - - const mentionedUser = await getUserById(message.mentions.users.first().toString()); - - send(message, 'poke', `Aww... ${message.author.globalName} is Pokeing ${mentionedUser.globalName}`) - - } -} +var send = require('../../../utils/sendActionEmbed'); +var config = require('../../../../config.json'); +var getUserById = require('../../../utils/getUserByRawMessage'); + +var prefix = config.PREFIX; + +module.exports = { + execute: async (message: any) => { + const args = await message.content.slice(prefix.length).trim().split(/ +/); + args.shift(); + if (args.length != 1 && args.length < 1) { + message.reply(`INVAILD ARGS! use \`${prefix} shoot \``); + return; + } + + const mentionedUser = await getUserById(message.mentions.users.first().toString()); + + send(message, 'poke', `Aww... ${message.author.globalName} is Pokeing ${mentionedUser.globalName}`) + + } +} diff --git a/src/commands/actions/punch/sendPunchAction.ts b/src/commands/actions/punch/sendPunchAction.ts new file mode 100644 index 0000000..f329f5a --- /dev/null +++ b/src/commands/actions/punch/sendPunchAction.ts @@ -0,0 +1,21 @@ +var send = require('../../../utils/sendActionEmbed'); +var config = require('../../../../config.json'); +var getUserById = require('../../../utils/getUserByRawMessage'); + +var prefix = config.PREFIX; + +module.exports = { + execute: async (message: any) => { + const args = await message.content.slice(prefix.length).trim().split(/ +/); + args.shift(); + if (args.length != 1 && args.length < 1) { + message.reply(`INVAILD ARGS! use \`${prefix} shoot \``); + return; + } + + const mentionedUser = await getUserById(message.mentions.users.first().toString()); + + send(message, 'punch', `${message.author.globalName}'s fist meets ${mentionedUser.globalName}'s with a solid thump, a burst of tension in the air`) + + } +} diff --git a/src/commands/actions/shoot/sendShootAction.js b/src/commands/actions/shoot/sendShootAction.ts similarity index 66% rename from src/commands/actions/shoot/sendShootAction.js rename to src/commands/actions/shoot/sendShootAction.ts index 3fde935..68d4a14 100644 --- a/src/commands/actions/shoot/sendShootAction.js +++ b/src/commands/actions/shoot/sendShootAction.ts @@ -1,22 +1,22 @@ -const send = require('../../../utils/sendActionEmbed'); -const config = require('../../../config.json'); -const getUserById = require('../../../utils/getUserByRawMessage'); - -const prefix = config.PREFIX; - -module.exports = { - execute: async (message) => { - const args = await message.content.slice(prefix.length).trim().split(/ +/); - args.shift(); - if (args.length != 1 && args.length < 1) { - message.reply(`INVAILD ARGS! use \`${prefix} shoot \``); - return; - } - - const mentionedUser = await getUserById(message.mentions.users.first().toString()); - - send(message, 'shoot', `${message.author.globalName} Has pulled up Trigger! on ${mentionedUser.globalName}`) - - } -} - +var send = require('../../../utils/sendActionEmbed'); +var config = require('../../../../config.json'); +var getUserById = require('../../../utils/getUserByRawMessage'); + +var prefix = config.PREFIX; + +module.exports = { + execute: async (message: any) => { + const args = await message.content.slice(prefix.length).trim().split(/ +/); + args.shift(); + if (args.length != 1 && args.length < 1) { + message.reply(`INVAILD ARGS! use \`${prefix} shoot \``); + return; + } + + const mentionedUser = await getUserById(message.mentions.users.first().toString()); + + send(message, 'shoot', `${message.author.globalName} Has pulled up Trigger! on ${mentionedUser.globalName}`) + + } +} + diff --git a/src/commands/actions/slap/sendSlapAction.ts b/src/commands/actions/slap/sendSlapAction.ts new file mode 100644 index 0000000..814fdec --- /dev/null +++ b/src/commands/actions/slap/sendSlapAction.ts @@ -0,0 +1,22 @@ +var send = require('../../../utils/sendActionEmbed'); +var config = require('../../../../config.json'); +var getUserById = require('../../../utils/getUserByRawMessage'); + +var prefix = config.PREFIX; + +module.exports = { + execute: async (message: any) => { + const args = await message.content.slice(prefix.length).trim().split(/ +/); + args.shift(); + if (args.length != 1 && args.length < 1) { + message.reply(`INVAILD ARGS! use \`${prefix} shoot \``); + return; + } + + const mentionedUser = await getUserById(message.mentions.users.first().toString()); + + send(message, 'slap', `${message.author.globalName}'s hand meets ${mentionedUser.globalName}'s cheek with a sharp slap, a moment of tension between them`); + + } +} + diff --git a/src/commands/emotions/blush/sendBlushEmotion.js b/src/commands/emotes/blush/sendBlushEmotion.ts similarity index 65% rename from src/commands/emotions/blush/sendBlushEmotion.js rename to src/commands/emotes/blush/sendBlushEmotion.ts index 3e1aaac..9fa486e 100644 --- a/src/commands/emotions/blush/sendBlushEmotion.js +++ b/src/commands/emotes/blush/sendBlushEmotion.ts @@ -1,8 +1,8 @@ -const send = require('../../../utils/sendActionEmbed'); - -module.exports = { - execute: async(message)=>{ - send(message, 'blush', `${message.author.globalName}'s cheeks turned a rosy hue, a clear sign of the blush that spread across their face`); - }, - +var send = require('../../../utils/sendActionEmbed'); + +module.exports = { + execute: async(message: any)=>{ + send(message, 'blush', `${message.author.globalName}'s cheeks turned a rosy hue, a clear sign of the blush that spread across their face`); + }, + }; \ No newline at end of file diff --git a/src/commands/emotions/bored/sendBoredEmotion.js b/src/commands/emotes/bored/sendBoredEmotion.ts similarity index 66% rename from src/commands/emotions/bored/sendBoredEmotion.js rename to src/commands/emotes/bored/sendBoredEmotion.ts index e81596f..f5e9eeb 100644 --- a/src/commands/emotions/bored/sendBoredEmotion.js +++ b/src/commands/emotes/bored/sendBoredEmotion.ts @@ -1,7 +1,7 @@ -const send = require('../../../utils/sendActionEmbed'); - -module.exports = { - execute: async(message)=>{ - send(message, 'bored', `${message.author.globalName} yawned and stared blankly, their eyes glazing over from the sheer monotony of the moment`); - }, +var send = require('../../../utils/sendActionEmbed'); + +module.exports = { + execute: async(message:any)=>{ + send(message, 'bored', `${message.author.globalName} yawned and stared blankly, their eyes glazing over from the sheer monotony of the moment`); + }, }; \ No newline at end of file diff --git a/src/commands/emotions/cry/sendCryEmotion.js b/src/commands/emotes/cry/sendCryEmotion.ts similarity index 66% rename from src/commands/emotions/cry/sendCryEmotion.js rename to src/commands/emotes/cry/sendCryEmotion.ts index 989ca06..0e436db 100644 --- a/src/commands/emotions/cry/sendCryEmotion.js +++ b/src/commands/emotes/cry/sendCryEmotion.ts @@ -1,7 +1,7 @@ -const send = require('../../../utils/sendActionEmbed'); - -module.exports = { - execute: async(message)=>{ - send(message, 'cry', `Tears streamed down ${message.author.globalName} face as they sobbed, their heartache evident in the quivering of their lips`); - }, +var send = require('../../../utils/sendActionEmbed'); + +module.exports = { + execute: async(message: any)=>{ + send(message, 'cry', `Tears streamed down ${message.author.globalName} face as they sobbed, their heartache evident in the quivering of their lips`); + }, }; \ No newline at end of file diff --git a/src/commands/emotions/dance/sendDanceEmotion.js b/src/commands/emotes/dance/sendDanceEmotion.ts similarity index 68% rename from src/commands/emotions/dance/sendDanceEmotion.js rename to src/commands/emotes/dance/sendDanceEmotion.ts index 63136a3..81cf093 100644 --- a/src/commands/emotions/dance/sendDanceEmotion.js +++ b/src/commands/emotes/dance/sendDanceEmotion.ts @@ -1,7 +1,7 @@ -const send = require('../../../utils/sendActionEmbed'); - -module.exports = { - execute: async(message)=>{ - send(message, 'dance', `${message.author.globalName} twirled and leaped with abandon, their feet moving rhythmically as they lost themselves in the joy of the dance`); - }, +var send = require('../../../utils/sendActionEmbed'); + +module.exports = { + execute: async(message:any)=>{ + send(message, 'dance', `${message.author.globalName} twirled and leaped with abandon, their feet moving rhythmically as they lost themselves in the joy of the dance`); + }, }; \ No newline at end of file diff --git a/src/commands/emotions/happy/sendHappyEmotion.js b/src/commands/emotes/happy/sendHappyEmotion.ts similarity index 67% rename from src/commands/emotions/happy/sendHappyEmotion.js rename to src/commands/emotes/happy/sendHappyEmotion.ts index 435953e..e8714b4 100644 --- a/src/commands/emotions/happy/sendHappyEmotion.js +++ b/src/commands/emotes/happy/sendHappyEmotion.ts @@ -1,7 +1,7 @@ -const send = require('../../../utils/sendActionEmbed'); - -module.exports = { - execute: async(message)=>{ - send(message, 'happy', `${message.author.globalName}’s face lit up with a radiant smile, their eyes sparkling with the unmistakable glow of happiness`); - }, +var send = require('../../../utils/sendActionEmbed'); + +module.exports = { + execute: async(message:any)=>{ + send(message, 'happy', `${message.author.globalName}’s face lit up with a radiant smile, their eyes sparkling with the unmistakable glow of happiness`); + }, }; \ No newline at end of file diff --git a/src/commands/emotes/laugh/sendLaughEmote.ts b/src/commands/emotes/laugh/sendLaughEmote.ts new file mode 100644 index 0000000..3e3e29e --- /dev/null +++ b/src/commands/emotes/laugh/sendLaughEmote.ts @@ -0,0 +1,7 @@ +var send = require('../../../utils/sendActionEmbed'); + +module.exports = { + execute: async(message:any)=>{ + send(message, 'laugh', `${message.author.globalName}'s laughter fills the room, a melody of joy that dances in the air`); + }, +}; \ No newline at end of file diff --git a/src/commands/emotions/nope/sendNopeEmotion.js b/src/commands/emotes/nope/sendNopeEmotion.ts similarity index 57% rename from src/commands/emotions/nope/sendNopeEmotion.js rename to src/commands/emotes/nope/sendNopeEmotion.ts index 6bdaafb..3997751 100644 --- a/src/commands/emotions/nope/sendNopeEmotion.js +++ b/src/commands/emotes/nope/sendNopeEmotion.ts @@ -1,7 +1,7 @@ -const send = require('../../../utils/sendActionEmbed'); - -module.exports = { - execute: async(message)=>{ - send(message, 'nope', `${message.author.globalName}'s opinion on the matter is "nope"`); - }, +var send = require('../../../utils/sendActionEmbed'); + +module.exports = { + execute: async(message:any)=>{ + send(message, 'nope', `${message.author.globalName}'s opinion on the matter is "nope"`); + }, }; \ No newline at end of file diff --git a/src/commands/emotions/sleep/sendSleepEmotion.js b/src/commands/emotes/sleep/sendSleepEmotion.ts similarity index 55% rename from src/commands/emotions/sleep/sendSleepEmotion.js rename to src/commands/emotes/sleep/sendSleepEmotion.ts index ad4acd5..c760ed3 100644 --- a/src/commands/emotions/sleep/sendSleepEmotion.js +++ b/src/commands/emotes/sleep/sendSleepEmotion.ts @@ -1,8 +1,8 @@ -const send = require('../../../utils/sendActionEmbed'); - -module.exports = { - execute: async(message)=>{ - send(message, 'sleep', `${message.author.globalName} Needs some Sleep. ZzZ~`); - }, - +var send = require('../../../utils/sendActionEmbed'); + +module.exports = { + execute: async(message:any)=>{ + send(message, 'sleep', `${message.author.globalName} Needs some Sleep. ZzZ~`); + }, + }; \ No newline at end of file diff --git a/src/commands/emotions/smile/sendSmileEmotion.js b/src/commands/emotes/smile/sendSmileEmotion.ts similarity index 56% rename from src/commands/emotions/smile/sendSmileEmotion.js rename to src/commands/emotes/smile/sendSmileEmotion.ts index a11601c..30536e1 100644 --- a/src/commands/emotions/smile/sendSmileEmotion.js +++ b/src/commands/emotes/smile/sendSmileEmotion.ts @@ -1,8 +1,8 @@ -const send = require('../../../utils/sendActionEmbed'); - -module.exports = { - execute: async(message)=>{ - send(message, 'smile', `${message.author.globalName}'s smile Lights up the room`); - }, - +var send = require('../../../utils/sendActionEmbed'); + +module.exports = { + execute: async(message:any)=>{ + send(message, 'smile', `${message.author.globalName}'s smile Lights up the room`); + }, + }; \ No newline at end of file diff --git a/src/commands/emotions/think/sendThingEmotion.js b/src/commands/emotes/think/sendThinkEmotion.ts similarity index 54% rename from src/commands/emotions/think/sendThingEmotion.js rename to src/commands/emotes/think/sendThinkEmotion.ts index b2a40c1..b4fa94c 100644 --- a/src/commands/emotions/think/sendThingEmotion.js +++ b/src/commands/emotes/think/sendThinkEmotion.ts @@ -1,8 +1,8 @@ -const send = require('../../../utils/sendActionEmbed'); - -module.exports = { - execute: async(message)=>{ - send(message, 'think', `${message.author.globalName} is lost in thought`); - }, - +var send = require('../../../utils/sendActionEmbed'); + +module.exports = { + execute: async(message:any)=>{ + send(message, 'think', `${message.author.globalName} is lost in thought`); + }, + }; \ No newline at end of file diff --git a/src/commands/emotions/yawn/sendYawnEmotion.js b/src/commands/emotes/yawn/sendYawnEmotion.ts similarity index 54% rename from src/commands/emotions/yawn/sendYawnEmotion.js rename to src/commands/emotes/yawn/sendYawnEmotion.ts index 454aa6b..572ab17 100644 --- a/src/commands/emotions/yawn/sendYawnEmotion.js +++ b/src/commands/emotes/yawn/sendYawnEmotion.ts @@ -1,7 +1,7 @@ -const send = require('../../../utils/sendActionEmbed'); - -module.exports = { - execute: async(message)=>{ - send(message, 'yawn', `${message.author.globalName} is caught in a yawn`); - }, +var send = require('../../../utils/sendActionEmbed'); + +module.exports = { + execute: async(message:any)=>{ + send(message, 'yawn', `${message.author.globalName} is caught in a yawn`); + }, }; \ No newline at end of file diff --git a/src/commands/info/serverinfo/sendServerInfo.js b/src/commands/info/serverinfo/sendServerInfo.ts similarity index 75% rename from src/commands/info/serverinfo/sendServerInfo.js rename to src/commands/info/serverinfo/sendServerInfo.ts index bf60ea8..1478481 100644 --- a/src/commands/info/serverinfo/sendServerInfo.js +++ b/src/commands/info/serverinfo/sendServerInfo.ts @@ -1,44 +1,42 @@ -const { EmbedBuilder } = require('discord.js'); -module.exports = { - execute: async (message) => { - try { - - const guild = message.guild - // console.log(server.commands) - const ServerEmbed = new EmbedBuilder() - .setColor('#2B2D31') - .setTitle(`${guild.name} - Server info`) - .setThumbnail(guild.iconURL({ size: 256 })) - .setImage(guild.bannerURL({ size: 256 })) - .addFields( - { name: 'Owner', value: (await guild.fetchOwner()).user.tag, inline: true }, - { - name: 'Text Channels', - value: guild.channels.cache.filter((c) => c.type === 0).size.toString(), - inline: true, - }, - { - name: 'Voice Channels', - value: guild.channels.cache.filter((c) => c.type === 2).size.toString(), - inline: true, - }, - { - name: 'Category Channels', - value: guild.channels.cache.filter((c) => c.type === 4).size.toString(), - inline: true, - }, - { name: 'Members', value: guild.memberCount.toString(), inline: true }, - { name: 'Roles', value: guild.roles.cache.size.toString(), inline: true }, - { name: 'Role List', value: guild.roles.cache.toJSON().join(', ') }, - ) - .setFooter({ text: 'requested by ' + message.author.tag, iconUrl: message.author.displayAvatarURL() }) - - // message.channel.send(server.commands.toString()) - message.channel.send({ embeds: [ServerEmbed] }); - } catch (error) { - console.log(error); - message.channel.send(`There was an error Executing \`serverinfo\` command`) - } - - } +var { EmbedBuilder } = require('discord.js'); +module.exports = { + execute: async (message: any) => { + try { + const guild = message.guild; + const ServerEmbed = new EmbedBuilder() + .setColor('#2B2D31') + .setTitle(`${guild.name} - Server info`) + .setThumbnail(guild.iconURL({ size: 256 })) + .setImage(guild.bannerURL({ size: 256 })) + .addFields( + { name: 'Owner', value: (await guild.fetchOwner()).user.tag, inline: true }, + { + name: 'Text Channels', + value: guild.channels.cache.filter((c: any) => c.type === 0).size.toString(), + inline: true, + }, + { + name: 'Voice Channels', + value: guild.channels.cache.filter((c: any) => c.type === 2).size.toString(), + inline: true, + }, + { + name: 'Category Channels', + value: guild.channels.cache.filter((c: any) => c.type === 4).size.toString(), + inline: true, + }, + { name: 'Members', value: guild.memberCount.toString(), inline: true }, + { name: 'Roles', value: guild.roles.cache.size.toString(), inline: true }, + { name: 'Role List', value: guild.roles.cache.toJSON().join(', ') }, + ) + .setFooter({ text: 'requested by ' + message.author.tag, iconUrl: message.author.displayAvatarURL() }) + + // message.channel.send(server.commands.toString()) + message.channel.send({ embeds: [ServerEmbed] }); + } catch (error) { + console.log(error); + message.channel.send(`There was an error Executing \`serverinfo\` command`) + } + + } } \ No newline at end of file diff --git a/src/commands/info/userinfo/sendUserInfo.js b/src/commands/info/userinfo/sendUserInfo.ts similarity index 93% rename from src/commands/info/userinfo/sendUserInfo.js rename to src/commands/info/userinfo/sendUserInfo.ts index 86759c7..0bad65d 100644 --- a/src/commands/info/userinfo/sendUserInfo.js +++ b/src/commands/info/userinfo/sendUserInfo.ts @@ -1,47 +1,47 @@ -const { EmbedBuilder } = require('discord.js') - -module.exports = { - execute: async (message) => { - try { - const messageArray = message.content.slice(2).trim().split(/ +/); - messageArray.shift(); - if (!messageArray[0]) { - var user = message.author; - }else{ - var user = message.mentions.users.first() || message.guild.members.cache.get(messageArray[0]) - } - - var ServerEmbed = new EmbedBuilder() - .setColor('#FF6347') - .setTitle(`${user.globalName} - User info`) - .setThumbnail(user.displayAvatarURL({ size: 256 })) - .addFields( - { - name: 'User Name', - value: user.username, - inline: true, - }, - { - name: 'Global Name', - value: user.globalName.toString(), - inline: true, - }, - { - name: 'Id', - value: user.id.toString(), - inline: true, - }, - { name: 'Roles Count', value: message.guild.members.cache.get(user.id).roles.cache.size.toString() || "No Roles!", inline: true }, - { name: 'Created At', value: user.createdAt.toString()}, - ) - .setFooter({ text: 'requested by ' + message.author.tag, iconUrl: message.author.displayAvatarURL() }) - .setTimestamp(); - - message.channel.send({ embeds: [ServerEmbed] }); - - } catch (error) { - console.log('There was an error in sendUserInfo.js' + error) - message.channel.send('There was an error executing userinfo command. Try Again later'); - } - } +var { EmbedBuilder } = require('discord.js') + +module.exports = { + execute: async (message: any) => { + try { + const messageArray = message.content.slice(2).trim().split(/ +/); + messageArray.shift(); + if (!messageArray[0]) { + var user = message.author; + }else{ + var user = message.mentions.users.first() || message.guild.members.cache.get(messageArray[0]) + } + + var ServerEmbed = new EmbedBuilder() + .setColor('#FF6347') + .setTitle(`${user.globalName} - User info`) + .setThumbnail(user.displayAvatarURL({ size: 256 })) + .addFields( + { + name: 'User Name', + value: user.username, + inline: true, + }, + { + name: 'Global Name', + value: user.globalName.toString(), + inline: true, + }, + { + name: 'Id', + value: user.id.toString(), + inline: true, + }, + { name: 'Roles Count', value: message.guild.members.cache.get(user.id).roles.cache.size.toString() || "No Roles!", inline: true }, + { name: 'Created At', value: user.createdAt.toString()}, + ) + .setFooter({ text: 'requested by ' + message.author.tag, iconUrl: message.author.displayAvatarURL() }) + .setTimestamp(); + + message.channel.send({ embeds: [ServerEmbed] }); + + } catch (error) { + console.log('There was an error in sendUserInfo.js' + error) + message.channel.send('There was an error executing userinfo command. Try Again later'); + } + } } \ No newline at end of file diff --git a/src/commands/mics/help/sendHelp.js b/src/commands/mics/help/sendHelp.ts similarity index 59% rename from src/commands/mics/help/sendHelp.js rename to src/commands/mics/help/sendHelp.ts index 9795280..b528436 100644 --- a/src/commands/mics/help/sendHelp.js +++ b/src/commands/mics/help/sendHelp.ts @@ -1,38 +1,38 @@ -const { EmbedBuilder } = require('discord.js'); -const path = require('node:path'); -const fs = require('node:fs'); -const config = require('../../../config.json') - -let actionsDir = path.join(__dirname, '..', '..', 'actions'); -let emotionsDir = path.join(__dirname, '..', '..', 'emotions'); -let infoDir = path.join(__dirname, '..', '..', 'info'); -let coolCommandsDir = path.join(__dirname, '..', '..', 'Cool Commands'); -function getFileNames(dir) { - const rawActions = fs.readdirSync(dir) - const dirFiles = rawActions.map(element => `\`${element}\``); - return dirFiles; -} - - -module.exports = { - execute: async (message) => { - const helpEmbed = new EmbedBuilder() - .setColor('#FF6347') - .setTitle(`Available Commands`) - .addFields( - { name: 'Cool Commands', value: getFileNames(coolCommandsDir).toString(), inline: false } - ) - .addFields( - { name: 'Emotions', value: getFileNames(emotionsDir).toString(), inline: false } - ) - .addFields( - { name: 'Actions', value: getFileNames(actionsDir).toString(), inline: false } - ) - .addFields( - { name: 'Info', value: getFileNames(infoDir).toString(), inline: false } - ) - .setFooter({ text: `Example Usage: \`${config.PREFIX} \`` }); - - message.channel.send({ embeds: [helpEmbed] }); - } +var { EmbedBuilder } = require('discord.js'); +var fs = require('node:fs'); +var path = require('node:path'); +var config = require('../../../../config.json'); + +let actionsDir = path.join(__dirname, '..', '..', 'actions'); +let emotionsDir = path.join(__dirname, '..', '..', 'emotes'); +let infoDir = path.join(__dirname, '..', '..', 'info'); +let coolCommandsDir = path.join(__dirname, '..', '..', 'Cool Commands'); +function getFileNames(dir:string) { + const rawActions = fs.readdirSync(dir) + const dirFiles = rawActions.map((element: any) => `\`${element}\``); + return dirFiles; +} + + +module.exports = { + execute: async (message: any) => { + const helpEmbed = new EmbedBuilder() + .setColor('#FF6347') + .setTitle(`Available Commands`) + .addFields( + { name: 'Useful Commands', value: getFileNames(coolCommandsDir).toString(), inline: false } + ) + .addFields( + { name: 'Emotes', value: getFileNames(emotionsDir).toString(), inline: false } + ) + .addFields( + { name: 'Actions', value: getFileNames(actionsDir).toString(), inline: false } + ) + .addFields( + { name: 'Info', value: getFileNames(infoDir).toString(), inline: false } + ) + .setFooter({ text: `Example Usage: \`${config.PREFIX} \`` }); + + message.channel.send({ embeds: [helpEmbed] }); + } } \ No newline at end of file diff --git a/src/commands/mics/ping/sendPing.js b/src/commands/mics/ping/sendPing.ts similarity index 70% rename from src/commands/mics/ping/sendPing.js rename to src/commands/mics/ping/sendPing.ts index ec61f83..a246d7b 100644 --- a/src/commands/mics/ping/sendPing.js +++ b/src/commands/mics/ping/sendPing.ts @@ -1,37 +1,32 @@ -const index = require('../../../index'); -const client = index.client; -const memory = require('memory'); -const { EmbedBuilder } = require('discord.js'); - -module.exports = { - execute: async (message) => { - const _memory = memory(); - const pingEmbed = new EmbedBuilder() - .setColor('#FF6347') - .setTitle('Pong!') - .setDescription('Loading...') - .addFields( - { name: 'Ram', value: `${_memory.toString()}mb`, inline: true } - ); - - message.channel.send({ embeds: [pingEmbed] }).then(sentMessage => { - if (!sentMessage || !sentMessage.createdTimestamp || !message.createdTimestamp) { - console.log('Failed to calculate ping. Message or timestamps are undefined.') - pingEmbed.setDescription(`Failded to calculate ping`); - sentMessage.edit({ embeds: [pingEmbed] }); - return; - } - - const botLatency = sentMessage.createdTimestamp - message.createdTimestamp; - const apiLatency = client.ws.ping; - - pingEmbed.setDescription(`Bot latency: ${botLatency}ms\n API Latency: ${apiLatency}ms`); - pingEmbed.setFooter({ text: 'requested by ' + message.author.tag, iconUrl: message.author.displayAvatarURL() }); - pingEmbed.setTimestamp(); - - sentMessage.edit({ embeds: [pingEmbed] }); - }).catch(error => { - console.log("Error sending or editing message: " + error); - }); - }, -}; \ No newline at end of file +var { EmbedBuilder} = require('discord.js'); +module.exports = { + execute: async (message: any, client: any) => { + const pingEmbed = new EmbedBuilder() + .setColor('#FF6347') + .setTitle('Pong!') + .setDescription('Loading...') + .addFields( + { name: 'Ram', value: `${Math.round(process.memoryUsage().rss / (1024 * 1024)).toString()}mb`, inline: true } + ); + + message.channel.send({ embeds: [pingEmbed] }).then((sentMessage: any) => { + if (!sentMessage || !sentMessage.createdTimestamp || !message.createdTimestamp) { + console.log('Failed to calculate ping. Message or timestamps are undefined.') + pingEmbed.setDescription(`Failded to calculate ping`); + sentMessage.edit({ embeds: [pingEmbed] }); + return; + } + + const botLatency = sentMessage.createdTimestamp - message.createdTimestamp; + const apiLatency = client.ws.ping; + + pingEmbed.setDescription(`Bot latency: ${botLatency}ms\n API Latency: ${apiLatency}ms`); + pingEmbed.setFooter({ text: 'requested by ' + message.author.tag, iconUrl: message.author.displayAvatarURL() }); + pingEmbed.setTimestamp(); + + sentMessage.edit({ embeds: [pingEmbed] }); + }).catch((error: any) => { + console.log("Error sending or editing message: " + error); + }); + } +} \ No newline at end of file diff --git a/src/commands/mics/start/start.js b/src/commands/mics/start/start.ts similarity index 65% rename from src/commands/mics/start/start.js rename to src/commands/mics/start/start.ts index 3b198f8..999ca9b 100644 --- a/src/commands/mics/start/start.js +++ b/src/commands/mics/start/start.ts @@ -1,13 +1,11 @@ -const miscModel = require('../../../model/miscModel'); -const config = require('../../../config.json') -const prefix = config.PREFIX; +var config = require('../../../../config.json') +var prefix = config.PREFIX; module.exports = { - execute: async (message) => { + execute: async (message: any) => { + var miscModel = require('../../../model/miscModel'); - userDataInDataBase = await miscModel.findOne({ 'userId': message.author.id }); - - console.log(userDataInDataBase) + const userDataInDataBase = await miscModel.findOne({ 'userId': message.author.id }); if (!userDataInDataBase) { const a = message.createdTimestamp; diff --git a/src/database.js b/src/database.js deleted file mode 100644 index 41474a5..0000000 --- a/src/database.js +++ /dev/null @@ -1,38 +0,0 @@ -const mongoose = require('mongoose'); -const userModel = require('./model/userSchema.js'); - -async function main(CONNECTIONSTRING) { - var connection = await connectDb(CONNECTIONSTRING).then(() => { - console.log("Connected to DataBase") - }).catch((err) => { - console.log("Failed to connect Database " + err) - }); - - async function connectDb(connectionString) { - const connection = await mongoose.connect(connectionString); - - return connection; - } -} - -module.exports = { - main: { - - connect: async (CONNECTIONSTRING) => { - await main(CONNECTIONSTRING) - }, - }, - common: { - start: async (userid, startedat) => { - const user = new userModel({ - userInfo: { - id: userid, - startedAt: startedat - }, - }) - await user.save(); - return user; - }, - } - -} \ No newline at end of file diff --git a/src/events/messageCreate/afkCheckOnEveryMessage.js b/src/events/messageCreate/afkCheckOnEveryMessage.ts similarity index 65% rename from src/events/messageCreate/afkCheckOnEveryMessage.js rename to src/events/messageCreate/afkCheckOnEveryMessage.ts index d96b47a..0d4324f 100644 --- a/src/events/messageCreate/afkCheckOnEveryMessage.js +++ b/src/events/messageCreate/afkCheckOnEveryMessage.ts @@ -1,7 +1,7 @@ -const afkModel = require('../../model/afkModel'); +var afkModel = require('../../model/afkModel'); module.exports = { - execute: async (message) => { + execute: async (message: any) => { if (message.author.bot) return; const userid = message.author.id; @@ -9,8 +9,8 @@ module.exports = { if (queryResult == null) return; if (queryResult.userId == userid) { + message.reply(`Welcome Back u were Afk from `); await afkModel.deleteMany({ userId: userid }); - message.reply(`AFK Status is Now \`Off!\``); } } } \ No newline at end of file diff --git a/src/events/messageCreate/afkCheckOnMentionMessage.js b/src/events/messageCreate/afkCheckOnMentionMessage.ts similarity index 88% rename from src/events/messageCreate/afkCheckOnMentionMessage.js rename to src/events/messageCreate/afkCheckOnMentionMessage.ts index 9732e31..f760030 100644 --- a/src/events/messageCreate/afkCheckOnMentionMessage.js +++ b/src/events/messageCreate/afkCheckOnMentionMessage.ts @@ -1,12 +1,12 @@ -const afkModel = require('../../model/afkModel'); -const getUserById = require('../../utils/getUserById'); +var afkModel = require('../../model/afkModel'); +var getUserById = require('../../utils/getUserById'); module.exports = { - execute: async (message, client) => { + execute: async (message:any) => { if (message.author.bot) return; - messageString = message.content; + const messageString = message.content; const regex = /<@(\d+)>/g; let userIds = []; diff --git a/src/events/messageCreate/afkCheckOnRepliedMessage.js b/src/events/messageCreate/afkCheckOnRepliedMessage.ts similarity index 73% rename from src/events/messageCreate/afkCheckOnRepliedMessage.js rename to src/events/messageCreate/afkCheckOnRepliedMessage.ts index d2fcde9..73390eb 100644 --- a/src/events/messageCreate/afkCheckOnRepliedMessage.js +++ b/src/events/messageCreate/afkCheckOnRepliedMessage.ts @@ -1,8 +1,7 @@ -const { query } = require('express'); -const afkModel = require('../../model/afkModel.js'); +var afkModel = require('../../model/afkModel.js'); module.exports = { - execute: async (message) => { + execute: async (message: any) => { if (message.author.bot) return; @@ -20,13 +19,12 @@ module.exports = { if (queryResult.length < 1) return; const reason = queryResult.reason; - + if(message.author.id == queryResult.userId) return; if (queryResult.userId == msg.author.id) { - //message.reply(`Hey There! The user You're trying to Reach is Currently \`AFK\`(Away From Keyboard)\nSince \nReason: \`${reason}\``); if (queryResult.reason == 'none') { message.reply(`He/She Went AFK `); } else { - message.reply(`He/She Went AFK Because ${reason}`); + message.reply(`He/She Went AFK Reason: ${reason}`); } } else { return; diff --git a/src/events/messageCreate/prefixHandler.js b/src/events/messageCreate/prefixHandler.js deleted file mode 100644 index ecfe0dd..0000000 --- a/src/events/messageCreate/prefixHandler.js +++ /dev/null @@ -1,91 +0,0 @@ -const path = require('node:path'); -const fs = require('node:fs'); -const config = require('../../config.json'); -const adminId = config.adminId; -const miscModel = require('../../model/miscModel.js'); -//const { time } = require('../../../../TOS.md'); - -const prefix = config.PREFIX; -module.exports = { - execute: async (message, client) => { - if (!message) return; - - const args = await message.content.slice(prefix.length).trim().split(/ +/); - const msgCommand = await args.shift().toLowerCase(); - if (!message.content.toLowerCase().startsWith(prefix) || message.author.bot) return; - - const userid = message.author.id; - var userData = await miscModel.findOne({ userId: userid }); - - - if (!userData) { - if (msgCommand != 'start') { - await message.channel.send({ - files: [{ - attachment: 'TOS.md', - name: 'TOS.md' - }], - content: `In order to use the Bot you have to Accept TOS By Typing \`${prefix} start\``, - }); - return; - } - } - - const a = message.createdTimestamp; - const currentTimeStamp = (a / 1000) | 0; - - - if (msgCommand != 'start') { - - const rawUsedCommandTime = userData.lastUsedCommandTime; - const usedCommandTime = parseInt(rawUsedCommandTime); - - if (currentTimeStamp < (usedCommandTime + 5)) { - message.channel.send(`Cooldown!!! I'm Hosted on free tier Hosting Cause My Developer Cant afford a vps So, Wait `); - return; - } - - } - - - - let commandsFolderPath = path.join(__dirname, '..', '..', 'commands'); - let commandsFolderFiles = fs.readdirSync(commandsFolderPath); - - for (const commandsFolderFile of commandsFolderFiles) { - let commandsFolderFilePath = path.join(commandsFolderPath, commandsFolderFile) - - let commandFolders = fs.readdirSync(commandsFolderFilePath); - - for (let commandFolder of commandFolders) { - let commandFolderPath = path.join(commandsFolderFilePath, commandFolder); - let commandFiles = fs.readdirSync(commandFolderPath); - if (commandFiles.length == 0) { - continue; - } - - for (let commandFile of commandFiles) { - let commandFilePath = path.join(commandFolderPath, commandFile); - let command = require(commandFilePath); - if (msgCommand == commandFolder) { - try { - command.execute(message, ...args); - } catch (err) { - client.users.fetch(adminId, false).then((user) => { - user.send(`${err.toString()} in prefixHandler.js.. Command: ${msgCommand} Message Guild: ${message.guild.name} Message Author:${message.author.username} | ${message.author.id}`); - }); - console.log(err); - message.channel.send('[500] Internal Server Error.'); - } finally { - if (msgCommand != 'start') { - userData.lastUsedCommand = msgCommand; - userData.lastUsedCommandTime = currentTimeStamp; - await userData.save(); - } - } - } - } - } - } - } -} \ No newline at end of file diff --git a/src/events/messageCreate/prefixHandler.ts b/src/events/messageCreate/prefixHandler.ts new file mode 100644 index 0000000..8ce3592 --- /dev/null +++ b/src/events/messageCreate/prefixHandler.ts @@ -0,0 +1,71 @@ +var miscModel = require('../../model/miscmodel'); +var config = require('../../../config.json'); +var developerId = config.developerId; +var prefix = config.PREFIX; + +module.exports = { + execute: async (message: any, client: any) => { + if(!message) return; + const args = message.content.slice(prefix.length).trim().split(/ +/); + const msgCommand = args.shift().toLowerCase(); + + if (!message.content.toLowerCase().startsWith(prefix) || message.author.bot) return; + + + var messageUserId = message.author.id; + let userData = await miscModel.findOne({userId: messageUserId}); + + if(!userData){ + if(msgCommand != 'start'){ + await message.channel.send({ + files: [ + { + attachment: 'TOS.md', + name: 'TOS.md' + } + ], + content: `In order to use the Bot you have to Accept TOS By Typing \`${prefix} start\`` + }); + return; + } + } + + const rawCurrentTimeStamp: number = message.createdTimestamp; + const currentTimeStamp: number = (rawCurrentTimeStamp / 1000) | 0; + + if(msgCommand != 'start'){ + const rawUsedCommandTime = userData.lastUsedCommandTime; + const usedCommandTime = parseInt(rawUsedCommandTime); + + if (currentTimeStamp < (usedCommandTime + 5)) { + message.channel.send(`Cooldown!!! I'm Hosted on free tier Hosting Cause My Developer Cant afford a vps So, Wait `); + return; + } + } + + + const {commands} = client; + const command = commands.get(msgCommand); + if(!command) return; + try{ + await command.execute(message, client, ...args) + } catch (err: any) { + client.users.fetch(developerId, false).then((user: any)=>{ + user.send(` + 🔴Error: ${err.toString()}\n + Command: ${msgCommand}\n + Guild: ${message.guild.name} + User: ${message.author.username} | ${message.author.id} + `) + }) + console.log(err); + message.channel.send(`[500] Internal Server Error. Data has Been Sent to My Devlopers The issue will be fixed soon.`); + } finally{ + if(msgCommand != 'start'){ + userData.lastUsedCommand = msgCommand; + userData.lastUsedCommandTime = currentTimeStamp; + await userData.save(); + } + } + } +} \ No newline at end of file diff --git a/src/events/ready/clientLoginLogger.js b/src/events/ready/clientLoginLogger.ts similarity index 65% rename from src/events/ready/clientLoginLogger.js rename to src/events/ready/clientLoginLogger.ts index f86b1ae..a9ab07b 100644 --- a/src/events/ready/clientLoginLogger.js +++ b/src/events/ready/clientLoginLogger.ts @@ -1,9 +1,10 @@ -const config = require("../../config.json"); - -module.exports = { - once:true, - execute:(client) =>{ - console.log(`Logged In as ${client.user.tag}`); - client.user.setPresence({activities:[{name: config.activities.name}], status: config.status}); - } +var config = require("../../../config.json"); + +module.exports = { + once:true, + execute(client: any){ + client.handleCommands(); + console.log(`Logged In as ${client.user.tag}`); + client.user.setPresence({activities:[{name: config.activities.name}], status: config.status}); + } }; \ No newline at end of file diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 8640c2f..0000000 --- a/src/index.js +++ /dev/null @@ -1,86 +0,0 @@ -const path = require('node:path'); -const fs = require('node:fs'); -const { Client, GatewayIntentBits } = require('discord.js'); -const express = require('express'); -const port = process.env.PORT || 4000; -const database = require('./database.js'); -const config = require('./config.json'); -const adminId = config.AdminId; -require('dotenv').config(); -const token = process.env.TOKEN; -const mongoDbConnectionString = process.env.MONGO_DB_CONNECTION_STRING; - -async function connectdb() { - await database.main.connect(mongoDbConnectionString); - return 0; -} -connectdb(); -// KEEP ALIVE - -const app = express(); -app.get("/", (req, res) => { - res.status(200).send({ - success: "true" - }); -}); -app.listen(port); - -// BOT - -const client = new Client({ - intents: [ - GatewayIntentBits.Guilds, - GatewayIntentBits.GuildMembers, - GatewayIntentBits.GuildMessages, - GatewayIntentBits.MessageContent, - GatewayIntentBits.DirectMessages, - ] -}) - -exports.client = client; - -// Events - -const eventsPath = path.join(__dirname, 'events'); -const eventsFolders = fs.readdirSync(eventsPath); - - -for (let eventFolder of eventsFolders) { - let eventFolderPath = path.join(eventsPath, eventFolder); - let eventFiles = fs.readdirSync(eventFolderPath); - for (let eventFile of eventFiles) { - let eventFilePath = path.join(eventFolderPath, eventFile); - const eventName = path.basename(eventFolderPath); - const event = require(eventFilePath); - try { - - if (event.once) { - client.once(eventName, (...args) => event.execute(...args)); - } else { - client.on(eventName, (...args) => event.execute(...args, client)); - } - } catch (err) { - client.users.fetch('808318773257437216', false).then((user) => { - user.send(err.toString()); - }); - console.log(err) - } - } -} - -client.login(process.env.TOKEN); - - -process.on('uncaughtException', function (err) { - console.error(err); - client.users.fetch(adminId, false).then((user) => { - user.send(`${err.toString()} in index.js.. uncaughtException`); - }); -}); - - -// module.exports = { -// DB: db, -// CLIENT: client -// } - diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..896443c --- /dev/null +++ b/src/index.ts @@ -0,0 +1,75 @@ +// Imports +require('dotenv').config(); +var path = require('node:path'); +var fs = require('node:fs'); +var { Client, GatewayIntentBits, Collection } = require('discord.js'); +const express = require('express'); +var mongoose = require('mongoose'); +var config = require('./../config.json'); + +// Defining Variables +var client = new Client({ + intents: [ + GatewayIntentBits.Guilds, + GatewayIntentBits.GuildMembers, + GatewayIntentBits.GuildMessages, + GatewayIntentBits.MessageContent, + GatewayIntentBits.DirectMessages, + ] +}); +// Exporting Client +exports.client = client; +client.commands = new Collection(); + +const token = process.env.TOKEN; +const dbConnectionString = process.env.MONGO_DB_CONNECTION_STRING; +var developerId = config.developerId; + + +// Keep Alive +const app = express(); +const port = 4010; +app.get('/', (req: any, res: any)=>{ + res.send({ + running: true + }); +}); + +// Connecting To Db + +connect(dbConnectionString); + + +async function connect(CONNECTIONSTRING: any) { + var connection = await connectDb(CONNECTIONSTRING).then(() => { + console.log("Connected to DataBase") + }).catch((err) => { + console.log("Failed to connect Database " + err) + }); + + async function connectDb(connectionString: any) { + const connection = await mongoose.connect(connectionString); + + return connection; + } +} + + +// Handeling +const handlersPath = path.join(__dirname, 'handlers'); +const handlers = fs.readdirSync(handlersPath); + +for( const handler of handlers) { + require(path.join(handlersPath, handler))(client); +} + +client.handleEvents(client); +client.login(token); + + +process.on('uncaughtException', function (err) { + console.error(err); + client.users.fetch(developerId, false).then((user: any) => { + user.send(`🔴UncaugthExecption: ${err.toString()}`); + }); +}); diff --git a/src/model/afkModel.js b/src/model/afkModel.ts similarity index 75% rename from src/model/afkModel.js rename to src/model/afkModel.ts index e066d5c..c890e46 100644 --- a/src/model/afkModel.js +++ b/src/model/afkModel.ts @@ -1,4 +1,4 @@ -const mongoose = require('mongoose'); +var mongoose = require('mongoose'); const afkSchema = new mongoose.Schema({ userId: { @@ -15,5 +15,5 @@ const afkSchema = new mongoose.Schema({ }, }); -const afkModel = mongoose.model('afkModel', afkSchema); +var afkModel = mongoose.model('afkModel', afkSchema); module.exports = afkModel; \ No newline at end of file diff --git a/src/model/economyModel.js b/src/model/economyModel.ts similarity index 88% rename from src/model/economyModel.js rename to src/model/economyModel.ts index 2136aec..46d57bc 100644 --- a/src/model/economyModel.js +++ b/src/model/economyModel.ts @@ -1,4 +1,4 @@ -const mongoose = require('mongoose'); +var mongoose = require('mongoose'); const economySchema = new mongoose.Schema({ userId: { @@ -47,5 +47,5 @@ const economySchema = new mongoose.Schema({ }, }); -const economyModel = mongoose.model('economyModel', economySchema); +var economyModel = mongoose.model('economyModel', economySchema); module.exports = economyModel; \ No newline at end of file diff --git a/src/model/miscModel.js b/src/model/miscmodel.ts similarity index 78% rename from src/model/miscModel.js rename to src/model/miscmodel.ts index 3a6452c..06ea9c7 100644 --- a/src/model/miscModel.js +++ b/src/model/miscmodel.ts @@ -1,4 +1,4 @@ -const mongoose = require('mongoose'); +var mongoose = require('mongoose'); const miscSchema = new mongoose.Schema({ userId: { @@ -17,5 +17,5 @@ const miscSchema = new mongoose.Schema({ } }); -const miscModel = mongoose.model('miscModel', miscSchema); +var miscModel = mongoose.model('miscModel', miscSchema); module.exports = miscModel; \ No newline at end of file diff --git a/src/model/userSchema.js b/src/model/userSchema.js deleted file mode 100644 index e69de29..0000000 diff --git a/src/utils/fetchAction.js b/src/utils/fetchAction.ts similarity index 66% rename from src/utils/fetchAction.js rename to src/utils/fetchAction.ts index 72f9645..4d7446d 100644 --- a/src/utils/fetchAction.js +++ b/src/utils/fetchAction.ts @@ -1,20 +1,19 @@ -const url = 'https://nekos.best/api/v2/'; // Replace with your API endpoint - -module.exports = { - fetchAction: async (endpoint) => { - try { - const response = await fetch(`${url}${endpoint}`); - if (!response.ok) { - throw new Error(`HTTP error! Status: ${response.status}`); - } - const data = await response.json(); - return data.results[0]; - } catch (error) { - client.users.fetch('808318773257437216', false).then((user) => { - user.send(error.toString()); - }); - console.error(error); - throw new Error('Error fetching data from the API'); - } - } -} +var client = require('../index').client; +module.exports = { + fetchAction: async (endpoint: string): Promise => { + try { + const response = await fetch(`https://nekos.best/api/v2/${endpoint}`); + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + const data = await response.json(); + return data.results[0]; + } catch (error: any) { + client.users.fetch('808318773257437216', false).then((user: any) => { + user.send(error.toString()); + }); + console.error(error); + throw new Error('Error fetching data from the API'); + } + } +} diff --git a/src/utils/getUserById.js b/src/utils/getUserById.ts similarity index 64% rename from src/utils/getUserById.js rename to src/utils/getUserById.ts index a6cb059..51c34ec 100644 --- a/src/utils/getUserById.js +++ b/src/utils/getUserById.ts @@ -1,7 +1,6 @@ -const index = require('../index'); -const client = index.client; +var client = require('../index').client; -async function getUserById(id) { +var getUserById : any= async(id: string) => { let user = await client.users.fetch(id); diff --git a/src/utils/getUserByRawMessage.js b/src/utils/getUserByRawMessage.ts similarity index 60% rename from src/utils/getUserByRawMessage.js rename to src/utils/getUserByRawMessage.ts index 435b35c..fb9c895 100644 --- a/src/utils/getUserByRawMessage.js +++ b/src/utils/getUserByRawMessage.ts @@ -1,12 +1,12 @@ -const index = require('../index'); -const client = index.client; +var client = require('../index').client; -async function getUserByRawMessage(rawUserId) { +async function getUserByRawMessage(rawUserId: string) { const mentionedUser = rawUserId; const userIdRegExp = /<@(\d+)>/; const userId = mentionedUser.match(userIdRegExp); - let user = await client.users.fetch(userId[1]); + if(!userId) return; + let user = await client.users.fetch(userId?.[1]); if (!user.globalName) { user.globalName = user.username; diff --git a/src/utils/sendActionEmbed.js b/src/utils/sendActionEmbed.ts similarity index 64% rename from src/utils/sendActionEmbed.js rename to src/utils/sendActionEmbed.ts index 271a51b..4253d1c 100644 --- a/src/utils/sendActionEmbed.js +++ b/src/utils/sendActionEmbed.ts @@ -1,30 +1,31 @@ -const { EmbedBuilder } = require('discord.js'); -const { fetchAction } = require('./fetchAction'); -const {adminId } = require('../config.json'); - -async function sendEmbed(message, endpoint, title) { - try { - const gifData = await fetchAction(endpoint); - if (!gifData) { - throw new Error('Error fetching GIF data'); - } - - const Embed = new EmbedBuilder() - .setColor('#ADD8E6') - .setAuthor({ name: title, iconURL: message.author.displayAvatarURL(), url: gifData.url }) - .setImage(gifData.url); - - message.channel.send({ embeds: [Embed] }); - } catch (error) { - client.users.fetch(adminId, false).then((user) => { - user.send(`${error.toString()} in send Action Embed`); - }); - console.error(error); - message.reply('There was an error. Please try again later.'); - } -} - -module.exports = sendEmbed - - - +var { EmbedBuilder } = require('discord.js'); +var { fetchAction } = require('./fetchAction'); +var {developerId} = require('../../config.json') +var client = require('../index').client; + +async function sendEmbed(message: any, endpoint: string, title: string) { + try { + const gifData = await fetchAction(endpoint); + if (!gifData) { + throw new Error('Error fetching GIF data'); + } + + const Embed = new EmbedBuilder() + .setColor('#ADD8E6') + .setAuthor({ name: title, iconURL: message.author.displayAvatarURL(), url: gifData.url }) + .setImage(gifData.url); + + message.channel.send({ embeds: [Embed] }); + } catch (error: any) { + client.users.fetch(developerId, false).then((user: any) => { + user.send(`${error.toString()} in send Action Embed`); + }); + console.error(error); + message.reply('There was an error. Please try again later.'); + } +} + +module.exports = sendEmbed + + + diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..4c87547 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "ES2022", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + "rootDir": "./src", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./dist", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +}