dfx 0.61.5 → 0.61.7
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/Cache/memoryTTL.d.ts.map +1 -1
- package/Cache/memoryTTL.js.map +1 -1
- package/Cache/prelude.d.ts +3 -3
- package/Cache/prelude.d.ts.map +1 -1
- package/Cache/prelude.js.map +1 -1
- package/Cache.d.ts.map +1 -1
- package/Cache.js.map +1 -1
- package/DiscordGateway/DiscordWS.d.ts +1 -1
- package/DiscordGateway/DiscordWS.d.ts.map +1 -1
- package/DiscordGateway/DiscordWS.js.map +1 -1
- package/DiscordGateway/Shard/heartbeats.d.ts.map +1 -1
- package/DiscordGateway/Shard/heartbeats.js.map +1 -1
- package/DiscordGateway/Shard/sendEvents.js +9 -6
- package/DiscordGateway/Shard/sendEvents.js.map +1 -1
- package/DiscordGateway/Shard/utils.d.ts.map +1 -1
- package/DiscordGateway/Shard/utils.js.map +1 -1
- package/DiscordGateway/Shard.d.ts +2 -2
- package/DiscordGateway/Shard.d.ts.map +1 -1
- package/DiscordGateway/Shard.js +18 -15
- package/DiscordGateway/Shard.js.map +1 -1
- package/DiscordGateway/Sharder.d.ts +2 -2
- package/DiscordGateway/Sharder.d.ts.map +1 -1
- package/DiscordGateway/Sharder.js +9 -9
- package/DiscordGateway/Sharder.js.map +1 -1
- package/DiscordGateway/WS.d.ts +0 -1
- package/DiscordGateway/WS.d.ts.map +1 -1
- package/DiscordGateway/WS.js +9 -14
- package/DiscordGateway/WS.js.map +1 -1
- package/DiscordGateway.d.ts +1 -1
- package/DiscordGateway.d.ts.map +1 -1
- package/DiscordGateway.js +1 -1
- package/DiscordGateway.js.map +1 -1
- package/DiscordREST/utils.d.ts.map +1 -1
- package/DiscordREST/utils.js.map +1 -1
- package/DiscordREST.d.ts +1 -1
- package/DiscordREST.d.ts.map +1 -1
- package/DiscordREST.js.map +1 -1
- package/Helpers/flags.d.ts.map +1 -1
- package/Helpers/flags.js.map +1 -1
- package/Helpers/intents.d.ts.map +1 -1
- package/Helpers/intents.js.map +1 -1
- package/Helpers/interactions.d.ts.map +1 -1
- package/Helpers/interactions.js +3 -2
- package/Helpers/interactions.js.map +1 -1
- package/Helpers/members.d.ts.map +1 -1
- package/Helpers/members.js.map +1 -1
- package/Helpers/permissions.js.map +1 -1
- package/Helpers/ui.js +12 -11
- package/Helpers/ui.js.map +1 -1
- package/Interactions/builder.d.ts.map +1 -1
- package/Interactions/builder.js.map +1 -1
- package/Interactions/context.d.ts.map +1 -1
- package/Interactions/context.js.map +1 -1
- package/Interactions/definitions.d.ts.map +1 -1
- package/Interactions/definitions.js.map +1 -1
- package/Interactions/gateway.d.ts.map +1 -1
- package/Interactions/gateway.js.map +1 -1
- package/Interactions/handlers.d.ts.map +1 -1
- package/Interactions/handlers.js +7 -7
- package/Interactions/handlers.js.map +1 -1
- package/Interactions/index.d.ts.map +1 -1
- package/Interactions/index.js.map +1 -1
- package/Interactions/utils.d.ts.map +1 -1
- package/Interactions/utils.js.map +1 -1
- package/Interactions/webhook.d.ts.map +1 -1
- package/Interactions/webhook.js.map +1 -1
- package/Log.js.map +1 -1
- package/RateLimit.d.ts.map +1 -1
- package/RateLimit.js.map +1 -1
- package/gateway.d.ts +1 -1
- package/mjs/Cache/memoryTTL.mjs.map +1 -1
- package/mjs/Cache/prelude.mjs.map +1 -1
- package/mjs/Cache.mjs.map +1 -1
- package/mjs/DiscordGateway/DiscordWS.mjs.map +1 -1
- package/mjs/DiscordGateway/Shard/heartbeats.mjs.map +1 -1
- package/mjs/DiscordGateway/Shard/sendEvents.mjs +7 -6
- package/mjs/DiscordGateway/Shard/sendEvents.mjs.map +1 -1
- package/mjs/DiscordGateway/Shard/utils.mjs.map +1 -1
- package/mjs/DiscordGateway/Shard.mjs +18 -15
- package/mjs/DiscordGateway/Shard.mjs.map +1 -1
- package/mjs/DiscordGateway/Sharder.mjs +9 -9
- package/mjs/DiscordGateway/Sharder.mjs.map +1 -1
- package/mjs/DiscordGateway/WS.mjs +9 -14
- package/mjs/DiscordGateway/WS.mjs.map +1 -1
- package/mjs/DiscordGateway.mjs +1 -1
- package/mjs/DiscordGateway.mjs.map +1 -1
- package/mjs/DiscordREST/utils.mjs.map +1 -1
- package/mjs/DiscordREST.mjs.map +1 -1
- package/mjs/Helpers/flags.mjs.map +1 -1
- package/mjs/Helpers/intents.mjs.map +1 -1
- package/mjs/Helpers/interactions.mjs +3 -2
- package/mjs/Helpers/interactions.mjs.map +1 -1
- package/mjs/Helpers/members.mjs.map +1 -1
- package/mjs/Helpers/permissions.mjs.map +1 -1
- package/mjs/Helpers/ui.mjs +12 -11
- package/mjs/Helpers/ui.mjs.map +1 -1
- package/mjs/Interactions/builder.mjs.map +1 -1
- package/mjs/Interactions/context.mjs.map +1 -1
- package/mjs/Interactions/definitions.mjs.map +1 -1
- package/mjs/Interactions/gateway.mjs.map +1 -1
- package/mjs/Interactions/handlers.mjs +7 -7
- package/mjs/Interactions/handlers.mjs.map +1 -1
- package/mjs/Interactions/index.mjs.map +1 -1
- package/mjs/Interactions/utils.mjs.map +1 -1
- package/mjs/Interactions/webhook.mjs.map +1 -1
- package/mjs/Log.mjs.map +1 -1
- package/mjs/RateLimit.mjs.map +1 -1
- package/mjs/types.mjs +733 -9
- package/mjs/types.mjs.map +1 -1
- package/mjs/utils/Effect.mjs +4 -4
- package/mjs/utils/Effect.mjs.map +1 -1
- package/mjs/version.mjs +1 -1
- package/mjs/webhooks.mjs.map +1 -1
- package/package.json +2 -2
- package/src/Cache/memoryTTL.ts +4 -6
- package/src/Cache/prelude.ts +13 -15
- package/src/Cache.ts +5 -2
- package/src/DiscordGateway/DiscordWS.ts +6 -5
- package/src/DiscordGateway/Shard/heartbeats.ts +2 -3
- package/src/DiscordGateway/Shard/utils.ts +10 -9
- package/src/DiscordGateway/Shard.ts +38 -38
- package/src/DiscordGateway/Sharder.ts +19 -17
- package/src/DiscordGateway/WS.ts +34 -37
- package/src/DiscordGateway.ts +12 -8
- package/src/DiscordREST/utils.ts +2 -4
- package/src/DiscordREST.ts +24 -26
- package/src/Helpers/flags.ts +4 -2
- package/src/Helpers/intents.ts +4 -3
- package/src/Helpers/interactions.ts +54 -51
- package/src/Helpers/members.ts +2 -2
- package/src/Helpers/permissions.ts +2 -2
- package/src/Interactions/builder.ts +18 -20
- package/src/Interactions/context.ts +31 -18
- package/src/Interactions/definitions.ts +36 -27
- package/src/Interactions/gateway.ts +85 -82
- package/src/Interactions/handlers.ts +35 -34
- package/src/Interactions/index.ts +20 -16
- package/src/Interactions/utils.ts +17 -13
- package/src/Interactions/webhook.ts +15 -19
- package/src/Log.ts +2 -2
- package/src/RateLimit.ts +4 -5
- package/src/types.ts +172 -188
- package/src/utils/Effect.ts +34 -33
- package/src/version.ts +1 -1
- package/src/webhooks.ts +1 -4
- package/types.d.ts +140 -132
- package/types.d.ts.map +1 -1
- package/types.js +784 -10
- package/types.js.map +1 -1
- package/utils/Effect.d.ts.map +1 -1
- package/utils/Effect.js +4 -4
- package/utils/Effect.js.map +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/webhooks.d.ts +1 -1
- package/webhooks.d.ts.map +1 -1
- package/webhooks.js.map +1 -1
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -61,28 +61,28 @@ export const handlers = <R, E, TE, A, B>(
|
|
|
61
61
|
[Discord.InteractionType.MODAL_SUBMIT]: i => {
|
|
62
62
|
const data = i.data as Discord.ModalSubmitDatum
|
|
63
63
|
|
|
64
|
-
return Effect.findFirst(ModalSubmit, _ =>
|
|
65
|
-
.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
),
|
|
77
|
-
)
|
|
64
|
+
return Effect.findFirst(ModalSubmit, _ =>
|
|
65
|
+
_.predicate(data.custom_id),
|
|
66
|
+
).pipe(
|
|
67
|
+
Effect.flatMap(
|
|
68
|
+
Option.match({
|
|
69
|
+
onNone: () => Effect.fail(new DefinitionNotFound(i)),
|
|
70
|
+
onSome: match =>
|
|
71
|
+
Effect.provideService(
|
|
72
|
+
match.handle(i),
|
|
73
|
+
Ctx.ModalSubmitData,
|
|
74
|
+
data,
|
|
75
|
+
) as Handler<R, E, B>,
|
|
76
|
+
}),
|
|
77
|
+
),
|
|
78
|
+
)
|
|
78
79
|
},
|
|
79
80
|
|
|
80
81
|
[Discord.InteractionType.MESSAGE_COMPONENT]: i => {
|
|
81
82
|
const data = i.data as Discord.MessageComponentDatum
|
|
82
83
|
|
|
83
|
-
return Effect.findFirst(
|
|
84
|
-
|
|
85
|
-
_ => _.predicate(data.custom_id),
|
|
84
|
+
return Effect.findFirst(MessageComponent, _ =>
|
|
85
|
+
_.predicate(data.custom_id),
|
|
86
86
|
).pipe(
|
|
87
87
|
Effect.flatMap(
|
|
88
88
|
Option.match({
|
|
@@ -104,24 +104,25 @@ export const handlers = <R, E, TE, A, B>(
|
|
|
104
104
|
return Option.match(IxHelpers.focusedOption(data), {
|
|
105
105
|
onNone: () => Effect.fail(new DefinitionNotFound(i)),
|
|
106
106
|
onSome: focusedOption =>
|
|
107
|
-
Effect.findFirst(Autocomplete, _ =>
|
|
108
|
-
.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
)
|
|
122
|
-
|
|
123
|
-
),
|
|
107
|
+
Effect.findFirst(Autocomplete, _ =>
|
|
108
|
+
_.predicate(data, focusedOption),
|
|
109
|
+
).pipe(
|
|
110
|
+
Effect.flatMap(
|
|
111
|
+
Option.match({
|
|
112
|
+
onNone: () => Effect.fail(new DefinitionNotFound(i)),
|
|
113
|
+
onSome: match =>
|
|
114
|
+
Effect.provideService(
|
|
115
|
+
match.handle(i),
|
|
116
|
+
Ctx.ApplicationCommand,
|
|
117
|
+
data,
|
|
118
|
+
).pipe(
|
|
119
|
+
Effect.provideService(Ctx.FocusedOptionContext, {
|
|
120
|
+
focusedOption,
|
|
121
|
+
}),
|
|
122
|
+
) as Handler<R, E, B>,
|
|
123
|
+
}),
|
|
124
124
|
),
|
|
125
|
+
),
|
|
125
126
|
})
|
|
126
127
|
},
|
|
127
128
|
}
|
|
@@ -23,20 +23,24 @@ export const idStartsWith = (query: string) => (customId: string) =>
|
|
|
23
23
|
export const idRegex = (query: RegExp) => (customId: string) =>
|
|
24
24
|
Effect.succeed(query.test(customId))
|
|
25
25
|
|
|
26
|
-
export const option =
|
|
27
|
-
(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
export const option =
|
|
27
|
+
(command: string, optionName: string) =>
|
|
28
|
+
(
|
|
29
|
+
data: Pick<Discord.ApplicationCommandDatum, "name">,
|
|
30
|
+
focusedOption: Pick<
|
|
31
|
+
Discord.ApplicationCommandInteractionDataOption,
|
|
32
|
+
"name"
|
|
33
|
+
>,
|
|
34
|
+
) =>
|
|
35
|
+
Effect.succeed(data.name === command && focusedOption.name === optionName)
|
|
34
36
|
|
|
35
|
-
export const optionOnly =
|
|
36
|
-
(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
export const optionOnly =
|
|
38
|
+
(optionName: string) =>
|
|
39
|
+
(
|
|
40
|
+
_: unknown,
|
|
41
|
+
focusedOption: Pick<
|
|
42
|
+
Discord.ApplicationCommandInteractionDataOption,
|
|
43
|
+
"name"
|
|
44
|
+
>,
|
|
45
|
+
) =>
|
|
46
|
+
Effect.succeed(focusedOption.name === optionName)
|
|
@@ -7,11 +7,12 @@ import type * as Discord from "dfx/types"
|
|
|
7
7
|
export type DefinitionFlattened<R, E, TE, A> = D.InteractionDefinition<
|
|
8
8
|
R,
|
|
9
9
|
E
|
|
10
|
-
> extends infer D
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
> extends infer D
|
|
11
|
+
? {
|
|
12
|
+
[K in keyof D]: K extends "handle"
|
|
13
|
+
? (_: Discord.Interaction) => Effect.Effect<R, TE, A>
|
|
14
|
+
: D[K]
|
|
15
|
+
}
|
|
15
16
|
: never
|
|
16
17
|
|
|
17
18
|
export type DefinitionFlattenedCommand<R, E, TE, A> = Extract<
|
|
@@ -44,11 +45,13 @@ export const flattenDefinitions = <R, E, TE, A, B>(
|
|
|
44
45
|
handle: (i: Discord.Interaction) =>
|
|
45
46
|
Effect.isEffect(definition.handle)
|
|
46
47
|
? transform(
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
Effect.flatMap(definition.handle, _ => handleResponse(i, _)),
|
|
49
|
+
)
|
|
49
50
|
: transform(
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
Effect.flatMap(definition.handle(context), _ =>
|
|
52
|
+
handleResponse(i, _),
|
|
53
|
+
),
|
|
54
|
+
),
|
|
52
55
|
}))
|
|
53
56
|
|
|
54
57
|
export const splitDefinitions = <R, E, TE, A>(
|
|
@@ -79,10 +82,11 @@ export const splitDefinitions = <R, E, TE, A>(
|
|
|
79
82
|
).pipe(
|
|
80
83
|
Chunk.reduce(
|
|
81
84
|
{} as Record<string, DefinitionFlattenedCommand<R, E, TE, A>>,
|
|
82
|
-
(acc, d) =>
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
(acc, d) =>
|
|
86
|
+
({
|
|
87
|
+
...acc,
|
|
88
|
+
[d.command.name]: d,
|
|
89
|
+
}) as any,
|
|
86
90
|
),
|
|
87
91
|
)
|
|
88
92
|
|
|
@@ -42,8 +42,8 @@ const checkSignature = (
|
|
|
42
42
|
publicKey,
|
|
43
43
|
crypto,
|
|
44
44
|
algorithm,
|
|
45
|
-
)
|
|
46
|
-
)
|
|
45
|
+
),
|
|
46
|
+
),
|
|
47
47
|
),
|
|
48
48
|
Effect.filterOrFail(identity, () => new BadWebhookSignature()),
|
|
49
49
|
Effect.catchAllCause(() => Effect.fail(new BadWebhookSignature())),
|
|
@@ -86,16 +86,14 @@ export class WebhookParseError {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
const fromHeadersAndBody = (headers: Headers, body: string) =>
|
|
89
|
-
Effect.tap(
|
|
90
|
-
|
|
91
|
-
({ algorithm, crypto, publicKey }) =>
|
|
92
|
-
checkSignature(publicKey, headers, body, crypto, algorithm),
|
|
89
|
+
Effect.tap(WebhookConfig, ({ algorithm, crypto, publicKey }) =>
|
|
90
|
+
checkSignature(publicKey, headers, body, crypto, algorithm),
|
|
93
91
|
).pipe(
|
|
94
92
|
Effect.flatMap(() =>
|
|
95
93
|
Effect.try({
|
|
96
94
|
try: () => JSON.parse(body) as Discord.Interaction,
|
|
97
95
|
catch: reason => new WebhookParseError(reason),
|
|
98
|
-
})
|
|
96
|
+
}),
|
|
99
97
|
),
|
|
100
98
|
)
|
|
101
99
|
|
|
@@ -115,14 +113,12 @@ const run = <R, E>(
|
|
|
115
113
|
) => {
|
|
116
114
|
const handler = handlers(definitions, handleResponse)
|
|
117
115
|
return (headers: Headers, body: string) =>
|
|
118
|
-
Effect.flatMap(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
interaction,
|
|
125
|
-
),
|
|
116
|
+
Effect.flatMap(fromHeadersAndBody(headers, body), interaction =>
|
|
117
|
+
Effect.provideService(
|
|
118
|
+
handler[interaction.type](interaction),
|
|
119
|
+
Interaction,
|
|
120
|
+
interaction,
|
|
121
|
+
),
|
|
126
122
|
)
|
|
127
123
|
}
|
|
128
124
|
|
|
@@ -138,14 +134,14 @@ export interface HandleWebhookOpts<E> {
|
|
|
138
134
|
*/
|
|
139
135
|
export const makeHandler = <R, E, TE>(
|
|
140
136
|
ix: InteractionBuilder<R, E, TE>,
|
|
141
|
-
): ({
|
|
137
|
+
): (({
|
|
142
138
|
body,
|
|
143
139
|
error,
|
|
144
140
|
headers,
|
|
145
141
|
success,
|
|
146
142
|
}: HandleWebhookOpts<
|
|
147
143
|
E | WebhookParseError | BadWebhookSignature | DefinitionNotFound
|
|
148
|
-
>) => Effect.Effect<WebhookConfig, never, void> => {
|
|
144
|
+
>) => Effect.Effect<WebhookConfig, never, void>) => {
|
|
149
145
|
const handle = run(
|
|
150
146
|
Chunk.map(ix.definitions, ([d]) => [d, identity] as any),
|
|
151
147
|
(_i, r) => Effect.succeed(r),
|
|
@@ -170,7 +166,7 @@ export const makeHandler = <R, E, TE>(
|
|
|
170
166
|
*/
|
|
171
167
|
export const makeSimpleHandler = <R, E, TE>(
|
|
172
168
|
ix: InteractionBuilder<R, E, TE>,
|
|
173
|
-
): ({
|
|
169
|
+
): (({
|
|
174
170
|
body,
|
|
175
171
|
headers,
|
|
176
172
|
}: {
|
|
@@ -180,7 +176,7 @@ export const makeSimpleHandler = <R, E, TE>(
|
|
|
180
176
|
WebhookConfig,
|
|
181
177
|
BadWebhookSignature | WebhookParseError | DefinitionNotFound,
|
|
182
178
|
Discord.InteractionResponse
|
|
183
|
-
> => {
|
|
179
|
+
>) => {
|
|
184
180
|
const handle = run(
|
|
185
181
|
Chunk.map(ix.definitions, ([d]) => [d, identity] as any),
|
|
186
182
|
(_i, r) => Effect.succeed(r),
|
package/src/Log.ts
CHANGED
package/src/RateLimit.ts
CHANGED
|
@@ -43,7 +43,7 @@ export interface RateLimitStore {
|
|
|
43
43
|
export const RateLimitStore = Tag<RateLimitStore>()
|
|
44
44
|
export const LiveMemoryRateLimitStore = Layer.sync(RateLimitStore, Memory.make)
|
|
45
45
|
|
|
46
|
-
const makeLimiter = Effect.gen(function*(_) {
|
|
46
|
+
const makeLimiter = Effect.gen(function* (_) {
|
|
47
47
|
const store = yield* _(RateLimitStore)
|
|
48
48
|
const log = yield* _(Log)
|
|
49
49
|
|
|
@@ -64,10 +64,10 @@ const makeLimiter = Effect.gen(function*(_) {
|
|
|
64
64
|
windowMs,
|
|
65
65
|
limit,
|
|
66
66
|
delay: Duration.toMillis(d),
|
|
67
|
-
})
|
|
67
|
+
}),
|
|
68
68
|
),
|
|
69
69
|
Effect.tap(_ =>
|
|
70
|
-
Duration.toMillis(_) === 0 ? Effect.unit : Effect.sleep(_)
|
|
70
|
+
Duration.toMillis(_) === 0 ? Effect.unit : Effect.sleep(_),
|
|
71
71
|
),
|
|
72
72
|
Effect.asUnit,
|
|
73
73
|
)
|
|
@@ -77,7 +77,6 @@ const makeLimiter = Effect.gen(function*(_) {
|
|
|
77
77
|
})
|
|
78
78
|
|
|
79
79
|
export interface RateLimiter
|
|
80
|
-
extends Effect.Effect.Success<typeof makeLimiter>
|
|
81
|
-
{}
|
|
80
|
+
extends Effect.Effect.Success<typeof makeLimiter> {}
|
|
82
81
|
export const RateLimiter = Tag<RateLimiter>()
|
|
83
82
|
export const LiveRateLimiter = Layer.effect(RateLimiter, makeLimiter)
|