dfx 0.126.1 → 1.0.0
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/.babel.cjs.json +11 -0
- package/.babel.mjs.json +10 -0
- package/.envrc +1 -0
- package/.gitmodules +3 -0
- package/.husky/pre-commit +2 -0
- package/.oxlintrc.json +72 -0
- package/.prettierignore +0 -0
- package/.prettierrc.json +5 -0
- package/.tool-versions +1 -0
- package/.vscode/debug.cjs +8 -0
- package/.vscode/launch.json +23 -0
- package/.vscode/settings.json +29 -0
- package/.vscode/tasks.json +44 -0
- package/AGENTS.md +15 -0
- package/CHANGELOG.md +1554 -0
- package/examples/.env.example +5 -0
- package/examples/interactions.ts +79 -0
- package/examples/readme.ts +56 -0
- package/examples/registry.ts +66 -0
- package/flake.lock +27 -0
- package/flake.nix +21 -0
- package/lerna.json +12 -0
- package/package.json +79 -36
- package/pnpm-workspace.yaml +7 -0
- package/scripts/generate-client.sh +10 -0
- package/scripts/worktree-setup.sh +8 -0
- package/src/Cache/memory.ts +5 -5
- package/src/Cache/memoryTTL.ts +11 -7
- package/src/Cache/prelude.ts +10 -8
- package/src/Cache.ts +31 -35
- package/src/DiscordConfig.ts +12 -16
- package/src/DiscordGateway/DiscordWS.ts +58 -32
- package/src/DiscordGateway/Messaging.ts +13 -15
- package/src/DiscordGateway/Shard/StateStore.ts +30 -25
- package/src/DiscordGateway/Shard/heartbeats.ts +25 -28
- package/src/DiscordGateway/Shard/identify.ts +11 -6
- package/src/DiscordGateway/Shard/sendEvents.ts +1 -1
- package/src/DiscordGateway/Shard/utils.ts +1 -1
- package/src/DiscordGateway/Shard.ts +39 -35
- package/src/DiscordGateway/ShardStore.ts +6 -7
- package/src/DiscordGateway/Sharder.ts +31 -29
- package/src/DiscordGateway.ts +15 -14
- package/src/DiscordREST/Generated.ts +660 -341
- package/src/DiscordREST/utils.ts +6 -3
- package/src/DiscordREST.ts +37 -41
- package/src/Helpers/flags.ts +10 -5
- package/src/Helpers/intents.ts +2 -2
- package/src/Helpers/interactions.ts +16 -14
- package/src/Helpers/members.ts +3 -3
- package/src/Helpers/permissions.ts +5 -5
- package/src/Helpers/ui.ts +16 -16
- package/src/Interactions/builder.ts +10 -10
- package/src/Interactions/commandHelper.ts +18 -29
- package/src/Interactions/context.ts +51 -65
- package/src/Interactions/definitions.ts +3 -3
- package/src/Interactions/gateway.ts +33 -45
- package/src/Interactions/handlers.ts +8 -5
- package/src/Interactions/index.ts +5 -5
- package/src/Interactions/utils.ts +6 -6
- package/src/Interactions/webhook.ts +31 -38
- package/src/RateLimit/memory.ts +3 -3
- package/src/RateLimit.ts +18 -15
- package/src/gateway.ts +21 -21
- package/src/index.ts +17 -17
- package/src/types.ts +18 -16
- package/src/utils/Effect.ts +38 -27
- package/src/webhooks.ts +7 -7
- package/test/index.test.ts +5 -0
- package/tsconfig.base.json +12 -6
- package/tsconfig.examples.json +0 -1
- package/vitest.config.ts +22 -0
- package/Cache/driver.d.ts +0 -24
- package/Cache/driver.d.ts.map +0 -1
- package/Cache/driver.js +0 -11
- package/Cache/driver.js.map +0 -1
- package/Cache/memory.d.ts +0 -5
- package/Cache/memory.d.ts.map +0 -1
- package/Cache/memory.js +0 -57
- package/Cache/memory.js.map +0 -1
- package/Cache/memoryTTL.d.ts +0 -23
- package/Cache/memoryTTL.d.ts.map +0 -1
- package/Cache/memoryTTL.js +0 -128
- package/Cache/memoryTTL.js.map +0 -1
- package/Cache/prelude.d.ts +0 -32
- package/Cache/prelude.d.ts.map +0 -1
- package/Cache/prelude.js +0 -143
- package/Cache/prelude.js.map +0 -1
- package/Cache.d.ts +0 -82
- package/Cache.d.ts.map +0 -1
- package/Cache.js +0 -144
- package/Cache.js.map +0 -1
- package/DiscordConfig.d.ts +0 -35
- package/DiscordConfig.d.ts.map +0 -1
- package/DiscordConfig.js +0 -42
- package/DiscordConfig.js.map +0 -1
- package/DiscordGateway/DiscordWS.d.ts +0 -37
- package/DiscordGateway/DiscordWS.d.ts.map +0 -1
- package/DiscordGateway/DiscordWS.js +0 -73
- package/DiscordGateway/DiscordWS.js.map +0 -1
- package/DiscordGateway/Messaging.d.ts +0 -393
- package/DiscordGateway/Messaging.d.ts.map +0 -1
- package/DiscordGateway/Messaging.js +0 -40
- package/DiscordGateway/Messaging.js.map +0 -1
- package/DiscordGateway/Shard/StateStore.d.ts +0 -24
- package/DiscordGateway/Shard/StateStore.d.ts.map +0 -1
- package/DiscordGateway/Shard/StateStore.js +0 -48
- package/DiscordGateway/Shard/StateStore.js.map +0 -1
- package/DiscordGateway/Shard/heartbeats.d.ts +0 -8
- package/DiscordGateway/Shard/heartbeats.d.ts.map +0 -1
- package/DiscordGateway/Shard/heartbeats.js +0 -28
- package/DiscordGateway/Shard/heartbeats.js.map +0 -1
- package/DiscordGateway/Shard/identify.d.ts +0 -12
- package/DiscordGateway/Shard/identify.d.ts.map +0 -1
- package/DiscordGateway/Shard/identify.js +0 -38
- package/DiscordGateway/Shard/identify.js.map +0 -1
- package/DiscordGateway/Shard/sendEvents.d.ts +0 -8
- package/DiscordGateway/Shard/sendEvents.d.ts.map +0 -1
- package/DiscordGateway/Shard/sendEvents.js +0 -39
- package/DiscordGateway/Shard/sendEvents.js.map +0 -1
- package/DiscordGateway/Shard/utils.d.ts +0 -6
- package/DiscordGateway/Shard/utils.d.ts.map +0 -1
- package/DiscordGateway/Shard/utils.js +0 -11
- package/DiscordGateway/Shard/utils.js.map +0 -1
- package/DiscordGateway/Shard.d.ts +0 -28
- package/DiscordGateway/Shard.d.ts.map +0 -1
- package/DiscordGateway/Shard.js +0 -149
- package/DiscordGateway/Shard.js.map +0 -1
- package/DiscordGateway/ShardStore.d.ts +0 -18
- package/DiscordGateway/ShardStore.d.ts.map +0 -1
- package/DiscordGateway/ShardStore.js +0 -31
- package/DiscordGateway/ShardStore.js.map +0 -1
- package/DiscordGateway/Sharder.d.ts +0 -13
- package/DiscordGateway/Sharder.d.ts.map +0 -1
- package/DiscordGateway/Sharder.js +0 -73
- package/DiscordGateway/Sharder.js.map +0 -1
- package/DiscordGateway.d.ts +0 -32
- package/DiscordGateway.d.ts.map +0 -1
- package/DiscordGateway.js +0 -28
- package/DiscordGateway.js.map +0 -1
- package/DiscordREST/Generated.d.ts +0 -5399
- package/DiscordREST/Generated.d.ts.map +0 -1
- package/DiscordREST/Generated.js +0 -2405
- package/DiscordREST/Generated.js.map +0 -1
- package/DiscordREST/utils.d.ts +0 -14
- package/DiscordREST/utils.d.ts.map +0 -1
- package/DiscordREST/utils.js +0 -31
- package/DiscordREST/utils.js.map +0 -1
- package/DiscordREST.d.ts +0 -23
- package/DiscordREST.d.ts.map +0 -1
- package/DiscordREST.js +0 -132
- package/DiscordREST.js.map +0 -1
- package/Helpers/flags.d.ts +0 -28
- package/Helpers/flags.d.ts.map +0 -1
- package/Helpers/flags.js +0 -48
- package/Helpers/flags.js.map +0 -1
- package/Helpers/intents.d.ts +0 -25
- package/Helpers/intents.d.ts.map +0 -1
- package/Helpers/intents.js +0 -34
- package/Helpers/intents.js.map +0 -1
- package/Helpers/interactions.d.ts +0 -116
- package/Helpers/interactions.d.ts.map +0 -1
- package/Helpers/interactions.js +0 -143
- package/Helpers/interactions.js.map +0 -1
- package/Helpers/members.d.ts +0 -10
- package/Helpers/members.d.ts.map +0 -1
- package/Helpers/members.js +0 -17
- package/Helpers/members.js.map +0 -1
- package/Helpers/permissions.d.ts +0 -42
- package/Helpers/permissions.d.ts.map +0 -1
- package/Helpers/permissions.js +0 -97
- package/Helpers/permissions.js.map +0 -1
- package/Helpers/ui.d.ts +0 -105
- package/Helpers/ui.d.ts.map +0 -1
- package/Helpers/ui.js +0 -162
- package/Helpers/ui.js.map +0 -1
- package/Interactions/builder.d.ts +0 -48
- package/Interactions/builder.d.ts.map +0 -1
- package/Interactions/builder.js +0 -64
- package/Interactions/builder.js.map +0 -1
- package/Interactions/commandHelper.d.ts +0 -99
- package/Interactions/commandHelper.d.ts.map +0 -1
- package/Interactions/commandHelper.js +0 -53
- package/Interactions/commandHelper.js.map +0 -1
- package/Interactions/context.d.ts +0 -54
- package/Interactions/context.d.ts.map +0 -1
- package/Interactions/context.js +0 -42
- package/Interactions/context.js.map +0 -1
- package/Interactions/definitions.d.ts +0 -44
- package/Interactions/definitions.d.ts.map +0 -1
- package/Interactions/definitions.js +0 -67
- package/Interactions/definitions.js.map +0 -1
- package/Interactions/error.d.ts +0 -2
- package/Interactions/error.d.ts.map +0 -1
- package/Interactions/error.js +0 -8
- package/Interactions/error.js.map +0 -1
- package/Interactions/gateway.d.ts +0 -21
- package/Interactions/gateway.d.ts.map +0 -1
- package/Interactions/gateway.js +0 -90
- package/Interactions/gateway.js.map +0 -1
- package/Interactions/handlers.d.ts +0 -15
- package/Interactions/handlers.d.ts.map +0 -1
- package/Interactions/handlers.js +0 -72
- package/Interactions/handlers.js.map +0 -1
- package/Interactions/index.d.ts +0 -16
- package/Interactions/index.d.ts.map +0 -1
- package/Interactions/index.js +0 -94
- package/Interactions/index.js.map +0 -1
- package/Interactions/utils.d.ts +0 -61
- package/Interactions/utils.d.ts.map +0 -1
- package/Interactions/utils.js +0 -35
- package/Interactions/utils.js.map +0 -1
- package/Interactions/webhook.d.ts +0 -73
- package/Interactions/webhook.d.ts.map +0 -1
- package/Interactions/webhook.js +0 -89
- package/Interactions/webhook.js.map +0 -1
- package/RateLimit/memory.d.ts +0 -3
- package/RateLimit/memory.d.ts.map +0 -1
- package/RateLimit/memory.js +0 -47
- package/RateLimit/memory.js.map +0 -1
- package/RateLimit/utils.d.ts +0 -3
- package/RateLimit/utils.d.ts.map +0 -1
- package/RateLimit/utils.js +0 -25
- package/RateLimit/utils.js.map +0 -1
- package/RateLimit.d.ts +0 -30
- package/RateLimit.d.ts.map +0 -1
- package/RateLimit.js +0 -35
- package/RateLimit.js.map +0 -1
- package/gateway.d.ts +0 -19
- package/gateway.d.ts.map +0 -1
- package/gateway.js +0 -72
- package/gateway.js.map +0 -1
- package/index.d.ts +0 -18
- package/index.d.ts.map +0 -1
- package/index.js +0 -71
- package/index.js.map +0 -1
- package/mjs/Cache/driver.mjs +0 -3
- package/mjs/Cache/driver.mjs.map +0 -1
- package/mjs/Cache/memory.mjs +0 -48
- package/mjs/Cache/memory.mjs.map +0 -1
- package/mjs/Cache/memoryTTL.mjs +0 -119
- package/mjs/Cache/memoryTTL.mjs.map +0 -1
- package/mjs/Cache/prelude.mjs +0 -131
- package/mjs/Cache/prelude.mjs.map +0 -1
- package/mjs/Cache.mjs +0 -89
- package/mjs/Cache.mjs.map +0 -1
- package/mjs/DiscordConfig.mjs +0 -32
- package/mjs/DiscordConfig.mjs.map +0 -1
- package/mjs/DiscordGateway/DiscordWS.mjs +0 -66
- package/mjs/DiscordGateway/DiscordWS.mjs.map +0 -1
- package/mjs/DiscordGateway/Messaging.mjs +0 -33
- package/mjs/DiscordGateway/Messaging.mjs.map +0 -1
- package/mjs/DiscordGateway/Shard/StateStore.mjs +0 -40
- package/mjs/DiscordGateway/Shard/StateStore.mjs.map +0 -1
- package/mjs/DiscordGateway/Shard/heartbeats.mjs +0 -20
- package/mjs/DiscordGateway/Shard/heartbeats.mjs.map +0 -1
- package/mjs/DiscordGateway/Shard/identify.mjs +0 -30
- package/mjs/DiscordGateway/Shard/identify.mjs.map +0 -1
- package/mjs/DiscordGateway/Shard/sendEvents.mjs +0 -26
- package/mjs/DiscordGateway/Shard/sendEvents.mjs.map +0 -1
- package/mjs/DiscordGateway/Shard/utils.mjs +0 -3
- package/mjs/DiscordGateway/Shard/utils.mjs.map +0 -1
- package/mjs/DiscordGateway/Shard.mjs +0 -142
- package/mjs/DiscordGateway/Shard.mjs.map +0 -1
- package/mjs/DiscordGateway/ShardStore.mjs +0 -24
- package/mjs/DiscordGateway/ShardStore.mjs.map +0 -1
- package/mjs/DiscordGateway/Sharder.mjs +0 -66
- package/mjs/DiscordGateway/Sharder.mjs.map +0 -1
- package/mjs/DiscordGateway.mjs +0 -21
- package/mjs/DiscordGateway.mjs.map +0 -1
- package/mjs/DiscordREST/Generated.mjs +0 -2396
- package/mjs/DiscordREST/Generated.mjs.map +0 -1
- package/mjs/DiscordREST/utils.mjs +0 -20
- package/mjs/DiscordREST/utils.mjs.map +0 -1
- package/mjs/DiscordREST.mjs +0 -124
- package/mjs/DiscordREST.mjs.map +0 -1
- package/mjs/Helpers/flags.mjs +0 -36
- package/mjs/Helpers/flags.mjs.map +0 -1
- package/mjs/Helpers/intents.mjs +0 -27
- package/mjs/Helpers/intents.mjs.map +0 -1
- package/mjs/Helpers/interactions.mjs +0 -115
- package/mjs/Helpers/interactions.mjs.map +0 -1
- package/mjs/Helpers/members.mjs +0 -9
- package/mjs/Helpers/members.mjs.map +0 -1
- package/mjs/Helpers/permissions.mjs +0 -84
- package/mjs/Helpers/permissions.mjs.map +0 -1
- package/mjs/Helpers/ui.mjs +0 -137
- package/mjs/Helpers/ui.mjs.map +0 -1
- package/mjs/Interactions/builder.mjs +0 -56
- package/mjs/Interactions/builder.mjs.map +0 -1
- package/mjs/Interactions/commandHelper.mjs +0 -45
- package/mjs/Interactions/commandHelper.mjs.map +0 -1
- package/mjs/Interactions/context.mjs +0 -29
- package/mjs/Interactions/context.mjs.map +0 -1
- package/mjs/Interactions/definitions.mjs +0 -51
- package/mjs/Interactions/definitions.mjs.map +0 -1
- package/mjs/Interactions/error.mjs +0 -2
- package/mjs/Interactions/error.mjs.map +0 -1
- package/mjs/Interactions/gateway.mjs +0 -81
- package/mjs/Interactions/gateway.mjs.map +0 -1
- package/mjs/Interactions/handlers.mjs +0 -63
- package/mjs/Interactions/handlers.mjs.map +0 -1
- package/mjs/Interactions/index.mjs +0 -11
- package/mjs/Interactions/index.mjs.map +0 -1
- package/mjs/Interactions/utils.mjs +0 -26
- package/mjs/Interactions/utils.mjs.map +0 -1
- package/mjs/Interactions/webhook.mjs +0 -76
- package/mjs/Interactions/webhook.mjs.map +0 -1
- package/mjs/RateLimit/memory.mjs +0 -39
- package/mjs/RateLimit/memory.mjs.map +0 -1
- package/mjs/RateLimit/utils.mjs +0 -18
- package/mjs/RateLimit/utils.mjs.map +0 -1
- package/mjs/RateLimit.mjs +0 -28
- package/mjs/RateLimit.mjs.map +0 -1
- package/mjs/gateway.mjs +0 -19
- package/mjs/gateway.mjs.map +0 -1
- package/mjs/index.mjs +0 -18
- package/mjs/index.mjs.map +0 -1
- package/mjs/types.mjs +0 -356
- package/mjs/types.mjs.map +0 -1
- package/mjs/utils/Effect.mjs +0 -18
- package/mjs/utils/Effect.mjs.map +0 -1
- package/mjs/version.mjs +0 -2
- package/mjs/version.mjs.map +0 -1
- package/mjs/webhooks.mjs +0 -6
- package/mjs/webhooks.mjs.map +0 -1
- package/src/version.ts +0 -1
- package/types.d.ts +0 -2457
- package/types.d.ts.map +0 -1
- package/types.js +0 -408
- package/types.js.map +0 -1
- package/utils/Effect.d.ts +0 -5
- package/utils/Effect.d.ts.map +0 -1
- package/utils/Effect.js +0 -27
- package/utils/Effect.js.map +0 -1
- package/version.d.ts +0 -2
- package/version.d.ts.map +0 -1
- package/version.js +0 -8
- package/version.js.map +0 -1
- package/webhooks.d.ts +0 -8
- package/webhooks.d.ts.map +0 -1
- package/webhooks.js +0 -55
- package/webhooks.js.map +0 -1
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export { response } from "dfx/Helpers/interactions";
|
|
2
|
-
export * from "dfx/Interactions/builder";
|
|
3
|
-
export * from "dfx/Interactions/context";
|
|
4
|
-
export { autocomplete, global, guild, messageComponent, modalSubmit } from "dfx/Interactions/definitions";
|
|
5
|
-
// Filters
|
|
6
|
-
export const id = query => customId => query === customId;
|
|
7
|
-
export const idStartsWith = query => customId => customId.startsWith(query);
|
|
8
|
-
export const idRegex = query => customId => query.test(customId);
|
|
9
|
-
export const option = (command, optionName) => (data, focusedOption) => data.name === command && focusedOption.name === optionName;
|
|
10
|
-
export const optionOnly = optionName => (_, focusedOption) => focusedOption.name === optionName;
|
|
11
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["response","autocomplete","global","guild","messageComponent","modalSubmit","id","query","customId","idStartsWith","startsWith","idRegex","test","option","command","optionName","data","focusedOption","name","optionOnly","_"],"sources":["../../src/Interactions/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAQ,QAAQ,0BAA0B;AACnD,cAAc,0BAA0B;AACxC,cAAc,0BAA0B;AACxC,SACEC,YAAY,EACZC,MAAM,EACNC,KAAK,EAELC,gBAAgB,EAChBC,WAAW,QACN,8BAA8B;AAErC;AACA,OAAO,MAAMC,EAAE,GAAIC,KAAa,IAAMC,QAAgB,IAAKD,KAAK,KAAKC,QAAQ;AAE7E,OAAO,MAAMC,YAAY,GAAIF,KAAa,IAAMC,QAAgB,IAC9DA,QAAQ,CAACE,UAAU,CAACH,KAAK,CAAC;AAE5B,OAAO,MAAMI,OAAO,GAAIJ,KAAa,IAAMC,QAAgB,IACzDD,KAAK,CAACK,IAAI,CAACJ,QAAQ,CAAC;AAEtB,OAAO,MAAMK,MAAM,GACjBA,CAACC,OAAe,EAAEC,UAAkB,KACpC,CAACC,IAA+B,EAAEC,aAAwC,KACxED,IAAI,CAACE,IAAI,KAAKJ,OAAO,IAAIG,aAAa,CAACC,IAAI,KAAKH,UAAU;AAE9D,OAAO,MAAMI,UAAU,GACpBJ,UAAkB,IACnB,CAACK,CAAU,EAAEH,aAAwC,KACnDA,aAAa,CAACC,IAAI,KAAKH,UAAU","ignoreList":[]}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import * as Chunk from "effect/Chunk";
|
|
2
|
-
import * as Effect from "effect/Effect";
|
|
3
|
-
import * as Array from "effect/Array";
|
|
4
|
-
import { CommandHelper } from "dfx/Interactions/commandHelper";
|
|
5
|
-
export const flattenDefinitions = (definitions, handleResponse) => Array.map(Chunk.toReadonlyArray(definitions), ([definition, transform]) => ({
|
|
6
|
-
...definition,
|
|
7
|
-
handle: Effect.isEffect(definition.handle) ? i => Effect.scoped(transform(Effect.flatMap(definition.handle, _ => handleResponse(i, _)))) : i => Effect.scoped(transform(Effect.flatMap(definition.handle(new CommandHelper(i)), _ => handleResponse(i, _))))
|
|
8
|
-
}));
|
|
9
|
-
export const splitDefinitions = definitions => {
|
|
10
|
-
const grouped = Array.reduce(definitions, {
|
|
11
|
-
Autocomplete: [],
|
|
12
|
-
GlobalApplicationCommand: [],
|
|
13
|
-
GuildApplicationCommand: [],
|
|
14
|
-
MessageComponent: [],
|
|
15
|
-
ModalSubmit: [],
|
|
16
|
-
Commands: {}
|
|
17
|
-
}, (acc, d) => {
|
|
18
|
-
acc[d._tag].push(d);
|
|
19
|
-
if (d._tag === "GlobalApplicationCommand" || d._tag === "GuildApplicationCommand") {
|
|
20
|
-
acc.Commands[d.command.name] = d;
|
|
21
|
-
}
|
|
22
|
-
return acc;
|
|
23
|
-
});
|
|
24
|
-
return grouped;
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=utils.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":["Chunk","Effect","Array","CommandHelper","flattenDefinitions","definitions","handleResponse","map","toReadonlyArray","definition","transform","handle","isEffect","i","scoped","flatMap","_","splitDefinitions","grouped","reduce","Autocomplete","GlobalApplicationCommand","GuildApplicationCommand","MessageComponent","ModalSubmit","Commands","acc","d","_tag","push","command","name"],"sources":["../../src/Interactions/utils.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAGvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,aAAa,QAAQ,gCAAgC;AAgB9D,OAAO,MAAMC,kBAAkB,GAAGA,CAChCC,WAKC,EACDC,cAG2B,KAE3BJ,KAAK,CAACK,GAAG,CAACP,KAAK,CAACQ,eAAe,CAACH,WAAW,CAAC,EAAE,CAAC,CAACI,UAAU,EAAEC,SAAS,CAAC,MAAM;EAC1E,GAAGD,UAAU;EACbE,MAAM,EAAEV,MAAM,CAACW,QAAQ,CAACH,UAAU,CAACE,MAAM,CAAC,GACrCE,CAAyB,IACxBZ,MAAM,CAACa,MAAM,CACXJ,SAAS,CACPT,MAAM,CAACc,OAAO,CACZN,UAAU,CAACE,MAAiE,EAC5EK,CAAC,IAAIV,cAAc,CAACO,CAAC,EAAEG,CAAC,CAAC,CAC1B,CACF,CACF,GACFH,CAAyB,IACxBZ,MAAM,CAACa,MAAM,CACXJ,SAAS,CACPT,MAAM,CAACc,OAAO,CAEVN,UAAU,CAACE,MAGZ,CAAC,IAAIR,aAAa,CAACU,CAAC,CAAC,CAAC,EACvBG,CAAC,IAAIV,cAAc,CAACO,CAAC,EAAEG,CAAC,CAAC,CAC1B,CACF;CAEV,CAAC,CAAC;AAEL,OAAO,MAAMC,gBAAgB,GAC3BZ,WAA4D,IAC1D;EACF,MAAMa,OAAO,GAAGhB,KAAK,CAACiB,MAAM,CAC1Bd,WAAW,EACX;IACEe,YAAY,EAAE,EAAE;IAChBC,wBAAwB,EAAE,EAAE;IAC5BC,uBAAuB,EAAE,EAAE;IAC3BC,gBAAgB,EAAE,EAAE;IACpBC,WAAW,EAAE,EAAE;IACfC,QAAQ,EAAE;GAOX,EACD,CAACC,GAAG,EAAEC,CAAC,KAAI;IACTD,GAAG,CAACC,CAAC,CAACC,IAAI,CAAC,CAACC,IAAI,CAACF,CAAQ,CAAC;IAC1B,IACEA,CAAC,CAACC,IAAI,KAAK,0BAA0B,IACrCD,CAAC,CAACC,IAAI,KAAK,yBAAyB,EACpC;MACAF,GAAG,CAACD,QAAQ,CAACE,CAAC,CAACG,OAAO,CAACC,IAAI,CAAC,GAAGJ,CAAQ;IACzC;IACA,OAAOD,GAAG;EACZ,CAAC,CACF;EAED,OAAOR,OAAO;AAChB,CAAC","ignoreList":[]}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import * as Chunk from "effect/Chunk";
|
|
2
|
-
import { GenericTag } from "effect/Context";
|
|
3
|
-
import { identity } from "effect/Function";
|
|
4
|
-
import * as Option from "effect/Option";
|
|
5
|
-
import * as Redacted from "effect/Redacted";
|
|
6
|
-
import * as Effect from "effect/Effect";
|
|
7
|
-
import * as Layer from "effect/Layer";
|
|
8
|
-
import { handlers } from "dfx/Interactions/handlers";
|
|
9
|
-
import { Interaction } from "dfx/Interactions/index";
|
|
10
|
-
import * as Verify from "discord-verify";
|
|
11
|
-
import { TypeIdError } from "@effect/platform/Error";
|
|
12
|
-
import { InteractionsErrorTypeId } from "dfx/Interactions/error";
|
|
13
|
-
export class BadWebhookSignature {
|
|
14
|
-
_tag = "BadWebhookSignature";
|
|
15
|
-
}
|
|
16
|
-
const checkSignature = (publicKey, headers, body, crypto, algorithm) => Option.all({
|
|
17
|
-
signature: Option.fromNullable(headers["x-signature-ed25519"]),
|
|
18
|
-
timestamp: Option.fromNullable(headers["x-signature-timestamp"])
|
|
19
|
-
}).pipe(Effect.flatMap(_ => Effect.promise(() => Verify.verify(body, _.signature, _.timestamp, publicKey, crypto, algorithm))), Effect.filterOrFail(identity, () => new BadWebhookSignature()), Effect.catchAllCause(() => Effect.fail(new BadWebhookSignature())), Effect.asVoid);
|
|
20
|
-
const makeConfig = ({
|
|
21
|
-
algorithm,
|
|
22
|
-
applicationId,
|
|
23
|
-
crypto,
|
|
24
|
-
publicKey
|
|
25
|
-
}) => ({
|
|
26
|
-
applicationId,
|
|
27
|
-
publicKey: Redacted.value(publicKey),
|
|
28
|
-
crypto,
|
|
29
|
-
algorithm: Verify.PlatformAlgorithm[algorithm]
|
|
30
|
-
});
|
|
31
|
-
export const WebhookConfig = /*#__PURE__*/GenericTag("dfx/Interactions/WebhookConfig");
|
|
32
|
-
export const layer = opts => Layer.succeed(WebhookConfig, makeConfig(opts));
|
|
33
|
-
export const layerConfig = config => Layer.effect(WebhookConfig, Effect.map(config, makeConfig));
|
|
34
|
-
export class WebhookParseError extends /*#__PURE__*/TypeIdError(InteractionsErrorTypeId, "WebhookParseError") {}
|
|
35
|
-
const fromHeadersAndBody = (headers, body) => Effect.tap(WebhookConfig, ({
|
|
36
|
-
algorithm,
|
|
37
|
-
crypto,
|
|
38
|
-
publicKey
|
|
39
|
-
}) => checkSignature(publicKey, headers, body, crypto, algorithm)).pipe(Effect.flatMap(() => Effect.try({
|
|
40
|
-
try: () => JSON.parse(body),
|
|
41
|
-
catch: cause => new WebhookParseError({
|
|
42
|
-
cause
|
|
43
|
-
})
|
|
44
|
-
})));
|
|
45
|
-
const run = (definitions, handleResponse) => {
|
|
46
|
-
const handler = handlers(definitions, handleResponse);
|
|
47
|
-
return (headers, body) => Effect.flatMap(fromHeadersAndBody(headers, body), interaction => Effect.withSpan(Effect.provideService(handler[interaction.type](interaction), Interaction, interaction), "dfx.Interaction", {
|
|
48
|
-
attributes: {
|
|
49
|
-
interactionId: interaction.id
|
|
50
|
-
},
|
|
51
|
-
captureStackTrace: false
|
|
52
|
-
}));
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* @tsplus getter dfx/InteractionBuilder webhookHandler
|
|
56
|
-
*/
|
|
57
|
-
export const makeHandler = ix => {
|
|
58
|
-
const handle = run(Chunk.map(ix.definitions, ([d]) => [d, identity]), (_i, r) => Effect.succeed(r));
|
|
59
|
-
return ({
|
|
60
|
-
body,
|
|
61
|
-
error,
|
|
62
|
-
headers,
|
|
63
|
-
success
|
|
64
|
-
}) => handle(headers, body).pipe(Effect.flatMap(success), Effect.catchAllCause(error));
|
|
65
|
-
};
|
|
66
|
-
/**
|
|
67
|
-
* @tsplus getter dfx/InteractionBuilder simpleWebhookHandler
|
|
68
|
-
*/
|
|
69
|
-
export const makeSimpleHandler = ix => {
|
|
70
|
-
const handle = run(Chunk.map(ix.definitions, ([d]) => [d, identity]), (_i, r) => Effect.succeed(r));
|
|
71
|
-
return ({
|
|
72
|
-
body,
|
|
73
|
-
headers
|
|
74
|
-
}) => handle(headers, body);
|
|
75
|
-
};
|
|
76
|
-
//# sourceMappingURL=webhook.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.mjs","names":["Chunk","GenericTag","identity","Option","Redacted","Effect","Layer","handlers","Interaction","Verify","TypeIdError","InteractionsErrorTypeId","BadWebhookSignature","_tag","checkSignature","publicKey","headers","body","crypto","algorithm","all","signature","fromNullable","timestamp","pipe","flatMap","_","promise","verify","filterOrFail","catchAllCause","fail","asVoid","makeConfig","applicationId","value","PlatformAlgorithm","WebhookConfig","layer","opts","succeed","layerConfig","config","effect","map","WebhookParseError","fromHeadersAndBody","tap","try","JSON","parse","catch","cause","run","definitions","handleResponse","handler","interaction","withSpan","provideService","type","attributes","interactionId","id","captureStackTrace","makeHandler","ix","handle","d","_i","r","error","success","makeSimpleHandler"],"sources":["../../src/Interactions/webhook.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/mjs/RateLimit/memory.mjs
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import * as Option from "effect/Option";
|
|
2
|
-
import * as Effect from "effect/Effect";
|
|
3
|
-
export const make = () => {
|
|
4
|
-
const buckets = new Map();
|
|
5
|
-
const routes = new Map();
|
|
6
|
-
const counters = new Map();
|
|
7
|
-
const getCounter = key => Option.filter(Option.fromNullable(counters.get(key)), c => c.expires > Date.now());
|
|
8
|
-
const getBucketForRoute = route => Effect.sync(() => Option.fromNullable(buckets.get(routes.get(route))));
|
|
9
|
-
return {
|
|
10
|
-
hasBucket: key => Effect.sync(() => buckets.has(key)),
|
|
11
|
-
putBucket: bucket => Effect.sync(() => {
|
|
12
|
-
buckets.set(bucket.key, bucket);
|
|
13
|
-
}),
|
|
14
|
-
getBucketForRoute,
|
|
15
|
-
putBucketRoute: (route, bucket) => Effect.sync(() => {
|
|
16
|
-
routes.set(route, bucket);
|
|
17
|
-
}),
|
|
18
|
-
removeCounter: key => Effect.sync(() => {
|
|
19
|
-
counters.delete(key);
|
|
20
|
-
}),
|
|
21
|
-
incrementCounter: (key, window, limit) => Effect.sync(() => {
|
|
22
|
-
const now = Date.now();
|
|
23
|
-
const perRequest = Math.ceil(window / limit);
|
|
24
|
-
const counter = Option.getOrElse(getCounter(key), () => ({
|
|
25
|
-
expires: now,
|
|
26
|
-
count: 0
|
|
27
|
-
}));
|
|
28
|
-
const count = counter.count + 1;
|
|
29
|
-
const expires = counter.expires + perRequest;
|
|
30
|
-
counters.set(key, {
|
|
31
|
-
...counter,
|
|
32
|
-
count,
|
|
33
|
-
expires
|
|
34
|
-
});
|
|
35
|
-
return [count, expires - now];
|
|
36
|
-
})
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=memory.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.mjs","names":["Option","Effect","make","buckets","Map","routes","counters","getCounter","key","filter","fromNullable","get","c","expires","Date","now","getBucketForRoute","route","sync","hasBucket","has","putBucket","bucket","set","putBucketRoute","removeCounter","delete","incrementCounter","window","limit","perRequest","Math","ceil","counter","getOrElse","count"],"sources":["../../src/RateLimit/memory.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAQvC,OAAO,MAAMC,IAAI,GAAGA,CAAA,KAA4B;EAC9C,MAAMC,OAAO,GAAG,IAAIC,GAAG,EAAyB;EAChD,MAAMC,MAAM,GAAG,IAAID,GAAG,EAAkB;EACxC,MAAME,QAAQ,GAAG,IAAIF,GAAG,EAAmB;EAE3C,MAAMG,UAAU,GAAIC,GAAW,IAC7BR,MAAM,CAACS,MAAM,CACXT,MAAM,CAACU,YAAY,CAACJ,QAAQ,CAACK,GAAG,CAACH,GAAG,CAAC,CAAC,EACtCI,CAAC,IAAIA,CAAC,CAACC,OAAO,GAAGC,IAAI,CAACC,GAAG,EAAE,CAC5B;EAEH,MAAMC,iBAAiB,GAAIC,KAAa,IACtChB,MAAM,CAACiB,IAAI,CAAC,MAAMlB,MAAM,CAACU,YAAY,CAACP,OAAO,CAACQ,GAAG,CAACN,MAAM,CAACM,GAAG,CAACM,KAAK,CAAE,CAAC,CAAC,CAAC;EAEzE,OAAO;IACLE,SAAS,EAAEX,GAAG,IAAIP,MAAM,CAACiB,IAAI,CAAC,MAAMf,OAAO,CAACiB,GAAG,CAACZ,GAAG,CAAC,CAAC;IAErDa,SAAS,EAAEC,MAAM,IACfrB,MAAM,CAACiB,IAAI,CAAC,MAAK;MACff,OAAO,CAACoB,GAAG,CAACD,MAAM,CAACd,GAAG,EAAEc,MAAM,CAAC;IACjC,CAAC,CAAC;IAEJN,iBAAiB;IAEjBQ,cAAc,EAAEA,CAACP,KAAK,EAAEK,MAAM,KAC5BrB,MAAM,CAACiB,IAAI,CAAC,MAAK;MACfb,MAAM,CAACkB,GAAG,CAACN,KAAK,EAAEK,MAAM,CAAC;IAC3B,CAAC,CAAC;IAEJG,aAAa,EAAEjB,GAAG,IAChBP,MAAM,CAACiB,IAAI,CAAC,MAAK;MACfZ,QAAQ,CAACoB,MAAM,CAAClB,GAAG,CAAC;IACtB,CAAC,CAAC;IAEJmB,gBAAgB,EAAEA,CAACnB,GAAG,EAAEoB,MAAM,EAAEC,KAAK,KACnC5B,MAAM,CAACiB,IAAI,CAAC,MAAK;MACf,MAAMH,GAAG,GAAGD,IAAI,CAACC,GAAG,EAAE;MACtB,MAAMe,UAAU,GAAGC,IAAI,CAACC,IAAI,CAACJ,MAAM,GAAGC,KAAK,CAAC;MAC5C,MAAMI,OAAO,GAAGjC,MAAM,CAACkC,SAAS,CAC9B3B,UAAU,CAACC,GAAG,CAAC,EACf,OAAgB;QACdK,OAAO,EAAEE,GAAG;QACZoB,KAAK,EAAE;OACR,CAAC,CACH;MAED,MAAMA,KAAK,GAAGF,OAAO,CAACE,KAAK,GAAG,CAAC;MAC/B,MAAMtB,OAAO,GAAGoB,OAAO,CAACpB,OAAO,GAAGiB,UAAU;MAC5CxB,QAAQ,CAACiB,GAAG,CAACf,GAAG,EAAE;QAAE,GAAGyB,OAAO;QAAEE,KAAK;QAAEtB;MAAO,CAAE,CAAC;MAEjD,OAAO,CAACsB,KAAK,EAAEtB,OAAO,GAAGE,GAAG,CAAC;IAC/B,CAAC;GACJ;AACH,CAAC","ignoreList":[]}
|
package/mjs/RateLimit/utils.mjs
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { millis, zero } from "effect/Duration";
|
|
2
|
-
export const delayFrom = (window, limit, count, ttl) => {
|
|
3
|
-
const perRequest = Math.ceil(window / limit);
|
|
4
|
-
const totalTime = count * perRequest;
|
|
5
|
-
const elapsedTime = totalTime - ttl;
|
|
6
|
-
const elapsedWindows = Math.floor(elapsedTime / window);
|
|
7
|
-
const completedRequests = elapsedWindows * limit;
|
|
8
|
-
const remainingRequests = count - completedRequests;
|
|
9
|
-
const remainingWindows = Math.floor((remainingRequests - 1) / limit);
|
|
10
|
-
const delayRemainder = elapsedTime % window;
|
|
11
|
-
const requestRemainder = count % limit;
|
|
12
|
-
const staggerDelay = requestRemainder * 50;
|
|
13
|
-
if (remainingWindows === 0) {
|
|
14
|
-
return zero;
|
|
15
|
-
}
|
|
16
|
-
return millis(remainingWindows * window - delayRemainder + staggerDelay);
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=utils.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":["millis","zero","delayFrom","window","limit","count","ttl","perRequest","Math","ceil","totalTime","elapsedTime","elapsedWindows","floor","completedRequests","remainingRequests","remainingWindows","delayRemainder","requestRemainder","staggerDelay"],"sources":["../../src/RateLimit/utils.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,MAAM,EAAEC,IAAI,QAAQ,iBAAiB;AAE9C,OAAO,MAAMC,SAAS,GAAGA,CACvBC,MAAc,EACdC,KAAa,EACbC,KAAa,EACbC,GAAW,KACC;EACZ,MAAMC,UAAU,GAAGC,IAAI,CAACC,IAAI,CAACN,MAAM,GAAGC,KAAK,CAAC;EAE5C,MAAMM,SAAS,GAAGL,KAAK,GAAGE,UAAU;EACpC,MAAMI,WAAW,GAAGD,SAAS,GAAGJ,GAAG;EACnC,MAAMM,cAAc,GAAGJ,IAAI,CAACK,KAAK,CAACF,WAAW,GAAGR,MAAM,CAAC;EACvD,MAAMW,iBAAiB,GAAGF,cAAc,GAAGR,KAAK;EAChD,MAAMW,iBAAiB,GAAGV,KAAK,GAAGS,iBAAiB;EACnD,MAAME,gBAAgB,GAAGR,IAAI,CAACK,KAAK,CAAC,CAACE,iBAAiB,GAAG,CAAC,IAAIX,KAAK,CAAC;EACpE,MAAMa,cAAc,GAAGN,WAAW,GAAGR,MAAM;EAE3C,MAAMe,gBAAgB,GAAGb,KAAK,GAAGD,KAAK;EACtC,MAAMe,YAAY,GAAGD,gBAAgB,GAAG,EAAE;EAE1C,IAAIF,gBAAgB,KAAK,CAAC,EAAE;IAC1B,OAAOf,IAAI;EACb;EAEA,OAAOD,MAAM,CAACgB,gBAAgB,GAAGb,MAAM,GAAGc,cAAc,GAAGE,YAAY,CAAC;AAC1E,CAAC","ignoreList":[]}
|
package/mjs/RateLimit.mjs
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { GenericTag } from "effect/Context";
|
|
2
|
-
import * as Duration from "effect/Duration";
|
|
3
|
-
import * as Effect from "effect/Effect";
|
|
4
|
-
import * as Layer from "effect/Layer";
|
|
5
|
-
import * as Memory from "dfx/RateLimit/memory";
|
|
6
|
-
import { delayFrom } from "dfx/RateLimit/utils";
|
|
7
|
-
export const RateLimitStore = /*#__PURE__*/GenericTag("dfx/RateLimit/RateLimitStore");
|
|
8
|
-
export const MemoryRateLimitStoreLive = /*#__PURE__*/Layer.sync(RateLimitStore, Memory.make);
|
|
9
|
-
const makeLimiter = /*#__PURE__*/Effect.gen(function* () {
|
|
10
|
-
const store = yield* RateLimitStore;
|
|
11
|
-
const maybeWait = (key, window, limit, multiplier = 1.05) => {
|
|
12
|
-
const windowMs = Duration.toMillis(window) * multiplier;
|
|
13
|
-
return store.incrementCounter(key, windowMs, limit).pipe(Effect.map(([count, ttl]) => delayFrom(windowMs, limit, count, ttl)), Effect.tap(d => Effect.annotateLogs(Effect.logTrace("maybeWait"), {
|
|
14
|
-
service: "RateLimit",
|
|
15
|
-
key,
|
|
16
|
-
window: Duration.toMillis(window),
|
|
17
|
-
windowMs,
|
|
18
|
-
limit,
|
|
19
|
-
delay: Duration.toMillis(d)
|
|
20
|
-
})), Effect.tap(_ => Duration.toMillis(_) === 0 ? Effect.void : Effect.sleep(_)), Effect.asVoid);
|
|
21
|
-
};
|
|
22
|
-
return {
|
|
23
|
-
maybeWait
|
|
24
|
-
};
|
|
25
|
-
});
|
|
26
|
-
export const RateLimiter = /*#__PURE__*/GenericTag("dfx/RateLimit/RateLimiter");
|
|
27
|
-
export const RateLimiterLive = /*#__PURE__*/Layer.effect(RateLimiter, makeLimiter);
|
|
28
|
-
//# sourceMappingURL=RateLimit.mjs.map
|
package/mjs/RateLimit.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RateLimit.mjs","names":["GenericTag","Duration","Effect","Layer","Memory","delayFrom","RateLimitStore","MemoryRateLimitStoreLive","sync","make","makeLimiter","gen","store","maybeWait","key","window","limit","multiplier","windowMs","toMillis","incrementCounter","pipe","map","count","ttl","tap","d","annotateLogs","logTrace","service","delay","_","void","sleep","asVoid","RateLimiter","RateLimiterLive","effect"],"sources":["../src/RateLimit.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAU,QAAQ,gBAAgB;AAC3C,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAE3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,sBAAsB;AAC9C,SAASC,SAAS,QAAQ,qBAAqB;AAmC/C,OAAO,MAAMC,cAAc,gBAAGN,UAAU,CACtC,8BAA8B,CAC/B;AACD,OAAO,MAAMO,wBAAwB,gBAAGJ,KAAK,CAACK,IAAI,CAACF,cAAc,EAAEF,MAAM,CAACK,IAAI,CAAC;AAE/E,MAAMC,WAAW,gBAAGR,MAAM,CAACS,GAAG,CAAC,aAAS;EACtC,MAAMC,KAAK,GAAG,OAAON,cAAc;EAEnC,MAAMO,SAAS,GAAGA,CAChBC,GAAW,EACXC,MAAyB,EACzBC,KAAa,EACbC,UAAU,GAAG,IAAI,KACf;IACF,MAAMC,QAAQ,GAAGjB,QAAQ,CAACkB,QAAQ,CAACJ,MAAM,CAAC,GAAGE,UAAU;IAEvD,OAAOL,KAAK,CAACQ,gBAAgB,CAACN,GAAG,EAAEI,QAAQ,EAAEF,KAAK,CAAC,CAACK,IAAI,CACtDnB,MAAM,CAACoB,GAAG,CAAC,CAAC,CAACC,KAAK,EAAEC,GAAG,CAAC,KAAKnB,SAAS,CAACa,QAAQ,EAAEF,KAAK,EAAEO,KAAK,EAAEC,GAAG,CAAC,CAAC,EACpEtB,MAAM,CAACuB,GAAG,CAACC,CAAC,IACVxB,MAAM,CAACyB,YAAY,CAACzB,MAAM,CAAC0B,QAAQ,CAAC,WAAW,CAAC,EAAE;MAChDC,OAAO,EAAE,WAAW;MACpBf,GAAG;MACHC,MAAM,EAAEd,QAAQ,CAACkB,QAAQ,CAACJ,MAAM,CAAC;MACjCG,QAAQ;MACRF,KAAK;MACLc,KAAK,EAAE7B,QAAQ,CAACkB,QAAQ,CAACO,CAAC;KAC3B,CAAC,CACH,EACDxB,MAAM,CAACuB,GAAG,CAACM,CAAC,IACV9B,QAAQ,CAACkB,QAAQ,CAACY,CAAC,CAAC,KAAK,CAAC,GAAG7B,MAAM,CAAC8B,IAAI,GAAG9B,MAAM,CAAC+B,KAAK,CAACF,CAAC,CAAC,CAC3D,EACD7B,MAAM,CAACgC,MAAM,CACd;EACH,CAAC;EAED,OAAO;IAAErB;EAAS,CAAE;AACtB,CAAC,CAAC;AAKF,OAAO,MAAMsB,WAAW,gBAAGnC,UAAU,CAGnC,2BAA2B,CAAC;AAC9B,OAAO,MAAMoC,eAAe,gBAAGjC,KAAK,CAACkC,MAAM,CAACF,WAAW,EAAEzB,WAAW,CAAC","ignoreList":[]}
|
package/mjs/gateway.mjs
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import * as CachePrelude from "dfx/Cache/prelude";
|
|
2
|
-
import { DiscordGatewayLive } from "dfx/DiscordGateway";
|
|
3
|
-
import * as DiscordWS from "dfx/DiscordGateway/DiscordWS";
|
|
4
|
-
import { JsonDiscordWSCodecLive } from "dfx/DiscordGateway/DiscordWS";
|
|
5
|
-
import * as Shard from "dfx/DiscordGateway/Shard";
|
|
6
|
-
import { ShardStateStore } from "dfx/DiscordGateway/Shard/StateStore";
|
|
7
|
-
import * as SendEvent from "dfx/DiscordGateway/Shard/sendEvents";
|
|
8
|
-
import * as ShardStore from "dfx/DiscordGateway/ShardStore";
|
|
9
|
-
import { MemoryShardStoreLive } from "dfx/DiscordGateway/ShardStore";
|
|
10
|
-
import { DiscordRESTLive } from "dfx/DiscordREST";
|
|
11
|
-
import { InteractionsRegistryLive } from "dfx/Interactions/gateway";
|
|
12
|
-
import { MemoryRateLimitStoreLive, RateLimiterLive } from "dfx/RateLimit";
|
|
13
|
-
import * as Layer from "effect/Layer";
|
|
14
|
-
export { DiscordGateway, DiscordGatewayLive } from "dfx/DiscordGateway";
|
|
15
|
-
export { InteractionsRegistry, InteractionsRegistryLive, interactionsSync, run as runIx, setInteractionsSync } from "dfx/Interactions/gateway";
|
|
16
|
-
export { CachePrelude, DiscordWS, SendEvent, Shard, ShardStore };
|
|
17
|
-
export const DiscordLive = /*#__PURE__*/Layer.mergeAll(RateLimiterLive, DiscordGatewayLive).pipe(/*#__PURE__*/Layer.provideMerge(DiscordRESTLive), /*#__PURE__*/Layer.provide(JsonDiscordWSCodecLive), /*#__PURE__*/Layer.provide(MemoryRateLimitStoreLive), /*#__PURE__*/Layer.provide(MemoryShardStoreLive), /*#__PURE__*/Layer.provide(ShardStateStore.MemoryLive));
|
|
18
|
-
export const DiscordIxLive = /*#__PURE__*/InteractionsRegistryLive.pipe(/*#__PURE__*/Layer.provideMerge(DiscordLive));
|
|
19
|
-
//# sourceMappingURL=gateway.mjs.map
|
package/mjs/gateway.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.mjs","names":["CachePrelude","DiscordGatewayLive","DiscordWS","JsonDiscordWSCodecLive","Shard","ShardStateStore","SendEvent","ShardStore","MemoryShardStoreLive","DiscordRESTLive","InteractionsRegistryLive","MemoryRateLimitStoreLive","RateLimiterLive","Layer","DiscordGateway","InteractionsRegistry","interactionsSync","run","runIx","setInteractionsSync","DiscordLive","mergeAll","pipe","provideMerge","provide","MemoryLive","DiscordIxLive"],"sources":["../src/gateway.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,YAAY,MAAM,mBAAmB;AAEjD,SAASC,kBAAkB,QAAQ,oBAAoB;AACvD,OAAO,KAAKC,SAAS,MAAM,8BAA8B;AACzD,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,OAAO,KAAKC,KAAK,MAAM,0BAA0B;AACjD,SAASC,eAAe,QAAQ,qCAAqC;AACrE,OAAO,KAAKC,SAAS,MAAM,qCAAqC;AAChE,OAAO,KAAKC,UAAU,MAAM,+BAA+B;AAC3D,SAASC,oBAAoB,QAAQ,+BAA+B;AAEpE,SAASC,eAAe,QAAQ,iBAAiB;AAEjD,SAASC,wBAAwB,QAAQ,0BAA0B;AAEnE,SAASC,wBAAwB,EAAEC,eAAe,QAAQ,eAAe;AACzE,OAAO,KAAKC,KAAK,MAAM,cAAc;AAKrC,SAASC,cAAc,EAAEb,kBAAkB,QAAQ,oBAAoB;AAEvE,SACEc,oBAAoB,EACpBL,wBAAwB,EACxBM,gBAAgB,EAChBC,GAAG,IAAIC,KAAK,EACZC,mBAAmB,QACd,0BAA0B;AAEjC,SAASnB,YAAY,EAAEE,SAAS,EAAEI,SAAS,EAAEF,KAAK,EAAEG,UAAU;AAE9D,OAAO,MAAMa,WAAW,gBAIpBP,KAAK,CAACQ,QAAQ,CAACT,eAAe,EAAEX,kBAAkB,CAAC,CAACqB,IAAI,cAC1DT,KAAK,CAACU,YAAY,CAACd,eAAe,CAAC,eACnCI,KAAK,CAACW,OAAO,CAACrB,sBAAsB,CAAC,eACrCU,KAAK,CAACW,OAAO,CAACb,wBAAwB,CAAC,eACvCE,KAAK,CAACW,OAAO,CAAChB,oBAAoB,CAAC,eACnCK,KAAK,CAACW,OAAO,CAACnB,eAAe,CAACoB,UAAU,CAAC,CAC1C;AAED,OAAO,MAAMC,aAAa,gBAItBhB,wBAAwB,CAACY,IAAI,cAACT,KAAK,CAACU,YAAY,CAACH,WAAW,CAAC,CAAC","ignoreList":[]}
|
package/mjs/index.mjs
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import * as Cache from "dfx/Cache";
|
|
2
|
-
import * as DiscordConfig from "dfx/DiscordConfig";
|
|
3
|
-
import { DiscordRESTLive } from "dfx/DiscordREST";
|
|
4
|
-
import * as Flags from "dfx/Helpers/flags";
|
|
5
|
-
import * as Intents from "dfx/Helpers/intents";
|
|
6
|
-
import * as IxHelpers from "dfx/Helpers/interactions";
|
|
7
|
-
import * as Members from "dfx/Helpers/members";
|
|
8
|
-
import * as Perms from "dfx/Helpers/permissions";
|
|
9
|
-
import * as UI from "dfx/Helpers/ui";
|
|
10
|
-
import * as Ix from "dfx/Interactions/index";
|
|
11
|
-
import { MemoryRateLimitStoreLive } from "dfx/RateLimit";
|
|
12
|
-
import * as Discord from "dfx/types";
|
|
13
|
-
import * as Layer from "effect/Layer";
|
|
14
|
-
export { DiscordREST, DiscordRESTLive } from "dfx/DiscordREST";
|
|
15
|
-
export { MemoryRateLimitStoreLive, RateLimitStore, RateLimiter, RateLimiterLive } from "dfx/RateLimit";
|
|
16
|
-
export { Cache, Discord, DiscordConfig, Flags, Intents, Ix, IxHelpers, Members, Perms, UI };
|
|
17
|
-
export const DiscordRESTMemoryLive = /*#__PURE__*/DiscordRESTLive.pipe(/*#__PURE__*/Layer.provide(MemoryRateLimitStoreLive));
|
|
18
|
-
//# sourceMappingURL=index.mjs.map
|
package/mjs/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["Cache","DiscordConfig","DiscordRESTLive","Flags","Intents","IxHelpers","Members","Perms","UI","Ix","MemoryRateLimitStoreLive","Discord","Layer","DiscordREST","RateLimitStore","RateLimiter","RateLimiterLive","DiscordRESTMemoryLive","pipe","provide"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,WAAW;AAClC,OAAO,KAAKC,aAAa,MAAM,mBAAmB;AAElD,SAASC,eAAe,QAAQ,iBAAiB;AACjD,OAAO,KAAKC,KAAK,MAAM,mBAAmB;AAC1C,OAAO,KAAKC,OAAO,MAAM,qBAAqB;AAC9C,OAAO,KAAKC,SAAS,MAAM,0BAA0B;AACrD,OAAO,KAAKC,OAAO,MAAM,qBAAqB;AAC9C,OAAO,KAAKC,KAAK,MAAM,yBAAyB;AAChD,OAAO,KAAKC,EAAE,MAAM,gBAAgB;AACpC,OAAO,KAAKC,EAAE,MAAM,wBAAwB;AAC5C,SAASC,wBAAwB,QAAQ,eAAe;AACxD,OAAO,KAAKC,OAAO,MAAM,WAAW;AACpC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,SAASC,WAAW,EAAEX,eAAe,QAAQ,iBAAiB;AAE9D,SAEEQ,wBAAwB,EACxBI,cAAc,EACdC,WAAW,EACXC,eAAe,QACV,eAAe;AAEtB,SACEhB,KAAK,EACLW,OAAO,EACPV,aAAa,EACbE,KAAK,EACLC,OAAO,EACPK,EAAE,EACFJ,SAAS,EACTC,OAAO,EACPC,KAAK,EACLC,EAAE;AAGJ,OAAO,MAAMS,qBAAqB,gBAI9Bf,eAAe,CAACgB,IAAI,cAACN,KAAK,CAACO,OAAO,CAACT,wBAAwB,CAAC,CAAC","ignoreList":[]}
|