meocord 3.1.0 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +138 -15
- package/dist/cjs/core/index.cjs +41 -18
- package/dist/cjs/decorator/index.cjs +1 -1
- package/dist/esm/bin/app-template/README.md.template +61 -0
- package/dist/esm/bin/app-template/_env.example.template +2 -0
- package/dist/esm/bin/app-template/_gitignore.template +22 -0
- package/dist/esm/bin/app-template/_prettierrc.mjs.template +10 -0
- package/dist/esm/bin/app-template/eslint.config.ts.template +25 -0
- package/dist/esm/bin/app-template/meocord.config.ts.template +25 -0
- package/dist/esm/bin/app-template/package.json.template +38 -0
- package/dist/esm/bin/app-template/src/app.ts.template +44 -0
- package/dist/esm/bin/app-template/src/controllers/button/sample.button.controller.spec.ts.template +17 -0
- package/dist/esm/bin/app-template/src/controllers/button/sample.button.controller.ts.template +19 -0
- package/dist/esm/bin/app-template/src/controllers/context-menu/builders/sample.builder.ts.template +10 -0
- package/dist/esm/bin/app-template/src/controllers/context-menu/sample.context-menu.controller.spec.ts.template +17 -0
- package/dist/esm/bin/app-template/src/controllers/context-menu/sample.context-menu.controller.ts.template +13 -0
- package/dist/esm/bin/app-template/src/controllers/message/sample.message.controller.spec.ts.template +17 -0
- package/dist/esm/bin/app-template/src/controllers/message/sample.message.controller.ts.template +28 -0
- package/dist/esm/bin/app-template/src/controllers/modal-submit/sample.modal-submit.controller.spec.ts.template +17 -0
- package/dist/esm/bin/app-template/src/controllers/modal-submit/sample.modal-submit.controller.ts.template +13 -0
- package/dist/esm/bin/app-template/src/controllers/reaction/sample.reaction.controller.spec.ts.template +17 -0
- package/dist/esm/bin/app-template/src/controllers/reaction/sample.reaction.controller.ts.template +29 -0
- package/dist/esm/bin/app-template/src/controllers/select-menu/sample.select-menu.controller.spec.ts.template +17 -0
- package/dist/esm/bin/app-template/src/controllers/select-menu/sample.select-menu.controller.ts.template +11 -0
- package/dist/esm/bin/app-template/src/controllers/slash/builders/sample.builder.ts.template +10 -0
- package/dist/esm/bin/app-template/src/controllers/slash/sample.slash.controller.spec.ts.template +17 -0
- package/dist/esm/bin/app-template/src/controllers/slash/sample.slash.controller.ts.template +19 -0
- package/dist/esm/bin/app-template/src/guards/rate-limit.guard.spec.ts.template +13 -0
- package/dist/esm/bin/app-template/src/guards/rate-limit.guard.ts.template +52 -0
- package/dist/esm/bin/app-template/src/main.ts.template +14 -0
- package/dist/esm/bin/app-template/src/services/sample.service.spec.ts.template +17 -0
- package/dist/esm/bin/app-template/src/services/sample.service.ts.template +9 -0
- package/dist/esm/bin/app-template/tsconfig.eslint.json.template +5 -0
- package/dist/esm/bin/app-template/tsconfig.json.template +30 -0
- package/dist/esm/bin/app-template/tsconfig.test.json.template +8 -0
- package/dist/esm/bin/app-template/vitest.config.ts.template +35 -0
- package/dist/esm/bin/builder-template/controller/button.controller.template +1 -1
- package/dist/esm/bin/helper/app-generator.helper.js +78 -0
- package/dist/esm/bin/meocord.js +156 -75
- package/dist/esm/core/meocord.app.js +42 -19
- package/dist/esm/decorator/guard.decorator.js +1 -1
- package/dist/esm/util/common.util.js +11 -3
- package/dist/esm/util/generator-cli.util.js +21 -4
- package/dist/esm/util/package-manager.util.js +9 -2
- package/dist/esm/util/package-version.util.js +32 -0
- package/dist/esm/util/runtime.util.js +72 -0
- package/dist/types/core/index.d.ts +2 -2
- package/dist/types/decorator/index.d.ts +1 -1
- package/dist/types/interface/index.d.ts +5 -3
- package/package.json +11 -12
|
@@ -52,8 +52,8 @@ declare class MeoCordApp {
|
|
|
52
52
|
*
|
|
53
53
|
* Built once and cached, so dispatch stays a single ordered walk with an early exit
|
|
54
54
|
* rather than paying to rank anything per interaction. Ordering here is what lets
|
|
55
|
-
* `gi-profile
|
|
56
|
-
* `gi-profile
|
|
55
|
+
* `gi-profile/summary/{ownerId}/{uid}` keep the ids it owns when
|
|
56
|
+
* `gi-profile/{uuid}/{uid}` would also match them — without it, the winner would be
|
|
57
57
|
* whichever controller happened to be registered first.
|
|
58
58
|
*/
|
|
59
59
|
private componentRoutes?;
|
|
@@ -295,7 +295,7 @@ interface GuardWithParams {
|
|
|
295
295
|
* @example
|
|
296
296
|
* ```typescript
|
|
297
297
|
* // Method-level usage
|
|
298
|
-
* @Command('profile
|
|
298
|
+
* @Command('profile/{id}', CommandType.BUTTON)
|
|
299
299
|
* @UseGuard(
|
|
300
300
|
* { provide: RateLimiterGuard, params: { limit: 2, window: 3000 } },
|
|
301
301
|
* ButtonInteractionGuard
|
|
@@ -57,9 +57,11 @@ interface CommandMetadata<T extends string = string> {
|
|
|
57
57
|
dynamicParams?: T[];
|
|
58
58
|
/**
|
|
59
59
|
* How specific this pattern is; higher wins when more than one route matches the
|
|
60
|
-
* same customId. A
|
|
61
|
-
* `gi-profile
|
|
62
|
-
* `gi-profile-summary
|
|
60
|
+
* same customId. A parameter takes whatever fills its segment, so a broad pattern can
|
|
61
|
+
* also match an id a more literal sibling owns — `gi-profile/{uuid}/{uid}` matches
|
|
62
|
+
* `gi-profile/summary/123/456` just as `gi-profile/summary/{ownerId}/{uid}` does — and
|
|
63
|
+
* ranking is what settles it, since declaration order would make the winner depend on
|
|
64
|
+
* file layout.
|
|
63
65
|
*/
|
|
64
66
|
specificity?: number;
|
|
65
67
|
}
|
package/package.json
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "meocord",
|
|
3
3
|
"description": "Decorator-based Discord bot framework built on discord.js. Brings NestJS-style controllers, dependency injection, guards, and testing utilities to bot development — with a full CLI and TypeScript-first design.",
|
|
4
|
-
"version": "3.1
|
|
4
|
+
"version": "3.2.1",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=22"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"
|
|
10
|
+
"format": "prettier --write \"**/*.md\" \"src/bin/app-template/**/*.template\"",
|
|
11
|
+
"format:check": "prettier --check \"**/*.md\" \"src/bin/app-template/**/*.template\"",
|
|
12
|
+
"lint": "bun run format && eslint --fix . && tsc --noEmit && tsc --noEmit --project tsconfig.test.json && tsc --noEmit --project tsconfig.eslint.json",
|
|
11
13
|
"build": "rm -rf ./dist && rollup -c",
|
|
12
14
|
"prepare": "husky",
|
|
13
15
|
"test": "vitest run",
|
|
16
|
+
"verify:generated": "bun scripts/verify-generated.ts",
|
|
14
17
|
"test:watch": "vitest",
|
|
15
18
|
"test:coverage": "vitest run --coverage",
|
|
16
19
|
"test:typecheck": "tsc --noEmit --project tsconfig.test.json"
|
|
@@ -75,16 +78,14 @@
|
|
|
75
78
|
],
|
|
76
79
|
"dependencies": {
|
|
77
80
|
"@clack/prompts": "^1.7.0",
|
|
78
|
-
"@swc/core": "1.
|
|
81
|
+
"@swc/core": "1.16.1",
|
|
79
82
|
"chalk": "^6.0.0",
|
|
80
83
|
"cli-table3": "^0.6.5",
|
|
81
84
|
"commander": "^15.0.0",
|
|
82
|
-
"dayjs": "^1.11.
|
|
83
|
-
"dotenv": "^17.4.2",
|
|
85
|
+
"dayjs": "^1.11.23",
|
|
84
86
|
"inversify": "^8.2.3",
|
|
85
87
|
"jiti": "^2.7.0",
|
|
86
88
|
"lodash-es": "^4.18.1",
|
|
87
|
-
"nodemon": "^3.1.14",
|
|
88
89
|
"reflect-metadata": "^0.2.2",
|
|
89
90
|
"simple-git": "^3.36.0",
|
|
90
91
|
"swc-loader": "^0.2.7",
|
|
@@ -100,14 +101,13 @@
|
|
|
100
101
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
101
102
|
"@rollup/plugin-swc": "^0.4.1",
|
|
102
103
|
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
103
|
-
"@semantic-release/exec": "^7.1.0",
|
|
104
104
|
"@semantic-release/github": "^12.0.9",
|
|
105
105
|
"@semantic-release/release-notes-generator": "^14.1.1",
|
|
106
106
|
"@types/lodash-es": "^4.17.12",
|
|
107
107
|
"@types/webpack-node-externals": "^3.0.4",
|
|
108
108
|
"@typescript-eslint/parser": "^8.67.0",
|
|
109
109
|
"discord.js": "^14.27.0",
|
|
110
|
-
"eslint": "^10.
|
|
110
|
+
"eslint": "^10.9.0",
|
|
111
111
|
"eslint-config-prettier": "^10.1.8",
|
|
112
112
|
"eslint-plugin-headers": "^1.3.4",
|
|
113
113
|
"eslint-plugin-import-x": "^4.17.1",
|
|
@@ -116,16 +116,15 @@
|
|
|
116
116
|
"globals": "^17.11.0",
|
|
117
117
|
"husky": "^9.1.7",
|
|
118
118
|
"prettier": "^3.9.6",
|
|
119
|
-
"rollup": "^4.62.
|
|
119
|
+
"rollup": "^4.62.5",
|
|
120
120
|
"rollup-plugin-copy": "^3.5.0",
|
|
121
121
|
"rollup-plugin-dts": "^6.5.1",
|
|
122
122
|
"semantic-release": "^25.0.9",
|
|
123
|
-
"ts-node": "^10.9.2",
|
|
124
123
|
"typescript": "^6.0.3",
|
|
125
124
|
"typescript-eslint": "^8.67.0",
|
|
126
|
-
"@vitest/coverage-istanbul": "^4.1.
|
|
125
|
+
"@vitest/coverage-istanbul": "^4.1.11",
|
|
127
126
|
"unplugin-swc": "^1.5.11",
|
|
128
|
-
"vitest": "^4.1.
|
|
127
|
+
"vitest": "^4.1.11"
|
|
129
128
|
},
|
|
130
129
|
"peerDependencies": {
|
|
131
130
|
"discord.js": "^14.26.4",
|