dfx 0.9.11 → 0.10.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/Interactions/context.d.ts +7 -2
- package/Interactions/context.js +8 -5
- package/Interactions/context.js.map +1 -1
- package/Interactions/gateway.d.ts +2 -1
- package/Interactions/gateway.js.map +1 -1
- package/Interactions/handlers.d.ts +4 -3
- package/Interactions/handlers.js +7 -7
- package/Interactions/handlers.js.map +1 -1
- package/Interactions/index.d.ts +3 -2
- package/Interactions/index.js +3 -2
- package/Interactions/index.js.map +1 -1
- package/Interactions/webhook.d.ts +2 -1
- package/Interactions/webhook.js.map +1 -1
- package/package.json +2 -2
|
@@ -23,15 +23,20 @@ export declare class ResolvedDataNotFound {
|
|
|
23
23
|
export declare const getResolved: <A>(name: string, f: (id: Discord.Snowflake, data: Discord.ResolvedDatum) => A | undefined) => Effect<import("../types.js").ApplicationCommandDatum, ResolvedDataNotFound, A>;
|
|
24
24
|
export declare const focusedOptionValue: Effect<FocusedOptionContext, never, string>;
|
|
25
25
|
export declare const commandOptionsMap: Effect<import("../types.js").ApplicationCommandDatum, never, Record<string, string | undefined>>;
|
|
26
|
+
export declare class SubCommandNotFound {
|
|
27
|
+
readonly data: Discord.ApplicationCommandDatum;
|
|
28
|
+
readonly _tag = "SubCommandNotFound";
|
|
29
|
+
constructor(data: Discord.ApplicationCommandDatum);
|
|
30
|
+
}
|
|
26
31
|
export declare const handleSubCommands: <NER extends Record<string, Effect<any, any, import("../common.js").Maybe<InteractionResponse>>>>(commands: NER) => Effect<import("../types.js").Interaction | import("../types.js").ApplicationCommandDatum | Exclude<[NER[keyof NER]] extends [{
|
|
27
32
|
[EffectTypeId]: {
|
|
28
33
|
_R: (_: never) => infer R;
|
|
29
34
|
};
|
|
30
|
-
}] ? R : never, SubCommandContext>, [NER[keyof NER]] extends [{
|
|
35
|
+
}] ? R : never, SubCommandContext>, SubCommandNotFound | ([NER[keyof NER]] extends [{
|
|
31
36
|
[EffectTypeId]: {
|
|
32
37
|
_E: (_: never) => infer E;
|
|
33
38
|
};
|
|
34
|
-
}] ? E : never, import("../common.js").Maybe<InteractionResponse>>;
|
|
39
|
+
}] ? E : never), import("../common.js").Maybe<InteractionResponse>>;
|
|
35
40
|
export declare const getSubCommand: Effect<SubCommandContext, never, import("../types.js").ApplicationCommandInteractionDataOption>;
|
|
36
41
|
export declare const subCommandOptionsMap: Effect<SubCommandContext, never, Record<string, string | undefined>>;
|
|
37
42
|
export declare const modalValues: Effect<import("../types.js").ModalSubmitDatum, never, Record<string, string | undefined>>;
|
package/Interactions/context.js
CHANGED
|
@@ -2,7 +2,6 @@ import * as tsplus_module_1 from "dfx/common";
|
|
|
2
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
3
3
|
import * as tsplus_module_3 from "@fp-ts/data/Option";
|
|
4
4
|
import * as tsplus_module_4 from "@fp-ts/data/Function";
|
|
5
|
-
import { InteractionNotFound } from "./handlers.js";
|
|
6
5
|
import * as Arr from "@fp-ts/data/ReadonlyArray";
|
|
7
6
|
import { optionsMap } from "dfx/Helpers/interactions";
|
|
8
7
|
import { EffectTypeId } from "@effect/io/Effect";
|
|
@@ -25,10 +24,14 @@ export class ResolvedDataNotFound {
|
|
|
25
24
|
export const getResolved = (name, f) => tsplus_module_2.serviceWithEffect(ApplicationCommandContext)((a) => tsplus_module_3.match(() => tsplus_module_2.fail(new ResolvedDataNotFound(a, name)), tsplus_module_2.succeed)(tsplus_module_1.IxHelpers.resolveOptionValue(name, f)(a)));
|
|
26
25
|
export const focusedOptionValue = tsplus_module_2.serviceWith(FocusedOptionContext)((a) => a.focusedOption.value ?? "");
|
|
27
26
|
export const commandOptionsMap = tsplus_module_2.serviceWith(ApplicationCommandContext)(optionsMap);
|
|
28
|
-
export
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
export class SubCommandNotFound {
|
|
28
|
+
data;
|
|
29
|
+
_tag = "SubCommandNotFound";
|
|
30
|
+
constructor(data) {
|
|
31
|
+
this.data = data;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export const handleSubCommands = (commands) => tsplus_module_2.flatMap((data) => tsplus_module_4.pipe(tsplus_module_1.IxHelpers.allSubCommands(data), Arr.findFirst((a) => !!commands[a.name]), (o) => tsplus_module_3.toEither(() => new SubCommandNotFound(data))(o), tsplus_module_2.fromEither, (a) => tsplus_module_2.flatMap((command) => tsplus_module_4.pipe(commands[command.name], tsplus_module_2.provideService(SubCommandContext)({ command })))(a)))(tsplus_module_2.service(ApplicationCommandContext));
|
|
32
35
|
export const getSubCommand = tsplus_module_2.serviceWith(SubCommandContext)((a) => a.command);
|
|
33
36
|
export const subCommandOptionsMap = tsplus_module_2.map(tsplus_module_1.IxHelpers.optionsMap)(getSubCommand);
|
|
34
37
|
export const modalValues = tsplus_module_2.serviceWith(ModalSubmitContext)(tsplus_module_1.IxHelpers.componentsMap);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/Interactions/context.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/Interactions/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Http, Effect } from "dfx/common";
|
|
2
|
+
import { DefinitionNotFound } from "./handlers.js";
|
|
2
3
|
import { InteractionBuilder } from "./index.js";
|
|
3
4
|
export interface RunOpts {
|
|
4
5
|
sync?: boolean;
|
|
5
6
|
}
|
|
6
|
-
export declare const run: <R2, E, E2>(catchAll: (e: import("../Http/index.js").FetchError | import("../Http/index.js").StatusCodeError | import("../Http/index.js").JsonParseError | E) => import("../common.js").Effect<R2, E2, any>, { sync }?: RunOpts) => <R>(ix: InteractionBuilder<R, E>) => import("../common.js").Effect<import("../index.js").DiscordREST | import("../DiscordGateway/index.js").DiscordGateway | R2 | R, import("../Http/index.js").FetchError | import("../Http/index.js").StatusCodeError | import("../Http/index.js").JsonParseError | E2, void>;
|
|
7
|
+
export declare const run: <R2, E, E2>(catchAll: (e: import("../Http/index.js").FetchError | import("../Http/index.js").StatusCodeError | import("../Http/index.js").JsonParseError | DefinitionNotFound | E) => import("../common.js").Effect<R2, E2, any>, { sync }?: RunOpts) => <R>(ix: InteractionBuilder<R, E>) => import("../common.js").Effect<import("../index.js").DiscordREST | import("../DiscordGateway/index.js").DiscordGateway | R2 | R, import("../Http/index.js").FetchError | import("../Http/index.js").StatusCodeError | import("../Http/index.js").JsonParseError | E2, void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/Interactions/gateway.ts"],"names":[],"mappings":";;;;AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/Interactions/gateway.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAsB,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAM7C,MAAM,CAAC,MAAM,GAAG,GACd,CACE,QAOwB,EACxB,EAAE,IAAI,GAAG,IAAI,KAAc,EAAE,EAC7B,EAAE,CACJ,CAAI,EAA4B,EAAE,EAAE;IAEhC,MAAM,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,GACzD,gBAAgB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;mCAE5B,WAAW;QAIjB,MAAM,UAAU,GAAG,gBAAA,IAAI,CAAC,IAAI,CAAC,sCAAsC,CACjE,WAAW,CAAC,EAAE,EACd;YACE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACrE,CACF,CAAA;QAED,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM;YAC9C,CAAC,CAAC,gBAAA,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAC3C,gBAAA,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAC7C,WAAW,CAAC,EAAE,EACd,CAAC,CAAC,EAAE,EACJ,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAQ,CACrD,CACF;YACH,CAAC,CAAC,sBAAa,CAAA;QAEjB,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;QAEvC,MAAM,GAAG,GAAG,gBAAA,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,CAC7D,yBAMY,QAAQ,EANpB,oBACO,CAAC,CAAC,EAAE,EAAE,CACT,4CAAqB,CAAC,CAAC,EAAE,EAAE,CACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EADvD,CAAC,CAEA,EAJL,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAKd,CACkB,CACtB,CAAA;iDAEC,IAAI,CAAC,CAAC,CAAC,uBAA8B,SAAS,EAAvC,uBAAW,UAAU,EAArB,GAAG,CAAmB,CAAkB,CAAC,CAAC,CAAC,GAAG;OAhCrD,wBAAwD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAArE,gBAAA,IAAI,CAAC,IAAI,CAAC,mCAAmC,EAAE,CAAuB;IAiCxE,CAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Discord, Effect, Maybe } from "dfx/common";
|
|
2
2
|
import * as D from "./definitions.js";
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class DefinitionNotFound {
|
|
4
4
|
readonly interaction: Discord.Interaction;
|
|
5
|
-
readonly _tag = "
|
|
5
|
+
readonly _tag = "DefinitionNotFound";
|
|
6
6
|
constructor(interaction: Discord.Interaction);
|
|
7
7
|
}
|
|
8
|
-
export
|
|
8
|
+
export type Handler<R, E> = Effect<R, E | DefinitionNotFound, Maybe<Discord.InteractionResponse>>;
|
|
9
|
+
export declare const handlers: <R, E>(definitions: D.InteractionDefinition<R, E>[]) => Record<import("../types.js").InteractionType, (i: Discord.Interaction) => Handler<R, E>>;
|
package/Interactions/handlers.js
CHANGED
|
@@ -6,9 +6,9 @@ import * as tsplus_module_5 from "@fp-ts/data/Chunk";
|
|
|
6
6
|
import * as Ctx from "./context.js";
|
|
7
7
|
import * as Arr from "@fp-ts/data/ReadonlyArray";
|
|
8
8
|
import { splitDefinitions } from "./utils.js";
|
|
9
|
-
export class
|
|
9
|
+
export class DefinitionNotFound {
|
|
10
10
|
interaction;
|
|
11
|
-
_tag = "
|
|
11
|
+
_tag = "DefinitionNotFound";
|
|
12
12
|
constructor(interaction) {
|
|
13
13
|
this.interaction = interaction;
|
|
14
14
|
}
|
|
@@ -21,28 +21,28 @@ export const handlers = (definitions) => {
|
|
|
21
21
|
})),
|
|
22
22
|
[tsplus_module_1.Discord.InteractionType.APPLICATION_COMMAND]: (i) => {
|
|
23
23
|
const data = i.data;
|
|
24
|
-
return tsplus_module_4.pipe(tsplus_module_3.match(() => tsplus_module_2.fail(new
|
|
24
|
+
return tsplus_module_4.pipe(tsplus_module_3.match(() => tsplus_module_2.fail(new DefinitionNotFound(i)), (command) => command.handle)(tsplus_module_3.fromNullable(Commands[data.name])), (a) => a, tsplus_module_2.provideService(Ctx.InteractionContext)(i), tsplus_module_2.provideService(Ctx.ApplicationCommandContext)(data));
|
|
25
25
|
},
|
|
26
26
|
[tsplus_module_1.Discord.InteractionType.MODAL_SUBMIT]: (i) => {
|
|
27
27
|
const data = i.data;
|
|
28
28
|
return tsplus_module_4.pipe(ModalSubmit, Arr.map((a) => tsplus_module_2.struct({
|
|
29
29
|
command: tsplus_module_2.succeed(a),
|
|
30
30
|
match: a.predicate(data.custom_id),
|
|
31
|
-
})), (a) => tsplus_module_2.flatMap((a) => tsplus_module_3.match(() => tsplus_module_2.fail(new
|
|
31
|
+
})), (a) => tsplus_module_2.flatMap((a) => tsplus_module_3.match(() => tsplus_module_2.fail(new DefinitionNotFound(i)), (a) => a.command.handle)(tsplus_module_5.findFirst((a) => a.match)(a)))(tsplus_module_2.collectAllPar(a)), tsplus_module_2.provideService(Ctx.InteractionContext)(i), tsplus_module_2.provideService(Ctx.ModalSubmitContext)(data));
|
|
32
32
|
},
|
|
33
33
|
[tsplus_module_1.Discord.InteractionType.MESSAGE_COMPONENT]: (i) => {
|
|
34
34
|
const data = i.data;
|
|
35
35
|
return tsplus_module_4.pipe(MessageComponent, Arr.map((a) => tsplus_module_2.struct({
|
|
36
36
|
command: tsplus_module_2.succeed(a),
|
|
37
37
|
match: a.predicate(data.custom_id),
|
|
38
|
-
})), (a) => tsplus_module_2.flatMap((a) => tsplus_module_3.match(() => tsplus_module_2.fail(new
|
|
38
|
+
})), (a) => tsplus_module_2.flatMap((a) => tsplus_module_3.match(() => tsplus_module_2.fail(new DefinitionNotFound(i)), (a) => a.command.handle)(tsplus_module_5.findFirst((a) => a.match)(a)))(tsplus_module_2.collectAllPar(a)), tsplus_module_2.provideService(Ctx.InteractionContext)(i), tsplus_module_2.provideService(Ctx.MessageComponentContext)(data));
|
|
39
39
|
},
|
|
40
40
|
[tsplus_module_1.Discord.InteractionType.APPLICATION_COMMAND_AUTOCOMPLETE]: (i) => {
|
|
41
41
|
const data = i.data;
|
|
42
|
-
return tsplus_module_3.getOrElse(() => tsplus_module_2.fail(new
|
|
42
|
+
return tsplus_module_3.getOrElse(() => tsplus_module_2.fail(new DefinitionNotFound(i)))(tsplus_module_3.map((focusedOption) => tsplus_module_4.pipe(Autocomplete, Arr.map((a) => tsplus_module_2.struct({
|
|
43
43
|
command: tsplus_module_2.succeed(a),
|
|
44
44
|
match: a.predicate(focusedOption),
|
|
45
|
-
})), (a) => tsplus_module_2.flatMap((a) => tsplus_module_3.match(() => tsplus_module_2.fail(new
|
|
45
|
+
})), (a) => tsplus_module_2.flatMap((a) => tsplus_module_3.match(() => tsplus_module_2.fail(new DefinitionNotFound(i)), (a) => a.command.handle)(tsplus_module_5.findFirst((a) => a.match)(a)))(tsplus_module_2.collectAllPar(a)), tsplus_module_2.provideService(Ctx.InteractionContext)(i), tsplus_module_2.provideService(Ctx.ApplicationCommandContext)(data), tsplus_module_2.provideService(Ctx.FocusedOptionContext)({ focusedOption })))(tsplus_module_1.IxHelpers.focusedOption(data)));
|
|
46
46
|
},
|
|
47
47
|
};
|
|
48
48
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/Interactions/handlers.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAA;AAEnC,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/Interactions/handlers.ts"],"names":[],"mappings":"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"}
|
package/Interactions/index.d.ts
CHANGED
|
@@ -13,5 +13,6 @@ export declare class InteractionBuilder<R, E> {
|
|
|
13
13
|
export declare const builder: InteractionBuilder<never, never>;
|
|
14
14
|
export declare const id: (query: string) => (customId: string) => import("../common.js").Effect<never, never, boolean>;
|
|
15
15
|
export declare const idStartsWith: (query: string) => (customId: string) => import("../common.js").Effect<never, never, boolean>;
|
|
16
|
-
export declare const
|
|
17
|
-
export declare const option: (
|
|
16
|
+
export declare const idRegex: (query: RegExp) => (customId: string) => import("../common.js").Effect<never, never, boolean>;
|
|
17
|
+
export declare const option: (command: string, optionName: string) => (data: Discord.ApplicationCommandDatum, focusedOption: Discord.ApplicationCommandInteractionDataOption) => import("../common.js").Effect<never, never, boolean>;
|
|
18
|
+
export declare const optionOnly: (optionName: string) => (focusedOption: Discord.ApplicationCommandInteractionDataOption) => import("../common.js").Effect<never, never, boolean>;
|
package/Interactions/index.js
CHANGED
|
@@ -34,6 +34,7 @@ export const builder = new InteractionBuilder([]);
|
|
|
34
34
|
// Filters
|
|
35
35
|
export const id = (query) => (customId) => tsplus_module_2.succeed(query === customId);
|
|
36
36
|
export const idStartsWith = (query) => (customId) => tsplus_module_2.succeed(customId.startsWith(query));
|
|
37
|
-
export const
|
|
38
|
-
export const option = (
|
|
37
|
+
export const idRegex = (query) => (customId) => tsplus_module_2.succeed(query.test(customId));
|
|
38
|
+
export const option = (command, optionName) => (data, focusedOption) => tsplus_module_2.succeed(data.name === command && focusedOption.name === optionName);
|
|
39
|
+
export const optionOnly = (optionName) => (focusedOption) => tsplus_module_2.succeed(focusedOption.name === optionName);
|
|
39
40
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Interactions/index.ts"],"names":[],"mappings":";;AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,GAGb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,eAAe,IAAI,iBAAiB,EACpC,WAAW,IAAI,kBAAkB,EAEjC,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,MAAM,OAAO,kBAAkB;IACR;IAArB,YAAqB,WAA4C;QAA5C,gBAAW,GAAX,WAAW,CAAiC;IAAG,CAAC;IAErE,GAAG,CAAS,UAA2C;QACrD,OAAO,IAAI,kBAAkB,CAAiB;YAC5C,GAAG,IAAI,CAAC,WAAW;YACnB,UAAU;SACX,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,UAAU;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW;aAC9B,MAAM,CACL,CAAC,CAAC,EAAyC,EAAE,CAC3C,CAAC,CAAC,IAAI,KAAK,0BAA0B,CACxC;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAExB,OAAO,wBAGI,CAAC,GAAG,EAAE,EAAE,CACf,gBAAA,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAAC,GAAG,CAAC,EAAE,EAAE;YACvD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;SAC/B,CAAC,EANC,wBAEI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAFjB,gBAAA,IAAI,CAAC,IAAI;aACb,mCAAmC,EAAE,CACf,CAKtB,CAAA;IACL,CAAC;IAED,SAAS,CAAC,KAAwB,EAAE,OAA0B;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW;aAC9B,MAAM,CACL,CAAC,CAAC,EAAwC,EAAE,CAC1C,CAAC,CAAC,IAAI,KAAK,yBAAyB,CACvC;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAExB,OAAO,gBAAA,IAAI,CAAC,IAAI,CAAC,qCAAqC,CACpD,KAAK,EACL,OAAO,EACP,QAAe,CAChB,CAAA;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAe,EAAE,CAAC,CAAA;AAE/D,UAAU;AACV,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE,CACxD,wBAAe,KAAK,KAAK,QAAQ,CAAC,CAAA;AAEpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE,CAClE,wBAAe,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;AAE5C,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Interactions/index.ts"],"names":[],"mappings":";;AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,GAGb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,eAAe,IAAI,iBAAiB,EACpC,WAAW,IAAI,kBAAkB,EAEjC,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,MAAM,OAAO,kBAAkB;IACR;IAArB,YAAqB,WAA4C;QAA5C,gBAAW,GAAX,WAAW,CAAiC;IAAG,CAAC;IAErE,GAAG,CAAS,UAA2C;QACrD,OAAO,IAAI,kBAAkB,CAAiB;YAC5C,GAAG,IAAI,CAAC,WAAW;YACnB,UAAU;SACX,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,UAAU;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW;aAC9B,MAAM,CACL,CAAC,CAAC,EAAyC,EAAE,CAC3C,CAAC,CAAC,IAAI,KAAK,0BAA0B,CACxC;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAExB,OAAO,wBAGI,CAAC,GAAG,EAAE,EAAE,CACf,gBAAA,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAAC,GAAG,CAAC,EAAE,EAAE;YACvD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;SAC/B,CAAC,EANC,wBAEI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAFjB,gBAAA,IAAI,CAAC,IAAI;aACb,mCAAmC,EAAE,CACf,CAKtB,CAAA;IACL,CAAC;IAED,SAAS,CAAC,KAAwB,EAAE,OAA0B;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW;aAC9B,MAAM,CACL,CAAC,CAAC,EAAwC,EAAE,CAC1C,CAAC,CAAC,IAAI,KAAK,yBAAyB,CACvC;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAExB,OAAO,gBAAA,IAAI,CAAC,IAAI,CAAC,qCAAqC,CACpD,KAAK,EACL,OAAO,EACP,QAAe,CAChB,CAAA;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAe,EAAE,CAAC,CAAA;AAE/D,UAAU;AACV,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE,CACxD,wBAAe,KAAK,KAAK,QAAQ,CAAC,CAAA;AAEpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE,CAClE,wBAAe,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;AAE5C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE,CAC7D,wBAAe,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;AAEtC,MAAM,CAAC,MAAM,MAAM,GACjB,CAAC,OAAe,EAAE,UAAkB,EAAE,EAAE,CACxC,CACE,IAAqC,EACrC,aAA8D,EAC9D,EAAE,CACF,wBAAe,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,aAAa,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;AAE9E,MAAM,CAAC,MAAM,UAAU,GACrB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,aAA8D,EAAE,EAAE,CACjE,wBAAe,aAAa,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Discord, Effect, Cause } from "dfx/common";
|
|
2
|
+
import { DefinitionNotFound } from "./handlers.js";
|
|
2
3
|
import { InteractionBuilder } from "./index.js";
|
|
3
4
|
export declare class BadWebhookSignature {
|
|
4
5
|
readonly _tag = "BadWebhookSignature";
|
|
@@ -28,5 +29,5 @@ export interface HandleWebhookOpts<E> {
|
|
|
28
29
|
error: (e: Cause<E>) => Effect<never, never, void>;
|
|
29
30
|
empty: Effect<never, never, void>;
|
|
30
31
|
}
|
|
31
|
-
export declare const makeHandler: <R, E>(ix: InteractionBuilder<R, E>) => ({ headers, body, success, empty, error, }: HandleWebhookOpts<BadWebhookSignature | WebhookParseError | E>) => import("../common.js").Effect<WebhookConfig | R, never, void>;
|
|
32
|
+
export declare const makeHandler: <R, E>(ix: InteractionBuilder<R, E>) => ({ headers, body, success, empty, error, }: HandleWebhookOpts<DefinitionNotFound | BadWebhookSignature | WebhookParseError | E>) => import("../common.js").Effect<WebhookConfig | R, never, void>;
|
|
32
33
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/Interactions/webhook.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/Interactions/webhook.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dfx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"@fp-ts/data": "^0.0.20"
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "9d2e0f348d754875f112a63691afa28716e20c82"
|
|
51
51
|
}
|