@azurioh/discord-kernel 0.1.0 → 1.0.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.
- package/README.md +318 -1
- package/dist/authz/require-level-guard.d.ts +1 -1
- package/dist/authz/require-level-guard.d.ts.map +1 -1
- package/dist/color.d.ts +42 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +130 -0
- package/dist/color.js.map +1 -0
- package/dist/discord/command/all-required.d.ts +8 -0
- package/dist/discord/command/all-required.d.ts.map +1 -0
- package/dist/discord/command/all-required.js +12 -0
- package/dist/discord/command/all-required.js.map +1 -0
- package/dist/discord/command/autocomplete-dispatcher.d.ts.map +1 -1
- package/dist/discord/command/autocomplete-dispatcher.js +2 -1
- package/dist/discord/command/autocomplete-dispatcher.js.map +1 -1
- package/dist/discord/command/autocomplete-limits.d.ts +3 -0
- package/dist/discord/command/autocomplete-limits.d.ts.map +1 -0
- package/dist/discord/command/autocomplete-limits.js +6 -0
- package/dist/discord/command/autocomplete-limits.js.map +1 -0
- package/dist/discord/command/autocomplete.d.ts +6 -1
- package/dist/discord/command/autocomplete.d.ts.map +1 -1
- package/dist/discord/command/autocomplete.js +6 -6
- package/dist/discord/command/autocomplete.js.map +1 -1
- package/dist/discord/command/command-responders.d.ts +26 -0
- package/dist/discord/command/command-responders.d.ts.map +1 -0
- package/dist/discord/command/command-responders.js +16 -0
- package/dist/discord/command/command-responders.js.map +1 -0
- package/dist/discord/command/context.d.ts +8 -17
- package/dist/discord/command/context.d.ts.map +1 -1
- package/dist/discord/command/context.js +8 -37
- package/dist/discord/command/context.js.map +1 -1
- package/dist/discord/command/cooldown-guard.d.ts +1 -1
- package/dist/discord/command/cooldown-guard.d.ts.map +1 -1
- package/dist/discord/command/create-command.d.ts +1 -8
- package/dist/discord/command/create-command.d.ts.map +1 -1
- package/dist/discord/command/create-command.js +17 -65
- package/dist/discord/command/create-command.js.map +1 -1
- package/dist/discord/command/create-context-menu-command.d.ts +3 -9
- package/dist/discord/command/create-context-menu-command.d.ts.map +1 -1
- package/dist/discord/command/create-context-menu-command.js +14 -65
- package/dist/discord/command/create-context-menu-command.js.map +1 -1
- package/dist/discord/command/errors.d.ts +1 -1
- package/dist/discord/command/errors.d.ts.map +1 -1
- package/dist/discord/command/errors.js +2 -2
- package/dist/discord/command/errors.js.map +1 -1
- package/dist/discord/command/guard.d.ts +15 -8
- package/dist/discord/command/guard.d.ts.map +1 -1
- package/dist/discord/command/guard.js +4 -4
- package/dist/discord/command/guard.js.map +1 -1
- package/dist/discord/command/options.d.ts +1 -10
- package/dist/discord/command/options.d.ts.map +1 -1
- package/dist/discord/command/options.js +127 -320
- package/dist/discord/command/options.js.map +1 -1
- package/dist/discord/command/passes-guard.d.ts +14 -0
- package/dist/discord/command/passes-guard.d.ts.map +1 -0
- package/dist/discord/command/passes-guard.js +27 -0
- package/dist/discord/command/passes-guard.js.map +1 -0
- package/dist/discord/command/permission-guard.d.ts +1 -1
- package/dist/discord/command/permission-guard.d.ts.map +1 -1
- package/dist/discord/command/render-command-failure.d.ts +23 -0
- package/dist/discord/command/render-command-failure.d.ts.map +1 -0
- package/dist/discord/command/render-command-failure.js +40 -0
- package/dist/discord/command/render-command-failure.js.map +1 -0
- package/dist/discord/command/route-key.d.ts +8 -0
- package/dist/discord/command/route-key.d.ts.map +1 -0
- package/dist/discord/command/route-key.js +13 -0
- package/dist/discord/command/route-key.js.map +1 -0
- package/dist/discord/command/router.d.ts +32 -7
- package/dist/discord/command/router.d.ts.map +1 -1
- package/dist/discord/command/router.js +48 -10
- package/dist/discord/command/router.js.map +1 -1
- package/dist/discord/command/send-embed.d.ts +14 -0
- package/dist/discord/command/send-embed.d.ts.map +1 -0
- package/dist/discord/command/send-embed.js +37 -0
- package/dist/discord/command/send-embed.js.map +1 -0
- package/dist/discord/command/types.d.ts +7 -1
- package/dist/discord/command/types.d.ts.map +1 -1
- package/dist/discord/components/component-access.d.ts +12 -0
- package/dist/discord/components/component-access.d.ts.map +1 -0
- package/dist/discord/components/component-access.js +21 -0
- package/dist/discord/components/component-access.js.map +1 -0
- package/dist/discord/components/component-router.d.ts +37 -15
- package/dist/discord/components/component-router.d.ts.map +1 -1
- package/dist/discord/components/component-router.js +44 -32
- package/dist/discord/components/component-router.js.map +1 -1
- package/dist/discord/components/interactive-message/index.d.ts +3 -1
- package/dist/discord/components/interactive-message/index.d.ts.map +1 -1
- package/dist/discord/components/interactive-message/index.js +5 -3
- package/dist/discord/components/interactive-message/index.js.map +1 -1
- package/dist/discord/components/interactive-message/interactive-message-collector.d.ts +3 -28
- package/dist/discord/components/interactive-message/interactive-message-collector.d.ts.map +1 -1
- package/dist/discord/components/interactive-message/interactive-message-collector.js +6 -53
- package/dist/discord/components/interactive-message/interactive-message-collector.js.map +1 -1
- package/dist/discord/components/interactive-message/message-edit-options.d.ts +18 -0
- package/dist/discord/components/interactive-message/message-edit-options.d.ts.map +1 -0
- package/dist/discord/components/interactive-message/message-edit-options.js +40 -0
- package/dist/discord/components/interactive-message/message-edit-options.js.map +1 -0
- package/dist/discord/components/interactive-message/mount-interactive-message.d.ts +2 -1
- package/dist/discord/components/interactive-message/mount-interactive-message.d.ts.map +1 -1
- package/dist/discord/components/interactive-message/mount-interactive-message.js +4 -2
- package/dist/discord/components/interactive-message/mount-interactive-message.js.map +1 -1
- package/dist/discord/components/interactive-message/state-store.d.ts +12 -0
- package/dist/discord/components/interactive-message/state-store.d.ts.map +1 -0
- package/dist/discord/components/interactive-message/state-store.js +14 -0
- package/dist/discord/components/interactive-message/state-store.js.map +1 -0
- package/dist/discord/components/paginator/mount-paginator.js +7 -5
- package/dist/discord/components/paginator/mount-paginator.js.map +1 -1
- package/dist/discord/components/paginator/paginator-view.d.ts +1 -1
- package/dist/discord/components/paginator/paginator-view.d.ts.map +1 -1
- package/dist/discord/components/persistent-paginator.d.ts +1 -1
- package/dist/discord/components/persistent-paginator.d.ts.map +1 -1
- package/dist/discord/components/persistent-paginator.js +6 -6
- package/dist/discord/components/persistent-paginator.js.map +1 -1
- package/dist/discord/components/settings-editor/from-declaration-controls.d.ts +67 -0
- package/dist/discord/components/settings-editor/from-declaration-controls.d.ts.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-controls.js +245 -0
- package/dist/discord/components/settings-editor/from-declaration-controls.js.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-display.d.ts +23 -0
- package/dist/discord/components/settings-editor/from-declaration-display.d.ts.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-display.js +114 -0
- package/dist/discord/components/settings-editor/from-declaration-display.js.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-layout.d.ts +33 -0
- package/dist/discord/components/settings-editor/from-declaration-layout.d.ts.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-layout.js +178 -0
- package/dist/discord/components/settings-editor/from-declaration-layout.js.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-search.d.ts +27 -0
- package/dist/discord/components/settings-editor/from-declaration-search.d.ts.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-search.js +58 -0
- package/dist/discord/components/settings-editor/from-declaration-search.js.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-stored.d.ts +21 -0
- package/dist/discord/components/settings-editor/from-declaration-stored.d.ts.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-stored.js +37 -0
- package/dist/discord/components/settings-editor/from-declaration-stored.js.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-subject.d.ts +32 -0
- package/dist/discord/components/settings-editor/from-declaration-subject.d.ts.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-subject.js +65 -0
- package/dist/discord/components/settings-editor/from-declaration-subject.js.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-values.d.ts +57 -0
- package/dist/discord/components/settings-editor/from-declaration-values.d.ts.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration-values.js +187 -0
- package/dist/discord/components/settings-editor/from-declaration-values.js.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration.d.ts +39 -0
- package/dist/discord/components/settings-editor/from-declaration.d.ts.map +1 -0
- package/dist/discord/components/settings-editor/from-declaration.js +132 -0
- package/dist/discord/components/settings-editor/from-declaration.js.map +1 -0
- package/dist/discord/components/settings-editor/index.d.ts +3 -1
- package/dist/discord/components/settings-editor/index.d.ts.map +1 -1
- package/dist/discord/components/settings-editor/index.js +6 -3
- package/dist/discord/components/settings-editor/index.js.map +1 -1
- package/dist/discord/components/settings-editor/mount-settings-editor.d.ts +16 -2
- package/dist/discord/components/settings-editor/mount-settings-editor.d.ts.map +1 -1
- package/dist/discord/components/settings-editor/mount-settings-editor.js +14 -10
- package/dist/discord/components/settings-editor/mount-settings-editor.js.map +1 -1
- package/dist/discord/components/settings-editor/navigation.d.ts +20 -0
- package/dist/discord/components/settings-editor/navigation.d.ts.map +1 -1
- package/dist/discord/components/settings-editor/navigation.js +22 -0
- package/dist/discord/components/settings-editor/navigation.js.map +1 -1
- package/dist/discord/components/settings-editor/settings-editor-card.view.d.ts +4 -3
- package/dist/discord/components/settings-editor/settings-editor-card.view.d.ts.map +1 -1
- package/dist/discord/components/settings-editor/settings-editor-card.view.js +60 -34
- package/dist/discord/components/settings-editor/settings-editor-card.view.js.map +1 -1
- package/dist/discord/components/settings-editor/settings-editor-field-modal.d.ts +2 -1
- package/dist/discord/components/settings-editor/settings-editor-field-modal.d.ts.map +1 -1
- package/dist/discord/components/settings-editor/settings-editor-field-modal.js +48 -72
- package/dist/discord/components/settings-editor/settings-editor-field-modal.js.map +1 -1
- package/dist/discord/components/settings-editor/settings-editor-field-values.d.ts +6 -0
- package/dist/discord/components/settings-editor/settings-editor-field-values.d.ts.map +1 -0
- package/dist/discord/components/settings-editor/settings-editor-field-values.js +13 -0
- package/dist/discord/components/settings-editor/settings-editor-field-values.js.map +1 -0
- package/dist/discord/components/settings-editor/settings-editor-fields.d.ts +6 -5
- package/dist/discord/components/settings-editor/settings-editor-fields.d.ts.map +1 -1
- package/dist/discord/components/settings-editor/settings-editor-fields.js +0 -10
- package/dist/discord/components/settings-editor/settings-editor-fields.js.map +1 -1
- package/dist/discord/components/settings-editor/settings-editor.view.d.ts +3 -2
- package/dist/discord/components/settings-editor/settings-editor.view.d.ts.map +1 -1
- package/dist/discord/components/settings-editor/settings-editor.view.js +4 -21
- package/dist/discord/components/settings-editor/settings-editor.view.js.map +1 -1
- package/dist/discord/events/event-guild-id.d.ts +10 -0
- package/dist/discord/events/event-guild-id.d.ts.map +1 -0
- package/dist/discord/events/event-guild-id.js +37 -0
- package/dist/discord/events/event-guild-id.js.map +1 -0
- package/dist/discord/events/event-router.d.ts +17 -3
- package/dist/discord/events/event-router.d.ts.map +1 -1
- package/dist/discord/events/event-router.js +33 -9
- package/dist/discord/events/event-router.js.map +1 -1
- package/dist/discord/i18n.d.ts +17 -2
- package/dist/discord/i18n.d.ts.map +1 -1
- package/dist/discord/i18n.js +43 -6
- package/dist/discord/i18n.js.map +1 -1
- package/dist/discord/interaction/interaction-locale.d.ts +14 -0
- package/dist/discord/interaction/interaction-locale.d.ts.map +1 -0
- package/dist/discord/interaction/interaction-locale.js +12 -0
- package/dist/discord/interaction/interaction-locale.js.map +1 -0
- package/dist/discord/interaction/locale-resolver.d.ts +27 -0
- package/dist/discord/interaction/locale-resolver.d.ts.map +1 -0
- package/dist/discord/interaction/locale-resolver.js +3 -0
- package/dist/discord/interaction/locale-resolver.js.map +1 -0
- package/dist/discord/interaction/modal.d.ts.map +1 -1
- package/dist/discord/interaction/modal.js +5 -40
- package/dist/discord/interaction/modal.js.map +1 -1
- package/dist/discord/interaction/reply-locale.d.ts +18 -0
- package/dist/discord/interaction/reply-locale.d.ts.map +1 -0
- package/dist/discord/interaction/reply-locale.js +25 -0
- package/dist/discord/interaction/reply-locale.js.map +1 -0
- package/dist/discord/interaction/select-bounds.d.ts +19 -0
- package/dist/discord/interaction/select-bounds.d.ts.map +1 -0
- package/dist/discord/interaction/select-bounds.js +17 -0
- package/dist/discord/interaction/select-bounds.js.map +1 -0
- package/dist/discord/interaction/select-menu.d.ts.map +1 -1
- package/dist/discord/interaction/select-menu.js +2 -9
- package/dist/discord/interaction/select-menu.js.map +1 -1
- package/dist/discord/placeholder-registry.d.ts +1 -1
- package/dist/discord/placeholder-registry.d.ts.map +1 -1
- package/dist/discord/presenter.d.ts +1 -1
- package/dist/discord/presenter.d.ts.map +1 -1
- package/dist/discord/settings/discord-guild-directory.d.ts +28 -0
- package/dist/discord/settings/discord-guild-directory.d.ts.map +1 -0
- package/dist/discord/settings/discord-guild-directory.js +171 -0
- package/dist/discord/settings/discord-guild-directory.js.map +1 -0
- package/dist/discord/settings/guild-locale-resolver.d.ts +25 -0
- package/dist/discord/settings/guild-locale-resolver.d.ts.map +1 -0
- package/dist/discord/settings/guild-locale-resolver.js +33 -0
- package/dist/discord/settings/guild-locale-resolver.js.map +1 -0
- package/dist/discord/settings/is-module-disabled.d.ts +16 -0
- package/dist/discord/settings/is-module-disabled.d.ts.map +1 -0
- package/dist/discord/settings/is-module-disabled.js +20 -0
- package/dist/discord/settings/is-module-disabled.js.map +1 -0
- package/dist/discord/settings/module-disabled-embed.d.ts +13 -0
- package/dist/discord/settings/module-disabled-embed.d.ts.map +1 -0
- package/dist/discord/settings/module-disabled-embed.js +16 -0
- package/dist/discord/settings/module-disabled-embed.js.map +1 -0
- package/dist/discord/settings/require-configured.d.ts +26 -0
- package/dist/discord/settings/require-configured.d.ts.map +1 -0
- package/dist/discord/settings/require-configured.js +62 -0
- package/dist/discord/settings/require-configured.js.map +1 -0
- package/dist/discord/ui/color-aliases.d.ts +31 -0
- package/dist/discord/ui/color-aliases.d.ts.map +1 -0
- package/dist/discord/ui/color-aliases.js +66 -0
- package/dist/discord/ui/color-aliases.js.map +1 -0
- package/dist/discord/ui/color-input.d.ts +5 -32
- package/dist/discord/ui/color-input.d.ts.map +1 -1
- package/dist/discord/ui/color-input.js +8 -157
- package/dist/discord/ui/color-input.js.map +1 -1
- package/dist/discord/ui/colors.d.ts +0 -2
- package/dist/discord/ui/colors.d.ts.map +1 -1
- package/dist/discord/ui/colors.js +4 -5
- package/dist/discord/ui/colors.js.map +1 -1
- package/dist/discord/ui/embed.d.ts.map +1 -1
- package/dist/discord/ui/embed.js +3 -8
- package/dist/discord/ui/embed.js.map +1 -1
- package/dist/discord/ui/truncate-text.d.ts +11 -0
- package/dist/discord/ui/truncate-text.d.ts.map +1 -0
- package/dist/discord/ui/truncate-text.js +19 -0
- package/dist/discord/ui/truncate-text.js.map +1 -0
- package/dist/errors/error-message.d.ts +9 -0
- package/dist/errors/error-message.d.ts.map +1 -0
- package/dist/errors/error-message.js +14 -0
- package/dist/errors/error-message.js.map +1 -0
- package/dist/i18n/business-message.d.ts +1 -1
- package/dist/i18n/business-message.d.ts.map +1 -1
- package/dist/i18n/catalog.d.ts +9 -0
- package/dist/i18n/catalog.d.ts.map +1 -1
- package/dist/i18n/catalog.js +4 -0
- package/dist/i18n/catalog.js.map +1 -1
- package/dist/i18n/locale.d.ts +2 -0
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/locale.js +3 -1
- package/dist/i18n/locale.js.map +1 -1
- package/dist/i18n/translator.d.ts +2 -0
- package/dist/i18n/translator.d.ts.map +1 -1
- package/dist/i18n/translator.js.map +1 -1
- package/dist/module/module.d.ts +15 -1
- package/dist/module/module.d.ts.map +1 -1
- package/dist/resilience/retry.js +2 -2
- package/dist/resilience/retry.js.map +1 -1
- package/dist/scheduler/scheduler.d.ts.map +1 -1
- package/dist/scheduler/scheduler.js +2 -4
- package/dist/scheduler/scheduler.js.map +1 -1
- package/dist/settings/cache.d.ts +29 -0
- package/dist/settings/cache.d.ts.map +1 -0
- package/dist/settings/cache.js +47 -0
- package/dist/settings/cache.js.map +1 -0
- package/dist/settings/choice.d.ts +10 -0
- package/dist/settings/choice.d.ts.map +1 -0
- package/dist/settings/choice.js +3 -0
- package/dist/settings/choice.js.map +1 -0
- package/dist/settings/decode-stored.d.ts +20 -0
- package/dist/settings/decode-stored.d.ts.map +1 -0
- package/dist/settings/decode-stored.js +35 -0
- package/dist/settings/decode-stored.js.map +1 -0
- package/dist/settings/define-settings.d.ts +52 -0
- package/dist/settings/define-settings.d.ts.map +1 -0
- package/dist/settings/define-settings.js +141 -0
- package/dist/settings/define-settings.js.map +1 -0
- package/dist/settings/describe-field.d.ts +19 -0
- package/dist/settings/describe-field.d.ts.map +1 -0
- package/dist/settings/describe-field.js +131 -0
- package/dist/settings/describe-field.js.map +1 -0
- package/dist/settings/describe.d.ts +27 -0
- package/dist/settings/describe.d.ts.map +1 -0
- package/dist/settings/describe.js +62 -0
- package/dist/settings/describe.js.map +1 -0
- package/dist/settings/duration.d.ts +16 -0
- package/dist/settings/duration.d.ts.map +1 -0
- package/dist/settings/duration.js +56 -0
- package/dist/settings/duration.js.map +1 -0
- package/dist/settings/field-order.d.ts +37 -0
- package/dist/settings/field-order.d.ts.map +1 -0
- package/dist/settings/field-order.js +100 -0
- package/dist/settings/field-order.js.map +1 -0
- package/dist/settings/field-search.d.ts +10 -0
- package/dist/settings/field-search.d.ts.map +1 -0
- package/dist/settings/field-search.js +18 -0
- package/dist/settings/field-search.js.map +1 -0
- package/dist/settings/fields/builders.d.ts +41 -0
- package/dist/settings/fields/builders.d.ts.map +1 -0
- package/dist/settings/fields/builders.js +83 -0
- package/dist/settings/fields/builders.js.map +1 -0
- package/dist/settings/fields/field.d.ts +199 -0
- package/dist/settings/fields/field.d.ts.map +1 -0
- package/dist/settings/fields/field.js +33 -0
- package/dist/settings/fields/field.js.map +1 -0
- package/dist/settings/fields/zod-schema.d.ts +67 -0
- package/dist/settings/fields/zod-schema.d.ts.map +1 -0
- package/dist/settings/fields/zod-schema.js +281 -0
- package/dist/settings/fields/zod-schema.js.map +1 -0
- package/dist/settings/in-memory/in-memory-guild-directory.d.ts +24 -0
- package/dist/settings/in-memory/in-memory-guild-directory.d.ts.map +1 -0
- package/dist/settings/in-memory/in-memory-guild-directory.js +42 -0
- package/dist/settings/in-memory/in-memory-guild-directory.js.map +1 -0
- package/dist/settings/in-memory/in-memory-settings-store.d.ts +8 -0
- package/dist/settings/in-memory/in-memory-settings-store.d.ts.map +1 -0
- package/dist/settings/in-memory/in-memory-settings-store.js +43 -0
- package/dist/settings/in-memory/in-memory-settings-store.js.map +1 -0
- package/dist/settings/in-memory/in-process-notifier.d.ts +9 -0
- package/dist/settings/in-memory/in-process-notifier.d.ts.map +1 -0
- package/dist/settings/in-memory/in-process-notifier.js +32 -0
- package/dist/settings/in-memory/in-process-notifier.js.map +1 -0
- package/dist/settings/index.d.ts +22 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +31 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/is-plain-object.d.ts +6 -0
- package/dist/settings/is-plain-object.d.ts.map +1 -0
- package/dist/settings/is-plain-object.js +15 -0
- package/dist/settings/is-plain-object.js.map +1 -0
- package/dist/settings/messages.d.ts +61 -0
- package/dist/settings/messages.d.ts.map +1 -0
- package/dist/settings/messages.js +155 -0
- package/dist/settings/messages.js.map +1 -0
- package/dist/settings/migrate.d.ts +35 -0
- package/dist/settings/migrate.d.ts.map +1 -0
- package/dist/settings/migrate.js +42 -0
- package/dist/settings/migrate.js.map +1 -0
- package/dist/settings/ports/guild-directory.d.ts +61 -0
- package/dist/settings/ports/guild-directory.d.ts.map +1 -0
- package/dist/settings/ports/guild-directory.js +3 -0
- package/dist/settings/ports/guild-directory.js.map +1 -0
- package/dist/settings/ports/settings-changed-notifier.d.ts +20 -0
- package/dist/settings/ports/settings-changed-notifier.d.ts.map +1 -0
- package/dist/settings/ports/settings-changed-notifier.js +3 -0
- package/dist/settings/ports/settings-changed-notifier.js.map +1 -0
- package/dist/settings/ports/settings-store.d.ts +76 -0
- package/dist/settings/ports/settings-store.d.ts.map +1 -0
- package/dist/settings/ports/settings-store.js +3 -0
- package/dist/settings/ports/settings-store.js.map +1 -0
- package/dist/settings/registry.d.ts +31 -0
- package/dist/settings/registry.d.ts.map +1 -0
- package/dist/settings/registry.js +102 -0
- package/dist/settings/registry.js.map +1 -0
- package/dist/settings/settings-declaration-error.d.ts +13 -0
- package/dist/settings/settings-declaration-error.d.ts.map +1 -0
- package/dist/settings/settings-declaration-error.js +22 -0
- package/dist/settings/settings-declaration-error.js.map +1 -0
- package/dist/settings/settings-service.d.ts +148 -0
- package/dist/settings/settings-service.d.ts.map +1 -0
- package/dist/settings/settings-service.js +279 -0
- package/dist/settings/settings-service.js.map +1 -0
- package/dist/settings/settings-validation-error.d.ts +23 -0
- package/dist/settings/settings-validation-error.d.ts.map +1 -0
- package/dist/settings/settings-validation-error.js +17 -0
- package/dist/settings/settings-validation-error.js.map +1 -0
- package/dist/settings/status.d.ts +16 -0
- package/dist/settings/status.d.ts.map +1 -0
- package/dist/settings/status.js +18 -0
- package/dist/settings/status.js.map +1 -0
- package/dist/settings/suggest.d.ts +77 -0
- package/dist/settings/suggest.d.ts.map +1 -0
- package/dist/settings/suggest.js +192 -0
- package/dist/settings/suggest.js.map +1 -0
- package/dist/settings/system/kernel-settings.d.ts +43 -0
- package/dist/settings/system/kernel-settings.d.ts.map +1 -0
- package/dist/settings/system/kernel-settings.js +53 -0
- package/dist/settings/system/kernel-settings.js.map +1 -0
- package/dist/settings/system/module-gate.d.ts +31 -0
- package/dist/settings/system/module-gate.d.ts.map +1 -0
- package/dist/settings/system/module-gate.js +34 -0
- package/dist/settings/system/module-gate.js.map +1 -0
- package/dist/settings/testing/index.d.ts +2 -0
- package/dist/settings/testing/index.d.ts.map +1 -0
- package/dist/settings/testing/index.js +6 -0
- package/dist/settings/testing/index.js.map +1 -0
- package/dist/settings/testing/settings-store-contract.d.ts +29 -0
- package/dist/settings/testing/settings-store-contract.d.ts.map +1 -0
- package/dist/settings/testing/settings-store-contract.js +192 -0
- package/dist/settings/testing/settings-store-contract.js.map +1 -0
- package/dist/settings/timed-search.d.ts +26 -0
- package/dist/settings/timed-search.d.ts.map +1 -0
- package/dist/settings/timed-search.js +48 -0
- package/dist/settings/timed-search.js.map +1 -0
- package/dist/settings/types.d.ts +37 -0
- package/dist/settings/types.d.ts.map +1 -0
- package/dist/settings/types.js +3 -0
- package/dist/settings/types.js.map +1 -0
- package/dist/settings/validate.d.ts +55 -0
- package/dist/settings/validate.d.ts.map +1 -0
- package/dist/settings/validate.js +196 -0
- package/dist/settings/validate.js.map +1 -0
- package/package.json +463 -88
- package/src/authz/require-level-guard.ts +1 -1
- package/src/color.ts +134 -0
- package/src/discord/command/all-required.ts +12 -0
- package/src/discord/command/autocomplete-dispatcher.ts +2 -1
- package/src/discord/command/autocomplete-limits.ts +2 -0
- package/src/discord/command/autocomplete.ts +8 -7
- package/src/discord/command/command-responders.ts +39 -0
- package/src/discord/command/context.ts +14 -54
- package/src/discord/command/cooldown-guard.ts +1 -1
- package/src/discord/command/create-command.ts +19 -94
- package/src/discord/command/create-context-menu-command.ts +19 -97
- package/src/discord/command/errors.ts +1 -1
- package/src/discord/command/guard.ts +24 -12
- package/src/discord/command/options.ts +202 -412
- package/src/discord/command/passes-guard.ts +37 -0
- package/src/discord/command/permission-guard.ts +1 -1
- package/src/discord/command/render-command-failure.ts +71 -0
- package/src/discord/command/route-key.ts +9 -0
- package/src/discord/command/router.ts +73 -12
- package/src/discord/command/send-embed.ts +42 -0
- package/src/discord/command/types.ts +7 -1
- package/src/discord/components/component-access.ts +20 -0
- package/src/discord/components/component-router.ts +73 -36
- package/src/discord/components/interactive-message/index.ts +5 -3
- package/src/discord/components/interactive-message/interactive-message-collector.ts +4 -68
- package/src/discord/components/interactive-message/message-edit-options.ts +47 -0
- package/src/discord/components/interactive-message/mount-interactive-message.ts +5 -3
- package/src/discord/components/interactive-message/state-store.ts +20 -0
- package/src/discord/components/paginator/mount-paginator.ts +3 -3
- package/src/discord/components/paginator/paginator-view.ts +1 -1
- package/src/discord/components/persistent-paginator.ts +8 -9
- package/src/discord/components/settings-editor/from-declaration-controls.ts +371 -0
- package/src/discord/components/settings-editor/from-declaration-display.ts +155 -0
- package/src/discord/components/settings-editor/from-declaration-layout.ts +247 -0
- package/src/discord/components/settings-editor/from-declaration-search.ts +77 -0
- package/src/discord/components/settings-editor/from-declaration-stored.ts +39 -0
- package/src/discord/components/settings-editor/from-declaration-subject.ts +110 -0
- package/src/discord/components/settings-editor/from-declaration-values.ts +240 -0
- package/src/discord/components/settings-editor/from-declaration.ts +218 -0
- package/src/discord/components/settings-editor/index.ts +5 -2
- package/src/discord/components/settings-editor/mount-settings-editor.ts +28 -10
- package/src/discord/components/settings-editor/navigation.ts +41 -0
- package/src/discord/components/settings-editor/settings-editor-card.view.ts +79 -36
- package/src/discord/components/settings-editor/settings-editor-field-modal.ts +76 -68
- package/src/discord/components/settings-editor/settings-editor-field-values.ts +11 -0
- package/src/discord/components/settings-editor/settings-editor-fields.ts +6 -11
- package/src/discord/components/settings-editor/settings-editor.view.ts +11 -24
- package/src/discord/events/event-guild-id.ts +35 -0
- package/src/discord/events/event-router.ts +46 -13
- package/src/discord/i18n.ts +47 -8
- package/src/discord/interaction/interaction-locale.ts +19 -0
- package/src/discord/interaction/locale-resolver.ts +28 -0
- package/src/discord/interaction/modal.ts +5 -40
- package/src/discord/interaction/reply-locale.ts +35 -0
- package/src/discord/interaction/select-bounds.ts +33 -0
- package/src/discord/interaction/select-menu.ts +2 -9
- package/src/discord/placeholder-registry.ts +1 -1
- package/src/discord/presenter.ts +1 -1
- package/src/discord/settings/discord-guild-directory.ts +214 -0
- package/src/discord/settings/guild-locale-resolver.ts +38 -0
- package/src/discord/settings/is-module-disabled.ts +22 -0
- package/src/discord/settings/module-disabled-embed.ts +19 -0
- package/src/discord/settings/require-configured.ts +68 -0
- package/src/discord/ui/color-aliases.ts +70 -0
- package/src/discord/ui/color-input.ts +8 -173
- package/src/discord/ui/colors.ts +2 -3
- package/src/discord/ui/embed.ts +3 -9
- package/src/discord/ui/truncate-text.ts +15 -0
- package/src/errors/error-message.ts +10 -0
- package/src/i18n/business-message.ts +1 -1
- package/src/i18n/catalog.ts +14 -0
- package/src/i18n/locale.ts +3 -0
- package/src/i18n/translator.ts +3 -0
- package/src/module/module.ts +15 -1
- package/src/resilience/retry.ts +1 -1
- package/src/scheduler/scheduler.ts +2 -5
- package/src/settings/cache.ts +70 -0
- package/src/settings/choice.ts +9 -0
- package/src/settings/decode-stored.ts +40 -0
- package/src/settings/define-settings.ts +214 -0
- package/src/settings/describe-field.ts +155 -0
- package/src/settings/describe.ts +90 -0
- package/src/settings/duration.ts +54 -0
- package/src/settings/field-order.ts +128 -0
- package/src/settings/field-search.ts +16 -0
- package/src/settings/fields/builders.ts +161 -0
- package/src/settings/fields/field.ts +205 -0
- package/src/settings/fields/zod-schema.ts +300 -0
- package/src/settings/in-memory/in-memory-guild-directory.ts +69 -0
- package/src/settings/in-memory/in-memory-settings-store.ts +46 -0
- package/src/settings/in-memory/in-process-notifier.ts +40 -0
- package/src/settings/index.ts +72 -0
- package/src/settings/is-plain-object.ts +11 -0
- package/src/settings/messages.ts +161 -0
- package/src/settings/migrate.ts +58 -0
- package/src/settings/ports/guild-directory.ts +48 -0
- package/src/settings/ports/settings-changed-notifier.ts +20 -0
- package/src/settings/ports/settings-store.ts +74 -0
- package/src/settings/registry.ts +137 -0
- package/src/settings/settings-declaration-error.ts +16 -0
- package/src/settings/settings-service.ts +535 -0
- package/src/settings/settings-validation-error.ts +41 -0
- package/src/settings/status.ts +25 -0
- package/src/settings/suggest.ts +267 -0
- package/src/settings/system/kernel-settings.ts +74 -0
- package/src/settings/system/module-gate.ts +49 -0
- package/src/settings/testing/index.ts +7 -0
- package/src/settings/testing/settings-store-contract.ts +278 -0
- package/src/settings/timed-search.ts +56 -0
- package/src/settings/types.ts +42 -0
- package/src/settings/validate.ts +298 -0
|
@@ -1,33 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ComponentRouter = void 0;
|
|
4
|
-
exports.openToAnyone = openToAnyone;
|
|
5
|
-
exports.requiresPermissions = requiresPermissions;
|
|
6
|
-
exports.checkedByHandler = checkedByHandler;
|
|
7
|
-
exports.createComponentHandler = createComponentHandler;
|
|
8
4
|
const discord_js_1 = require("discord.js");
|
|
5
|
+
const passes_guard_1 = require("../../discord/command/passes-guard");
|
|
9
6
|
const i18n_1 = require("../../discord/i18n");
|
|
7
|
+
const reply_locale_1 = require("../../discord/interaction/reply-locale");
|
|
10
8
|
const permissions_1 = require("../../discord/permissions");
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return { kind: "anyone", because };
|
|
15
|
-
}
|
|
16
|
-
/** The router denies the click unless the member holds every permission. */
|
|
17
|
-
function requiresPermissions(...required) {
|
|
18
|
-
return { kind: "permissions", required };
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* The decision needs per-resource state, so the handler makes it. `because`
|
|
22
|
-
* names the rule it applies, so a reviewer can go and check that it does.
|
|
23
|
-
*/
|
|
24
|
-
function checkedByHandler(because) {
|
|
25
|
-
return { kind: "handler", because };
|
|
26
|
-
}
|
|
27
|
-
/** Declare a {@link ComponentHandler}. Identity helper kept for a consistent DSL. */
|
|
28
|
-
function createComponentHandler(handler) {
|
|
29
|
-
return handler;
|
|
30
|
-
}
|
|
9
|
+
const is_module_disabled_1 = require("../../discord/settings/is-module-disabled");
|
|
10
|
+
const module_disabled_embed_1 = require("../../discord/settings/module-disabled-embed");
|
|
11
|
+
const error_message_1 = require("../../errors/error-message");
|
|
31
12
|
function isRoutable(interaction) {
|
|
32
13
|
return interaction.isButton() || interaction.isAnySelectMenu() || interaction.isModalSubmit();
|
|
33
14
|
}
|
|
@@ -41,6 +22,8 @@ function isRoutable(interaction) {
|
|
|
41
22
|
class ComponentRouter {
|
|
42
23
|
deps;
|
|
43
24
|
handlers = [];
|
|
25
|
+
/** The module each handler was registered for; absent means never gated. */
|
|
26
|
+
modules = new Map();
|
|
44
27
|
runtime;
|
|
45
28
|
constructor(deps) {
|
|
46
29
|
this.deps = deps;
|
|
@@ -48,15 +31,25 @@ class ComponentRouter {
|
|
|
48
31
|
presenter: deps.presenter,
|
|
49
32
|
logger: deps.logger,
|
|
50
33
|
translator: deps.translator,
|
|
34
|
+
localeResolver: deps.localeResolver,
|
|
51
35
|
};
|
|
52
36
|
}
|
|
53
|
-
|
|
37
|
+
/**
|
|
38
|
+
* @param moduleName - the module the handler belongs to, so the gate can
|
|
39
|
+
* skip it on guilds where that module is disabled. Omit it for a handler
|
|
40
|
+
* that always runs.
|
|
41
|
+
*/
|
|
42
|
+
register(handler, moduleName) {
|
|
54
43
|
this.handlers.push(handler);
|
|
44
|
+
if (moduleName !== undefined) {
|
|
45
|
+
this.modules.set(handler, moduleName);
|
|
46
|
+
}
|
|
55
47
|
return this;
|
|
56
48
|
}
|
|
57
|
-
|
|
49
|
+
/** Register many handlers at once, all of `moduleName` when given. */
|
|
50
|
+
registerAll(handlers, moduleName) {
|
|
58
51
|
for (const handler of handlers) {
|
|
59
|
-
this.register(handler);
|
|
52
|
+
this.register(handler, moduleName);
|
|
60
53
|
}
|
|
61
54
|
return this;
|
|
62
55
|
}
|
|
@@ -72,22 +65,44 @@ class ComponentRouter {
|
|
|
72
65
|
if (!handler) {
|
|
73
66
|
return false;
|
|
74
67
|
}
|
|
68
|
+
// First: a disabled module answers the same way whoever clicks.
|
|
69
|
+
if (!(await this.passesGate(interaction, handler))) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
75
72
|
// Before the handler runs, so a declared permission cannot be bypassed by a
|
|
76
73
|
// handler that forgot to check it.
|
|
77
74
|
if (!(await this.passesAuthorization(interaction, handler))) {
|
|
78
75
|
return true;
|
|
79
76
|
}
|
|
77
|
+
if (!(await (0, passes_guard_1.passesGuard)(interaction, handler.guard, this.runtime))) {
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
80
|
try {
|
|
81
81
|
await handler.handle(interaction, this.runtime);
|
|
82
82
|
}
|
|
83
83
|
catch (error) {
|
|
84
84
|
this.deps.logger.error({
|
|
85
85
|
customId: interaction.customId,
|
|
86
|
-
err:
|
|
86
|
+
err: (0, error_message_1.errorMessage)(error),
|
|
87
87
|
}, "Component handler failed");
|
|
88
88
|
}
|
|
89
89
|
return true;
|
|
90
90
|
}
|
|
91
|
+
/** Answer the member and return `false` when the handler's module is disabled on the guild. */
|
|
92
|
+
async passesGate(interaction, handler) {
|
|
93
|
+
const disabled = await (0, is_module_disabled_1.isModuleDisabled)({
|
|
94
|
+
gate: this.deps.gate,
|
|
95
|
+
moduleName: this.modules.get(handler),
|
|
96
|
+
guildId: interaction.guildId,
|
|
97
|
+
});
|
|
98
|
+
if (disabled) {
|
|
99
|
+
await interaction.reply({
|
|
100
|
+
embeds: [await (0, module_disabled_embed_1.moduleDisabledEmbed)(interaction, this.deps)],
|
|
101
|
+
flags: discord_js_1.MessageFlags.Ephemeral,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return !disabled;
|
|
105
|
+
}
|
|
91
106
|
/**
|
|
92
107
|
* Enforce the handler's declared audience. Only `permissions` is enforceable
|
|
93
108
|
* here — the other two kinds are statements about a decision made elsewhere,
|
|
@@ -105,7 +120,7 @@ class ComponentRouter {
|
|
|
105
120
|
if (missing.length === 0) {
|
|
106
121
|
return true;
|
|
107
122
|
}
|
|
108
|
-
const locale =
|
|
123
|
+
const locale = await (0, reply_locale_1.replyLocale)(interaction, this.deps);
|
|
109
124
|
const message = this.deps.translator.translate(locale, i18n_1.CORE_MESSAGES.guardPermissionDenied, {
|
|
110
125
|
missing: (0, permissions_1.formatPermissions)(missing),
|
|
111
126
|
});
|
|
@@ -115,9 +130,6 @@ class ComponentRouter {
|
|
|
115
130
|
});
|
|
116
131
|
return false;
|
|
117
132
|
}
|
|
118
|
-
localeOf(interaction) {
|
|
119
|
-
return (0, i18n_2.resolveLocale)([interaction.locale, interaction.guildLocale], this.deps.translator.defaultLocale);
|
|
120
|
-
}
|
|
121
133
|
}
|
|
122
134
|
exports.ComponentRouter = ComponentRouter;
|
|
123
135
|
//# sourceMappingURL=component-router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-router.js","sourceRoot":"","sources":["../../../src/discord/components/component-router.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"component-router.js","sourceRoot":"","sources":["../../../src/discord/components/component-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export { COLLECTOR_IDLE_MS,
|
|
1
|
+
export { COLLECTOR_IDLE_MS, type DisabledInteractiveMessageComponents, type InteractiveMessageCollectorDeps, type InteractiveMessageHandle, type InteractiveMessagePayload, type InteractiveSelect, type InteractiveView, mountInteractiveMessageCollector, type SelectComponentContext, } from "../../../discord/components/interactive-message/interactive-message-collector";
|
|
2
|
+
export { toMessageEditOptions } from "../../../discord/components/interactive-message/message-edit-options";
|
|
2
3
|
export { type InteractiveMessageOptions, mountInteractiveMessage, } from "../../../discord/components/interactive-message/mount-interactive-message";
|
|
4
|
+
export { createStateStore, type StateStore, } from "../../../discord/components/interactive-message/state-store";
|
|
3
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,KAAK,oCAAoC,EACzC,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,gCAAgC,EAChC,KAAK,sBAAsB,GAC3B,MAAM,wEAAwE,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+DAA+D,CAAC;AACrG,OAAO,EACN,KAAK,yBAAyB,EAC9B,uBAAuB,GACvB,MAAM,oEAAoE,CAAC;AAC5E,OAAO,EACN,gBAAgB,EAChB,KAAK,UAAU,GACf,MAAM,sDAAsD,CAAC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createStateStore = exports.mountInteractiveMessage = exports.toMessageEditOptions = exports.mountInteractiveMessageCollector = exports.COLLECTOR_IDLE_MS = void 0;
|
|
4
4
|
var interactive_message_collector_1 = require("../../../discord/components/interactive-message/interactive-message-collector");
|
|
5
5
|
Object.defineProperty(exports, "COLLECTOR_IDLE_MS", { enumerable: true, get: function () { return interactive_message_collector_1.COLLECTOR_IDLE_MS; } });
|
|
6
|
-
Object.defineProperty(exports, "createStateStore", { enumerable: true, get: function () { return interactive_message_collector_1.createStateStore; } });
|
|
7
6
|
Object.defineProperty(exports, "mountInteractiveMessageCollector", { enumerable: true, get: function () { return interactive_message_collector_1.mountInteractiveMessageCollector; } });
|
|
8
|
-
|
|
7
|
+
var message_edit_options_1 = require("../../../discord/components/interactive-message/message-edit-options");
|
|
8
|
+
Object.defineProperty(exports, "toMessageEditOptions", { enumerable: true, get: function () { return message_edit_options_1.toMessageEditOptions; } });
|
|
9
9
|
var mount_interactive_message_1 = require("../../../discord/components/interactive-message/mount-interactive-message");
|
|
10
10
|
Object.defineProperty(exports, "mountInteractiveMessage", { enumerable: true, get: function () { return mount_interactive_message_1.mountInteractiveMessage; } });
|
|
11
|
+
var state_store_1 = require("../../../discord/components/interactive-message/state-store");
|
|
12
|
+
Object.defineProperty(exports, "createStateStore", { enumerable: true, get: function () { return state_store_1.createStateStore; } });
|
|
11
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/index.ts"],"names":[],"mappings":";;;AAAA,wHAUgF;AAT/E,kIAAA,iBAAiB,OAAA;AAOjB,iJAAA,gCAAgC,OAAA;AAGjC,sGAAqG;AAA5F,4HAAA,oBAAoB,OAAA;AAC7B,gHAG4E;AAD3E,oIAAA,uBAAuB,OAAA;AAExB,oFAG8D;AAF7D,+GAAA,gBAAgB,OAAA"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { ActionRowBuilder, AnySelectMenuInteraction,
|
|
1
|
+
import type { ActionRowBuilder, AnySelectMenuInteraction, ChatInputCommandInteraction, ContainerBuilder, EmbedBuilder, MessageActionRowComponentBuilder, MessageMentionOptions } from "discord.js";
|
|
2
|
+
import type { StateStore } from "../../../discord/components/interactive-message/state-store";
|
|
2
3
|
import type { Button } from "../../../discord/interaction/button";
|
|
3
4
|
import type { Card } from "../../../discord/ui/card";
|
|
4
|
-
import {
|
|
5
|
+
import type { MessageFile } from "../../../discord/ui/message-attachments";
|
|
5
6
|
import type { Logger } from "../../../logger";
|
|
6
7
|
/** How long an interactive message stays live without a click. */
|
|
7
8
|
export declare const COLLECTOR_IDLE_MS: number;
|
|
@@ -71,32 +72,6 @@ export type InteractiveMessagePayload<S = never> = (InteractiveMessagePayloadBas
|
|
|
71
72
|
*/
|
|
72
73
|
components?: never;
|
|
73
74
|
});
|
|
74
|
-
/**
|
|
75
|
-
* The payload as discord.js takes it on an edit, given what the message already
|
|
76
|
-
* carries: a file already up there under a wanted name is kept rather than
|
|
77
|
-
* uploaded a second time, so an unrelated re-render neither drops nor re-sends
|
|
78
|
-
* it.
|
|
79
|
-
*
|
|
80
|
-
* A payload stating no files touches neither field, leaving the message's own
|
|
81
|
-
* attachments alone.
|
|
82
|
-
*
|
|
83
|
-
* `state` is only read for a `"card"` payload — it is what `Card.apply` needs
|
|
84
|
-
* to render the container — and is otherwise unused. No caller building an
|
|
85
|
-
* `"embeds"` payload has ever had to pass it, and still does not: it is the
|
|
86
|
-
* third, optional parameter existing two-argument calls already omit.
|
|
87
|
-
*/
|
|
88
|
-
export declare function toMessageEditOptions<S>(payload: InteractiveMessagePayload<S>, existing: readonly Attachment[], state?: S): InteractionUpdateOptions;
|
|
89
|
-
/**
|
|
90
|
-
* The single mutable cell shared by the view and the collector. Kept explicit
|
|
91
|
-
* rather than captured as a closure variable so the two always read the same
|
|
92
|
-
* reference.
|
|
93
|
-
*/
|
|
94
|
-
export interface StateStore<S> {
|
|
95
|
-
read(): S;
|
|
96
|
-
write(next: S): void;
|
|
97
|
-
}
|
|
98
|
-
/** Hold a state the collector can advance in place. */
|
|
99
|
-
export declare function createStateStore<S>(initial: S): StateStore<S>;
|
|
100
75
|
/**
|
|
101
76
|
* What {@link InteractiveView.disabledControls} hands back: enough of a payload
|
|
102
77
|
* to neutralise the message's controls in place, in whichever layout the view
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-message-collector.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/interactive-message-collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,gBAAgB,EAChB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"interactive-message-collector.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/interactive-message-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,63 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.COLLECTOR_IDLE_MS = void 0;
|
|
4
|
-
exports.toMessageEditOptions = toMessageEditOptions;
|
|
5
|
-
exports.createStateStore = createStateStore;
|
|
6
4
|
exports.mountInteractiveMessageCollector = mountInteractiveMessageCollector;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
5
|
+
const message_edit_options_1 = require("../../../discord/components/interactive-message/message-edit-options");
|
|
6
|
+
const describe_error_1 = require("../../../errors/describe-error");
|
|
9
7
|
/** How long an interactive message stays live without a click. */
|
|
10
8
|
exports.COLLECTOR_IDLE_MS = 5 * 60 * 1000;
|
|
11
|
-
/**
|
|
12
|
-
* The payload as discord.js takes it on an edit, given what the message already
|
|
13
|
-
* carries: a file already up there under a wanted name is kept rather than
|
|
14
|
-
* uploaded a second time, so an unrelated re-render neither drops nor re-sends
|
|
15
|
-
* it.
|
|
16
|
-
*
|
|
17
|
-
* A payload stating no files touches neither field, leaving the message's own
|
|
18
|
-
* attachments alone.
|
|
19
|
-
*
|
|
20
|
-
* `state` is only read for a `"card"` payload — it is what `Card.apply` needs
|
|
21
|
-
* to render the container — and is otherwise unused. No caller building an
|
|
22
|
-
* `"embeds"` payload has ever had to pass it, and still does not: it is the
|
|
23
|
-
* third, optional parameter existing two-argument calls already omit.
|
|
24
|
-
*/
|
|
25
|
-
function toMessageEditOptions(payload, existing, state) {
|
|
26
|
-
const { files, allowedMentions } = payload;
|
|
27
|
-
const mentions = allowedMentions === undefined ? {} : { allowedMentions };
|
|
28
|
-
const attachments = files === undefined ? {} : (0, message_attachments_1.planMessageAttachments)(existing, files);
|
|
29
|
-
if (payload.layout === "card") {
|
|
30
|
-
if (state === undefined) {
|
|
31
|
-
// Only reachable once a caller actually builds a `"card"` payload
|
|
32
|
-
// without threading the state its `Card` needs — a programming error
|
|
33
|
-
// in that caller, not something a member's click can trigger.
|
|
34
|
-
throw new Error('toMessageEditOptions: a "card" layout payload needs the state its Card was ' +
|
|
35
|
-
"declared over to call Card.apply, and none was given.");
|
|
36
|
-
}
|
|
37
|
-
return {
|
|
38
|
-
components: [payload.card.apply(state, false), ...(payload.controls ?? [])],
|
|
39
|
-
...mentions,
|
|
40
|
-
...attachments,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
const { embeds, components } = payload;
|
|
44
|
-
return { embeds, components, ...mentions, ...attachments };
|
|
45
|
-
}
|
|
46
|
-
/** Hold a state the collector can advance in place. */
|
|
47
|
-
function createStateStore(initial) {
|
|
48
|
-
let state = initial;
|
|
49
|
-
return {
|
|
50
|
-
read: () => state,
|
|
51
|
-
write: (next) => {
|
|
52
|
-
state = next;
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
9
|
function mountInteractiveMessageCollector(deps) {
|
|
57
10
|
const { interaction, response, buttons, view, store, ownerId, idleMs, logger } = deps;
|
|
58
11
|
const selects = deps.selects ?? [];
|
|
59
12
|
function renderOnto(collected, next) {
|
|
60
|
-
return toMessageEditOptions(view.render(next), [...collected.message.attachments.values()], next);
|
|
13
|
+
return (0, message_edit_options_1.toMessageEditOptions)(view.render(next), [...collected.message.attachments.values()], next);
|
|
61
14
|
}
|
|
62
15
|
function createClickContext(clicked) {
|
|
63
16
|
return {
|
|
@@ -101,14 +54,14 @@ function mountInteractiveMessageCollector(deps) {
|
|
|
101
54
|
// interaction failed — so it is a defect to be found, not a hiccup. The
|
|
102
55
|
// custom id says which control it was, since the state that produced it
|
|
103
56
|
// is gone by the time anybody reads this.
|
|
104
|
-
logger.error({ err: (0,
|
|
57
|
+
logger.error({ err: (0, describe_error_1.describeError)(error), customId: collected.customId }, "Failed to update interactive message");
|
|
105
58
|
}
|
|
106
59
|
}
|
|
107
60
|
function disableOnEnd() {
|
|
108
61
|
// The message outlives the collector, so leave the controls visibly inert
|
|
109
62
|
// instead of letting clicks fail silently.
|
|
110
63
|
interaction.editReply(view.disabledControls(store.read())).catch((error) => {
|
|
111
|
-
logger.warn({ err: (0,
|
|
64
|
+
logger.warn({ err: (0, describe_error_1.describeError)(error) }, "Failed to disable interactive message controls");
|
|
112
65
|
});
|
|
113
66
|
}
|
|
114
67
|
/**
|
|
@@ -126,7 +79,7 @@ function mountInteractiveMessageCollector(deps) {
|
|
|
126
79
|
await deps.onEnd?.();
|
|
127
80
|
}
|
|
128
81
|
catch (error) {
|
|
129
|
-
logger.warn({ err: (0,
|
|
82
|
+
logger.warn({ err: (0, describe_error_1.describeError)(error) }, "Failed to close interactive message");
|
|
130
83
|
}
|
|
131
84
|
}
|
|
132
85
|
// No `componentType`: the collector takes every message component the view
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-message-collector.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/interactive-message-collector.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"interactive-message-collector.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/interactive-message-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Attachment, InteractionUpdateOptions } from "discord.js";
|
|
2
|
+
import type { InteractiveMessagePayload } from "../../../discord/components/interactive-message/interactive-message-collector";
|
|
3
|
+
/**
|
|
4
|
+
* The payload as discord.js takes it on an edit, given what the message already
|
|
5
|
+
* carries: a file already up there under a wanted name is kept rather than
|
|
6
|
+
* uploaded a second time, so an unrelated re-render neither drops nor re-sends
|
|
7
|
+
* it.
|
|
8
|
+
*
|
|
9
|
+
* A payload stating no files touches neither field, leaving the message's own
|
|
10
|
+
* attachments alone.
|
|
11
|
+
*
|
|
12
|
+
* `state` is only read for a `"card"` payload — it is what `Card.apply` needs
|
|
13
|
+
* to render the container — and is otherwise unused. No caller building an
|
|
14
|
+
* `"embeds"` payload has ever had to pass it, and still does not: it is the
|
|
15
|
+
* third, optional parameter existing two-argument calls already omit.
|
|
16
|
+
*/
|
|
17
|
+
export declare function toMessageEditOptions<S>(payload: InteractiveMessagePayload<S>, existing: readonly Attachment[], state?: S): InteractionUpdateOptions;
|
|
18
|
+
//# sourceMappingURL=message-edit-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-edit-options.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/message-edit-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wEAAwE,CAAC;AAGxH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACrC,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC,EACrC,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,KAAK,CAAC,EAAE,CAAC,GACP,wBAAwB,CAwB1B"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toMessageEditOptions = toMessageEditOptions;
|
|
4
|
+
const message_attachments_1 = require("../../../discord/ui/message-attachments");
|
|
5
|
+
/**
|
|
6
|
+
* The payload as discord.js takes it on an edit, given what the message already
|
|
7
|
+
* carries: a file already up there under a wanted name is kept rather than
|
|
8
|
+
* uploaded a second time, so an unrelated re-render neither drops nor re-sends
|
|
9
|
+
* it.
|
|
10
|
+
*
|
|
11
|
+
* A payload stating no files touches neither field, leaving the message's own
|
|
12
|
+
* attachments alone.
|
|
13
|
+
*
|
|
14
|
+
* `state` is only read for a `"card"` payload — it is what `Card.apply` needs
|
|
15
|
+
* to render the container — and is otherwise unused. No caller building an
|
|
16
|
+
* `"embeds"` payload has ever had to pass it, and still does not: it is the
|
|
17
|
+
* third, optional parameter existing two-argument calls already omit.
|
|
18
|
+
*/
|
|
19
|
+
function toMessageEditOptions(payload, existing, state) {
|
|
20
|
+
const { files, allowedMentions } = payload;
|
|
21
|
+
const mentions = allowedMentions === undefined ? {} : { allowedMentions };
|
|
22
|
+
const attachments = files === undefined ? {} : (0, message_attachments_1.planMessageAttachments)(existing, files);
|
|
23
|
+
if (payload.layout === "card") {
|
|
24
|
+
if (state === undefined) {
|
|
25
|
+
// Only reachable once a caller actually builds a `"card"` payload
|
|
26
|
+
// without threading the state its `Card` needs — a programming error
|
|
27
|
+
// in that caller, not something a member's click can trigger.
|
|
28
|
+
throw new Error('toMessageEditOptions: a "card" layout payload needs the state its Card was ' +
|
|
29
|
+
"declared over to call Card.apply, and none was given.");
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
components: [payload.card.apply(state, false), ...(payload.controls ?? [])],
|
|
33
|
+
...mentions,
|
|
34
|
+
...attachments,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const { embeds, components } = payload;
|
|
38
|
+
return { embeds, components, ...mentions, ...attachments };
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=message-edit-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-edit-options.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/message-edit-options.ts"],"names":[],"mappings":";;AAkBA,oDA4BC;AA5CD,0EAA0E;AAE1E;;;;;;;;;;;;;GAaG;AACH,SAAgB,oBAAoB,CACnC,OAAqC,EACrC,QAA+B,EAC/B,KAAS;IAET,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,QAAQ,GAAG,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1E,MAAM,WAAW,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,4CAAsB,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEvF,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,kEAAkE;YAClE,qEAAqE;YACrE,8DAA8D;YAC9D,MAAM,IAAI,KAAK,CACd,6EAA6E;gBAC5E,uDAAuD,CACxD,CAAC;QACH,CAAC;QACD,OAAO;YACN,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC3E,GAAG,QAAQ;YACX,GAAG,WAAW;SACd,CAAC;IACH,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;AAC5D,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ChatInputCommandInteraction } from "discord.js";
|
|
2
|
-
import { type InteractiveMessageHandle, type InteractiveSelect, type InteractiveView
|
|
2
|
+
import { type InteractiveMessageHandle, type InteractiveSelect, type InteractiveView } from "../../../discord/components/interactive-message/interactive-message-collector";
|
|
3
|
+
import { type StateStore } from "../../../discord/components/interactive-message/state-store";
|
|
3
4
|
import type { Button } from "../../../discord/interaction/button";
|
|
4
5
|
import type { Logger } from "../../../logger";
|
|
5
6
|
export interface InteractiveMessageOptions<S> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount-interactive-message.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/mount-interactive-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,2BAA2B,EAAgB,MAAM,YAAY,CAAC;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"mount-interactive-message.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/mount-interactive-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,2BAA2B,EAAgB,MAAM,YAAY,CAAC;AAC5E,OAAO,EAEN,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAEpB,MAAM,wEAAwE,CAAC;AAEhF,OAAO,EAEN,KAAK,UAAU,EACf,MAAM,sDAAsD,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,WAAW,yBAAyB,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC9C,WAAW,EAAE,2BAA2B,EACxC,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACnC,OAAO,CAAC,wBAAwB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,CA8BvE"}
|
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.mountInteractiveMessage = mountInteractiveMessage;
|
|
4
4
|
const discord_js_1 = require("discord.js");
|
|
5
5
|
const interactive_message_collector_1 = require("../../../discord/components/interactive-message/interactive-message-collector");
|
|
6
|
+
const message_edit_options_1 = require("../../../discord/components/interactive-message/message-edit-options");
|
|
7
|
+
const state_store_1 = require("../../../discord/components/interactive-message/state-store");
|
|
6
8
|
/**
|
|
7
9
|
* Send an interactive message and keep its controls live for a bounded time:
|
|
8
10
|
* renders the initial state, then hands the message to the collector.
|
|
@@ -14,11 +16,11 @@ const interactive_message_collector_1 = require("../../../discord/components/int
|
|
|
14
16
|
* Call it on an already-deferred interaction.
|
|
15
17
|
*/
|
|
16
18
|
async function mountInteractiveMessage(interaction, options) {
|
|
17
|
-
const store = (0,
|
|
19
|
+
const store = (0, state_store_1.createStateStore)(options.initialState);
|
|
18
20
|
const initial = options.view.render(store.read());
|
|
19
21
|
// A deferred reply carries no attachment yet, so every file the first render
|
|
20
22
|
// states is uploaded — there is nothing up there that could be kept instead.
|
|
21
|
-
const editOptions = (0,
|
|
23
|
+
const editOptions = (0, message_edit_options_1.toMessageEditOptions)(initial, [], store.read());
|
|
22
24
|
const response = await interaction.editReply(
|
|
23
25
|
// `IS_COMPONENTS_V2` is set on the *first* send only, never again: Discord
|
|
24
26
|
// treats it as irreversible on a message — an edit can never clear it —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount-interactive-message.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/mount-interactive-message.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"mount-interactive-message.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/mount-interactive-message.ts"],"names":[],"mappings":";;AAuCA,0DAiCC;AAxED,2CAA4E;AAC5E,0HAMgF;AAChF,wGAAqG;AACrG,sFAG8D;AAiB9D;;;;;;;;;GASG;AACI,KAAK,UAAU,uBAAuB,CAC5C,WAAwC,EACxC,OAAqC;IAErC,MAAM,KAAK,GAAG,IAAA,8BAAgB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,WAAW,GAAG,IAAA,2CAAoB,EAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS;IAC3C,2EAA2E;IAC3E,wEAAwE;IACxE,uEAAuE;IACvE,wDAAwD;IACxD,OAAO,CAAC,MAAM,KAAK,MAAM;QACxB,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,yBAAY,CAAC,cAAc,EAAE;QACxD,CAAC,CAAC,WAAW,CACd,CAAC;IAEF,MAAM,MAAM,GAAG,IAAA,gEAAgC,EAAC;QAC/C,WAAW;QACX,QAAQ;QACR,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAChE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,iDAAiB;QAC3C,MAAM,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single mutable cell shared by the view and the collector. Kept explicit
|
|
3
|
+
* rather than captured as a closure variable so the two always read the same
|
|
4
|
+
* reference.
|
|
5
|
+
*/
|
|
6
|
+
export interface StateStore<S> {
|
|
7
|
+
read(): S;
|
|
8
|
+
write(next: S): void;
|
|
9
|
+
}
|
|
10
|
+
/** Hold a state the collector can advance in place. */
|
|
11
|
+
export declare function createStateStore<S>(initial: S): StateStore<S>;
|
|
12
|
+
//# sourceMappingURL=state-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-store.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/state-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,CAAC;IACV,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;CACrB;AAED,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAQ7D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createStateStore = createStateStore;
|
|
4
|
+
/** Hold a state the collector can advance in place. */
|
|
5
|
+
function createStateStore(initial) {
|
|
6
|
+
let state = initial;
|
|
7
|
+
return {
|
|
8
|
+
read: () => state,
|
|
9
|
+
write: (next) => {
|
|
10
|
+
state = next;
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=state-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-store.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/state-store.ts"],"names":[],"mappings":";;AAWA,4CAQC;AATD,uDAAuD;AACvD,SAAgB,gBAAgB,CAAI,OAAU;IAC7C,IAAI,KAAK,GAAG,OAAO,CAAC;IACpB,OAAO;QACN,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK;QACjB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,KAAK,GAAG,IAAI,CAAC;QACd,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mountPaginator = mountPaginator;
|
|
4
|
-
const
|
|
4
|
+
const interactive_message_collector_1 = require("../../../discord/components/interactive-message/interactive-message-collector");
|
|
5
|
+
const message_edit_options_1 = require("../../../discord/components/interactive-message/message-edit-options");
|
|
6
|
+
const state_store_1 = require("../../../discord/components/interactive-message/state-store");
|
|
5
7
|
const page_state_1 = require("../../../discord/components/paginator/page-state");
|
|
6
8
|
const paginator_buttons_1 = require("../../../discord/components/paginator/paginator-buttons");
|
|
7
9
|
const paginator_view_1 = require("../../../discord/components/paginator/paginator-view");
|
|
@@ -17,24 +19,24 @@ const paginator_view_1 = require("../../../discord/components/paginator/paginato
|
|
|
17
19
|
async function mountPaginator(interaction, options) {
|
|
18
20
|
const { items, pageSize, ownerId, render, logger } = options;
|
|
19
21
|
const count = (0, page_state_1.pageCount)(items.length, pageSize);
|
|
20
|
-
const store = (0,
|
|
22
|
+
const store = (0, state_store_1.createStateStore)((0, page_state_1.createPageState)(options.initialPage ?? 1, count));
|
|
21
23
|
const buttons = (0, paginator_buttons_1.createPaginatorButtons)(count, (0, paginator_buttons_1.resolveLabels)(options.labels));
|
|
22
24
|
const view = (0, paginator_view_1.createPaginatorView)({ items, pageSize, count, render, buttons });
|
|
23
|
-
const response = await interaction.editReply((0,
|
|
25
|
+
const response = await interaction.editReply((0, message_edit_options_1.toMessageEditOptions)(view.render(store.read()), []));
|
|
24
26
|
// A single page has nothing to navigate to, so it needs no collector at all —
|
|
25
27
|
// a pagination-specific rule, which is why it lives here and not in the
|
|
26
28
|
// generic mechanism.
|
|
27
29
|
if (count <= 1) {
|
|
28
30
|
return;
|
|
29
31
|
}
|
|
30
|
-
(0,
|
|
32
|
+
(0, interactive_message_collector_1.mountInteractiveMessageCollector)({
|
|
31
33
|
interaction,
|
|
32
34
|
response,
|
|
33
35
|
buttons,
|
|
34
36
|
view,
|
|
35
37
|
store,
|
|
36
38
|
ownerId,
|
|
37
|
-
idleMs: options.idleMs ??
|
|
39
|
+
idleMs: options.idleMs ?? interactive_message_collector_1.COLLECTOR_IDLE_MS,
|
|
38
40
|
logger,
|
|
39
41
|
});
|
|
40
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount-paginator.js","sourceRoot":"","sources":["../../../../src/discord/components/paginator/mount-paginator.ts"],"names":[],"mappings":";;AAuCA,wCA6BC;AAnED,
|
|
1
|
+
{"version":3,"file":"mount-paginator.js","sourceRoot":"","sources":["../../../../src/discord/components/paginator/mount-paginator.ts"],"names":[],"mappings":";;AAuCA,wCA6BC;AAnED,0HAGgF;AAChF,wGAAqG;AACrG,sFAAwF;AACxF,0EAAuF;AACvF,wFAI0D;AAC1D,kFAGuD;AAcvD;;;;;;;;GAQG;AACI,KAAK,UAAU,cAAc,CACnC,WAAwC,EACxC,OAA4B;IAE5B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC7D,MAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,IAAA,8BAAgB,EAAC,IAAA,4BAAe,EAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,IAAA,0CAAsB,EAAC,KAAK,EAAE,IAAA,iCAAa,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAA,oCAAmB,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAE9E,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,IAAA,2CAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAElG,8EAA8E;IAC9E,wEAAwE;IACxE,qBAAqB;IACrB,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IAED,IAAA,gEAAgC,EAAC;QAChC,WAAW;QACX,QAAQ;QACR,OAAO;QACP,IAAI;QACJ,KAAK;QACL,OAAO;QACP,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,iDAAiB;QAC3C,MAAM;KACN,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EmbedBuilder } from "discord.js";
|
|
2
|
-
import type { InteractiveMessagePayload, InteractiveView } from "../../../discord/components/interactive-message";
|
|
2
|
+
import type { InteractiveMessagePayload, InteractiveView } from "../../../discord/components/interactive-message/interactive-message-collector";
|
|
3
3
|
import { type PageState } from "../../../discord/components/paginator/page-state";
|
|
4
4
|
import { type Button } from "../../../discord/interaction/button";
|
|
5
5
|
/** Builds the embed shown for one page; supplied by the caller. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paginator-view.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/paginator/paginator-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmC,YAAY,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EACX,yBAAyB,EACzB,eAAe,EACf,MAAM,
|
|
1
|
+
{"version":3,"file":"paginator-view.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/paginator/paginator-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmC,YAAY,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EACX,yBAAyB,EACzB,eAAe,EACf,MAAM,wEAAwE,CAAC;AAChF,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,8BAA8B,CAAC;AAE5E,mEAAmE;AACnE,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAChC,SAAS,EAAE,CAAC,EAAE,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,KACT,YAAY,CAAC;AAElB;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAEpE,MAAM,WAAW,iBAAiB,CAAC,CAAC;IACnC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AAEvD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,aAAa,CAuBhF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EmbedBuilder } from "discord.js";
|
|
2
|
-
import {
|
|
2
|
+
import type { ComponentHandler } from "../../discord/components/component-router";
|
|
3
3
|
import { type PaginatorLabels } from "../../discord/components/paginator/paginator-buttons";
|
|
4
4
|
import type { PaginatorPayload } from "../../discord/components/paginator/paginator-view";
|
|
5
5
|
/** One rendered page: what the caller's data source produces for a page index. */
|