@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,586 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One shard's connection loop: Discovery, gateway attempts, readiness and retries until a permanent failure.
|
|
3
|
+
* Invariant: Each assigned shard has exactly one loop with its own session, sequence, heartbeat timing and backoff.
|
|
4
|
+
* Startup and recovery use separate retry policies, server-required waits are respected, the loop attempts Resume
|
|
5
|
+
* before a new session when the protocol permits it, and it stops on permanent failures, cancellation or SDK defects.
|
|
6
|
+
* A successful Resume replays every retained dispatch after the session's sequence. Fluxer refuses the Resume with
|
|
7
|
+
* INVALID_SESSION instead when it dropped a needed dispatch (the replay floor in fluxer_gateway session_lifecycle.erl at
|
|
8
|
+
* fluxerapp/fluxer commit 858a2d9e2b987330edd81711bb53e4f7edc0bbcc), so guild caches survive a successful Resume and are
|
|
9
|
+
* released only when the next handshake is a new session. Cached threads are the exception: Fluxer never replays
|
|
10
|
+
* THREAD_LIST_SYNC, so the client drops a resumed shard's threads.
|
|
11
|
+
* Implements [SDK contracts: Connection and recovery](/docs/SDK-CONTRACTS.md#connection-and-recovery)
|
|
12
|
+
*/
|
|
13
|
+
import * as Cause from "effect/Cause"
|
|
14
|
+
import * as Clock from "effect/Clock"
|
|
15
|
+
import * as Deferred from "effect/Deferred"
|
|
16
|
+
import * as Duration from "effect/Duration"
|
|
17
|
+
import * as Effect from "effect/Effect"
|
|
18
|
+
import * as Exit from "effect/Exit"
|
|
19
|
+
import * as Pull from "effect/Pull"
|
|
20
|
+
import * as Random from "effect/Random"
|
|
21
|
+
import * as Schedule from "effect/Schedule"
|
|
22
|
+
import type { ConnectionState } from "#sdk/client"
|
|
23
|
+
import {
|
|
24
|
+
ClientClosedError,
|
|
25
|
+
ConnectionError,
|
|
26
|
+
ConnectionTimeoutError,
|
|
27
|
+
RateLimitError,
|
|
28
|
+
type ConnectError,
|
|
29
|
+
type ConnectionFailure,
|
|
30
|
+
} from "#sdk/errors"
|
|
31
|
+
import type { MessageCore } from "#sdk/messages"
|
|
32
|
+
import type { SessionStore } from "#sdk/sharding"
|
|
33
|
+
import { nowMs } from "../clock.js"
|
|
34
|
+
import type { Configuration } from "../configuration.js"
|
|
35
|
+
import type { CountOwner } from "../counts.js"
|
|
36
|
+
import { mapFailureCause, withDeadline } from "../effect-failures.js"
|
|
37
|
+
import type { EventBus } from "../events.js"
|
|
38
|
+
import { primaryError } from "../failures.js"
|
|
39
|
+
import { AttemptFailure, runGatewaySession, type Session } from "../gateway.js"
|
|
40
|
+
import { gatewayUrl, type InstanceResolver } from "../instance.js"
|
|
41
|
+
import type { ClientLogger, LogInput } from "../logging.js"
|
|
42
|
+
import type { MemberChunkOwner } from "../member-chunks.js"
|
|
43
|
+
import type { PresenceOwner } from "../presence.js"
|
|
44
|
+
import { closeActionText, closeCodeInfo, CloseCode } from "../protocol/gateway.js"
|
|
45
|
+
import type { SocketFactory } from "../transport/index.js"
|
|
46
|
+
import type { IdentifyFields, SubmitFailure } from "../gateway/commands.js"
|
|
47
|
+
import { checkSnapshot, type ShardPlan } from "../sharding.js"
|
|
48
|
+
import { backoffCeiling, retryDelay, stayedHealthy } from "./backoff.js"
|
|
49
|
+
import { applyEvent, guildIntake, invalidateDispatch, type ClientCaches } from "./intake.js"
|
|
50
|
+
import { formatDuration } from "./lifetime.js"
|
|
51
|
+
import { emitObservation } from "../observer.js"
|
|
52
|
+
|
|
53
|
+
/** Observable per-shard state, owned by the client and updated by this loop */
|
|
54
|
+
export interface ShardRuntime {
|
|
55
|
+
readonly shardId: number
|
|
56
|
+
state: ConnectionState
|
|
57
|
+
latency: number | null
|
|
58
|
+
recovery: { phase: "startup" | "recovery"; attempt: number; retryDelayMs: number | null } | null
|
|
59
|
+
session: Session
|
|
60
|
+
/** Paced gateway.send path of the current ready session, or undefined while the shard is not ready */
|
|
61
|
+
submit: ((op: number, d: unknown, sent?: () => void) => Effect.Effect<void, SubmitFailure>) | undefined
|
|
62
|
+
/** Gateway URL this shard's sessions use, known after discovery and recorded in saved session snapshots */
|
|
63
|
+
gatewayUrl: string | undefined
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** What the shard loop needs from its client */
|
|
67
|
+
export interface ShardLoopHost<M extends MessageCore> {
|
|
68
|
+
readonly logging: ClientLogger
|
|
69
|
+
readonly instance: InstanceResolver
|
|
70
|
+
readonly caches: ClientCaches<M>
|
|
71
|
+
readonly events: EventBus<M>
|
|
72
|
+
readonly presence: PresenceOwner
|
|
73
|
+
readonly counts: CountOwner
|
|
74
|
+
readonly memberChunks: MemberChunkOwner
|
|
75
|
+
readonly sockets: SocketFactory
|
|
76
|
+
/** The client's aggregate state */
|
|
77
|
+
readonly state: () => ConnectionState
|
|
78
|
+
/** Record a shard transition and recompute the client state */
|
|
79
|
+
readonly setShardState: (shard: ShardRuntime, state: ConnectionState) => void
|
|
80
|
+
/** Release a shard's guild-scoped cache entries once an established or restored session needs a new session, and
|
|
81
|
+
* again when that session is ready, because partial replay and reads stored during the outage may be stale
|
|
82
|
+
*/
|
|
83
|
+
readonly newSession?: (shardId: number) => void
|
|
84
|
+
/** Pace a fresh Identify for this shard, or undefined when Identify needs no coordination */
|
|
85
|
+
readonly identify: ((shardId: number, send: () => void) => Effect.Effect<void, AttemptFailure>) | undefined
|
|
86
|
+
/** Optional Identify fields, computed when this shard sends Identify */
|
|
87
|
+
readonly identifyFields: (shardId: number) => IdentifyFields
|
|
88
|
+
/** Configured session persistence, loaded once at the first attempt */
|
|
89
|
+
readonly sessions: SessionStore | undefined
|
|
90
|
+
/** Whether shutdown will save this shard's session after its socket closes */
|
|
91
|
+
readonly saveSessionOnClose: (shardId: number) => boolean
|
|
92
|
+
/** Observe each accepted READY body, which carries the bot's own user and the shard's communities */
|
|
93
|
+
readonly readyUser?: (body: unknown, shardId: number) => void
|
|
94
|
+
/**
|
|
95
|
+
* Offer a 4011 (sharding required) closure to automatic sharding. True means the client moves every shard to a
|
|
96
|
+
* larger plan, so this loop ends without logging a permanent failure. A string explains why it does not
|
|
97
|
+
*/
|
|
98
|
+
readonly reshard?: (shardId: number) => true | string
|
|
99
|
+
/** Note that this shard resumed a session loaded from the session store, so its guild caches start empty */
|
|
100
|
+
readonly restored?: (shardId: number) => void
|
|
101
|
+
/** Note that this shard resumed a session, after Fluxer replayed the missed dispatches it retained */
|
|
102
|
+
readonly resumed?: (shardId: number) => void
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/** One loop's inputs */
|
|
106
|
+
export interface ShardLoopOptions<M extends MessageCore> {
|
|
107
|
+
readonly host: ShardLoopHost<M>
|
|
108
|
+
readonly configuration: Configuration<M>
|
|
109
|
+
/** Completed once every assigned shard is ready */
|
|
110
|
+
readonly startup: Deferred.Deferred<void, ConnectError>
|
|
111
|
+
readonly shard: ShardRuntime
|
|
112
|
+
/** The client's known shard plan */
|
|
113
|
+
readonly plan: ShardPlan
|
|
114
|
+
/** Logical group startup deadline, including Identify waits */
|
|
115
|
+
readonly deadline: number
|
|
116
|
+
/** The group's startup budget that the deadline was derived from, reported when startup times out */
|
|
117
|
+
readonly startupTimeoutMs: number
|
|
118
|
+
/** Whether the group was ready before this loop started, as after a move to a larger plan, so failures recover */
|
|
119
|
+
readonly established?: boolean
|
|
120
|
+
/** Whether to offer the session store's snapshot, default true. A move to a larger plan starts new sessions */
|
|
121
|
+
readonly loadSessions?: boolean
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** Time allowed for one session store load */
|
|
125
|
+
const sessionLoadTimeoutMs = 5_000
|
|
126
|
+
|
|
127
|
+
/** Server protocol anomalies in a row, without a healthy connection between them, after which a shard stops retrying */
|
|
128
|
+
const protocolFailureLimit = 3
|
|
129
|
+
|
|
130
|
+
/** What went wrong in a failed connection stage, before its facts */
|
|
131
|
+
const connectionTexts = {
|
|
132
|
+
gateway: {
|
|
133
|
+
network: "The gateway connection failed",
|
|
134
|
+
protocol: "The gateway sent data that the SDK cannot accept",
|
|
135
|
+
closed: "The gateway connection closed",
|
|
136
|
+
},
|
|
137
|
+
discovery: {
|
|
138
|
+
network: "The request for Fluxer's instance information failed",
|
|
139
|
+
protocol: "Fluxer's instance information was invalid",
|
|
140
|
+
closed: "The client closed while it read Fluxer's instance information",
|
|
141
|
+
},
|
|
142
|
+
} as const
|
|
143
|
+
|
|
144
|
+
/** Readable reason for an ended connection attempt as one sentence, including a close code's reviewed meaning */
|
|
145
|
+
function attemptExplanation(failure: AttemptFailure): string {
|
|
146
|
+
const error = failure.failure
|
|
147
|
+
if (failure.end === "heartbeatTimeout") return "The gateway did not acknowledge a heartbeat in time"
|
|
148
|
+
if (failure.end === "reconnectRequested") return "The gateway asked the SDK to reconnect"
|
|
149
|
+
if (failure.end === "invalidSession") return "The gateway invalidated the session"
|
|
150
|
+
const closeCode =
|
|
151
|
+
failure.closeCode ??
|
|
152
|
+
(error instanceof ConnectionError && error.phase === "gateway" ? (error.status ?? undefined) : undefined)
|
|
153
|
+
if (closeCode !== undefined) {
|
|
154
|
+
const info = closeCodeInfo(closeCode)
|
|
155
|
+
return `Close code ${closeCode} (${info.name}): ${info.meaning}`
|
|
156
|
+
}
|
|
157
|
+
if (error instanceof ConnectionError) {
|
|
158
|
+
const detail = error.details.detail
|
|
159
|
+
const code = error.details.transportCode
|
|
160
|
+
const facts = [
|
|
161
|
+
typeof detail === "string" ? detail : undefined,
|
|
162
|
+
typeof code === "string" ? code : undefined,
|
|
163
|
+
error.phase === "discovery" && error.status !== null ? `HTTP ${error.status}` : undefined,
|
|
164
|
+
].filter((fact) => fact !== undefined)
|
|
165
|
+
return `${connectionTexts[error.phase][error.reason]}${facts.length ? ` (${facts.join(", ")})` : ""}`
|
|
166
|
+
}
|
|
167
|
+
if (error instanceof ConnectionTimeoutError)
|
|
168
|
+
return `The connection attempt did not finish within ${formatDuration(error.timeoutMs)}`
|
|
169
|
+
if (error instanceof RateLimitError)
|
|
170
|
+
return error.source === "gateway"
|
|
171
|
+
? "Fluxer's gateway rate-limited the connection"
|
|
172
|
+
: "Fluxer rate-limited the request for its instance information"
|
|
173
|
+
return error.message.replace(/\.$/, "")
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function closeFields(failure: AttemptFailure): { closeCode?: number } {
|
|
177
|
+
const error = failure.failure
|
|
178
|
+
if (failure.closeCode !== undefined) return { closeCode: failure.closeCode }
|
|
179
|
+
return error instanceof ConnectionError && error.phase === "gateway" && error.status !== null
|
|
180
|
+
? { closeCode: error.status }
|
|
181
|
+
: {}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/** The handshake of the next attempt after a retryable failure: Resume with a retained session and sequence, otherwise
|
|
185
|
+
* Identify for a new session. Call it after any session reset, so it follows the attempt the loop will actually make
|
|
186
|
+
*/
|
|
187
|
+
function nextHandshake(failure: AttemptFailure, session: Session): "resume" | "identify" {
|
|
188
|
+
return !failure.resetSession && session.id !== undefined && session.sequence !== null ? "resume" : "identify"
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/** Readable next step after a retryable failure as one sentence, following the handshake that nextHandshake reports */
|
|
192
|
+
function nextAction(failure: AttemptFailure, session: Session, delayMs: number, established: boolean): string {
|
|
193
|
+
const resume = nextHandshake(failure, session) === "resume"
|
|
194
|
+
// A rate-limit close and a rate-limited discovery request both arrive as RateLimitError, and the delay covers the wait.
|
|
195
|
+
// This path always retries, so only the rate-limit wait changes the wording besides Resume or a new session
|
|
196
|
+
const rateLimited = failure.failure instanceof RateLimitError
|
|
197
|
+
return closeActionText(rateLimited ? "wait" : "resume", resume, formatDuration(delayMs), established)
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/** Whether a discovery failure is worth another attempt */
|
|
201
|
+
function retryableDiscovery(error: unknown): boolean {
|
|
202
|
+
return (
|
|
203
|
+
error instanceof RateLimitError ||
|
|
204
|
+
(error instanceof ConnectionError &&
|
|
205
|
+
error.reason === "network" &&
|
|
206
|
+
(error.status === null || error.status >= 500))
|
|
207
|
+
)
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/** Run one shard until its connection fails permanently. The loop never succeeds */
|
|
211
|
+
export function runShardLoop<M extends MessageCore>(options: ShardLoopOptions<M>) {
|
|
212
|
+
const { host, configuration, startup, shard, plan, deadline, startupTimeoutMs } = options
|
|
213
|
+
const recovery = configuration.recovery
|
|
214
|
+
return Effect.gen(function* () {
|
|
215
|
+
const fiber = yield* Effect.withFiber((fiber) => Effect.succeed(fiber))
|
|
216
|
+
const logger = host.logging
|
|
217
|
+
const log = (input: Omit<LogInput, "shardId" | "category"> & { readonly category?: LogInput["category"] }) =>
|
|
218
|
+
logger.log({ category: "lifecycle", ...input, shardId: shard.shardId }, fiber.context)
|
|
219
|
+
const clock = yield* Clock.Clock
|
|
220
|
+
const now = () => nowMs(clock)
|
|
221
|
+
const onGuild = guildIntake(host.caches)
|
|
222
|
+
let established = options.established ?? false
|
|
223
|
+
/** Whether startup has used a saved session, until readiness, including a fallback after partial replay */
|
|
224
|
+
let restoredSession = false
|
|
225
|
+
let attempts = 0
|
|
226
|
+
let recoveryStep = 0
|
|
227
|
+
/** Consecutive attempts that ended with a server protocol anomaly */
|
|
228
|
+
let protocolFailures = 0
|
|
229
|
+
let connectedAt: number | undefined
|
|
230
|
+
let disconnectedAt: number | undefined
|
|
231
|
+
let url: string | undefined
|
|
232
|
+
let inviteBase: string | undefined
|
|
233
|
+
let sessionsLoaded = host.sessions === undefined || options.loadSessions === false
|
|
234
|
+
/** Native recovery schedule step, restarted whenever the recovery sequence restarts */
|
|
235
|
+
let scheduleStep:
|
|
236
|
+
| ((now: number, input: ConnectionFailure) => Pull.Pull<[unknown, Duration.Duration], never, unknown>)
|
|
237
|
+
| undefined
|
|
238
|
+
/** The native schedule's next recovery delay for this failure, or undefined once the schedule has completed */
|
|
239
|
+
const scheduledDelay = (schedule: NonNullable<typeof recovery.schedule>, failure: ConnectionFailure) =>
|
|
240
|
+
Effect.gen(function* () {
|
|
241
|
+
scheduleStep ??= yield* Schedule.toStep(schedule)
|
|
242
|
+
return yield* scheduleStep(yield* Clock.currentTimeMillis, failure).pipe(
|
|
243
|
+
Effect.map(([, duration]): number | undefined => Duration.toMillis(duration)),
|
|
244
|
+
Pull.catchDone(() => Effect.succeed(undefined)),
|
|
245
|
+
)
|
|
246
|
+
})
|
|
247
|
+
// A store failure is logged in full and never fails startup: The shard then starts a new session
|
|
248
|
+
const loadSession = (gatewayUrl: string) =>
|
|
249
|
+
Effect.gen(function* () {
|
|
250
|
+
sessionsLoaded = true
|
|
251
|
+
const loadBudgetMs = Math.max(1, Math.min(sessionLoadTimeoutMs, deadline - now()))
|
|
252
|
+
// @effect-diagnostics-next-line unknownInEffectCatch:off
|
|
253
|
+
const loaded = yield* Effect.tryPromise({
|
|
254
|
+
try: () => Promise.resolve(host.sessions!.load(shard.shardId)),
|
|
255
|
+
catch: (error) => error,
|
|
256
|
+
}).pipe(
|
|
257
|
+
Effect.timeoutOrElse({
|
|
258
|
+
duration: loadBudgetMs,
|
|
259
|
+
orElse: () =>
|
|
260
|
+
Effect.fail(
|
|
261
|
+
// @effect-diagnostics-next-line globalErrorInEffectFailure:off
|
|
262
|
+
new Error(
|
|
263
|
+
`The session store's load did not finish within ${formatDuration(loadBudgetMs)}`,
|
|
264
|
+
),
|
|
265
|
+
),
|
|
266
|
+
}),
|
|
267
|
+
Effect.map((value) => ({ value })),
|
|
268
|
+
Effect.catch((error) =>
|
|
269
|
+
Effect.sync(() => {
|
|
270
|
+
log({
|
|
271
|
+
level: "error",
|
|
272
|
+
code: "lifecycle.sessionLoadFailed",
|
|
273
|
+
message: `Shard ${shard.shardId} could not load its saved session, so it starts a new session`,
|
|
274
|
+
error,
|
|
275
|
+
origin: "application",
|
|
276
|
+
})
|
|
277
|
+
return undefined
|
|
278
|
+
}),
|
|
279
|
+
),
|
|
280
|
+
)
|
|
281
|
+
if (loaded === undefined || loaded.value === undefined) return
|
|
282
|
+
const checked = checkSnapshot(loaded.value, gatewayUrl, plan.totalShards, Date.now())
|
|
283
|
+
if ("problem" in checked) {
|
|
284
|
+
log({
|
|
285
|
+
level: "warn",
|
|
286
|
+
code: "lifecycle.sessionSnapshotIgnored",
|
|
287
|
+
message: `Shard ${shard.shardId} ignored its saved session because ${checked.problem}, so it starts a new session`,
|
|
288
|
+
})
|
|
289
|
+
return
|
|
290
|
+
}
|
|
291
|
+
shard.session = { id: checked.snapshot.sessionId, sequence: checked.snapshot.sequence }
|
|
292
|
+
restoredSession = true
|
|
293
|
+
log({
|
|
294
|
+
level: "info",
|
|
295
|
+
code: "lifecycle.sessionRestored",
|
|
296
|
+
message: `Shard ${shard.shardId} is resuming the session saved ${formatDuration(Date.now() - checked.snapshot.savedAt)} ago`,
|
|
297
|
+
})
|
|
298
|
+
})
|
|
299
|
+
while (true) {
|
|
300
|
+
attempts += 1
|
|
301
|
+
const phase = established ? "recovery" : "startup"
|
|
302
|
+
const attemptStartedAt = now()
|
|
303
|
+
shard.recovery = { phase, attempt: attempts, retryDelayMs: null }
|
|
304
|
+
if (established) {
|
|
305
|
+
logger.count("reconnects")
|
|
306
|
+
emitObservation(logger, { type: "reconnect", shardId: shard.shardId })
|
|
307
|
+
}
|
|
308
|
+
const budget = established ? recovery.attemptTimeoutMs : Math.max(0, deadline - now())
|
|
309
|
+
const attempt = Effect.gen(function* () {
|
|
310
|
+
const attemptDeadline = now() + budget
|
|
311
|
+
if (!url) {
|
|
312
|
+
const endpoint = yield* host.instance.resolve().pipe(
|
|
313
|
+
mapFailureCause(
|
|
314
|
+
(error) =>
|
|
315
|
+
new AttemptFailure(
|
|
316
|
+
error instanceof ClientClosedError
|
|
317
|
+
? new ConnectionError("discovery", "closed")
|
|
318
|
+
: error,
|
|
319
|
+
retryableDiscovery(error),
|
|
320
|
+
),
|
|
321
|
+
),
|
|
322
|
+
withDeadline(budget, () => new AttemptFailure(new ConnectionTimeoutError(budget), true)),
|
|
323
|
+
)
|
|
324
|
+
url = gatewayUrl(endpoint.gateway)
|
|
325
|
+
inviteBase = endpoint.invite
|
|
326
|
+
shard.gatewayUrl = url
|
|
327
|
+
}
|
|
328
|
+
if (!sessionsLoaded) yield* loadSession(url)
|
|
329
|
+
const mode = shard.session.id !== undefined && shard.session.sequence !== null ? "resume" : "identify"
|
|
330
|
+
log({
|
|
331
|
+
level: "debug",
|
|
332
|
+
code: "lifecycle.attempt",
|
|
333
|
+
message: `Shard ${shard.shardId} is connecting (${mode === "resume" ? "resuming its session" : "new session"})`,
|
|
334
|
+
attempt: attempts,
|
|
335
|
+
fields: { phase, mode },
|
|
336
|
+
})
|
|
337
|
+
return yield* runGatewaySession({
|
|
338
|
+
messageDecoder: configuration.decodeMessage,
|
|
339
|
+
url,
|
|
340
|
+
token: configuration.token,
|
|
341
|
+
session: shard.session,
|
|
342
|
+
timeoutMs: Math.max(0, attemptDeadline - now()),
|
|
343
|
+
onReady: (readyMode) => {
|
|
344
|
+
const connectedAtMs = now()
|
|
345
|
+
const outage = disconnectedAt === undefined ? undefined : connectedAtMs - disconnectedAt
|
|
346
|
+
if (readyMode === "resume") {
|
|
347
|
+
logger.count("resumes")
|
|
348
|
+
emitObservation(logger, {
|
|
349
|
+
type: "resume",
|
|
350
|
+
shardId: shard.shardId,
|
|
351
|
+
...(outage === undefined ? {} : { outageMs: Math.round(outage) }),
|
|
352
|
+
})
|
|
353
|
+
}
|
|
354
|
+
log({
|
|
355
|
+
level: "info",
|
|
356
|
+
code: "lifecycle.ready",
|
|
357
|
+
message:
|
|
358
|
+
readyMode === "resume"
|
|
359
|
+
? `Shard ${shard.shardId} resumed its session${outage === undefined ? "" : ` after ${formatDuration(outage)} offline`}`
|
|
360
|
+
: `Shard ${shard.shardId} is ready${established ? " with a new session" : ""}`,
|
|
361
|
+
durationMs: Math.round(connectedAtMs - attemptStartedAt),
|
|
362
|
+
attempt: attempts,
|
|
363
|
+
fields: { mode: readyMode, shards: plan.totalShards },
|
|
364
|
+
})
|
|
365
|
+
if (readyMode === "resume") host.resumed?.(shard.shardId)
|
|
366
|
+
if (readyMode === "resume" && restoredSession) host.restored?.(shard.shardId)
|
|
367
|
+
// REST reads stored during the outage may be stale, and a new session replays nothing
|
|
368
|
+
if ((established || restoredSession) && readyMode === "identify")
|
|
369
|
+
host.newSession?.(shard.shardId)
|
|
370
|
+
restoredSession = false
|
|
371
|
+
established = true
|
|
372
|
+
connectedAt = connectedAtMs
|
|
373
|
+
disconnectedAt = undefined
|
|
374
|
+
shard.recovery = null
|
|
375
|
+
host.setShardState(shard, "Connected")
|
|
376
|
+
if (host.state() === "Connected") Deferred.doneUnsafe(startup, Effect.void)
|
|
377
|
+
},
|
|
378
|
+
onLatency: (latency) => {
|
|
379
|
+
shard.latency = latency
|
|
380
|
+
},
|
|
381
|
+
onRecovering: () => {
|
|
382
|
+
disconnectedAt ??= now()
|
|
383
|
+
host.setShardState(shard, "Recovering")
|
|
384
|
+
},
|
|
385
|
+
onDispatch: (event, message, bytes) => {
|
|
386
|
+
applyEvent(host.caches, event, message)
|
|
387
|
+
host.events.offer(event, message, bytes, shard.shardId)
|
|
388
|
+
},
|
|
389
|
+
onRaw: (t, s, d, bytes) => {
|
|
390
|
+
// READY is session control and never reaches the dispatch table, so its user is taken here
|
|
391
|
+
if (t === "READY") host.readyUser?.(d, shard.shardId)
|
|
392
|
+
// Build nothing unless a raw subscriber exists. Raw bodies are not part of the SDK contract
|
|
393
|
+
if (!host.events.hasSources("raw")) return
|
|
394
|
+
if (logger.enabled("trace", "events"))
|
|
395
|
+
logger.log({
|
|
396
|
+
level: "trace",
|
|
397
|
+
category: "events",
|
|
398
|
+
code: "events.raw",
|
|
399
|
+
message: `Delivering raw ${t} dispatch`,
|
|
400
|
+
shardId: shard.shardId,
|
|
401
|
+
fields: { dispatch: t, sequence: s, bytes },
|
|
402
|
+
})
|
|
403
|
+
host.events.offer(
|
|
404
|
+
"raw",
|
|
405
|
+
Object.freeze({ shardId: shard.shardId, t, s, d }),
|
|
406
|
+
bytes,
|
|
407
|
+
shard.shardId,
|
|
408
|
+
)
|
|
409
|
+
},
|
|
410
|
+
identifyFields: () => host.identifyFields(shard.shardId),
|
|
411
|
+
application: {
|
|
412
|
+
attach: (submit) => {
|
|
413
|
+
shard.submit = submit
|
|
414
|
+
},
|
|
415
|
+
detach: () => {
|
|
416
|
+
shard.submit = undefined
|
|
417
|
+
},
|
|
418
|
+
},
|
|
419
|
+
onGuild,
|
|
420
|
+
presence: {
|
|
421
|
+
attach: (send, members, mode) => host.presence.attach(send, members, mode, shard.shardId),
|
|
422
|
+
detach: () => host.presence.detach(shard.shardId),
|
|
423
|
+
guildCreate: (guildId) => host.presence.guildCreate(guildId),
|
|
424
|
+
},
|
|
425
|
+
counts: {
|
|
426
|
+
attach: (guilds, channels) => host.counts.attach(guilds, channels, shard.shardId),
|
|
427
|
+
detach: () => host.counts.detach(shard.shardId),
|
|
428
|
+
receiveGuildCounts: (value) => host.counts.receiveGuildCounts(value),
|
|
429
|
+
receiveChannelMemberCounts: (value) => host.counts.receiveChannelMemberCounts(value),
|
|
430
|
+
},
|
|
431
|
+
memberChunks: {
|
|
432
|
+
attach: (send) => host.memberChunks.attach(send, shard.shardId),
|
|
433
|
+
detach: () => host.memberChunks.detach(shard.shardId),
|
|
434
|
+
receive: (value, bytes) => host.memberChunks.receive(value, bytes),
|
|
435
|
+
rateLimited: (value) => host.memberChunks.rateLimited(value),
|
|
436
|
+
},
|
|
437
|
+
shard: plan.identifyShards ? [shard.shardId, plan.totalShards] : undefined,
|
|
438
|
+
identify: host.identify && ((send) => host.identify!(shard.shardId, send)),
|
|
439
|
+
inviteBase,
|
|
440
|
+
observer: {
|
|
441
|
+
logger,
|
|
442
|
+
shardId: shard.shardId,
|
|
443
|
+
onMalformedDispatch: configuration.onMalformedDispatch,
|
|
444
|
+
invalidate: (type, body) => invalidateDispatch(host.caches, type, body),
|
|
445
|
+
},
|
|
446
|
+
sockets: host.sockets,
|
|
447
|
+
preserveSessionOnInterrupt: () => host.saveSessionOnClose(shard.shardId),
|
|
448
|
+
})
|
|
449
|
+
})
|
|
450
|
+
const result = yield* Effect.uninterruptibleMask((restore) =>
|
|
451
|
+
Effect.exit(restore(attempt)).pipe(
|
|
452
|
+
Effect.flatMap((result) => {
|
|
453
|
+
// Translate even when caller interruption is pending, without exposing AttemptFailure
|
|
454
|
+
if (
|
|
455
|
+
Exit.isFailure(result) &&
|
|
456
|
+
(Cause.hasDies(result.cause) || Cause.hasInterrupts(result.cause))
|
|
457
|
+
) {
|
|
458
|
+
if (Cause.hasDies(result.cause))
|
|
459
|
+
log({
|
|
460
|
+
level: "error",
|
|
461
|
+
code: "lifecycle.connectionEnded",
|
|
462
|
+
message: `Shard ${shard.shardId} stopped because of an unexpected SDK fault`,
|
|
463
|
+
error: primaryError(
|
|
464
|
+
Cause.fromReasons(
|
|
465
|
+
result.cause.reasons.filter((reason) => reason._tag === "Die"),
|
|
466
|
+
),
|
|
467
|
+
),
|
|
468
|
+
cause: Cause.map(result.cause, (failure) => failure.failure),
|
|
469
|
+
})
|
|
470
|
+
return Effect.failCause(Cause.map(result.cause, (failure) => failure.failure))
|
|
471
|
+
}
|
|
472
|
+
return Effect.succeed(result)
|
|
473
|
+
}),
|
|
474
|
+
),
|
|
475
|
+
)
|
|
476
|
+
if (Exit.isSuccess(result)) return yield* Effect.die(new Error("Gateway lifetime ended without an outcome"))
|
|
477
|
+
const reason = result.cause.reasons.find((reason) => reason._tag === "Fail")
|
|
478
|
+
if (reason?._tag !== "Fail") return yield* Effect.die(new Error("Gateway failure had no reason"))
|
|
479
|
+
const failure = reason.error
|
|
480
|
+
const lost = established && connectedAt !== undefined
|
|
481
|
+
const outcome = `Shard ${shard.shardId} ${lost ? "lost its connection" : "could not connect"}. ${attemptExplanation(failure)}`
|
|
482
|
+
if (failure.resetSession) {
|
|
483
|
+
shard.session = { id: undefined, sequence: null }
|
|
484
|
+
log({
|
|
485
|
+
level: "warn",
|
|
486
|
+
code: "lifecycle.sessionReset",
|
|
487
|
+
message: `Shard ${shard.shardId}'s session can no longer be resumed, so its next connection starts a new session`,
|
|
488
|
+
fields: { reason: failure.end },
|
|
489
|
+
})
|
|
490
|
+
}
|
|
491
|
+
if ((established || restoredSession) && nextHandshake(failure, shard.session) === "identify")
|
|
492
|
+
host.newSession?.(shard.shardId)
|
|
493
|
+
// A connection that stayed healthy between anomalies starts the count again
|
|
494
|
+
if (
|
|
495
|
+
connectedAt !== undefined &&
|
|
496
|
+
stayedHealthy(connectedAt, disconnectedAt ?? now(), recovery.healthyResetMs)
|
|
497
|
+
)
|
|
498
|
+
protocolFailures = 0
|
|
499
|
+
if (failure.end === "protocol") protocolFailures += 1
|
|
500
|
+
const protocolLimited = failure.retry && protocolFailures >= protocolFailureLimit
|
|
501
|
+
const reported =
|
|
502
|
+
!established && failure.failure instanceof ConnectionTimeoutError
|
|
503
|
+
? new ConnectionTimeoutError(startupTimeoutMs)
|
|
504
|
+
: failure.failure
|
|
505
|
+
const classification =
|
|
506
|
+
failure.failure instanceof ConnectionError ? failure.failure.reason : failure.failure._tag
|
|
507
|
+
if (!failure.retry || protocolLimited || (!established && attempts >= configuration.maxStartupAttempts)) {
|
|
508
|
+
shard.recovery = null
|
|
509
|
+
// Automatic sharding answers sharding required with a larger plan, which the client logs itself
|
|
510
|
+
const reshard =
|
|
511
|
+
!failure.retry && closeFields(failure).closeCode === CloseCode.shardingRequired
|
|
512
|
+
? host.reshard?.(shard.shardId)
|
|
513
|
+
: undefined
|
|
514
|
+
if (reshard === true) return yield* Effect.fail(reported)
|
|
515
|
+
log({
|
|
516
|
+
level: "error",
|
|
517
|
+
code: "lifecycle.connectionEnded",
|
|
518
|
+
message: `${outcome}. ${protocolLimited ? `The SDK stops retrying after ${protocolFailures} connections in a row ended with invalid gateway data` : failure.retry ? `The SDK stops retrying after ${attempts} attempts (connection.maxStartupAttempts)` : reshard === undefined ? "The SDK does not retry this failure" : `Automatic sharding does not move to a larger plan, because ${reshard}`}`,
|
|
519
|
+
attempt: attempts,
|
|
520
|
+
...closeFields(failure),
|
|
521
|
+
fields: { reason: failure.end, classification },
|
|
522
|
+
error: reported,
|
|
523
|
+
})
|
|
524
|
+
return yield* Effect.fail(reported)
|
|
525
|
+
}
|
|
526
|
+
if (established) {
|
|
527
|
+
host.setShardState(shard, "Recovering")
|
|
528
|
+
if (
|
|
529
|
+
connectedAt !== undefined &&
|
|
530
|
+
stayedHealthy(connectedAt, disconnectedAt ?? now(), recovery.healthyResetMs)
|
|
531
|
+
) {
|
|
532
|
+
recoveryStep = 0
|
|
533
|
+
scheduleStep = undefined
|
|
534
|
+
}
|
|
535
|
+
connectedAt = undefined
|
|
536
|
+
}
|
|
537
|
+
const requiredWait = failure.failure instanceof RateLimitError ? (failure.failure.retryAfterMs ?? 0) : 0
|
|
538
|
+
let delay: number
|
|
539
|
+
if (established && recovery.schedule) {
|
|
540
|
+
// The native schedule decides each recovery delay from the failure, and its completion ends recovery
|
|
541
|
+
const decided = yield* scheduledDelay(recovery.schedule, failure.failure)
|
|
542
|
+
if (decided === undefined) {
|
|
543
|
+
shard.recovery = null
|
|
544
|
+
log({
|
|
545
|
+
level: "error",
|
|
546
|
+
code: "lifecycle.connectionEnded",
|
|
547
|
+
message: `${outcome}. The recovery schedule (connection.recovery.schedule) ended, so the SDK stops retrying`,
|
|
548
|
+
attempt: attempts,
|
|
549
|
+
...closeFields(failure),
|
|
550
|
+
fields: { reason: failure.end, classification },
|
|
551
|
+
error: reported,
|
|
552
|
+
})
|
|
553
|
+
return yield* Effect.fail(reported)
|
|
554
|
+
}
|
|
555
|
+
delay = Math.max(decided, requiredWait)
|
|
556
|
+
} else {
|
|
557
|
+
const ceiling = established ? backoffCeiling(recoveryStep++, recovery) : backoffCeiling(attempts - 1)
|
|
558
|
+
delay = retryDelay(ceiling, yield* Random.next, requiredWait)
|
|
559
|
+
}
|
|
560
|
+
if (!established && delay >= deadline - now()) {
|
|
561
|
+
const ended = requiredWait > 0 ? failure.failure : new ConnectionTimeoutError(startupTimeoutMs)
|
|
562
|
+
log({
|
|
563
|
+
level: "error",
|
|
564
|
+
code: "lifecycle.connectionEnded",
|
|
565
|
+
message: `${outcome}. The startup deadline of ${formatDuration(startupTimeoutMs)} leaves no time for another attempt`,
|
|
566
|
+
attempt: attempts,
|
|
567
|
+
...closeFields(failure),
|
|
568
|
+
fields: { reason: failure.end, classification },
|
|
569
|
+
error: ended,
|
|
570
|
+
})
|
|
571
|
+
return yield* Effect.fail(ended)
|
|
572
|
+
}
|
|
573
|
+
log({
|
|
574
|
+
level: "warn",
|
|
575
|
+
code: lost ? "lifecycle.connectionLost" : "lifecycle.retry",
|
|
576
|
+
message: `${outcome}. ${nextAction(failure, shard.session, delay, established)}`,
|
|
577
|
+
attempt: attempts,
|
|
578
|
+
delayMs: Math.round(delay),
|
|
579
|
+
...closeFields(failure),
|
|
580
|
+
fields: { reason: failure.end, classification, next: nextHandshake(failure, shard.session) },
|
|
581
|
+
})
|
|
582
|
+
shard.recovery = { phase: established ? "recovery" : "startup", attempt: attempts, retryDelayMs: delay }
|
|
583
|
+
yield* Effect.sleep(delay)
|
|
584
|
+
}
|
|
585
|
+
})
|
|
586
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry from public client objects to their owner's logging and failure reporting.
|
|
3
|
+
* Invariant: Optional tools find owner services only for clients the SDK created, and a foreign object resolves to undefined.
|
|
4
|
+
* Implements [SDK contracts: User-handler failures](/docs/SDK-CONTRACTS.md#user-handler-failures)
|
|
5
|
+
*/
|
|
6
|
+
import type * as Effect from "effect/Effect"
|
|
7
|
+
import type { ClientLogger } from "./logging.js"
|
|
8
|
+
import type { FailureReporter } from "./failures.js"
|
|
9
|
+
import type { ScheduledTasks } from "./scheduled-tasks.js"
|
|
10
|
+
import type { EventBus } from "./events.js"
|
|
11
|
+
|
|
12
|
+
/** The owner services that optional tools built on the public client need for logging and failure reports */
|
|
13
|
+
export interface ClientServices {
|
|
14
|
+
readonly logging: ClientLogger
|
|
15
|
+
readonly failures: FailureReporter
|
|
16
|
+
/** Scheduled tasks, whose runs in progress the test kit's idle waits for */
|
|
17
|
+
readonly tasks: Pick<ScheduledTasks, "running">
|
|
18
|
+
/** Event delivery, whose admitted and queued handler invocations the test kit's idle waits for */
|
|
19
|
+
readonly events: Pick<EventBus, "drainState">
|
|
20
|
+
/** The bot account ID for command mention prefixes, or undefined when it cannot be read yet */
|
|
21
|
+
selfUserId(): Effect.Effect<string | undefined>
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const owners = new WeakMap<object, ClientServices>()
|
|
25
|
+
|
|
26
|
+
/** Associate a public client object with its owner's logging and failure reporting */
|
|
27
|
+
export function registerClientOwner<T extends object>(client: T, owner: ClientServices): T {
|
|
28
|
+
owners.set(client, owner)
|
|
29
|
+
return client
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Owner services for a public client, or undefined for a foreign object */
|
|
33
|
+
export function clientServices(client: unknown): ClientServices | undefined {
|
|
34
|
+
return typeof client === "object" && client !== null ? owners.get(client) : undefined
|
|
35
|
+
}
|