@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,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection retry timing for shard startup and established-session recovery.
|
|
3
|
+
* Invariant: Startup and recovery use separate backoff steps with full jitter under a capped exponential ceiling, a
|
|
4
|
+
* server-required wait always wins over a shorter jittered delay, and only a connection that stayed healthy resets the
|
|
5
|
+
* recovery sequence. Socket-cleanup time never counts as healthy connected time. Recovery timing comes from the
|
|
6
|
+
* validated connection.recovery settings, while startup keeps fixed timing bounded by the startup deadline.
|
|
7
|
+
* Implements [SDK contracts: Connection and recovery](/docs/SDK-CONTRACTS.md#connection-and-recovery)
|
|
8
|
+
*/
|
|
9
|
+
import type * as Schedule from "effect/Schedule"
|
|
10
|
+
import type { ConnectionFailure } from "#sdk/errors"
|
|
11
|
+
|
|
12
|
+
/** Validated recovery timing for established sessions */
|
|
13
|
+
export interface RecoveryConfiguration {
|
|
14
|
+
/** Ceiling for the first recovery retry, doubled for each later step */
|
|
15
|
+
readonly minDelayMs: number
|
|
16
|
+
/** Largest backoff ceiling */
|
|
17
|
+
readonly maxDelayMs: number
|
|
18
|
+
/** Budget for one recovery attempt, covering discovery and the handshake */
|
|
19
|
+
readonly attemptTimeoutMs: number
|
|
20
|
+
/** Connected time after which the next loss restarts the recovery sequence */
|
|
21
|
+
readonly healthyResetMs: number
|
|
22
|
+
/** Native schedule that replaces the backoff delays, when configured */
|
|
23
|
+
readonly schedule: Schedule.Schedule<unknown, ConnectionFailure> | undefined
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Documented connection.recovery defaults */
|
|
27
|
+
export const defaultRecovery: RecoveryConfiguration = Object.freeze({
|
|
28
|
+
minDelayMs: 1_000,
|
|
29
|
+
maxDelayMs: 30_000,
|
|
30
|
+
attemptTimeoutMs: 30_000,
|
|
31
|
+
healthyResetMs: 60_000,
|
|
32
|
+
schedule: undefined,
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
/** Fixed startup backoff: 1 s doubling to 30 s, always bounded by the startup deadline */
|
|
36
|
+
const startupBackoff = Object.freeze({ minDelayMs: 1_000, maxDelayMs: 30_000 })
|
|
37
|
+
|
|
38
|
+
/** Doublings after which the ceiling stops growing, far past any configurable maximum */
|
|
39
|
+
const maximumBackoffDoublings = 31
|
|
40
|
+
/** Minimum spacing between Identify sends across this client's shards, unless an identify coordinator paces them */
|
|
41
|
+
export const identifySpacingMs = 1_000
|
|
42
|
+
/** Longest delay host timers accept */
|
|
43
|
+
const maximumTimerMs = 2_147_483_647
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Startup budget for one shard group: The configured deadline plus the Identify spacing the SDK itself adds between
|
|
47
|
+
* the group's shards, so the SDK's own pacing never fails a larger plan. Spacing is added only for spaced shards
|
|
48
|
+
*/
|
|
49
|
+
export function startupBudgetMs(configuredMs: number, spacedShards: number): number {
|
|
50
|
+
return Math.min(maximumTimerMs, configuredMs + Math.max(0, spacedShards - 1) * identifySpacingMs)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Capped exponential ceiling for a zero-based backoff step */
|
|
54
|
+
export function backoffCeiling(
|
|
55
|
+
step: number,
|
|
56
|
+
timing: { readonly minDelayMs: number; readonly maxDelayMs: number } = startupBackoff,
|
|
57
|
+
): number {
|
|
58
|
+
return Math.min(timing.maxDelayMs, timing.minDelayMs * 2 ** Math.min(step, maximumBackoffDoublings))
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Full-jitter delay under the ceiling, never shorter than a server-required wait */
|
|
62
|
+
export function retryDelay(ceiling: number, random: number, requiredWaitMs: number): number {
|
|
63
|
+
return Math.max(random * ceiling, requiredWaitMs)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Whether a connection that ended at endedAt had been healthy long enough to restart the recovery sequence */
|
|
67
|
+
export function stayedHealthy(connectedAt: number, endedAt: number, healthyResetMs: number): boolean {
|
|
68
|
+
return endedAt - connectedAt >= healthyResetMs
|
|
69
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigurationError construction for the connection, gateway and sharding settings added in stage 5b.
|
|
3
|
+
* Invariant: Every field name used here is a documented option name, so ConfigurationError.field names the setting the
|
|
4
|
+
* caller passed. Implements [SDK contracts: Connection and recovery](/docs/SDK-CONTRACTS.md#connection-and-recovery)
|
|
5
|
+
*/
|
|
6
|
+
import { ConfigurationError } from "#sdk/errors"
|
|
7
|
+
|
|
8
|
+
/** Option names these settings report */
|
|
9
|
+
export type ConnectionSettingField = ConfigurationError["field"]
|
|
10
|
+
|
|
11
|
+
/** Build a ConfigurationError for one of these settings */
|
|
12
|
+
export function settingError(
|
|
13
|
+
field: ConnectionSettingField,
|
|
14
|
+
message: string,
|
|
15
|
+
options?: { readonly hint?: string | undefined; readonly cause?: unknown },
|
|
16
|
+
): ConfigurationError {
|
|
17
|
+
return new ConfigurationError(field, message, options)
|
|
18
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Draining shutdown: Stop event intake and new scheduled task runs, then let running handlers, waiting handler events,
|
|
3
|
+
* running scheduled tasks and REST requests finish until a deadline, before shutdown cancels the rest.
|
|
4
|
+
* Invariant: The drain only waits. It never cancels work itself, so the ordinary shutdown that follows cancels whatever
|
|
5
|
+
* is left, and a drain that ends early changes nothing but the time shutdown starts. Waiting follows progress signals,
|
|
6
|
+
* so an idle client ends the drain at once. Implements [SDK contracts: Connection and recovery](/docs/SDK-CONTRACTS.md#connection-and-recovery)
|
|
7
|
+
*/
|
|
8
|
+
import type * as Context from "effect/Context"
|
|
9
|
+
import * as Deferred from "effect/Deferred"
|
|
10
|
+
import * as Effect from "effect/Effect"
|
|
11
|
+
import * as Option from "effect/Option"
|
|
12
|
+
import { ConfigurationError } from "#sdk/errors"
|
|
13
|
+
import { record } from "../decode/primitives.js"
|
|
14
|
+
import type { EventBus } from "../events.js"
|
|
15
|
+
import type { ClientLogger } from "../logging.js"
|
|
16
|
+
import type { ScheduledTasks } from "../scheduled-tasks.js"
|
|
17
|
+
import { unsupportedKeyHint } from "../suggest.js"
|
|
18
|
+
import { formatDuration } from "./lifetime.js"
|
|
19
|
+
|
|
20
|
+
/** Longest drain, the longest single timer delay */
|
|
21
|
+
const maximumDrainMs = 2_147_483_647
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Read the drain time from shutdown options, 0 when omitted. Misuse returns ConfigurationError without the rejected value.
|
|
25
|
+
* Reading the options is application input, so the caller runs this under a defect boundary
|
|
26
|
+
*/
|
|
27
|
+
export function shutdownDrainMs(options: unknown): number | ConfigurationError {
|
|
28
|
+
if (options === undefined) return 0
|
|
29
|
+
if (!record(options)) return new ConfigurationError("configuration", "Shutdown options must be an object")
|
|
30
|
+
const unsupported = Object.keys(options).find((key) => key !== "drainMs")
|
|
31
|
+
if (unsupported !== undefined)
|
|
32
|
+
return new ConfigurationError("configuration", `Unsupported shutdown option ${JSON.stringify(unsupported)}`, {
|
|
33
|
+
hint: unsupportedKeyHint(unsupported, ["drainMs"]),
|
|
34
|
+
})
|
|
35
|
+
const value = options.drainMs
|
|
36
|
+
if (value === undefined) return 0
|
|
37
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0 || value > maximumDrainMs)
|
|
38
|
+
return new ConfigurationError(
|
|
39
|
+
"drainMs",
|
|
40
|
+
'The option "drainMs" must be an integer from 0 through 2,147,483,647 milliseconds',
|
|
41
|
+
)
|
|
42
|
+
return value
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** Work a drain waits for */
|
|
46
|
+
interface DrainWork {
|
|
47
|
+
readonly running: number
|
|
48
|
+
readonly waiting: number
|
|
49
|
+
readonly tasks: number
|
|
50
|
+
readonly requests: number
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function plural(count: number, one: string, many: string) {
|
|
54
|
+
return `${count} ${count === 1 ? one : many}`
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function describeWork(work: DrainWork): string {
|
|
58
|
+
const parts = [
|
|
59
|
+
...(work.running ? [plural(work.running, "running handler", "running handlers")] : []),
|
|
60
|
+
...(work.waiting ? [plural(work.waiting, "waiting event", "waiting events")] : []),
|
|
61
|
+
...(work.tasks ? [plural(work.tasks, "running scheduled task", "running scheduled tasks")] : []),
|
|
62
|
+
...(work.requests ? [plural(work.requests, "REST request", "REST requests")] : []),
|
|
63
|
+
]
|
|
64
|
+
return parts.length < 2 ? (parts[0] ?? "no work") : `${parts.slice(0, -1).join(", ")} and ${parts.at(-1)}`
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Seal the event bus and scheduled tasks, then wait until no handler or task is running, no event is waiting and no REST
|
|
69
|
+
* request is in flight, or until drainMs passes. Logs the start and the result. Runs with the caller's Clock and never fails
|
|
70
|
+
*/
|
|
71
|
+
export function drainWork(options: {
|
|
72
|
+
readonly events: Pick<EventBus, "seal" | "drainState" | "progress">
|
|
73
|
+
readonly tasks: Pick<ScheduledTasks, "seal" | "running" | "progress">
|
|
74
|
+
/** Completion signals of the REST operations in flight now */
|
|
75
|
+
readonly requests: () => readonly Deferred.Deferred<void>[]
|
|
76
|
+
readonly logging: ClientLogger
|
|
77
|
+
readonly drainMs: number
|
|
78
|
+
readonly context: Context.Context<never>
|
|
79
|
+
}): Effect.Effect<void> {
|
|
80
|
+
const { events, tasks, requests, logging, drainMs, context } = options
|
|
81
|
+
return Effect.suspend(() => {
|
|
82
|
+
events.seal()
|
|
83
|
+
tasks.seal()
|
|
84
|
+
const work = (): DrainWork => ({ ...events.drainState(), tasks: tasks.running, requests: requests().length })
|
|
85
|
+
const initial = work()
|
|
86
|
+
if (initial.running + initial.waiting + initial.tasks + initial.requests === 0) return Effect.void
|
|
87
|
+
const startedAt = Date.now()
|
|
88
|
+
logging.log(
|
|
89
|
+
{
|
|
90
|
+
level: "info",
|
|
91
|
+
category: "lifecycle",
|
|
92
|
+
code: "lifecycle.draining",
|
|
93
|
+
message: `Shutting down after the current work: No new events are accepted, and ${describeWork(initial)} get up to ${formatDuration(drainMs)} to finish`,
|
|
94
|
+
fields: { ...initial, drainMs },
|
|
95
|
+
},
|
|
96
|
+
context,
|
|
97
|
+
)
|
|
98
|
+
// Handlers and tasks can start REST requests and REST responses can let them finish, so check all of them until
|
|
99
|
+
// none has work
|
|
100
|
+
const settled = Effect.gen(function* () {
|
|
101
|
+
while (true) {
|
|
102
|
+
const { running, waiting } = events.drainState()
|
|
103
|
+
if (running + waiting > 0) {
|
|
104
|
+
yield* events.progress()
|
|
105
|
+
continue
|
|
106
|
+
}
|
|
107
|
+
if (tasks.running > 0) {
|
|
108
|
+
yield* tasks.progress()
|
|
109
|
+
continue
|
|
110
|
+
}
|
|
111
|
+
const inFlight = requests()
|
|
112
|
+
if (inFlight.length === 0) return
|
|
113
|
+
yield* Effect.forEach(inFlight, (request) => Deferred.await(request), { discard: true })
|
|
114
|
+
}
|
|
115
|
+
})
|
|
116
|
+
return settled.pipe(
|
|
117
|
+
// Shutdown itself is uninterruptible, and the deadline must still be able to stop this wait
|
|
118
|
+
Effect.interruptible,
|
|
119
|
+
Effect.timeoutOption(drainMs),
|
|
120
|
+
Effect.map((finished) => {
|
|
121
|
+
const durationMs = Date.now() - startedAt
|
|
122
|
+
if (Option.isSome(finished)) {
|
|
123
|
+
logging.log(
|
|
124
|
+
{
|
|
125
|
+
level: "info",
|
|
126
|
+
category: "lifecycle",
|
|
127
|
+
code: "lifecycle.drained",
|
|
128
|
+
message: `The current work finished in ${formatDuration(durationMs)}, so shutdown continues without cancelling any`,
|
|
129
|
+
durationMs,
|
|
130
|
+
},
|
|
131
|
+
context,
|
|
132
|
+
)
|
|
133
|
+
return
|
|
134
|
+
}
|
|
135
|
+
const left = work()
|
|
136
|
+
logging.log(
|
|
137
|
+
{
|
|
138
|
+
level: "warn",
|
|
139
|
+
category: "lifecycle",
|
|
140
|
+
code: "lifecycle.drainTimedOut",
|
|
141
|
+
message: `The ${formatDuration(drainMs)} drain time (drainMs) ran out, so shutdown cancels ${describeWork(left)}`,
|
|
142
|
+
durationMs,
|
|
143
|
+
fields: { ...left, drainMs },
|
|
144
|
+
},
|
|
145
|
+
context,
|
|
146
|
+
)
|
|
147
|
+
}),
|
|
148
|
+
)
|
|
149
|
+
})
|
|
150
|
+
}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gateway cache intake: How decoded events, raw guild dispatches and skipped malformed dispatches update or invalidate
|
|
3
|
+
* the client's message, guild, channel and user caches.
|
|
4
|
+
* Invariant: Fluxer is the source of truth, and intake runs before subscriber delivery, so a subscriber never observes
|
|
5
|
+
* a cache older than the event it is handling. A skipped dispatch clears every entry it could have changed.
|
|
6
|
+
* Implements [SDK contracts: Delivery, requests and caches](/docs/SDK-CONTRACTS.md#delivery-requests-and-caches)
|
|
7
|
+
*/
|
|
8
|
+
import type { GuildChannel } from "#sdk/channels"
|
|
9
|
+
import type { EventMap, EventName } from "#sdk/events"
|
|
10
|
+
import type { MessageCore } from "#sdk/messages"
|
|
11
|
+
import type { MessageCache } from "../cache.js"
|
|
12
|
+
import type { ChannelCache } from "../channel-cache.js"
|
|
13
|
+
import { identifier, record } from "../decode/primitives.js"
|
|
14
|
+
import { isMessageEvent } from "../events.js"
|
|
15
|
+
import type { GuildCache } from "../guild-cache.js"
|
|
16
|
+
import type { ClientLogger } from "../logging.js"
|
|
17
|
+
import { threadParentTypes } from "../thread-events.js"
|
|
18
|
+
import type { UserCache } from "../user-cache.js"
|
|
19
|
+
|
|
20
|
+
/** The caches one client owns. Only the user cache is always present */
|
|
21
|
+
export interface ClientCaches<M extends MessageCore> {
|
|
22
|
+
readonly cache: MessageCache<M> | undefined
|
|
23
|
+
readonly resources: GuildCache | undefined
|
|
24
|
+
readonly channelCache: ChannelCache | undefined
|
|
25
|
+
readonly userCache: UserCache
|
|
26
|
+
/** Records threads that a community snapshot carried in a malformed form */
|
|
27
|
+
readonly logging: ClientLogger
|
|
28
|
+
/** The bot account ID once READY or a self read supplied it, which tells whether a thread member change is the bot's */
|
|
29
|
+
readonly botUserId: string | undefined
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Clear every cache without closing it */
|
|
33
|
+
export function clearCaches<M extends MessageCore>(caches: ClientCaches<M>) {
|
|
34
|
+
caches.cache?.clear()
|
|
35
|
+
caches.resources?.clear()
|
|
36
|
+
caches.channelCache?.clear()
|
|
37
|
+
caches.userCache.clear()
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Apply one decoded event to the caches before it is offered to subscribers */
|
|
41
|
+
export function applyEvent<M extends MessageCore, K extends EventName>(
|
|
42
|
+
caches: ClientCaches<M>,
|
|
43
|
+
event: K,
|
|
44
|
+
message: EventMap<M>[K],
|
|
45
|
+
) {
|
|
46
|
+
const { cache, resources, channelCache, userCache } = caches
|
|
47
|
+
resources?.event(event, message)
|
|
48
|
+
channelCache?.event(event, message)
|
|
49
|
+
if (event === "userUpdate" && "discriminator" in message) {
|
|
50
|
+
const guard = userCache.begin("users", { id: message.id })
|
|
51
|
+
userCache.complete(guard, [message])
|
|
52
|
+
userCache.invalidate("directMessages")
|
|
53
|
+
}
|
|
54
|
+
if (event === "guildMemberUpdate") {
|
|
55
|
+
const member = message as EventMap["guildMemberUpdate"]
|
|
56
|
+
// Member projections omit complete account fields, so evict rather than fabricate a User snapshot.
|
|
57
|
+
// A collection fence also covers pending DM reads whose recipients are not known until completion
|
|
58
|
+
userCache.invalidate("users", member.userId)
|
|
59
|
+
userCache.invalidate("directMessages")
|
|
60
|
+
}
|
|
61
|
+
if ((event === "directMessageCreate" || event === "directMessageUpdate") && "recipients" in message) {
|
|
62
|
+
const guard = userCache.begin("directMessages", { id: message.id })
|
|
63
|
+
userCache.complete(guard, [message])
|
|
64
|
+
}
|
|
65
|
+
if (
|
|
66
|
+
event === "directMessageRecipientAdd" ||
|
|
67
|
+
event === "directMessageRecipientRemove" ||
|
|
68
|
+
event === "directMessageDelete"
|
|
69
|
+
) {
|
|
70
|
+
const id = "channelId" in message ? message.channelId : "id" in message ? message.id : undefined
|
|
71
|
+
userCache.invalidate("directMessages", typeof id === "string" ? id : undefined)
|
|
72
|
+
}
|
|
73
|
+
if (event === "directMessageDelete" && "id" in message) cache?.deleteChannel(message.id)
|
|
74
|
+
if (event === "guildChannelDelete" || event === "threadDelete" || event === "threadMembersUpdate")
|
|
75
|
+
applyThreadEffects(caches, event, message)
|
|
76
|
+
if (isMessageEvent<typeof event, M>(event, message)) cache?.observe(message)
|
|
77
|
+
else if ("ids" in message) {
|
|
78
|
+
for (const id of message.ids) cache?.delete({ id, channelId: message.channelId })
|
|
79
|
+
} else if (event === "messageDelete" && "id" in message && "channelId" in message) cache?.delete(message)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** Apply a channel deletion's or thread event's effects on cached messages and on the bot's cached thread memberships */
|
|
83
|
+
function applyThreadEffects<M extends MessageCore>(
|
|
84
|
+
caches: ClientCaches<M>,
|
|
85
|
+
event: "guildChannelDelete" | "threadDelete" | "threadMembersUpdate",
|
|
86
|
+
message: EventMap<M>[EventName],
|
|
87
|
+
) {
|
|
88
|
+
const { cache, channelCache } = caches
|
|
89
|
+
if (event === "guildChannelDelete") {
|
|
90
|
+
const channel = message as GuildChannel
|
|
91
|
+
cache?.deleteChannel(channel.id)
|
|
92
|
+
// Fluxer deletes a parent's threads without THREAD_DELETE, and a message does not record its thread's parent.
|
|
93
|
+
// The channel cache already evicted the parent's threads, so every channel it still holds is placed elsewhere
|
|
94
|
+
if (threadParentTypes.has(channel.type))
|
|
95
|
+
cache?.deleteUnplaced(channel.guildId, (channelId) => channelCache?.holds(channelId) === true)
|
|
96
|
+
} else if (event === "threadDelete") cache?.deleteChannel((message as EventMap["threadDelete"]).id)
|
|
97
|
+
else {
|
|
98
|
+
const update = message as EventMap["threadMembersUpdate"]
|
|
99
|
+
const self = caches.botUserId
|
|
100
|
+
// The cached thread carries the bot's membership, so a change that may be the bot's makes it stale
|
|
101
|
+
const named =
|
|
102
|
+
self === undefined
|
|
103
|
+
? update.added.length > 0 || update.removedUserIds.length > 0
|
|
104
|
+
: update.added.some((member) => member.userId === self) || update.removedUserIds.includes(self)
|
|
105
|
+
if (named) channelCache?.evictThread(update.threadId, update.guildId)
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Raw guild lifecycle, expression and own thread membership intake, or undefined when no cache can use it */
|
|
110
|
+
export function guildIntake<M extends MessageCore>(
|
|
111
|
+
caches: ClientCaches<M>,
|
|
112
|
+
): ((event: string, value: unknown) => void) | undefined {
|
|
113
|
+
const { cache, resources, channelCache, logging } = caches
|
|
114
|
+
if (!resources && !channelCache && !cache) return undefined
|
|
115
|
+
return (event, value) => {
|
|
116
|
+
if (event === "THREAD_MEMBER_UPDATE") {
|
|
117
|
+
// The dispatch table validated the body first. A cached thread carries the bot's membership, now stale
|
|
118
|
+
if (record(value) && identifier(value.id) && identifier(value.guild_id))
|
|
119
|
+
channelCache?.evictThread(value.id, value.guild_id)
|
|
120
|
+
return
|
|
121
|
+
}
|
|
122
|
+
resources?.guildEvent(event, value)
|
|
123
|
+
if (event !== "GUILD_EMOJIS_UPDATE" && event !== "GUILD_STICKERS_UPDATE")
|
|
124
|
+
for (const field of channelCache?.guildEvent(event, value) ?? [])
|
|
125
|
+
logging.log({
|
|
126
|
+
level: "warn",
|
|
127
|
+
category: "gateway",
|
|
128
|
+
code: "gateway.threadSkipped",
|
|
129
|
+
message: `Skipped a thread in a ${event} dispatch because its data did not match the expected shape at ${field}. The channel cache does not hold it, and handlers still receive the community`,
|
|
130
|
+
fields: { dispatch: event, guildId: (value as { id: string }).id, field },
|
|
131
|
+
})
|
|
132
|
+
if (event === "GUILD_DELETE")
|
|
133
|
+
cache?.gap((guildId) => guildId === undefined || (record(value) && value.id === guildId))
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/** Clear cached observations that a skipped malformed dispatch could have changed */
|
|
138
|
+
export function invalidateDispatch<M extends MessageCore>(caches: ClientCaches<M>, type: string, body: unknown) {
|
|
139
|
+
const { cache, resources, channelCache, userCache } = caches
|
|
140
|
+
const value = record(body) ? body : undefined
|
|
141
|
+
if (type.startsWith("MESSAGE_")) {
|
|
142
|
+
// Reactions never change cached message snapshots
|
|
143
|
+
if (type.startsWith("MESSAGE_REACTION")) return
|
|
144
|
+
if (value && identifier(value.channel_id)) {
|
|
145
|
+
if (identifier(value.id)) cache?.delete({ id: value.id, channelId: value.channel_id })
|
|
146
|
+
else cache?.deleteChannel(value.channel_id)
|
|
147
|
+
} else if (value && identifier(value.id)) {
|
|
148
|
+
// Without a usable channel the message can still be found by its ID, which is the cache key
|
|
149
|
+
cache?.deleteId(value.id)
|
|
150
|
+
} else if (value && identifier(value.guild_id)) {
|
|
151
|
+
const guildId = value.guild_id
|
|
152
|
+
cache?.gap((candidate) => candidate === undefined || candidate === guildId)
|
|
153
|
+
} else cache?.gap()
|
|
154
|
+
return
|
|
155
|
+
}
|
|
156
|
+
if (
|
|
157
|
+
type === "TYPING_START" ||
|
|
158
|
+
type.startsWith("PRESENCE_UPDATE") ||
|
|
159
|
+
type.startsWith("INVITE_") ||
|
|
160
|
+
type === "WEBHOOKS_UPDATE" ||
|
|
161
|
+
type === "VOICE_STATE_UPDATE" ||
|
|
162
|
+
type === "GUILD_AUDIT_LOG_ENTRY_CREATE" ||
|
|
163
|
+
type === "GUILD_HEALTH_UPDATE" ||
|
|
164
|
+
// Calls and entrance sounds feed no cache category
|
|
165
|
+
type.startsWith("CALL_") ||
|
|
166
|
+
type === "ENTRANCE_SOUND_PLAY"
|
|
167
|
+
)
|
|
168
|
+
return
|
|
169
|
+
if (type === "USER_UPDATE") {
|
|
170
|
+
userCache.invalidate("users")
|
|
171
|
+
return
|
|
172
|
+
}
|
|
173
|
+
if (type.startsWith("THREAD_")) {
|
|
174
|
+
invalidateThreadDispatch(caches, type, value)
|
|
175
|
+
return
|
|
176
|
+
}
|
|
177
|
+
if (type === "GUILD_MEMBER_UPDATE") {
|
|
178
|
+
const userId = value && record(value.user) && identifier(value.user.id) ? value.user.id : undefined
|
|
179
|
+
userCache.invalidate("users", userId)
|
|
180
|
+
userCache.invalidate("directMessages")
|
|
181
|
+
}
|
|
182
|
+
const guildId =
|
|
183
|
+
value && identifier(value.guild_id)
|
|
184
|
+
? value.guild_id
|
|
185
|
+
: value && type.startsWith("GUILD_") && identifier(value.id)
|
|
186
|
+
? value.id
|
|
187
|
+
: undefined
|
|
188
|
+
if (guildId !== undefined) {
|
|
189
|
+
const affects = (candidate: string | null | undefined) => candidate === undefined || candidate === guildId
|
|
190
|
+
cache?.gap(affects)
|
|
191
|
+
resources?.gap(affects)
|
|
192
|
+
channelCache?.gap(affects)
|
|
193
|
+
return
|
|
194
|
+
}
|
|
195
|
+
if (type.startsWith("CHANNEL_")) {
|
|
196
|
+
userCache.invalidate("directMessages")
|
|
197
|
+
// Without a usable guild ID the affected guild is unknown, and a category change can reorder its siblings,
|
|
198
|
+
// so the channel cache is cleared entirely
|
|
199
|
+
channelCache?.gap()
|
|
200
|
+
if (value && identifier(value.id)) cache?.deleteChannel(value.id)
|
|
201
|
+
else cache?.gap()
|
|
202
|
+
return
|
|
203
|
+
}
|
|
204
|
+
clearCaches(caches)
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Clear what a skipped thread dispatch could have changed: Only cached threads, and for a deletion also the thread's
|
|
209
|
+
* messages. THREAD_LIST_SYNC names its guild in guild_id, and each other type also names its thread in id
|
|
210
|
+
*/
|
|
211
|
+
function invalidateThreadDispatch<M extends MessageCore>(
|
|
212
|
+
caches: ClientCaches<M>,
|
|
213
|
+
type: string,
|
|
214
|
+
value: Record<string, unknown> | undefined,
|
|
215
|
+
) {
|
|
216
|
+
const { cache, channelCache } = caches
|
|
217
|
+
const guildId = value && identifier(value.guild_id) ? value.guild_id : undefined
|
|
218
|
+
const threadId = type !== "THREAD_LIST_SYNC" && value && identifier(value.id) ? value.id : undefined
|
|
219
|
+
const affects =
|
|
220
|
+
guildId === undefined
|
|
221
|
+
? undefined
|
|
222
|
+
: (candidate: string | null | undefined) => candidate === undefined || candidate === guildId
|
|
223
|
+
if (threadId !== undefined) channelCache?.evictThread(threadId, guildId)
|
|
224
|
+
else channelCache?.gap(affects)
|
|
225
|
+
if (type !== "THREAD_DELETE") return
|
|
226
|
+
if (threadId !== undefined) cache?.deleteChannel(threadId)
|
|
227
|
+
else cache?.gap(affects)
|
|
228
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client lifetime helpers: The shard group under one startup deadline, service cleanup that keeps every defect, and
|
|
3
|
+
* shutdown records.
|
|
4
|
+
* Invariant: The group awaits every assigned shard for initial readiness under one deadline, a healthy shard's work
|
|
5
|
+
* stays independent of another shard's transient gap, and terminal supervision preserves sibling cleanup failures.
|
|
6
|
+
* Shutdown shares cleanup across callers and reports completion only after owned resources are released.
|
|
7
|
+
* Implements [SDK contracts: Connection and recovery](/docs/SDK-CONTRACTS.md#connection-and-recovery)
|
|
8
|
+
*/
|
|
9
|
+
import * as Cause from "effect/Cause"
|
|
10
|
+
import * as Clock from "effect/Clock"
|
|
11
|
+
import type * as Context from "effect/Context"
|
|
12
|
+
import * as Deferred from "effect/Deferred"
|
|
13
|
+
import * as Effect from "effect/Effect"
|
|
14
|
+
import * as Exit from "effect/Exit"
|
|
15
|
+
import { ConnectionTimeoutError, ShardConnectionError, type ConnectError, type ConnectionFailure } from "#sdk/errors"
|
|
16
|
+
import { nowMs } from "../clock.js"
|
|
17
|
+
import { mapFailureCause, withDeadline } from "../effect-failures.js"
|
|
18
|
+
import type { ClientLogger } from "../logging.js"
|
|
19
|
+
|
|
20
|
+
/** Short readable duration for log messages */
|
|
21
|
+
export function formatDuration(milliseconds: number): string {
|
|
22
|
+
if (milliseconds < 1_000) return `${Math.max(0, Math.round(milliseconds))} ms`
|
|
23
|
+
if (milliseconds < 60_000) return `${(milliseconds / 1_000).toFixed(1)} s`
|
|
24
|
+
return `${Math.floor(milliseconds / 60_000)} min ${Math.round((milliseconds % 60_000) / 1_000)} s`
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Run every shard loop until one fails permanently, bounded by the group startup deadline until startup completes.
|
|
28
|
+
* Defects from losing loops, such as socket cleanup failures, are kept in the group's cause
|
|
29
|
+
*/
|
|
30
|
+
export function superviseShards<Shard extends { readonly shardId: number }>(options: {
|
|
31
|
+
readonly shards: readonly Shard[]
|
|
32
|
+
readonly startupTimeoutMs: number
|
|
33
|
+
/** Wrap each shard failure with its shard ID, as configured sharding requires */
|
|
34
|
+
readonly attributeShards: boolean
|
|
35
|
+
/** Completed once every shard is ready */
|
|
36
|
+
readonly startup: Deferred.Deferred<void, ConnectError>
|
|
37
|
+
readonly runShard: (shard: Shard, deadline: number) => Effect.Effect<unknown, ConnectionFailure>
|
|
38
|
+
}) {
|
|
39
|
+
const { shards, startupTimeoutMs, attributeShards, startup, runShard } = options
|
|
40
|
+
return Effect.suspend(() => {
|
|
41
|
+
const exits: Exit.Exit<unknown, ConnectionFailure>[] = []
|
|
42
|
+
const sessions = Effect.gen(function* () {
|
|
43
|
+
const clock = yield* Clock.Clock
|
|
44
|
+
const deadline = nowMs(clock) + startupTimeoutMs
|
|
45
|
+
return yield* Effect.forEach(
|
|
46
|
+
shards,
|
|
47
|
+
(shard) =>
|
|
48
|
+
runShard(shard, deadline).pipe(
|
|
49
|
+
mapFailureCause((failure) =>
|
|
50
|
+
attributeShards && !(failure instanceof ShardConnectionError)
|
|
51
|
+
? new ShardConnectionError(shard.shardId, failure)
|
|
52
|
+
: failure,
|
|
53
|
+
),
|
|
54
|
+
Effect.onExit((exit) =>
|
|
55
|
+
Effect.sync(() => {
|
|
56
|
+
exits.push(exit)
|
|
57
|
+
}),
|
|
58
|
+
),
|
|
59
|
+
),
|
|
60
|
+
{ concurrency: "unbounded", discard: true },
|
|
61
|
+
)
|
|
62
|
+
})
|
|
63
|
+
const startupGuard = Deferred.await(startup).pipe(
|
|
64
|
+
// allow-silent: The startup outcome itself is observed through the startup deferred
|
|
65
|
+
Effect.ignore,
|
|
66
|
+
withDeadline(startupTimeoutMs, () => new ConnectionTimeoutError(startupTimeoutMs)),
|
|
67
|
+
Effect.andThen(Effect.never),
|
|
68
|
+
)
|
|
69
|
+
return Effect.raceFirst(sessions, startupGuard).pipe(
|
|
70
|
+
// A losing session may defect during socket cleanup. Keep those causes across the race boundary
|
|
71
|
+
Effect.onExit((outcome) => {
|
|
72
|
+
const missing = exits.flatMap((exit) =>
|
|
73
|
+
Exit.isFailure(exit)
|
|
74
|
+
? exit.cause.reasons.filter(
|
|
75
|
+
(reason) =>
|
|
76
|
+
reason._tag !== "Interrupt" &&
|
|
77
|
+
(!Exit.isFailure(outcome) || !outcome.cause.reasons.includes(reason)),
|
|
78
|
+
)
|
|
79
|
+
: [],
|
|
80
|
+
)
|
|
81
|
+
return missing.length ? Effect.failCause(Cause.fromReasons(missing)) : Effect.void
|
|
82
|
+
}),
|
|
83
|
+
)
|
|
84
|
+
})
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Keep only defects from a set of cleanup exits, as one cause */
|
|
88
|
+
export function defectsOnly(exits: readonly Exit.Exit<unknown, unknown>[]): Exit.Exit<void> {
|
|
89
|
+
const reasons = exits.flatMap((exit) =>
|
|
90
|
+
Exit.isFailure(exit) ? exit.cause.reasons.filter((reason) => reason._tag === "Die") : [],
|
|
91
|
+
)
|
|
92
|
+
return reasons.length ? Exit.failCause(Cause.fromReasons<never>(reasons)) : Exit.void
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** Run service cleanups concurrently and fail with every reason any of them produced */
|
|
96
|
+
export function closeAll(services: readonly Effect.Effect<Exit.Exit<unknown, never>>[]): Effect.Effect<void> {
|
|
97
|
+
return Effect.all(services, { concurrency: "unbounded" }).pipe(
|
|
98
|
+
Effect.flatMap((exits) => {
|
|
99
|
+
const reasons = exits.flatMap((exit) => (Exit.isFailure(exit) ? exit.cause.reasons : []))
|
|
100
|
+
return reasons.length ? Effect.failCause(Cause.fromReasons<never>(reasons)) : Effect.void
|
|
101
|
+
}),
|
|
102
|
+
)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/** Log the start of shutdown for a client that connected or ran */
|
|
106
|
+
export function logShutdownStart(
|
|
107
|
+
logging: ClientLogger,
|
|
108
|
+
context: Context.Context<never>,
|
|
109
|
+
everStarted: boolean,
|
|
110
|
+
reason: string | undefined,
|
|
111
|
+
) {
|
|
112
|
+
if (!everStarted) return
|
|
113
|
+
logging.log(
|
|
114
|
+
{
|
|
115
|
+
level: "info",
|
|
116
|
+
category: "lifecycle",
|
|
117
|
+
code: "lifecycle.shutdown",
|
|
118
|
+
message: reason === undefined ? "Shutting down" : `Shutting down because ${reason}`,
|
|
119
|
+
},
|
|
120
|
+
context,
|
|
121
|
+
)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** Log each cleanup failure, flush deduplicated records and log completion for a client that connected or ran */
|
|
125
|
+
export function logShutdownEnd(
|
|
126
|
+
logging: ClientLogger,
|
|
127
|
+
context: Context.Context<never>,
|
|
128
|
+
options: { readonly everStarted: boolean; readonly startedAt: number; readonly services: Exit.Exit<void, unknown> },
|
|
129
|
+
) {
|
|
130
|
+
const { everStarted, startedAt, services } = options
|
|
131
|
+
const durationMs = Date.now() - startedAt
|
|
132
|
+
let failedSteps = 0
|
|
133
|
+
if (Exit.isFailure(services)) {
|
|
134
|
+
const faults = services.cause.reasons.filter((reason) => reason._tag !== "Interrupt")
|
|
135
|
+
failedSteps = Math.max(1, faults.length)
|
|
136
|
+
logging.count("cleanupFailures", failedSteps)
|
|
137
|
+
faults.forEach((reason, index) =>
|
|
138
|
+
logging.log(
|
|
139
|
+
{
|
|
140
|
+
level: "error",
|
|
141
|
+
category: "lifecycle",
|
|
142
|
+
code: "lifecycle.cleanupFailed",
|
|
143
|
+
message: `Cleanup step ${index + 1} of ${faults.length} failed during shutdown`,
|
|
144
|
+
error: reason._tag === "Fail" ? reason.error : reason._tag === "Die" ? reason.defect : undefined,
|
|
145
|
+
cause: Cause.fromReasons([reason]),
|
|
146
|
+
},
|
|
147
|
+
context,
|
|
148
|
+
),
|
|
149
|
+
)
|
|
150
|
+
}
|
|
151
|
+
logging.flush(context)
|
|
152
|
+
if (!everStarted) return
|
|
153
|
+
logging.log(
|
|
154
|
+
{
|
|
155
|
+
level: "info",
|
|
156
|
+
category: "lifecycle",
|
|
157
|
+
code: "lifecycle.shutdownComplete",
|
|
158
|
+
message: Exit.isFailure(services)
|
|
159
|
+
? `Shutdown finished in ${formatDuration(durationMs)}, but ${failedSteps} cleanup step${failedSteps === 1 ? "" : "s"} failed`
|
|
160
|
+
: `Shutdown complete in ${formatDuration(durationMs)}`,
|
|
161
|
+
durationMs,
|
|
162
|
+
},
|
|
163
|
+
context,
|
|
164
|
+
)
|
|
165
|
+
}
|