@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,718 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thread operations: Request validation and encoding for client.threads, with thread data decoded by
|
|
3
|
+
* [channel decoding](/projects/sdk/src/internal/channel-decode.ts).
|
|
4
|
+
* Invariant: Only a request whose result is one thread or the active thread list carries a channel cache hint, so the
|
|
5
|
+
* channel cache never stores a page or a forum post as a channel. A thread member's community membership is decoded
|
|
6
|
+
* with the thread's own community, taken from the channel cache or from a thread read, never from caller input.
|
|
7
|
+
* Implements [SDK contracts: Delivery, requests and caches](/docs/SDK-CONTRACTS.md#delivery-requests-and-caches)
|
|
8
|
+
*/
|
|
9
|
+
import * as Effect from "effect/Effect"
|
|
10
|
+
import {
|
|
11
|
+
ChannelFlags,
|
|
12
|
+
ChannelOperationError,
|
|
13
|
+
ChannelType,
|
|
14
|
+
type ChannelOperationFailure,
|
|
15
|
+
type GuildThreadChannel,
|
|
16
|
+
type ThreadMember,
|
|
17
|
+
} from "#sdk/channels"
|
|
18
|
+
import { InputValidationFailure, inputValidationFailure, unsupportedKeyFailure } from "#sdk/input-validation"
|
|
19
|
+
import { MessageError } from "#sdk/message-errors"
|
|
20
|
+
import type { MessageCore, MessageReference } from "#sdk/messages"
|
|
21
|
+
import type {
|
|
22
|
+
ArchivedThreadPage,
|
|
23
|
+
ArchivedThreadQuery,
|
|
24
|
+
ForumPost,
|
|
25
|
+
ForumPostCreate,
|
|
26
|
+
ThreadCreate,
|
|
27
|
+
ThreadEdit,
|
|
28
|
+
ThreadFromMessageCreate,
|
|
29
|
+
ThreadSearchPage,
|
|
30
|
+
ThreadSearchQuery,
|
|
31
|
+
} from "#sdk/threads"
|
|
32
|
+
import type { ClientOwner } from "./client.js"
|
|
33
|
+
import { channelFetch, type ChannelRequest } from "./channels.js"
|
|
34
|
+
import { decodeThread, decodeThreadList, decodeThreadMember } from "./channel-decode.js"
|
|
35
|
+
import { count, fieldsOnce, identifier, integerInRange, record, snapshotArray } from "./decode/primitives.js"
|
|
36
|
+
import { rejectCheck } from "./decode/trace.js"
|
|
37
|
+
import { timestamp } from "./decode/timestamp.js"
|
|
38
|
+
import { suspendInput } from "./defects.js"
|
|
39
|
+
import { normalizedText, rawText } from "./field-text.js"
|
|
40
|
+
import { encodeMessage, snapshotReference } from "./message.js"
|
|
41
|
+
import type { MessageDecoder } from "./message-fields.js"
|
|
42
|
+
|
|
43
|
+
type ThreadValidationResult<A> = ChannelRequest<A> | InputValidationFailure
|
|
44
|
+
|
|
45
|
+
/** Inactivity periods Fluxer accepts, in minutes */
|
|
46
|
+
const autoArchivePeriods: ReadonlySet<unknown> = new Set([60, 1440, 4320, 10_080])
|
|
47
|
+
const maxAppliedTags = 5
|
|
48
|
+
const maxSearchTags = 20
|
|
49
|
+
|
|
50
|
+
const channelIdFailure = () => inputValidationFailure("channelId", "format", "Channel IDs must be decimal strings")
|
|
51
|
+
const threadIdFailure = () => inputValidationFailure("threadId", "format", "Thread IDs must be decimal strings")
|
|
52
|
+
|
|
53
|
+
/** Validate the name, archive period and slowmode that thread creation and editing share, reading each field once */
|
|
54
|
+
function threadFields(
|
|
55
|
+
field: (key: string) => unknown,
|
|
56
|
+
nameRequired: boolean,
|
|
57
|
+
): Record<string, unknown> | InputValidationFailure {
|
|
58
|
+
const name = field("name")
|
|
59
|
+
if (nameRequired && name === undefined) return inputValidationFailure("name", "required", "Thread name is required")
|
|
60
|
+
if (name !== undefined && !normalizedText(name, 1, 100))
|
|
61
|
+
return inputValidationFailure(
|
|
62
|
+
"name",
|
|
63
|
+
"length",
|
|
64
|
+
"Thread name must contain 1 through 100 UTF-16 code units after Fluxer's normalization",
|
|
65
|
+
)
|
|
66
|
+
const autoArchiveMinutes = field("autoArchiveMinutes")
|
|
67
|
+
if (autoArchiveMinutes !== undefined && !autoArchivePeriods.has(autoArchiveMinutes))
|
|
68
|
+
return inputValidationFailure(
|
|
69
|
+
"autoArchiveMinutes",
|
|
70
|
+
"allowedValue",
|
|
71
|
+
"Thread autoArchiveMinutes must be 60, 1,440, 4,320 or 10,080, as in ThreadAutoArchiveMinutes",
|
|
72
|
+
)
|
|
73
|
+
const rateLimitPerUser = field("rateLimitPerUser")
|
|
74
|
+
if (rateLimitPerUser !== undefined && !integerInRange(rateLimitPerUser, 0, 21_600))
|
|
75
|
+
return inputValidationFailure(
|
|
76
|
+
"rateLimitPerUser",
|
|
77
|
+
"range",
|
|
78
|
+
"Thread rateLimitPerUser must be an integer from 0 through 21,600 seconds",
|
|
79
|
+
)
|
|
80
|
+
return {
|
|
81
|
+
...(name === undefined ? {} : { name }),
|
|
82
|
+
...(autoArchiveMinutes === undefined ? {} : { auto_archive_duration: autoArchiveMinutes }),
|
|
83
|
+
...(rateLimitPerUser === undefined ? {} : { rate_limit_per_user: rateLimitPerUser }),
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Copy a list of decimal forum tag IDs once by index */
|
|
88
|
+
function tagIds(value: unknown, path: string, maximum: number): readonly string[] | InputValidationFailure {
|
|
89
|
+
if (!Array.isArray(value)) return inputValidationFailure(path, "type", "Forum tag IDs must be an array")
|
|
90
|
+
const items = snapshotArray(value, maximum)
|
|
91
|
+
if (items === undefined)
|
|
92
|
+
return inputValidationFailure(path, "length", `At most ${maximum} forum tag IDs are accepted`)
|
|
93
|
+
if (!items.every(identifier))
|
|
94
|
+
return inputValidationFailure(`${path}[]`, "format", "Forum tag IDs must be decimal strings")
|
|
95
|
+
return items as readonly string[]
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function booleanField(field: (key: string) => unknown, key: string): boolean | undefined | InputValidationFailure {
|
|
99
|
+
const value = field(key)
|
|
100
|
+
if (value !== undefined && typeof value !== "boolean")
|
|
101
|
+
return inputValidationFailure(key, "type", `Thread ${key} must be a boolean`)
|
|
102
|
+
return value
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export function threadCreate(channelId: string, input: ThreadCreate): ThreadValidationResult<GuildThreadChannel> {
|
|
106
|
+
if (!identifier(channelId)) return channelIdFailure()
|
|
107
|
+
if (!record(input)) return inputValidationFailure("input", "type", "Thread input must be an object")
|
|
108
|
+
const unsupported = unsupportedKeyFailure(
|
|
109
|
+
input,
|
|
110
|
+
["name", "type", "autoArchiveMinutes", "rateLimitPerUser", "invitable"],
|
|
111
|
+
"input",
|
|
112
|
+
"the thread create input",
|
|
113
|
+
)
|
|
114
|
+
if (unsupported) return unsupported
|
|
115
|
+
const field = fieldsOnce(input)
|
|
116
|
+
const fields = threadFields(field, true)
|
|
117
|
+
if (fields instanceof InputValidationFailure) return fields
|
|
118
|
+
const type = field("type") ?? ChannelType.PublicThread
|
|
119
|
+
if (
|
|
120
|
+
type !== ChannelType.AnnouncementThread &&
|
|
121
|
+
type !== ChannelType.PublicThread &&
|
|
122
|
+
type !== ChannelType.PrivateThread
|
|
123
|
+
)
|
|
124
|
+
return inputValidationFailure(
|
|
125
|
+
"type",
|
|
126
|
+
"allowedValue",
|
|
127
|
+
"Thread type must be 10 (AnnouncementThread), 11 (PublicThread) or 12 (PrivateThread)",
|
|
128
|
+
)
|
|
129
|
+
const invitable = booleanField(field, "invitable")
|
|
130
|
+
if (invitable instanceof InputValidationFailure) return invitable
|
|
131
|
+
if (invitable !== undefined && type !== ChannelType.PrivateThread)
|
|
132
|
+
return inputValidationFailure(
|
|
133
|
+
"invitable",
|
|
134
|
+
"relationship",
|
|
135
|
+
"Thread invitable is accepted only with type 12 (PrivateThread)",
|
|
136
|
+
)
|
|
137
|
+
return {
|
|
138
|
+
majorId: channelId,
|
|
139
|
+
bucket: "channel:thread:create",
|
|
140
|
+
audited: true,
|
|
141
|
+
path: `/channels/${channelId}/threads`,
|
|
142
|
+
method: "POST",
|
|
143
|
+
status: 201,
|
|
144
|
+
json: JSON.stringify({ ...fields, type, ...(invitable === undefined ? {} : { invitable }) }),
|
|
145
|
+
// The new thread's ID is unknown until Fluxer answers
|
|
146
|
+
cache: { mutation: true, thread: true },
|
|
147
|
+
decode: (value) => {
|
|
148
|
+
const thread = decodeThread(value)
|
|
149
|
+
return thread?.parentId === channelId ? thread : undefined
|
|
150
|
+
},
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export function threadCreateFromMessage(
|
|
155
|
+
target: MessageReference,
|
|
156
|
+
input: ThreadFromMessageCreate,
|
|
157
|
+
): ThreadValidationResult<GuildThreadChannel> {
|
|
158
|
+
const message = snapshotReference(target)
|
|
159
|
+
if (message === undefined)
|
|
160
|
+
return inputValidationFailure("target", "format", "Message target requires decimal id and channelId strings")
|
|
161
|
+
if (!record(input)) return inputValidationFailure("input", "type", "Thread input must be an object")
|
|
162
|
+
const unsupported = unsupportedKeyFailure(
|
|
163
|
+
input,
|
|
164
|
+
["name", "autoArchiveMinutes", "rateLimitPerUser"],
|
|
165
|
+
"input",
|
|
166
|
+
"the thread create input",
|
|
167
|
+
)
|
|
168
|
+
if (unsupported) return unsupported
|
|
169
|
+
const fields = threadFields(fieldsOnce(input), true)
|
|
170
|
+
if (fields instanceof InputValidationFailure) return fields
|
|
171
|
+
return {
|
|
172
|
+
majorId: message.channelId,
|
|
173
|
+
bucket: "channel:thread:create",
|
|
174
|
+
audited: true,
|
|
175
|
+
path: `/channels/${message.channelId}/messages/${message.id}/threads`,
|
|
176
|
+
method: "POST",
|
|
177
|
+
status: 201,
|
|
178
|
+
json: JSON.stringify(fields),
|
|
179
|
+
// A thread started from a message takes the message's ID
|
|
180
|
+
cache: { channelId: message.id, mutation: true, thread: true },
|
|
181
|
+
decode: (value) => {
|
|
182
|
+
const thread = decodeThread(value)
|
|
183
|
+
return thread?.id === message.id && thread.parentId === message.channelId ? thread : undefined
|
|
184
|
+
},
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/** Message input keys a post's first message accepts. A post cannot reply, and Fluxer drops a nonce and tts */
|
|
189
|
+
const postMessageKeys = ["content", "embeds", "attachments", "stickerIds", "allowedMentions", "flags"]
|
|
190
|
+
|
|
191
|
+
export function threadPost<M extends MessageCore>(
|
|
192
|
+
channelId: string,
|
|
193
|
+
input: ForumPostCreate,
|
|
194
|
+
decodeMessage: MessageDecoder<M>,
|
|
195
|
+
): ThreadValidationResult<ForumPost<M>> {
|
|
196
|
+
if (!identifier(channelId)) return channelIdFailure()
|
|
197
|
+
if (!record(input)) return inputValidationFailure("input", "type", "Forum post input must be an object")
|
|
198
|
+
const unsupported = unsupportedKeyFailure(
|
|
199
|
+
input,
|
|
200
|
+
["name", "message", "appliedTagIds", "autoArchiveMinutes", "rateLimitPerUser"],
|
|
201
|
+
"input",
|
|
202
|
+
"the forum post input",
|
|
203
|
+
)
|
|
204
|
+
if (unsupported) return unsupported
|
|
205
|
+
const field = fieldsOnce(input)
|
|
206
|
+
const fields = threadFields(field, true)
|
|
207
|
+
if (fields instanceof InputValidationFailure) return fields
|
|
208
|
+
const appliedTagsInput = field("appliedTagIds")
|
|
209
|
+
const appliedTags =
|
|
210
|
+
appliedTagsInput === undefined ? undefined : tagIds(appliedTagsInput, "appliedTagIds", maxAppliedTags)
|
|
211
|
+
if (appliedTags instanceof InputValidationFailure) return appliedTags
|
|
212
|
+
const message = field("message")
|
|
213
|
+
if (message === undefined)
|
|
214
|
+
return inputValidationFailure("message", "required", "A forum post needs its first message")
|
|
215
|
+
if (!record(message)) return inputValidationFailure("message", "type", "Forum post message must be an object")
|
|
216
|
+
const unsupportedMessage = unsupportedKeyFailure(message, postMessageKeys, "message", "the forum post message")
|
|
217
|
+
if (unsupportedMessage) return unsupportedMessage
|
|
218
|
+
// Reuse the message encoding, with its attachment files, then send the encoded message inside the post
|
|
219
|
+
const encoded = encodeMessage(channelId, message, "")
|
|
220
|
+
if (encoded instanceof MessageError) {
|
|
221
|
+
const detail = encoded.inputValidation!
|
|
222
|
+
return inputValidationFailure(
|
|
223
|
+
detail.path === "input" ? "message" : `message.${detail.path}`,
|
|
224
|
+
detail.constraint,
|
|
225
|
+
detail.explanation,
|
|
226
|
+
)
|
|
227
|
+
}
|
|
228
|
+
const { nonce: _nonce, ...payload } = JSON.parse(encoded.json) as Record<string, unknown>
|
|
229
|
+
return {
|
|
230
|
+
majorId: channelId,
|
|
231
|
+
bucket: "channel:thread:create",
|
|
232
|
+
audited: true,
|
|
233
|
+
path: `/channels/${channelId}/threads`,
|
|
234
|
+
method: "POST",
|
|
235
|
+
status: 201,
|
|
236
|
+
body: {
|
|
237
|
+
json: JSON.stringify({
|
|
238
|
+
...fields,
|
|
239
|
+
...(appliedTags === undefined ? {} : { applied_tags: appliedTags }),
|
|
240
|
+
message: payload,
|
|
241
|
+
}),
|
|
242
|
+
files: encoded.files,
|
|
243
|
+
},
|
|
244
|
+
// No channel cache hint, because the result is a thread with its message, which the cache would store as a channel
|
|
245
|
+
decode: (value) => {
|
|
246
|
+
if (!record(value)) return undefined
|
|
247
|
+
const thread = decodeThread(value)
|
|
248
|
+
if (thread?.type !== ChannelType.PublicThread || thread.parentId !== channelId) return undefined
|
|
249
|
+
const first = decodeMessage(value.message)
|
|
250
|
+
return first?.channelId === thread.id ? Object.freeze({ thread, message: first }) : undefined
|
|
251
|
+
},
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export function threadEdit(threadId: string, input: ThreadEdit): ThreadValidationResult<GuildThreadChannel> {
|
|
256
|
+
if (!identifier(threadId)) return threadIdFailure()
|
|
257
|
+
if (!record(input)) return inputValidationFailure("input", "type", "Thread edit input must be an object")
|
|
258
|
+
const unsupported = unsupportedKeyFailure(
|
|
259
|
+
input,
|
|
260
|
+
[
|
|
261
|
+
"name",
|
|
262
|
+
"archived",
|
|
263
|
+
"locked",
|
|
264
|
+
"autoArchiveMinutes",
|
|
265
|
+
"rateLimitPerUser",
|
|
266
|
+
"invitable",
|
|
267
|
+
"pinned",
|
|
268
|
+
"appliedTagIds",
|
|
269
|
+
],
|
|
270
|
+
"input",
|
|
271
|
+
"the thread edit input",
|
|
272
|
+
)
|
|
273
|
+
if (unsupported) return unsupported
|
|
274
|
+
const field = fieldsOnce(input)
|
|
275
|
+
const fields = threadFields(field, false)
|
|
276
|
+
if (fields instanceof InputValidationFailure) return fields
|
|
277
|
+
const flags: Record<string, boolean> = {}
|
|
278
|
+
for (const key of ["archived", "locked", "invitable", "pinned"]) {
|
|
279
|
+
const value = booleanField(field, key)
|
|
280
|
+
if (value instanceof InputValidationFailure) return value
|
|
281
|
+
if (value !== undefined) flags[key] = value
|
|
282
|
+
}
|
|
283
|
+
const appliedTagsInput = field("appliedTagIds")
|
|
284
|
+
const appliedTags =
|
|
285
|
+
appliedTagsInput === undefined ? undefined : tagIds(appliedTagsInput, "appliedTagIds", maxAppliedTags)
|
|
286
|
+
if (appliedTags instanceof InputValidationFailure) return appliedTags
|
|
287
|
+
const json = JSON.stringify({
|
|
288
|
+
...fields,
|
|
289
|
+
...(flags.archived === undefined ? {} : { archived: flags.archived }),
|
|
290
|
+
...(flags.locked === undefined ? {} : { locked: flags.locked }),
|
|
291
|
+
...(flags.invitable === undefined ? {} : { invitable: flags.invitable }),
|
|
292
|
+
// Pinned is the only flag a thread can set, so the whole field follows it
|
|
293
|
+
...(flags.pinned === undefined ? {} : { flags: flags.pinned ? ChannelFlags.Pinned : 0 }),
|
|
294
|
+
...(appliedTags === undefined ? {} : { applied_tags: appliedTags }),
|
|
295
|
+
})
|
|
296
|
+
if (json === "{}") return inputValidationFailure("input", "required", "Thread edit must contain a change")
|
|
297
|
+
return {
|
|
298
|
+
majorId: threadId,
|
|
299
|
+
bucket: "channel:update",
|
|
300
|
+
audited: true,
|
|
301
|
+
path: `/channels/${threadId}`,
|
|
302
|
+
method: "PATCH",
|
|
303
|
+
status: 200,
|
|
304
|
+
json,
|
|
305
|
+
cache: { channelId: threadId, mutation: true, thread: true },
|
|
306
|
+
decode: (value) => {
|
|
307
|
+
const thread = decodeThread(value)
|
|
308
|
+
return thread?.id === threadId ? thread : undefined
|
|
309
|
+
},
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
export function threadActive(guildId: string): ThreadValidationResult<readonly GuildThreadChannel[]> {
|
|
314
|
+
if (!identifier(guildId)) return inputValidationFailure("guildId", "format", "Guild IDs must be decimal strings")
|
|
315
|
+
return {
|
|
316
|
+
majorId: guildId,
|
|
317
|
+
bucket: "guild:threads:active",
|
|
318
|
+
path: `/guilds/${guildId}/threads/active`,
|
|
319
|
+
method: "GET",
|
|
320
|
+
status: 200,
|
|
321
|
+
cache: { guildId, thread: true },
|
|
322
|
+
decode: (value) => {
|
|
323
|
+
if (!record(value)) return undefined
|
|
324
|
+
const threads = decodeThreadList(value.threads, value.members)
|
|
325
|
+
return threads?.every((thread) => thread.guildId === guildId) ? threads : undefined
|
|
326
|
+
},
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
const archivedPaths = {
|
|
331
|
+
public: "threads/archived/public",
|
|
332
|
+
private: "threads/archived/private",
|
|
333
|
+
joinedPrivate: "users/@me/threads/archived/private",
|
|
334
|
+
} as const
|
|
335
|
+
|
|
336
|
+
export function threadArchived(
|
|
337
|
+
channelId: string,
|
|
338
|
+
query?: ArchivedThreadQuery,
|
|
339
|
+
): ThreadValidationResult<ArchivedThreadPage> {
|
|
340
|
+
if (!identifier(channelId)) return channelIdFailure()
|
|
341
|
+
const input = query === undefined ? {} : query
|
|
342
|
+
if (!record(input)) return inputValidationFailure("query", "type", "Archived thread query must be an object")
|
|
343
|
+
const unsupported = unsupportedKeyFailure(input, ["scope", "before", "limit"], "query", "the archived thread query")
|
|
344
|
+
if (unsupported) return unsupported
|
|
345
|
+
const field = fieldsOnce(input)
|
|
346
|
+
const scope = field("scope") ?? "public"
|
|
347
|
+
if (scope !== "public" && scope !== "private" && scope !== "joinedPrivate")
|
|
348
|
+
return inputValidationFailure(
|
|
349
|
+
"query.scope",
|
|
350
|
+
"allowedValue",
|
|
351
|
+
'Archived thread scope must be "public", "private" or "joinedPrivate"',
|
|
352
|
+
)
|
|
353
|
+
const limit = field("limit") ?? 50
|
|
354
|
+
if (!integerInRange(limit, 2, 100))
|
|
355
|
+
return inputValidationFailure(
|
|
356
|
+
"query.limit",
|
|
357
|
+
"range",
|
|
358
|
+
"Archived thread limit must be an integer from 2 through 100",
|
|
359
|
+
)
|
|
360
|
+
const before = field("before")
|
|
361
|
+
if (before !== undefined && (scope === "joinedPrivate" ? !identifier(before) : !timestamp(before)))
|
|
362
|
+
return inputValidationFailure(
|
|
363
|
+
"query.before",
|
|
364
|
+
"format",
|
|
365
|
+
scope === "joinedPrivate"
|
|
366
|
+
? 'Archived thread cursor must be a decimal thread ID for scope "joinedPrivate"'
|
|
367
|
+
: "Archived thread cursor must be an ISO 8601 timestamp with a timezone",
|
|
368
|
+
)
|
|
369
|
+
const params = new URLSearchParams({ limit: String(limit) })
|
|
370
|
+
if (before !== undefined) params.set("before", before as string)
|
|
371
|
+
return {
|
|
372
|
+
majorId: channelId,
|
|
373
|
+
bucket: "channel:threads:archived:list",
|
|
374
|
+
path: `/channels/${channelId}/${archivedPaths[scope]}?${params}`,
|
|
375
|
+
method: "GET",
|
|
376
|
+
status: 200,
|
|
377
|
+
// A page is not a channel, so it carries no channel cache hint
|
|
378
|
+
decode: (value) => {
|
|
379
|
+
if (!record(value) || typeof value.has_more !== "boolean") return undefined
|
|
380
|
+
const threads = decodeThreadList(value.threads, value.members)
|
|
381
|
+
if (!threads || threads.length > limit || threads.some((thread) => thread.parentId !== channelId))
|
|
382
|
+
return undefined
|
|
383
|
+
return Object.freeze({ threads, hasMore: value.has_more })
|
|
384
|
+
},
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
const searchSortBy: ReadonlySet<unknown> = new Set(["last_message_time", "archive_time", "relevance", "creation_time"])
|
|
389
|
+
|
|
390
|
+
export function threadSearch<M extends MessageCore>(
|
|
391
|
+
channelId: string,
|
|
392
|
+
query: ThreadSearchQuery | undefined,
|
|
393
|
+
decodeMessage: MessageDecoder<M>,
|
|
394
|
+
): ThreadValidationResult<ThreadSearchPage<M>> {
|
|
395
|
+
if (!identifier(channelId)) return channelIdFailure()
|
|
396
|
+
const input = query === undefined ? {} : query
|
|
397
|
+
if (!record(input)) return inputValidationFailure("query", "type", "Thread search query must be an object")
|
|
398
|
+
const unsupported = unsupportedKeyFailure(
|
|
399
|
+
input,
|
|
400
|
+
["name", "tagIds", "tagSetting", "archived", "sortBy", "sortOrder", "limit", "offset", "maxId", "minId"],
|
|
401
|
+
"query",
|
|
402
|
+
"the thread search query",
|
|
403
|
+
)
|
|
404
|
+
if (unsupported) return unsupported
|
|
405
|
+
const field = fieldsOnce(input)
|
|
406
|
+
const params = new URLSearchParams()
|
|
407
|
+
const name = field("name")
|
|
408
|
+
if (name !== undefined && !rawText(name, 0, 100))
|
|
409
|
+
return inputValidationFailure(
|
|
410
|
+
"query.name",
|
|
411
|
+
"length",
|
|
412
|
+
"Thread search name must contain at most 100 UTF-16 code units",
|
|
413
|
+
)
|
|
414
|
+
if (name !== undefined) params.set("name", name)
|
|
415
|
+
const tagsInput = field("tagIds")
|
|
416
|
+
const tags = tagsInput === undefined ? undefined : tagIds(tagsInput, "query.tagIds", maxSearchTags)
|
|
417
|
+
if (tags instanceof InputValidationFailure) return tags
|
|
418
|
+
for (const tag of tags ?? []) params.append("tag", tag)
|
|
419
|
+
const tagSetting = field("tagSetting")
|
|
420
|
+
if (tagSetting !== undefined && tagSetting !== "match_some" && tagSetting !== "match_all")
|
|
421
|
+
return inputValidationFailure(
|
|
422
|
+
"query.tagSetting",
|
|
423
|
+
"allowedValue",
|
|
424
|
+
'Thread search tagSetting must be "match_some" or "match_all"',
|
|
425
|
+
)
|
|
426
|
+
if (tagSetting !== undefined) params.set("tag_setting", tagSetting)
|
|
427
|
+
const archived = field("archived")
|
|
428
|
+
if (archived !== undefined && typeof archived !== "boolean")
|
|
429
|
+
return inputValidationFailure("query.archived", "type", "Thread search archived must be a boolean")
|
|
430
|
+
if (archived !== undefined) params.set("archived", String(archived))
|
|
431
|
+
const sortBy = field("sortBy")
|
|
432
|
+
if (sortBy !== undefined && !searchSortBy.has(sortBy))
|
|
433
|
+
return inputValidationFailure(
|
|
434
|
+
"query.sortBy",
|
|
435
|
+
"allowedValue",
|
|
436
|
+
'Thread search sortBy must be "last_message_time", "archive_time", "relevance" or "creation_time"',
|
|
437
|
+
)
|
|
438
|
+
if (sortBy !== undefined) params.set("sort_by", sortBy as string)
|
|
439
|
+
const sortOrder = field("sortOrder")
|
|
440
|
+
if (sortOrder !== undefined && sortOrder !== "asc" && sortOrder !== "desc")
|
|
441
|
+
return inputValidationFailure(
|
|
442
|
+
"query.sortOrder",
|
|
443
|
+
"allowedValue",
|
|
444
|
+
'Thread search sortOrder must be "asc" or "desc"',
|
|
445
|
+
)
|
|
446
|
+
if (sortOrder !== undefined) params.set("sort_order", sortOrder)
|
|
447
|
+
const limit = field("limit") ?? 25
|
|
448
|
+
if (!integerInRange(limit, 1, 25))
|
|
449
|
+
return inputValidationFailure(
|
|
450
|
+
"query.limit",
|
|
451
|
+
"range",
|
|
452
|
+
"Thread search limit must be an integer from 1 through 25",
|
|
453
|
+
)
|
|
454
|
+
if (field("limit") !== undefined) params.set("limit", String(limit))
|
|
455
|
+
const offset = field("offset")
|
|
456
|
+
if (offset !== undefined && !integerInRange(offset, 0, 9975))
|
|
457
|
+
return inputValidationFailure(
|
|
458
|
+
"query.offset",
|
|
459
|
+
"range",
|
|
460
|
+
"Thread search offset must be an integer from 0 through 9,975",
|
|
461
|
+
)
|
|
462
|
+
if (offset !== undefined) params.set("offset", String(offset))
|
|
463
|
+
for (const [key, wire] of [
|
|
464
|
+
["maxId", "max_id"],
|
|
465
|
+
["minId", "min_id"],
|
|
466
|
+
] as const) {
|
|
467
|
+
const id = field(key)
|
|
468
|
+
if (id !== undefined && !identifier(id))
|
|
469
|
+
return inputValidationFailure(`query.${key}`, "format", "Thread search cursor IDs must be decimal strings")
|
|
470
|
+
if (id !== undefined) params.set(wire, id)
|
|
471
|
+
}
|
|
472
|
+
const search = params.toString()
|
|
473
|
+
return {
|
|
474
|
+
majorId: channelId,
|
|
475
|
+
bucket: "channel:threads:search",
|
|
476
|
+
path: `/channels/${channelId}/threads/search${search === "" ? "" : `?${search}`}`,
|
|
477
|
+
method: "GET",
|
|
478
|
+
status: 200,
|
|
479
|
+
// Fluxer answers 202 with SEARCH_INDEX_NOT_READY while it builds the community's search index, and the SDK does
|
|
480
|
+
// not retry it. Any other 202 answer is malformed
|
|
481
|
+
accepted: (value) =>
|
|
482
|
+
record(value) && value.code === "SEARCH_INDEX_NOT_READY"
|
|
483
|
+
? Object.freeze({ indexing: true as const })
|
|
484
|
+
: undefined,
|
|
485
|
+
decode: (value) => {
|
|
486
|
+
if (!record(value) || typeof value.has_more !== "boolean" || !count(value.total_results)) return undefined
|
|
487
|
+
const threads = decodeThreadList(value.threads, value.members)
|
|
488
|
+
if (!threads || threads.length > limit || threads.some((thread) => thread.parentId !== channelId))
|
|
489
|
+
return undefined
|
|
490
|
+
// Fluxer sends first messages only in forum and media channels, one per post whose message still exists
|
|
491
|
+
const listed = value.first_messages === undefined ? [] : value.first_messages
|
|
492
|
+
if (!Array.isArray(listed) || listed.length > threads.length) return undefined
|
|
493
|
+
const threadIds = new Set(threads.map((thread) => thread.id))
|
|
494
|
+
const firstMessages: M[] = []
|
|
495
|
+
for (const item of listed) {
|
|
496
|
+
const message = decodeMessage(item)
|
|
497
|
+
if (!message || !threadIds.has(message.channelId)) return undefined
|
|
498
|
+
firstMessages.push(message)
|
|
499
|
+
}
|
|
500
|
+
return Object.freeze({
|
|
501
|
+
indexing: false as const,
|
|
502
|
+
threads,
|
|
503
|
+
firstMessages: Object.freeze(firstMessages),
|
|
504
|
+
total: value.total_results,
|
|
505
|
+
hasMore: value.has_more,
|
|
506
|
+
})
|
|
507
|
+
},
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
/** Join or leave a thread as the bot, or add or remove another member */
|
|
512
|
+
export function threadMembership(
|
|
513
|
+
threadId: string,
|
|
514
|
+
userId: string | undefined,
|
|
515
|
+
method: "PUT" | "DELETE",
|
|
516
|
+
): ThreadValidationResult<void> {
|
|
517
|
+
if (!identifier(threadId)) return threadIdFailure()
|
|
518
|
+
if (userId !== undefined && !identifier(userId))
|
|
519
|
+
return inputValidationFailure("userId", "format", "User IDs must be decimal strings")
|
|
520
|
+
return {
|
|
521
|
+
majorId: threadId,
|
|
522
|
+
bucket: method === "PUT" ? "channel:thread:member:put" : "channel:thread:member:delete",
|
|
523
|
+
path: `/channels/${threadId}/thread-members/${userId ?? "@me"}`,
|
|
524
|
+
method,
|
|
525
|
+
status: 204,
|
|
526
|
+
// The cached thread's membership and memberCount change, and without a gateway no event replaces them
|
|
527
|
+
cache: { channelId: threadId, mutation: true, thread: true },
|
|
528
|
+
decode: () => undefined,
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Decode one thread member. With guildId the community membership is decoded with that community. Without it, a
|
|
534
|
+
* membership that was not requested is left out, and the guild ID is never read
|
|
535
|
+
*/
|
|
536
|
+
function threadMember(value: unknown, threadId: string, guildId: string | undefined): ThreadMember | undefined {
|
|
537
|
+
if (guildId !== undefined) return decodeThreadMember(value, guildId, threadId)
|
|
538
|
+
if (!record(value)) return undefined
|
|
539
|
+
const { member: _member, ...rest } = value
|
|
540
|
+
return decodeThreadMember(rest, "", threadId)
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
function memberQuery(query: unknown, keys: readonly string[]) {
|
|
544
|
+
const input = query === undefined ? {} : query
|
|
545
|
+
if (!record(input)) return inputValidationFailure("query", "type", "Thread member query must be an object")
|
|
546
|
+
const unsupported = unsupportedKeyFailure(input, keys, "query", "the thread member query")
|
|
547
|
+
if (unsupported) return unsupported
|
|
548
|
+
const field = fieldsOnce(input)
|
|
549
|
+
const withMember = field("withMember") ?? false
|
|
550
|
+
if (typeof withMember !== "boolean")
|
|
551
|
+
return inputValidationFailure("query.withMember", "type", "Thread member query withMember must be a boolean")
|
|
552
|
+
return { field, withMember }
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/** A validated thread member read. Its request needs the thread's community only when withMember is set */
|
|
556
|
+
interface MemberRead<A> {
|
|
557
|
+
readonly withMember: boolean
|
|
558
|
+
readonly request: (guildId: string | undefined) => ChannelRequest<A>
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
function threadMemberFetch(
|
|
562
|
+
threadId: string,
|
|
563
|
+
userId: string,
|
|
564
|
+
query: unknown,
|
|
565
|
+
): MemberRead<ThreadMember> | InputValidationFailure {
|
|
566
|
+
if (!identifier(threadId)) return threadIdFailure()
|
|
567
|
+
if (!identifier(userId)) return inputValidationFailure("userId", "format", "User IDs must be decimal strings")
|
|
568
|
+
const validated = memberQuery(query, ["withMember"])
|
|
569
|
+
if (validated instanceof InputValidationFailure) return validated
|
|
570
|
+
const { withMember } = validated
|
|
571
|
+
return {
|
|
572
|
+
withMember,
|
|
573
|
+
request: (guildId) => ({
|
|
574
|
+
majorId: threadId,
|
|
575
|
+
bucket: "channel:thread:member:get",
|
|
576
|
+
path: `/channels/${threadId}/thread-members/${userId}${withMember ? "?with_member=true" : ""}`,
|
|
577
|
+
method: "GET",
|
|
578
|
+
status: 200,
|
|
579
|
+
decode: (value) => {
|
|
580
|
+
const member = threadMember(value, threadId, guildId)
|
|
581
|
+
return member?.userId === userId ? member : undefined
|
|
582
|
+
},
|
|
583
|
+
}),
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
export function threadMemberPage(
|
|
588
|
+
threadId: string,
|
|
589
|
+
query: unknown,
|
|
590
|
+
): MemberRead<readonly ThreadMember[]> | InputValidationFailure {
|
|
591
|
+
if (!identifier(threadId)) return threadIdFailure()
|
|
592
|
+
const validated = memberQuery(query, ["after", "limit", "withMember"])
|
|
593
|
+
if (validated instanceof InputValidationFailure) return validated
|
|
594
|
+
const { field, withMember } = validated
|
|
595
|
+
const limit = field("limit") ?? 100
|
|
596
|
+
if (!integerInRange(limit, 1, 100))
|
|
597
|
+
return inputValidationFailure(
|
|
598
|
+
"query.limit",
|
|
599
|
+
"range",
|
|
600
|
+
"Thread member limit must be an integer from 1 through 100",
|
|
601
|
+
)
|
|
602
|
+
const after = field("after")
|
|
603
|
+
if (after !== undefined && !identifier(after))
|
|
604
|
+
return inputValidationFailure("query.after", "format", "Thread member cursor must be a decimal user ID string")
|
|
605
|
+
const params = new URLSearchParams({ limit: String(limit) })
|
|
606
|
+
if (after !== undefined) params.set("after", after)
|
|
607
|
+
if (withMember) params.set("with_member", "true")
|
|
608
|
+
return {
|
|
609
|
+
withMember,
|
|
610
|
+
request: (guildId) => ({
|
|
611
|
+
majorId: threadId,
|
|
612
|
+
bucket: "channel:thread:members:list",
|
|
613
|
+
path: `/channels/${threadId}/thread-members?${params}`,
|
|
614
|
+
method: "GET",
|
|
615
|
+
status: 200,
|
|
616
|
+
decode: (value) => {
|
|
617
|
+
if (!Array.isArray(value) || value.length > limit) return undefined
|
|
618
|
+
const members: ThreadMember[] = []
|
|
619
|
+
let previous = after === undefined ? undefined : BigInt(after)
|
|
620
|
+
for (const item of value) {
|
|
621
|
+
const member = threadMember(item, threadId, guildId)
|
|
622
|
+
if (!member) return undefined
|
|
623
|
+
if (previous !== undefined && BigInt(member.userId) <= previous) return rejectCheck("order")
|
|
624
|
+
previous = BigInt(member.userId)
|
|
625
|
+
members.push(member)
|
|
626
|
+
}
|
|
627
|
+
return Object.freeze(members)
|
|
628
|
+
},
|
|
629
|
+
}),
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
type ThreadOwner = Pick<ClientOwner<MessageCore>, "channel" | "channelCache" | "logical"> & {
|
|
634
|
+
readonly defaultTimeoutMs?: number
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
/** The timeout of operation options, which may also hold the default API's signal */
|
|
638
|
+
function operationTimeout(value: unknown): { readonly timeoutMs?: number } | InputValidationFailure {
|
|
639
|
+
if (value === undefined) return {}
|
|
640
|
+
if (!record(value)) return inputValidationFailure("options", "type", "Operation options must be an object")
|
|
641
|
+
const unsupported = unsupportedKeyFailure(value, ["timeoutMs", "signal"], "options", "the operation options")
|
|
642
|
+
if (unsupported) return unsupported
|
|
643
|
+
const timeoutMs = value.timeoutMs
|
|
644
|
+
if (timeoutMs === undefined) return {}
|
|
645
|
+
return integerInRange(timeoutMs, 1, 2_147_483_647)
|
|
646
|
+
? { timeoutMs }
|
|
647
|
+
: inputValidationFailure(
|
|
648
|
+
"options.timeoutMs",
|
|
649
|
+
"range",
|
|
650
|
+
"Operation timeoutMs must be an integer from 1 through 2,147,483,647 ms",
|
|
651
|
+
)
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
/**
|
|
655
|
+
* Run a thread member read. With withMember, the thread's community comes from the channel cache when the thread is
|
|
656
|
+
* cached there, otherwise from one thread read, and both requests share the caller's deadline. A pagination
|
|
657
|
+
* consumption passes resolved to read the community at most once
|
|
658
|
+
*/
|
|
659
|
+
export function readThreadMembers<A>(
|
|
660
|
+
owner: ThreadOwner,
|
|
661
|
+
operation: "threads.fetchMember" | "threads.fetchMembers",
|
|
662
|
+
threadId: string,
|
|
663
|
+
validate: () => MemberRead<A> | InputValidationFailure,
|
|
664
|
+
options: unknown,
|
|
665
|
+
resolved: { guildId?: string } = {},
|
|
666
|
+
): Effect.Effect<A, ChannelOperationFailure> {
|
|
667
|
+
// Reading and validating the caller query and options is marked as application input
|
|
668
|
+
return suspendInput(() => {
|
|
669
|
+
const invalid = (failure: InputValidationFailure) =>
|
|
670
|
+
Effect.fail(
|
|
671
|
+
new ChannelOperationError({
|
|
672
|
+
operation,
|
|
673
|
+
reason: "input",
|
|
674
|
+
outcome: "notDispatched",
|
|
675
|
+
inputValidation: failure.detail,
|
|
676
|
+
}),
|
|
677
|
+
)
|
|
678
|
+
const read = validate()
|
|
679
|
+
if (read instanceof InputValidationFailure) return invalid(read)
|
|
680
|
+
const timeout = operationTimeout(options)
|
|
681
|
+
if (timeout instanceof InputValidationFailure) return invalid(timeout)
|
|
682
|
+
if (!read.withMember) return owner.channel(operation, () => read.request(undefined), timeout)
|
|
683
|
+
return Effect.gen(function* () {
|
|
684
|
+
const now = () => owner.logical.now()
|
|
685
|
+
const deadline = now() + (timeout.timeoutMs ?? owner.defaultTimeoutMs ?? 30_000)
|
|
686
|
+
const remaining = () =>
|
|
687
|
+
Effect.suspend(() => {
|
|
688
|
+
const left = Math.floor(deadline - now())
|
|
689
|
+
return left > 0
|
|
690
|
+
? Effect.succeed({ timeoutMs: left })
|
|
691
|
+
: Effect.fail(
|
|
692
|
+
new ChannelOperationError({ operation, reason: "timeout", outcome: "notDispatched" }),
|
|
693
|
+
)
|
|
694
|
+
})
|
|
695
|
+
// Thread member payloads carry no community ID, and a thread never moves to another community
|
|
696
|
+
let guildId = resolved.guildId ?? owner.channelCache?.get(threadId)?.guildId
|
|
697
|
+
if (guildId === undefined) {
|
|
698
|
+
const thread = yield* owner.channel(operation, () => channelFetch(threadId), yield* remaining())
|
|
699
|
+
guildId = thread.guildId
|
|
700
|
+
}
|
|
701
|
+
resolved.guildId = guildId
|
|
702
|
+
const community = guildId
|
|
703
|
+
return yield* owner.channel(operation, () => read.request(community), yield* remaining())
|
|
704
|
+
})
|
|
705
|
+
})
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
export const fetchThreadMember = (
|
|
709
|
+
owner: ThreadOwner,
|
|
710
|
+
threadId: string,
|
|
711
|
+
userId: string,
|
|
712
|
+
query: unknown,
|
|
713
|
+
options: unknown,
|
|
714
|
+
) =>
|
|
715
|
+
readThreadMembers(owner, "threads.fetchMember", threadId, () => threadMemberFetch(threadId, userId, query), options)
|
|
716
|
+
|
|
717
|
+
export const fetchThreadMembers = (owner: ThreadOwner, threadId: string, query: unknown, options: unknown) =>
|
|
718
|
+
readThreadMembers(owner, "threads.fetchMembers", threadId, () => threadMemberPage(threadId, query), options)
|