@neontechspace/fluxerly 1000.0.0-nightly.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +833 -0
- package/LICENSE +201 -0
- package/README.md +129 -0
- package/agents/AGENTS.md +195 -0
- package/dist/api/default/application.d.ts +34 -0
- package/dist/api/default/application.d.ts.map +1 -0
- package/dist/api/default/application.js +2 -0
- package/dist/api/default/application.js.map +1 -0
- package/dist/api/default/attachments.d.ts +89 -0
- package/dist/api/default/attachments.d.ts.map +1 -0
- package/dist/api/default/attachments.js +2 -0
- package/dist/api/default/attachments.js.map +1 -0
- package/dist/api/default/audit-logs.d.ts +48 -0
- package/dist/api/default/audit-logs.d.ts.map +1 -0
- package/dist/api/default/audit-logs.js +2 -0
- package/dist/api/default/audit-logs.js.map +1 -0
- package/dist/api/default/bot.d.ts +200 -0
- package/dist/api/default/bot.d.ts.map +1 -0
- package/dist/api/default/bot.js +309 -0
- package/dist/api/default/bot.js.map +1 -0
- package/dist/api/default/cache.d.ts +105 -0
- package/dist/api/default/cache.d.ts.map +1 -0
- package/dist/api/default/cache.js +2 -0
- package/dist/api/default/cache.js.map +1 -0
- package/dist/api/default/channels.d.ts +249 -0
- package/dist/api/default/channels.d.ts.map +1 -0
- package/dist/api/default/channels.js +2 -0
- package/dist/api/default/channels.js.map +1 -0
- package/dist/api/default/client.d.ts +528 -0
- package/dist/api/default/client.d.ts.map +1 -0
- package/dist/api/default/client.js +301 -0
- package/dist/api/default/client.js.map +1 -0
- package/dist/api/default/collectors.d.ts +76 -0
- package/dist/api/default/collectors.d.ts.map +1 -0
- package/dist/api/default/collectors.js +2 -0
- package/dist/api/default/collectors.js.map +1 -0
- package/dist/api/default/commands.d.ts +91 -0
- package/dist/api/default/commands.d.ts.map +1 -0
- package/dist/api/default/commands.js +92 -0
- package/dist/api/default/commands.js.map +1 -0
- package/dist/api/default/direct-messages.d.ts +111 -0
- package/dist/api/default/direct-messages.d.ts.map +1 -0
- package/dist/api/default/direct-messages.js +2 -0
- package/dist/api/default/direct-messages.js.map +1 -0
- package/dist/api/default/discovery.d.ts +76 -0
- package/dist/api/default/discovery.d.ts.map +1 -0
- package/dist/api/default/discovery.js +2 -0
- package/dist/api/default/discovery.js.map +1 -0
- package/dist/api/default/emojis.d.ts +88 -0
- package/dist/api/default/emojis.d.ts.map +1 -0
- package/dist/api/default/emojis.js +2 -0
- package/dist/api/default/emojis.js.map +1 -0
- package/dist/api/default/events.d.ts +127 -0
- package/dist/api/default/events.d.ts.map +1 -0
- package/dist/api/default/events.js +2 -0
- package/dist/api/default/events.js.map +1 -0
- package/dist/api/default/gateway.d.ts +62 -0
- package/dist/api/default/gateway.d.ts.map +1 -0
- package/dist/api/default/gateway.js +2 -0
- package/dist/api/default/gateway.js.map +1 -0
- package/dist/api/default/guards.d.ts +87 -0
- package/dist/api/default/guards.d.ts.map +1 -0
- package/dist/api/default/guards.js +78 -0
- package/dist/api/default/guards.js.map +1 -0
- package/dist/api/default/guilds.d.ts +230 -0
- package/dist/api/default/guilds.d.ts.map +1 -0
- package/dist/api/default/guilds.js +2 -0
- package/dist/api/default/guilds.js.map +1 -0
- package/dist/api/default/helpers.d.ts +79 -0
- package/dist/api/default/helpers.d.ts.map +1 -0
- package/dist/api/default/helpers.js +79 -0
- package/dist/api/default/helpers.js.map +1 -0
- package/dist/api/default/instance.d.ts +47 -0
- package/dist/api/default/instance.d.ts.map +1 -0
- package/dist/api/default/instance.js +2 -0
- package/dist/api/default/instance.js.map +1 -0
- package/dist/api/default/invites.d.ts +57 -0
- package/dist/api/default/invites.d.ts.map +1 -0
- package/dist/api/default/invites.js +2 -0
- package/dist/api/default/invites.js.map +1 -0
- package/dist/api/default/logging.d.ts +37 -0
- package/dist/api/default/logging.d.ts.map +1 -0
- package/dist/api/default/logging.js +2 -0
- package/dist/api/default/logging.js.map +1 -0
- package/dist/api/default/members.d.ts +442 -0
- package/dist/api/default/members.d.ts.map +1 -0
- package/dist/api/default/members.js +2 -0
- package/dist/api/default/members.js.map +1 -0
- package/dist/api/default/messages.d.ts +898 -0
- package/dist/api/default/messages.d.ts.map +1 -0
- package/dist/api/default/messages.js +2 -0
- package/dist/api/default/messages.js.map +1 -0
- package/dist/api/default/oauth.d.ts +168 -0
- package/dist/api/default/oauth.d.ts.map +1 -0
- package/dist/api/default/oauth.js +84 -0
- package/dist/api/default/oauth.js.map +1 -0
- package/dist/api/default/permissions.d.ts +44 -0
- package/dist/api/default/permissions.d.ts.map +1 -0
- package/dist/api/default/permissions.js +2 -0
- package/dist/api/default/permissions.js.map +1 -0
- package/dist/api/default/presence.d.ts +88 -0
- package/dist/api/default/presence.d.ts.map +1 -0
- package/dist/api/default/presence.js +2 -0
- package/dist/api/default/presence.js.map +1 -0
- package/dist/api/default/rest.d.ts +28 -0
- package/dist/api/default/rest.d.ts.map +1 -0
- package/dist/api/default/rest.js +2 -0
- package/dist/api/default/rest.js.map +1 -0
- package/dist/api/default/results.d.ts +31 -0
- package/dist/api/default/results.d.ts.map +1 -0
- package/dist/api/default/results.js +14 -0
- package/dist/api/default/results.js.map +1 -0
- package/dist/api/default/roles.d.ts +119 -0
- package/dist/api/default/roles.d.ts.map +1 -0
- package/dist/api/default/roles.js +2 -0
- package/dist/api/default/roles.js.map +1 -0
- package/dist/api/default/stickers.d.ts +92 -0
- package/dist/api/default/stickers.d.ts.map +1 -0
- package/dist/api/default/stickers.js +2 -0
- package/dist/api/default/stickers.js.map +1 -0
- package/dist/api/default/supervisor.d.ts +51 -0
- package/dist/api/default/supervisor.d.ts.map +1 -0
- package/dist/api/default/supervisor.js +53 -0
- package/dist/api/default/supervisor.js.map +1 -0
- package/dist/api/default/threads.d.ts +158 -0
- package/dist/api/default/threads.d.ts.map +1 -0
- package/dist/api/default/threads.js +2 -0
- package/dist/api/default/threads.js.map +1 -0
- package/dist/api/default/users.d.ts +73 -0
- package/dist/api/default/users.d.ts.map +1 -0
- package/dist/api/default/users.js +2 -0
- package/dist/api/default/users.js.map +1 -0
- package/dist/api/default/webhook-client.d.ts +149 -0
- package/dist/api/default/webhook-client.d.ts.map +1 -0
- package/dist/api/default/webhook-client.js +69 -0
- package/dist/api/default/webhook-client.js.map +1 -0
- package/dist/api/default/webhooks.d.ts +62 -0
- package/dist/api/default/webhooks.d.ts.map +1 -0
- package/dist/api/default/webhooks.js +2 -0
- package/dist/api/default/webhooks.js.map +1 -0
- package/dist/api/effect/application.d.ts +29 -0
- package/dist/api/effect/application.d.ts.map +1 -0
- package/dist/api/effect/application.js +2 -0
- package/dist/api/effect/application.js.map +1 -0
- package/dist/api/effect/attachments.d.ts +84 -0
- package/dist/api/effect/attachments.d.ts.map +1 -0
- package/dist/api/effect/attachments.js +2 -0
- package/dist/api/effect/attachments.js.map +1 -0
- package/dist/api/effect/audit-logs.d.ts +42 -0
- package/dist/api/effect/audit-logs.d.ts.map +1 -0
- package/dist/api/effect/audit-logs.js +2 -0
- package/dist/api/effect/audit-logs.js.map +1 -0
- package/dist/api/effect/bot.d.ts +233 -0
- package/dist/api/effect/bot.d.ts.map +1 -0
- package/dist/api/effect/bot.js +230 -0
- package/dist/api/effect/bot.js.map +1 -0
- package/dist/api/effect/cache.d.ts +103 -0
- package/dist/api/effect/cache.d.ts.map +1 -0
- package/dist/api/effect/cache.js +2 -0
- package/dist/api/effect/cache.js.map +1 -0
- package/dist/api/effect/channels.d.ts +231 -0
- package/dist/api/effect/channels.d.ts.map +1 -0
- package/dist/api/effect/channels.js +2 -0
- package/dist/api/effect/channels.js.map +1 -0
- package/dist/api/effect/client.d.ts +622 -0
- package/dist/api/effect/client.d.ts.map +1 -0
- package/dist/api/effect/client.js +191 -0
- package/dist/api/effect/client.js.map +1 -0
- package/dist/api/effect/collectors.d.ts +90 -0
- package/dist/api/effect/collectors.d.ts.map +1 -0
- package/dist/api/effect/collectors.js +2 -0
- package/dist/api/effect/collectors.js.map +1 -0
- package/dist/api/effect/commands.d.ts +86 -0
- package/dist/api/effect/commands.d.ts.map +1 -0
- package/dist/api/effect/commands.js +87 -0
- package/dist/api/effect/commands.js.map +1 -0
- package/dist/api/effect/direct-messages.d.ts +102 -0
- package/dist/api/effect/direct-messages.d.ts.map +1 -0
- package/dist/api/effect/direct-messages.js +2 -0
- package/dist/api/effect/direct-messages.js.map +1 -0
- package/dist/api/effect/discovery.d.ts +68 -0
- package/dist/api/effect/discovery.d.ts.map +1 -0
- package/dist/api/effect/discovery.js +2 -0
- package/dist/api/effect/discovery.js.map +1 -0
- package/dist/api/effect/emojis.d.ts +77 -0
- package/dist/api/effect/emojis.d.ts.map +1 -0
- package/dist/api/effect/emojis.js +2 -0
- package/dist/api/effect/emojis.js.map +1 -0
- package/dist/api/effect/events.d.ts +78 -0
- package/dist/api/effect/events.d.ts.map +1 -0
- package/dist/api/effect/events.js +12 -0
- package/dist/api/effect/events.js.map +1 -0
- package/dist/api/effect/failures.d.ts +14 -0
- package/dist/api/effect/failures.d.ts.map +1 -0
- package/dist/api/effect/failures.js +2 -0
- package/dist/api/effect/failures.js.map +1 -0
- package/dist/api/effect/gateway.d.ts +63 -0
- package/dist/api/effect/gateway.d.ts.map +1 -0
- package/dist/api/effect/gateway.js +2 -0
- package/dist/api/effect/gateway.js.map +1 -0
- package/dist/api/effect/guards.d.ts +91 -0
- package/dist/api/effect/guards.d.ts.map +1 -0
- package/dist/api/effect/guards.js +94 -0
- package/dist/api/effect/guards.js.map +1 -0
- package/dist/api/effect/guilds.d.ts +221 -0
- package/dist/api/effect/guilds.d.ts.map +1 -0
- package/dist/api/effect/guilds.js +2 -0
- package/dist/api/effect/guilds.js.map +1 -0
- package/dist/api/effect/helpers.d.ts +300 -0
- package/dist/api/effect/helpers.d.ts.map +1 -0
- package/dist/api/effect/helpers.js +156 -0
- package/dist/api/effect/helpers.js.map +1 -0
- package/dist/api/effect/hierarchy.d.ts +26 -0
- package/dist/api/effect/hierarchy.d.ts.map +1 -0
- package/dist/api/effect/hierarchy.js +26 -0
- package/dist/api/effect/hierarchy.js.map +1 -0
- package/dist/api/effect/instance.d.ts +46 -0
- package/dist/api/effect/instance.d.ts.map +1 -0
- package/dist/api/effect/instance.js +8 -0
- package/dist/api/effect/instance.js.map +1 -0
- package/dist/api/effect/invites.d.ts +49 -0
- package/dist/api/effect/invites.d.ts.map +1 -0
- package/dist/api/effect/invites.js +2 -0
- package/dist/api/effect/invites.js.map +1 -0
- package/dist/api/effect/logging.d.ts +37 -0
- package/dist/api/effect/logging.d.ts.map +1 -0
- package/dist/api/effect/logging.js +2 -0
- package/dist/api/effect/logging.js.map +1 -0
- package/dist/api/effect/members.d.ts +433 -0
- package/dist/api/effect/members.d.ts.map +1 -0
- package/dist/api/effect/members.js +2 -0
- package/dist/api/effect/members.js.map +1 -0
- package/dist/api/effect/messages.d.ts +877 -0
- package/dist/api/effect/messages.d.ts.map +1 -0
- package/dist/api/effect/messages.js +2 -0
- package/dist/api/effect/messages.js.map +1 -0
- package/dist/api/effect/oauth.d.ts +148 -0
- package/dist/api/effect/oauth.d.ts.map +1 -0
- package/dist/api/effect/oauth.js +51 -0
- package/dist/api/effect/oauth.js.map +1 -0
- package/dist/api/effect/permissions.d.ts +41 -0
- package/dist/api/effect/permissions.d.ts.map +1 -0
- package/dist/api/effect/permissions.js +2 -0
- package/dist/api/effect/permissions.js.map +1 -0
- package/dist/api/effect/presence.d.ts +83 -0
- package/dist/api/effect/presence.d.ts.map +1 -0
- package/dist/api/effect/presence.js +2 -0
- package/dist/api/effect/presence.js.map +1 -0
- package/dist/api/effect/rest.d.ts +27 -0
- package/dist/api/effect/rest.d.ts.map +1 -0
- package/dist/api/effect/rest.js +2 -0
- package/dist/api/effect/rest.js.map +1 -0
- package/dist/api/effect/roles.d.ts +104 -0
- package/dist/api/effect/roles.d.ts.map +1 -0
- package/dist/api/effect/roles.js +2 -0
- package/dist/api/effect/roles.js.map +1 -0
- package/dist/api/effect/service.d.ts +76 -0
- package/dist/api/effect/service.d.ts.map +1 -0
- package/dist/api/effect/service.js +79 -0
- package/dist/api/effect/service.js.map +1 -0
- package/dist/api/effect/stickers.d.ts +81 -0
- package/dist/api/effect/stickers.d.ts.map +1 -0
- package/dist/api/effect/stickers.js +2 -0
- package/dist/api/effect/stickers.js.map +1 -0
- package/dist/api/effect/supervisor.d.ts +56 -0
- package/dist/api/effect/supervisor.d.ts.map +1 -0
- package/dist/api/effect/supervisor.js +58 -0
- package/dist/api/effect/supervisor.js.map +1 -0
- package/dist/api/effect/threads.d.ts +154 -0
- package/dist/api/effect/threads.d.ts.map +1 -0
- package/dist/api/effect/threads.js +2 -0
- package/dist/api/effect/threads.js.map +1 -0
- package/dist/api/effect/users.d.ts +62 -0
- package/dist/api/effect/users.d.ts.map +1 -0
- package/dist/api/effect/users.js +2 -0
- package/dist/api/effect/users.js.map +1 -0
- package/dist/api/effect/webhook-client.d.ts +140 -0
- package/dist/api/effect/webhook-client.d.ts.map +1 -0
- package/dist/api/effect/webhook-client.js +50 -0
- package/dist/api/effect/webhook-client.js.map +1 -0
- package/dist/api/effect/webhooks.d.ts +54 -0
- package/dist/api/effect/webhooks.d.ts.map +1 -0
- package/dist/api/effect/webhooks.js +2 -0
- package/dist/api/effect/webhooks.js.map +1 -0
- package/dist/api-errors.d.ts +609 -0
- package/dist/api-errors.d.ts.map +1 -0
- package/dist/api-errors.js +589 -0
- package/dist/api-errors.js.map +1 -0
- package/dist/application.d.ts +85 -0
- package/dist/application.d.ts.map +1 -0
- package/dist/application.js +44 -0
- package/dist/application.js.map +1 -0
- package/dist/assets.d.ts +197 -0
- package/dist/assets.d.ts.map +1 -0
- package/dist/assets.js +419 -0
- package/dist/assets.js.map +1 -0
- package/dist/attachments.d.ts +400 -0
- package/dist/attachments.d.ts.map +1 -0
- package/dist/attachments.js +88 -0
- package/dist/attachments.js.map +1 -0
- package/dist/audit-logs.d.ts +292 -0
- package/dist/audit-logs.d.ts.map +1 -0
- package/dist/audit-logs.js +46 -0
- package/dist/audit-logs.js.map +1 -0
- package/dist/bot-runner.d.ts +69 -0
- package/dist/bot-runner.d.ts.map +1 -0
- package/dist/bot-runner.js +41 -0
- package/dist/bot-runner.js.map +1 -0
- package/dist/builders.d.ts +153 -0
- package/dist/builders.d.ts.map +1 -0
- package/dist/builders.js +326 -0
- package/dist/builders.js.map +1 -0
- package/dist/cache.d.ts +187 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +2 -0
- package/dist/cache.js.map +1 -0
- package/dist/channels.d.ts +903 -0
- package/dist/channels.d.ts.map +1 -0
- package/dist/channels.js +125 -0
- package/dist/channels.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +65 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +645 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +2 -0
- package/dist/client.js.map +1 -0
- package/dist/collectors.d.ts +205 -0
- package/dist/collectors.d.ts.map +1 -0
- package/dist/collectors.js +71 -0
- package/dist/collectors.js.map +1 -0
- package/dist/colors.d.ts +55 -0
- package/dist/colors.d.ts.map +1 -0
- package/dist/colors.js +40 -0
- package/dist/colors.js.map +1 -0
- package/dist/command-arguments.d.ts +353 -0
- package/dist/command-arguments.d.ts.map +1 -0
- package/dist/command-arguments.js +2 -0
- package/dist/command-arguments.js.map +1 -0
- package/dist/command-help.d.ts +54 -0
- package/dist/command-help.d.ts.map +1 -0
- package/dist/command-help.js +2 -0
- package/dist/command-help.js.map +1 -0
- package/dist/commands.d.ts +328 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +62 -0
- package/dist/commands.js.map +1 -0
- package/dist/counts.d.ts +124 -0
- package/dist/counts.d.ts.map +1 -0
- package/dist/counts.js +52 -0
- package/dist/counts.js.map +1 -0
- package/dist/default-commands.d.ts +400 -0
- package/dist/default-commands.d.ts.map +1 -0
- package/dist/default-commands.js +488 -0
- package/dist/default-commands.js.map +1 -0
- package/dist/default-supervisor.d.ts +111 -0
- package/dist/default-supervisor.d.ts.map +1 -0
- package/dist/default-supervisor.js +277 -0
- package/dist/default-supervisor.js.map +1 -0
- package/dist/discovery.d.ts +223 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +18 -0
- package/dist/discovery.js.map +1 -0
- package/dist/effect-testing.d.ts +388 -0
- package/dist/effect-testing.d.ts.map +1 -0
- package/dist/effect-testing.js +261 -0
- package/dist/effect-testing.js.map +1 -0
- package/dist/effect.d.ts +220 -0
- package/dist/effect.d.ts.map +1 -0
- package/dist/effect.js +101 -0
- package/dist/effect.js.map +1 -0
- package/dist/embeds.d.ts +243 -0
- package/dist/embeds.d.ts.map +1 -0
- package/dist/embeds.js +2 -0
- package/dist/embeds.js.map +1 -0
- package/dist/error-tools.d.ts +101 -0
- package/dist/error-tools.d.ts.map +1 -0
- package/dist/error-tools.js +125 -0
- package/dist/error-tools.js.map +1 -0
- package/dist/errors.d.ts +386 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +440 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.d.ts +798 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +2 -0
- package/dist/events.js.map +1 -0
- package/dist/expressions.d.ts +188 -0
- package/dist/expressions.d.ts.map +1 -0
- package/dist/expressions.js +2 -0
- package/dist/expressions.js.map +1 -0
- package/dist/failures.d.ts +53 -0
- package/dist/failures.d.ts.map +1 -0
- package/dist/failures.js +2 -0
- package/dist/failures.js.map +1 -0
- package/dist/gateway.d.ts +48 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +60 -0
- package/dist/gateway.js.map +1 -0
- package/dist/guilds.d.ts +923 -0
- package/dist/guilds.d.ts.map +1 -0
- package/dist/guilds.js +204 -0
- package/dist/guilds.js.map +1 -0
- package/dist/helpers.d.ts +423 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +434 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +228 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +109 -0
- package/dist/index.js.map +1 -0
- package/dist/input-validation.d.ts +51 -0
- package/dist/input-validation.d.ts.map +1 -0
- package/dist/input-validation.js +34 -0
- package/dist/input-validation.js.map +1 -0
- package/dist/instance.d.ts +101 -0
- package/dist/instance.d.ts.map +1 -0
- package/dist/instance.js +2 -0
- package/dist/instance.js.map +1 -0
- package/dist/internal/agents-section.d.ts +22 -0
- package/dist/internal/agents-section.d.ts.map +1 -0
- package/dist/internal/agents-section.js +101 -0
- package/dist/internal/agents-section.js.map +1 -0
- package/dist/internal/application.d.ts +16 -0
- package/dist/internal/application.d.ts.map +1 -0
- package/dist/internal/application.js +33 -0
- package/dist/internal/application.js.map +1 -0
- package/dist/internal/attachment-refresh.d.ts +18 -0
- package/dist/internal/attachment-refresh.d.ts.map +1 -0
- package/dist/internal/attachment-refresh.js +39 -0
- package/dist/internal/attachment-refresh.js.map +1 -0
- package/dist/internal/attachments.d.ts +45 -0
- package/dist/internal/attachments.d.ts.map +1 -0
- package/dist/internal/attachments.js +230 -0
- package/dist/internal/attachments.js.map +1 -0
- package/dist/internal/audit-logs.d.ts +13 -0
- package/dist/internal/audit-logs.d.ts.map +1 -0
- package/dist/internal/audit-logs.js +295 -0
- package/dist/internal/audit-logs.js.map +1 -0
- package/dist/internal/audit.d.ts +12 -0
- package/dist/internal/audit.d.ts.map +1 -0
- package/dist/internal/audit.js +22 -0
- package/dist/internal/audit.js.map +1 -0
- package/dist/internal/binding/default-adapters.d.ts +22 -0
- package/dist/internal/binding/default-adapters.d.ts.map +1 -0
- package/dist/internal/binding/default-adapters.js +304 -0
- package/dist/internal/binding/default-adapters.js.map +1 -0
- package/dist/internal/binding/default.d.ts +45 -0
- package/dist/internal/binding/default.d.ts.map +1 -0
- package/dist/internal/binding/default.js +86 -0
- package/dist/internal/binding/default.js.map +1 -0
- package/dist/internal/binding/execute.d.ts +51 -0
- package/dist/internal/binding/execute.d.ts.map +1 -0
- package/dist/internal/binding/execute.js +123 -0
- package/dist/internal/binding/execute.js.map +1 -0
- package/dist/internal/binding/native-adapters.d.ts +23 -0
- package/dist/internal/binding/native-adapters.d.ts.map +1 -0
- package/dist/internal/binding/native-adapters.js +90 -0
- package/dist/internal/binding/native-adapters.js.map +1 -0
- package/dist/internal/binding/native.d.ts +41 -0
- package/dist/internal/binding/native.d.ts.map +1 -0
- package/dist/internal/binding/native.js +34 -0
- package/dist/internal/binding/native.js.map +1 -0
- package/dist/internal/binding/operations.d.ts +361 -0
- package/dist/internal/binding/operations.d.ts.map +1 -0
- package/dist/internal/binding/operations.js +272 -0
- package/dist/internal/binding/operations.js.map +1 -0
- package/dist/internal/bot-runner.d.ts +65 -0
- package/dist/internal/bot-runner.d.ts.map +1 -0
- package/dist/internal/bot-runner.js +363 -0
- package/dist/internal/bot-runner.js.map +1 -0
- package/dist/internal/cache-changes.d.ts +43 -0
- package/dist/internal/cache-changes.d.ts.map +1 -0
- package/dist/internal/cache-changes.js +320 -0
- package/dist/internal/cache-changes.js.map +1 -0
- package/dist/internal/cache.d.ts +57 -0
- package/dist/internal/cache.d.ts.map +1 -0
- package/dist/internal/cache.js +318 -0
- package/dist/internal/cache.js.map +1 -0
- package/dist/internal/calls.d.ts +16 -0
- package/dist/internal/calls.d.ts.map +1 -0
- package/dist/internal/calls.js +108 -0
- package/dist/internal/calls.js.map +1 -0
- package/dist/internal/channel-cache.d.ts +69 -0
- package/dist/internal/channel-cache.d.ts.map +1 -0
- package/dist/internal/channel-cache.js +413 -0
- package/dist/internal/channel-cache.js.map +1 -0
- package/dist/internal/channel-decode.d.ts +44 -0
- package/dist/internal/channel-decode.d.ts.map +1 -0
- package/dist/internal/channel-decode.js +377 -0
- package/dist/internal/channel-decode.js.map +1 -0
- package/dist/internal/channels.d.ts +60 -0
- package/dist/internal/channels.d.ts.map +1 -0
- package/dist/internal/channels.js +605 -0
- package/dist/internal/channels.js.map +1 -0
- package/dist/internal/client/backoff.d.ts +42 -0
- package/dist/internal/client/backoff.d.ts.map +1 -0
- package/dist/internal/client/backoff.js +36 -0
- package/dist/internal/client/backoff.js.map +1 -0
- package/dist/internal/client/configuration-fields.d.ts +14 -0
- package/dist/internal/client/configuration-fields.d.ts.map +1 -0
- package/dist/internal/client/configuration-fields.js +11 -0
- package/dist/internal/client/configuration-fields.js.map +1 -0
- package/dist/internal/client/drain.d.ts +33 -0
- package/dist/internal/client/drain.d.ts.map +1 -0
- package/dist/internal/client/drain.js +109 -0
- package/dist/internal/client/drain.js.map +1 -0
- package/dist/internal/client/intake.d.ts +27 -0
- package/dist/internal/client/intake.d.ts.map +1 -0
- package/dist/internal/client/intake.js +198 -0
- package/dist/internal/client/intake.js.map +1 -0
- package/dist/internal/client/lifetime.d.ts +35 -0
- package/dist/internal/client/lifetime.d.ts.map +1 -0
- package/dist/internal/client/lifetime.js +109 -0
- package/dist/internal/client/lifetime.js.map +1 -0
- package/dist/internal/client/shard-loop.d.ts +93 -0
- package/dist/internal/client/shard-loop.d.ts.map +1 -0
- package/dist/internal/client/shard-loop.js +452 -0
- package/dist/internal/client/shard-loop.js.map +1 -0
- package/dist/internal/client-registry.d.ts +26 -0
- package/dist/internal/client-registry.d.ts.map +1 -0
- package/dist/internal/client-registry.js +11 -0
- package/dist/internal/client-registry.js.map +1 -0
- package/dist/internal/client.d.ts +189 -0
- package/dist/internal/client.d.ts.map +1 -0
- package/dist/internal/client.js +1935 -0
- package/dist/internal/client.js.map +1 -0
- package/dist/internal/clock.d.ts +9 -0
- package/dist/internal/clock.d.ts.map +1 -0
- package/dist/internal/clock.js +5 -0
- package/dist/internal/clock.js.map +1 -0
- package/dist/internal/code-catalogue.d.ts +712 -0
- package/dist/internal/code-catalogue.d.ts.map +1 -0
- package/dist/internal/code-catalogue.js +655 -0
- package/dist/internal/code-catalogue.js.map +1 -0
- package/dist/internal/collector.d.ts +34 -0
- package/dist/internal/collector.d.ts.map +1 -0
- package/dist/internal/collector.js +400 -0
- package/dist/internal/collector.js.map +1 -0
- package/dist/internal/command-arguments.d.ts +29 -0
- package/dist/internal/command-arguments.d.ts.map +1 -0
- package/dist/internal/command-arguments.js +484 -0
- package/dist/internal/command-arguments.js.map +1 -0
- package/dist/internal/command-guards.d.ts +57 -0
- package/dist/internal/command-guards.d.ts.map +1 -0
- package/dist/internal/command-guards.js +81 -0
- package/dist/internal/command-guards.js.map +1 -0
- package/dist/internal/command-help.d.ts +15 -0
- package/dist/internal/command-help.d.ts.map +1 -0
- package/dist/internal/command-help.js +121 -0
- package/dist/internal/command-help.js.map +1 -0
- package/dist/internal/commands.d.ts +212 -0
- package/dist/internal/commands.d.ts.map +1 -0
- package/dist/internal/commands.js +1004 -0
- package/dist/internal/commands.js.map +1 -0
- package/dist/internal/configuration.d.ts +86 -0
- package/dist/internal/configuration.d.ts.map +1 -0
- package/dist/internal/configuration.js +401 -0
- package/dist/internal/configuration.js.map +1 -0
- package/dist/internal/counts.d.ts +33 -0
- package/dist/internal/counts.d.ts.map +1 -0
- package/dist/internal/counts.js +348 -0
- package/dist/internal/counts.js.map +1 -0
- package/dist/internal/decode/primitives.d.ts +30 -0
- package/dist/internal/decode/primitives.d.ts.map +1 -0
- package/dist/internal/decode/primitives.js +56 -0
- package/dist/internal/decode/primitives.js.map +1 -0
- package/dist/internal/decode/timestamp.d.ts +13 -0
- package/dist/internal/decode/timestamp.d.ts.map +1 -0
- package/dist/internal/decode/timestamp.js +27 -0
- package/dist/internal/decode/timestamp.js.map +1 -0
- package/dist/internal/decode/trace.d.ts +11 -0
- package/dist/internal/decode/trace.d.ts.map +1 -0
- package/dist/internal/decode/trace.js +69 -0
- package/dist/internal/decode/trace.js.map +1 -0
- package/dist/internal/defects.d.ts +48 -0
- package/dist/internal/defects.d.ts.map +1 -0
- package/dist/internal/defects.js +100 -0
- package/dist/internal/defects.js.map +1 -0
- package/dist/internal/effect-failures.d.ts +12 -0
- package/dist/internal/effect-failures.d.ts.map +1 -0
- package/dist/internal/effect-failures.js +45 -0
- package/dist/internal/effect-failures.js.map +1 -0
- package/dist/internal/embeds.d.ts +12 -0
- package/dist/internal/embeds.d.ts.map +1 -0
- package/dist/internal/embeds.js +308 -0
- package/dist/internal/embeds.js.map +1 -0
- package/dist/internal/events.d.ts +156 -0
- package/dist/internal/events.d.ts.map +1 -0
- package/dist/internal/events.js +1071 -0
- package/dist/internal/events.js.map +1 -0
- package/dist/internal/expiry-queue.d.ts +42 -0
- package/dist/internal/expiry-queue.d.ts.map +1 -0
- package/dist/internal/expiry-queue.js +138 -0
- package/dist/internal/expiry-queue.js.map +1 -0
- package/dist/internal/expressions.d.ts +35 -0
- package/dist/internal/expressions.d.ts.map +1 -0
- package/dist/internal/expressions.js +311 -0
- package/dist/internal/expressions.js.map +1 -0
- package/dist/internal/failures.d.ts +107 -0
- package/dist/internal/failures.d.ts.map +1 -0
- package/dist/internal/failures.js +416 -0
- package/dist/internal/failures.js.map +1 -0
- package/dist/internal/field-text.d.ts +10 -0
- package/dist/internal/field-text.d.ts.map +1 -0
- package/dist/internal/field-text.js +37 -0
- package/dist/internal/field-text.js.map +1 -0
- package/dist/internal/gateway/commands.d.ts +92 -0
- package/dist/internal/gateway/commands.d.ts.map +1 -0
- package/dist/internal/gateway/commands.js +223 -0
- package/dist/internal/gateway/commands.js.map +1 -0
- package/dist/internal/gateway/dispatch-table.d.ts +42 -0
- package/dist/internal/gateway/dispatch-table.d.ts.map +1 -0
- package/dist/internal/gateway/dispatch-table.js +288 -0
- package/dist/internal/gateway/dispatch-table.js.map +1 -0
- package/dist/internal/gateway/event-dispatches.d.ts +97 -0
- package/dist/internal/gateway/event-dispatches.d.ts.map +1 -0
- package/dist/internal/gateway/event-dispatches.js +172 -0
- package/dist/internal/gateway/event-dispatches.js.map +1 -0
- package/dist/internal/gateway/frames.d.ts +45 -0
- package/dist/internal/gateway/frames.d.ts.map +1 -0
- package/dist/internal/gateway/frames.js +121 -0
- package/dist/internal/gateway/frames.js.map +1 -0
- package/dist/internal/gateway/options.d.ts +24 -0
- package/dist/internal/gateway/options.d.ts.map +1 -0
- package/dist/internal/gateway/options.js +103 -0
- package/dist/internal/gateway/options.js.map +1 -0
- package/dist/internal/gateway/session.d.ts +104 -0
- package/dist/internal/gateway/session.d.ts.map +1 -0
- package/dist/internal/gateway/session.js +420 -0
- package/dist/internal/gateway/session.js.map +1 -0
- package/dist/internal/gateway-requests.d.ts +10 -0
- package/dist/internal/gateway-requests.d.ts.map +1 -0
- package/dist/internal/gateway-requests.js +26 -0
- package/dist/internal/gateway-requests.js.map +1 -0
- package/dist/internal/gateway.d.ts +19 -0
- package/dist/internal/gateway.d.ts.map +1 -0
- package/dist/internal/gateway.js +11 -0
- package/dist/internal/gateway.js.map +1 -0
- package/dist/internal/guild-cache.d.ts +69 -0
- package/dist/internal/guild-cache.d.ts.map +1 -0
- package/dist/internal/guild-cache.js +402 -0
- package/dist/internal/guild-cache.js.map +1 -0
- package/dist/internal/guild-discovery.d.ts +15 -0
- package/dist/internal/guild-discovery.d.ts.map +1 -0
- package/dist/internal/guild-discovery.js +258 -0
- package/dist/internal/guild-discovery.js.map +1 -0
- package/dist/internal/guild-lifecycle.d.ts +18 -0
- package/dist/internal/guild-lifecycle.d.ts.map +1 -0
- package/dist/internal/guild-lifecycle.js +119 -0
- package/dist/internal/guild-lifecycle.js.map +1 -0
- package/dist/internal/guild-settings.d.ts +11 -0
- package/dist/internal/guild-settings.d.ts.map +1 -0
- package/dist/internal/guild-settings.js +150 -0
- package/dist/internal/guild-settings.js.map +1 -0
- package/dist/internal/guilds.d.ts +94 -0
- package/dist/internal/guilds.d.ts.map +1 -0
- package/dist/internal/guilds.js +785 -0
- package/dist/internal/guilds.js.map +1 -0
- package/dist/internal/init-command.d.ts +54 -0
- package/dist/internal/init-command.d.ts.map +1 -0
- package/dist/internal/init-command.js +248 -0
- package/dist/internal/init-command.js.map +1 -0
- package/dist/internal/instance.d.ts +69 -0
- package/dist/internal/instance.d.ts.map +1 -0
- package/dist/internal/instance.js +455 -0
- package/dist/internal/instance.js.map +1 -0
- package/dist/internal/invalid-callback-return.d.ts +3 -0
- package/dist/internal/invalid-callback-return.d.ts.map +1 -0
- package/dist/internal/invalid-callback-return.js +26 -0
- package/dist/internal/invalid-callback-return.js.map +1 -0
- package/dist/internal/invites.d.ts +19 -0
- package/dist/internal/invites.d.ts.map +1 -0
- package/dist/internal/invites.js +182 -0
- package/dist/internal/invites.js.map +1 -0
- package/dist/internal/logging.d.ts +129 -0
- package/dist/internal/logging.d.ts.map +1 -0
- package/dist/internal/logging.js +868 -0
- package/dist/internal/logging.js.map +1 -0
- package/dist/internal/logical-scheduler.d.ts +27 -0
- package/dist/internal/logical-scheduler.d.ts.map +1 -0
- package/dist/internal/logical-scheduler.js +102 -0
- package/dist/internal/logical-scheduler.js.map +1 -0
- package/dist/internal/masking.d.ts +13 -0
- package/dist/internal/masking.d.ts.map +1 -0
- package/dist/internal/masking.js +235 -0
- package/dist/internal/masking.js.map +1 -0
- package/dist/internal/member-chunks.d.ts +96 -0
- package/dist/internal/member-chunks.d.ts.map +1 -0
- package/dist/internal/member-chunks.js +557 -0
- package/dist/internal/member-chunks.js.map +1 -0
- package/dist/internal/member-search-workflow.d.ts +19 -0
- package/dist/internal/member-search-workflow.d.ts.map +1 -0
- package/dist/internal/member-search-workflow.js +143 -0
- package/dist/internal/member-search-workflow.js.map +1 -0
- package/dist/internal/member-search.d.ts +20 -0
- package/dist/internal/member-search.d.ts.map +1 -0
- package/dist/internal/member-search.js +201 -0
- package/dist/internal/member-search.js.map +1 -0
- package/dist/internal/message-cleanup.d.ts +9 -0
- package/dist/internal/message-cleanup.d.ts.map +1 -0
- package/dist/internal/message-cleanup.js +368 -0
- package/dist/internal/message-cleanup.js.map +1 -0
- package/dist/internal/message-fields.d.ts +9 -0
- package/dist/internal/message-fields.d.ts.map +1 -0
- package/dist/internal/message-fields.js +55 -0
- package/dist/internal/message-fields.js.map +1 -0
- package/dist/internal/message-search-workflow.d.ts +14 -0
- package/dist/internal/message-search-workflow.d.ts.map +1 -0
- package/dist/internal/message-search-workflow.js +101 -0
- package/dist/internal/message-search-workflow.js.map +1 -0
- package/dist/internal/message-search.d.ts +19 -0
- package/dist/internal/message-search.d.ts.map +1 -0
- package/dist/internal/message-search.js +317 -0
- package/dist/internal/message-search.js.map +1 -0
- package/dist/internal/message.d.ts +34 -0
- package/dist/internal/message.d.ts.map +1 -0
- package/dist/internal/message.js +723 -0
- package/dist/internal/message.js.map +1 -0
- package/dist/internal/metrics.d.ts +16 -0
- package/dist/internal/metrics.d.ts.map +1 -0
- package/dist/internal/metrics.js +49 -0
- package/dist/internal/metrics.js.map +1 -0
- package/dist/internal/moderation.d.ts +20 -0
- package/dist/internal/moderation.d.ts.map +1 -0
- package/dist/internal/moderation.js +219 -0
- package/dist/internal/moderation.js.map +1 -0
- package/dist/internal/multipart.d.ts +10 -0
- package/dist/internal/multipart.d.ts.map +1 -0
- package/dist/internal/multipart.js +156 -0
- package/dist/internal/multipart.js.map +1 -0
- package/dist/internal/node-version.d.ts +10 -0
- package/dist/internal/node-version.d.ts.map +1 -0
- package/dist/internal/node-version.js +21 -0
- package/dist/internal/node-version.js.map +1 -0
- package/dist/internal/oauth.d.ts +29 -0
- package/dist/internal/oauth.d.ts.map +1 -0
- package/dist/internal/oauth.js +721 -0
- package/dist/internal/oauth.js.map +1 -0
- package/dist/internal/observer.d.ts +21 -0
- package/dist/internal/observer.d.ts.map +1 -0
- package/dist/internal/observer.js +48 -0
- package/dist/internal/observer.js.map +1 -0
- package/dist/internal/operation-signal.d.ts +9 -0
- package/dist/internal/operation-signal.d.ts.map +1 -0
- package/dist/internal/operation-signal.js +19 -0
- package/dist/internal/operation-signal.js.map +1 -0
- package/dist/internal/pagination.d.ts +67 -0
- package/dist/internal/pagination.d.ts.map +1 -0
- package/dist/internal/pagination.js +306 -0
- package/dist/internal/pagination.js.map +1 -0
- package/dist/internal/permission-requirements.d.ts +34 -0
- package/dist/internal/permission-requirements.d.ts.map +1 -0
- package/dist/internal/permission-requirements.js +204 -0
- package/dist/internal/permission-requirements.js.map +1 -0
- package/dist/internal/permissions.d.ts +28 -0
- package/dist/internal/permissions.d.ts.map +1 -0
- package/dist/internal/permissions.js +314 -0
- package/dist/internal/permissions.js.map +1 -0
- package/dist/internal/pins.d.ts +24 -0
- package/dist/internal/pins.d.ts.map +1 -0
- package/dist/internal/pins.js +83 -0
- package/dist/internal/pins.js.map +1 -0
- package/dist/internal/presence.d.ts +101 -0
- package/dist/internal/presence.d.ts.map +1 -0
- package/dist/internal/presence.js +581 -0
- package/dist/internal/presence.js.map +1 -0
- package/dist/internal/protocol/gateway.d.ts +116 -0
- package/dist/internal/protocol/gateway.d.ts.map +1 -0
- package/dist/internal/protocol/gateway.js +258 -0
- package/dist/internal/protocol/gateway.js.map +1 -0
- package/dist/internal/rate-limit-templates.d.ts +2 -0
- package/dist/internal/rate-limit-templates.d.ts.map +1 -0
- package/dist/internal/rate-limit-templates.js +132 -0
- package/dist/internal/rate-limit-templates.js.map +1 -0
- package/dist/internal/rate-limits.d.ts +32 -0
- package/dist/internal/rate-limits.d.ts.map +1 -0
- package/dist/internal/rate-limits.js +306 -0
- package/dist/internal/rate-limits.js.map +1 -0
- package/dist/internal/reaction-collector.d.ts +39 -0
- package/dist/internal/reaction-collector.d.ts.map +1 -0
- package/dist/internal/reaction-collector.js +441 -0
- package/dist/internal/reaction-collector.js.map +1 -0
- package/dist/internal/reaction-pages.d.ts +18 -0
- package/dist/internal/reaction-pages.d.ts.map +1 -0
- package/dist/internal/reaction-pages.js +213 -0
- package/dist/internal/reaction-pages.js.map +1 -0
- package/dist/internal/reactions.d.ts +30 -0
- package/dist/internal/reactions.d.ts.map +1 -0
- package/dist/internal/reactions.js +160 -0
- package/dist/internal/reactions.js.map +1 -0
- package/dist/internal/rejection-scope.d.ts +25 -0
- package/dist/internal/rejection-scope.d.ts.map +1 -0
- package/dist/internal/rejection-scope.js +103 -0
- package/dist/internal/rejection-scope.js.map +1 -0
- package/dist/internal/response-json.d.ts +12 -0
- package/dist/internal/response-json.d.ts.map +1 -0
- package/dist/internal/response-json.js +74 -0
- package/dist/internal/response-json.js.map +1 -0
- package/dist/internal/rest/admission.d.ts +77 -0
- package/dist/internal/rest/admission.d.ts.map +1 -0
- package/dist/internal/rest/admission.js +178 -0
- package/dist/internal/rest/admission.js.map +1 -0
- package/dist/internal/rest/attempt.d.ts +124 -0
- package/dist/internal/rest/attempt.d.ts.map +1 -0
- package/dist/internal/rest/attempt.js +410 -0
- package/dist/internal/rest/attempt.js.map +1 -0
- package/dist/internal/rest/classify.d.ts +93 -0
- package/dist/internal/rest/classify.d.ts.map +1 -0
- package/dist/internal/rest/classify.js +304 -0
- package/dist/internal/rest/classify.js.map +1 -0
- package/dist/internal/rest/download.d.ts +66 -0
- package/dist/internal/rest/download.d.ts.map +1 -0
- package/dist/internal/rest/download.js +552 -0
- package/dist/internal/rest/download.js.map +1 -0
- package/dist/internal/rest/options.d.ts +42 -0
- package/dist/internal/rest/options.d.ts.map +1 -0
- package/dist/internal/rest/options.js +99 -0
- package/dist/internal/rest/options.js.map +1 -0
- package/dist/internal/rest/owner.d.ts +154 -0
- package/dist/internal/rest/owner.d.ts.map +1 -0
- package/dist/internal/rest/owner.js +1292 -0
- package/dist/internal/rest/owner.js.map +1 -0
- package/dist/internal/rest/request.d.ts +31 -0
- package/dist/internal/rest/request.d.ts.map +1 -0
- package/dist/internal/rest/request.js +227 -0
- package/dist/internal/rest/request.js.map +1 -0
- package/dist/internal/rest.d.ts +10 -0
- package/dist/internal/rest.d.ts.map +1 -0
- package/dist/internal/rest.js +9 -0
- package/dist/internal/rest.js.map +1 -0
- package/dist/internal/retention-age.d.ts +11 -0
- package/dist/internal/retention-age.d.ts.map +1 -0
- package/dist/internal/retention-age.js +29 -0
- package/dist/internal/retention-age.js.map +1 -0
- package/dist/internal/role-hierarchy-workflow.d.ts +15 -0
- package/dist/internal/role-hierarchy-workflow.d.ts.map +1 -0
- package/dist/internal/role-hierarchy-workflow.js +122 -0
- package/dist/internal/role-hierarchy-workflow.js.map +1 -0
- package/dist/internal/role-hierarchy.d.ts +11 -0
- package/dist/internal/role-hierarchy.d.ts.map +1 -0
- package/dist/internal/role-hierarchy.js +87 -0
- package/dist/internal/role-hierarchy.js.map +1 -0
- package/dist/internal/scheduled-tasks.d.ts +46 -0
- package/dist/internal/scheduled-tasks.d.ts.map +1 -0
- package/dist/internal/scheduled-tasks.js +190 -0
- package/dist/internal/scheduled-tasks.js.map +1 -0
- package/dist/internal/sharding.d.ts +62 -0
- package/dist/internal/sharding.d.ts.map +1 -0
- package/dist/internal/sharding.js +205 -0
- package/dist/internal/sharding.js.map +1 -0
- package/dist/internal/starter-project.d.ts +27 -0
- package/dist/internal/starter-project.d.ts.map +1 -0
- package/dist/internal/starter-project.js +224 -0
- package/dist/internal/starter-project.js.map +1 -0
- package/dist/internal/suggest.d.ts +12 -0
- package/dist/internal/suggest.d.ts.map +1 -0
- package/dist/internal/suggest.js +51 -0
- package/dist/internal/suggest.js.map +1 -0
- package/dist/internal/supervisor.d.ts +95 -0
- package/dist/internal/supervisor.d.ts.map +1 -0
- package/dist/internal/supervisor.js +1829 -0
- package/dist/internal/supervisor.js.map +1 -0
- package/dist/internal/testing/discovery.d.ts +24 -0
- package/dist/internal/testing/discovery.d.ts.map +1 -0
- package/dist/internal/testing/discovery.js +22 -0
- package/dist/internal/testing/discovery.js.map +1 -0
- package/dist/internal/testing/errors.d.ts +43 -0
- package/dist/internal/testing/errors.d.ts.map +1 -0
- package/dist/internal/testing/errors.js +63 -0
- package/dist/internal/testing/errors.js.map +1 -0
- package/dist/internal/testing/fixtures.d.ts +477 -0
- package/dist/internal/testing/fixtures.d.ts.map +1 -0
- package/dist/internal/testing/fixtures.js +233 -0
- package/dist/internal/testing/fixtures.js.map +1 -0
- package/dist/internal/testing/gateway.d.ts +51 -0
- package/dist/internal/testing/gateway.d.ts.map +1 -0
- package/dist/internal/testing/gateway.js +265 -0
- package/dist/internal/testing/gateway.js.map +1 -0
- package/dist/internal/testing/harness.d.ts +60 -0
- package/dist/internal/testing/harness.d.ts.map +1 -0
- package/dist/internal/testing/harness.js +280 -0
- package/dist/internal/testing/harness.js.map +1 -0
- package/dist/internal/testing/http.d.ts +31 -0
- package/dist/internal/testing/http.d.ts.map +1 -0
- package/dist/internal/testing/http.js +347 -0
- package/dist/internal/testing/http.js.map +1 -0
- package/dist/internal/testing/types.d.ts +222 -0
- package/dist/internal/testing/types.d.ts.map +1 -0
- package/dist/internal/testing/types.js +2 -0
- package/dist/internal/testing/types.js.map +1 -0
- package/dist/internal/testing/wait.d.ts +16 -0
- package/dist/internal/testing/wait.d.ts.map +1 -0
- package/dist/internal/testing/wait.js +55 -0
- package/dist/internal/testing/wait.js.map +1 -0
- package/dist/internal/thread-events.d.ts +40 -0
- package/dist/internal/thread-events.d.ts.map +1 -0
- package/dist/internal/thread-events.js +121 -0
- package/dist/internal/thread-events.js.map +1 -0
- package/dist/internal/threads.d.ts +47 -0
- package/dist/internal/threads.d.ts.map +1 -0
- package/dist/internal/threads.js +587 -0
- package/dist/internal/threads.js.map +1 -0
- package/dist/internal/transfer-source.d.ts +29 -0
- package/dist/internal/transfer-source.d.ts.map +1 -0
- package/dist/internal/transfer-source.js +347 -0
- package/dist/internal/transfer-source.js.map +1 -0
- package/dist/internal/transport/http.d.ts +12 -0
- package/dist/internal/transport/http.d.ts.map +1 -0
- package/dist/internal/transport/http.js +44 -0
- package/dist/internal/transport/http.js.map +1 -0
- package/dist/internal/transport/index.d.ts +21 -0
- package/dist/internal/transport/index.d.ts.map +1 -0
- package/dist/internal/transport/index.js +15 -0
- package/dist/internal/transport/index.js.map +1 -0
- package/dist/internal/transport/socket.d.ts +51 -0
- package/dist/internal/transport/socket.d.ts.map +1 -0
- package/dist/internal/transport/socket.js +27 -0
- package/dist/internal/transport/socket.js.map +1 -0
- package/dist/internal/transport/user-agent.d.ts +7 -0
- package/dist/internal/transport/user-agent.d.ts.map +1 -0
- package/dist/internal/transport/user-agent.js +42 -0
- package/dist/internal/transport/user-agent.js.map +1 -0
- package/dist/internal/uploads.d.ts +23 -0
- package/dist/internal/uploads.d.ts.map +1 -0
- package/dist/internal/uploads.js +89 -0
- package/dist/internal/uploads.js.map +1 -0
- package/dist/internal/user-cache.d.ts +50 -0
- package/dist/internal/user-cache.d.ts.map +1 -0
- package/dist/internal/user-cache.js +273 -0
- package/dist/internal/user-cache.js.map +1 -0
- package/dist/internal/users.d.ts +41 -0
- package/dist/internal/users.d.ts.map +1 -0
- package/dist/internal/users.js +333 -0
- package/dist/internal/users.js.map +1 -0
- package/dist/internal/vanity-url.d.ts +11 -0
- package/dist/internal/vanity-url.d.ts.map +1 -0
- package/dist/internal/vanity-url.js +58 -0
- package/dist/internal/vanity-url.js.map +1 -0
- package/dist/internal/webhooks.d.ts +58 -0
- package/dist/internal/webhooks.d.ts.map +1 -0
- package/dist/internal/webhooks.js +490 -0
- package/dist/internal/webhooks.js.map +1 -0
- package/dist/invites.d.ts +86 -0
- package/dist/invites.d.ts.map +1 -0
- package/dist/invites.js +2 -0
- package/dist/invites.js.map +1 -0
- package/dist/logging.d.ts +228 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +2 -0
- package/dist/logging.js.map +1 -0
- package/dist/member-chunks.d.ts +145 -0
- package/dist/member-chunks.d.ts.map +1 -0
- package/dist/member-chunks.js +68 -0
- package/dist/member-chunks.js.map +1 -0
- package/dist/member-search.d.ts +140 -0
- package/dist/member-search.d.ts.map +1 -0
- package/dist/member-search.js +14 -0
- package/dist/member-search.js.map +1 -0
- package/dist/message-cleanup.d.ts +227 -0
- package/dist/message-cleanup.d.ts.map +1 -0
- package/dist/message-cleanup.js +101 -0
- package/dist/message-cleanup.js.map +1 -0
- package/dist/message-errors.d.ts +172 -0
- package/dist/message-errors.d.ts.map +1 -0
- package/dist/message-errors.js +173 -0
- package/dist/message-errors.js.map +1 -0
- package/dist/message-search.d.ts +201 -0
- package/dist/message-search.d.ts.map +1 -0
- package/dist/message-search.js +2 -0
- package/dist/message-search.js.map +1 -0
- package/dist/messages.d.ts +694 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +37 -0
- package/dist/messages.js.map +1 -0
- package/dist/native-commands.d.ts +451 -0
- package/dist/native-commands.d.ts.map +1 -0
- package/dist/native-commands.js +432 -0
- package/dist/native-commands.js.map +1 -0
- package/dist/native-supervisor.d.ts +125 -0
- package/dist/native-supervisor.d.ts.map +1 -0
- package/dist/native-supervisor.js +126 -0
- package/dist/native-supervisor.js.map +1 -0
- package/dist/oauth.d.ts +298 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +128 -0
- package/dist/oauth.js.map +1 -0
- package/dist/observer.d.ts +111 -0
- package/dist/observer.d.ts.map +1 -0
- package/dist/observer.js +2 -0
- package/dist/observer.js.map +1 -0
- package/dist/pagination.d.ts +117 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +61 -0
- package/dist/pagination.js.map +1 -0
- package/dist/permissions.d.ts +73 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +2 -0
- package/dist/permissions.js.map +1 -0
- package/dist/pins.d.ts +62 -0
- package/dist/pins.d.ts.map +1 -0
- package/dist/pins.js +2 -0
- package/dist/pins.js.map +1 -0
- package/dist/presence.d.ts +84 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +46 -0
- package/dist/presence.js.map +1 -0
- package/dist/reaction-pages.d.ts +99 -0
- package/dist/reaction-pages.d.ts.map +1 -0
- package/dist/reaction-pages.js +2 -0
- package/dist/reaction-pages.js.map +1 -0
- package/dist/reactions.d.ts +118 -0
- package/dist/reactions.d.ts.map +1 -0
- package/dist/reactions.js +2 -0
- package/dist/reactions.js.map +1 -0
- package/dist/rest.d.ts +260 -0
- package/dist/rest.d.ts.map +1 -0
- package/dist/rest.js +46 -0
- package/dist/rest.js.map +1 -0
- package/dist/role-hierarchy.d.ts +81 -0
- package/dist/role-hierarchy.d.ts.map +1 -0
- package/dist/role-hierarchy.js +53 -0
- package/dist/role-hierarchy.js.map +1 -0
- package/dist/sharding.d.ts +219 -0
- package/dist/sharding.d.ts.map +1 -0
- package/dist/sharding.js +86 -0
- package/dist/sharding.js.map +1 -0
- package/dist/supervisor.d.ts +392 -0
- package/dist/supervisor.d.ts.map +1 -0
- package/dist/supervisor.js +101 -0
- package/dist/supervisor.js.map +1 -0
- package/dist/testing.d.ts +258 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +202 -0
- package/dist/testing.js.map +1 -0
- package/dist/text.d.ts +38 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +46 -0
- package/dist/text.js.map +1 -0
- package/dist/threads.d.ts +258 -0
- package/dist/threads.d.ts.map +1 -0
- package/dist/threads.js +2 -0
- package/dist/threads.js.map +1 -0
- package/dist/users.d.ts +204 -0
- package/dist/users.d.ts.map +1 -0
- package/dist/users.js +44 -0
- package/dist/users.js.map +1 -0
- package/dist/webhooks.d.ts +423 -0
- package/dist/webhooks.d.ts.map +1 -0
- package/dist/webhooks.js +68 -0
- package/dist/webhooks.js.map +1 -0
- package/esm-only.cjs +3 -0
- package/examples/starter/bot-effect.ts +17 -0
- package/examples/starter/bot.js +13 -0
- package/examples/starter/bot.ts +13 -0
- package/package.json +82 -0
- package/src/api/default/application.ts +40 -0
- package/src/api/default/attachments.ts +106 -0
- package/src/api/default/audit-logs.ts +58 -0
- package/src/api/default/bot.ts +586 -0
- package/src/api/default/cache.ts +106 -0
- package/src/api/default/channels.ts +317 -0
- package/src/api/default/client.ts +829 -0
- package/src/api/default/collectors.ts +81 -0
- package/src/api/default/commands.ts +92 -0
- package/src/api/default/direct-messages.ts +143 -0
- package/src/api/default/discovery.ts +103 -0
- package/src/api/default/emojis.ts +125 -0
- package/src/api/default/events.ts +144 -0
- package/src/api/default/gateway.ts +67 -0
- package/src/api/default/guards.ts +173 -0
- package/src/api/default/guilds.ts +271 -0
- package/src/api/default/helpers.ts +97 -0
- package/src/api/default/instance.ts +49 -0
- package/src/api/default/invites.ts +73 -0
- package/src/api/default/logging.ts +37 -0
- package/src/api/default/members.ts +550 -0
- package/src/api/default/messages.ts +1053 -0
- package/src/api/default/oauth.ts +293 -0
- package/src/api/default/permissions.ts +47 -0
- package/src/api/default/presence.ts +88 -0
- package/src/api/default/rest.ts +30 -0
- package/src/api/default/results.ts +44 -0
- package/src/api/default/roles.ts +154 -0
- package/src/api/default/stickers.ts +129 -0
- package/src/api/default/supervisor.ts +53 -0
- package/src/api/default/threads.ts +233 -0
- package/src/api/default/users.ts +82 -0
- package/src/api/default/webhook-client.ts +266 -0
- package/src/api/default/webhooks.ts +89 -0
- package/src/api/effect/application.ts +29 -0
- package/src/api/effect/attachments.ts +100 -0
- package/src/api/effect/audit-logs.ts +50 -0
- package/src/api/effect/bot.ts +546 -0
- package/src/api/effect/cache.ts +110 -0
- package/src/api/effect/channels.ts +293 -0
- package/src/api/effect/client.ts +792 -0
- package/src/api/effect/collectors.ts +103 -0
- package/src/api/effect/commands.ts +87 -0
- package/src/api/effect/direct-messages.ts +119 -0
- package/src/api/effect/discovery.ts +87 -0
- package/src/api/effect/emojis.ts +108 -0
- package/src/api/effect/events.ts +92 -0
- package/src/api/effect/failures.ts +14 -0
- package/src/api/effect/gateway.ts +63 -0
- package/src/api/effect/guards.ts +194 -0
- package/src/api/effect/guilds.ts +247 -0
- package/src/api/effect/helpers.ts +359 -0
- package/src/api/effect/hierarchy.ts +26 -0
- package/src/api/effect/instance.ts +50 -0
- package/src/api/effect/invites.ts +59 -0
- package/src/api/effect/logging.ts +37 -0
- package/src/api/effect/members.ts +521 -0
- package/src/api/effect/messages.ts +1003 -0
- package/src/api/effect/oauth.ts +208 -0
- package/src/api/effect/permissions.ts +44 -0
- package/src/api/effect/presence.ts +83 -0
- package/src/api/effect/rest.ts +27 -0
- package/src/api/effect/roles.ts +136 -0
- package/src/api/effect/service.ts +104 -0
- package/src/api/effect/stickers.ts +112 -0
- package/src/api/effect/supervisor.ts +58 -0
- package/src/api/effect/threads.ts +221 -0
- package/src/api/effect/users.ts +66 -0
- package/src/api/effect/webhook-client.ts +206 -0
- package/src/api/effect/webhooks.ts +75 -0
- package/src/api-errors.ts +985 -0
- package/src/application.ts +103 -0
- package/src/assets.ts +731 -0
- package/src/attachments.ts +469 -0
- package/src/audit-logs.ts +355 -0
- package/src/bot-runner.ts +91 -0
- package/src/builders.ts +390 -0
- package/src/cache.ts +190 -0
- package/src/channels.ts +1051 -0
- package/src/cli.ts +60 -0
- package/src/client.ts +663 -0
- package/src/collectors.ts +248 -0
- package/src/colors.ts +91 -0
- package/src/command-arguments.ts +432 -0
- package/src/command-help.ts +55 -0
- package/src/commands.ts +403 -0
- package/src/counts.ts +160 -0
- package/src/default-commands.ts +1147 -0
- package/src/default-supervisor.ts +484 -0
- package/src/discovery.ts +241 -0
- package/src/effect-testing.ts +603 -0
- package/src/effect.ts +751 -0
- package/src/embeds.ts +253 -0
- package/src/error-tools.ts +191 -0
- package/src/errors.ts +849 -0
- package/src/events.ts +830 -0
- package/src/expressions.ts +198 -0
- package/src/failures.ts +55 -0
- package/src/gateway.ts +86 -0
- package/src/guilds.ts +1108 -0
- package/src/helpers.ts +836 -0
- package/src/index.ts +796 -0
- package/src/input-validation.ts +94 -0
- package/src/instance.ts +111 -0
- package/src/internal/agents-section.ts +114 -0
- package/src/internal/application.ts +51 -0
- package/src/internal/attachment-refresh.ts +57 -0
- package/src/internal/attachments.ts +313 -0
- package/src/internal/audit-logs.ts +336 -0
- package/src/internal/audit.ts +33 -0
- package/src/internal/binding/default-adapters.ts +482 -0
- package/src/internal/binding/default.ts +155 -0
- package/src/internal/binding/execute.ts +221 -0
- package/src/internal/binding/native-adapters.ts +199 -0
- package/src/internal/binding/native.ts +72 -0
- package/src/internal/binding/operations.ts +1171 -0
- package/src/internal/bot-runner.ts +480 -0
- package/src/internal/cache-changes.ts +363 -0
- package/src/internal/cache.ts +323 -0
- package/src/internal/calls.ts +119 -0
- package/src/internal/channel-cache.ts +435 -0
- package/src/internal/channel-decode.ts +399 -0
- package/src/internal/channels.ts +874 -0
- package/src/internal/client/backoff.ts +69 -0
- package/src/internal/client/configuration-fields.ts +18 -0
- package/src/internal/client/drain.ts +150 -0
- package/src/internal/client/intake.ts +228 -0
- package/src/internal/client/lifetime.ts +165 -0
- package/src/internal/client/shard-loop.ts +586 -0
- package/src/internal/client-registry.ts +35 -0
- package/src/internal/client.ts +2448 -0
- package/src/internal/clock.ts +11 -0
- package/src/internal/code-catalogue.ts +739 -0
- package/src/internal/collector.ts +452 -0
- package/src/internal/command-arguments.ts +585 -0
- package/src/internal/command-guards.ts +96 -0
- package/src/internal/command-help.ts +156 -0
- package/src/internal/commands.ts +1319 -0
- package/src/internal/configuration.ts +529 -0
- package/src/internal/counts.ts +471 -0
- package/src/internal/decode/primitives.ts +67 -0
- package/src/internal/decode/timestamp.ts +29 -0
- package/src/internal/decode/trace.ts +65 -0
- package/src/internal/defects.ts +115 -0
- package/src/internal/effect-failures.ts +65 -0
- package/src/internal/embeds.ts +355 -0
- package/src/internal/events.ts +1345 -0
- package/src/internal/expiry-queue.ts +148 -0
- package/src/internal/expressions.ts +415 -0
- package/src/internal/failures.ts +492 -0
- package/src/internal/field-text.ts +40 -0
- package/src/internal/gateway/commands.ts +328 -0
- package/src/internal/gateway/dispatch-table.ts +383 -0
- package/src/internal/gateway/event-dispatches.ts +201 -0
- package/src/internal/gateway/frames.ts +176 -0
- package/src/internal/gateway/options.ts +144 -0
- package/src/internal/gateway/session.ts +625 -0
- package/src/internal/gateway-requests.ts +26 -0
- package/src/internal/gateway.ts +22 -0
- package/src/internal/guild-cache.ts +424 -0
- package/src/internal/guild-discovery.ts +332 -0
- package/src/internal/guild-lifecycle.ts +128 -0
- package/src/internal/guild-settings.ts +209 -0
- package/src/internal/guilds.ts +949 -0
- package/src/internal/init-command.ts +305 -0
- package/src/internal/instance.ts +645 -0
- package/src/internal/invalid-callback-return.ts +28 -0
- package/src/internal/invites.ts +234 -0
- package/src/internal/logging.ts +1007 -0
- package/src/internal/logical-scheduler.ts +139 -0
- package/src/internal/masking.ts +224 -0
- package/src/internal/member-chunks.ts +649 -0
- package/src/internal/member-search-workflow.ts +237 -0
- package/src/internal/member-search.ts +272 -0
- package/src/internal/message-cleanup.ts +515 -0
- package/src/internal/message-fields.ts +71 -0
- package/src/internal/message-search-workflow.ts +166 -0
- package/src/internal/message-search.ts +476 -0
- package/src/internal/message.ts +879 -0
- package/src/internal/metrics.ts +55 -0
- package/src/internal/moderation.ts +288 -0
- package/src/internal/multipart.ts +171 -0
- package/src/internal/node-version.ts +22 -0
- package/src/internal/oauth.ts +1146 -0
- package/src/internal/observer.ts +62 -0
- package/src/internal/operation-signal.ts +26 -0
- package/src/internal/pagination.ts +494 -0
- package/src/internal/permission-requirements.ts +359 -0
- package/src/internal/permissions.ts +417 -0
- package/src/internal/pins.ts +115 -0
- package/src/internal/presence.ts +745 -0
- package/src/internal/protocol/gateway.ts +299 -0
- package/src/internal/rate-limit-templates.ts +138 -0
- package/src/internal/rate-limits.ts +346 -0
- package/src/internal/reaction-collector.ts +499 -0
- package/src/internal/reaction-pages.ts +260 -0
- package/src/internal/reactions.ts +174 -0
- package/src/internal/rejection-scope.ts +119 -0
- package/src/internal/response-json.ts +76 -0
- package/src/internal/rest/admission.ts +210 -0
- package/src/internal/rest/attempt.ts +617 -0
- package/src/internal/rest/classify.ts +391 -0
- package/src/internal/rest/download.ts +658 -0
- package/src/internal/rest/options.ts +145 -0
- package/src/internal/rest/owner.ts +1828 -0
- package/src/internal/rest/request.ts +289 -0
- package/src/internal/rest.ts +9 -0
- package/src/internal/retention-age.ts +33 -0
- package/src/internal/role-hierarchy-workflow.ts +150 -0
- package/src/internal/role-hierarchy.ts +93 -0
- package/src/internal/scheduled-tasks.ts +217 -0
- package/src/internal/sharding.ts +270 -0
- package/src/internal/starter-project.ts +251 -0
- package/src/internal/suggest.ts +50 -0
- package/src/internal/supervisor.ts +2253 -0
- package/src/internal/testing/discovery.ts +23 -0
- package/src/internal/testing/errors.ts +67 -0
- package/src/internal/testing/fixtures.ts +714 -0
- package/src/internal/testing/gateway.ts +305 -0
- package/src/internal/testing/harness.ts +328 -0
- package/src/internal/testing/http.ts +395 -0
- package/src/internal/testing/types.ts +240 -0
- package/src/internal/testing/wait.ts +63 -0
- package/src/internal/thread-events.ts +128 -0
- package/src/internal/threads.ts +718 -0
- package/src/internal/transfer-source.ts +359 -0
- package/src/internal/transport/http.ts +46 -0
- package/src/internal/transport/index.ts +23 -0
- package/src/internal/transport/socket.ts +71 -0
- package/src/internal/transport/user-agent.ts +46 -0
- package/src/internal/uploads.ts +111 -0
- package/src/internal/user-cache.ts +294 -0
- package/src/internal/users.ts +402 -0
- package/src/internal/vanity-url.ts +80 -0
- package/src/internal/webhooks.ts +690 -0
- package/src/invites.ts +87 -0
- package/src/logging.ts +247 -0
- package/src/member-chunks.ts +195 -0
- package/src/member-search.ts +152 -0
- package/src/message-cleanup.ts +308 -0
- package/src/message-errors.ts +245 -0
- package/src/message-search.ts +213 -0
- package/src/messages.ts +768 -0
- package/src/native-commands.ts +1249 -0
- package/src/native-supervisor.ts +345 -0
- package/src/oauth.ts +413 -0
- package/src/observer.ts +118 -0
- package/src/pagination.ts +172 -0
- package/src/permissions.ts +74 -0
- package/src/pins.ts +65 -0
- package/src/presence.ts +124 -0
- package/src/reaction-pages.ts +106 -0
- package/src/reactions.ts +126 -0
- package/src/rest.ts +282 -0
- package/src/role-hierarchy.ts +127 -0
- package/src/sharding.ts +272 -0
- package/src/supervisor.ts +460 -0
- package/src/testing.ts +424 -0
- package/src/text.ts +76 -0
- package/src/threads.ts +274 -0
- package/src/users.ts +237 -0
- package/src/webhooks.ts +512 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reaction pages: One message whose page changes on ◀ and ▶ clicks, read through one reaction collector.
|
|
3
|
+
* Invariant: Clicks are turned one at a time by the collector's callback, the SDK never removes reactions other than its
|
|
4
|
+
* own arrows and, with removeClicks, the clicker's arrow, and the bot's arrows are removed once listening ends, however
|
|
5
|
+
* it ends. A failure, cancellation or interruption wins over a later cleanup failure.
|
|
6
|
+
* Implements [SDK contracts: Results and failures](/docs/SDK-CONTRACTS.md#results-and-failures)
|
|
7
|
+
*/
|
|
8
|
+
import * as Cause from "effect/Cause"
|
|
9
|
+
import * as Deferred from "effect/Deferred"
|
|
10
|
+
import * as Effect from "effect/Effect"
|
|
11
|
+
import * as Exit from "effect/Exit"
|
|
12
|
+
import { ConfigurationError } from "#sdk/errors"
|
|
13
|
+
import type { EditMessageInput, MessageCore, MessageInput } from "#sdk/messages"
|
|
14
|
+
import type { MessageReaction } from "#sdk/reactions"
|
|
15
|
+
import type { PageInput, PageTurners, PaginateFailure, PaginateOptions, PaginateResult } from "#sdk/reaction-pages"
|
|
16
|
+
import type { ClientOwner } from "./client.js"
|
|
17
|
+
import { collectorBudgetMessage } from "./collector.js"
|
|
18
|
+
import { record } from "./decode/primitives.js"
|
|
19
|
+
import { readInput } from "./defects.js"
|
|
20
|
+
import { collectReactions, type ReactionCollector } from "./reaction-collector.js"
|
|
21
|
+
import { unsupportedKeyHint } from "./suggest.js"
|
|
22
|
+
|
|
23
|
+
/** The arrows the bot adds, previous first. Clicks also match the text-presentation forms without U+FE0F */
|
|
24
|
+
const arrows = ["◀️", "▶️"] as const
|
|
25
|
+
|
|
26
|
+
/** Page step for a clicked emoji name: -1 for previous, 1 for next and 0 for anything else */
|
|
27
|
+
function step(name: string): -1 | 0 | 1 {
|
|
28
|
+
const plain = name.replace("️", "")
|
|
29
|
+
return plain === "◀" ? -1 : plain === "▶" ? 1 : 0
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
type Page = string | { readonly content?: string; readonly embeds?: readonly unknown[] }
|
|
33
|
+
|
|
34
|
+
interface Settings {
|
|
35
|
+
readonly pages: readonly Page[]
|
|
36
|
+
readonly users: PageTurners
|
|
37
|
+
readonly idleMs: number
|
|
38
|
+
readonly timeoutMs: number
|
|
39
|
+
readonly removeClicks: boolean
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const optionKeys = ["users", "idleMs", "timeoutMs", "removeClicks", "signal"]
|
|
43
|
+
|
|
44
|
+
/** Copy and check the pages once. Page bodies are checked by send and edit, so only their shape is checked here */
|
|
45
|
+
function copyPages(pages: unknown): readonly Page[] | ConfigurationError {
|
|
46
|
+
if (!Array.isArray(pages) || pages.length === 0)
|
|
47
|
+
return new ConfigurationError("pages", "Pages must be a nonempty array of strings or page objects")
|
|
48
|
+
const copied: Page[] = []
|
|
49
|
+
for (const page of Array.from(pages as unknown[])) {
|
|
50
|
+
if (typeof page === "string") {
|
|
51
|
+
if (page.length === 0) return new ConfigurationError("pages", "A text page must not be empty")
|
|
52
|
+
copied.push(page)
|
|
53
|
+
continue
|
|
54
|
+
}
|
|
55
|
+
if (!record(page)) return new ConfigurationError("pages", "Each page must be a string or a page object")
|
|
56
|
+
const unsupported = Object.keys(page).find((key) => key !== "content" && key !== "embeds")
|
|
57
|
+
if (unsupported !== undefined)
|
|
58
|
+
return new ConfigurationError("pages", `Unsupported page property ${JSON.stringify(unsupported)}`, {
|
|
59
|
+
hint: unsupportedKeyHint(unsupported, ["content", "embeds"]),
|
|
60
|
+
})
|
|
61
|
+
const { content, embeds } = page
|
|
62
|
+
if (content !== undefined && typeof content !== "string")
|
|
63
|
+
return new ConfigurationError("pages", "Page content must be a string")
|
|
64
|
+
if (embeds !== undefined && !Array.isArray(embeds))
|
|
65
|
+
return new ConfigurationError("pages", "Page embeds must be an array")
|
|
66
|
+
const list = embeds === undefined ? undefined : Object.freeze(Array.from(embeds as unknown[]))
|
|
67
|
+
if (!content && !list?.length)
|
|
68
|
+
return new ConfigurationError("pages", "Each page object needs nonempty content or at least one embed")
|
|
69
|
+
copied.push(
|
|
70
|
+
Object.freeze({
|
|
71
|
+
...(content === undefined ? {} : { content }),
|
|
72
|
+
...(list === undefined ? {} : { embeds: list }),
|
|
73
|
+
}),
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
return Object.freeze(copied)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** Copy and check pages and options once, before anything is sent */
|
|
80
|
+
function settings(pages: unknown, options: unknown): Settings | ConfigurationError {
|
|
81
|
+
const copied = copyPages(pages)
|
|
82
|
+
if (copied instanceof ConfigurationError) return copied
|
|
83
|
+
const input = options === undefined ? {} : options
|
|
84
|
+
if (!record(input)) return new ConfigurationError("paginateOptions", "Page options must be an object")
|
|
85
|
+
const unsupported = Object.keys(input).find((key) => !optionKeys.includes(key))
|
|
86
|
+
if (unsupported !== undefined)
|
|
87
|
+
return new ConfigurationError("paginateOptions", `Unsupported page option ${JSON.stringify(unsupported)}`, {
|
|
88
|
+
hint: unsupportedKeyHint(unsupported, optionKeys),
|
|
89
|
+
})
|
|
90
|
+
const { users, idleMs = 60_000, timeoutMs = 300_000 } = input
|
|
91
|
+
const removeClicks = input.removeClicks ?? false
|
|
92
|
+
if (!milliseconds(idleMs)) return new ConfigurationError("idleMs", collectorBudgetMessage("idleMs"))
|
|
93
|
+
if (!milliseconds(timeoutMs)) return new ConfigurationError("timeoutMs", collectorBudgetMessage("timeoutMs"))
|
|
94
|
+
if (typeof removeClicks !== "boolean")
|
|
95
|
+
return new ConfigurationError("removeClicks", 'The page option "removeClicks" must be true or false')
|
|
96
|
+
let turners: PageTurners
|
|
97
|
+
if (typeof users === "function") turners = users as PageTurners
|
|
98
|
+
else if (
|
|
99
|
+
Array.isArray(users) &&
|
|
100
|
+
users.every((id: unknown) => typeof id === "string" && /^[1-9][0-9]{0,19}$/.test(id))
|
|
101
|
+
)
|
|
102
|
+
turners = Object.freeze([...(users as string[])])
|
|
103
|
+
else
|
|
104
|
+
return new ConfigurationError(
|
|
105
|
+
"users",
|
|
106
|
+
users === undefined
|
|
107
|
+
? 'The page option "users" is required, as a list of user IDs or a check such as () => true'
|
|
108
|
+
: 'The page option "users" must be a list of decimal user IDs or a function',
|
|
109
|
+
)
|
|
110
|
+
return { pages: copied, users: turners, idleMs, timeoutMs, removeClicks }
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const milliseconds = (value: unknown): value is number =>
|
|
114
|
+
typeof value === "number" && Number.isSafeInteger(value) && value > 0 && value <= 2_147_483_647
|
|
115
|
+
|
|
116
|
+
const sendInput = (page: Page) => page as MessageInput | string
|
|
117
|
+
|
|
118
|
+
/** A page change replaces both text and embeds, so nothing from the previous page stays */
|
|
119
|
+
const editInput = (page: Page) =>
|
|
120
|
+
(typeof page === "string"
|
|
121
|
+
? { content: page, embeds: [] }
|
|
122
|
+
: { content: page.content ?? "", embeds: page.embeds ?? [] }) as EditMessageInput
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Send the first page to a channel, add the arrows and turn pages on clicks until idle, timeout, failure or
|
|
126
|
+
* interruption. Command contexts supply their author as users through askerPageOptions
|
|
127
|
+
*/
|
|
128
|
+
export function paginate<M extends MessageCore>(
|
|
129
|
+
owner: ClientOwner<M>,
|
|
130
|
+
channelId: string,
|
|
131
|
+
pages: readonly PageInput[],
|
|
132
|
+
options: PaginateOptions | undefined,
|
|
133
|
+
): Effect.Effect<PaginateResult<M>, PaginateFailure> {
|
|
134
|
+
return Effect.gen(function* () {
|
|
135
|
+
const config = yield* readInput(() => settings(pages, options))
|
|
136
|
+
if (config instanceof ConfigurationError) return yield* Effect.fail(config)
|
|
137
|
+
const first = yield* owner.send(channelId, sendInput(config.pages[0]!))
|
|
138
|
+
if (config.pages.length === 1) return Object.freeze({ message: first, page: 0, reason: "singlePage" as const })
|
|
139
|
+
return yield* listen(owner, first, config)
|
|
140
|
+
})
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function listen<M extends MessageCore>(
|
|
144
|
+
owner: ClientOwner<M>,
|
|
145
|
+
first: M,
|
|
146
|
+
config: Settings,
|
|
147
|
+
): Effect.Effect<PaginateResult<M>, PaginateFailure> {
|
|
148
|
+
const target = { id: first.id, channelId: first.channelId }
|
|
149
|
+
const botId = first.author.id
|
|
150
|
+
const { pages, users } = config
|
|
151
|
+
let page = 0
|
|
152
|
+
let message = first
|
|
153
|
+
let failure: PaginateFailure | undefined
|
|
154
|
+
let collector: ReactionCollector | undefined
|
|
155
|
+
// The users check is application code, so the collector reports its throws and non-boolean returns as filter failures
|
|
156
|
+
const filter = (reaction: MessageReaction) =>
|
|
157
|
+
reaction.userId !== botId &&
|
|
158
|
+
reaction.emoji.id === undefined &&
|
|
159
|
+
step(reaction.emoji.name) !== 0 &&
|
|
160
|
+
(typeof users === "function" ? users(reaction) : users.includes(reaction.userId))
|
|
161
|
+
// SDK requests fail the pages rather than the collector callback, so they are not reported as application failures
|
|
162
|
+
const turn = (reaction: MessageReaction) =>
|
|
163
|
+
Effect.gen(function* () {
|
|
164
|
+
const next = (page + step(reaction.emoji.name) + pages.length) % pages.length
|
|
165
|
+
message = yield* owner.edit(target, editInput(pages[next]!))
|
|
166
|
+
page = next
|
|
167
|
+
if (config.removeClicks)
|
|
168
|
+
yield* owner.reaction("removeUserReaction", target, reaction.emoji, undefined, reaction.userId)
|
|
169
|
+
}).pipe(
|
|
170
|
+
Effect.catch((error: PaginateFailure) =>
|
|
171
|
+
Effect.sync(() => {
|
|
172
|
+
failure ??= error
|
|
173
|
+
collector?.stop()
|
|
174
|
+
}),
|
|
175
|
+
),
|
|
176
|
+
)
|
|
177
|
+
return Effect.uninterruptibleMask((restore) =>
|
|
178
|
+
Effect.gen(function* () {
|
|
179
|
+
const registered = yield* collectReactions(
|
|
180
|
+
owner,
|
|
181
|
+
target,
|
|
182
|
+
{
|
|
183
|
+
maxReactions: Number.MAX_SAFE_INTEGER,
|
|
184
|
+
idleMs: config.idleMs,
|
|
185
|
+
timeoutMs: config.timeoutMs,
|
|
186
|
+
filter,
|
|
187
|
+
...(first.guildId === undefined ? {} : { guildId: first.guildId }),
|
|
188
|
+
},
|
|
189
|
+
false,
|
|
190
|
+
turn,
|
|
191
|
+
!config.removeClicks,
|
|
192
|
+
)
|
|
193
|
+
collector = registered
|
|
194
|
+
const exit = yield* Effect.exit(
|
|
195
|
+
restore(
|
|
196
|
+
Effect.gen(function* () {
|
|
197
|
+
for (const arrow of arrows) yield* owner.reaction("addReaction", target, arrow)
|
|
198
|
+
const ended = yield* Deferred.await(registered.closed)
|
|
199
|
+
if (failure !== undefined) return yield* Effect.fail(failure)
|
|
200
|
+
return Object.freeze({ message, page, reason: ended.reason === "idle" ? "idle" : "timeout" })
|
|
201
|
+
}),
|
|
202
|
+
),
|
|
203
|
+
)
|
|
204
|
+
registered.stop()
|
|
205
|
+
// Wait for an active page change to finish, so it cannot run after the arrows are gone
|
|
206
|
+
yield* Effect.exit(Deferred.await(registered.closed))
|
|
207
|
+
let removal: PaginateFailure | undefined
|
|
208
|
+
let defects: Cause.Cause<never> = Cause.empty
|
|
209
|
+
for (const arrow of arrows) {
|
|
210
|
+
const removed = yield* Effect.exit(owner.reaction("removeReaction", target, arrow))
|
|
211
|
+
if (Exit.isSuccess(removed)) continue
|
|
212
|
+
const failed = removed.cause.reasons.find((reason) => reason._tag === "Fail")
|
|
213
|
+
if (failed?._tag === "Fail") removal ??= failed.error
|
|
214
|
+
defects = Cause.combine(
|
|
215
|
+
defects,
|
|
216
|
+
Cause.fromReasons<never>(removed.cause.reasons.filter((reason) => reason._tag === "Die")),
|
|
217
|
+
)
|
|
218
|
+
}
|
|
219
|
+
if (Exit.isFailure(exit)) return yield* Effect.failCause(Cause.combine(exit.cause, defects))
|
|
220
|
+
if (defects.reasons.length) return yield* Effect.failCause(defects)
|
|
221
|
+
if (removal !== undefined) return yield* Effect.fail(removal)
|
|
222
|
+
return exit.value as PaginateResult<M>
|
|
223
|
+
}),
|
|
224
|
+
)
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Options for a command context's paginate: The users option defaults to the command's author, and a default-API
|
|
229
|
+
* handler signal is combined with any supplied signal. Getters defer each read to the operation, so a throwing caller
|
|
230
|
+
* getter is still marked as application input there, and malformed options pass through to be rejected there
|
|
231
|
+
*/
|
|
232
|
+
export function askerPageOptions<O extends object>(
|
|
233
|
+
options: O | undefined,
|
|
234
|
+
asker: string,
|
|
235
|
+
signal?: AbortSignal,
|
|
236
|
+
): O & { readonly users: PageTurners } {
|
|
237
|
+
if (options === undefined) return { users: [asker], ...(signal === undefined ? {} : { signal }) } as never
|
|
238
|
+
if (typeof options !== "object" || options === null || Array.isArray(options)) return options as never
|
|
239
|
+
let combined: unknown
|
|
240
|
+
const read = (property: string | symbol): unknown => {
|
|
241
|
+
if (property === "users") return Reflect.get(options, "users", options) ?? [asker]
|
|
242
|
+
if (property !== "signal" || signal === undefined) return Reflect.get(options, property, options)
|
|
243
|
+
if (combined !== undefined) return combined
|
|
244
|
+
const own: unknown = Reflect.get(options, "signal", options)
|
|
245
|
+
// An invalid caller signal passes through unchanged, so the operation rejects it with ConfigurationError
|
|
246
|
+
return (combined =
|
|
247
|
+
own === undefined ? signal : own instanceof AbortSignal ? AbortSignal.any([signal, own]) : own)
|
|
248
|
+
}
|
|
249
|
+
const added = signal === undefined ? ["users"] : ["users", "signal"]
|
|
250
|
+
return new Proxy(Object.create(null) as O & { readonly users: PageTurners }, {
|
|
251
|
+
get: (_target, property) => read(property),
|
|
252
|
+
ownKeys: () => [...new Set([...Reflect.ownKeys(options), ...added])],
|
|
253
|
+
getOwnPropertyDescriptor: (_target, property) => {
|
|
254
|
+
if (added.includes(property as string))
|
|
255
|
+
return { value: read(property), enumerable: true, configurable: true, writable: false }
|
|
256
|
+
const descriptor = Reflect.getOwnPropertyDescriptor(options, property)
|
|
257
|
+
return descriptor === undefined ? undefined : { ...descriptor, configurable: true }
|
|
258
|
+
},
|
|
259
|
+
})
|
|
260
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reaction operations, reaction user pages and reaction gateway projections.
|
|
3
|
+
* Invariant: Reaction events never change cached message snapshots.
|
|
4
|
+
* Implements [SDK contracts: Delivery, requests and caches](/docs/SDK-CONTRACTS.md#delivery-requests-and-caches)
|
|
5
|
+
*/
|
|
6
|
+
import type { ReactionEmoji, ReactionEmojiInput, ReactionTarget, ReactionUser, ReactionUsersPage } from "#sdk/reactions"
|
|
7
|
+
import { inputValidationFailure, unsupportedKeyFailure } from "#sdk/input-validation"
|
|
8
|
+
import { format } from "#sdk/helpers"
|
|
9
|
+
import { identifier, record } from "./decode/primitives.js"
|
|
10
|
+
import { rejectCheck } from "./decode/trace.js"
|
|
11
|
+
|
|
12
|
+
export function encodeReactionUsersQuery(query: unknown) {
|
|
13
|
+
const input = query === undefined ? {} : query
|
|
14
|
+
if (!record(input)) return inputValidationFailure("query", "type", "Reaction user query must be an object")
|
|
15
|
+
const unsupported = unsupportedKeyFailure(input, ["limit", "after"], "query", "the reaction user query")
|
|
16
|
+
if (unsupported) return unsupported
|
|
17
|
+
const limitInput = input.limit
|
|
18
|
+
const after = input.after
|
|
19
|
+
const limit = limitInput === undefined ? 25 : limitInput
|
|
20
|
+
if (typeof limit !== "number" || !Number.isInteger(limit) || limit < 1 || limit > 100)
|
|
21
|
+
return inputValidationFailure(
|
|
22
|
+
"query.limit",
|
|
23
|
+
"range",
|
|
24
|
+
"Reaction user limit must be an integer from 1 through 100",
|
|
25
|
+
)
|
|
26
|
+
if (after !== undefined && !identifier(after))
|
|
27
|
+
return inputValidationFailure("query.after", "format", "Reaction user cursor must be a decimal ID string")
|
|
28
|
+
const params = new URLSearchParams({ limit: String(limit) })
|
|
29
|
+
if (after !== undefined) params.set("after", after)
|
|
30
|
+
return { limit, after, params }
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function decodeReactionUsersPage(
|
|
34
|
+
value: unknown,
|
|
35
|
+
query: { readonly limit: number; readonly after: string | undefined; readonly params: URLSearchParams },
|
|
36
|
+
): ReactionUsersPage | undefined {
|
|
37
|
+
if (
|
|
38
|
+
!record(value) ||
|
|
39
|
+
!Array.isArray(value.items) ||
|
|
40
|
+
value.items.length > query.limit ||
|
|
41
|
+
typeof value.has_more !== "boolean"
|
|
42
|
+
)
|
|
43
|
+
return undefined
|
|
44
|
+
const items: ReactionUser[] = []
|
|
45
|
+
let previous = query.after === undefined ? undefined : BigInt(query.after)
|
|
46
|
+
for (const item of value.items) {
|
|
47
|
+
if (
|
|
48
|
+
!record(item) ||
|
|
49
|
+
!identifier(item.id) ||
|
|
50
|
+
typeof item.username !== "string" ||
|
|
51
|
+
(item.bot !== undefined && typeof item.bot !== "boolean")
|
|
52
|
+
)
|
|
53
|
+
return undefined
|
|
54
|
+
const id = BigInt(item.id)
|
|
55
|
+
if (previous !== undefined && id <= previous) return rejectCheck("order")
|
|
56
|
+
previous = id
|
|
57
|
+
items.push(Object.freeze({ id: item.id, username: item.username, isBot: item.bot === true }))
|
|
58
|
+
}
|
|
59
|
+
if (value.has_more) {
|
|
60
|
+
if (items.length === 0 || value.next_after !== items.at(-1)!.id) return undefined
|
|
61
|
+
} else if (value.next_after !== null) return undefined
|
|
62
|
+
return Object.freeze({
|
|
63
|
+
items: Object.freeze(items),
|
|
64
|
+
hasMore: value.has_more,
|
|
65
|
+
nextAfter: value.next_after as string | null,
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const name = (value: unknown): value is string =>
|
|
70
|
+
typeof value === "string" &&
|
|
71
|
+
value.length > 0 &&
|
|
72
|
+
value.length <= 128 &&
|
|
73
|
+
value.isWellFormed() &&
|
|
74
|
+
// oxlint-disable-next-line no-control-regex -- rejects control characters and spaces in emoji names
|
|
75
|
+
!/[\x00-\x20\x7f]/.test(value)
|
|
76
|
+
|
|
77
|
+
export function resolveReactionEmoji(
|
|
78
|
+
value: ReactionEmojiInput,
|
|
79
|
+
): string | { readonly name: string; readonly id: string } | undefined {
|
|
80
|
+
if (typeof value === "string") {
|
|
81
|
+
if (!value.startsWith("<")) return name(value) && !/[%/:<>]/.test(value) ? value : undefined
|
|
82
|
+
const parsed = format.tryParseCustomEmoji(value)
|
|
83
|
+
if (parsed.isErr()) return undefined
|
|
84
|
+
value = parsed.value
|
|
85
|
+
}
|
|
86
|
+
if (!record(value)) return undefined
|
|
87
|
+
const hasGuildId = "guildId" in value
|
|
88
|
+
const hasAnimated = "animated" in value
|
|
89
|
+
const guildId = hasGuildId ? value.guildId : undefined
|
|
90
|
+
const animated = hasAnimated ? value.animated : undefined
|
|
91
|
+
const snapshot = hasGuildId && hasAnimated && identifier(guildId) && typeof animated === "boolean"
|
|
92
|
+
const allowCloning = snapshot ? value.allowCloning : undefined
|
|
93
|
+
const metadata = snapshot && typeof allowCloning === "boolean"
|
|
94
|
+
if (
|
|
95
|
+
Object.keys(value).some(
|
|
96
|
+
(key) =>
|
|
97
|
+
![
|
|
98
|
+
"name",
|
|
99
|
+
"id",
|
|
100
|
+
"animated",
|
|
101
|
+
...(snapshot ? ["guildId"] : []),
|
|
102
|
+
...(metadata ? ["allowCloning"] : []),
|
|
103
|
+
].includes(key),
|
|
104
|
+
)
|
|
105
|
+
)
|
|
106
|
+
return undefined
|
|
107
|
+
const id = value.id
|
|
108
|
+
if (animated !== undefined && (typeof animated !== "boolean" || id === undefined)) return undefined
|
|
109
|
+
const nameValue = value.name
|
|
110
|
+
if (id === undefined) return name(nameValue) && !/[%/:<>]/.test(nameValue) ? nameValue : undefined
|
|
111
|
+
return typeof nameValue === "string" && /^[A-Za-z0-9_-]{1,32}$/.test(nameValue) && identifier(id)
|
|
112
|
+
? { name: nameValue, id }
|
|
113
|
+
: undefined
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function encodeReactionEmoji(value: ReactionEmojiInput): string | undefined {
|
|
117
|
+
const emoji = resolveReactionEmoji(value)
|
|
118
|
+
return emoji === undefined
|
|
119
|
+
? undefined
|
|
120
|
+
: encodeURIComponent(typeof emoji === "string" ? emoji : `${emoji.name}:${emoji.id}`)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function emoji(value: unknown): ReactionEmoji | undefined {
|
|
124
|
+
if (!record(value) || !name(value.name)) return undefined
|
|
125
|
+
if (value.id !== undefined && !identifier(value.id)) return undefined
|
|
126
|
+
if (value.animated !== undefined && (typeof value.animated !== "boolean" || value.id === undefined))
|
|
127
|
+
return undefined
|
|
128
|
+
return Object.freeze({
|
|
129
|
+
name: value.name,
|
|
130
|
+
...(value.id === undefined ? {} : { id: value.id as string }),
|
|
131
|
+
...(value.animated === undefined ? {} : { animated: value.animated as boolean }),
|
|
132
|
+
})
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export const reactionEvents = {
|
|
136
|
+
MESSAGE_REACTION_ADD: "messageReactionAdd",
|
|
137
|
+
MESSAGE_REACTION_ADD_MANY: "messageReactionAddMany",
|
|
138
|
+
MESSAGE_REACTION_REMOVE: "messageReactionRemove",
|
|
139
|
+
MESSAGE_REACTION_REMOVE_ALL: "messageReactionRemoveAll",
|
|
140
|
+
MESSAGE_REACTION_REMOVE_EMOJI: "messageReactionRemoveEmoji",
|
|
141
|
+
} as const
|
|
142
|
+
|
|
143
|
+
export function decodeReaction(event: keyof typeof reactionEvents, value: unknown) {
|
|
144
|
+
if (
|
|
145
|
+
!record(value) ||
|
|
146
|
+
!identifier(value.channel_id) ||
|
|
147
|
+
!identifier(value.message_id) ||
|
|
148
|
+
(value.guild_id !== undefined && !identifier(value.guild_id))
|
|
149
|
+
)
|
|
150
|
+
return undefined
|
|
151
|
+
const target: ReactionTarget = {
|
|
152
|
+
id: value.message_id,
|
|
153
|
+
channelId: value.channel_id,
|
|
154
|
+
...(value.guild_id === undefined ? {} : { guildId: value.guild_id as string }),
|
|
155
|
+
}
|
|
156
|
+
if (event === "MESSAGE_REACTION_REMOVE_ALL") return Object.freeze(target)
|
|
157
|
+
if (event === "MESSAGE_REACTION_ADD_MANY") {
|
|
158
|
+
if (!Array.isArray(value.reactions) || value.reactions.length === 0 || value.reactions.length > 512)
|
|
159
|
+
return undefined
|
|
160
|
+
const reactions = []
|
|
161
|
+
for (const item of value.reactions) {
|
|
162
|
+
if (!record(item) || !identifier(item.user_id)) return undefined
|
|
163
|
+
const decoded = emoji(item.emoji)
|
|
164
|
+
if (!decoded) return undefined
|
|
165
|
+
reactions.push(Object.freeze({ userId: item.user_id, emoji: decoded }))
|
|
166
|
+
}
|
|
167
|
+
return Object.freeze({ ...target, reactions: Object.freeze(reactions) })
|
|
168
|
+
}
|
|
169
|
+
const decoded = emoji(value.emoji)
|
|
170
|
+
if (!decoded) return undefined
|
|
171
|
+
if (event === "MESSAGE_REACTION_REMOVE_EMOJI") return Object.freeze({ ...target, emoji: decoded })
|
|
172
|
+
if (!identifier(value.user_id)) return undefined
|
|
173
|
+
return Object.freeze({ ...target, emoji: decoded, userId: value.user_id })
|
|
174
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rejection scope: Holds the rest.rejected Warn records of one handler invocation, so a rejected token or permission
|
|
3
|
+
* that fails the handler within one second is logged once, as the handler's failure record, instead of as a Warn and then an Error.
|
|
4
|
+
* Invariant: A held record is logged when the invocation ends, after at most holdMs, or never, when the handler's
|
|
5
|
+
* failure is logged at Error for that rejection's identity, directly or in its cause chain. A handler that fails more
|
|
6
|
+
* than one second after the rejection also logs its failure, because the Warn has already been flushed. A failure that reaches an onError hook claims
|
|
7
|
+
* nothing, so the Warn still shows a rejection that the application handles. Native handlers find the scope in their
|
|
8
|
+
* fiber context. Default-API handler code runs in async context storage, which an operation reads when it starts and
|
|
9
|
+
* passes on in its fiber context.
|
|
10
|
+
* Implements [SDK contracts: User-handler failures](/docs/SDK-CONTRACTS.md#user-handler-failures)
|
|
11
|
+
*/
|
|
12
|
+
import { AsyncLocalStorage } from "node:async_hooks"
|
|
13
|
+
import * as Context from "effect/Context"
|
|
14
|
+
import * as Effect from "effect/Effect"
|
|
15
|
+
import type { ClientLogger, LogInput } from "./logging.js"
|
|
16
|
+
|
|
17
|
+
/** Longest time a record waits for its handler, so a handler that runs for a long time still shows its rejections */
|
|
18
|
+
const holdMs = 1_000
|
|
19
|
+
|
|
20
|
+
interface HeldRecord {
|
|
21
|
+
readonly logger: ClientLogger
|
|
22
|
+
readonly input: LogInput
|
|
23
|
+
readonly context: Context.Context<never> | undefined
|
|
24
|
+
readonly error: object
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Private identity links keep domain error conversion from changing which rejection a handler reports */
|
|
28
|
+
const rejectionSources = new WeakMap<object, object>()
|
|
29
|
+
|
|
30
|
+
/** Link a converted failure to its source without changing the public error's cause or retaining either globally */
|
|
31
|
+
export function linkRejectionError<A>(error: A, source: object): A {
|
|
32
|
+
if (typeof error === "object" && error !== null) rejectionSources.set(error, source)
|
|
33
|
+
return error
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export class RejectionScope {
|
|
37
|
+
#held: HeldRecord[] = []
|
|
38
|
+
#timer: ReturnType<typeof setTimeout> | undefined
|
|
39
|
+
#ended = false
|
|
40
|
+
|
|
41
|
+
/** Hold a rejection record for this invocation. False when the invocation already ended, so the caller logs it */
|
|
42
|
+
hold(logger: ClientLogger, input: LogInput, context: Context.Context<never> | undefined, error: object): boolean {
|
|
43
|
+
if (this.#ended) return false
|
|
44
|
+
this.#held.push({ logger, input, context, error })
|
|
45
|
+
if (this.#timer === undefined) {
|
|
46
|
+
this.#timer = setTimeout(() => this.flush(), holdMs)
|
|
47
|
+
this.#timer.unref?.()
|
|
48
|
+
}
|
|
49
|
+
return true
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** Drop only records for this failure's identity, following a bounded cause chain and domain conversion links */
|
|
53
|
+
claim(error: unknown) {
|
|
54
|
+
if (this.#held.length === 0) return
|
|
55
|
+
const identities = new Set<object>()
|
|
56
|
+
for (let depth = 0; depth <= 4 && typeof error === "object" && error !== null; depth++) {
|
|
57
|
+
if (identities.has(error)) break
|
|
58
|
+
let source: object | undefined = error
|
|
59
|
+
for (let links = 0; links <= 4 && source !== undefined; links++) {
|
|
60
|
+
if (identities.has(source)) break
|
|
61
|
+
identities.add(source)
|
|
62
|
+
source = rejectionSources.get(source)
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
error = (error as { readonly cause?: unknown }).cause
|
|
66
|
+
} catch {
|
|
67
|
+
// allow-silent: A hostile cause getter ends traversal, while already matched identities remain usable
|
|
68
|
+
break
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
this.#held = this.#held.filter(({ error }) => !identities.has(error))
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** Log every held record */
|
|
75
|
+
flush() {
|
|
76
|
+
if (this.#timer !== undefined) clearTimeout(this.#timer)
|
|
77
|
+
this.#timer = undefined
|
|
78
|
+
const held = this.#held
|
|
79
|
+
this.#held = []
|
|
80
|
+
for (const { logger, input, context } of held) logger.log(input, context)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** End the invocation: Log what is still held, and log later rejections at once */
|
|
84
|
+
end() {
|
|
85
|
+
this.#ended = true
|
|
86
|
+
this.flush()
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** The scope of the handler invocation a fiber runs for */
|
|
91
|
+
const CurrentRejectionScope = Context.Reference<RejectionScope | undefined>("@neontechspace/fluxerly/RejectionScope", {
|
|
92
|
+
defaultValue: () => undefined,
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
/** The scope of the default-API handler whose code is running, read when an operation starts */
|
|
96
|
+
const storage = new AsyncLocalStorage<RejectionScope>()
|
|
97
|
+
|
|
98
|
+
/** Run default-API handler code so that the operations it starts hold their rejection records in scope */
|
|
99
|
+
export function inRejectionScope<A>(scope: RejectionScope | undefined, run: () => A): A {
|
|
100
|
+
return scope === undefined ? run() : storage.run(scope, run)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** The scope of the running default-API handler code, if any */
|
|
104
|
+
export function currentRejectionScope(): RejectionScope | undefined {
|
|
105
|
+
return storage.getStore()
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/** Provide a scope to an Effect, so its operations and callbacks hold their rejection records in it */
|
|
109
|
+
export function withRejectionScope<A, E, R>(
|
|
110
|
+
effect: Effect.Effect<A, E, R>,
|
|
111
|
+
scope: RejectionScope | undefined,
|
|
112
|
+
): Effect.Effect<A, E, R> {
|
|
113
|
+
return scope === undefined ? effect : Effect.provideService(effect, CurrentRejectionScope, scope)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/** The scope in a fiber context */
|
|
117
|
+
export function fiberRejectionScope(context: Context.Context<never>): RejectionScope | undefined {
|
|
118
|
+
return Context.get(context, CurrentRejectionScope)
|
|
119
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded JSON response reading.
|
|
3
|
+
* Invariant: Decoded body bytes are bounded before parsing, and reader cancellation and release are always awaited.
|
|
4
|
+
* Implements [SDK contracts: Delivery, requests and caches](/docs/SDK-CONTRACTS.md#delivery-requests-and-caches)
|
|
5
|
+
*/
|
|
6
|
+
import { TransportError } from "./effect-failures.js"
|
|
7
|
+
|
|
8
|
+
/** Bounded response parsing completed, but releasing its owned reader failed */
|
|
9
|
+
export class ResponseJsonCleanupError extends Error {
|
|
10
|
+
constructor(
|
|
11
|
+
readonly cause: unknown,
|
|
12
|
+
readonly status: number,
|
|
13
|
+
) {
|
|
14
|
+
super("JSON response cleanup failed", { cause })
|
|
15
|
+
this.name = "ResponseJsonCleanupError"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Bound decoded HTTP body bytes before parsing JSON, then await reader cancellation and release.
|
|
21
|
+
* Invalid UTF-8 or JSON returns undefined. A body whose connection fails mid-read throws a TransportError
|
|
22
|
+
*/
|
|
23
|
+
export async function readResponseJson(
|
|
24
|
+
response: Response,
|
|
25
|
+
maxBytes = 16_777_216,
|
|
26
|
+
signal?: AbortSignal,
|
|
27
|
+
): Promise<unknown> {
|
|
28
|
+
const reader = response.body?.getReader()
|
|
29
|
+
if (!reader) return undefined
|
|
30
|
+
const decoder = new TextDecoder("utf-8", { fatal: true })
|
|
31
|
+
let result = "",
|
|
32
|
+
bytes = 0,
|
|
33
|
+
ended = false
|
|
34
|
+
try {
|
|
35
|
+
while (true) {
|
|
36
|
+
const next = await reader.read().catch((error: unknown) => {
|
|
37
|
+
// A failed read leaves the stream errored, so it needs no cancellation
|
|
38
|
+
ended = true
|
|
39
|
+
throw new TransportError(error, "response body read")
|
|
40
|
+
})
|
|
41
|
+
if (next.done) {
|
|
42
|
+
ended = true
|
|
43
|
+
break
|
|
44
|
+
}
|
|
45
|
+
bytes += next.value.byteLength
|
|
46
|
+
if (bytes > maxBytes) return undefined
|
|
47
|
+
result += decoder.decode(next.value, { stream: true })
|
|
48
|
+
}
|
|
49
|
+
return JSON.parse(result + decoder.decode()) as unknown
|
|
50
|
+
} catch (error) {
|
|
51
|
+
if (error instanceof TransportError) throw error
|
|
52
|
+
// allow-silent: Invalid UTF-8 or JSON returns undefined, which the decoder reports as an unusable response
|
|
53
|
+
return undefined
|
|
54
|
+
} finally {
|
|
55
|
+
const failures: unknown[] = []
|
|
56
|
+
const actions: (() => Promise<void> | void)[] = [
|
|
57
|
+
...(!ended ? [() => reader.cancel()] : []),
|
|
58
|
+
() => reader.releaseLock(),
|
|
59
|
+
]
|
|
60
|
+
for (const action of actions) {
|
|
61
|
+
try {
|
|
62
|
+
await action()
|
|
63
|
+
} catch (error) {
|
|
64
|
+
// Re-cancelling a fetch reader after its own request abort can reject with that exact reason
|
|
65
|
+
if (signal?.aborted && error === signal.reason) continue
|
|
66
|
+
failures.push(error)
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (failures.length)
|
|
70
|
+
// oxlint-disable-next-line no-unsafe-finally -- a reader cleanup failure deliberately replaces the parsed result
|
|
71
|
+
throw new ResponseJsonCleanupError(
|
|
72
|
+
failures.length === 1 ? failures[0] : new AggregateError(failures, "JSON response cleanup failed"),
|
|
73
|
+
response.status,
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
}
|