@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,949 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guild, member, role and voice-state operations and their gateway projections.
|
|
3
|
+
* Invariant: Operations validate requests and convert REST and gateway data without storing guild state, use separate rate-limit
|
|
4
|
+
* groups for guild and message routes, and never enter the message cache or synthesize gateway events after HTTP responses.
|
|
5
|
+
* Multi-step resource workflows are not transactions, and uncertain writes are never replayed as reads. Implements [SDK contracts: Delivery, requests and caches](/docs/SDK-CONTRACTS.md#delivery-requests-and-caches)
|
|
6
|
+
*/
|
|
7
|
+
import type {
|
|
8
|
+
Guild,
|
|
9
|
+
GuildDeletion,
|
|
10
|
+
GuildContentWarningLevel,
|
|
11
|
+
GuildDefaultMessageNotification,
|
|
12
|
+
GuildExplicitContentFilter,
|
|
13
|
+
GuildMember,
|
|
14
|
+
MemberProfileEdit,
|
|
15
|
+
GuildSplashCardAlignment,
|
|
16
|
+
GuildVerificationLevel,
|
|
17
|
+
GuildMfaLevel,
|
|
18
|
+
GuildRole,
|
|
19
|
+
RoleCreate,
|
|
20
|
+
RoleEdit,
|
|
21
|
+
MemberQuery,
|
|
22
|
+
MemberReference,
|
|
23
|
+
RolePosition,
|
|
24
|
+
RoleHoistPosition,
|
|
25
|
+
RoleReference,
|
|
26
|
+
} from "#sdk/guilds"
|
|
27
|
+
import { GuildVerificationLevels } from "#sdk/guilds"
|
|
28
|
+
import type { GuildCreate, VoiceState, VoiceStateSnapshot } from "#sdk/events"
|
|
29
|
+
import { InputValidationFailure, inputValidationFailure, unsupportedKeyFailure } from "#sdk/input-validation"
|
|
30
|
+
import { count as nonNegativeInt32, identifier, int32, record } from "./decode/primitives.js"
|
|
31
|
+
import { rejectCheck } from "./decode/trace.js"
|
|
32
|
+
import type { ResourceRequest } from "./guild-cache.js"
|
|
33
|
+
import type { ChannelCacheRequest } from "./channel-cache.js"
|
|
34
|
+
import type { InstanceEndpointContext } from "./instance.js"
|
|
35
|
+
import { timestamp } from "./decode/timestamp.js"
|
|
36
|
+
import { memberNickname, normalizedText as text } from "./field-text.js"
|
|
37
|
+
|
|
38
|
+
/** Validated request description. The shared REST owner retains admission, cleanup and rate state */
|
|
39
|
+
export interface GuildRequest<A> {
|
|
40
|
+
readonly guildId: string
|
|
41
|
+
readonly bucket: string
|
|
42
|
+
readonly path: string
|
|
43
|
+
readonly method: "GET" | "POST" | "PATCH" | "PUT" | "DELETE"
|
|
44
|
+
readonly status: 200 | 202 | 204
|
|
45
|
+
readonly json?: string
|
|
46
|
+
/** Allows the shared REST owner to validate and send an operation audit reason */
|
|
47
|
+
readonly audited?: true
|
|
48
|
+
readonly moderation?: true
|
|
49
|
+
readonly auditReason?: string
|
|
50
|
+
/** Permits timeoutReason only on timeout and clear-timeout operation options */
|
|
51
|
+
readonly timeoutReason?: true
|
|
52
|
+
readonly deleteAuthorId?: string
|
|
53
|
+
readonly invalidateMessages?: true
|
|
54
|
+
/** Private client capabilities required for one explicit provider-gated replacement */
|
|
55
|
+
readonly features?: readonly string[]
|
|
56
|
+
/** REST supplies the immutable endpoint snapshot after request admission. One-argument decoders ignore it */
|
|
57
|
+
readonly decode: (value: unknown, instance?: InstanceEndpointContext) => A | undefined
|
|
58
|
+
readonly cache?: ResourceRequest
|
|
59
|
+
readonly channelCache?: ChannelCacheRequest
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
type GuildValidationResult<A> = GuildRequest<A> | InputValidationFailure
|
|
63
|
+
|
|
64
|
+
const nullableText = (value: unknown) => value === undefined || value === null || typeof value === "string"
|
|
65
|
+
const maximumSnowflake = "9223372036854775807"
|
|
66
|
+
const positiveIdentifier = (value: unknown): value is string =>
|
|
67
|
+
identifier(value) &&
|
|
68
|
+
value !== "0" &&
|
|
69
|
+
(value.length < maximumSnowflake.length || (value.length === maximumSnowflake.length && value <= maximumSnowflake))
|
|
70
|
+
const color = (value: unknown): value is number => nonNegativeInt32(value) && value <= 0xffffff
|
|
71
|
+
const mentionPreference = (value: unknown): value is 0 | 1 | 2 => value === 0 || value === 1 || value === 2
|
|
72
|
+
const guildDefaultMessageNotification = (value: unknown): value is GuildDefaultMessageNotification =>
|
|
73
|
+
value === 0 || value === 1
|
|
74
|
+
const guildVerificationLevel = (value: unknown): value is GuildVerificationLevel =>
|
|
75
|
+
value === 0 || value === 1 || value === 2 || value === 3
|
|
76
|
+
const guildMfaLevel = (value: unknown): value is GuildMfaLevel => value === 0 || value === 1
|
|
77
|
+
const guildExplicitContentFilter = (value: unknown): value is GuildExplicitContentFilter =>
|
|
78
|
+
value === 0 || value === 1 || value === 2
|
|
79
|
+
const guildContentWarningLevel = (value: unknown): value is GuildContentWarningLevel => value === 0 || value === 1
|
|
80
|
+
const guildSplashCardAlignment = (value: unknown): value is GuildSplashCardAlignment =>
|
|
81
|
+
value === 0 || value === 1 || value === 2
|
|
82
|
+
const imageDataUri = (value: unknown): value is string =>
|
|
83
|
+
typeof value === "string" && /^data:image\/[a-zA-Z0-9.+-]+;base64,[A-Za-z0-9+/]+={0,2}$/.test(value)
|
|
84
|
+
|
|
85
|
+
export const guildEvents = {
|
|
86
|
+
GUILD_MEMBER_ADD: "guildMemberAdd",
|
|
87
|
+
GUILD_MEMBER_UPDATE: "guildMemberUpdate",
|
|
88
|
+
GUILD_MEMBER_REMOVE: "guildMemberRemove",
|
|
89
|
+
GUILD_BAN_ADD: "guildBanAdd",
|
|
90
|
+
GUILD_BAN_REMOVE: "guildBanRemove",
|
|
91
|
+
GUILD_ROLE_DELETE: "guildRoleDelete",
|
|
92
|
+
GUILD_ROLE_CREATE: "guildRoleCreate",
|
|
93
|
+
GUILD_ROLE_UPDATE: "guildRoleUpdate",
|
|
94
|
+
GUILD_ROLE_UPDATE_BULK: "guildRoleUpdateBulk",
|
|
95
|
+
} as const
|
|
96
|
+
|
|
97
|
+
export const guildLifecycleEvents = {
|
|
98
|
+
GUILD_CREATE: "guildCreate",
|
|
99
|
+
GUILD_UPDATE: "guildUpdate",
|
|
100
|
+
GUILD_DELETE: "guildDelete",
|
|
101
|
+
} as const
|
|
102
|
+
|
|
103
|
+
export function decodeGuildEvent(event: keyof typeof guildEvents, value: unknown) {
|
|
104
|
+
if (!record(value) || !identifier(value.guild_id)) return undefined
|
|
105
|
+
if (event === "GUILD_ROLE_CREATE" || event === "GUILD_ROLE_UPDATE") return decodeRole(value.role, value.guild_id)
|
|
106
|
+
if (event === "GUILD_ROLE_UPDATE_BULK") {
|
|
107
|
+
const roles = decodeRoles(value.roles, value.guild_id)
|
|
108
|
+
return roles ? Object.freeze({ guildId: value.guild_id, roles }) : undefined
|
|
109
|
+
}
|
|
110
|
+
if (event === "GUILD_ROLE_DELETE") {
|
|
111
|
+
if (!identifier(value.role_id)) return undefined
|
|
112
|
+
return Object.freeze({ guildId: value.guild_id, id: value.role_id })
|
|
113
|
+
}
|
|
114
|
+
if (event === "GUILD_MEMBER_REMOVE" || event === "GUILD_BAN_ADD" || event === "GUILD_BAN_REMOVE") {
|
|
115
|
+
if (!record(value.user) || !identifier(value.user.id)) return undefined
|
|
116
|
+
return Object.freeze({ guildId: value.guild_id, userId: value.user.id })
|
|
117
|
+
}
|
|
118
|
+
return decodeMember(value, value.guild_id)
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/** Decodes the documented complete snapshot/update forms without retaining gateway collections */
|
|
122
|
+
export function decodeGuildLifecycleEvent(event: keyof typeof guildLifecycleEvents, value: unknown) {
|
|
123
|
+
if (event === "GUILD_CREATE") {
|
|
124
|
+
if (!record(value) || (Object.hasOwn(value, "unavailable") && value.unavailable !== false)) return undefined
|
|
125
|
+
const guild = decodeGuildSnapshot(value)
|
|
126
|
+
return guild
|
|
127
|
+
? Object.freeze({ ...guild, isNewJoin: !Object.hasOwn(value, "unavailable") } satisfies GuildCreate)
|
|
128
|
+
: undefined
|
|
129
|
+
}
|
|
130
|
+
if (event === "GUILD_DELETE") {
|
|
131
|
+
if (
|
|
132
|
+
!record(value) ||
|
|
133
|
+
!identifier(value.id) ||
|
|
134
|
+
(value.guild_id !== undefined && (!identifier(value.guild_id) || value.guild_id !== value.id)) ||
|
|
135
|
+
(value.unavailable !== undefined && typeof value.unavailable !== "boolean") ||
|
|
136
|
+
(value.unavailable_hidden !== undefined && typeof value.unavailable_hidden !== "boolean") ||
|
|
137
|
+
(value.unavailable_hidden === true && value.unavailable !== true)
|
|
138
|
+
)
|
|
139
|
+
return undefined
|
|
140
|
+
return Object.freeze({
|
|
141
|
+
id: value.id,
|
|
142
|
+
unavailable: value.unavailable ?? false,
|
|
143
|
+
unavailableHidden: value.unavailable_hidden ?? false,
|
|
144
|
+
} satisfies GuildDeletion)
|
|
145
|
+
}
|
|
146
|
+
if (
|
|
147
|
+
event === "GUILD_UPDATE" &&
|
|
148
|
+
(!record(value) ||
|
|
149
|
+
(value.guild_id !== undefined && (!identifier(value.guild_id) || value.guild_id !== value.id)))
|
|
150
|
+
)
|
|
151
|
+
return undefined
|
|
152
|
+
return decodeGuild(value)
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/** Decodes a complete nested GUILD_CREATE snapshot while leaving its collections unretained */
|
|
156
|
+
export function decodeGuildSnapshot(value: unknown): Guild | undefined {
|
|
157
|
+
if (!record(value) || !identifier(value.id) || !record(value.properties) || value.properties.id !== value.id)
|
|
158
|
+
return undefined
|
|
159
|
+
return decodeGuild(value.properties)
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export function decodeVoiceState(value: unknown, expectedGuildId?: string): VoiceState | undefined {
|
|
163
|
+
if (
|
|
164
|
+
!record(value) ||
|
|
165
|
+
!identifier(value.guild_id) ||
|
|
166
|
+
(expectedGuildId !== undefined && value.guild_id !== expectedGuildId) ||
|
|
167
|
+
(value.channel_id !== null && !identifier(value.channel_id)) ||
|
|
168
|
+
!identifier(value.user_id) ||
|
|
169
|
+
typeof value.connection_id !== "string" ||
|
|
170
|
+
// oxlint-disable-next-line typescript/no-misused-spread -- the length limit counts Unicode code points
|
|
171
|
+
[...value.connection_id].length < 1 ||
|
|
172
|
+
// oxlint-disable-next-line typescript/no-misused-spread -- the length limit counts Unicode code points
|
|
173
|
+
[...value.connection_id].length > 32 ||
|
|
174
|
+
(value.session_id !== undefined &&
|
|
175
|
+
value.session_id !== null &&
|
|
176
|
+
(typeof value.session_id !== "string" || value.session_id.length === 0)) ||
|
|
177
|
+
typeof value.mute !== "boolean" ||
|
|
178
|
+
typeof value.deaf !== "boolean" ||
|
|
179
|
+
typeof value.self_mute !== "boolean" ||
|
|
180
|
+
typeof value.self_deaf !== "boolean" ||
|
|
181
|
+
typeof value.is_mobile !== "boolean" ||
|
|
182
|
+
typeof value.suppress !== "boolean" ||
|
|
183
|
+
(value.self_video !== undefined && typeof value.self_video !== "boolean") ||
|
|
184
|
+
(value.self_stream !== undefined && typeof value.self_stream !== "boolean") ||
|
|
185
|
+
(value.viewer_stream_keys !== undefined &&
|
|
186
|
+
value.viewer_stream_keys !== null &&
|
|
187
|
+
(!Array.isArray(value.viewer_stream_keys) ||
|
|
188
|
+
!value.viewer_stream_keys.every((key) => typeof key === "string")))
|
|
189
|
+
)
|
|
190
|
+
return undefined
|
|
191
|
+
// Fluxer sends member null where no community member applies, such as in a private call
|
|
192
|
+
const hasMember = value.member !== undefined && value.member !== null
|
|
193
|
+
const member = hasMember ? decodeMember(value.member, value.guild_id) : undefined
|
|
194
|
+
if (hasMember && !member) return undefined
|
|
195
|
+
return Object.freeze({
|
|
196
|
+
guildId: value.guild_id,
|
|
197
|
+
channelId: value.channel_id,
|
|
198
|
+
userId: value.user_id,
|
|
199
|
+
connectionId: value.connection_id,
|
|
200
|
+
...(typeof value.session_id === "string" ? { sessionId: value.session_id } : {}),
|
|
201
|
+
isMuted: value.mute,
|
|
202
|
+
isDeafened: value.deaf,
|
|
203
|
+
isSelfMuted: value.self_mute,
|
|
204
|
+
isSelfDeafened: value.self_deaf,
|
|
205
|
+
isMobile: value.is_mobile,
|
|
206
|
+
isSuppressed: value.suppress,
|
|
207
|
+
isSelfVideoOn: value.self_video === true,
|
|
208
|
+
isSelfStreaming: value.self_stream === true,
|
|
209
|
+
viewerStreamKeys: Object.freeze(
|
|
210
|
+
Array.isArray(value.viewer_stream_keys) ? ([...value.viewer_stream_keys] as string[]) : [],
|
|
211
|
+
),
|
|
212
|
+
...(member ? { member } : {}),
|
|
213
|
+
})
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export function decodeVoiceStateSnapshot(value: unknown): VoiceStateSnapshot | undefined {
|
|
217
|
+
if (!record(value) || !identifier(value.id) || !Array.isArray(value.voice_states)) return undefined
|
|
218
|
+
const connectionIds = new Set<string>()
|
|
219
|
+
const voiceStates: VoiceState[] = []
|
|
220
|
+
for (const item of value.voice_states) {
|
|
221
|
+
const state = decodeVoiceState(item, value.id)
|
|
222
|
+
if (!state || state.channelId === null || connectionIds.has(state.connectionId)) return undefined
|
|
223
|
+
connectionIds.add(state.connectionId)
|
|
224
|
+
voiceStates.push(state)
|
|
225
|
+
}
|
|
226
|
+
return Object.freeze({ guildId: value.id, voiceStates: Object.freeze(voiceStates) })
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
export function decodeGuild(value: unknown): Guild | undefined {
|
|
230
|
+
if (
|
|
231
|
+
!record(value) ||
|
|
232
|
+
!identifier(value.id) ||
|
|
233
|
+
!identifier(value.owner_id) ||
|
|
234
|
+
typeof value.name !== "string" ||
|
|
235
|
+
!Array.isArray(value.features) ||
|
|
236
|
+
!value.features.every((item) => typeof item === "string") ||
|
|
237
|
+
!nullableText(value.icon) ||
|
|
238
|
+
!nullableText(value.banner) ||
|
|
239
|
+
!nullableText(value.splash) ||
|
|
240
|
+
!nullableText(value.embed_splash) ||
|
|
241
|
+
(value.splash_card_alignment !== undefined && !guildSplashCardAlignment(value.splash_card_alignment)) ||
|
|
242
|
+
(value.system_channel_id !== undefined &&
|
|
243
|
+
value.system_channel_id !== null &&
|
|
244
|
+
!identifier(value.system_channel_id)) ||
|
|
245
|
+
(value.system_channel_flags !== undefined && !nonNegativeInt32(value.system_channel_flags)) ||
|
|
246
|
+
(value.afk_channel_id !== undefined && value.afk_channel_id !== null && !identifier(value.afk_channel_id)) ||
|
|
247
|
+
(value.afk_timeout !== undefined && !nonNegativeInt32(value.afk_timeout)) ||
|
|
248
|
+
(value.default_message_notifications !== undefined &&
|
|
249
|
+
!guildDefaultMessageNotification(value.default_message_notifications)) ||
|
|
250
|
+
(value.verification_level !== undefined &&
|
|
251
|
+
value.verification_level !== 4 &&
|
|
252
|
+
!guildVerificationLevel(value.verification_level)) ||
|
|
253
|
+
(value.mfa_level !== undefined && !guildMfaLevel(value.mfa_level)) ||
|
|
254
|
+
(value.nsfw !== undefined && typeof value.nsfw !== "boolean") ||
|
|
255
|
+
(value.content_warning_level !== undefined && !guildContentWarningLevel(value.content_warning_level)) ||
|
|
256
|
+
!nullableText(value.content_warning_text) ||
|
|
257
|
+
(value.explicit_content_filter !== undefined && !guildExplicitContentFilter(value.explicit_content_filter)) ||
|
|
258
|
+
(value.message_history_cutoff !== undefined &&
|
|
259
|
+
value.message_history_cutoff !== null &&
|
|
260
|
+
!timestamp(value.message_history_cutoff))
|
|
261
|
+
)
|
|
262
|
+
return undefined
|
|
263
|
+
return Object.freeze({
|
|
264
|
+
id: value.id,
|
|
265
|
+
name: value.name,
|
|
266
|
+
ownerId: value.owner_id,
|
|
267
|
+
features: Object.freeze([...value.features] as string[]),
|
|
268
|
+
...(value.icon === undefined ? {} : { icon: value.icon as string | null }),
|
|
269
|
+
...(value.banner === undefined ? {} : { banner: value.banner as string | null }),
|
|
270
|
+
...(value.splash === undefined ? {} : { splash: value.splash as string | null }),
|
|
271
|
+
...(value.embed_splash === undefined ? {} : { embedSplash: value.embed_splash as string | null }),
|
|
272
|
+
...(value.splash_card_alignment === undefined
|
|
273
|
+
? {}
|
|
274
|
+
: { splashCardAlignment: value.splash_card_alignment as GuildSplashCardAlignment }),
|
|
275
|
+
...(value.system_channel_id === undefined ? {} : { systemChannelId: value.system_channel_id as string | null }),
|
|
276
|
+
...(value.system_channel_flags === undefined
|
|
277
|
+
? {}
|
|
278
|
+
: { systemChannelFlags: value.system_channel_flags as number }),
|
|
279
|
+
...(value.afk_channel_id === undefined ? {} : { afkChannelId: value.afk_channel_id as string | null }),
|
|
280
|
+
...(value.afk_timeout === undefined ? {} : { afkTimeoutSeconds: value.afk_timeout as number }),
|
|
281
|
+
...(value.default_message_notifications === undefined
|
|
282
|
+
? {}
|
|
283
|
+
: { defaultMessageNotifications: value.default_message_notifications as GuildDefaultMessageNotification }),
|
|
284
|
+
// Legacy level 4 follows Fluxer's stored-guild normalization to High
|
|
285
|
+
// https://github.com/fluxerapp/fluxer/blob/597116a0b4bf3a212789bdebe7f284babc33b445/fluxer_api/src/api/models/Guild.ts
|
|
286
|
+
...(value.verification_level === undefined
|
|
287
|
+
? {}
|
|
288
|
+
: {
|
|
289
|
+
verificationLevel:
|
|
290
|
+
value.verification_level === 4
|
|
291
|
+
? GuildVerificationLevels.High
|
|
292
|
+
: (value.verification_level as GuildVerificationLevel),
|
|
293
|
+
}),
|
|
294
|
+
...(value.mfa_level === undefined ? {} : { mfaLevel: value.mfa_level as GuildMfaLevel }),
|
|
295
|
+
...(value.nsfw === undefined ? {} : { nsfw: value.nsfw as boolean }),
|
|
296
|
+
...(value.content_warning_level === undefined
|
|
297
|
+
? {}
|
|
298
|
+
: { contentWarningLevel: value.content_warning_level as GuildContentWarningLevel }),
|
|
299
|
+
...(value.content_warning_text === undefined
|
|
300
|
+
? {}
|
|
301
|
+
: { contentWarningText: value.content_warning_text as string | null }),
|
|
302
|
+
...(value.explicit_content_filter === undefined
|
|
303
|
+
? {}
|
|
304
|
+
: { explicitContentFilter: value.explicit_content_filter as GuildExplicitContentFilter }),
|
|
305
|
+
...(value.message_history_cutoff === undefined
|
|
306
|
+
? {}
|
|
307
|
+
: { messageHistoryCutoff: value.message_history_cutoff as string | null }),
|
|
308
|
+
})
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
export function decodeMember(value: unknown, guildId: string): GuildMember | undefined {
|
|
312
|
+
if (
|
|
313
|
+
!record(value) ||
|
|
314
|
+
!record(value.user) ||
|
|
315
|
+
!identifier(value.user.id) ||
|
|
316
|
+
typeof value.user.username !== "string" ||
|
|
317
|
+
(value.user.bot !== undefined && typeof value.user.bot !== "boolean") ||
|
|
318
|
+
!Array.isArray(value.roles) ||
|
|
319
|
+
value.roles.length > 250 ||
|
|
320
|
+
!value.roles.every(identifier) ||
|
|
321
|
+
new Set(value.roles).size !== value.roles.length ||
|
|
322
|
+
!timestamp(value.joined_at) ||
|
|
323
|
+
!nullableText(value.nick) ||
|
|
324
|
+
!nullableText(value.avatar) ||
|
|
325
|
+
!nullableText(value.banner) ||
|
|
326
|
+
(value.accent_color !== undefined && value.accent_color !== null && !color(value.accent_color)) ||
|
|
327
|
+
(value.profile_flags !== undefined && value.profile_flags !== null && !nonNegativeInt32(value.profile_flags)) ||
|
|
328
|
+
(value.mention_flags !== undefined &&
|
|
329
|
+
value.mention_flags !== null &&
|
|
330
|
+
!mentionPreference(value.mention_flags)) ||
|
|
331
|
+
(value.mute !== undefined && typeof value.mute !== "boolean") ||
|
|
332
|
+
(value.deaf !== undefined && typeof value.deaf !== "boolean") ||
|
|
333
|
+
(value.communication_disabled_until !== undefined &&
|
|
334
|
+
value.communication_disabled_until !== null &&
|
|
335
|
+
!timestamp(value.communication_disabled_until))
|
|
336
|
+
)
|
|
337
|
+
return undefined
|
|
338
|
+
return Object.freeze({
|
|
339
|
+
guildId,
|
|
340
|
+
userId: value.user.id,
|
|
341
|
+
username: value.user.username,
|
|
342
|
+
isBot: value.user.bot === true,
|
|
343
|
+
roleIds: Object.freeze([...value.roles] as string[]),
|
|
344
|
+
joinedAt: value.joined_at,
|
|
345
|
+
...(value.communication_disabled_until === undefined
|
|
346
|
+
? {}
|
|
347
|
+
: { communicationDisabledUntil: value.communication_disabled_until as string | null }),
|
|
348
|
+
...(value.nick === undefined ? {} : { nickname: value.nick as string | null }),
|
|
349
|
+
...(value.avatar === undefined ? {} : { avatar: value.avatar as string | null }),
|
|
350
|
+
...(value.banner === undefined ? {} : { banner: value.banner as string | null }),
|
|
351
|
+
...(value.accent_color === undefined ? {} : { accentColor: value.accent_color as number | null }),
|
|
352
|
+
...(value.profile_flags === undefined ? {} : { profileFlags: value.profile_flags as number | null }),
|
|
353
|
+
...(value.mention_flags === undefined ? {} : { mentionFlags: value.mention_flags as 0 | 1 | 2 | null }),
|
|
354
|
+
...(value.mute === undefined ? {} : { isMuted: value.mute as boolean }),
|
|
355
|
+
...(value.deaf === undefined ? {} : { isDeafened: value.deaf as boolean }),
|
|
356
|
+
})
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
export function guildFetch(guildId: string): GuildValidationResult<Guild> {
|
|
360
|
+
if (!identifier(guildId)) return inputValidationFailure("guildId", "format", "Guild IDs must be decimal strings")
|
|
361
|
+
return {
|
|
362
|
+
guildId,
|
|
363
|
+
bucket: "guild:read",
|
|
364
|
+
cache: { selection: { kind: "guilds", guildId } },
|
|
365
|
+
path: `/guilds/${guildId}`,
|
|
366
|
+
method: "GET",
|
|
367
|
+
status: 200,
|
|
368
|
+
decode: (value) => {
|
|
369
|
+
const guild = decodeGuild(value)
|
|
370
|
+
return guild?.id === guildId ? guild : undefined
|
|
371
|
+
},
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
export function memberFetch(target: MemberReference): GuildValidationResult<GuildMember> {
|
|
376
|
+
if (!record(target)) return inputValidationFailure("target", "type", "Member targets must be objects")
|
|
377
|
+
if (!identifier(target.guildId))
|
|
378
|
+
return inputValidationFailure("target.guildId", "format", "Guild IDs must be decimal strings")
|
|
379
|
+
if (!identifier(target.userId))
|
|
380
|
+
return inputValidationFailure("target.userId", "format", "User IDs must be decimal strings")
|
|
381
|
+
const { guildId, userId } = target
|
|
382
|
+
return {
|
|
383
|
+
guildId,
|
|
384
|
+
bucket: "guild:members",
|
|
385
|
+
path: `/guilds/${guildId}/members/${userId}`,
|
|
386
|
+
cache: { selection: { kind: "members", guildId, id: userId } },
|
|
387
|
+
method: "GET",
|
|
388
|
+
status: 200,
|
|
389
|
+
decode: (value) => {
|
|
390
|
+
const member = decodeMember(value, guildId)
|
|
391
|
+
return member?.userId === userId ? member : undefined
|
|
392
|
+
},
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
export function memberSelf(guildId: string): GuildValidationResult<GuildMember> {
|
|
397
|
+
if (!identifier(guildId)) return inputValidationFailure("guildId", "format", "Guild IDs must be decimal strings")
|
|
398
|
+
return {
|
|
399
|
+
guildId,
|
|
400
|
+
bucket: "guild:members",
|
|
401
|
+
path: `/guilds/${guildId}/members/@me`,
|
|
402
|
+
cache: { selection: { kind: "members", guildId } },
|
|
403
|
+
method: "GET",
|
|
404
|
+
status: 200,
|
|
405
|
+
decode: (value) => decodeMember(value, guildId),
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
export function memberEditSelf(guildId: string, input: MemberProfileEdit): GuildValidationResult<GuildMember> {
|
|
410
|
+
if (!identifier(guildId)) return inputValidationFailure("guildId", "format", "Guild IDs must be decimal strings")
|
|
411
|
+
if (!record(input)) return inputValidationFailure("input", "type", "Member profile input must be an object")
|
|
412
|
+
if (Object.keys(input).length === 0)
|
|
413
|
+
return inputValidationFailure("input", "required", "Member profile input must contain at least one field")
|
|
414
|
+
const unsupported = unsupportedKeyFailure(
|
|
415
|
+
input,
|
|
416
|
+
["nickname", "avatar", "banner", "bio", "pronouns", "accentColor", "profileFlags", "mentionFlags"],
|
|
417
|
+
"input",
|
|
418
|
+
"the member profile input",
|
|
419
|
+
)
|
|
420
|
+
if (unsupported) return unsupported
|
|
421
|
+
if (input.nickname !== undefined && input.nickname !== null && !memberNickname(input.nickname))
|
|
422
|
+
return inputValidationFailure(
|
|
423
|
+
"nickname",
|
|
424
|
+
"length",
|
|
425
|
+
"Nickname must contain 1 through 32 UTF-16 code units after Fluxer's normalization, or only whitespace to clear it",
|
|
426
|
+
)
|
|
427
|
+
if (input.avatar !== undefined && input.avatar !== null && !imageDataUri(input.avatar))
|
|
428
|
+
return inputValidationFailure("avatar", "format", "Avatar must be null or a base64 image data URI")
|
|
429
|
+
if (input.banner !== undefined && input.banner !== null && !imageDataUri(input.banner))
|
|
430
|
+
return inputValidationFailure("banner", "format", "Banner must be null or a base64 image data URI")
|
|
431
|
+
if (input.bio !== undefined && input.bio !== null && !text(input.bio, 1, 320))
|
|
432
|
+
return inputValidationFailure(
|
|
433
|
+
"bio",
|
|
434
|
+
"length",
|
|
435
|
+
"Bio must contain 1 through 320 UTF-16 code units after Fluxer's normalization",
|
|
436
|
+
)
|
|
437
|
+
if (input.pronouns !== undefined && input.pronouns !== null && !text(input.pronouns, 1, 40))
|
|
438
|
+
return inputValidationFailure(
|
|
439
|
+
"pronouns",
|
|
440
|
+
"length",
|
|
441
|
+
"Pronouns must contain 1 through 40 UTF-16 code units after Fluxer's normalization",
|
|
442
|
+
)
|
|
443
|
+
if (input.accentColor !== undefined && input.accentColor !== null && !color(input.accentColor))
|
|
444
|
+
return inputValidationFailure(
|
|
445
|
+
"accentColor",
|
|
446
|
+
"range",
|
|
447
|
+
"Accent color must be an integer from 0 through 16,777,215",
|
|
448
|
+
)
|
|
449
|
+
if (input.profileFlags !== undefined && input.profileFlags !== null && !nonNegativeInt32(input.profileFlags))
|
|
450
|
+
return inputValidationFailure(
|
|
451
|
+
"profileFlags",
|
|
452
|
+
"range",
|
|
453
|
+
"Profile flags must be an integer from 0 through 2,147,483,647",
|
|
454
|
+
)
|
|
455
|
+
if (input.mentionFlags !== undefined && input.mentionFlags !== null && !mentionPreference(input.mentionFlags))
|
|
456
|
+
return inputValidationFailure("mentionFlags", "allowedValue", "Mention flags must be 0, 1, or 2")
|
|
457
|
+
const json = JSON.stringify({
|
|
458
|
+
nick: input.nickname,
|
|
459
|
+
avatar: input.avatar,
|
|
460
|
+
banner: input.banner,
|
|
461
|
+
bio: input.bio,
|
|
462
|
+
pronouns: input.pronouns,
|
|
463
|
+
accent_color: input.accentColor,
|
|
464
|
+
profile_flags: input.profileFlags,
|
|
465
|
+
mention_flags: input.mentionFlags,
|
|
466
|
+
})
|
|
467
|
+
if (json === "{}")
|
|
468
|
+
return inputValidationFailure(
|
|
469
|
+
"input",
|
|
470
|
+
"required",
|
|
471
|
+
"Member profile input must set at least one field to a defined value",
|
|
472
|
+
)
|
|
473
|
+
if (Buffer.byteLength(json) > 4_194_304)
|
|
474
|
+
return inputValidationFailure("input", "size", "Member profile input must not exceed 4,194,304 encoded bytes")
|
|
475
|
+
return {
|
|
476
|
+
guildId,
|
|
477
|
+
bucket: "guild:member:self:update",
|
|
478
|
+
audited: true,
|
|
479
|
+
cache: { selection: { kind: "members", guildId }, mutation: true },
|
|
480
|
+
path: `/guilds/${guildId}/members/@me`,
|
|
481
|
+
method: "PATCH",
|
|
482
|
+
status: 200,
|
|
483
|
+
json,
|
|
484
|
+
decode: (value) => decodeMember(value, guildId),
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
/** Build the one-field member PATCH used for a moderator-controlled nickname change */
|
|
489
|
+
export function memberNicknameEdit(
|
|
490
|
+
target: MemberReference,
|
|
491
|
+
nickname: string | null,
|
|
492
|
+
): GuildValidationResult<GuildMember> {
|
|
493
|
+
if (!record(target)) return inputValidationFailure("target", "type", "Member targets must be objects")
|
|
494
|
+
if (!identifier(target.guildId))
|
|
495
|
+
return inputValidationFailure("target.guildId", "format", "Guild IDs must be decimal strings")
|
|
496
|
+
if (!identifier(target.userId))
|
|
497
|
+
return inputValidationFailure("target.userId", "format", "User IDs must be decimal strings")
|
|
498
|
+
if (nickname !== null && !memberNickname(nickname))
|
|
499
|
+
return inputValidationFailure(
|
|
500
|
+
"nickname",
|
|
501
|
+
"length",
|
|
502
|
+
"Nickname must be null or only whitespace to clear it, or contain 1 through 32 UTF-16 code units after Fluxer's normalization",
|
|
503
|
+
)
|
|
504
|
+
const { guildId, userId } = target
|
|
505
|
+
return {
|
|
506
|
+
guildId,
|
|
507
|
+
bucket: "guild:member:nickname:update",
|
|
508
|
+
audited: true,
|
|
509
|
+
cache: { selection: { kind: "members", guildId, id: userId }, mutation: true },
|
|
510
|
+
path: `/guilds/${guildId}/members/${userId}`,
|
|
511
|
+
method: "PATCH",
|
|
512
|
+
status: 200,
|
|
513
|
+
json: JSON.stringify({ nick: nickname }),
|
|
514
|
+
decode: (value) => {
|
|
515
|
+
const member = decodeMember(value, guildId)
|
|
516
|
+
return member?.userId === userId ? member : undefined
|
|
517
|
+
},
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/** Build the complete role-set PATCH for one member without reading or merging an existing role set */
|
|
522
|
+
export function memberRolesSet(
|
|
523
|
+
target: MemberReference,
|
|
524
|
+
roleIds: readonly string[],
|
|
525
|
+
): GuildValidationResult<GuildMember> {
|
|
526
|
+
if (!record(target)) return inputValidationFailure("target", "type", "Member targets must be objects")
|
|
527
|
+
if (!positiveIdentifier(target.guildId))
|
|
528
|
+
return inputValidationFailure(
|
|
529
|
+
"target.guildId",
|
|
530
|
+
"format",
|
|
531
|
+
"Guild IDs must be decimal strings from 1 through 9,223,372,036,854,775,807",
|
|
532
|
+
)
|
|
533
|
+
if (!positiveIdentifier(target.userId))
|
|
534
|
+
return inputValidationFailure(
|
|
535
|
+
"target.userId",
|
|
536
|
+
"format",
|
|
537
|
+
"User IDs must be decimal strings from 1 through 9,223,372,036,854,775,807",
|
|
538
|
+
)
|
|
539
|
+
if (!Array.isArray(roleIds)) return inputValidationFailure("roleIds", "type", "Role IDs must be an array")
|
|
540
|
+
const count = roleIds.length
|
|
541
|
+
if (count > 250) return inputValidationFailure("roleIds", "length", "A member role set may contain at most 250 IDs")
|
|
542
|
+
// oxlint-disable-next-line unicorn/no-new-array -- preallocates the counted length once, and the loop below assigns every index
|
|
543
|
+
const roles = new Array<string>(count)
|
|
544
|
+
for (let index = 0; index < count; index++) roles[index] = roleIds[index]
|
|
545
|
+
if (!roles.every(positiveIdentifier))
|
|
546
|
+
return inputValidationFailure(
|
|
547
|
+
"roleIds[]",
|
|
548
|
+
"format",
|
|
549
|
+
"Role IDs must be decimal strings from 1 through 9,223,372,036,854,775,807",
|
|
550
|
+
)
|
|
551
|
+
if (new Set(roles).size !== roles.length)
|
|
552
|
+
return inputValidationFailure("roleIds", "unique", "Role IDs must be unique")
|
|
553
|
+
if (roles.some((roleId) => roleId === target.guildId))
|
|
554
|
+
return inputValidationFailure(
|
|
555
|
+
"roleIds[]",
|
|
556
|
+
"relationship",
|
|
557
|
+
"Role IDs must not include the community's default role, whose ID equals the guild ID",
|
|
558
|
+
)
|
|
559
|
+
const { guildId, userId } = target
|
|
560
|
+
return {
|
|
561
|
+
guildId,
|
|
562
|
+
bucket: "guild:member:roles:set",
|
|
563
|
+
audited: true,
|
|
564
|
+
cache: { selection: { kind: "members", guildId, id: userId }, mutation: true },
|
|
565
|
+
path: `/guilds/${guildId}/members/${userId}`,
|
|
566
|
+
method: "PATCH",
|
|
567
|
+
status: 200,
|
|
568
|
+
json: JSON.stringify({ roles }),
|
|
569
|
+
decode: (value) => {
|
|
570
|
+
const member = decodeMember(value, guildId)
|
|
571
|
+
return member?.userId === userId ? member : undefined
|
|
572
|
+
},
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
export function memberPage(guildId: string, query?: MemberQuery): GuildValidationResult<readonly GuildMember[]> {
|
|
577
|
+
const input = query === undefined ? {} : query
|
|
578
|
+
if (!identifier(guildId)) return inputValidationFailure("guildId", "format", "Guild IDs must be decimal strings")
|
|
579
|
+
if (!record(input)) return inputValidationFailure("query", "type", "Member query must be an object")
|
|
580
|
+
const unsupported = unsupportedKeyFailure(input, ["limit", "after"], "query", "the member query")
|
|
581
|
+
if (unsupported) return unsupported
|
|
582
|
+
const limit = input.limit === undefined ? 100 : input.limit
|
|
583
|
+
if (typeof limit !== "number" || !Number.isInteger(limit) || limit < 1 || limit > 1000)
|
|
584
|
+
return inputValidationFailure("query.limit", "range", "Member limit must be an integer from 1 through 1,000")
|
|
585
|
+
if (input.after !== undefined && !identifier(input.after))
|
|
586
|
+
return inputValidationFailure("query.after", "format", "Member cursor must be a decimal user ID string")
|
|
587
|
+
const after = input.after as string | undefined
|
|
588
|
+
const params = new URLSearchParams({ limit: String(limit) })
|
|
589
|
+
if (after !== undefined) params.set("after", after)
|
|
590
|
+
return {
|
|
591
|
+
guildId,
|
|
592
|
+
bucket: "guild:members",
|
|
593
|
+
path: `/guilds/${guildId}/members?${params}`,
|
|
594
|
+
cache: { selection: { kind: "members", guildId } },
|
|
595
|
+
method: "GET",
|
|
596
|
+
status: 200,
|
|
597
|
+
decode: (value) => {
|
|
598
|
+
if (!Array.isArray(value) || value.length > limit) return undefined
|
|
599
|
+
const members: GuildMember[] = []
|
|
600
|
+
let previous = after === undefined ? undefined : BigInt(after)
|
|
601
|
+
for (const item of value) {
|
|
602
|
+
const member = decodeMember(item, guildId)
|
|
603
|
+
if (!member) return undefined
|
|
604
|
+
if (previous !== undefined && BigInt(member.userId) <= previous) return rejectCheck("order")
|
|
605
|
+
previous = BigInt(member.userId)
|
|
606
|
+
members.push(member)
|
|
607
|
+
}
|
|
608
|
+
return Object.freeze(members)
|
|
609
|
+
},
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
export function memberRole(target: MemberReference, roleId: string, add: boolean): GuildValidationResult<void> {
|
|
614
|
+
if (!record(target)) return inputValidationFailure("target", "type", "Member targets must be objects")
|
|
615
|
+
if (!identifier(target.guildId))
|
|
616
|
+
return inputValidationFailure("target.guildId", "format", "Guild IDs must be decimal strings")
|
|
617
|
+
if (!identifier(target.userId))
|
|
618
|
+
return inputValidationFailure("target.userId", "format", "User IDs must be decimal strings")
|
|
619
|
+
if (!identifier(roleId)) return inputValidationFailure("roleId", "format", "Role IDs must be decimal strings")
|
|
620
|
+
if (roleId === target.guildId)
|
|
621
|
+
return inputValidationFailure(
|
|
622
|
+
"roleId",
|
|
623
|
+
"relationship",
|
|
624
|
+
"The community's default role, whose ID equals the guild ID, cannot be assigned explicitly",
|
|
625
|
+
)
|
|
626
|
+
const { guildId, userId } = target
|
|
627
|
+
return {
|
|
628
|
+
guildId,
|
|
629
|
+
bucket: add ? "guild:member:role:add" : "guild:member:role:remove",
|
|
630
|
+
audited: true,
|
|
631
|
+
path: `/guilds/${guildId}/members/${userId}/roles/${roleId}`,
|
|
632
|
+
cache: { selection: { kind: "members", guildId, id: userId }, mutation: true },
|
|
633
|
+
method: add ? "PUT" : "DELETE",
|
|
634
|
+
status: 204,
|
|
635
|
+
decode: () => undefined,
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
const maxUnsignedPermission = 18_446_744_073_709_551_615n
|
|
640
|
+
const maxWritablePermission = 9_223_372_036_854_775_807n
|
|
641
|
+
const unsignedPermission = (value: unknown): value is bigint =>
|
|
642
|
+
typeof value === "bigint" && value >= 0n && value <= maxUnsignedPermission
|
|
643
|
+
const writablePermission = (value: unknown): value is bigint =>
|
|
644
|
+
typeof value === "bigint" && value >= 0n && value <= maxWritablePermission
|
|
645
|
+
|
|
646
|
+
function decodeRole(value: unknown, guildId: string): GuildRole | undefined {
|
|
647
|
+
if (
|
|
648
|
+
!record(value) ||
|
|
649
|
+
!identifier(value.id) ||
|
|
650
|
+
typeof value.name !== "string" ||
|
|
651
|
+
!nonNegativeInt32(value.color) ||
|
|
652
|
+
!nonNegativeInt32(value.position) ||
|
|
653
|
+
typeof value.permissions !== "string" ||
|
|
654
|
+
!/^(0|[1-9][0-9]{0,19})$/.test(value.permissions) ||
|
|
655
|
+
!unsignedPermission(BigInt(value.permissions)) ||
|
|
656
|
+
typeof value.hoist !== "boolean" ||
|
|
657
|
+
typeof value.mentionable !== "boolean" ||
|
|
658
|
+
(value.hoist_position !== undefined && value.hoist_position !== null && !int32(value.hoist_position)) ||
|
|
659
|
+
!nullableText(value.unicode_emoji)
|
|
660
|
+
)
|
|
661
|
+
return undefined
|
|
662
|
+
return Object.freeze({
|
|
663
|
+
guildId,
|
|
664
|
+
id: value.id,
|
|
665
|
+
name: value.name,
|
|
666
|
+
color: value.color,
|
|
667
|
+
position: value.position,
|
|
668
|
+
permissions: BigInt(value.permissions),
|
|
669
|
+
hoist: value.hoist,
|
|
670
|
+
mentionable: value.mentionable,
|
|
671
|
+
...(value.hoist_position === undefined ? {} : { hoistPosition: value.hoist_position as number | null }),
|
|
672
|
+
...(value.unicode_emoji === undefined ? {} : { unicodeEmoji: value.unicode_emoji as string | null }),
|
|
673
|
+
})
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
export function decodeRoles(value: unknown, guildId: string): readonly GuildRole[] | undefined {
|
|
677
|
+
if (!Array.isArray(value)) return undefined
|
|
678
|
+
const roles: GuildRole[] = []
|
|
679
|
+
const ids = new Set<string>()
|
|
680
|
+
for (const item of value) {
|
|
681
|
+
const role = decodeRole(item, guildId)
|
|
682
|
+
if (!role || ids.has(role.id)) return undefined
|
|
683
|
+
ids.add(role.id)
|
|
684
|
+
roles.push(role)
|
|
685
|
+
}
|
|
686
|
+
return Object.freeze(roles)
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
export function roleList(guildId: string): GuildValidationResult<readonly GuildRole[]> {
|
|
690
|
+
if (!identifier(guildId)) return inputValidationFailure("guildId", "format", "Guild IDs must be decimal strings")
|
|
691
|
+
return {
|
|
692
|
+
guildId,
|
|
693
|
+
bucket: "guild:role:list",
|
|
694
|
+
cache: { selection: { kind: "roles", guildId }, replace: true },
|
|
695
|
+
path: `/guilds/${guildId}/roles`,
|
|
696
|
+
method: "GET",
|
|
697
|
+
status: 200,
|
|
698
|
+
decode: (value) => decodeRoles(value, guildId),
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
function roleBody(input: RoleCreate | RoleEdit, create: boolean): string | InputValidationFailure {
|
|
703
|
+
if (!record(input)) return inputValidationFailure("input", "type", "Role input must be an object")
|
|
704
|
+
const keys = create
|
|
705
|
+
? ["name", "color", "permissions"]
|
|
706
|
+
: ["name", "color", "permissions", "hoist", "hoistPosition", "mentionable"]
|
|
707
|
+
const unsupported = unsupportedKeyFailure(input, keys, "input", "the role input")
|
|
708
|
+
if (unsupported) return unsupported
|
|
709
|
+
const { name, color, permissions, hoist, hoistPosition, mentionable } = input
|
|
710
|
+
if (create && name === undefined) return inputValidationFailure("name", "required", "Role name is required")
|
|
711
|
+
if (name !== undefined && !text(name, 1, 100))
|
|
712
|
+
return inputValidationFailure(
|
|
713
|
+
"name",
|
|
714
|
+
"length",
|
|
715
|
+
"Role name must contain 1 through 100 UTF-16 code units after Fluxer's normalization",
|
|
716
|
+
)
|
|
717
|
+
if (color !== undefined && (!int32(color) || color < 0 || color > 0xffffff))
|
|
718
|
+
return inputValidationFailure("color", "range", "Role color must be an integer from 0 through 16,777,215")
|
|
719
|
+
if (permissions !== undefined && !writablePermission(permissions))
|
|
720
|
+
return inputValidationFailure(
|
|
721
|
+
"permissions",
|
|
722
|
+
"range",
|
|
723
|
+
"Role permissions must be a bigint from 0 through 9,223,372,036,854,775,807",
|
|
724
|
+
)
|
|
725
|
+
if (hoist !== undefined && typeof hoist !== "boolean")
|
|
726
|
+
return inputValidationFailure("hoist", "type", "Role hoist must be a boolean")
|
|
727
|
+
if (mentionable !== undefined && typeof mentionable !== "boolean")
|
|
728
|
+
return inputValidationFailure("mentionable", "type", "Role mentionable must be a boolean")
|
|
729
|
+
if (hoistPosition !== undefined && hoistPosition !== null && !int32(hoistPosition))
|
|
730
|
+
return inputValidationFailure(
|
|
731
|
+
"hoistPosition",
|
|
732
|
+
"range",
|
|
733
|
+
"Role hoist position must be null or an integer from -2,147,483,648 through 2,147,483,647",
|
|
734
|
+
)
|
|
735
|
+
const body = {
|
|
736
|
+
name,
|
|
737
|
+
color: create ? (color ?? 0) : color,
|
|
738
|
+
permissions: create ? (permissions ?? 0n).toString() : permissions?.toString(),
|
|
739
|
+
hoist,
|
|
740
|
+
hoist_position: hoistPosition,
|
|
741
|
+
mentionable,
|
|
742
|
+
}
|
|
743
|
+
const json = JSON.stringify(body)
|
|
744
|
+
return json === "{}" ? inputValidationFailure("input", "required", "Role edit must contain a change") : json
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
export function roleCreate(guildId: string, input: RoleCreate): GuildValidationResult<GuildRole> {
|
|
748
|
+
if (!identifier(guildId)) return inputValidationFailure("guildId", "format", "Guild IDs must be decimal strings")
|
|
749
|
+
const json = roleBody(input, true)
|
|
750
|
+
if (json instanceof InputValidationFailure) return json
|
|
751
|
+
return {
|
|
752
|
+
guildId,
|
|
753
|
+
bucket: "guild:role:create",
|
|
754
|
+
audited: true,
|
|
755
|
+
cache: { selection: { kind: "roles", guildId }, mutation: true },
|
|
756
|
+
path: `/guilds/${guildId}/roles`,
|
|
757
|
+
method: "POST",
|
|
758
|
+
status: 200,
|
|
759
|
+
json,
|
|
760
|
+
...(input.permissions === undefined ? {} : { features: ["view_channel_members_permission"] }),
|
|
761
|
+
decode: (value) => {
|
|
762
|
+
const role = decodeRole(value, guildId)
|
|
763
|
+
return role?.id !== guildId ? role : undefined
|
|
764
|
+
},
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
export function roleEdit(target: RoleReference, input: RoleEdit): GuildValidationResult<GuildRole> {
|
|
769
|
+
if (!record(target)) return inputValidationFailure("target", "type", "Role targets must be objects")
|
|
770
|
+
if (!identifier(target.guildId))
|
|
771
|
+
return inputValidationFailure("target.guildId", "format", "Guild IDs must be decimal strings")
|
|
772
|
+
if (!identifier(target.id)) return inputValidationFailure("target.id", "format", "Role IDs must be decimal strings")
|
|
773
|
+
const { guildId, id } = target
|
|
774
|
+
const json = roleBody(input, false)
|
|
775
|
+
if (json instanceof InputValidationFailure) return json
|
|
776
|
+
if (
|
|
777
|
+
id === guildId &&
|
|
778
|
+
(input.name !== undefined ||
|
|
779
|
+
input.hoist !== undefined ||
|
|
780
|
+
input.hoistPosition !== undefined ||
|
|
781
|
+
input.mentionable !== undefined)
|
|
782
|
+
)
|
|
783
|
+
return inputValidationFailure(
|
|
784
|
+
"input",
|
|
785
|
+
"relationship",
|
|
786
|
+
"The community's default role supports only color and permissions edits",
|
|
787
|
+
)
|
|
788
|
+
return {
|
|
789
|
+
guildId,
|
|
790
|
+
bucket: "guild:role:update",
|
|
791
|
+
audited: true,
|
|
792
|
+
cache: {
|
|
793
|
+
selection: { kind: "roles", guildId, ...(input.hoistPosition === undefined ? { id } : {}) },
|
|
794
|
+
mutation: true,
|
|
795
|
+
},
|
|
796
|
+
path: `/guilds/${guildId}/roles/${id}`,
|
|
797
|
+
method: "PATCH",
|
|
798
|
+
status: 200,
|
|
799
|
+
json,
|
|
800
|
+
...(input.permissions === undefined ? {} : { features: ["view_channel_members_permission"] }),
|
|
801
|
+
decode: (value) => {
|
|
802
|
+
const role = decodeRole(value, guildId)
|
|
803
|
+
return role?.id === id ? role : undefined
|
|
804
|
+
},
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
export function roleDelete(target: RoleReference): GuildValidationResult<void> {
|
|
809
|
+
if (!record(target)) return inputValidationFailure("target", "type", "Role targets must be objects")
|
|
810
|
+
if (!identifier(target.guildId))
|
|
811
|
+
return inputValidationFailure("target.guildId", "format", "Guild IDs must be decimal strings")
|
|
812
|
+
if (!identifier(target.id)) return inputValidationFailure("target.id", "format", "Role IDs must be decimal strings")
|
|
813
|
+
if (target.id === target.guildId)
|
|
814
|
+
return inputValidationFailure("target.id", "relationship", "The community's default role cannot be deleted")
|
|
815
|
+
return {
|
|
816
|
+
guildId: target.guildId,
|
|
817
|
+
bucket: "guild:role:delete",
|
|
818
|
+
audited: true,
|
|
819
|
+
cache: { selection: { kind: "roles", guildId: target.guildId }, mutation: true, members: true },
|
|
820
|
+
path: `/guilds/${target.guildId}/roles/${target.id}`,
|
|
821
|
+
method: "DELETE",
|
|
822
|
+
status: 204,
|
|
823
|
+
decode: () => undefined,
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
export function roleReorder(guildId: string, positions: readonly RolePosition[]): GuildValidationResult<void> {
|
|
828
|
+
if (!identifier(guildId)) return inputValidationFailure("guildId", "format", "Guild IDs must be decimal strings")
|
|
829
|
+
if (!Array.isArray(positions)) return inputValidationFailure("positions", "type", "Role positions must be an array")
|
|
830
|
+
if (positions.length === 0)
|
|
831
|
+
return inputValidationFailure("positions", "length", "Role positions must contain at least one entry")
|
|
832
|
+
const ids = new Set<string>()
|
|
833
|
+
const updates: RolePosition[] = []
|
|
834
|
+
let bytes = 2
|
|
835
|
+
for (const item of positions) {
|
|
836
|
+
if (!record(item)) return inputValidationFailure("positions[]", "type", "Role position entries must be objects")
|
|
837
|
+
const unsupported = unsupportedKeyFailure(item, ["id", "position"], "positions[]", "a role position entry")
|
|
838
|
+
if (unsupported) return unsupported
|
|
839
|
+
if (!identifier(item.id))
|
|
840
|
+
return inputValidationFailure("positions[].id", "format", "Role IDs must be decimal strings")
|
|
841
|
+
if (item.id === guildId)
|
|
842
|
+
return inputValidationFailure(
|
|
843
|
+
"positions[].id",
|
|
844
|
+
"relationship",
|
|
845
|
+
"The community's default role cannot be reordered",
|
|
846
|
+
)
|
|
847
|
+
if (ids.has(item.id))
|
|
848
|
+
return inputValidationFailure("positions[].id", "unique", "Role position IDs must be unique")
|
|
849
|
+
if (typeof item.position !== "number" || !Number.isSafeInteger(item.position) || item.position < 0)
|
|
850
|
+
return inputValidationFailure(
|
|
851
|
+
"positions[].position",
|
|
852
|
+
"range",
|
|
853
|
+
"Role positions must be nonnegative safe integers",
|
|
854
|
+
)
|
|
855
|
+
const copy = { id: item.id, position: item.position }
|
|
856
|
+
bytes += Buffer.byteLength(JSON.stringify(copy)) + (updates.length ? 1 : 0)
|
|
857
|
+
if (bytes > 4_194_304)
|
|
858
|
+
return inputValidationFailure("positions", "size", "Role positions must not exceed 4,194,304 encoded bytes")
|
|
859
|
+
ids.add(item.id)
|
|
860
|
+
updates.push(copy)
|
|
861
|
+
}
|
|
862
|
+
return {
|
|
863
|
+
guildId,
|
|
864
|
+
bucket: "guild:role:positions",
|
|
865
|
+
audited: true,
|
|
866
|
+
cache: { selection: { kind: "roles", guildId }, mutation: true },
|
|
867
|
+
path: `/guilds/${guildId}/roles`,
|
|
868
|
+
method: "PATCH",
|
|
869
|
+
status: 204,
|
|
870
|
+
json: JSON.stringify(updates),
|
|
871
|
+
decode: () => undefined,
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
export function roleSetHoistPositions(
|
|
876
|
+
guildId: string,
|
|
877
|
+
positions: readonly RoleHoistPosition[],
|
|
878
|
+
): GuildValidationResult<void> {
|
|
879
|
+
if (!identifier(guildId)) return inputValidationFailure("guildId", "format", "Guild IDs must be decimal strings")
|
|
880
|
+
if (!Array.isArray(positions))
|
|
881
|
+
return inputValidationFailure("positions", "type", "Role hoist positions must be an array")
|
|
882
|
+
if (positions.length === 0)
|
|
883
|
+
return inputValidationFailure("positions", "length", "Role hoist positions must contain at least one entry")
|
|
884
|
+
const ids = new Set<string>()
|
|
885
|
+
const updates: { id: string; hoist_position: number }[] = []
|
|
886
|
+
let bytes = 2
|
|
887
|
+
for (const item of positions) {
|
|
888
|
+
if (!record(item))
|
|
889
|
+
return inputValidationFailure("positions[]", "type", "Role hoist position entries must be objects")
|
|
890
|
+
const unsupported = unsupportedKeyFailure(
|
|
891
|
+
item,
|
|
892
|
+
["id", "hoistPosition"],
|
|
893
|
+
"positions[]",
|
|
894
|
+
"a role hoist position entry",
|
|
895
|
+
)
|
|
896
|
+
if (unsupported) return unsupported
|
|
897
|
+
if (!identifier(item.id))
|
|
898
|
+
return inputValidationFailure("positions[].id", "format", "Role IDs must be decimal strings")
|
|
899
|
+
if (item.id === guildId)
|
|
900
|
+
return inputValidationFailure(
|
|
901
|
+
"positions[].id",
|
|
902
|
+
"relationship",
|
|
903
|
+
"The community's default role cannot be hoisted",
|
|
904
|
+
)
|
|
905
|
+
if (ids.has(item.id))
|
|
906
|
+
return inputValidationFailure("positions[].id", "unique", "Role hoist position IDs must be unique")
|
|
907
|
+
if (!int32(item.hoistPosition))
|
|
908
|
+
return inputValidationFailure(
|
|
909
|
+
"positions[].hoistPosition",
|
|
910
|
+
"range",
|
|
911
|
+
"Role hoist positions must be integers from -2,147,483,648 through 2,147,483,647",
|
|
912
|
+
)
|
|
913
|
+
const copy = { id: item.id, hoist_position: item.hoistPosition }
|
|
914
|
+
bytes += Buffer.byteLength(JSON.stringify(copy)) + (updates.length ? 1 : 0)
|
|
915
|
+
if (bytes > 4_194_304)
|
|
916
|
+
return inputValidationFailure(
|
|
917
|
+
"positions",
|
|
918
|
+
"size",
|
|
919
|
+
"Role hoist positions must not exceed 4,194,304 encoded bytes",
|
|
920
|
+
)
|
|
921
|
+
ids.add(item.id)
|
|
922
|
+
updates.push(copy)
|
|
923
|
+
}
|
|
924
|
+
return {
|
|
925
|
+
guildId,
|
|
926
|
+
bucket: "guild:role:hoist-positions",
|
|
927
|
+
audited: true,
|
|
928
|
+
cache: { selection: { kind: "roles", guildId }, mutation: true },
|
|
929
|
+
path: `/guilds/${guildId}/roles/hoist-positions`,
|
|
930
|
+
method: "PATCH",
|
|
931
|
+
status: 204,
|
|
932
|
+
json: JSON.stringify(updates),
|
|
933
|
+
decode: () => undefined,
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
export function roleResetHoistPositions(guildId: string): GuildValidationResult<void> {
|
|
938
|
+
if (!identifier(guildId)) return inputValidationFailure("guildId", "format", "Guild IDs must be decimal strings")
|
|
939
|
+
return {
|
|
940
|
+
guildId,
|
|
941
|
+
bucket: "guild:role:hoist-positions",
|
|
942
|
+
audited: true,
|
|
943
|
+
cache: { selection: { kind: "roles", guildId }, mutation: true },
|
|
944
|
+
path: `/guilds/${guildId}/roles/hoist-positions`,
|
|
945
|
+
method: "DELETE",
|
|
946
|
+
status: 204,
|
|
947
|
+
decode: () => undefined,
|
|
948
|
+
}
|
|
949
|
+
}
|