@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,603 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Fluxer bots built with the Effect API without a network, a token or a Fluxer account.
|
|
3
|
+
* Import from @neontechspace/fluxerly/effect/testing in application tests
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { Effect } from "effect"
|
|
8
|
+
* import { createTestClient } from "@neontechspace/fluxerly/effect/testing"
|
|
9
|
+
*
|
|
10
|
+
* export const pingTest = Effect.scoped(
|
|
11
|
+
* Effect.gen(function* () {
|
|
12
|
+
* const test = yield* createTestClient()
|
|
13
|
+
* const replies = test.rest.respond("POST /channels/:id/messages", {
|
|
14
|
+
* body: test.fixtures.message({ content: "Pong!" }),
|
|
15
|
+
* })
|
|
16
|
+
* yield* test.client.on("messageCreate", (message) =>
|
|
17
|
+
* message.content === "!ping" ? test.client.messages.reply(message, { content: "Pong!" }) : Effect.void,
|
|
18
|
+
* )
|
|
19
|
+
* yield* test.ready()
|
|
20
|
+
* yield* test.emit("MESSAGE_CREATE", test.fixtures.message({ content: "!ping" }))
|
|
21
|
+
* // Handlers run after emit returns, so wait for the reply before the Scope closes the client
|
|
22
|
+
* const reply = yield* replies.next()
|
|
23
|
+
* // A message the bot ignores sends nothing, which idle confirms without a fixed sleep
|
|
24
|
+
* yield* test.emit("MESSAGE_CREATE", test.fixtures.message({ content: "hello" }))
|
|
25
|
+
* yield* test.idle()
|
|
26
|
+
* return { reply, requests: replies.requests().length }
|
|
27
|
+
* }),
|
|
28
|
+
* )
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @remarks
|
|
32
|
+
* A test client is a real client from the native createClient whose HTTP and WebSocket traffic goes to an in-memory
|
|
33
|
+
* transport through the transport option. Events therefore pass through the SDK's own decoders, caches, handlers and logging.
|
|
34
|
+
* The fake gateway speaks protocol v1: It sends HELLO, answers Identify with READY and Resume with RESUMED, acknowledges
|
|
35
|
+
* heartbeats and delivers emitted dispatches with increasing sequence numbers. The fake HTTP side serves hosted Fluxer's
|
|
36
|
+
* discovery document, with presigned uploads off so attachments arrive as one multipart request, answers requests from
|
|
37
|
+
* registered responses and records every request without its Authorization header.
|
|
38
|
+
* Message sends and edits without a registered response receive an echoed bot message, and other unmatched requests
|
|
39
|
+
* receive a Fluxer-shaped 404 and a testing.unmatchedRequest Warn record.
|
|
40
|
+
* Waits such as idle and TestRoute.next have no deadline unless timeoutMs is passed, so the test runner's timeout
|
|
41
|
+
* bounds a test that hangs.
|
|
42
|
+
* Log records go to logs() and to any sinks in the logging option instead of the Effect logger.
|
|
43
|
+
* Closing the creating scope stops the client and closes the transport, leaving no sockets, timers or listeners behind,
|
|
44
|
+
* and dies with UnhandledTestFailuresError when a handler or command failed without an onError hook and the test did
|
|
45
|
+
* not read that failure from failures().
|
|
46
|
+
* The fixture builders and their types are shared with @neontechspace/fluxerly/testing
|
|
47
|
+
*
|
|
48
|
+
* @packageDocumentation
|
|
49
|
+
*/
|
|
50
|
+
// Checked first, so an unsupported Node.js version fails with a clear message before any other SDK code runs
|
|
51
|
+
import "./internal/node-version.js"
|
|
52
|
+
import * as Context from "effect/Context"
|
|
53
|
+
import * as Effect from "effect/Effect"
|
|
54
|
+
import * as Layer from "effect/Layer"
|
|
55
|
+
import type * as Scope from "effect/Scope"
|
|
56
|
+
import { FluxerClient } from "./api/effect/service.js"
|
|
57
|
+
import type { ClientCounters, LogRecord } from "./logging.js"
|
|
58
|
+
import { ConfigurationError, type ApplicationError, type ConnectError } from "./errors.js"
|
|
59
|
+
import type { EventName } from "./events.js"
|
|
60
|
+
import type { NativeBatchRequirements } from "./native-commands.js"
|
|
61
|
+
import {
|
|
62
|
+
installNativeTestBot,
|
|
63
|
+
type BotCommandEntries,
|
|
64
|
+
type BotCommandsOptions,
|
|
65
|
+
type BotEventServices,
|
|
66
|
+
type BotEvents,
|
|
67
|
+
} from "./api/effect/bot.js"
|
|
68
|
+
import type { Message, MessageCore, MessageFields, SelectedMessage } from "./messages.js"
|
|
69
|
+
import { createClient, type Client, type ClientOptions } from "./api/effect/client.js"
|
|
70
|
+
import { checkTestOptionKeys, TestHarness, type TestClientWork } from "./internal/testing/harness.js"
|
|
71
|
+
import { botOptionKeys } from "./internal/bot-runner.js"
|
|
72
|
+
import { clientServices } from "./internal/client-registry.js"
|
|
73
|
+
import { TestTimeoutError, type UnhandledTestFailuresError } from "./internal/testing/errors.js"
|
|
74
|
+
import type {
|
|
75
|
+
TestDisconnectOptions,
|
|
76
|
+
TestEmitOptions,
|
|
77
|
+
TestGatewayCommand,
|
|
78
|
+
TestRequest,
|
|
79
|
+
TestRequestMatcher,
|
|
80
|
+
TestResponder,
|
|
81
|
+
TestResponse,
|
|
82
|
+
TestSayOptions,
|
|
83
|
+
TestSettings,
|
|
84
|
+
TestWaitOptions,
|
|
85
|
+
} from "./internal/testing/types.js"
|
|
86
|
+
import type { Fixtures, WireMessage } from "./internal/testing/fixtures.js"
|
|
87
|
+
|
|
88
|
+
export {
|
|
89
|
+
createFixtures,
|
|
90
|
+
fixtures,
|
|
91
|
+
fixtureToken,
|
|
92
|
+
type Fixtures,
|
|
93
|
+
type WireChannel,
|
|
94
|
+
type WireForumChannel,
|
|
95
|
+
type WireGuild,
|
|
96
|
+
type WireGuildCreate,
|
|
97
|
+
type WireGuildCreateOverrides,
|
|
98
|
+
type WireMember,
|
|
99
|
+
type WireMessage,
|
|
100
|
+
type WireOverrides,
|
|
101
|
+
type WireRole,
|
|
102
|
+
type WireThread,
|
|
103
|
+
type WireUser,
|
|
104
|
+
} from "./internal/testing/fixtures.js"
|
|
105
|
+
export type {
|
|
106
|
+
TestRequest,
|
|
107
|
+
TestRequestFile,
|
|
108
|
+
TestRequestMatcher,
|
|
109
|
+
TestResponder,
|
|
110
|
+
TestResponse,
|
|
111
|
+
} from "./internal/testing/types.js"
|
|
112
|
+
export type {
|
|
113
|
+
TestDisconnectOptions,
|
|
114
|
+
TestEmitOptions,
|
|
115
|
+
TestGatewayCommand,
|
|
116
|
+
TestSayOptions,
|
|
117
|
+
TestSettings,
|
|
118
|
+
TestWaitOptions,
|
|
119
|
+
} from "./internal/testing/types.js"
|
|
120
|
+
export { TestTimeoutError, UnhandledTestFailuresError } from "./internal/testing/errors.js"
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* One registered response of a native test client. Registrations are searched newest first, so a later registration
|
|
124
|
+
* overrides an earlier one for the requests both match
|
|
125
|
+
*
|
|
126
|
+
* @category Testing
|
|
127
|
+
*/
|
|
128
|
+
export interface TestRoute {
|
|
129
|
+
/** Requests this registration answered so far, in order */
|
|
130
|
+
requests(): readonly TestRequest[]
|
|
131
|
+
/**
|
|
132
|
+
* Succeed with the next request this registration answers. Each run returns a different request, in order, so a
|
|
133
|
+
* request that arrived before the run is returned at once.
|
|
134
|
+
* Without timeoutMs the wait has no SDK deadline, so the test runner's own timeout ends a test whose request never
|
|
135
|
+
* arrives. With timeoutMs it fails with TestTimeoutError when no request arrives in time.
|
|
136
|
+
* It dies with ClientClosedError when the test client shuts down first, and interruption ends the wait.
|
|
137
|
+
* Invalid options are a defect carrying ConfigurationError
|
|
138
|
+
*/
|
|
139
|
+
next(options?: TestWaitOptions): Effect.Effect<TestRequest, TestTimeoutError>
|
|
140
|
+
/** Stop answering requests. Earlier matching registrations and the default 404 apply again */
|
|
141
|
+
remove(): void
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Register fake Fluxer HTTP API responses for a native test client.
|
|
146
|
+
* Without a registration, message sends (POST /channels/:id/messages) and edits (PATCH /channels/:id/messages/:id)
|
|
147
|
+
* receive an automatic reply: A message by the bot account that echoes the request's content, embeds, flags and tts,
|
|
148
|
+
* with a new fixture ID for a send and the edited ID for an edit. Other unmatched requests receive a Fluxer-shaped 404
|
|
149
|
+
*
|
|
150
|
+
* @category Testing
|
|
151
|
+
*/
|
|
152
|
+
export interface TestRest {
|
|
153
|
+
/**
|
|
154
|
+
* Answer matching requests with a fixed response or a handler's response until the registration is removed.
|
|
155
|
+
* The newest matching registration wins, including over the automatic message replies.
|
|
156
|
+
* Invalid matchers or responses throw ConfigurationError
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```ts
|
|
160
|
+
* import { createTestClient } from "@neontechspace/fluxerly/effect/testing"
|
|
161
|
+
* import { Effect } from "effect"
|
|
162
|
+
*
|
|
163
|
+
* export const respondExample = Effect.gen(function* () {
|
|
164
|
+
* const test = yield* createTestClient()
|
|
165
|
+
* test.rest.respond("GET /users/@me", { body: test.fixtures.botUser() })
|
|
166
|
+
* return test.rest.respond("POST /channels/:id/messages", (request) => ({
|
|
167
|
+
* body: test.fixtures.message({ content: String((request.body as { content?: unknown }).content) }),
|
|
168
|
+
* }))
|
|
169
|
+
* })
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
respond(matcher: TestRequestMatcher, response: TestResponse | TestResponder): TestRoute
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/** Run a test wait as an Effect. A timeout is the typed failure, and misuse or shutdown is a defect */
|
|
176
|
+
function testWait<A>(start: (signal: AbortSignal) => Promise<A>): Effect.Effect<A, TestTimeoutError> {
|
|
177
|
+
// @effect-diagnostics-next-line unknownInEffectCatch:off
|
|
178
|
+
return Effect.tryPromise({ try: start, catch: (error) => error }).pipe(
|
|
179
|
+
Effect.catch((error) => (error instanceof TestTimeoutError ? Effect.fail(error) : Effect.die(error))),
|
|
180
|
+
)
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Options for createTestClient: Every native createClient option except token, transport and instance, plus test settings.
|
|
185
|
+
* The token defaults to the fixture token, the transport is always the in-memory test transport and the instance is
|
|
186
|
+
* always hosted Fluxer served from memory
|
|
187
|
+
*
|
|
188
|
+
* @category Testing
|
|
189
|
+
*/
|
|
190
|
+
export type TestClientOptions<E = never, R = never, F extends MessageFields | undefined = undefined> = Omit<
|
|
191
|
+
ClientOptions<E, R, F>,
|
|
192
|
+
"token" | "transport" | "instance"
|
|
193
|
+
> &
|
|
194
|
+
TestSettings
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* A real native client connected to an in-memory Fluxer, with controls for driving and inspecting it.
|
|
198
|
+
* Control misuse, such as emitting before ready, is a defect carrying ConfigurationError, and use after shutdown is a
|
|
199
|
+
* defect carrying ClientClosedError
|
|
200
|
+
*
|
|
201
|
+
* @category Testing
|
|
202
|
+
*/
|
|
203
|
+
export interface TestClient<M extends MessageCore = Message> {
|
|
204
|
+
/** The client under test, created with the native createClient. Use it exactly as in the application */
|
|
205
|
+
readonly client: Client<M>
|
|
206
|
+
/** A fixture set of its own, whose IDs do not depend on other tests. READY reports its botUser() by default */
|
|
207
|
+
readonly fixtures: Fixtures
|
|
208
|
+
/** Register the HTTP responses the fake Fluxer API returns */
|
|
209
|
+
readonly rest: TestRest
|
|
210
|
+
/**
|
|
211
|
+
* Connect the client to the test gateway and succeed once every shard it owns is READY, like client.connect.
|
|
212
|
+
* Running it again while connected succeeds without opening another socket. With gateway.ignoredEvents set to "auto",
|
|
213
|
+
* register handlers before running this Effect, because Identify chooses filtering from those registrations.
|
|
214
|
+
* It fails with the connect failure, such as ConnectionError when a handler closed the connection
|
|
215
|
+
*/
|
|
216
|
+
ready(): Effect.Effect<void, ConnectError>
|
|
217
|
+
/**
|
|
218
|
+
* Deliver one gateway dispatch to a connected shard when run, with the next sequence number.
|
|
219
|
+
* The type is the Fluxer wire dispatch name, such as MESSAGE_CREATE or GUILD_MEMBER_ADD, and the payload is the wire
|
|
220
|
+
* body in snake_case, so it passes through the SDK's real decoders, cache updates and handlers.
|
|
221
|
+
* Handlers run afterwards on their own schedule. Start client.waitFor before emitting to await delivery.
|
|
222
|
+
* Unknown types are delivered too unless explicitly suppressed, and malformed payloads follow the client's
|
|
223
|
+
* gateway.onMalformedDispatch policy.
|
|
224
|
+
* Dies with ConfigurationError without consuming a sequence when the session's Identify filtering would suppress
|
|
225
|
+
* the dispatch. Suppressed MESSAGE_CREATE still arrives for a direct bot mention, @here or @everyone. Role-only
|
|
226
|
+
* mentions, direct-message delivery and bot authorship alone do not exempt it. Generated MESSAGE_REACTION_ADD_MANY is
|
|
227
|
+
* gated by MESSAGE_REACTION_ADD, not its generated name. Register handlers before ready when gateway.ignoredEvents
|
|
228
|
+
* is "auto", or remove the source type from the explicit list (use [] to disable suppression). Resume keeps the list.
|
|
229
|
+
* READY and RESUMED are reserved for the handshake. Dies with ConfigurationError before ready or for a shard this
|
|
230
|
+
* client does not own
|
|
231
|
+
*/
|
|
232
|
+
emit(type: string, payload: unknown, options?: TestEmitOptions): Effect.Effect<void>
|
|
233
|
+
/**
|
|
234
|
+
* Close one shard's connection from the gateway side with a close code when run. The SDK then recovers as it would
|
|
235
|
+
* against Fluxer, resuming with RESUMED for a resumable code, or ends the connection lifetime for a fatal one.
|
|
236
|
+
* Dies with ConfigurationError when that shard is not connected
|
|
237
|
+
*/
|
|
238
|
+
disconnect(options?: TestDisconnectOptions): Effect.Effect<void>
|
|
239
|
+
/** HTTP requests the client sent so far, in order, excluding the discovery bootstrap and without credentials */
|
|
240
|
+
requests(): readonly TestRequest[]
|
|
241
|
+
/** Gateway commands the client sent so far, in order, with tokens redacted */
|
|
242
|
+
commands(): readonly TestGatewayCommand[]
|
|
243
|
+
/**
|
|
244
|
+
* Log records the client produced so far, in order, at the logging option's level and categories, default Info.
|
|
245
|
+
* The records also reach any sinks in the logging option. Nothing reaches the Effect logger
|
|
246
|
+
*/
|
|
247
|
+
logs(): readonly LogRecord[]
|
|
248
|
+
/** The client's running totals, the same as client.diagnostics().counters */
|
|
249
|
+
counters(): ClientCounters
|
|
250
|
+
/**
|
|
251
|
+
* Error records of failures no application code handled so far, in order, such as an event handler, command or
|
|
252
|
+
* client.schedule task run that failed while no onError hook was registered, whether the error came from the
|
|
253
|
+
* application or from a Fluxer rejection. Assert expected failures here, because shutdown fails for
|
|
254
|
+
* unhandled failures that failures() has not returned.
|
|
255
|
+
* Failures are captured whatever the logging level, categories and deduplication, so each one appears here and
|
|
256
|
+
* counts for shutdown even when logs() leaves it out
|
|
257
|
+
*/
|
|
258
|
+
failures(): readonly LogRecord[]
|
|
259
|
+
/**
|
|
260
|
+
* Succeed once the client has settled: No event handler or command is running or has a received event waiting for
|
|
261
|
+
* it, no client.schedule task run is running, no REST request is queued or waiting for its test response, and no new
|
|
262
|
+
* log record, request or gateway command appeared for a few event loop turns. Run it after emit to assert that the
|
|
263
|
+
* bot did nothing, or before inspecting results.
|
|
264
|
+
* Open waits and collectors do not count as work, and onError hooks are not awaited. A scheduled task waiting for its
|
|
265
|
+
* time does not count either, so advance the clock that drives the client's timers to run it.
|
|
266
|
+
* Without timeoutMs the wait has no SDK deadline, so the test runner's own timeout ends a test whose client never
|
|
267
|
+
* settles. With timeoutMs it fails with TestTimeoutError when the client is still busy after it.
|
|
268
|
+
* It dies with ClientClosedError after shutdown. Invalid options are a defect carrying ConfigurationError.
|
|
269
|
+
* The wait's own timers, including timeoutMs, stay real when a test fakes timers.
|
|
270
|
+
* The SDK runs on setImmediate, so fake timers must leave it real, otherwise idle dies with ConfigurationError
|
|
271
|
+
* instead of settling while no handler can run
|
|
272
|
+
*/
|
|
273
|
+
idle(options?: TestWaitOptions): Effect.Effect<void, TestTimeoutError>
|
|
274
|
+
/**
|
|
275
|
+
* Shut the client down, then close the test transport. It fails with UnhandledTestFailuresError when application
|
|
276
|
+
* code failed without a handler and failures() did not return that failure, so a broken handler fails the test.
|
|
277
|
+
* Each failure is reported once, so running it again succeeds.
|
|
278
|
+
* Closing the creating scope does the same, and dies with UnhandledTestFailuresError for failures not reported yet
|
|
279
|
+
*/
|
|
280
|
+
shutdown(): Effect.Effect<void, UnhandledTestFailuresError>
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Create a real native client wired to an in-memory Fluxer for application tests, owned by the caller's Scope.
|
|
285
|
+
* Creation opens no connection and starts no timers. Run ready to connect. Closing the scope shuts the client down
|
|
286
|
+
* and closes the test transport. The gateway enforces gateway.ignoredEvents, so register handlers before ready when
|
|
287
|
+
* automatic filtering is enabled
|
|
288
|
+
*
|
|
289
|
+
* @remarks
|
|
290
|
+
* Invalid options are a defect carrying ConfigurationError, as with createClient, and supplying transport or instance
|
|
291
|
+
* is too, because the test transport owns both. The hint for a misspelled key suggests the closest key a test client
|
|
292
|
+
* accepts
|
|
293
|
+
*
|
|
294
|
+
* @example
|
|
295
|
+
* ```ts
|
|
296
|
+
* import { Effect, Fiber } from "effect"
|
|
297
|
+
* import { createTestClient } from "@neontechspace/fluxerly/effect/testing"
|
|
298
|
+
*
|
|
299
|
+
* export const greetingTest = Effect.scoped(
|
|
300
|
+
* Effect.gen(function* () {
|
|
301
|
+
* const test = yield* createTestClient({ cache: { members: true } })
|
|
302
|
+
* yield* test.ready()
|
|
303
|
+
* const joined = yield* Effect.forkScoped(test.client.waitFor("guildMemberAdd"))
|
|
304
|
+
* yield* Effect.yieldNow
|
|
305
|
+
* yield* test.emit("GUILD_MEMBER_ADD", test.fixtures.member())
|
|
306
|
+
* return yield* Fiber.join(joined)
|
|
307
|
+
* }),
|
|
308
|
+
* )
|
|
309
|
+
* ```
|
|
310
|
+
*
|
|
311
|
+
* @category Testing
|
|
312
|
+
*/
|
|
313
|
+
export function createTestClient<E = never, R = never, const F extends MessageFields | undefined = undefined>(
|
|
314
|
+
options: TestClientOptions<E, R, F> = {} as TestClientOptions<E, R, F>,
|
|
315
|
+
): Effect.Effect<TestClient<SelectedMessage<F>>, never, Scope.Scope | R> {
|
|
316
|
+
return openTestClient(options).pipe(Effect.map(({ test }) => test))
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/** The client's work in progress that idle and say wait for, including scheduled task runs and queued handler events */
|
|
320
|
+
function clientWork(client: { diagnostics(): TestClientWork["diagnostics"] }): () => TestClientWork {
|
|
321
|
+
return () => {
|
|
322
|
+
const services = clientServices(client)
|
|
323
|
+
const handlers = services?.events.drainState()
|
|
324
|
+
return {
|
|
325
|
+
diagnostics: client.diagnostics(),
|
|
326
|
+
runningTasks: services?.tasks.running ?? 0,
|
|
327
|
+
pendingHandlers: handlers === undefined ? 0 : handlers.running + handlers.waiting,
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/** Create a native test client together with the harness that createTestBot also drives */
|
|
333
|
+
function openTestClient<E, R, F extends MessageFields | undefined>(
|
|
334
|
+
options: TestClientOptions<E, R, F>,
|
|
335
|
+
): Effect.Effect<
|
|
336
|
+
{ readonly test: TestClient<SelectedMessage<F>>; readonly harness: TestHarness },
|
|
337
|
+
never,
|
|
338
|
+
Scope.Scope | R
|
|
339
|
+
> {
|
|
340
|
+
return Effect.gen(function* () {
|
|
341
|
+
const harness = yield* Effect.sync(() => new TestHarness(options))
|
|
342
|
+
// Added before the client, so the scope closes the transport only after the client's own shutdown finalizer.
|
|
343
|
+
// A failure no application code handled then fails the scope, so a broken handler fails the test
|
|
344
|
+
yield* Effect.addFinalizer(() =>
|
|
345
|
+
Effect.sync(() => {
|
|
346
|
+
harness.close()
|
|
347
|
+
harness.checkFailures()
|
|
348
|
+
}),
|
|
349
|
+
)
|
|
350
|
+
const client = yield* createClient<E, R, F>(harness.clientOptions(options) as ClientOptions<E, R, F>)
|
|
351
|
+
clientServices(client)!.logging.errorTap = harness.captureError
|
|
352
|
+
const test: TestClient<SelectedMessage<F>> = Object.freeze({
|
|
353
|
+
client,
|
|
354
|
+
fixtures: harness.fixtures,
|
|
355
|
+
rest: Object.freeze({
|
|
356
|
+
respond: (matcher: TestRequestMatcher, response: TestResponse | TestResponder): TestRoute => {
|
|
357
|
+
const route = harness.http.respond(matcher, response)
|
|
358
|
+
return Object.freeze({
|
|
359
|
+
requests: () => route.requests(),
|
|
360
|
+
next: (options?: TestWaitOptions) => testWait((signal) => route.next(options, signal)),
|
|
361
|
+
remove: () => route.remove(),
|
|
362
|
+
})
|
|
363
|
+
},
|
|
364
|
+
}),
|
|
365
|
+
ready: () => client.connect(),
|
|
366
|
+
emit: (type: string, payload: unknown, options?: TestEmitOptions) =>
|
|
367
|
+
Effect.sync(() => harness.gateway.emit(type, payload, options)),
|
|
368
|
+
disconnect: (options?: TestDisconnectOptions) => Effect.sync(() => harness.gateway.disconnect(options)),
|
|
369
|
+
requests: () => harness.http.requests(),
|
|
370
|
+
commands: () => harness.gateway.commands(),
|
|
371
|
+
logs: () => harness.logs(),
|
|
372
|
+
failures: () => harness.failures(),
|
|
373
|
+
idle: (options?: TestWaitOptions) =>
|
|
374
|
+
testWait((signal) => harness.idle(clientWork(client), options, signal)),
|
|
375
|
+
counters: () => client.diagnostics().counters,
|
|
376
|
+
shutdown: () =>
|
|
377
|
+
client.shutdown().pipe(
|
|
378
|
+
Effect.ensuring(Effect.sync(() => harness.close())),
|
|
379
|
+
Effect.andThen(
|
|
380
|
+
Effect.try({
|
|
381
|
+
try: () => harness.checkFailures(),
|
|
382
|
+
catch: (error) => error as UnhandledTestFailuresError,
|
|
383
|
+
}),
|
|
384
|
+
),
|
|
385
|
+
),
|
|
386
|
+
})
|
|
387
|
+
return { test, harness }
|
|
388
|
+
})
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Effect service holding a native test client, for applications whose code reads the client from the FluxerClient
|
|
393
|
+
* service. Build both services with FluxerTestClient.layer(options) and read the controls with `yield* FluxerTestClient`
|
|
394
|
+
*
|
|
395
|
+
* @example
|
|
396
|
+
* ```ts
|
|
397
|
+
* import { Effect } from "effect"
|
|
398
|
+
* import { FluxerClient } from "@neontechspace/fluxerly/effect"
|
|
399
|
+
* import { FluxerTestClient } from "@neontechspace/fluxerly/effect/testing"
|
|
400
|
+
*
|
|
401
|
+
* // Application code that depends on the FluxerClient service
|
|
402
|
+
* const registerPing = Effect.gen(function* () {
|
|
403
|
+
* const client = yield* FluxerClient
|
|
404
|
+
* yield* client.on("messageCreate", (message) =>
|
|
405
|
+
* message.content === "!ping" ? client.messages.reply(message, "Pong!") : Effect.void,
|
|
406
|
+
* )
|
|
407
|
+
* })
|
|
408
|
+
*
|
|
409
|
+
* export const pingTest = Effect.gen(function* () {
|
|
410
|
+
* yield* registerPing
|
|
411
|
+
* const test = yield* FluxerTestClient
|
|
412
|
+
* const replies = test.rest.respond("POST /channels/:id/messages", {
|
|
413
|
+
* body: test.fixtures.message({ content: "Pong!" }),
|
|
414
|
+
* })
|
|
415
|
+
* yield* test.ready()
|
|
416
|
+
* yield* test.emit("MESSAGE_CREATE", test.fixtures.message({ content: "!ping" }))
|
|
417
|
+
* return yield* replies.next()
|
|
418
|
+
* }).pipe(Effect.scoped, Effect.provide(FluxerTestClient.layer()))
|
|
419
|
+
* ```
|
|
420
|
+
*
|
|
421
|
+
* @category Testing
|
|
422
|
+
*/
|
|
423
|
+
export class FluxerTestClient extends Context.Service<FluxerTestClient, TestClient>()(
|
|
424
|
+
"@neontechspace/fluxerly/FluxerTestClient",
|
|
425
|
+
) {
|
|
426
|
+
/**
|
|
427
|
+
* Build a test client with createTestClient and provide it twice: Its client as the FluxerClient service, so
|
|
428
|
+
* application code runs unchanged, and the whole test client as the FluxerTestClient service, for the controls.
|
|
429
|
+
* The layer takes the options of createTestClient without messageFields, because FluxerClient holds full messages.
|
|
430
|
+
* The client is created in the layer's Scope without connecting, and closing that Scope shuts it down and closes the
|
|
431
|
+
* test transport. It dies with UnhandledTestFailuresError when a handler or command failed without an onError hook and
|
|
432
|
+
* the test did not read that failure from failures(). Invalid options are a defect carrying ConfigurationError, as
|
|
433
|
+
* with createTestClient. Each build of the layer creates its own test client
|
|
434
|
+
*/
|
|
435
|
+
static layer<E = never, R = never>(
|
|
436
|
+
options?: Omit<TestClientOptions<E, R>, "messageFields">,
|
|
437
|
+
): Layer.Layer<FluxerTestClient | FluxerClient, never, R> {
|
|
438
|
+
return Layer.effectContext(
|
|
439
|
+
createTestClient<E, R>(options as TestClientOptions<E, R>).pipe(
|
|
440
|
+
Effect.map((test) => Context.make(FluxerTestClient, test).pipe(Context.add(FluxerClient, test.client))),
|
|
441
|
+
),
|
|
442
|
+
)
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* A native test client running a bot written for runBot. It is a TestClient whose ready first runs the bot's setup,
|
|
448
|
+
* with say to talk to the bot as a user would
|
|
449
|
+
*
|
|
450
|
+
* @category Testing
|
|
451
|
+
*/
|
|
452
|
+
export interface TestBot<M extends MessageCore = Message> extends Omit<TestClient<M>, "ready"> {
|
|
453
|
+
/**
|
|
454
|
+
* Run the bot's setup Effect once, then connect to the test gateway and succeed once every shard it owns is READY.
|
|
455
|
+
* Running it again runs setup no more and succeeds without opening another socket while connected.
|
|
456
|
+
* A failed setup fails with ApplicationError whose source is "runBot setup", before connecting, and a failed
|
|
457
|
+
* connection fails with its connect failure
|
|
458
|
+
*/
|
|
459
|
+
ready(): Effect.Effect<void, ConnectError | ApplicationError>
|
|
460
|
+
/**
|
|
461
|
+
* Deliver a message with this content from a human user, wait until the bot has settled as idle does, and succeed
|
|
462
|
+
* with the messages the bot sent meanwhile, in send order, or an empty list when it sent nothing. Run ready first.
|
|
463
|
+
* Each entry is a message send (POST /channels/:id/messages) in wire shape, built from the request body with the
|
|
464
|
+
* fields the automatic reply echoes, so it shows what the bot sent even when a rest.respond handler answered.
|
|
465
|
+
* Edits, reactions and other requests are not included, and remain visible through requests().
|
|
466
|
+
* The message comes from the fixture set's default human author in its default channel and community, and
|
|
467
|
+
* options.message replaces any of those wire fields. Like idle, say has no deadline unless options.timeoutMs is
|
|
468
|
+
* set, then fails with TestTimeoutError when the bot is still busy after it, and dies with ClientClosedError after
|
|
469
|
+
* shutdown. It dies with ConfigurationError for content that is not a string, invalid options, before ready and
|
|
470
|
+
* when gateway filtering would suppress the message, as emit does
|
|
471
|
+
*
|
|
472
|
+
* @example
|
|
473
|
+
* ```ts
|
|
474
|
+
* import { Effect } from "effect"
|
|
475
|
+
* import { createTestBot } from "@neontechspace/fluxerly/effect/testing"
|
|
476
|
+
*
|
|
477
|
+
* export const sayTest = Effect.scoped(
|
|
478
|
+
* Effect.gen(function* () {
|
|
479
|
+
* const test = yield* createTestBot({
|
|
480
|
+
* commands: { prefix: "!", commands: { ping: { execute: ({ reply }) => reply("Pong!") } } },
|
|
481
|
+
* })
|
|
482
|
+
* yield* test.ready()
|
|
483
|
+
* const replies = yield* test.say("!ping")
|
|
484
|
+
* return replies.map((message) => message.content)
|
|
485
|
+
* }),
|
|
486
|
+
* )
|
|
487
|
+
* ```
|
|
488
|
+
*/
|
|
489
|
+
say(content: string, options?: TestSayOptions): Effect.Effect<readonly WireMessage[], TestTimeoutError>
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
/**
|
|
493
|
+
* Create a test client that runs a bot written for the native runBot: Its events, ignoreBots setting, commands and setup Effect, with the
|
|
494
|
+
* same handler contexts, delivery defaults and command router as runBot. Pass the bot's own options object: Its
|
|
495
|
+
* signal, processSignals, reportFailure and drainMs settings are ignored, an undefined token uses the fixture token, and
|
|
496
|
+
* transport and instance belong to the test client. Handlers and commands are registered when the Effect runs, and ready runs setup before connecting, as runBot
|
|
497
|
+
* does. The creating Scope cleans the client up, as with createTestClient. Automatic gateway filtering sees the bot's
|
|
498
|
+
* handlers, commands and setup registrations, and emit dies for dispatches that list suppresses
|
|
499
|
+
*
|
|
500
|
+
* @remarks
|
|
501
|
+
* Invalid options die with ConfigurationError, as in runBot, and a commands register callback that throws fails with
|
|
502
|
+
* its ApplicationError. The services that handlers, commands and setup need are required by this Effect.
|
|
503
|
+
* The runBot supervision of a stopped subscription does not apply in tests
|
|
504
|
+
*
|
|
505
|
+
* @example
|
|
506
|
+
* ```ts
|
|
507
|
+
* import { Effect } from "effect"
|
|
508
|
+
* import { createTestBot } from "@neontechspace/fluxerly/effect/testing"
|
|
509
|
+
*
|
|
510
|
+
* export const pingTest = Effect.scoped(
|
|
511
|
+
* Effect.gen(function* () {
|
|
512
|
+
* const test = yield* createTestBot({
|
|
513
|
+
* commands: { prefix: "!", commands: { ping: { execute: ({ reply }) => reply("Pong!") } } },
|
|
514
|
+
* })
|
|
515
|
+
* yield* test.ready()
|
|
516
|
+
* // The test transport answers the reply with an echoed message, so no rest.respond fixture is needed
|
|
517
|
+
* return yield* test.say("!ping")
|
|
518
|
+
* }),
|
|
519
|
+
* )
|
|
520
|
+
* ```
|
|
521
|
+
*
|
|
522
|
+
* @category Testing
|
|
523
|
+
*/
|
|
524
|
+
export function createTestBot<
|
|
525
|
+
const F extends MessageFields | undefined = undefined,
|
|
526
|
+
const Events extends BotEvents<unknown, unknown, SelectedMessage<F>> = BotEvents<
|
|
527
|
+
unknown,
|
|
528
|
+
unknown,
|
|
529
|
+
SelectedMessage<F>
|
|
530
|
+
>,
|
|
531
|
+
const S extends Readonly<Record<string, unknown>> = {},
|
|
532
|
+
const C extends BotCommandEntries<S> = BotCommandEntries<S>,
|
|
533
|
+
RouterServices = never,
|
|
534
|
+
OptionsError = never,
|
|
535
|
+
OptionsServices = never,
|
|
536
|
+
SetupServices = never,
|
|
537
|
+
>(
|
|
538
|
+
options: Omit<TestClientOptions<OptionsError, OptionsServices, F>, "token"> & {
|
|
539
|
+
/** Event handlers, as in runBot */
|
|
540
|
+
readonly events?: Events & Record<Exclude<keyof Events, EventName>, never>
|
|
541
|
+
/** Skip bot-authored messageCreate and messageUpdate events in the handlers, as in runBot. Defaults to true */
|
|
542
|
+
readonly ignoreBots?: boolean
|
|
543
|
+
/** Prefix commands, as in runBot */
|
|
544
|
+
readonly commands?: BotCommandsOptions<SelectedMessage<F>, S, C, RouterServices>
|
|
545
|
+
/** Startup work that ready runs before connecting, as in runBot */
|
|
546
|
+
readonly setup?: (client: Client<SelectedMessage<F>>) => Effect.Effect<unknown, unknown, SetupServices>
|
|
547
|
+
/** Token passed to the client, never sent anywhere. Omit it or pass undefined to use the fixture token */
|
|
548
|
+
readonly token?: string | undefined
|
|
549
|
+
/** Ignored in tests. The creating Scope owns the client's lifetime */
|
|
550
|
+
readonly signal?: unknown
|
|
551
|
+
/** Ignored in tests, which never handle process signals */
|
|
552
|
+
readonly processSignals?: boolean
|
|
553
|
+
/** Ignored in tests, which never set the process exit code */
|
|
554
|
+
readonly reportFailure?: boolean
|
|
555
|
+
/** Ignored in tests. Use client.shutdown({ drainMs }) to test a drain */
|
|
556
|
+
readonly drainMs?: number
|
|
557
|
+
},
|
|
558
|
+
): Effect.Effect<
|
|
559
|
+
TestBot<SelectedMessage<F>>,
|
|
560
|
+
ApplicationError,
|
|
561
|
+
| Scope.Scope
|
|
562
|
+
| Exclude<
|
|
563
|
+
BotEventServices<Events> | NativeBatchRequirements<C> | RouterServices | OptionsServices | SetupServices,
|
|
564
|
+
Scope.Scope
|
|
565
|
+
>
|
|
566
|
+
> {
|
|
567
|
+
return Effect.gen(function* () {
|
|
568
|
+
if (typeof options !== "object" || options === null || Array.isArray(options))
|
|
569
|
+
return yield* Effect.die(new ConfigurationError("configuration", "Bot options must be an object"))
|
|
570
|
+
yield* Effect.sync(() => checkTestOptionKeys(options, botOptionKeys))
|
|
571
|
+
const {
|
|
572
|
+
events,
|
|
573
|
+
ignoreBots,
|
|
574
|
+
commands,
|
|
575
|
+
setup,
|
|
576
|
+
token,
|
|
577
|
+
signal: _signal,
|
|
578
|
+
processSignals: _processSignals,
|
|
579
|
+
reportFailure: _reportFailure,
|
|
580
|
+
drainMs: _drainMs,
|
|
581
|
+
...clientOptions
|
|
582
|
+
} = options
|
|
583
|
+
const { test, harness } = yield* openTestClient({
|
|
584
|
+
...clientOptions,
|
|
585
|
+
...(token === undefined ? {} : { token }),
|
|
586
|
+
} as TestClientOptions<OptionsError, OptionsServices, F>)
|
|
587
|
+
const runSetup = yield* installNativeTestBot(test.client as unknown as Client, {
|
|
588
|
+
events,
|
|
589
|
+
ignoreBots,
|
|
590
|
+
commands,
|
|
591
|
+
setup,
|
|
592
|
+
})
|
|
593
|
+
// Setup runs with the services and Scope of this Effect, as runBot runs it inside its own run
|
|
594
|
+
const context = yield* Effect.context<Scope.Scope>()
|
|
595
|
+
const setupOnce = yield* Effect.cached(runSetup.pipe(Effect.provideContext(context)))
|
|
596
|
+
return Object.freeze({
|
|
597
|
+
...test,
|
|
598
|
+
ready: () => setupOnce.pipe(Effect.andThen(test.ready())),
|
|
599
|
+
say: (content: string, sayOptions?: TestSayOptions) =>
|
|
600
|
+
testWait((signal) => harness.say(clientWork(test.client), content, sayOptions, signal)),
|
|
601
|
+
})
|
|
602
|
+
}) as never
|
|
603
|
+
}
|