From 3178f18d5691eef6706f371c682fa6ee425ee2f8 Mon Sep 17 00:00:00 2001 From: Jacob Nguyen <76754747+jacoobes@users.noreply.github.com> Date: Tue, 15 Mar 2022 15:12:58 -0500 Subject: [PATCH] feat (handler) moving to dev build; new module types --- package-lock.json | 260 +++++++++++------- package.json | 2 +- src/handler/structures/commands/module.ts | 15 +- .../structures/commands/moduleHandler.ts | 30 ++ src/handler/structures/errors.ts | 3 +- src/handler/structures/structxports.ts | 4 +- 6 files changed, 205 insertions(+), 109 deletions(-) create mode 100644 src/handler/structures/commands/moduleHandler.ts diff --git a/package-lock.json b/package-lock.json index 178faeb..7c1e5b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.10.2", - "discord.js": "^13.6.0", + "discord.js": "^14.0.0-dev.1647259751.2297c2b", "eslint": "^8.8.0", "prettier": "^2.5.1", "rxjs": "^7.5.5", @@ -1933,28 +1933,45 @@ } }, "node_modules/@discordjs/builders": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.11.0.tgz", - "integrity": "sha512-ZTB8yJdJKrKlq44dpWkNUrAtEJEq0gqpb7ASdv4vmq6/mZal5kOv312hQ56I/vxwMre+VIkoHquNUAfnTbiYtg==", + "version": "0.13.0-dev.1647259738.2297c2b", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.13.0-dev.1647259738.2297c2b.tgz", + "integrity": "sha512-SywFeczvI8p3US9k2gD2Iza4jPgDpKzuwA8ISrhWF9gPyECxUpgndgW5iZ1M8PhNKjtdZ9Gwn+P7mDpWgpGwZA==", "dependencies": { - "@sindresorhus/is": "^4.2.0", - "discord-api-types": "^0.26.0", + "@sindresorhus/is": "^4.4.0", + "discord-api-types": "^0.27.3", + "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.0", "tslib": "^2.3.1", "zod": "^3.11.6" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=16.9.0" } }, "node_modules/@discordjs/collection": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.4.0.tgz", - "integrity": "sha512-zmjq+l/rV35kE6zRrwe8BHqV78JvIh2ybJeZavBi5NySjWXqN3hmmAKg7kYMMXSeiWtSsMoZ/+MQi0DiQWy2lw==", + "version": "0.6.0-dev.1647259738.2297c2b", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.6.0-dev.1647259738.2297c2b.tgz", + "integrity": "sha512-A+c2qy2HCzVDD3MAoIsL+MKPJhI+jCrcZbIIc6nRZcnCKT544qlI2Sr972sw1bzOj97HD/m4Qd0ElUeQzkHsbQ==", "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/rest": { + "version": "0.4.0-dev.1647259762.2297c2b", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-0.4.0-dev.1647259762.2297c2b.tgz", + "integrity": "sha512-Pt1InmNvdDKSO8/vZg7K2VLB05iOdtScM9jHczLd3NsMWd66DDOzNorKQUjc84nL80RkZ7CCELy/eOn0uwrN4A==", + "dependencies": { + "@discordjs/collection": "^0.6.0-dev", + "@sapphire/async-queue": "^1.2.0", + "@sapphire/snowflake": "^3.1.0", + "@types/node-fetch": "^2.5.12", + "discord-api-types": "^0.27.0", + "form-data": "^4.0.0", + "node-fetch": "^2.6.7", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=16.9.0" } }, "node_modules/@eslint/eslintrc": { @@ -2444,18 +2461,27 @@ } }, "node_modules/@sapphire/async-queue": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.9.tgz", - "integrity": "sha512-CbXaGwwlEMq+l1TRu01FJCvySJ1CEFKFclHT48nIfNeZXaAAmmwwy7scUKmYHPUa3GhoMp6Qr1B3eAJux6XgOQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.0.tgz", + "integrity": "sha512-z+CDw5X4UgIEpZL8KM+ThVx1i8V60HBg0l/oFewTNbQQeRDJHdVxHyJykv+SF1H+Rc8EkMS81VTWo95jVYgO/g==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/snowflake": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.2.0.tgz", + "integrity": "sha512-tfHzY+6/5bbHdB+uNqsEQ5rhjaZAoFUrqP/l1S5jwxMdKeSCIiGkJjcE99/WGGdzyWGjTNgNVX/dt4Me/FdMlg==", "engines": { "node": ">=v14.0.0", "npm": ">=7.0.0" } }, "node_modules/@sindresorhus/is": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.3.0.tgz", - "integrity": "sha512-wwOvh0eO3PiTEivGJWiZ+b946SlMSb4pe+y+Ur/4S87cwo09pYi+FWHHnbrM3W9W7cBYKDqQXcrFYjYUCOJUEQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "engines": { "node": ">=10" }, @@ -2619,9 +2645,9 @@ "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==" }, "node_modules/@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", "dependencies": { "@types/node": "*", "form-data": "^3.0.0" @@ -2666,9 +2692,9 @@ "dev": true }, "node_modules/@types/ws": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", - "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "dependencies": { "@types/node": "*" } @@ -4148,31 +4174,28 @@ } }, "node_modules/discord-api-types": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.26.1.tgz", - "integrity": "sha512-T5PdMQ+Y1MEECYMV5wmyi9VEYPagEDEi4S0amgsszpWY0VB9JJ/hEvM6BgLhbdnKky4gfmZEXtEEtojN8ZKJQQ==", - "engines": { - "node": ">=12" - } + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.27.3.tgz", + "integrity": "sha512-HOG64DTpZ7CB5EU9eKbjHD50H5qG1pxKG8pmFfHUMKjKvEWeLBHfw0c9xF1cruiYLnBb3+n7m3jBWxZ3H1hcgQ==" }, "node_modules/discord.js": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.6.0.tgz", - "integrity": "sha512-tXNR8zgsEPxPBvGk3AQjJ9ljIIC6/LOPjzKwpwz8Y1Q2X66Vi3ZqFgRHYwnHKC0jC0F+l4LzxlhmOJsBZDNg9g==", + "version": "14.0.0-dev.1647259751.2297c2b", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.0.0-dev.1647259751.2297c2b.tgz", + "integrity": "sha512-3VgjiwAcJEEjzchvqFofClncISEivPawX7zeLT+7Kabqm7GIj+p5tfD8MIBbJPm/chcNDc/k2IN1uL154bKV7g==", "dependencies": { - "@discordjs/builders": "^0.11.0", - "@discordjs/collection": "^0.4.0", - "@sapphire/async-queue": "^1.1.9", - "@types/node-fetch": "^2.5.12", + "@discordjs/builders": "^0.13.0-dev", + "@discordjs/collection": "^0.6.0-dev", + "@discordjs/rest": "^0.4.0-dev", + "@sapphire/snowflake": "^3.1.0", "@types/ws": "^8.2.2", - "discord-api-types": "^0.26.0", - "form-data": "^4.0.0", - "node-fetch": "^2.6.1", - "ws": "^8.4.0" + "discord-api-types": "^0.27.3", + "fast-deep-equal": "^3.1.3", + "lodash.snakecase": "^4.1.1", + "undici": "^4.14.1", + "ws": "^8.5.0" }, "engines": { - "node": ">=16.6.0", - "npm": ">=7.0.0" + "node": ">=16.9.0" } }, "node_modules/doctrine": { @@ -6529,6 +6552,11 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=" + }, "node_modules/longest": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", @@ -8343,9 +8371,9 @@ } }, "node_modules/ts-mixer": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz", - "integrity": "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz", + "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==" }, "node_modules/ts-node": { "version": "10.5.0", @@ -8512,6 +8540,14 @@ "node": ">=0.8.0" } }, + "node_modules/undici": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-4.15.1.tgz", + "integrity": "sha512-h8LJybhMKD09IyQZoQadNtIR/GmugVhTOVREunJrpV6RStriKBFdSVoFzEzTihwXi/27DIBO+Z0OGF+Mzfi0lA==", + "engines": { + "node": ">=12.18" + } + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -8777,9 +8813,9 @@ } }, "node_modules/ws": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", - "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "engines": { "node": ">=10.0.0" }, @@ -8914,9 +8950,9 @@ } }, "node_modules/zod": { - "version": "3.11.6", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.11.6.tgz", - "integrity": "sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg==", + "version": "3.13.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.13.4.tgz", + "integrity": "sha512-LZRucWt4j/ru5azOkJxCfpR87IyFDn8h2UODdqvXzZLb3K7bb9chUrUIGTy3BPsr8XnbQYfQ5Md5Hu2OYIo1mg==", "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -10281,21 +10317,37 @@ } }, "@discordjs/builders": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.11.0.tgz", - "integrity": "sha512-ZTB8yJdJKrKlq44dpWkNUrAtEJEq0gqpb7ASdv4vmq6/mZal5kOv312hQ56I/vxwMre+VIkoHquNUAfnTbiYtg==", + "version": "0.13.0-dev.1647259738.2297c2b", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.13.0-dev.1647259738.2297c2b.tgz", + "integrity": "sha512-SywFeczvI8p3US9k2gD2Iza4jPgDpKzuwA8ISrhWF9gPyECxUpgndgW5iZ1M8PhNKjtdZ9Gwn+P7mDpWgpGwZA==", "requires": { - "@sindresorhus/is": "^4.2.0", - "discord-api-types": "^0.26.0", + "@sindresorhus/is": "^4.4.0", + "discord-api-types": "^0.27.3", + "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.0", "tslib": "^2.3.1", "zod": "^3.11.6" } }, "@discordjs/collection": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.4.0.tgz", - "integrity": "sha512-zmjq+l/rV35kE6zRrwe8BHqV78JvIh2ybJeZavBi5NySjWXqN3hmmAKg7kYMMXSeiWtSsMoZ/+MQi0DiQWy2lw==" + "version": "0.6.0-dev.1647259738.2297c2b", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.6.0-dev.1647259738.2297c2b.tgz", + "integrity": "sha512-A+c2qy2HCzVDD3MAoIsL+MKPJhI+jCrcZbIIc6nRZcnCKT544qlI2Sr972sw1bzOj97HD/m4Qd0ElUeQzkHsbQ==" + }, + "@discordjs/rest": { + "version": "0.4.0-dev.1647259762.2297c2b", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-0.4.0-dev.1647259762.2297c2b.tgz", + "integrity": "sha512-Pt1InmNvdDKSO8/vZg7K2VLB05iOdtScM9jHczLd3NsMWd66DDOzNorKQUjc84nL80RkZ7CCELy/eOn0uwrN4A==", + "requires": { + "@discordjs/collection": "^0.6.0-dev", + "@sapphire/async-queue": "^1.2.0", + "@sapphire/snowflake": "^3.1.0", + "@types/node-fetch": "^2.5.12", + "discord-api-types": "^0.27.0", + "form-data": "^4.0.0", + "node-fetch": "^2.6.7", + "tslib": "^2.3.1" + } }, "@eslint/eslintrc": { "version": "1.0.5", @@ -10678,14 +10730,19 @@ } }, "@sapphire/async-queue": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.9.tgz", - "integrity": "sha512-CbXaGwwlEMq+l1TRu01FJCvySJ1CEFKFclHT48nIfNeZXaAAmmwwy7scUKmYHPUa3GhoMp6Qr1B3eAJux6XgOQ==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.0.tgz", + "integrity": "sha512-z+CDw5X4UgIEpZL8KM+ThVx1i8V60HBg0l/oFewTNbQQeRDJHdVxHyJykv+SF1H+Rc8EkMS81VTWo95jVYgO/g==" + }, + "@sapphire/snowflake": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.2.0.tgz", + "integrity": "sha512-tfHzY+6/5bbHdB+uNqsEQ5rhjaZAoFUrqP/l1S5jwxMdKeSCIiGkJjcE99/WGGdzyWGjTNgNVX/dt4Me/FdMlg==" }, "@sindresorhus/is": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.3.0.tgz", - "integrity": "sha512-wwOvh0eO3PiTEivGJWiZ+b946SlMSb4pe+y+Ur/4S87cwo09pYi+FWHHnbrM3W9W7cBYKDqQXcrFYjYUCOJUEQ==" + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" }, "@sinonjs/commons": { "version": "1.8.3", @@ -10840,9 +10897,9 @@ "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==" }, "@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", "requires": { "@types/node": "*", "form-data": "^3.0.0" @@ -10886,9 +10943,9 @@ "dev": true }, "@types/ws": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", - "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "requires": { "@types/node": "*" } @@ -11997,24 +12054,25 @@ } }, "discord-api-types": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.26.1.tgz", - "integrity": "sha512-T5PdMQ+Y1MEECYMV5wmyi9VEYPagEDEi4S0amgsszpWY0VB9JJ/hEvM6BgLhbdnKky4gfmZEXtEEtojN8ZKJQQ==" + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.27.3.tgz", + "integrity": "sha512-HOG64DTpZ7CB5EU9eKbjHD50H5qG1pxKG8pmFfHUMKjKvEWeLBHfw0c9xF1cruiYLnBb3+n7m3jBWxZ3H1hcgQ==" }, "discord.js": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.6.0.tgz", - "integrity": "sha512-tXNR8zgsEPxPBvGk3AQjJ9ljIIC6/LOPjzKwpwz8Y1Q2X66Vi3ZqFgRHYwnHKC0jC0F+l4LzxlhmOJsBZDNg9g==", + "version": "14.0.0-dev.1647259751.2297c2b", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.0.0-dev.1647259751.2297c2b.tgz", + "integrity": "sha512-3VgjiwAcJEEjzchvqFofClncISEivPawX7zeLT+7Kabqm7GIj+p5tfD8MIBbJPm/chcNDc/k2IN1uL154bKV7g==", "requires": { - "@discordjs/builders": "^0.11.0", - "@discordjs/collection": "^0.4.0", - "@sapphire/async-queue": "^1.1.9", - "@types/node-fetch": "^2.5.12", + "@discordjs/builders": "^0.13.0-dev", + "@discordjs/collection": "^0.6.0-dev", + "@discordjs/rest": "^0.4.0-dev", + "@sapphire/snowflake": "^3.1.0", "@types/ws": "^8.2.2", - "discord-api-types": "^0.26.0", - "form-data": "^4.0.0", - "node-fetch": "^2.6.1", - "ws": "^8.4.0" + "discord-api-types": "^0.27.3", + "fast-deep-equal": "^3.1.3", + "lodash.snakecase": "^4.1.1", + "undici": "^4.14.1", + "ws": "^8.5.0" } }, "doctrine": { @@ -13797,6 +13855,11 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=" + }, "longest": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", @@ -15147,9 +15210,9 @@ "dev": true }, "ts-mixer": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz", - "integrity": "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz", + "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==" }, "ts-node": { "version": "10.5.0", @@ -15257,6 +15320,11 @@ "dev": true, "optional": true }, + "undici": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-4.15.1.tgz", + "integrity": "sha512-h8LJybhMKD09IyQZoQadNtIR/GmugVhTOVREunJrpV6RStriKBFdSVoFzEzTihwXi/27DIBO+Z0OGF+Mzfi0lA==" + }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -15481,9 +15549,9 @@ } }, "ws": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", - "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "requires": {} }, "xml-name-validator": { @@ -15576,9 +15644,9 @@ "dev": true }, "zod": { - "version": "3.11.6", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.11.6.tgz", - "integrity": "sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg==" + "version": "3.13.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.13.4.tgz", + "integrity": "sha512-LZRucWt4j/ru5azOkJxCfpR87IyFDn8h2UODdqvXzZLb3K7bb9chUrUIGTy3BPsr8XnbQYfQ5Md5Hu2OYIo1mg==" } } } diff --git a/package.json b/package.json index 2822287..e89f700 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "dependencies": { "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.10.2", - "discord.js": "^13.6.0", + "discord.js": "^14.0.0-dev.1647259751.2297c2b", "eslint": "^8.8.0", "prettier": "^2.5.1", "rxjs": "^7.5.5", diff --git a/src/handler/structures/commands/module.ts b/src/handler/structures/commands/module.ts index 4b4386e..bff59e8 100644 --- a/src/handler/structures/commands/module.ts +++ b/src/handler/structures/commands/module.ts @@ -8,19 +8,16 @@ interface BaseModule { name? : string; description : string; execute() : Awaitable - plugins? : [] //TODO } -type TextCommand = { moduleType : CommandType.TEXT; alias : string[] | [] }; -type SlashCommand = { moduleType : CommandType.SLASH; options : ApplicationCommandOptionData[] | [] }; -type BothCommand = { moduleType : CommandType.BOTH; alias : string[] | []; options : ApplicationCommandOptionData[] | [] } +export type Text= { type : CommandType.TEXT; alias : string[] | [] }; +export type Slash={ type : CommandType.SLASH; options : ApplicationCommandOptionData[] | [] }; +export type Both= { type : CommandType.BOTH; alias : string[] | []; options : ApplicationCommandOptionData[] | [] } export type Module = - BaseModule & ( - TextCommand - | SlashCommand - | BothCommand - ); + BaseModule + & Slash | Both | Text; + diff --git a/src/handler/structures/commands/moduleHandler.ts b/src/handler/structures/commands/moduleHandler.ts new file mode 100644 index 0000000..55b708b --- /dev/null +++ b/src/handler/structures/commands/moduleHandler.ts @@ -0,0 +1,30 @@ +import { CommandType } from "../../sern"; +import { SernError } from "../errors"; +import type { Modules } from "../structxports"; + +export type TextAction = ( mod : Modules.Text ) => unknown; +export type BothAction = ( mod : Modules.Both) => unknown; +export type SlashAction= ( mod : Modules.Slash) => unknown; + +export type Action = + TextAction + | BothAction + | SlashAction; + + +export function onModule ( mod: T, action : Action ) : unknown { + switch (mod.type) { + case CommandType.TEXT : { + return (action as TextAction)(mod); + } + case CommandType.SLASH : { + return (action as SlashAction)(mod); + } + case CommandType.BOTH : { + return (action as BothAction)(mod); + } + default : throw Error(SernError.NOT_VALID_MOD_TYPE); + } + +} + diff --git a/src/handler/structures/errors.ts b/src/handler/structures/errors.ts index 0a70ccc..2b1a4db 100644 --- a/src/handler/structures/errors.ts +++ b/src/handler/structures/errors.ts @@ -1,4 +1,5 @@ export enum SernError { RESERVED_EVENT = 'Cannot register the reserved ready event. Please use the init property.', - NO_ALIAS = 'You cannot provide an array with elements to a slash command.' + NO_ALIAS = 'You cannot provide an array with elements to a slash command.', + NOT_VALID_MOD_TYPE = 'Detected an unknown module type' } diff --git a/src/handler/structures/structxports.ts b/src/handler/structures/structxports.ts index c2b10ec..704feed 100644 --- a/src/handler/structures/structxports.ts +++ b/src/handler/structures/structxports.ts @@ -1,5 +1,5 @@ import Context from './context'; -import type Module from './module'; +import * as ModuleTypes from './commands/module'; import type Wrapper from './wrapper'; -export { Context, Module, Wrapper }; +export { Context, ModuleTypes, Wrapper };