meocord 4.1.2 → 4.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.
Files changed (140) hide show
  1. package/CHANGELOG.md +362 -0
  2. package/THIRD_PARTY_NOTICES.md +14 -13
  3. package/dist/cjs/_shared/{controller.decorator-BywwkU9O.cjs → controller.decorator-XKMlcUZz.cjs} +669 -185
  4. package/dist/cjs/_shared/{providers-BMMLp2SN.cjs → providers-BZgJyfZS.cjs} +218 -75
  5. package/dist/cjs/_shared/{sharded-cooldown-store-B65iaiAy.cjs → sharded-cooldown-store-CsJJyCZd.cjs} +10 -7
  6. package/dist/cjs/_shared/{startup-roots-lFc69AxC.cjs → startup-roots-CgfPQrNl.cjs} +374 -132
  7. package/dist/cjs/_shared/{translate-error-BnM8FbSH.cjs → translate-error-BUAR1WYG.cjs} +21 -7
  8. package/dist/cjs/common/index.cjs +4 -4
  9. package/dist/cjs/core/index.cjs +365 -310
  10. package/dist/cjs/decorator/index.cjs +85 -61
  11. package/dist/cjs/testing/index.cjs +2236 -496
  12. package/dist/cli.json +1 -1
  13. package/dist/esm/bin/app-template/README.md.template +3 -1
  14. package/dist/esm/bin/app-template/src/controllers/button/sample.button.controller.spec.ts.template +8 -4
  15. package/dist/esm/bin/app-template/src/controllers/button/sample.button.controller.ts.template +2 -2
  16. package/dist/esm/bin/app-template/src/guards/owner.guard.spec.ts.template +8 -4
  17. package/dist/esm/bin/app-template/src/guards/owner.guard.ts.template +1 -1
  18. package/dist/esm/bin/app-template/vitest.config.ts.template +1 -1
  19. package/dist/esm/bin/app-template/vitest.setup.ts.template +7 -3
  20. package/dist/esm/bin/generator.js +4 -5
  21. package/dist/esm/bin/helper/filter-generator.helper.js +4 -5
  22. package/dist/esm/bin/helper/guard-generator.helper.js +4 -5
  23. package/dist/esm/bin/helper/interceptor-generator.helper.js +4 -5
  24. package/dist/esm/bin/helper/observer-generator.helper.js +4 -5
  25. package/dist/esm/bin/helper/pipe-generator.helper.js +4 -5
  26. package/dist/esm/bin/helper/service-generator.helper.js +4 -5
  27. package/dist/esm/bin/meocord.js +84 -25
  28. package/dist/esm/build/load-config.pre-entry.js +17 -4
  29. package/dist/esm/build/rsbuild-config.js +16 -12
  30. package/dist/esm/build/typed-externals.js +36 -0
  31. package/dist/esm/common/cooldown-store.js +10 -2
  32. package/dist/esm/common/decorator.js +6 -6
  33. package/dist/esm/common/deprecation.js +2 -2
  34. package/dist/esm/common/errors.js +27 -2
  35. package/dist/esm/common/execution-context.js +1 -1
  36. package/dist/esm/common/meocord-text.js +11 -8
  37. package/dist/esm/common/metadata.js +1 -1
  38. package/dist/esm/common/response/call-order.js +9 -4
  39. package/dist/esm/common/response/presenter.js +33 -6
  40. package/dist/esm/common/response/response-state.js +84 -10
  41. package/dist/esm/common/route.js +21 -5
  42. package/dist/esm/common/sharded-cooldown-store.js +1 -1
  43. package/dist/esm/common/translate-error.js +1 -1
  44. package/dist/esm/common/translator.js +37 -6
  45. package/dist/esm/core/command-conflicts.js +34 -34
  46. package/dist/esm/core/command-registration.js +93 -24
  47. package/dist/esm/core/command-routes.js +2 -2
  48. package/dist/esm/core/component-routes.js +74 -31
  49. package/dist/esm/core/cooldown-runner.js +29 -8
  50. package/dist/esm/core/dispatcher.js +51 -7
  51. package/dist/esm/core/fallback.js +20 -11
  52. package/dist/esm/core/filter-runner.js +2 -2
  53. package/dist/esm/core/guard-runner.js +16 -3
  54. package/dist/esm/core/handler-input.js +4 -3
  55. package/dist/esm/core/handler-pipeline.js +27 -14
  56. package/dist/esm/core/handler-registry.js +1 -1
  57. package/dist/esm/core/interceptor-runner.js +2 -2
  58. package/dist/esm/core/lifecycle-hooks.js +134 -47
  59. package/dist/esm/core/meocord-factory.js +241 -179
  60. package/dist/esm/core/meocord.app.js +116 -75
  61. package/dist/esm/core/message-routes.js +4 -3
  62. package/dist/esm/core/observer-runner.js +4 -3
  63. package/dist/esm/core/providers.js +45 -23
  64. package/dist/esm/core/route-specificity.js +4 -4
  65. package/dist/esm/core/running-calls.js +43 -0
  66. package/dist/esm/core/scalar-types.js +15 -3
  67. package/dist/esm/core/shard-context.js +6 -7
  68. package/dist/esm/core/shard-manager.js +16 -10
  69. package/dist/esm/core/startup-roots.js +23 -4
  70. package/dist/esm/core/theme-resolvers.js +4 -1
  71. package/dist/esm/core/theme-runtime.js +2 -2
  72. package/dist/esm/core/theme-scope.js +3 -1
  73. package/dist/esm/core/theme-validation.js +17 -10
  74. package/dist/esm/decorator/app.decorator.js +12 -7
  75. package/dist/esm/decorator/command-builder.decorator.js +4 -4
  76. package/dist/esm/decorator/controller-class.decorator.js +9 -4
  77. package/dist/esm/decorator/controller.decorator.js +162 -83
  78. package/dist/esm/decorator/cooldown.decorator.js +20 -3
  79. package/dist/esm/decorator/defer.decorator.js +4 -4
  80. package/dist/esm/decorator/event.decorator.js +5 -5
  81. package/dist/esm/decorator/filter.decorator.js +7 -7
  82. package/dist/esm/decorator/guard.decorator.js +11 -10
  83. package/dist/esm/decorator/inject.decorator.js +4 -4
  84. package/dist/esm/decorator/interceptor.decorator.js +7 -7
  85. package/dist/esm/decorator/observer.decorator.js +4 -4
  86. package/dist/esm/decorator/service.decorator.js +4 -4
  87. package/dist/esm/decorator/theme.decorator.js +3 -3
  88. package/dist/esm/decorator/validation.decorator.js +10 -10
  89. package/dist/esm/package.json.js +1 -1
  90. package/dist/esm/testing/catalog.js +27 -11
  91. package/dist/esm/testing/cooldown-store-suite.js +85 -15
  92. package/dist/esm/testing/discord-defaults.js +249 -21
  93. package/dist/esm/testing/index.js +4 -2
  94. package/dist/esm/testing/inspect-handler.js +20 -3
  95. package/dist/esm/testing/meocord-testing-module.js +352 -205
  96. package/dist/esm/testing/mock-fn.js +173 -22
  97. package/dist/esm/testing/mock-interaction.js +1214 -209
  98. package/dist/esm/testing/response.js +1 -1
  99. package/dist/esm/testing/routing.js +39 -14
  100. package/dist/esm/testing/snowflake.js +9 -2
  101. package/dist/esm/testing/startup-errors.js +26 -0
  102. package/dist/esm/testing/strict-mocks.js +65 -0
  103. package/dist/esm/testing/theme.js +1 -1
  104. package/dist/esm/util/bundle-entry.util.js +2 -1
  105. package/dist/esm/util/common.util.js +47 -19
  106. package/dist/esm/util/dev-runner.util.js +8 -8
  107. package/dist/esm/util/generator-cli.util.js +4 -5
  108. package/dist/esm/util/interaction.util.js +3 -3
  109. package/dist/esm/util/meocord-config-loader.util.js +10 -2
  110. package/dist/esm/util/meocord-config-validation.util.js +4 -5
  111. package/dist/esm/util/meocord-source-config.util.js +65 -20
  112. package/dist/esm/util/metadata-keys.js +1 -0
  113. package/dist/esm/util/method-wrapper.util.js +16 -0
  114. package/dist/esm/util/platform.util.js +10 -10
  115. package/dist/esm/util/refusal.util.js +148 -8
  116. package/dist/esm/util/shard-process.util.js +4 -1
  117. package/dist/esm/util/sharding-mode.util.js +5 -7
  118. package/dist/esm/util/shared-state.util.js +21 -0
  119. package/dist/esm/util/tsconfig-paths.util.js +29 -0
  120. package/dist/esm/util/tsconfig.util.js +10 -10
  121. package/dist/esm/util/value.util.js +12 -1
  122. package/dist/types/common/index.d.cts +8 -8
  123. package/dist/types/common/index.d.ts +8 -8
  124. package/dist/types/core/index.d.cts +10 -7
  125. package/dist/types/core/index.d.ts +10 -7
  126. package/dist/types/decorator/index.d.cts +31 -29
  127. package/dist/types/decorator/index.d.ts +31 -29
  128. package/dist/types/{index-D7n0FBMm.d.ts → index-DKJclIi-.d.ts} +107 -36
  129. package/dist/types/{index-DEP0NYrU.d.cts → index-Dlf0ZZtS.d.cts} +107 -36
  130. package/dist/types/interface/index.d.cts +1 -1
  131. package/dist/types/interface/index.d.ts +1 -1
  132. package/dist/types/{route-C-aMI7Sl.d.cts → route-Bh1U13yy.d.cts} +8 -4
  133. package/dist/types/{route-C-aMI7Sl.d.ts → route-Bh1U13yy.d.ts} +8 -4
  134. package/dist/types/testing/index.d.cts +406 -70
  135. package/dist/types/testing/index.d.ts +406 -70
  136. package/dist/types/{theme-resolvers-COHdX5g6.d.cts → theme-resolvers-CyEz9pnv.d.cts} +1 -1
  137. package/dist/types/{theme-resolvers-DedxyscT.d.ts → theme-resolvers-DA204O-q.d.ts} +1 -1
  138. package/dist/types/{translator-J6tIUfdp.d.ts → translator-Bg7hwxDF.d.cts} +21 -8
  139. package/dist/types/{translator-B4mc1lzJ.d.cts → translator-CeP4bCzp.d.ts} +21 -8
  140. package/package.json +4 -3
@@ -32,7 +32,7 @@ import '@rsbuild/core';
32
32
  * @group Decorators
33
33
  * @category App
34
34
  * @see {@link Inject}
35
- * @see {@link https://meocord.dev/docs/4.1/services | Services}
35
+ * @see {@link https://meocord.dev/docs/4.2/services | Services}
36
36
  */
37
37
  declare function Service<T>(): (target: new (...args: any[]) => T, propertyKey?: string | symbol) => void;
38
38
 
@@ -63,7 +63,7 @@ declare function Service<T>(): (target: new (...args: any[]) => T, propertyKey?:
63
63
  * @group Decorators
64
64
  * @category Handlers
65
65
  * @see {@link Command}
66
- * @see {@link https://meocord.dev/docs/4.1/slash-commands | Slash commands}
66
+ * @see {@link https://meocord.dev/docs/4.2/slash-commands | Slash commands}
67
67
  */
68
68
  declare function CommandBuilder<T extends BuildableCommandType>(commandType: T, options?: CommandBuilderOptions): (target: new () => CommandBuilderBase<T>, propertyKey?: string | symbol) => void;
69
69
 
@@ -141,7 +141,7 @@ type ParamsFit<P, Given> = [Given] extends [Unpiped<P>] ? unknown : [Misfits<P,
141
141
  * @group Decorators
142
142
  * @category Handlers
143
143
  * @see {@link ReactionHandler}
144
- * @see {@link https://meocord.dev/docs/4.1/message-commands | Message commands}
144
+ * @see {@link https://meocord.dev/docs/4.2/message-commands | Message commands}
145
145
  */
146
146
  declare function MessageHandler<T extends OmitPartialGroupDMChannel<Message<boolean>>, R>(): (target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<(message: T) => R> | TypedPropertyDescriptor<() => R>) => void;
147
147
  /**
@@ -179,7 +179,7 @@ declare function MessageHandler<T extends OmitPartialGroupDMChannel<Message<bool
179
179
  * @group Decorators
180
180
  * @category Handlers
181
181
  * @see {@link ParamsOf}
182
- * @see {@link https://meocord.dev/docs/4.1/message-commands | Message commands}
182
+ * @see {@link https://meocord.dev/docs/4.2/message-commands | Message commands}
183
183
  */
184
184
  declare function MessageHandler<T extends OmitPartialGroupDMChannel<Message<boolean>>, R, const Pattern extends string = string>(pattern: Pattern, options?: MessageHandlerOptions): PatternedMessageHandlerDecorator<T, R, Pattern>;
185
185
  type ReactionHandlerDecorator<T extends MessageReaction | PartialMessageReaction, R> = (target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<(reaction: T, options: ReactionEvent) => R> | TypedPropertyDescriptor<(reaction: T) => R> | TypedPropertyDescriptor<() => R>) => void;
@@ -215,7 +215,7 @@ type ReactionHandlerDecorator<T extends MessageReaction | PartialMessageReaction
215
215
  * @group Decorators
216
216
  * @category Handlers
217
217
  * @see {@link ReactionEvent}
218
- * @see {@link https://meocord.dev/docs/4.1/reactions | Reactions}
218
+ * @see {@link https://meocord.dev/docs/4.2/reactions | Reactions}
219
219
  */
220
220
  declare function ReactionHandler<T extends MessageReaction | PartialMessageReaction, R>(emoji?: string, settings?: ReactionHandlerSettings): ReactionHandlerDecorator<T, R>;
221
221
  /**
@@ -307,10 +307,11 @@ type TypedParamsAccept<N, T, P> = T extends CommandType ? string extends Pattern
307
307
  * the keys the handler's params require are checked against the pattern or route, a typed segment's value against
308
308
  * its type, and a select menu's choices, such as `values: string[]`, against what discord.js gives; a key a pipe
309
309
  * produces is declared `Piped<T>`, and left to the pipe. Two component handlers of one type whose patterns match
310
- * exactly the same ids stop the bot at startup; patterns that only overlap are warned about, naming the one that
311
- * runs: the more specific, or between equally specific ones, the one listed first. In the next major version (5.0),
312
- * the one that spells out the first segment where two equally specific patterns differ runs instead, and the warning
313
- * names the pairs that changes. A context menu handler receives the kind its builder's `setType()` names, and one
310
+ * exactly the same ids stop the bot at startup. Patterns that both match an id rank segment by segment, left to
311
+ * right: at the first segment one spells out as literal text and the other leaves to a param, the literal one runs,
312
+ * so `profile/me/{section}` takes `profile/me/edit` from `profile/{userId}/edit`; between patterns that leaves tied,
313
+ * the narrower type at the first param where they differ. Two still tied are warned about as the bot starts, and the
314
+ * one listed first runs. A context menu handler receives the kind its builder's `setType()` names, and one
314
315
  * declaring the other kind fails to compile; when the compiler cannot tell the kind, `@Command` checks the parameter
315
316
  * type it emits as it applies. A subclass that re-declares an inherited handler on the same name or pattern takes its
316
317
  * own builder and options; on another it still answers the inherited one too, which the bot warns about as it
@@ -343,8 +344,8 @@ type TypedParamsAccept<N, T, P> = T extends CommandType ? string extends Pattern
343
344
  * @category Handlers
344
345
  * @see {@link CommandBuilder}
345
346
  * @see {@link route}
346
- * @see {@link https://meocord.dev/docs/4.1/slash-commands | Slash commands}
347
- * @see {@link https://meocord.dev/docs/4.1/components | Buttons, selects and modals}
347
+ * @see {@link https://meocord.dev/docs/4.2/slash-commands | Slash commands}
348
+ * @see {@link https://meocord.dev/docs/4.2/components | Buttons, selects and modals}
348
349
  */
349
350
  declare function Command<CBC extends BuildableCommandType, T extends CommandBuilderConstructor<CBC> | CommandType, N extends string | Route = string>(name: N, builderOrType: T): <P extends Record<string, any>, R>(target: object, propertyKey: string, _descriptor: (TypedPropertyDescriptor<Handles<CommandInteractionType<CBC, T>, [params: P], R>> | TypedPropertyDescriptor<Handles<CommandInteractionType<CBC, T>, [], R>> | TypedPropertyDescriptor<() => R>) & RouteAccepts<N, T, P> & TypedParamsAccept<N, T, P> & ChoicesAccept<N, T, P>) => void;
350
351
  /**
@@ -383,7 +384,7 @@ declare function Command<CBC extends BuildableCommandType, T extends CommandBuil
383
384
  * @group Decorators
384
385
  * @category Handlers
385
386
  * @see {@link Command}
386
- * @see {@link https://meocord.dev/docs/4.1/autocomplete | Autocomplete}
387
+ * @see {@link https://meocord.dev/docs/4.2/autocomplete | Autocomplete}
387
388
  */
388
389
  declare function Autocomplete<_R = unknown>(commandPath: string, optionName?: string): <P extends Record<string, any>, R>(target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<(interaction: AutocompleteInteraction, params: P) => R> | TypedPropertyDescriptor<(interaction: AutocompleteInteraction) => R> | TypedPropertyDescriptor<() => R>) => void;
389
390
 
@@ -419,7 +420,7 @@ declare function Autocomplete<_R = unknown>(commandPath: string, optionName?: st
419
420
  * @category Controllers
420
421
  * @see {@link Command}
421
422
  * @see {@link ControllerOptions}
422
- * @see {@link https://meocord.dev/docs/4.1/how-a-call-runs | How a call runs}
423
+ * @see {@link https://meocord.dev/docs/4.2/how-a-call-runs | How a call runs}
423
424
  */
424
425
  declare function Controller(options?: ControllerOptions): (target: abstract new (...args: any[]) => unknown, propertyKey?: string | symbol) => void;
425
426
 
@@ -449,7 +450,7 @@ declare function Controller(options?: ControllerOptions): (target: abstract new
449
450
  * @group Decorators
450
451
  * @category Handlers
451
452
  * @see {@link Once}
452
- * @see {@link https://meocord.dev/docs/4.1/gateway-events | Gateway events}
453
+ * @see {@link https://meocord.dev/docs/4.2/gateway-events | Gateway events}
453
454
  */
454
455
  declare function On<E extends keyof ClientEvents>(event: E): <F extends (...args: ClientEvents[E]) => unknown>(target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<F>) => void;
455
456
  /**
@@ -475,7 +476,7 @@ declare function On<E extends keyof ClientEvents>(event: E): <F extends (...args
475
476
  * @group Decorators
476
477
  * @category Handlers
477
478
  * @see {@link On}
478
- * @see {@link https://meocord.dev/docs/4.1/gateway-events | Gateway events}
479
+ * @see {@link https://meocord.dev/docs/4.2/gateway-events | Gateway events}
479
480
  */
480
481
  declare function Once<E extends keyof ClientEvents>(event: E): <F extends (...args: ClientEvents[E]) => unknown>(target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<F>) => void;
481
482
 
@@ -525,7 +526,7 @@ type CheckedEntry<E, Base extends abstract new (...args: any[]) => unknown> = E
525
526
  * @see {@link UseGuard}
526
527
  * @see {@link GuardDeniedError}
527
528
  * @see {@link ExecutionContext}
528
- * @see {@link https://meocord.dev/docs/4.1/guards | Guards}
529
+ * @see {@link https://meocord.dev/docs/4.2/guards | Guards}
529
530
  */
530
531
  declare function Guard(options?: GuardOptions): (target: any, propertyKey?: string | symbol) => void;
531
532
  /**
@@ -557,7 +558,7 @@ declare function Guard(options?: GuardOptions): (target: any, propertyKey?: stri
557
558
  * @see {@link Guard}
558
559
  * @see {@link GuardDeniedError}
559
560
  * @see {@link ExecutionContext}
560
- * @see {@link https://meocord.dev/docs/4.1/guards | Guards}
561
+ * @see {@link https://meocord.dev/docs/4.2/guards | Guards}
561
562
  */
562
563
  declare function UseGuard<const T extends readonly unknown[]>(...entries: {
563
564
  [K in keyof T]: CheckedEntry<T[K], new (...args: any[]) => GuardInterface>;
@@ -595,7 +596,7 @@ declare function UseGuard<const T extends readonly unknown[]>(...entries: {
595
596
  * @group Decorators
596
597
  * @category Pipeline stages
597
598
  * @see {@link UseInterceptor}
598
- * @see {@link https://meocord.dev/docs/4.1/interceptors | Interceptors}
599
+ * @see {@link https://meocord.dev/docs/4.2/interceptors | Interceptors}
599
600
  */
600
601
  declare function Interceptor(options?: InterceptorOptions): (target: new (...args: any[]) => InterceptorInterface, propertyKey?: string | symbol) => void;
601
602
  /**
@@ -627,7 +628,7 @@ declare function Interceptor(options?: InterceptorOptions): (target: new (...arg
627
628
  * @group Decorators
628
629
  * @category Pipeline stages
629
630
  * @see {@link Interceptor}
630
- * @see {@link https://meocord.dev/docs/4.1/interceptors | Interceptors}
631
+ * @see {@link https://meocord.dev/docs/4.2/interceptors | Interceptors}
631
632
  */
632
633
  declare function UseInterceptor<const T extends readonly unknown[]>(...interceptors: {
633
634
  [K in keyof T]: CheckedEntry<T[K], new (...args: any[]) => InterceptorInterface>;
@@ -660,7 +661,7 @@ declare function UseInterceptor<const T extends readonly unknown[]>(...intercept
660
661
  * @group Decorators
661
662
  * @category Pipeline stages
662
663
  * @see {@link UseFilter}
663
- * @see {@link https://meocord.dev/docs/4.1/exception-filters | Exception filters}
664
+ * @see {@link https://meocord.dev/docs/4.2/exception-filters | Exception filters}
664
665
  */
665
666
  declare function Catch(...errorTypes: (abstract new (...args: any[]) => unknown)[]): (target: new (...args: any[]) => ExceptionFilter<any>, propertyKey?: string | symbol) => void;
666
667
  /**
@@ -693,7 +694,7 @@ declare function Catch(...errorTypes: (abstract new (...args: any[]) => unknown)
693
694
  * @group Decorators
694
695
  * @category Pipeline stages
695
696
  * @see {@link Catch}
696
- * @see {@link https://meocord.dev/docs/4.1/exception-filters | Exception filters}
697
+ * @see {@link https://meocord.dev/docs/4.2/exception-filters | Exception filters}
697
698
  */
698
699
  declare function UseFilter<const T extends readonly unknown[]>(...filters: {
699
700
  [K in keyof T]: CheckedEntry<T[K], new (...args: any[]) => ExceptionFilter<any>>;
@@ -888,7 +889,7 @@ interface MeoCordOptions<G extends readonly unknown[] = readonly unknown[], I ex
888
889
  * @see {@link MeoCordOptions}
889
890
  * @see {@link MeoCordFactory}
890
891
  * @see {@link MeoCordConfig}
891
- * @see {@link https://meocord.dev/docs/4.1/configuration | Configuration}
892
+ * @see {@link https://meocord.dev/docs/4.2/configuration | Configuration}
892
893
  */
893
894
  declare function MeoCord<const G extends readonly unknown[] = [], const I extends readonly unknown[] = [], const F extends readonly unknown[] = []>(options: MeoCordOptions<G, I, F>): (target: any, propertyKey?: string | symbol) => void;
894
895
 
@@ -948,7 +949,7 @@ type AcceptsInput<P, Input> = [P] extends [NoInput] ? unknown : [Input] extends
948
949
  * @category Pipeline stages
949
950
  * @see {@link UsePipe}
950
951
  * @see {@link ValidationError}
951
- * @see {@link https://meocord.dev/docs/4.1/validation | Validation and pipes}
952
+ * @see {@link https://meocord.dev/docs/4.2/validation | Validation and pipes}
952
953
  */
953
954
  declare function Validate<S extends StandardSchemaV1, const Pipes extends ValidatePipes<S> = Record<never, never>>(schema: S, options?: ValidateOptions<Pipes>): <M extends Handler>(target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<M> & AcceptsInput<ParamsOf<M>, ValidatedInput<S, Pipes>>) => void;
954
955
  /** Allows the descriptor when the handler's params take the pipe's output at `key`. */
@@ -983,7 +984,7 @@ type AcceptsPiped<P, K extends string, Out> = [P] extends [NoInput] ? unknown :
983
984
  * @category Pipeline stages
984
985
  * @see {@link Pipe}
985
986
  * @see {@link Validate}
986
- * @see {@link https://meocord.dev/docs/4.1/validation | Validation and pipes}
987
+ * @see {@link https://meocord.dev/docs/4.2/validation | Validation and pipes}
987
988
  */
988
989
  declare function UsePipe<K extends string, const Pipes extends readonly [PipeEntryOf, ...PipeEntryOf[]]>(key: K, ...pipes: Pipes & {
989
990
  [I in keyof Pipes]: CheckedEntry<Pipes[I], new (...args: any[]) => PipeInterface>;
@@ -1012,7 +1013,7 @@ declare function UsePipe<K extends string, const Pipes extends readonly [PipeEnt
1012
1013
  * @group Decorators
1013
1014
  * @category Pipeline stages
1014
1015
  * @see {@link UsePipe}
1015
- * @see {@link https://meocord.dev/docs/4.1/validation | Validation and pipes}
1016
+ * @see {@link https://meocord.dev/docs/4.2/validation | Validation and pipes}
1016
1017
  */
1017
1018
  declare function Pipe(): (target: new (...args: any[]) => PipeInterface, propertyKey?: string | symbol) => void;
1018
1019
 
@@ -1044,6 +1045,7 @@ interface CooldownByDecorator<P> {
1044
1045
  * @param options - The limit, whose calls count together, and how to exempt or tell calls apart.
1045
1046
  * @throws Error when `seconds` is not from `0.001` to `4320000000000`, `uses` is not a whole number of at least 1,
1046
1047
  * `per` is not a scope or `by` is not a function, as the decorator applies; `CooldownError` to a call over the limit.
1048
+ * A `bypass` given but not a function, and a `seconds` that is not a number, are warned about as the decorator applies.
1047
1049
  *
1048
1050
  * @example
1049
1051
  * ```ts
@@ -1068,7 +1070,7 @@ interface CooldownByDecorator<P> {
1068
1070
  * @see {@link CooldownOptions}
1069
1071
  * @see {@link CooldownError}
1070
1072
  * @see {@link CooldownStore}
1071
- * @see {@link https://meocord.dev/docs/4.1/cooldowns | Cooldowns}
1073
+ * @see {@link https://meocord.dev/docs/4.2/cooldowns | Cooldowns}
1072
1074
  */
1073
1075
  declare function Cooldown(options: CooldownOptions & {
1074
1076
  by?: undefined;
@@ -1162,7 +1164,7 @@ interface DeferOptions {
1162
1164
  * @category Pipeline stages
1163
1165
  * @see {@link DeferOptions}
1164
1166
  * @see {@link respond}
1165
- * @see {@link https://meocord.dev/docs/4.1/defer | Deferring}
1167
+ * @see {@link https://meocord.dev/docs/4.2/defer | Deferring}
1166
1168
  */
1167
1169
  declare function Defer(options?: DeferOptions): MethodDecorator;
1168
1170
 
@@ -1189,7 +1191,7 @@ declare function Defer(options?: DeferOptions): MethodDecorator;
1189
1191
  * @category Params
1190
1192
  * @see {@link Service}
1191
1193
  * @see {@link createToken}
1192
- * @see {@link https://meocord.dev/docs/4.1/services | Services}
1194
+ * @see {@link https://meocord.dev/docs/4.2/services | Services}
1193
1195
  */
1194
1196
  declare function Inject(token: ProviderToken): (target: object, propertyKey: string | symbol | undefined, parameterIndex: number) => void;
1195
1197
 
@@ -1224,7 +1226,7 @@ declare function Inject(token: ProviderToken): (target: object, propertyKey: str
1224
1226
  * @pipeline observers-settled once the call has settled and been answered, however it ended
1225
1227
  * @group Decorators
1226
1228
  * @category Pipeline stages
1227
- * @see {@link https://meocord.dev/docs/4.1/observers | Observers}
1229
+ * @see {@link https://meocord.dev/docs/4.2/observers | Observers}
1228
1230
  */
1229
1231
  declare function Observer(options?: ObserverOptions): (target: new (...args: any[]) => DispatchObserver, propertyKey?: string | symbol) => void;
1230
1232
 
@@ -32,7 +32,7 @@ import '@rsbuild/core';
32
32
  * @group Decorators
33
33
  * @category App
34
34
  * @see {@link Inject}
35
- * @see {@link https://meocord.dev/docs/4.1/services | Services}
35
+ * @see {@link https://meocord.dev/docs/4.2/services | Services}
36
36
  */
37
37
  declare function Service<T>(): (target: new (...args: any[]) => T, propertyKey?: string | symbol) => void;
38
38
 
@@ -63,7 +63,7 @@ declare function Service<T>(): (target: new (...args: any[]) => T, propertyKey?:
63
63
  * @group Decorators
64
64
  * @category Handlers
65
65
  * @see {@link Command}
66
- * @see {@link https://meocord.dev/docs/4.1/slash-commands | Slash commands}
66
+ * @see {@link https://meocord.dev/docs/4.2/slash-commands | Slash commands}
67
67
  */
68
68
  declare function CommandBuilder<T extends BuildableCommandType>(commandType: T, options?: CommandBuilderOptions): (target: new () => CommandBuilderBase<T>, propertyKey?: string | symbol) => void;
69
69
 
@@ -141,7 +141,7 @@ type ParamsFit<P, Given> = [Given] extends [Unpiped<P>] ? unknown : [Misfits<P,
141
141
  * @group Decorators
142
142
  * @category Handlers
143
143
  * @see {@link ReactionHandler}
144
- * @see {@link https://meocord.dev/docs/4.1/message-commands | Message commands}
144
+ * @see {@link https://meocord.dev/docs/4.2/message-commands | Message commands}
145
145
  */
146
146
  declare function MessageHandler<T extends OmitPartialGroupDMChannel<Message<boolean>>, R>(): (target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<(message: T) => R> | TypedPropertyDescriptor<() => R>) => void;
147
147
  /**
@@ -179,7 +179,7 @@ declare function MessageHandler<T extends OmitPartialGroupDMChannel<Message<bool
179
179
  * @group Decorators
180
180
  * @category Handlers
181
181
  * @see {@link ParamsOf}
182
- * @see {@link https://meocord.dev/docs/4.1/message-commands | Message commands}
182
+ * @see {@link https://meocord.dev/docs/4.2/message-commands | Message commands}
183
183
  */
184
184
  declare function MessageHandler<T extends OmitPartialGroupDMChannel<Message<boolean>>, R, const Pattern extends string = string>(pattern: Pattern, options?: MessageHandlerOptions): PatternedMessageHandlerDecorator<T, R, Pattern>;
185
185
  type ReactionHandlerDecorator<T extends MessageReaction | PartialMessageReaction, R> = (target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<(reaction: T, options: ReactionEvent) => R> | TypedPropertyDescriptor<(reaction: T) => R> | TypedPropertyDescriptor<() => R>) => void;
@@ -215,7 +215,7 @@ type ReactionHandlerDecorator<T extends MessageReaction | PartialMessageReaction
215
215
  * @group Decorators
216
216
  * @category Handlers
217
217
  * @see {@link ReactionEvent}
218
- * @see {@link https://meocord.dev/docs/4.1/reactions | Reactions}
218
+ * @see {@link https://meocord.dev/docs/4.2/reactions | Reactions}
219
219
  */
220
220
  declare function ReactionHandler<T extends MessageReaction | PartialMessageReaction, R>(emoji?: string, settings?: ReactionHandlerSettings): ReactionHandlerDecorator<T, R>;
221
221
  /**
@@ -307,10 +307,11 @@ type TypedParamsAccept<N, T, P> = T extends CommandType ? string extends Pattern
307
307
  * the keys the handler's params require are checked against the pattern or route, a typed segment's value against
308
308
  * its type, and a select menu's choices, such as `values: string[]`, against what discord.js gives; a key a pipe
309
309
  * produces is declared `Piped<T>`, and left to the pipe. Two component handlers of one type whose patterns match
310
- * exactly the same ids stop the bot at startup; patterns that only overlap are warned about, naming the one that
311
- * runs: the more specific, or between equally specific ones, the one listed first. In the next major version (5.0),
312
- * the one that spells out the first segment where two equally specific patterns differ runs instead, and the warning
313
- * names the pairs that changes. A context menu handler receives the kind its builder's `setType()` names, and one
310
+ * exactly the same ids stop the bot at startup. Patterns that both match an id rank segment by segment, left to
311
+ * right: at the first segment one spells out as literal text and the other leaves to a param, the literal one runs,
312
+ * so `profile/me/{section}` takes `profile/me/edit` from `profile/{userId}/edit`; between patterns that leaves tied,
313
+ * the narrower type at the first param where they differ. Two still tied are warned about as the bot starts, and the
314
+ * one listed first runs. A context menu handler receives the kind its builder's `setType()` names, and one
314
315
  * declaring the other kind fails to compile; when the compiler cannot tell the kind, `@Command` checks the parameter
315
316
  * type it emits as it applies. A subclass that re-declares an inherited handler on the same name or pattern takes its
316
317
  * own builder and options; on another it still answers the inherited one too, which the bot warns about as it
@@ -343,8 +344,8 @@ type TypedParamsAccept<N, T, P> = T extends CommandType ? string extends Pattern
343
344
  * @category Handlers
344
345
  * @see {@link CommandBuilder}
345
346
  * @see {@link route}
346
- * @see {@link https://meocord.dev/docs/4.1/slash-commands | Slash commands}
347
- * @see {@link https://meocord.dev/docs/4.1/components | Buttons, selects and modals}
347
+ * @see {@link https://meocord.dev/docs/4.2/slash-commands | Slash commands}
348
+ * @see {@link https://meocord.dev/docs/4.2/components | Buttons, selects and modals}
348
349
  */
349
350
  declare function Command<CBC extends BuildableCommandType, T extends CommandBuilderConstructor<CBC> | CommandType, N extends string | Route = string>(name: N, builderOrType: T): <P extends Record<string, any>, R>(target: object, propertyKey: string, _descriptor: (TypedPropertyDescriptor<Handles<CommandInteractionType<CBC, T>, [params: P], R>> | TypedPropertyDescriptor<Handles<CommandInteractionType<CBC, T>, [], R>> | TypedPropertyDescriptor<() => R>) & RouteAccepts<N, T, P> & TypedParamsAccept<N, T, P> & ChoicesAccept<N, T, P>) => void;
350
351
  /**
@@ -383,7 +384,7 @@ declare function Command<CBC extends BuildableCommandType, T extends CommandBuil
383
384
  * @group Decorators
384
385
  * @category Handlers
385
386
  * @see {@link Command}
386
- * @see {@link https://meocord.dev/docs/4.1/autocomplete | Autocomplete}
387
+ * @see {@link https://meocord.dev/docs/4.2/autocomplete | Autocomplete}
387
388
  */
388
389
  declare function Autocomplete<_R = unknown>(commandPath: string, optionName?: string): <P extends Record<string, any>, R>(target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<(interaction: AutocompleteInteraction, params: P) => R> | TypedPropertyDescriptor<(interaction: AutocompleteInteraction) => R> | TypedPropertyDescriptor<() => R>) => void;
389
390
 
@@ -419,7 +420,7 @@ declare function Autocomplete<_R = unknown>(commandPath: string, optionName?: st
419
420
  * @category Controllers
420
421
  * @see {@link Command}
421
422
  * @see {@link ControllerOptions}
422
- * @see {@link https://meocord.dev/docs/4.1/how-a-call-runs | How a call runs}
423
+ * @see {@link https://meocord.dev/docs/4.2/how-a-call-runs | How a call runs}
423
424
  */
424
425
  declare function Controller(options?: ControllerOptions): (target: abstract new (...args: any[]) => unknown, propertyKey?: string | symbol) => void;
425
426
 
@@ -449,7 +450,7 @@ declare function Controller(options?: ControllerOptions): (target: abstract new
449
450
  * @group Decorators
450
451
  * @category Handlers
451
452
  * @see {@link Once}
452
- * @see {@link https://meocord.dev/docs/4.1/gateway-events | Gateway events}
453
+ * @see {@link https://meocord.dev/docs/4.2/gateway-events | Gateway events}
453
454
  */
454
455
  declare function On<E extends keyof ClientEvents>(event: E): <F extends (...args: ClientEvents[E]) => unknown>(target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<F>) => void;
455
456
  /**
@@ -475,7 +476,7 @@ declare function On<E extends keyof ClientEvents>(event: E): <F extends (...args
475
476
  * @group Decorators
476
477
  * @category Handlers
477
478
  * @see {@link On}
478
- * @see {@link https://meocord.dev/docs/4.1/gateway-events | Gateway events}
479
+ * @see {@link https://meocord.dev/docs/4.2/gateway-events | Gateway events}
479
480
  */
480
481
  declare function Once<E extends keyof ClientEvents>(event: E): <F extends (...args: ClientEvents[E]) => unknown>(target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<F>) => void;
481
482
 
@@ -525,7 +526,7 @@ type CheckedEntry<E, Base extends abstract new (...args: any[]) => unknown> = E
525
526
  * @see {@link UseGuard}
526
527
  * @see {@link GuardDeniedError}
527
528
  * @see {@link ExecutionContext}
528
- * @see {@link https://meocord.dev/docs/4.1/guards | Guards}
529
+ * @see {@link https://meocord.dev/docs/4.2/guards | Guards}
529
530
  */
530
531
  declare function Guard(options?: GuardOptions): (target: any, propertyKey?: string | symbol) => void;
531
532
  /**
@@ -557,7 +558,7 @@ declare function Guard(options?: GuardOptions): (target: any, propertyKey?: stri
557
558
  * @see {@link Guard}
558
559
  * @see {@link GuardDeniedError}
559
560
  * @see {@link ExecutionContext}
560
- * @see {@link https://meocord.dev/docs/4.1/guards | Guards}
561
+ * @see {@link https://meocord.dev/docs/4.2/guards | Guards}
561
562
  */
562
563
  declare function UseGuard<const T extends readonly unknown[]>(...entries: {
563
564
  [K in keyof T]: CheckedEntry<T[K], new (...args: any[]) => GuardInterface>;
@@ -595,7 +596,7 @@ declare function UseGuard<const T extends readonly unknown[]>(...entries: {
595
596
  * @group Decorators
596
597
  * @category Pipeline stages
597
598
  * @see {@link UseInterceptor}
598
- * @see {@link https://meocord.dev/docs/4.1/interceptors | Interceptors}
599
+ * @see {@link https://meocord.dev/docs/4.2/interceptors | Interceptors}
599
600
  */
600
601
  declare function Interceptor(options?: InterceptorOptions): (target: new (...args: any[]) => InterceptorInterface, propertyKey?: string | symbol) => void;
601
602
  /**
@@ -627,7 +628,7 @@ declare function Interceptor(options?: InterceptorOptions): (target: new (...arg
627
628
  * @group Decorators
628
629
  * @category Pipeline stages
629
630
  * @see {@link Interceptor}
630
- * @see {@link https://meocord.dev/docs/4.1/interceptors | Interceptors}
631
+ * @see {@link https://meocord.dev/docs/4.2/interceptors | Interceptors}
631
632
  */
632
633
  declare function UseInterceptor<const T extends readonly unknown[]>(...interceptors: {
633
634
  [K in keyof T]: CheckedEntry<T[K], new (...args: any[]) => InterceptorInterface>;
@@ -660,7 +661,7 @@ declare function UseInterceptor<const T extends readonly unknown[]>(...intercept
660
661
  * @group Decorators
661
662
  * @category Pipeline stages
662
663
  * @see {@link UseFilter}
663
- * @see {@link https://meocord.dev/docs/4.1/exception-filters | Exception filters}
664
+ * @see {@link https://meocord.dev/docs/4.2/exception-filters | Exception filters}
664
665
  */
665
666
  declare function Catch(...errorTypes: (abstract new (...args: any[]) => unknown)[]): (target: new (...args: any[]) => ExceptionFilter<any>, propertyKey?: string | symbol) => void;
666
667
  /**
@@ -693,7 +694,7 @@ declare function Catch(...errorTypes: (abstract new (...args: any[]) => unknown)
693
694
  * @group Decorators
694
695
  * @category Pipeline stages
695
696
  * @see {@link Catch}
696
- * @see {@link https://meocord.dev/docs/4.1/exception-filters | Exception filters}
697
+ * @see {@link https://meocord.dev/docs/4.2/exception-filters | Exception filters}
697
698
  */
698
699
  declare function UseFilter<const T extends readonly unknown[]>(...filters: {
699
700
  [K in keyof T]: CheckedEntry<T[K], new (...args: any[]) => ExceptionFilter<any>>;
@@ -888,7 +889,7 @@ interface MeoCordOptions<G extends readonly unknown[] = readonly unknown[], I ex
888
889
  * @see {@link MeoCordOptions}
889
890
  * @see {@link MeoCordFactory}
890
891
  * @see {@link MeoCordConfig}
891
- * @see {@link https://meocord.dev/docs/4.1/configuration | Configuration}
892
+ * @see {@link https://meocord.dev/docs/4.2/configuration | Configuration}
892
893
  */
893
894
  declare function MeoCord<const G extends readonly unknown[] = [], const I extends readonly unknown[] = [], const F extends readonly unknown[] = []>(options: MeoCordOptions<G, I, F>): (target: any, propertyKey?: string | symbol) => void;
894
895
 
@@ -948,7 +949,7 @@ type AcceptsInput<P, Input> = [P] extends [NoInput] ? unknown : [Input] extends
948
949
  * @category Pipeline stages
949
950
  * @see {@link UsePipe}
950
951
  * @see {@link ValidationError}
951
- * @see {@link https://meocord.dev/docs/4.1/validation | Validation and pipes}
952
+ * @see {@link https://meocord.dev/docs/4.2/validation | Validation and pipes}
952
953
  */
953
954
  declare function Validate<S extends StandardSchemaV1, const Pipes extends ValidatePipes<S> = Record<never, never>>(schema: S, options?: ValidateOptions<Pipes>): <M extends Handler>(target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<M> & AcceptsInput<ParamsOf<M>, ValidatedInput<S, Pipes>>) => void;
954
955
  /** Allows the descriptor when the handler's params take the pipe's output at `key`. */
@@ -983,7 +984,7 @@ type AcceptsPiped<P, K extends string, Out> = [P] extends [NoInput] ? unknown :
983
984
  * @category Pipeline stages
984
985
  * @see {@link Pipe}
985
986
  * @see {@link Validate}
986
- * @see {@link https://meocord.dev/docs/4.1/validation | Validation and pipes}
987
+ * @see {@link https://meocord.dev/docs/4.2/validation | Validation and pipes}
987
988
  */
988
989
  declare function UsePipe<K extends string, const Pipes extends readonly [PipeEntryOf, ...PipeEntryOf[]]>(key: K, ...pipes: Pipes & {
989
990
  [I in keyof Pipes]: CheckedEntry<Pipes[I], new (...args: any[]) => PipeInterface>;
@@ -1012,7 +1013,7 @@ declare function UsePipe<K extends string, const Pipes extends readonly [PipeEnt
1012
1013
  * @group Decorators
1013
1014
  * @category Pipeline stages
1014
1015
  * @see {@link UsePipe}
1015
- * @see {@link https://meocord.dev/docs/4.1/validation | Validation and pipes}
1016
+ * @see {@link https://meocord.dev/docs/4.2/validation | Validation and pipes}
1016
1017
  */
1017
1018
  declare function Pipe(): (target: new (...args: any[]) => PipeInterface, propertyKey?: string | symbol) => void;
1018
1019
 
@@ -1044,6 +1045,7 @@ interface CooldownByDecorator<P> {
1044
1045
  * @param options - The limit, whose calls count together, and how to exempt or tell calls apart.
1045
1046
  * @throws Error when `seconds` is not from `0.001` to `4320000000000`, `uses` is not a whole number of at least 1,
1046
1047
  * `per` is not a scope or `by` is not a function, as the decorator applies; `CooldownError` to a call over the limit.
1048
+ * A `bypass` given but not a function, and a `seconds` that is not a number, are warned about as the decorator applies.
1047
1049
  *
1048
1050
  * @example
1049
1051
  * ```ts
@@ -1068,7 +1070,7 @@ interface CooldownByDecorator<P> {
1068
1070
  * @see {@link CooldownOptions}
1069
1071
  * @see {@link CooldownError}
1070
1072
  * @see {@link CooldownStore}
1071
- * @see {@link https://meocord.dev/docs/4.1/cooldowns | Cooldowns}
1073
+ * @see {@link https://meocord.dev/docs/4.2/cooldowns | Cooldowns}
1072
1074
  */
1073
1075
  declare function Cooldown(options: CooldownOptions & {
1074
1076
  by?: undefined;
@@ -1162,7 +1164,7 @@ interface DeferOptions {
1162
1164
  * @category Pipeline stages
1163
1165
  * @see {@link DeferOptions}
1164
1166
  * @see {@link respond}
1165
- * @see {@link https://meocord.dev/docs/4.1/defer | Deferring}
1167
+ * @see {@link https://meocord.dev/docs/4.2/defer | Deferring}
1166
1168
  */
1167
1169
  declare function Defer(options?: DeferOptions): MethodDecorator;
1168
1170
 
@@ -1189,7 +1191,7 @@ declare function Defer(options?: DeferOptions): MethodDecorator;
1189
1191
  * @category Params
1190
1192
  * @see {@link Service}
1191
1193
  * @see {@link createToken}
1192
- * @see {@link https://meocord.dev/docs/4.1/services | Services}
1194
+ * @see {@link https://meocord.dev/docs/4.2/services | Services}
1193
1195
  */
1194
1196
  declare function Inject(token: ProviderToken): (target: object, propertyKey: string | symbol | undefined, parameterIndex: number) => void;
1195
1197
 
@@ -1224,7 +1226,7 @@ declare function Inject(token: ProviderToken): (target: object, propertyKey: str
1224
1226
  * @pipeline observers-settled once the call has settled and been answered, however it ended
1225
1227
  * @group Decorators
1226
1228
  * @category Pipeline stages
1227
- * @see {@link https://meocord.dev/docs/4.1/observers | Observers}
1229
+ * @see {@link https://meocord.dev/docs/4.2/observers | Observers}
1228
1230
  */
1229
1231
  declare function Observer(options?: ObserverOptions): (target: new (...args: any[]) => DispatchObserver, propertyKey?: string | symbol) => void;
1230
1232