meocord 4.2.2 → 4.2.3
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/CHANGELOG.md +130 -0
- package/dist/cjs/_shared/{controller.decorator-U2NBWcoU.cjs → controller.decorator-hp5xdJU4.cjs} +512 -183
- package/dist/cjs/_shared/{startup-roots-lA5xkBFq.cjs → event-sources-DzqTODXg.cjs} +265 -80
- package/dist/cjs/_shared/{providers-B4MOFBrW.cjs → providers-BBvbnmLP.cjs} +780 -281
- package/dist/cjs/_shared/{sharded-cooldown-store-HTUb3Ii_.cjs → sharded-cooldown-store-B62g5O88.cjs} +11 -9
- package/dist/cjs/_shared/{translate-error-CbBHUu5P.cjs → translate-error-wsgfsUET.cjs} +1 -1
- package/dist/cjs/common/index.cjs +4 -104
- package/dist/cjs/core/index.cjs +432 -181
- package/dist/cjs/decorator/index.cjs +85 -120
- package/dist/cjs/testing/index.cjs +1664 -784
- package/dist/cli.json +1 -1
- package/dist/esm/bin/app-template/package.json.template +9 -9
- package/dist/esm/bin/app-template/src/main.ts.template +3 -2
- package/dist/esm/bin/generator.js +6 -4
- package/dist/esm/bin/helper/filter-generator.helper.js +6 -4
- package/dist/esm/bin/helper/guard-generator.helper.js +6 -4
- package/dist/esm/bin/helper/interceptor-generator.helper.js +6 -4
- package/dist/esm/bin/helper/observer-generator.helper.js +6 -4
- package/dist/esm/bin/helper/pipe-generator.helper.js +6 -4
- package/dist/esm/bin/helper/service-generator.helper.js +6 -4
- package/dist/esm/bin/meocord.js +106 -48
- package/dist/esm/build/native-addons.js +75 -19
- package/dist/esm/build/rsbuild-config.js +11 -3
- package/dist/esm/build/typed-externals.js +15 -2
- package/dist/esm/common/cooldown-store.js +38 -14
- package/dist/esm/common/deprecation.js +4 -1
- package/dist/esm/common/execution-context.js +3 -1
- package/dist/esm/common/explained-error.js +7 -3
- package/dist/esm/common/log-level.js +13 -9
- package/dist/esm/common/logger.js +4 -2
- package/dist/esm/common/meocord-text.js +11 -6
- package/dist/esm/common/redis-cooldown-store.js +3 -7
- package/dist/esm/common/response/flags.js +17 -1
- package/dist/esm/common/response/install-context.js +27 -16
- package/dist/esm/common/response/presenter.js +7 -3
- package/dist/esm/common/response/response-state.js +27 -5
- package/dist/esm/common/sharded-cooldown-store.js +11 -9
- package/dist/esm/common/theme.js +3 -1
- package/dist/esm/common/translator.js +17 -8
- package/dist/esm/core/autocomplete-routes.js +26 -0
- package/dist/esm/core/command-conflicts.js +15 -7
- package/dist/esm/core/command-registration.js +15 -1
- package/dist/esm/core/cooldown-runner.js +7 -9
- package/dist/esm/core/defer.js +2 -5
- package/dist/esm/core/dispatcher.js +83 -58
- package/dist/esm/core/event-requirements.js +67 -19
- package/dist/esm/core/event-sources.js +100 -0
- package/dist/esm/core/fallback.js +3 -1
- package/dist/esm/core/filter-runner.js +4 -4
- package/dist/esm/core/guard-runner.js +173 -52
- package/dist/esm/core/handler-input.js +24 -3
- package/dist/esm/core/handler-pipeline.js +44 -28
- package/dist/esm/core/handler-registry.js +51 -21
- package/dist/esm/core/input-runner.js +7 -8
- package/dist/esm/core/interceptor-runner.js +4 -5
- package/dist/esm/core/lifecycle-hooks.js +3 -8
- package/dist/esm/core/lifecycle-order.js +1 -15
- package/dist/esm/core/meocord-classes.js +14 -1
- package/dist/esm/core/meocord-factory.js +80 -53
- package/dist/esm/core/meocord.app.js +174 -89
- package/dist/esm/core/message-help.js +5 -9
- package/dist/esm/core/message-params.js +126 -46
- package/dist/esm/core/message-routes.js +225 -45
- package/dist/esm/core/message-words.js +30 -2
- package/dist/esm/core/observer-runner.js +2 -1
- package/dist/esm/core/process-state.js +19 -0
- package/dist/esm/core/providers.js +28 -3
- package/dist/esm/core/scalar-types.js +57 -16
- package/dist/esm/core/shard-context.js +11 -10
- package/dist/esm/core/shard-exit.js +3 -3
- package/dist/esm/core/shard-manager.js +16 -6
- package/dist/esm/core/startup-roots.js +28 -8
- package/dist/esm/core/theme-resolvers.js +26 -11
- package/dist/esm/core/theme-runtime.js +23 -13
- package/dist/esm/core/theme-scope.js +27 -29
- package/dist/esm/core/theme-validation.js +1 -1
- package/dist/esm/decorator/app.decorator.js +6 -1
- package/dist/esm/decorator/command-builder.decorator.js +14 -0
- package/dist/esm/decorator/controller-class.decorator.js +1 -1
- package/dist/esm/decorator/controller.decorator.js +48 -19
- package/dist/esm/decorator/defer.decorator.js +2 -2
- package/dist/esm/decorator/event.decorator.js +4 -5
- package/dist/esm/decorator/filter.decorator.js +2 -2
- package/dist/esm/decorator/guard.decorator.js +4 -61
- package/dist/esm/decorator/inject.decorator.js +4 -1
- package/dist/esm/decorator/interceptor.decorator.js +2 -2
- package/dist/esm/decorator/theme.decorator.js +4 -3
- package/dist/esm/decorator/validation.decorator.js +5 -5
- package/dist/esm/package.json.js +1 -1
- package/dist/esm/testing/catalog.js +29 -13
- package/dist/esm/testing/cooldown-store-suite.js +3 -3
- package/dist/esm/testing/discord-defaults.js +449 -355
- package/dist/esm/testing/inspect-handler.js +91 -10
- package/dist/esm/testing/meocord-testing-module.js +195 -77
- package/dist/esm/testing/mock-fn.js +8 -2
- package/dist/esm/testing/mock-interaction.js +639 -113
- package/dist/esm/testing/response-log.js +8 -0
- package/dist/esm/testing/response.js +7 -5
- package/dist/esm/testing/routing.js +48 -6
- package/dist/esm/testing/strict-mocks.js +1 -0
- package/dist/esm/testing/theme.js +3 -2
- package/dist/esm/util/common.util.js +30 -9
- package/dist/esm/util/generator-cli.util.js +6 -4
- package/dist/esm/util/inherited-env.util.js +72 -13
- package/dist/esm/util/json.util.js +10 -3
- package/dist/esm/util/meocord-cli.util.js +3 -2
- package/dist/esm/util/meocord-config-loader.util.js +14 -1
- package/dist/esm/util/meocord-config-validation.util.js +13 -3
- package/dist/esm/util/meocord-source-config.util.js +13 -3
- package/dist/esm/util/platform.util.js +3 -2
- package/dist/esm/util/refusal.util.js +29 -11
- package/dist/esm/util/registration-mode.util.js +14 -1
- package/dist/esm/util/timer-limit.util.js +4 -1
- package/dist/esm/util/tsconfig-paths.util.js +38 -7
- package/dist/esm/util/tsconfig.util.js +16 -58
- package/dist/esm/util/user-text.util.js +8 -4
- package/dist/esm/util/value.util.js +15 -4
- package/dist/types/common/index.d.cts +13 -9
- package/dist/types/common/index.d.ts +13 -9
- package/dist/types/core/index.d.cts +21 -11
- package/dist/types/core/index.d.ts +21 -11
- package/dist/types/decorator/index.d.cts +63 -63
- package/dist/types/decorator/index.d.ts +63 -63
- package/dist/types/{index-DKJclIi-.d.ts → index-Brkd6QGL.d.ts} +81 -35
- package/dist/types/{index-Dlf0ZZtS.d.cts → index-CqXImwF_.d.cts} +81 -35
- package/dist/types/interface/index.d.cts +1 -1
- package/dist/types/interface/index.d.ts +1 -1
- package/dist/types/{route-Bh1U13yy.d.ts → route-IQrK-MN2.d.cts} +11 -3
- package/dist/types/{route-Bh1U13yy.d.cts → route-bI-okq7g.d.ts} +11 -3
- package/dist/types/testing/index.d.cts +137 -54
- package/dist/types/testing/index.d.ts +137 -54
- package/dist/types/{theme-resolvers-CyEz9pnv.d.cts → theme-resolvers-AtgeaYqF.d.cts} +1 -1
- package/dist/types/{theme-resolvers-DA204O-q.d.ts → theme-resolvers-BgqysV8d.d.ts} +1 -1
- package/dist/types/{translator-Bg7hwxDF.d.cts → translator-D8aydlCE.d.ts} +12 -11
- package/dist/types/{translator-CeP4bCzp.d.ts → translator-iJhDlgwL.d.cts} +12 -11
- package/package.json +5 -2
package/dist/cjs/_shared/{sharded-cooldown-store-HTUb3Ii_.cjs → sharded-cooldown-store-B62g5O88.cjs}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var node_crypto = require('node:crypto');
|
|
4
|
-
var controller_decorator = require('./controller.decorator-
|
|
4
|
+
var controller_decorator = require('./controller.decorator-hp5xdJU4.cjs');
|
|
5
5
|
|
|
6
6
|
/** The `fatal` code of a shard whose app MeoCord refused, which every shard would refuse alike. */ const REFUSED_CODE = 'Refused';
|
|
7
7
|
/** Whether an IPC message is one of MeoCord's own, rather than one of discord.js's. */ function isShardMessage(message) {
|
|
@@ -122,16 +122,12 @@ var controller_decorator = require('./controller.decorator-U2NBWcoU.cjs');
|
|
|
122
122
|
* @param limit - The calls allowed, and the window they are counted over.
|
|
123
123
|
* @returns Whether this call was recorded, and if not, how long until one can be.
|
|
124
124
|
*/ async consume(key, limit) {
|
|
125
|
-
|
|
125
|
+
return controller_decorator.singleVerdict(await this.consumeMany([
|
|
126
126
|
{
|
|
127
127
|
key,
|
|
128
128
|
limit
|
|
129
129
|
}
|
|
130
|
-
]);
|
|
131
|
-
return {
|
|
132
|
-
allowed,
|
|
133
|
-
retryAfterMs
|
|
134
|
-
};
|
|
130
|
+
]));
|
|
135
131
|
}
|
|
136
132
|
/**
|
|
137
133
|
* Records a call against every entry if all allow it, in one message to the manager.
|
|
@@ -170,11 +166,17 @@ var controller_decorator = require('./controller.decorator-U2NBWcoU.cjs');
|
|
|
170
166
|
this.pending.set(id, {
|
|
171
167
|
resolve: (verdict, recorded)=>{
|
|
172
168
|
settle();
|
|
173
|
-
// The manager's undo is the calls it recorded, sent back
|
|
174
|
-
|
|
169
|
+
// The manager's undo is the calls it recorded, sent back once: it finds a call by key and time, so a second
|
|
170
|
+
// undo would take another call recorded in the same millisecond
|
|
171
|
+
let released = false;
|
|
172
|
+
const release = async ()=>{
|
|
173
|
+
if (released) return;
|
|
174
|
+
released = true;
|
|
175
|
+
channel.send({
|
|
175
176
|
meocord: 'cooldown-release',
|
|
176
177
|
recorded: recorded ?? []
|
|
177
178
|
});
|
|
179
|
+
};
|
|
178
180
|
resolve(!peek && verdict.allowed && recorded ? controller_decorator.withRelease(verdict, release) : verdict);
|
|
179
181
|
},
|
|
180
182
|
reject: (error)=>(settle(), reject(error))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var controller_decorator = require('./controller.decorator-
|
|
3
|
+
var controller_decorator = require('./controller.decorator-hp5xdJU4.cjs');
|
|
4
4
|
var discord_js = require('discord.js');
|
|
5
5
|
|
|
6
6
|
const logger = new controller_decorator.Logger('Route');
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var controller_decorator = require('../_shared/controller.decorator-
|
|
3
|
+
var controller_decorator = require('../_shared/controller.decorator-hp5xdJU4.cjs');
|
|
4
4
|
require('reflect-metadata');
|
|
5
|
-
var translateError = require('../_shared/translate-error-
|
|
6
|
-
var shardedCooldownStore = require('../_shared/sharded-cooldown-store-
|
|
5
|
+
var translateError = require('../_shared/translate-error-wsgfsUET.cjs');
|
|
6
|
+
var shardedCooldownStore = require('../_shared/sharded-cooldown-store-B62g5O88.cjs');
|
|
7
7
|
require('../enum/index.cjs');
|
|
8
8
|
require('discord.js');
|
|
9
9
|
require('path');
|
|
@@ -19,106 +19,6 @@ require('node:fs');
|
|
|
19
19
|
require('chalk');
|
|
20
20
|
require('node:url');
|
|
21
21
|
|
|
22
|
-
/** The theme role each static stands for; `errorColor` is a fault in the bot, `danger`. */ const ROLES = {
|
|
23
|
-
primaryColor: 'primary',
|
|
24
|
-
successColor: 'success',
|
|
25
|
-
infoColor: 'info',
|
|
26
|
-
errorColor: 'danger',
|
|
27
|
-
warningColor: 'warning'
|
|
28
|
-
};
|
|
29
|
-
const logger = new controller_decorator.Logger('Theme');
|
|
30
|
-
const assigned = {};
|
|
31
|
-
/** Reads a role of the theme where it is read, warning once a run for each static read. */ function read(name) {
|
|
32
|
-
controller_decorator.warnDeprecated(logger, `Theme.${name}`, `useTheme().colors.${ROLES[name]}`);
|
|
33
|
-
return controller_decorator.useTheme().colors[ROLES[name]];
|
|
34
|
-
}
|
|
35
|
-
/** Sets a role beneath every theme an app sets; a value that is no colour is reported instead. */ function assign(name, value) {
|
|
36
|
-
const role = ROLES[name];
|
|
37
|
-
controller_decorator.warnDeprecated(logger, `Assigning Theme.${name}`, `colors.${role} in @MeoCord({ theme })`);
|
|
38
|
-
const [problem] = controller_decorator.themeProblems({
|
|
39
|
-
colors: {
|
|
40
|
-
[role]: value
|
|
41
|
-
}
|
|
42
|
-
}, `Theme.${name}`);
|
|
43
|
-
if (problem) {
|
|
44
|
-
logger.warn(`${problem}. It was left unset.`);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
assigned[role] = value;
|
|
48
|
-
controller_decorator.setLegacyThemeLayer({
|
|
49
|
-
colors: {
|
|
50
|
-
...assigned
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Five of the theme's colours as static properties: primary, success, info, danger and warning.
|
|
56
|
-
*
|
|
57
|
-
* Each one reads the matching role of the theme where it is read, `useTheme().colors`, so code written against it
|
|
58
|
-
* follows `@MeoCord({ theme })` and `@UseTheme` with no change. Assigning one recolours MeoCord's views, as a
|
|
59
|
-
* role beneath every theme an app sets. Reading or assigning each one logs a warning once.
|
|
60
|
-
*
|
|
61
|
-
* @deprecated Since 4.1, and removed in the next major version (5.0). Use `useTheme().colors` instead. Themes
|
|
62
|
-
* follow the app, a controller and a server; set the colours in `@MeoCord({ theme })`: `primaryColor` is
|
|
63
|
-
* `colors.primary`, `successColor` `colors.success`, `infoColor` `colors.info`, `errorColor` `colors.danger` and
|
|
64
|
-
* `warningColor` `colors.warning`.
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
* ```ts
|
|
68
|
-
* // Both colour the embed with the call's primary colour; write the second in new code
|
|
69
|
-
* new EmbedBuilder().setColor(Theme.primaryColor)
|
|
70
|
-
* new EmbedBuilder().setColor(useTheme().colors.primary)
|
|
71
|
-
* ```
|
|
72
|
-
*
|
|
73
|
-
* @group Responses
|
|
74
|
-
*/ class Theme {
|
|
75
|
-
/**
|
|
76
|
-
* @deprecated Since 4.1, and removed in the next major version (5.0). Use `useTheme().colors.primary` instead. It
|
|
77
|
-
* reads the theme where it is read; set `colors.primary` in `@MeoCord({ theme })`.
|
|
78
|
-
*/ static get primaryColor() {
|
|
79
|
-
return read('primaryColor');
|
|
80
|
-
}
|
|
81
|
-
static set primaryColor(value) {
|
|
82
|
-
assign('primaryColor', value);
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* @deprecated Since 4.1, and removed in the next major version (5.0). Use `useTheme().colors.success` instead. It
|
|
86
|
-
* reads the theme where it is read; set `colors.success` in `@MeoCord({ theme })`.
|
|
87
|
-
*/ static get successColor() {
|
|
88
|
-
return read('successColor');
|
|
89
|
-
}
|
|
90
|
-
static set successColor(value) {
|
|
91
|
-
assign('successColor', value);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* @deprecated Since 4.1, and removed in the next major version (5.0). Use `useTheme().colors.info` instead. It
|
|
95
|
-
* reads the theme where it is read; set `colors.info` in `@MeoCord({ theme })`.
|
|
96
|
-
*/ static get infoColor() {
|
|
97
|
-
return read('infoColor');
|
|
98
|
-
}
|
|
99
|
-
static set infoColor(value) {
|
|
100
|
-
assign('infoColor', value);
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* @deprecated Since 4.1, and removed in the next major version (5.0). Use `useTheme().colors.danger` instead. It
|
|
104
|
-
* reads the theme where it is read; set `colors.danger` in `@MeoCord({ theme })`.
|
|
105
|
-
*/ static get errorColor() {
|
|
106
|
-
return read('errorColor');
|
|
107
|
-
}
|
|
108
|
-
static set errorColor(value) {
|
|
109
|
-
assign('errorColor', value);
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* @deprecated Since 4.1, and removed in the next major version (5.0). Use `useTheme().colors.warning` instead. It
|
|
113
|
-
* reads the theme where it is read; set `colors.warning` in `@MeoCord({ theme })`.
|
|
114
|
-
*/ static get warningColor() {
|
|
115
|
-
return read('warningColor');
|
|
116
|
-
}
|
|
117
|
-
static set warningColor(value) {
|
|
118
|
-
assign('warningColor', value);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
22
|
/**
|
|
123
23
|
* Creates a typed decorator for facts about a handler that guards and other stages read.
|
|
124
24
|
*
|
|
@@ -247,6 +147,7 @@ exports.MemoryCooldownStore = controller_decorator.MemoryCooldownStore;
|
|
|
247
147
|
exports.MessageUsageError = controller_decorator.MessageUsageError;
|
|
248
148
|
exports.RedisCooldownStore = controller_decorator.RedisCooldownStore;
|
|
249
149
|
exports.SetMetadata = controller_decorator.SetMetadata;
|
|
150
|
+
exports.Theme = controller_decorator.Theme;
|
|
250
151
|
exports.ThemeCache = controller_decorator.ThemeCache;
|
|
251
152
|
exports.Translator = controller_decorator.Translator;
|
|
252
153
|
exports.UserError = controller_decorator.UserError;
|
|
@@ -264,7 +165,6 @@ exports.useTheme = controller_decorator.useTheme;
|
|
|
264
165
|
exports.route = translateError.route;
|
|
265
166
|
exports.translateError = translateError.translateError;
|
|
266
167
|
exports.ShardedCooldownStore = shardedCooldownStore.ShardedCooldownStore;
|
|
267
|
-
exports.Theme = Theme;
|
|
268
168
|
exports.createMetadata = createMetadata;
|
|
269
169
|
exports.createToken = createToken;
|
|
270
170
|
exports.factoryProvider = factoryProvider;
|