@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,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache change notifications: One client-wide hub that every client-owned cache reports set, delete and clear changes to.
|
|
3
|
+
* Invariant: Notification never changes a cache result, event delivery or REST outcome. Caches only record a change after
|
|
4
|
+
* applying it and build no record while no observer is registered. Records are delivered in applied order from a microtask
|
|
5
|
+
* after the synchronous cache work that produced them, so a listener never runs inside a cache operation, and a failing
|
|
6
|
+
* listener is reported as a cache failure without affecting other listeners. Each listener holds at most its concurrency
|
|
7
|
+
* of unfinished calls and its maxPendingChanges of waiting changes, and a full queue drops its oldest change with a logged
|
|
8
|
+
* and counted Warn, so a stuck listener cannot grow memory. Client closure hands the final clears to listeners with a free
|
|
9
|
+
* call, then closes every observer without waiting for unfinished calls, dropping the changes still waiting with the same
|
|
10
|
+
* logged and counted Warn. Implements [SDK contracts: Delivery, requests and caches](/docs/SDK-CONTRACTS.md#delivery-requests-and-caches)
|
|
11
|
+
*/
|
|
12
|
+
import * as Cause from "effect/Cause"
|
|
13
|
+
import type * as Context from "effect/Context"
|
|
14
|
+
import * as Effect from "effect/Effect"
|
|
15
|
+
import * as Exit from "effect/Exit"
|
|
16
|
+
import type * as Fiber from "effect/Fiber"
|
|
17
|
+
import type * as Scope from "effect/Scope"
|
|
18
|
+
import type { CacheChange, CacheObserverOptions } from "#sdk/cache"
|
|
19
|
+
import type { CacheKind } from "#sdk/client"
|
|
20
|
+
import { ConfigurationError } from "#sdk/errors"
|
|
21
|
+
import type { MessageCore } from "#sdk/messages"
|
|
22
|
+
import type { CacheObserver } from "#sdk/api/default/cache"
|
|
23
|
+
import type { CacheObserver as NativeCacheObserver } from "#sdk/api/effect/cache"
|
|
24
|
+
import { localValue } from "#sdk/internal/binding/execute"
|
|
25
|
+
import type { ClientOwner } from "./client.js"
|
|
26
|
+
import { record as isRecord } from "./decode/primitives.js"
|
|
27
|
+
import { suspendInput } from "./defects.js"
|
|
28
|
+
import { throwIfErr } from "./failures.js"
|
|
29
|
+
import type { ClientLogger } from "./logging.js"
|
|
30
|
+
import { unsupportedKeyHint } from "./suggest.js"
|
|
31
|
+
|
|
32
|
+
/** One registered listener in either entry point's form */
|
|
33
|
+
interface Observer {
|
|
34
|
+
/** Emission sequence number at registration. Only later records are delivered */
|
|
35
|
+
readonly since: number
|
|
36
|
+
deliver(change: CacheChange): void
|
|
37
|
+
close(): void
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
type Queued = { readonly sequence: number; readonly change: CacheChange }
|
|
41
|
+
|
|
42
|
+
/** Client-wide cache change fan-out. Caches call record after applying a change */
|
|
43
|
+
export class CacheChangeHub {
|
|
44
|
+
readonly #observers = new Set<Observer>()
|
|
45
|
+
#queue: Queued[] = []
|
|
46
|
+
#sequence = 0
|
|
47
|
+
#ids = 0
|
|
48
|
+
#scheduled = false
|
|
49
|
+
#closed = false
|
|
50
|
+
#watching = false
|
|
51
|
+
|
|
52
|
+
/** Whether any listener is registered, so caches can skip building change records */
|
|
53
|
+
get active(): boolean {
|
|
54
|
+
return this.#observers.size > 0
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** Queue one applied change for the registered listeners. Never runs a listener inline and never throws */
|
|
58
|
+
record(kind: CacheKind, op: CacheChange["op"], key: string | null): void {
|
|
59
|
+
if (this.#observers.size === 0) return
|
|
60
|
+
this.#queue.push({ sequence: ++this.#sequence, change: Object.freeze({ kind, op, key }) })
|
|
61
|
+
if (this.#scheduled) return
|
|
62
|
+
this.#scheduled = true
|
|
63
|
+
queueMicrotask(() => this.#flush())
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
#flush() {
|
|
67
|
+
this.#scheduled = false
|
|
68
|
+
// Changes a listener causes are appended to a fresh queue and delivered by this same loop, in applied order
|
|
69
|
+
while (this.#queue.length) {
|
|
70
|
+
const batch = this.#queue
|
|
71
|
+
this.#queue = []
|
|
72
|
+
for (const { sequence, change } of batch)
|
|
73
|
+
for (const observer of this.#observers) if (observer.since < sequence) observer.deliver(change)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** A new observer identifier, also given to registrations after closure */
|
|
78
|
+
nextId(): string {
|
|
79
|
+
return `cacheChange#${++this.#ids}`
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** Register an observer, or return undefined after client closure, when no further change can occur */
|
|
83
|
+
add(create: (since: number) => Observer): Observer | undefined {
|
|
84
|
+
if (this.#closed) return undefined
|
|
85
|
+
const observer = create(this.#sequence)
|
|
86
|
+
this.#observers.add(observer)
|
|
87
|
+
return observer
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
remove(observer: Observer) {
|
|
91
|
+
this.#observers.delete(observer)
|
|
92
|
+
if (this.#observers.size === 0) this.#queue = []
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** Close every observer once its owner client closes. Watching starts with the first registration */
|
|
96
|
+
watch(owner: Pick<ClientOwner<MessageCore>, "subscribe">) {
|
|
97
|
+
if (this.#watching) return
|
|
98
|
+
this.#watching = true
|
|
99
|
+
owner.subscribe((state) => {
|
|
100
|
+
if (state === "Closed") this.close()
|
|
101
|
+
})
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Deliver the changes already recorded, including shutdown's final clears, then close every observer. A listener
|
|
106
|
+
* at its concurrency keeps them waiting, so its observer drops them with a Warn rather than holding shutdown
|
|
107
|
+
*/
|
|
108
|
+
close() {
|
|
109
|
+
if (this.#closed) return
|
|
110
|
+
this.#flush()
|
|
111
|
+
this.#closed = true
|
|
112
|
+
for (const observer of this.#observers) observer.close()
|
|
113
|
+
this.#observers.clear()
|
|
114
|
+
this.#queue = []
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
type Bounds = { readonly concurrency: number; readonly maxPendingChanges: number }
|
|
119
|
+
const boundKeys = ["concurrency", "maxPendingChanges"] as const
|
|
120
|
+
|
|
121
|
+
/** The validated onChange options, each read once. A throwing read dies as an application fault */
|
|
122
|
+
const observerBounds = (options: unknown): Effect.Effect<Bounds, ConfigurationError> =>
|
|
123
|
+
suspendInput(() => {
|
|
124
|
+
if (options === undefined) options = {}
|
|
125
|
+
if (!isRecord(options))
|
|
126
|
+
return Effect.fail(
|
|
127
|
+
new ConfigurationError("cacheObserverOptions", "Cache observer options must be an object"),
|
|
128
|
+
)
|
|
129
|
+
const unsupported = Object.keys(options).find((key) => !(boundKeys as readonly string[]).includes(key))
|
|
130
|
+
if (unsupported !== undefined)
|
|
131
|
+
return Effect.fail(
|
|
132
|
+
new ConfigurationError(
|
|
133
|
+
"cacheObserverOptions",
|
|
134
|
+
`Unsupported option ${JSON.stringify(unsupported)} in the cache observer options`,
|
|
135
|
+
{ hint: unsupportedKeyHint(unsupported, boundKeys) },
|
|
136
|
+
),
|
|
137
|
+
)
|
|
138
|
+
const bounds = { concurrency: 256, maxPendingChanges: 256 }
|
|
139
|
+
for (const key of boundKeys) {
|
|
140
|
+
const value = options[key]
|
|
141
|
+
if (value === undefined) continue
|
|
142
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value) || value <= 0)
|
|
143
|
+
return Effect.fail(
|
|
144
|
+
new ConfigurationError(
|
|
145
|
+
key,
|
|
146
|
+
`The cache observer option ${JSON.stringify(key)} must be a positive safe integer`,
|
|
147
|
+
),
|
|
148
|
+
)
|
|
149
|
+
bounds[key] = value
|
|
150
|
+
}
|
|
151
|
+
return Effect.succeed(bounds)
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Bounded delivery to one listener: At most concurrency calls are unfinished, later changes wait in applied order, and a
|
|
156
|
+
* change arriving while maxPendingChanges wait drops the oldest waiting change with a counted Warn
|
|
157
|
+
*/
|
|
158
|
+
class ListenerQueue {
|
|
159
|
+
#running = 0
|
|
160
|
+
#waiting: CacheChange[] = []
|
|
161
|
+
#dropped = 0
|
|
162
|
+
#draining = false
|
|
163
|
+
#open = true
|
|
164
|
+
|
|
165
|
+
constructor(
|
|
166
|
+
readonly id: string,
|
|
167
|
+
private readonly bounds: Bounds,
|
|
168
|
+
private readonly logger: ClientLogger,
|
|
169
|
+
/** Start one listener call. It never throws and calls done once that call has finished */
|
|
170
|
+
private readonly start: (change: CacheChange, done: () => void) => void,
|
|
171
|
+
) {}
|
|
172
|
+
|
|
173
|
+
deliver(change: CacheChange) {
|
|
174
|
+
if (!this.#open) return
|
|
175
|
+
if (this.#running < this.bounds.concurrency && this.#waiting.length === 0) {
|
|
176
|
+
this.#run(change)
|
|
177
|
+
return
|
|
178
|
+
}
|
|
179
|
+
if (this.#waiting.length >= this.bounds.maxPendingChanges) {
|
|
180
|
+
this.#waiting.shift()
|
|
181
|
+
this.#drop()
|
|
182
|
+
}
|
|
183
|
+
this.#waiting.push(change)
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Stop delivery and discard waiting changes. At client shutdown, which never waits for unfinished calls, the
|
|
188
|
+
* discarded changes are logged and counted as drops
|
|
189
|
+
*/
|
|
190
|
+
close(shutdown = false) {
|
|
191
|
+
this.#open = false
|
|
192
|
+
const discarded = this.#waiting.length
|
|
193
|
+
this.#waiting = []
|
|
194
|
+
if (!shutdown || discarded === 0) return
|
|
195
|
+
this.#dropped += discarded
|
|
196
|
+
const { concurrency } = this.bounds
|
|
197
|
+
this.logger.count("cacheChangesDropped", discarded)
|
|
198
|
+
this.logger.log({
|
|
199
|
+
level: "warn",
|
|
200
|
+
category: "cache",
|
|
201
|
+
code: "cache.changesDropped",
|
|
202
|
+
message: `The client shut down while ${discarded} ${discarded === 1 ? "change" : "changes"} waited for the cache.onChange listener ${this.id}, which had ${concurrency} unfinished ${concurrency === 1 ? "call" : "calls"} (concurrency), so ${discarded === 1 ? "it was" : "they were"} dropped`,
|
|
203
|
+
subscriptionId: this.id,
|
|
204
|
+
fields: { dropped: this.#dropped, concurrency, maxPendingChanges: this.bounds.maxPendingChanges },
|
|
205
|
+
})
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
#run(change: CacheChange) {
|
|
209
|
+
this.#running++
|
|
210
|
+
let finished = false
|
|
211
|
+
this.start(change, () => {
|
|
212
|
+
if (finished) return
|
|
213
|
+
finished = true
|
|
214
|
+
this.#running--
|
|
215
|
+
this.#drain()
|
|
216
|
+
})
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/** Start waiting changes while calls are free. Calls that finish synchronously continue this loop rather than nest */
|
|
220
|
+
#drain() {
|
|
221
|
+
if (this.#draining) return
|
|
222
|
+
this.#draining = true
|
|
223
|
+
try {
|
|
224
|
+
while (this.#open && this.#running < this.bounds.concurrency && this.#waiting.length)
|
|
225
|
+
this.#run(this.#waiting.shift()!)
|
|
226
|
+
} finally {
|
|
227
|
+
this.#draining = false
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
#drop() {
|
|
232
|
+
this.#dropped++
|
|
233
|
+
const { concurrency, maxPendingChanges } = this.bounds
|
|
234
|
+
// The message stays the same for every drop, so repeats collapse while fields.dropped carries the latest total
|
|
235
|
+
this.logger.drop("cacheChangesDropped", {
|
|
236
|
+
level: "warn",
|
|
237
|
+
category: "cache",
|
|
238
|
+
code: "cache.changesDropped",
|
|
239
|
+
message: `The cache.onChange listener ${this.id} has ${concurrency} unfinished ${concurrency === 1 ? "call" : "calls"} (concurrency) and ${maxPendingChanges} waiting ${maxPendingChanges === 1 ? "change" : "changes"} (maxPendingChanges), so the oldest waiting change was dropped`,
|
|
240
|
+
subscriptionId: this.id,
|
|
241
|
+
fields: { dropped: this.#dropped, concurrency, maxPendingChanges },
|
|
242
|
+
})
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/** A listener's failure as a client cache report. Reporting never throws */
|
|
247
|
+
function reportFailure<M extends MessageCore>(
|
|
248
|
+
owner: ClientOwner<M>,
|
|
249
|
+
input: { readonly error: unknown } | { readonly cause: Cause.Cause<unknown> },
|
|
250
|
+
) {
|
|
251
|
+
owner.failures.report({ kind: "cache", ...input })
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
const closedObserver = (id: string): CacheObserver =>
|
|
255
|
+
Object.freeze({ id, close: () => undefined, [Symbol.dispose]: () => undefined })
|
|
256
|
+
|
|
257
|
+
/** Default-API cache.onChange: Listeners run from a microtask, and returned promises are observed but not awaited */
|
|
258
|
+
export const defaultCacheOnChange =
|
|
259
|
+
<M extends MessageCore>({ owner }: { readonly owner: ClientOwner<M> }) =>
|
|
260
|
+
(listener: (change: CacheChange) => unknown, options?: CacheObserverOptions): CacheObserver => {
|
|
261
|
+
if (typeof listener !== "function")
|
|
262
|
+
throw new ConfigurationError("listener", "Cache change listener must be a function")
|
|
263
|
+
const bounds = localValue(observerBounds(options), "cache.onChange")
|
|
264
|
+
const hub = owner.cacheChanges
|
|
265
|
+
hub.watch(owner)
|
|
266
|
+
const id = hub.nextId()
|
|
267
|
+
const report = (error: unknown) => reportFailure(owner, { error })
|
|
268
|
+
const queue = new ListenerQueue(id, bounds, owner.logging, (change, done) => {
|
|
269
|
+
let settled: Promise<unknown> | undefined
|
|
270
|
+
try {
|
|
271
|
+
const result = listener(change)
|
|
272
|
+
if (
|
|
273
|
+
typeof result === "object" &&
|
|
274
|
+
result !== null &&
|
|
275
|
+
typeof (result as { then?: unknown }).then === "function"
|
|
276
|
+
)
|
|
277
|
+
settled = Promise.resolve(result).then(throwIfErr)
|
|
278
|
+
else throwIfErr(result)
|
|
279
|
+
} catch (error) {
|
|
280
|
+
report(error)
|
|
281
|
+
}
|
|
282
|
+
if (settled === undefined) done()
|
|
283
|
+
else void settled.catch(report).then(done)
|
|
284
|
+
})
|
|
285
|
+
let open = true
|
|
286
|
+
const observer = hub.add((since) => ({
|
|
287
|
+
since,
|
|
288
|
+
deliver: (change) => queue.deliver(change),
|
|
289
|
+
// The hub closes observers only at client shutdown
|
|
290
|
+
close: () => {
|
|
291
|
+
open = false
|
|
292
|
+
queue.close(true)
|
|
293
|
+
},
|
|
294
|
+
}))
|
|
295
|
+
if (!observer) return closedObserver(id)
|
|
296
|
+
const close = () => {
|
|
297
|
+
if (!open) return
|
|
298
|
+
open = false
|
|
299
|
+
queue.close()
|
|
300
|
+
hub.remove(observer)
|
|
301
|
+
}
|
|
302
|
+
return Object.freeze({ id, close, [Symbol.dispose]: close })
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/** Native cache.onChange: Each change forks the listener Effect with the registration services, closed with its Scope */
|
|
306
|
+
export const nativeCacheOnChange =
|
|
307
|
+
<M extends MessageCore>(owner: ClientOwner<M>) =>
|
|
308
|
+
<E = never, R = never>(
|
|
309
|
+
listener: (change: CacheChange) => Effect.Effect<unknown, E, R>,
|
|
310
|
+
options?: CacheObserverOptions,
|
|
311
|
+
): Effect.Effect<NativeCacheObserver, never, R | Scope.Scope> =>
|
|
312
|
+
Effect.gen(function* () {
|
|
313
|
+
if (typeof listener !== "function")
|
|
314
|
+
return yield* Effect.die(new ConfigurationError("listener", "Cache change listener must be a function"))
|
|
315
|
+
// Invalid options are misuse, so they become a defect rather than a typed failure
|
|
316
|
+
const bounds = yield* observerBounds(options).pipe(Effect.orDie)
|
|
317
|
+
const services = (yield* Effect.context<R>()) as Context.Context<never>
|
|
318
|
+
const hub = owner.cacheChanges
|
|
319
|
+
const id = hub.nextId()
|
|
320
|
+
const close = yield* Effect.acquireRelease(
|
|
321
|
+
Effect.sync(() => {
|
|
322
|
+
hub.watch(owner)
|
|
323
|
+
const running = new Set<Fiber.Fiber<unknown, unknown>>()
|
|
324
|
+
const queue = new ListenerQueue(id, bounds, owner.logging, (change, done) => {
|
|
325
|
+
try {
|
|
326
|
+
const fiber = Effect.runForkWith(services)(
|
|
327
|
+
Effect.suspend(() => listener(change) as Effect.Effect<unknown, unknown>),
|
|
328
|
+
)
|
|
329
|
+
running.add(fiber)
|
|
330
|
+
fiber.addObserver((exit) => {
|
|
331
|
+
running.delete(fiber)
|
|
332
|
+
if (Exit.isFailure(exit) && !Cause.hasInterruptsOnly(exit.cause))
|
|
333
|
+
reportFailure(owner, { cause: exit.cause })
|
|
334
|
+
done()
|
|
335
|
+
})
|
|
336
|
+
} catch (error) {
|
|
337
|
+
reportFailure(owner, { error })
|
|
338
|
+
done()
|
|
339
|
+
}
|
|
340
|
+
})
|
|
341
|
+
let open = true
|
|
342
|
+
const stop = (shutdown = false) => {
|
|
343
|
+
if (!open) return
|
|
344
|
+
open = false
|
|
345
|
+
queue.close(shutdown)
|
|
346
|
+
for (const fiber of running) fiber.interruptUnsafe()
|
|
347
|
+
running.clear()
|
|
348
|
+
}
|
|
349
|
+
const observer = hub.add((since) => ({
|
|
350
|
+
since,
|
|
351
|
+
deliver: (change) => queue.deliver(change),
|
|
352
|
+
// The hub closes observers only at client shutdown
|
|
353
|
+
close: () => stop(true),
|
|
354
|
+
}))
|
|
355
|
+
return () => {
|
|
356
|
+
stop()
|
|
357
|
+
if (observer) hub.remove(observer)
|
|
358
|
+
}
|
|
359
|
+
}),
|
|
360
|
+
(close) => Effect.sync(close),
|
|
361
|
+
)
|
|
362
|
+
return Object.freeze({ id, close: () => Effect.sync(close) })
|
|
363
|
+
})
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optional message cache: Retained message observations, in-flight request guards and connection-gap invalidation.
|
|
3
|
+
* Invariant: Fluxer is the source of truth. Intake updates stored data from REST responses and gateway events before subscribers
|
|
4
|
+
* see them, retained data and conflict metadata stay bounded, and pre-gap observations are cleared even after session resumption.
|
|
5
|
+
* A gap on a guild with a known shard invalidates only that shard's data, private-conversation data belongs to shard zero, and
|
|
6
|
+
* unknown ownership stays conservative, including channel-only in-flight reads, without an unbounded channel-to-guild index.
|
|
7
|
+
* A deleted thread parent removes the messages of every channel in its guild that the channel cache cannot place, because
|
|
8
|
+
* Fluxer deletes the parent's threads without thread deletion events and messages do not record their thread's parent.
|
|
9
|
+
* Pre-gap requests neither repopulate invalid snapshots nor evict healthy post-gap observations on late completion. A callback
|
|
10
|
+
* that throws or returns an invalid value is reported with kind cache and the message IDs, and neither retention nor reporting
|
|
11
|
+
* failure changes a successful REST result or event delivery. Every applied store, removal and whole-cache clear is recorded
|
|
12
|
+
* to the client's change hub after it is applied, a replacement counting as one store. Implements [SDK contracts: Delivery, requests and caches](/docs/SDK-CONTRACTS.md#delivery-requests-and-caches)
|
|
13
|
+
*/
|
|
14
|
+
import { isDeepStrictEqual } from "node:util"
|
|
15
|
+
import type { CacheDiagnostic } from "#sdk/client"
|
|
16
|
+
import type { Message, MessageCore, MessageReference } from "#sdk/messages"
|
|
17
|
+
import type { CacheConfiguration } from "./configuration.js"
|
|
18
|
+
import { retentionAge } from "./retention-age.js"
|
|
19
|
+
import { ExpiryQueue, ExpiryTimer } from "./expiry-queue.js"
|
|
20
|
+
import type { LogicalScheduler } from "./logical-scheduler.js"
|
|
21
|
+
import type { CacheChangeHub } from "./cache-changes.js"
|
|
22
|
+
|
|
23
|
+
type Entry<M extends MessageCore> = { message: M; bytes: number; expires: number | null }
|
|
24
|
+
export type CacheRequest = {
|
|
25
|
+
readonly channel: string
|
|
26
|
+
readonly id: string | undefined
|
|
27
|
+
readonly mutation: boolean
|
|
28
|
+
readonly generation: number
|
|
29
|
+
invalid: boolean
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Whether an overlapping response describes the same message state as the retained snapshot.
|
|
34
|
+
* Fluxer omits guild_id from message HTTP responses while gateway events include it, so a guild ID present on only
|
|
35
|
+
* one side is unknown context rather than a conflicting change
|
|
36
|
+
*/
|
|
37
|
+
function sameObservation<M extends MessageCore>(retained: M, incoming: M) {
|
|
38
|
+
if (isDeepStrictEqual(retained, incoming)) return true
|
|
39
|
+
if ((retained.guildId === undefined) === (incoming.guildId === undefined)) return false
|
|
40
|
+
const { guildId: _retainedGuild, ...retainedState } = retained
|
|
41
|
+
const { guildId: _incomingGuild, ...incomingState } = incoming
|
|
42
|
+
return isDeepStrictEqual(retainedState, incomingState)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** A message's cache change key: Its channel and message IDs */
|
|
46
|
+
const changeKey = (message: MessageReference) => `${message.channelId}:${message.id}`
|
|
47
|
+
|
|
48
|
+
/** Running lookup and eviction totals of one cache category, copied into its CacheDiagnostic */
|
|
49
|
+
export type CacheStats = { hits: number; misses: number; evictions: { capacity: number; expiry: number } }
|
|
50
|
+
export const cacheStats = (): CacheStats => ({ hits: 0, misses: 0, evictions: { capacity: 0, expiry: 0 } })
|
|
51
|
+
/** A diagnostic copy of the totals, which keep counting after it is taken */
|
|
52
|
+
export const readStats = (stats: CacheStats): CacheStats => ({ ...stats, evictions: { ...stats.evictions } })
|
|
53
|
+
|
|
54
|
+
/** One client's retained observations and bounded in-flight guards, never a server-state replica */
|
|
55
|
+
export class MessageCache<M extends MessageCore = Message> {
|
|
56
|
+
#entries = new Map<string, Entry<M>>()
|
|
57
|
+
#requests = new Set<CacheRequest>()
|
|
58
|
+
#bytes = 0
|
|
59
|
+
#generation = 0
|
|
60
|
+
#expiry = new ExpiryQueue<Entry<M> & { expires: number }>((entry) => this.#entries.get(entry.message.id) === entry)
|
|
61
|
+
#timer: ExpiryTimer
|
|
62
|
+
#closed = false
|
|
63
|
+
readonly #stats = cacheStats()
|
|
64
|
+
readonly #limits: { readonly maxEntries: number; readonly maxBytes: number } | undefined
|
|
65
|
+
|
|
66
|
+
constructor(
|
|
67
|
+
private settings: CacheConfiguration<M> | undefined,
|
|
68
|
+
private report: (error: unknown, message: MessageCore) => void,
|
|
69
|
+
private readonly now: () => number,
|
|
70
|
+
logical?: LogicalScheduler,
|
|
71
|
+
readonly changes?: CacheChangeHub,
|
|
72
|
+
) {
|
|
73
|
+
this.#timer = new ExpiryTimer(
|
|
74
|
+
"message cache",
|
|
75
|
+
now,
|
|
76
|
+
() => {
|
|
77
|
+
this.#purge()
|
|
78
|
+
this.#schedule()
|
|
79
|
+
},
|
|
80
|
+
logical,
|
|
81
|
+
)
|
|
82
|
+
this.#limits = settings && Object.freeze({ maxEntries: settings.maxEntries, maxBytes: settings.maxBytes })
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
get generation() {
|
|
86
|
+
return this.#generation
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
diagnostics(): CacheDiagnostic {
|
|
90
|
+
this.#purge()
|
|
91
|
+
this.#schedule()
|
|
92
|
+
return {
|
|
93
|
+
configured: this.#limits !== undefined,
|
|
94
|
+
retainedEntries: this.#entries.size,
|
|
95
|
+
accountedBytes: this.#bytes,
|
|
96
|
+
maxEntries: this.#limits?.maxEntries ?? null,
|
|
97
|
+
maxBytes: this.#limits?.maxBytes ?? null,
|
|
98
|
+
...readStats(this.#stats),
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
entries(limit: number): readonly M[] {
|
|
103
|
+
this.#purge()
|
|
104
|
+
this.#schedule()
|
|
105
|
+
const entries: M[] = []
|
|
106
|
+
for (const entry of this.#entries.values()) {
|
|
107
|
+
entries.push(entry.message)
|
|
108
|
+
if (entries.length === limit) break
|
|
109
|
+
}
|
|
110
|
+
return Object.freeze(entries)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/** Release only this client's retained snapshots and block reads that began before this point from refilling them */
|
|
114
|
+
clear() {
|
|
115
|
+
if (this.#closed) return
|
|
116
|
+
this.gap()
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
get(target: MessageReference): M | undefined {
|
|
120
|
+
const entry = this.#peek(target)
|
|
121
|
+
if (!entry) {
|
|
122
|
+
this.#stats.misses++
|
|
123
|
+
return undefined
|
|
124
|
+
}
|
|
125
|
+
this.#stats.hits++
|
|
126
|
+
this.#entries.delete(target.id)
|
|
127
|
+
this.#entries.set(target.id, entry)
|
|
128
|
+
return entry.message
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
#peek(target: MessageReference) {
|
|
132
|
+
const entry = this.#entries.get(target.id)
|
|
133
|
+
if (!entry || entry.message.channelId !== target.channelId) return undefined
|
|
134
|
+
if (entry.expires !== null && entry.expires <= this.now()) {
|
|
135
|
+
this.#remove(target)
|
|
136
|
+
this.#stats.evictions.expiry++
|
|
137
|
+
return undefined
|
|
138
|
+
}
|
|
139
|
+
return entry
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** Remove one retained message, reporting the deletion unless the caller replaces it. Returns whether one was removed */
|
|
143
|
+
#remove(target: MessageReference, notify = true): boolean {
|
|
144
|
+
const entry = this.#entries.get(target.id)
|
|
145
|
+
if (entry?.message.channelId !== target.channelId) return false
|
|
146
|
+
this.#entries.delete(target.id)
|
|
147
|
+
this.#bytes -= entry.bytes
|
|
148
|
+
if (notify && this.changes?.active) this.changes.record("messages", "delete", changeKey(entry.message))
|
|
149
|
+
return true
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
#invalidate(target: MessageReference, except?: CacheRequest) {
|
|
153
|
+
for (const request of this.#requests)
|
|
154
|
+
if (
|
|
155
|
+
request !== except &&
|
|
156
|
+
request.channel === target.channelId &&
|
|
157
|
+
(request.id === undefined || request.id === target.id)
|
|
158
|
+
)
|
|
159
|
+
request.invalid = true
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
begin(channel: string, id: string | undefined, mutation: boolean, generation: number): CacheRequest {
|
|
163
|
+
const request = { channel, id, mutation, generation, invalid: generation !== this.#generation }
|
|
164
|
+
for (const other of this.#requests) {
|
|
165
|
+
if (other.channel !== channel || (id !== undefined && other.id !== undefined && id !== other.id)) continue
|
|
166
|
+
if (mutation) other.invalid = true
|
|
167
|
+
if (other.mutation) request.invalid = true
|
|
168
|
+
}
|
|
169
|
+
this.#requests.add(request)
|
|
170
|
+
return request
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
end(request: CacheRequest) {
|
|
174
|
+
this.#requests.delete(request)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
complete(request: CacheRequest, messages: readonly M[]) {
|
|
178
|
+
if (this.#closed || request.generation !== this.#generation) return
|
|
179
|
+
// Admit a history page oldest first so its newest members survive tight capacity limits
|
|
180
|
+
for (let index = messages.length - 1; index >= 0; index--) {
|
|
181
|
+
const message = messages[index]!
|
|
182
|
+
if (request.invalid) {
|
|
183
|
+
const entry = this.#peek(message)
|
|
184
|
+
if (entry && !sameObservation(entry.message, message)) {
|
|
185
|
+
this.#remove(message)
|
|
186
|
+
this.#invalidate(message, request)
|
|
187
|
+
}
|
|
188
|
+
} else this.observe(message, request)
|
|
189
|
+
}
|
|
190
|
+
this.#schedule()
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
observe(message: M, request?: CacheRequest) {
|
|
194
|
+
if (this.#closed || !this.settings) return
|
|
195
|
+
this.#invalidate(message, request)
|
|
196
|
+
const resolved = retentionAge(this.settings.maxAgeMs ?? null, message, "message cache", "message")
|
|
197
|
+
if ("error" in resolved) {
|
|
198
|
+
this.#remove(message)
|
|
199
|
+
this.report(resolved.error, message)
|
|
200
|
+
this.#schedule()
|
|
201
|
+
return
|
|
202
|
+
}
|
|
203
|
+
if (this.#closed || !this.settings) return
|
|
204
|
+
const age = resolved.age
|
|
205
|
+
const bytes = age === 0 ? 0 : Buffer.byteLength(JSON.stringify(message))
|
|
206
|
+
// A replacement reports one set, while an older copy that the new one cannot replace reports a delete
|
|
207
|
+
const replaced = this.#remove(message, false)
|
|
208
|
+
if (age !== 0 && bytes <= this.settings.maxBytes) {
|
|
209
|
+
this.#purge()
|
|
210
|
+
while (this.#entries.size >= this.settings.maxEntries || this.#bytes > this.settings.maxBytes - bytes) {
|
|
211
|
+
const oldest = this.#entries.values().next().value!
|
|
212
|
+
this.#remove(oldest.message)
|
|
213
|
+
this.#stats.evictions.capacity++
|
|
214
|
+
}
|
|
215
|
+
const entry: Entry<M> = { message, bytes, expires: age === null ? null : this.now() + age }
|
|
216
|
+
this.#entries.set(message.id, entry)
|
|
217
|
+
this.#bytes += bytes
|
|
218
|
+
if (entry.expires !== null) this.#expiry.push(entry as Entry<M> & { expires: number })
|
|
219
|
+
if (this.changes?.active) this.changes.record("messages", "set", changeKey(message))
|
|
220
|
+
} else if (replaced && this.changes?.active) this.changes.record("messages", "delete", changeKey(message))
|
|
221
|
+
this.#schedule()
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
delete(target: MessageReference, except?: CacheRequest) {
|
|
225
|
+
if (this.#closed) return
|
|
226
|
+
this.#invalidate(target, except)
|
|
227
|
+
this.#remove(target)
|
|
228
|
+
this.#schedule()
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/** Remove one message by ID when its channel is unknown, and block reads already in flight from restoring it */
|
|
232
|
+
deleteId(id: string) {
|
|
233
|
+
if (this.#closed) return
|
|
234
|
+
this.#generation++
|
|
235
|
+
for (const request of this.#requests) if (request.id === undefined || request.id === id) request.invalid = true
|
|
236
|
+
const entry = this.#entries.get(id)
|
|
237
|
+
if (entry) this.#remove(entry.message)
|
|
238
|
+
this.#schedule()
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
deleteMany(channelId: string, ids: readonly string[]) {
|
|
242
|
+
if (this.#closed) return
|
|
243
|
+
// Also block queued reads that have not registered their request guard yet
|
|
244
|
+
this.#generation++
|
|
245
|
+
for (const id of ids) this.delete({ channelId, id })
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
deleteAuthor(userId: string) {
|
|
249
|
+
if (this.#closed) return
|
|
250
|
+
this.#generation++
|
|
251
|
+
for (const entry of this.#entries.values()) if (entry.message.author.id === userId) this.delete(entry.message)
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
deleteChannel(channelId: string) {
|
|
255
|
+
if (this.#closed) return
|
|
256
|
+
// Queued REST calls have captured this generation but may not have registered a per-request guard yet
|
|
257
|
+
// Preserve other channel snapshots while conservatively blocking admission of pre-deletion responses
|
|
258
|
+
this.#generation++
|
|
259
|
+
for (const request of this.#requests) if (request.channel === channelId) request.invalid = true
|
|
260
|
+
for (const entry of this.#entries.values())
|
|
261
|
+
if (entry.message.channelId === channelId) this.#remove(entry.message)
|
|
262
|
+
this.#schedule()
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Remove the messages a deleted thread parent can have taken with its threads: Those in this guild, or without guild
|
|
267
|
+
* context, whose channel held does not place. Reads of such channels already in flight cannot restore them
|
|
268
|
+
*/
|
|
269
|
+
deleteUnplaced(guildId: string, held: (channelId: string) => boolean) {
|
|
270
|
+
if (this.#closed) return
|
|
271
|
+
// Queued REST calls have captured this generation but may not have registered a per-request guard yet
|
|
272
|
+
this.#generation++
|
|
273
|
+
for (const request of this.#requests) if (!held(request.channel)) request.invalid = true
|
|
274
|
+
for (const entry of this.#entries.values()) {
|
|
275
|
+
const message = entry.message
|
|
276
|
+
if ((message.guildId === undefined || message.guildId === guildId) && !held(message.channelId))
|
|
277
|
+
this.#remove(message)
|
|
278
|
+
}
|
|
279
|
+
this.#schedule()
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
gap(affects?: (guildId: string | null | undefined) => boolean) {
|
|
283
|
+
// Channel-only requests capture this generation before admission and retain it across retries
|
|
284
|
+
if (!affects || affects(undefined)) {
|
|
285
|
+
this.#generation++
|
|
286
|
+
for (const request of this.#requests) request.invalid = true
|
|
287
|
+
}
|
|
288
|
+
if (!affects) {
|
|
289
|
+
const held = this.#entries.size > 0
|
|
290
|
+
this.#entries.clear()
|
|
291
|
+
this.#bytes = 0
|
|
292
|
+
this.#expiry.clear()
|
|
293
|
+
if (held && this.changes?.active) this.changes.record("messages", "clear", null)
|
|
294
|
+
} else {
|
|
295
|
+
for (const entry of this.#entries.values()) if (affects(entry.message.guildId)) this.#remove(entry.message)
|
|
296
|
+
}
|
|
297
|
+
this.#schedule()
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
#purge() {
|
|
301
|
+
this.#expiry.purge(this.now(), (entry) => {
|
|
302
|
+
if (this.#remove(entry.message)) this.#stats.evictions.expiry++
|
|
303
|
+
})
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
#schedule() {
|
|
307
|
+
if (this.#closed) {
|
|
308
|
+
this.#timer.cancel()
|
|
309
|
+
this.#expiry.clear()
|
|
310
|
+
return
|
|
311
|
+
}
|
|
312
|
+
this.#expiry.compact(this.#entries.size)
|
|
313
|
+
this.#timer.set(this.#expiry.next())
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
close() {
|
|
317
|
+
this.#closed = true
|
|
318
|
+
this.gap()
|
|
319
|
+
this.#requests.clear()
|
|
320
|
+
this.settings = undefined
|
|
321
|
+
this.report = () => {}
|
|
322
|
+
}
|
|
323
|
+
}
|