@seedcord/core 0.3.0 → 0.4.0

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 (39) hide show
  1. package/dist/{Bus-DcuUtOEL.mjs → Bus-BVwmKc-A.mjs} +51 -17
  2. package/dist/Bus-BVwmKc-A.mjs.map +1 -0
  3. package/dist/Pluggable-Cf5-WWmW.mjs +280 -0
  4. package/dist/Pluggable-Cf5-WWmW.mjs.map +1 -0
  5. package/dist/Pluggable-DFNUIlJM.d.mts +148 -0
  6. package/dist/{Plugin-Bkeqcjy6.mjs → Plugin-C6oMqWf8.mjs} +32 -7
  7. package/dist/Plugin-C6oMqWf8.mjs.map +1 -0
  8. package/dist/Plugin-CG9pWbPF.d.mts +193 -0
  9. package/dist/{cursor-DKKKUa_7.d.mts → cursor-BcRfmTSo.d.mts} +27 -140
  10. package/dist/{cursor-Cv1Ui6gZ.mjs → cursor-GBUYz3jk.mjs} +377 -176
  11. package/dist/cursor-GBUYz3jk.mjs.map +1 -0
  12. package/dist/{index-uBwh8r7x.d.mts → index-ZzdQafFv.d.mts} +2 -2
  13. package/dist/index.d.mts +132 -19
  14. package/dist/index.mjs +186 -19
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/internal.index.d.mts +11 -4
  17. package/dist/internal.index.mjs +8 -455
  18. package/dist/internal.index.mjs.map +1 -1
  19. package/dist/node-internal.index.d.mts +10 -146
  20. package/dist/node-internal.index.mjs +43 -470
  21. package/dist/node-internal.index.mjs.map +1 -1
  22. package/dist/node.index.d.mts +2 -0
  23. package/dist/node.index.mjs +256 -0
  24. package/dist/node.index.mjs.map +1 -0
  25. package/dist/{Plugin-B6iRzm3g.d.mts → phases-F8yvPd60.d.mts} +111 -207
  26. package/dist/plugin.index.d.mts +2 -2
  27. package/dist/plugin.index.mjs +1 -1
  28. package/dist/publishDefault-D826XXDQ.mjs +14 -0
  29. package/dist/publishDefault-D826XXDQ.mjs.map +1 -0
  30. package/dist/{slashRouteLeaves-De1SxqnX.mjs → slashRouteLeaves-CbYRwqMY.mjs} +10 -2
  31. package/dist/slashRouteLeaves-CbYRwqMY.mjs.map +1 -0
  32. package/dist/subscribers-CGGQkUfM.mjs +139 -0
  33. package/dist/subscribers-CGGQkUfM.mjs.map +1 -0
  34. package/package.json +14 -8
  35. package/dist/Bus-DcuUtOEL.mjs.map +0 -1
  36. package/dist/Plugin-Bkeqcjy6.mjs.map +0 -1
  37. package/dist/cursor-Cv1Ui6gZ.mjs.map +0 -1
  38. package/dist/slashRouteLeaves-De1SxqnX.mjs.map +0 -1
  39. package/dist/subscribers-DuHg-bGT.mjs +0 -3
@@ -1,9 +1,9 @@
1
- import { n as CommandBuilder, r as DeployResult, t as Constructor } from "./basic-Dng__Ena.mjs";
2
- import { H as InteractionRoutes, O as Notice, g as CoreBase, j as AckState, k as ReplyTelemetry } from "./Plugin-B6iRzm3g.mjs";
1
+ import { t as Constructor } from "./basic-Dng__Ena.mjs";
2
+ import { b as Notice, r as CoreBase, z as InteractionRoutes } from "./phases-F8yvPd60.mjs";
3
3
  import "reflect-metadata";
4
4
  import { ActionRowBuilder, ButtonBuilder, ChannelSelectMenuBuilder, CheckboxBuilder, CheckboxGroupBuilder, CheckboxGroupOptionBuilder, ContainerBuilder, ContextMenuCommandBuilder, EmbedBuilder, FileBuilder, FileUploadBuilder, LabelBuilder, MediaGalleryBuilder, MentionableSelectMenuBuilder, ModalBuilder, RadioGroupBuilder, RadioGroupOptionBuilder, RoleSelectMenuBuilder, SectionBuilder, SeparatorBuilder, SlashCommandBuilder, SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder, StringSelectMenuBuilder, StringSelectMenuOptionBuilder, TextDisplayBuilder, TextInputBuilder, UserSelectMenuBuilder } from "@discordjs/builders";
5
- import { APIMessageTopLevelComponent, APIModalInteractionResponseCallbackData, ApplicationCommandType, ChannelType, Snowflake } from "discord-api-types/v10";
6
- import { DeferOpts, ReplyResponse, SendOpts } from "@seedcord/types";
5
+ import { APIMessageTopLevelComponent, ApplicationCommandType, ChannelType, Snowflake } from "discord-api-types/v10";
6
+ import { ReplyResponse } from "@seedcord/types";
7
7
  //#region src/registries/ContextMenuRegistry.d.ts
8
8
  /** The two context-menu command kinds Discord defines. */
9
9
  type ContextMenuKind = ApplicationCommandType.User | ApplicationCommandType.Message;
@@ -95,73 +95,6 @@ type CacheOf<Route extends keyof SlashRegistry> = [Route] extends [never] ? unde
95
95
  cache: infer Cache;
96
96
  } ? Cache : undefined;
97
97
  //#endregion
98
- //#region src/commands/CommandInjector.d.ts
99
- /** What {@link Commands} resolves to for one slash route. */
100
- interface CommandInfo {
101
- /** The clickable `</config set:id>` mention. A route whose id did not resolve falls back to `/config set`. */
102
- readonly mention: string;
103
- /** The deployed command id. Absent when the command deployed to two or more guilds. */
104
- readonly id?: string;
105
- /** The full route, e.g. `config/set`. */
106
- readonly route: string;
107
- /** The route's own description, taken from the subcommand for a nested route. */
108
- readonly description: string;
109
- }
110
- /** Each registered slash route mapped to its deployed command. */
111
- type InjectedCommandMap = { [K in keyof SlashRegistry]: CommandInfo; };
112
- /**
113
- * The bot's deployed slash commands, keyed by {@link SlashRegistry}. Filled by
114
- * {@link CommandInjector} after each deploy, and a read before that throws.
115
- *
116
- * @example
117
- * ```ts
118
- * import { Commands } from '@seedcord/gateway';
119
- *
120
- * await this.reply(`Try ${Commands['config/set'].mention}`);
121
- *
122
- * // a help listing
123
- * const lines = Object.values(Commands).map((c) => `${c.mention} ${c.description}`);
124
- * ```
125
- */
126
- declare const Commands: InjectedCommandMap;
127
- /** What {@link ContextMenus} resolves to for one context-menu command. */
128
- interface ContextMenuInfo {
129
- /** The deployed command id. Absent when the command deployed to two or more guilds. */
130
- readonly id?: string;
131
- /** The name shown in Discord's right-click menu. */
132
- readonly name: string;
133
- readonly kind: ContextMenuKind;
134
- }
135
- /** Deployed context-menu commands, split by kind because Discord scopes name uniqueness per command type. */
136
- interface InjectedContextMenuMap {
137
- readonly user: { [K in keyof UserContextMenuRegistry]: ContextMenuInfo; };
138
- readonly message: { [K in keyof MessageContextMenuRegistry]: ContextMenuInfo; };
139
- }
140
- /**
141
- * The bot's deployed context-menu commands. Filled by {@link CommandInjector} after each deploy, and a read
142
- * before that throws.
143
- *
144
- * @example
145
- * ```ts
146
- * import { ContextMenus } from '@seedcord/gateway';
147
- *
148
- * const id = ContextMenus.user['View Profile'].id;
149
- * ```
150
- */
151
- declare const ContextMenus: InjectedContextMenuMap;
152
- /** @internal */
153
- declare class CommandInjector {
154
- private readonly logger;
155
- inject(deploy: DeployResult, all: readonly CommandBuilder[]): void;
156
- private injectMenus;
157
- private indexByKey;
158
- private indexGuilds;
159
- private resolveId;
160
- private toMention;
161
- private toPlain;
162
- private clear;
163
- }
164
- //#endregion
165
98
  //#region src/components/builderTypes.d.ts
166
99
  /**
167
100
  * Available Discord.js builder classes for use with BuilderComponent for commands, embeds, modals, etc.
@@ -430,6 +363,8 @@ interface CustomIdField<Decoded> {
430
363
  readonly max?: number;
431
364
  /** The allowed values, for a oneOf field. */
432
365
  readonly choices?: readonly string[];
366
+ /** Whether this field also carries null. */
367
+ readonly nullable?: boolean;
433
368
  /** Phantom only, carries the decoded type and is never set at runtime. */
434
369
  readonly decoded?: Decoded;
435
370
  }
@@ -447,6 +382,16 @@ type CustomIdShape = Record<string, CustomIdField<unknown>>;
447
382
  type DecodedParams<Shape extends CustomIdShape> = { [Name in keyof Shape]: Shape[Name] extends CustomIdField<infer Decoded> ? Decoded : never; };
448
383
  //#endregion
449
384
  //#region src/customId/CustomId.d.ts
385
+ /** Per-field options every {@link CustomId} chain method takes. */
386
+ interface FieldOptions<Nullable extends boolean = boolean> {
387
+ /**
388
+ * Whether the field also carries null. A nullable field costs one extra slot on the wire.
389
+ *
390
+ * @defaultValue `false`
391
+ */
392
+ nullable?: Nullable;
393
+ }
394
+ type Nullish<Decoded, Nullable extends boolean> = Nullable extends true ? Decoded | null : Decoded;
450
395
  /** Strip the layout hash off the routeKey to recover the stable prefix the controller routes by. @internal */
451
396
  declare function prefixOf(wire: string): string;
452
397
  /**
@@ -488,7 +433,7 @@ declare class CustomId<Prefix extends string, Shape extends CustomIdShape = {}>
488
433
  * new CustomId('ban').snowflake('userId');
489
434
  * ```
490
435
  */
491
- snowflake<Name extends string>(name: Name): CustomId<Prefix, Shape & Record<Name, CustomIdField<Snowflake>>>;
436
+ snowflake<Name extends string, const Nullable extends boolean = false>(name: Name, opts?: FieldOptions<Nullable>): CustomId<Prefix, Shape & Record<Name, CustomIdField<Nullish<Snowflake, Nullable>>>>;
492
437
  /**
493
438
  * Add a UUID field, decoded as a lowercase uuid string.
494
439
  *
@@ -497,7 +442,7 @@ declare class CustomId<Prefix extends string, Shape extends CustomIdShape = {}>
497
442
  * new CustomId('ticket').uuid('ticketId');
498
443
  * ```
499
444
  */
500
- uuid<Name extends string>(name: Name): CustomId<Prefix, Shape & Record<Name, CustomIdField<string>>>;
445
+ uuid<Name extends string, const Nullable extends boolean = false>(name: Name, opts?: FieldOptions<Nullable>): CustomId<Prefix, Shape & Record<Name, CustomIdField<Nullish<string, Nullable>>>>;
501
446
  /**
502
447
  * Add an integer field with no bounds, for a value up to 2^53.
503
448
  *
@@ -506,7 +451,7 @@ declare class CustomId<Prefix extends string, Shape extends CustomIdShape = {}>
506
451
  * new CustomId('shop').int('amount');
507
452
  * ```
508
453
  */
509
- int<Name extends string>(name: Name): CustomId<Prefix, Shape & Record<Name, CustomIdField<number>>>;
454
+ int<Name extends string, const Nullable extends boolean = false>(name: Name, opts?: FieldOptions<Nullable>): CustomId<Prefix, Shape & Record<Name, CustomIdField<Nullish<number, Nullable>>>>;
510
455
  /**
511
456
  * Add an integer field bounded by min and max, so it packs into fewer characters on the wire.
512
457
  *
@@ -515,7 +460,7 @@ declare class CustomId<Prefix extends string, Shape extends CustomIdShape = {}>
515
460
  * new CustomId('paginate').int('page', 1, 50);
516
461
  * ```
517
462
  */
518
- int<Name extends string>(name: Name, min: number, max: number): CustomId<Prefix, Shape & Record<Name, CustomIdField<number>>>;
463
+ int<Name extends string, const Nullable extends boolean = false>(name: Name, min: number, max: number, opts?: FieldOptions<Nullable>): CustomId<Prefix, Shape & Record<Name, CustomIdField<Nullish<number, Nullable>>>>;
519
464
  /**
520
465
  * Add a boolean flag.
521
466
  *
@@ -524,7 +469,7 @@ declare class CustomId<Prefix extends string, Shape extends CustomIdShape = {}>
524
469
  * new CustomId('settings').bool('silent');
525
470
  * ```
526
471
  */
527
- bool<Name extends string>(name: Name): CustomId<Prefix, Shape & Record<Name, CustomIdField<boolean>>>;
472
+ bool<Name extends string, const Nullable extends boolean = false>(name: Name, opts?: FieldOptions<Nullable>): CustomId<Prefix, Shape & Record<Name, CustomIdField<Nullish<boolean, Nullable>>>>;
528
473
  /**
529
474
  * Add a field that is one value from a fixed list, decoded as the literal union. No `as const` needed.
530
475
  *
@@ -533,7 +478,7 @@ declare class CustomId<Prefix extends string, Shape extends CustomIdShape = {}>
533
478
  * new CustomId('poll').oneOf('choice', ['yes', 'no', 'abstain']);
534
479
  * ```
535
480
  */
536
- oneOf<Name extends string, const Choices extends NonEmptyTuple<string>>(name: Name, choices: Choices): CustomId<Prefix, Shape & Record<Name, CustomIdField<Choices[number]>>>;
481
+ oneOf<Name extends string, const Choices extends NonEmptyTuple<string>, const Nullable extends boolean = false>(name: Name, choices: Choices, opts?: FieldOptions<Nullable>): CustomId<Prefix, Shape & Record<Name, CustomIdField<Nullish<Choices[number], Nullable>>>>;
537
482
  /**
538
483
  * Add a free short text field. Avoid it where possible. It cannot be packed, which makes it the most
539
484
  * expensive field on the wire.
@@ -543,7 +488,7 @@ declare class CustomId<Prefix extends string, Shape extends CustomIdShape = {}>
543
488
  * new CustomId('note').str('message');
544
489
  * ```
545
490
  */
546
- str<Name extends string>(name: Name): CustomId<Prefix, Shape & Record<Name, CustomIdField<string>>>;
491
+ str<Name extends string, const Nullable extends boolean = false>(name: Name, opts?: FieldOptions<Nullable>): CustomId<Prefix, Shape & Record<Name, CustomIdField<Nullish<string, Nullable>>>>;
547
492
  /**
548
493
  * Mint a wire string from values. Throws if a value is out of its field's range or the wire is over 100 chars.
549
494
  *
@@ -615,65 +560,6 @@ interface SerializedReply<TNative = never> {
615
560
  }
616
561
  declare function serializeReply<TNative>(response: ReplyResponse<TNative> | string, routeId: string): SerializedReply<TNative>;
617
562
  //#endregion
618
- //#region src/reply/BaseReplySender.d.ts
619
- /** The shape djs modal builders emit from `toJSON()`. */
620
- interface ModalLike {
621
- toJSON(): APIModalInteractionResponseCallbackData;
622
- }
623
- /**
624
- * Tracks acknowledgement state and throws a translated `SeedcordError` on an illegal verb before any
625
- * transport call. Every verb runs the legality check, calls the transport's wire writer, then updates
626
- * the state and the ack trace. Each transport binds `TMessage` to its own created-message type and
627
- * supplies the writers.
628
- */
629
- declare abstract class BaseReplySender<TMessage extends {
630
- id: string;
631
- }, TNative = never> {
632
- protected readonly routeId: string;
633
- private readonly telemetry;
634
- private state;
635
- private readonly sent;
636
- private ackedBy?;
637
- protected constructor(routeId: string, telemetry: ReplyTelemetry, initialState?: AckState);
638
- private report;
639
- private attempt;
640
- reply(response: ReplyResponse<TNative> | string, opts?: SendOpts): Promise<TMessage>;
641
- defer(opts?: DeferOpts): Promise<void>;
642
- deferUpdate(): Promise<void>;
643
- /**
644
- * After a deferUpdate the state stays deferred-update. Calling this again rewrites. The returned message
645
- * is the source message, editable only through a bare `update` or `edit`. A targeted `edit` or `delete`
646
- * of it throws the foreign-target error.
647
- */
648
- update(response: ReplyResponse<TNative> | string): Promise<TMessage>;
649
- followUp(response: ReplyResponse<TNative> | string, opts?: SendOpts): Promise<TMessage>;
650
- edit(response: ReplyResponse<TNative> | string): Promise<TMessage>;
651
- edit(target: TMessage, response: ReplyResponse<TNative> | string): Promise<TMessage>;
652
- delete(): Promise<void>;
653
- delete(target: TMessage): Promise<void>;
654
- /** Routes to the verb the current ack state permits. Every state has a route, so the illegal-ack throw is unreachable. */
655
- send(response: ReplyResponse<TNative> | string, opts?: SendOpts): Promise<TMessage>;
656
- /** Must be the initial response. */
657
- showModal(modal: ModalLike): Promise<void>;
658
- protected serialize(response: ReplyResponse<TNative> | string): SerializedReply<TNative>;
659
- protected remember(created: TMessage): TMessage;
660
- private requireMessage;
661
- private editOriginal;
662
- private checkLegality;
663
- private transition;
664
- protected guardModalSource(): void;
665
- protected abstract writeReply(response: ReplyResponse<TNative> | string, opts?: SendOpts): Promise<TMessage | undefined>;
666
- protected abstract writeDefer(opts?: DeferOpts): Promise<void>;
667
- protected abstract writeDeferUpdate(): Promise<void>;
668
- protected abstract writeUpdate(response: ReplyResponse<TNative> | string): Promise<TMessage | undefined>;
669
- protected abstract writeFollowUp(response: ReplyResponse<TNative> | string, opts?: SendOpts): Promise<TMessage>;
670
- protected abstract writeEditOriginal(response: ReplyResponse<TNative> | string): Promise<TMessage>;
671
- protected abstract writeEditTarget(targetId: string, response: ReplyResponse<TNative> | string): Promise<TMessage>;
672
- protected abstract writeDeleteOriginal(): Promise<void>;
673
- protected abstract writeDeleteTarget(targetId: string): Promise<void>;
674
- protected abstract writeModal(data: APIModalInteractionResponseCallbackData): Promise<void>;
675
- }
676
- //#endregion
677
563
  //#region src/gates/Gate.d.ts
678
564
  /**
679
565
  * The transport-agnostic gate context, the scalar identity of the acting user resolvable from any
@@ -888,7 +774,8 @@ type RequiredOf<TGate> = TGate extends Gate<infer Ctx> ? Ctx : never;
888
774
  type IntersectRequired<Gates extends readonly Gate<GateContextBase>[]> = Gates extends readonly [infer First extends Gate<GateContextBase>, ...infer Rest extends readonly Gate<GateContextBase>[]] ? RequiredOf<First> & IntersectRequired<Rest> : unknown;
889
775
  type TwoOrMore<Item> = readonly [Item, Item, ...Item[]];
890
776
  type GateName<TGate> = TGate extends Gate<GateContextBase, infer Name> ? Name : string;
891
- type JoinNames<Gates extends readonly Gate<GateContextBase>[], Sep extends string> = Gates extends readonly [infer Only extends Gate<GateContextBase>] ? GateName<Only> : Gates extends readonly [infer First extends Gate<GateContextBase>, ...infer Rest extends readonly Gate<GateContextBase>[]] ? `${GateName<First>}${Sep}${JoinNames<Rest, Sep>}` : string;
777
+ type Grouped<Name extends string> = Name extends `${string} & ${string}` | `${string} | ${string}` ? `(${Name})` : Name;
778
+ type JoinNames<Gates extends readonly Gate<GateContextBase>[], Sep extends string> = Gates extends readonly [infer Only extends Gate<GateContextBase>] ? Grouped<GateName<Only>> : Gates extends readonly [infer First extends Gate<GateContextBase>, ...infer Rest extends readonly Gate<GateContextBase>[]] ? `${Grouped<GateName<First>>}${Sep}${JoinNames<Rest, Sep>}` : string;
892
779
  type GateMismatch<Name extends string, Want extends string, Got extends string> = `gate '${Name}' requires a ${Want} handler, and this handler is ${Got}`;
893
780
  type GateFitsWith<Provided, ProvidedLabel extends string, TGate, ReqLabel extends string> = [Provided] extends [RequiredOf<TGate>] ? TGate : Constructor<[GateMismatch<GateName<TGate>, ReqLabel, ProvidedLabel>]>;
894
781
  //#endregion
@@ -1096,5 +983,5 @@ type PageCursor<Prefix extends string> = CustomId<Prefix, {
1096
983
  /** Build the page cursor for a paginator. */
1097
984
  declare function pageCursor<Prefix extends string>(prefix: Prefix): PageCursor<Prefix>;
1098
985
  //#endregion
1099
- export { RegisterCommand as $, ModalLike as A, SelectMenuKind as B, Gate as C, UserContextMenuRegistry as Ct, defineEffectGate as D, RequiredOf as E, ComponentKindBrand as F, storeComponentRoute as G, contextMenuRouteOf as H, ContextMenuKindBrand as I, CustomId as J, storeInteractionRoute as K, ContextMenuNamesBrand as L, serializeReply as M, AutocompleteRouteBrand as N, defineGate as O, ComponentDefsBrand as P, CommandMeta as Q, SlashRouteBrand as R, EffectGate as S, NamesFor as St, GuildPermissionsContext as T, interactionRoutesOf as U, areRoutes as V, selectMenuRouteOf as W, prefixOf as X, decodeFor as Y, DecodedParams as Z, pickNotice as _, SlashRegistry as _t, AutocompleteOptions as a, RowType as at, JoinNames as b, MenuCacheFor as bt, FocusedField as c, Commands as ct, RequirePermissionsOptions as d, InjectedCommandMap as dt, Promisable as et, RequireRole as f, InjectedContextMenuMap as ft, GateNoticeOptions as g, SlashOption as gt, PermissionScope as h, RouteCache as ht, AutocompletableNames as i, BuilderType as it, SerializedReply as j, BaseReplySender as k, RequireBotPermissions as l, ContextMenuInfo as lt, PermissionNames as m, OptionKind as mt, PageCursor as n, BuilderComponent as nt, ChoiceValueOf as o, CommandInfo as ot, RequireRoleOptions as p, CacheFor as pt, AnyCustomId as q, pageCursor as r, RowComponent as rt, EntryFor as s, CommandInjector as st, PAGE_MAX as t, IsNever as tt, RequirePermissions as u, ContextMenus as ut, GateFitsWith as v, SlashRouteEntry as vt, GateContextBase as w, TwoOrMore as x, MessageContextMenuRegistry as xt, IntersectRequired as y, ContextMenuKind as yt, RoutableConstructor as z };
1100
- //# sourceMappingURL=cursor-DKKKUa_7.d.mts.map
986
+ export { Promisable as $, serializeReply as A, contextMenuRouteOf as B, Gate as C, defineEffectGate as D, RequiredOf as E, ContextMenuNamesBrand as F, AnyCustomId as G, selectMenuRouteOf as H, SlashRouteBrand as I, decodeFor as J, CustomId as K, RoutableConstructor as L, ComponentDefsBrand as M, ComponentKindBrand as N, defineGate as O, ContextMenuKindBrand as P, RegisterCommand as Q, SelectMenuKind as R, EffectGate as S, GuildPermissionsContext as T, storeComponentRoute as U, interactionRoutesOf as V, storeInteractionRoute as W, DecodedParams as X, prefixOf as Y, CommandMeta as Z, pickNotice as _, AutocompleteOptions as a, CacheFor as at, JoinNames as b, FocusedField as c, SlashOption as ct, RequirePermissionsOptions as d, ContextMenuKind as dt, IsNever as et, RequireRole as f, MenuCacheFor as ft, GateNoticeOptions as g, PermissionScope as h, UserContextMenuRegistry as ht, AutocompletableNames as i, RowType as it, AutocompleteRouteBrand as j, SerializedReply as k, RequireBotPermissions as l, SlashRegistry as lt, PermissionNames as m, NamesFor as mt, PageCursor as n, RowComponent as nt, ChoiceValueOf as o, OptionKind as ot, RequireRoleOptions as p, MessageContextMenuRegistry as pt, FieldOptions as q, pageCursor as r, BuilderType as rt, EntryFor as s, RouteCache as st, PAGE_MAX as t, BuilderComponent as tt, RequirePermissions as u, SlashRouteEntry as ut, GateFitsWith as v, GateContextBase as w, TwoOrMore as x, IntersectRequired as y, areRoutes as z };
987
+ //# sourceMappingURL=cursor-BcRfmTSo.d.mts.map