dfx 0.3.0 → 0.3.1
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/DiscordGateway/index.d.ts +2 -2
- package/DiscordShard/index.d.ts +4 -4
- package/DiscordShard/index.js +15 -13
- package/DiscordShard/index.js.map +1 -1
- package/DiscordShard/index.ts +12 -10
- package/DiscordWS/index.d.ts +2 -2
- package/DiscordWS/index.js +2 -8
- package/DiscordWS/index.js.map +1 -1
- package/DiscordWS/index.ts +7 -11
- package/WS/index.d.ts +4 -4
- package/WS/index.js +5 -5
- package/WS/index.js.map +1 -1
- package/WS/index.ts +10 -17
- package/esm/DiscordShard/index.js +15 -13
- package/esm/DiscordShard/index.js.map +1 -1
- package/esm/DiscordWS/index.js +2 -8
- package/esm/DiscordWS/index.js.map +1 -1
- package/esm/WS/index.js +5 -5
- package/esm/WS/index.js.map +1 -1
- package/package.json +4 -4
- package/types.d.ts +2 -2
- package/types.ts +2 -2
|
@@ -9,8 +9,8 @@ declare const make: M.Managed<import("@effect-ts/system/Has").Has<import("../Dis
|
|
|
9
9
|
readonly run: T.RIO<import("@effect-ts/system/Has").Has<import("../DiscordWS").DiscordWS> & import("@effect-ts/system/Has").Has<import("../WS").WS> & import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, void>;
|
|
10
10
|
readonly raw: CB.EffectSource<import("@effect-ts/system/Has").Has<import("../DiscordWS").DiscordWS> & import("@effect-ts/system/Has").Has<import("../WS").WS> & import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, never, import("../types").GatewayPayload<any>>;
|
|
11
11
|
readonly dispatch: CB.EffectSource<import("@effect-ts/system/Has").Has<import("../DiscordWS").DiscordWS> & import("@effect-ts/system/Has").Has<import("../WS").WS> & import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, never, import("../types").GatewayPayload<import("../types").GatewayEvent>>;
|
|
12
|
-
readonly send: (p: import("../types").GatewayPayload<any>) =>
|
|
13
|
-
readonly reconnect: () =>
|
|
12
|
+
readonly send: (p: import("../types").GatewayPayload<any>) => void;
|
|
13
|
+
readonly reconnect: () => void;
|
|
14
14
|
readonly _tag: "DiscordGatewayService";
|
|
15
15
|
}>;
|
|
16
16
|
export interface DiscordGateway extends _A<typeof make> {
|
package/DiscordShard/index.d.ts
CHANGED
|
@@ -14,8 +14,8 @@ declare const makeService: () => {
|
|
|
14
14
|
readonly run: T.RIO<import("@effect-ts/system/Has").Has<DWS.DiscordWS> & import("@effect-ts/system/Has").Has<import("../WS").WS> & import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, void>;
|
|
15
15
|
readonly raw: CB.EffectSource<import("@effect-ts/system/Has").Has<DWS.DiscordWS> & import("@effect-ts/system/Has").Has<import("../WS").WS> & import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, never, GatewayPayload<any>>;
|
|
16
16
|
readonly dispatch: CB.EffectSource<import("@effect-ts/system/Has").Has<DWS.DiscordWS> & import("@effect-ts/system/Has").Has<import("../WS").WS> & import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, never, GatewayPayload<GatewayEvent>>;
|
|
17
|
-
readonly send: (p: GatewayPayload) =>
|
|
18
|
-
readonly reconnect: () =>
|
|
17
|
+
readonly send: (p: GatewayPayload) => void;
|
|
18
|
+
readonly reconnect: () => void;
|
|
19
19
|
}>;
|
|
20
20
|
};
|
|
21
21
|
export interface DiscordShard extends ReturnType<typeof makeService> {
|
|
@@ -26,7 +26,7 @@ export declare const make: (shard: [number, number]) => M.Managed<import("@effec
|
|
|
26
26
|
readonly run: T.RIO<import("@effect-ts/system/Has").Has<DWS.DiscordWS> & import("@effect-ts/system/Has").Has<import("../WS").WS> & import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, void>;
|
|
27
27
|
readonly raw: CB.EffectSource<import("@effect-ts/system/Has").Has<DWS.DiscordWS> & import("@effect-ts/system/Has").Has<import("../WS").WS> & import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, never, GatewayPayload<any>>;
|
|
28
28
|
readonly dispatch: CB.EffectSource<import("@effect-ts/system/Has").Has<DWS.DiscordWS> & import("@effect-ts/system/Has").Has<import("../WS").WS> & import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, never, GatewayPayload<GatewayEvent>>;
|
|
29
|
-
readonly send: (p: GatewayPayload) =>
|
|
30
|
-
readonly reconnect: () =>
|
|
29
|
+
readonly send: (p: GatewayPayload) => void;
|
|
30
|
+
readonly reconnect: () => void;
|
|
31
31
|
}>;
|
|
32
32
|
export {};
|
package/DiscordShard/index.js
CHANGED
|
@@ -7,7 +7,6 @@ const fileName_1 = "DiscordShard/index.ts";
|
|
|
7
7
|
const T = tslib_1.__importStar(require("@effect-ts/core/Effect"));
|
|
8
8
|
const L = tslib_1.__importStar(require("@effect-ts/core/Effect/Layer"));
|
|
9
9
|
const M = tslib_1.__importStar(require("@effect-ts/core/Effect/Managed"));
|
|
10
|
-
const Q = tslib_1.__importStar(require("@effect-ts/core/Effect/Queue"));
|
|
11
10
|
const Function_1 = require("@effect-ts/core/Function");
|
|
12
11
|
const Has_1 = require("@effect-ts/core/Has");
|
|
13
12
|
const O = tslib_1.__importStar(require("@effect-ts/core/Option"));
|
|
@@ -21,35 +20,38 @@ const Identify = tslib_1.__importStar(require("./identify"));
|
|
|
21
20
|
const Invalid = tslib_1.__importStar(require("./invalidSession"));
|
|
22
21
|
const Utils = tslib_1.__importStar(require("./utils"));
|
|
23
22
|
const makeImpl = (shard) => M.gen(function* (_) {
|
|
24
|
-
const token = yield* _(Config.token, fileName_1 + ":
|
|
25
|
-
const gateway = yield* _(Config.gateway, fileName_1 + ":
|
|
26
|
-
const outbound =
|
|
27
|
-
const
|
|
28
|
-
|
|
23
|
+
const token = yield* _(Config.token, fileName_1 + ":28:27");
|
|
24
|
+
const gateway = yield* _(Config.gateway, fileName_1 + ":29:29");
|
|
25
|
+
const [emit, outbound] = CB.asyncEmitter();
|
|
26
|
+
const sendMessages = CB.forEach((p) => T.succeedWith(() => {
|
|
27
|
+
emit.data(p);
|
|
28
|
+
}, fileName_1 + ":33:20"));
|
|
29
|
+
const [latestReady, updateLatestReady] = yield* _(Utils.latest((0, Function_1.flow)(O.fromPredicate((p) => p.op === types_1.GatewayOpcode.DISPATCH && p.t === "READY"), O.map((p) => p.d))), fileName_1 + ":38:54");
|
|
30
|
+
const [latestSequence, updateLatestSequence] = yield* _(Utils.latest((p) => O.fromNullable(p.s)), fileName_1 + ":49:60");
|
|
29
31
|
const raw = (CB.share(CB.unwrap(DWS.open({
|
|
30
32
|
outgoingQueue: outbound,
|
|
31
33
|
}))));
|
|
32
34
|
const updateRefs = (CB.runDrain(updateLatestReady(updateLatestSequence(raw))));
|
|
33
35
|
const dispatch = (CB.share(CB.filter_(raw, (p) => p.op === types_1.GatewayOpcode.DISPATCH)));
|
|
34
36
|
// heartbeats
|
|
35
|
-
const heartbeatEffects = (
|
|
37
|
+
const heartbeatEffects = (sendMessages(Heartbeats.fromRaw(raw, latestSequence)));
|
|
36
38
|
// identify
|
|
37
|
-
const identifyEffects = (
|
|
39
|
+
const identifyEffects = (sendMessages(Identify.fromRaw(raw, {
|
|
38
40
|
token,
|
|
39
41
|
shard,
|
|
40
42
|
intents: gateway.intents,
|
|
41
43
|
presence: gateway.presence,
|
|
42
44
|
latestSequence,
|
|
43
45
|
latestReady,
|
|
44
|
-
})
|
|
46
|
+
})));
|
|
45
47
|
// invalid session
|
|
46
|
-
const invalidEffects = (
|
|
48
|
+
const invalidEffects = (sendMessages(Invalid.fromRaw(raw, latestReady)));
|
|
47
49
|
return {
|
|
48
|
-
run: (T.ignore(T.zipPar(invalidEffects, fileName_1 + ":
|
|
50
|
+
run: (T.ignore(T.zipPar(invalidEffects, fileName_1 + ":103:17")(T.zipPar(identifyEffects, fileName_1 + ":102:17")(T.zipPar(heartbeatEffects, fileName_1 + ":101:17")(updateRefs))), fileName_1 + ":104:17")),
|
|
49
51
|
raw,
|
|
50
52
|
dispatch,
|
|
51
|
-
send: (p) =>
|
|
52
|
-
reconnect: () =>
|
|
53
|
+
send: (p) => emit.data(p),
|
|
54
|
+
reconnect: () => emit.data(WS_1.Reconnect),
|
|
53
55
|
};
|
|
54
56
|
});
|
|
55
57
|
const makeService = () => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA2C;AAC3C,wEAAiD;AACjD,0EAAmD;AACnD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
package/DiscordShard/index.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as T from "@effect-ts/core/Effect"
|
|
2
2
|
import * as L from "@effect-ts/core/Effect/Layer"
|
|
3
3
|
import * as M from "@effect-ts/core/Effect/Managed"
|
|
4
|
-
import * as Q from "@effect-ts/core/Effect/Queue"
|
|
5
4
|
import { flow, pipe } from "@effect-ts/core/Function"
|
|
6
5
|
import { tag } from "@effect-ts/core/Has"
|
|
7
6
|
import * as O from "@effect-ts/core/Option"
|
|
@@ -28,7 +27,13 @@ const makeImpl = (shard: [id: number, count: number]) =>
|
|
|
28
27
|
M.gen(function* (_) {
|
|
29
28
|
const token = yield* _(Config.token)
|
|
30
29
|
const gateway = yield* _(Config.gateway)
|
|
31
|
-
const outbound =
|
|
30
|
+
const [emit, outbound] = CB.asyncEmitter<never, DWS.Message>()
|
|
31
|
+
|
|
32
|
+
const sendMessages = CB.forEach((p: DWS.Message) =>
|
|
33
|
+
T.succeedWith(() => {
|
|
34
|
+
emit.data(p)
|
|
35
|
+
}),
|
|
36
|
+
)
|
|
32
37
|
|
|
33
38
|
const [latestReady, updateLatestReady] = yield* _(
|
|
34
39
|
Utils.latest(
|
|
@@ -71,7 +76,7 @@ const makeImpl = (shard: [id: number, count: number]) =>
|
|
|
71
76
|
// heartbeats
|
|
72
77
|
const heartbeatEffects = pipe(
|
|
73
78
|
Heartbeats.fromRaw(raw, latestSequence),
|
|
74
|
-
|
|
79
|
+
sendMessages,
|
|
75
80
|
)
|
|
76
81
|
|
|
77
82
|
// identify
|
|
@@ -84,14 +89,11 @@ const makeImpl = (shard: [id: number, count: number]) =>
|
|
|
84
89
|
latestSequence,
|
|
85
90
|
latestReady,
|
|
86
91
|
}),
|
|
87
|
-
|
|
92
|
+
sendMessages,
|
|
88
93
|
)
|
|
89
94
|
|
|
90
95
|
// invalid session
|
|
91
|
-
const invalidEffects = pipe(
|
|
92
|
-
Invalid.fromRaw(raw, latestReady),
|
|
93
|
-
CB.forEach((p) => Q.offer_(outbound, p)),
|
|
94
|
-
)
|
|
96
|
+
const invalidEffects = pipe(Invalid.fromRaw(raw, latestReady), sendMessages)
|
|
95
97
|
|
|
96
98
|
return {
|
|
97
99
|
run: pipe(
|
|
@@ -103,8 +105,8 @@ const makeImpl = (shard: [id: number, count: number]) =>
|
|
|
103
105
|
),
|
|
104
106
|
raw,
|
|
105
107
|
dispatch,
|
|
106
|
-
send: (p: GatewayPayload) =>
|
|
107
|
-
reconnect: () =>
|
|
108
|
+
send: (p: GatewayPayload) => emit.data(p),
|
|
109
|
+
reconnect: () => emit.data(Reconnect),
|
|
108
110
|
} as const
|
|
109
111
|
})
|
|
110
112
|
|
package/DiscordWS/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import * as T from "@effect-ts/core/Effect";
|
|
3
3
|
import * as L from "@effect-ts/core/Effect/Layer";
|
|
4
|
-
import * as Q from "@effect-ts/core/Effect/Queue";
|
|
5
4
|
import { Has } from "@effect-ts/core/Has";
|
|
6
5
|
import { HasClock } from "@effect-ts/system/Clock";
|
|
7
6
|
import * as CB from "callbag-effect-ts";
|
|
7
|
+
import { EffectSource } from "callbag-effect-ts";
|
|
8
8
|
import { RawData } from "ws";
|
|
9
9
|
import { Log } from "../Log";
|
|
10
10
|
import { GatewayPayload } from "../types";
|
|
@@ -14,7 +14,7 @@ export interface OpenOpts {
|
|
|
14
14
|
url?: string;
|
|
15
15
|
version?: number;
|
|
16
16
|
encoding?: Encoding;
|
|
17
|
-
outgoingQueue:
|
|
17
|
+
outgoingQueue: EffectSource<unknown, never, Message>;
|
|
18
18
|
}
|
|
19
19
|
export interface Encoding {
|
|
20
20
|
type: "json" | "etf";
|
package/DiscordWS/index.js
CHANGED
|
@@ -6,7 +6,6 @@ const tracing_1 = tslib_1.__importStar(require("@effect-ts/core/Tracing"));
|
|
|
6
6
|
const fileName_1 = "DiscordWS/index.ts";
|
|
7
7
|
const T = tslib_1.__importStar(require("@effect-ts/core/Effect"));
|
|
8
8
|
const L = tslib_1.__importStar(require("@effect-ts/core/Effect/Layer"));
|
|
9
|
-
const Q = tslib_1.__importStar(require("@effect-ts/core/Effect/Queue"));
|
|
10
9
|
const SC = tslib_1.__importStar(require("@effect-ts/core/Effect/Schedule"));
|
|
11
10
|
const Function_1 = require("@effect-ts/core/Function");
|
|
12
11
|
const Has_1 = require("@effect-ts/core/Has");
|
|
@@ -18,12 +17,7 @@ exports.jsonEncoding = {
|
|
|
18
17
|
encode: (p) => JSON.stringify(p),
|
|
19
18
|
decode: (p) => JSON.parse(p.toString("utf8")),
|
|
20
19
|
};
|
|
21
|
-
const makeOutgoing = (
|
|
22
|
-
if (data === WS.Reconnect) {
|
|
23
|
-
return data;
|
|
24
|
-
}
|
|
25
|
-
return e.encode(data);
|
|
26
|
-
});
|
|
20
|
+
const makeOutgoing = (out, e) => CB.map_(out, (data) => (data === WS.Reconnect ? data : e.encode(data)));
|
|
27
21
|
const openImpl = ({ url = "wss://gateway.discord.gg/", version = 9, encoding = exports.jsonEncoding, outgoingQueue: outgoing, }) => (CB.map_(CB.retry_(CB.tapError_(CB.unwrap(WS.open(`${url}?v=${version}&encoding=${encoding.type}`, makeOutgoing(outgoing, encoding))), (e) => (0, Log_1.log)(serviceTag, "error", e)), SC.exponential(500)), encoding.decode));
|
|
28
22
|
// Service definition
|
|
29
23
|
const serviceTag = "DiscordWSService";
|
|
@@ -34,6 +28,6 @@ const makeService = () => ({
|
|
|
34
28
|
exports.DiscordWS = (0, Has_1.tag)();
|
|
35
29
|
exports.LiveDiscordWS = L.fromFunction(exports.DiscordWS)(makeService);
|
|
36
30
|
// Helpers
|
|
37
|
-
const open = (opts) => T.accessService(exports.DiscordWS)(({ open }) => open(opts), fileName_1 + ":
|
|
31
|
+
const open = (opts) => T.accessService(exports.DiscordWS)(({ open }) => open(opts), fileName_1 + ":78:29");
|
|
38
32
|
exports.open = open;
|
|
39
33
|
//# sourceMappingURL=index.js.map
|
package/DiscordWS/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA2C;AAC3C,wEAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA2C;AAC3C,wEAAiD;AACjD,4EAAqD;AACrD,uDAA+C;AAC/C,6CAA8C;AAE9C,8DAAuC;AAGvC,gCAAiC;AAEjC,kDAA2B;AAiBd,QAAA,YAAY,GAAa;IACpC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC9C,CAAA;AAED,MAAM,YAAY,GAAG,CACnB,GAA0C,EAC1C,CAAW,EACE,EAAE,CACf,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEzE,MAAM,QAAQ,GAAG,CAAC,EAChB,GAAG,GAAG,2BAA2B,EACjC,OAAO,GAAG,CAAC,EACX,QAAQ,GAAG,oBAAY,EACvB,aAAa,EAAE,QAAQ,GACd,EAAE,EAAE,CACb,CAQE,EAAE,MADF,EAAE,QADF,EAAE,WADF,EAAE,CAAC,MAAM,CAJT,EAAE,CAAC,IAAI,CACL,GAAG,GAAG,MAAM,OAAO,aAAa,QAAQ,CAAC,IAAI,EAAE,EAC/C,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACjC,GAEW,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,SAAG,EAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,GACrC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GACrB,QAAQ,CAAC,MAAM,EAKvB,CAAA;AAIH,qBAAqB;AACrB,MAAM,UAAU,GAAG,kBAA2B,CAAA;AAC9C,MAAM,WAAW,GAAG,GAAG,EAAE,CACvB,CAAC;IACC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;CACL,CAAA,CAAA;AAGA,QAAA,SAAS,GAAG,IAAA,SAAG,GAAa,CAAA;AAC5B,QAAA,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,iBAAS,CAAC,CAAC,WAAW,CAAC,CAAA;AAEnE,UAAU;AACH,MAAM,IAAI,GAAG,CAAC,IAAc,EAAE,EAAE,CACrC,CAAC,CAAC,aAAa,CAAC,iBAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAC,CAAA;AADzC,QAAA,IAAI,QACqC"}
|
package/DiscordWS/index.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as T from "@effect-ts/core/Effect"
|
|
2
2
|
import * as L from "@effect-ts/core/Effect/Layer"
|
|
3
|
-
import * as Q from "@effect-ts/core/Effect/Queue"
|
|
4
3
|
import * as SC from "@effect-ts/core/Effect/Schedule"
|
|
5
4
|
import { pipe } from "@effect-ts/core/Function"
|
|
6
|
-
import {
|
|
5
|
+
import { Has, tag } from "@effect-ts/core/Has"
|
|
7
6
|
import { HasClock } from "@effect-ts/system/Clock"
|
|
8
7
|
import * as CB from "callbag-effect-ts"
|
|
9
8
|
import { EffectSource } from "callbag-effect-ts"
|
|
@@ -18,7 +17,7 @@ export interface OpenOpts {
|
|
|
18
17
|
url?: string
|
|
19
18
|
version?: number
|
|
20
19
|
encoding?: Encoding
|
|
21
|
-
outgoingQueue:
|
|
20
|
+
outgoingQueue: EffectSource<unknown, never, Message>
|
|
22
21
|
}
|
|
23
22
|
|
|
24
23
|
export interface Encoding {
|
|
@@ -33,14 +32,11 @@ export const jsonEncoding: Encoding = {
|
|
|
33
32
|
decode: (p) => JSON.parse(p.toString("utf8")),
|
|
34
33
|
}
|
|
35
34
|
|
|
36
|
-
const makeOutgoing = (
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return e.encode(data)
|
|
43
|
-
})
|
|
35
|
+
const makeOutgoing = (
|
|
36
|
+
out: EffectSource<unknown, never, Message>,
|
|
37
|
+
e: Encoding,
|
|
38
|
+
): WS.Outbound =>
|
|
39
|
+
CB.map_(out, (data) => (data === WS.Reconnect ? data : e.encode(data)))
|
|
44
40
|
|
|
45
41
|
const openImpl = ({
|
|
46
42
|
url = "wss://gateway.discord.gg/",
|
package/WS/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import * as T from "@effect-ts/core/Effect";
|
|
3
|
-
import * as Q from "@effect-ts/core/Effect/Queue";
|
|
4
3
|
import * as CB from "callbag-effect-ts";
|
|
4
|
+
import { EffectSource } from "callbag-effect-ts";
|
|
5
5
|
import * as Ws from "ws";
|
|
6
6
|
export declare type WsError = {
|
|
7
7
|
_tag: "close";
|
|
@@ -17,14 +17,14 @@ export declare type WsError = {
|
|
|
17
17
|
export declare const Reconnect: unique symbol;
|
|
18
18
|
export declare type Reconnect = typeof Reconnect;
|
|
19
19
|
export declare type Message = string | Buffer | ArrayBuffer | Reconnect;
|
|
20
|
-
export declare type
|
|
20
|
+
export declare type Outbound = EffectSource<unknown, never, Message>;
|
|
21
21
|
declare const makeService: () => {
|
|
22
22
|
readonly _tag: "WSService";
|
|
23
|
-
readonly open: (url: string, out:
|
|
23
|
+
readonly open: (url: string, out: Outbound, options?: Ws.ClientOptions | undefined) => CB.EffectSource<import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, WsError, Ws.RawData>;
|
|
24
24
|
};
|
|
25
25
|
export interface WS extends ReturnType<typeof makeService> {
|
|
26
26
|
}
|
|
27
27
|
export declare const WS: import("@effect-ts/system/Has").Tag<WS>;
|
|
28
28
|
export declare const LiveWS: import("@effect-ts/system/Layer").Layer<unknown, never, import("@effect-ts/system/Has").Has<WS>>;
|
|
29
|
-
export declare const open: (url: string, out:
|
|
29
|
+
export declare const open: (url: string, out: Outbound, options?: Ws.ClientOptions | undefined) => T.Effect<import("@effect-ts/system/Has").Has<WS>, never, CB.EffectSource<import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, WsError, Ws.RawData>>;
|
|
30
30
|
export {};
|
package/WS/index.js
CHANGED
|
@@ -7,9 +7,9 @@ const fileName_1 = "WS/index.ts";
|
|
|
7
7
|
const T = tslib_1.__importStar(require("@effect-ts/core/Effect"));
|
|
8
8
|
const M = tslib_1.__importStar(require("@effect-ts/core/Effect/Managed"));
|
|
9
9
|
const SC = tslib_1.__importStar(require("@effect-ts/core/Effect/Schedule"));
|
|
10
|
-
const CB = tslib_1.__importStar(require("callbag-effect-ts"));
|
|
11
10
|
const Function_1 = require("@effect-ts/core/Function");
|
|
12
11
|
const Has_1 = require("@effect-ts/core/Has");
|
|
12
|
+
const CB = tslib_1.__importStar(require("callbag-effect-ts"));
|
|
13
13
|
const Ws = tslib_1.__importStar(require("ws"));
|
|
14
14
|
const Log_1 = require("../Log");
|
|
15
15
|
exports.Reconnect = Symbol();
|
|
@@ -40,7 +40,7 @@ const send = (ws, out) => (CB.drain(CB.tap_(CB.tap_(CB.unwrap(T.map_(T.effectAsy
|
|
|
40
40
|
cb(T.unit);
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
}, fileName_1 + ":52:18"), () =>
|
|
43
|
+
}, fileName_1 + ":52:18"), () => out, fileName_1 + ":61:10")), (p) => (0, Log_1.logDebug)("WSService", "send", p)), (data) => T.effectAsync((cb) => {
|
|
44
44
|
if (data === exports.Reconnect) {
|
|
45
45
|
ws.close(1012, "reconnecting");
|
|
46
46
|
cb(T.unit);
|
|
@@ -57,14 +57,14 @@ const send = (ws, out) => (CB.drain(CB.tap_(CB.tap_(CB.unwrap(T.map_(T.effectAsy
|
|
|
57
57
|
}
|
|
58
58
|
}, fileName_1 + ":65:20"))));
|
|
59
59
|
const duplex = (out) => (ws) => CB.merge_(recv(ws), send(ws, out));
|
|
60
|
-
const openDuplex = (url, out, options) => (CB.retry_(CB.unwrapManaged(M.map_(openSocket(url, options), duplex(out), fileName_1 + ":
|
|
60
|
+
const openDuplex = (url, out, options) => (CB.retry_(CB.unwrapManaged(M.map_(openSocket(url, options), duplex(out), fileName_1 + ":89:10")), SC.recurWhile((e) => e._tag === "close" && e.code === 1012)));
|
|
61
61
|
const makeService = () => ({
|
|
62
62
|
_tag: "WSService",
|
|
63
63
|
open: openDuplex,
|
|
64
64
|
});
|
|
65
65
|
exports.WS = (0, Has_1.tag)();
|
|
66
|
-
exports.LiveWS = T.toLayer(exports.WS)(T.succeedWith(makeService, fileName_1 + ":
|
|
66
|
+
exports.LiveWS = T.toLayer(exports.WS)(T.succeedWith(makeService, fileName_1 + ":102:50"));
|
|
67
67
|
// Helpers
|
|
68
|
-
const open = (url, out, options) => T.accessService(exports.WS)(({ open }) => open(url, out, options), fileName_1 + ":
|
|
68
|
+
const open = (url, out, options) => T.accessService(exports.WS)(({ open }) => open(url, out, options), fileName_1 + ":106:22");
|
|
69
69
|
exports.open = open;
|
|
70
70
|
//# sourceMappingURL=index.js.map
|
package/WS/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA2C;AAC3C,0EAAmD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
package/WS/index.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as T from "@effect-ts/core/Effect"
|
|
2
2
|
import * as M from "@effect-ts/core/Effect/Managed"
|
|
3
|
-
import * as Q from "@effect-ts/core/Effect/Queue"
|
|
4
3
|
import * as SC from "@effect-ts/core/Effect/Schedule"
|
|
5
|
-
import * as CB from "callbag-effect-ts"
|
|
6
4
|
import { pipe } from "@effect-ts/core/Function"
|
|
7
5
|
import { tag } from "@effect-ts/core/Has"
|
|
6
|
+
import * as CB from "callbag-effect-ts"
|
|
7
|
+
import { EffectSource } from "callbag-effect-ts"
|
|
8
8
|
import * as Ws from "ws"
|
|
9
9
|
import { logDebug } from "../Log"
|
|
10
10
|
|
|
@@ -16,7 +16,7 @@ export type WsError =
|
|
|
16
16
|
export const Reconnect = Symbol()
|
|
17
17
|
export type Reconnect = typeof Reconnect
|
|
18
18
|
export type Message = string | Buffer | ArrayBuffer | Reconnect
|
|
19
|
-
export type
|
|
19
|
+
export type Outbound = EffectSource<unknown, never, Message>
|
|
20
20
|
|
|
21
21
|
const openSocket = (url: string, options?: Ws.ClientOptions) =>
|
|
22
22
|
pipe(
|
|
@@ -30,7 +30,7 @@ const openSocket = (url: string, options?: Ws.ClientOptions) =>
|
|
|
30
30
|
)
|
|
31
31
|
|
|
32
32
|
const recv = (ws: Ws.WebSocket) =>
|
|
33
|
-
CB.async<
|
|
33
|
+
CB.async<WsError, Ws.RawData>((emit) => {
|
|
34
34
|
ws.on("message", (message) => emit.data(message))
|
|
35
35
|
ws.on("error", (cause) => {
|
|
36
36
|
emit.fail({
|
|
@@ -47,7 +47,7 @@ const recv = (ws: Ws.WebSocket) =>
|
|
|
47
47
|
)
|
|
48
48
|
})
|
|
49
49
|
|
|
50
|
-
const send = (ws: Ws.WebSocket, out:
|
|
50
|
+
const send = (ws: Ws.WebSocket, out: Outbound) =>
|
|
51
51
|
pipe(
|
|
52
52
|
T.effectAsync<unknown, WsError, void>((cb) => {
|
|
53
53
|
if (ws.readyState & ws.OPEN) {
|
|
@@ -58,7 +58,7 @@ const send = (ws: Ws.WebSocket, out: OutboundQueue) =>
|
|
|
58
58
|
})
|
|
59
59
|
}
|
|
60
60
|
}),
|
|
61
|
-
T.map(() =>
|
|
61
|
+
T.map(() => out),
|
|
62
62
|
CB.unwrap,
|
|
63
63
|
CB.tap((p) => logDebug("WSService", "send", p)),
|
|
64
64
|
CB.tap((data) =>
|
|
@@ -80,14 +80,10 @@ const send = (ws: Ws.WebSocket, out: OutboundQueue) =>
|
|
|
80
80
|
CB.drain,
|
|
81
81
|
)
|
|
82
82
|
|
|
83
|
-
const duplex = (out:
|
|
83
|
+
const duplex = (out: Outbound) => (ws: Ws.WebSocket) =>
|
|
84
84
|
CB.merge_(recv(ws), send(ws, out))
|
|
85
85
|
|
|
86
|
-
const openDuplex = (
|
|
87
|
-
url: string,
|
|
88
|
-
out: OutboundQueue,
|
|
89
|
-
options?: Ws.ClientOptions,
|
|
90
|
-
) =>
|
|
86
|
+
const openDuplex = (url: string, out: Outbound, options?: Ws.ClientOptions) =>
|
|
91
87
|
pipe(
|
|
92
88
|
openSocket(url, options),
|
|
93
89
|
M.map(duplex(out)),
|
|
@@ -106,8 +102,5 @@ export const WS = tag<WS>()
|
|
|
106
102
|
export const LiveWS = T.toLayer(WS)(T.succeedWith(makeService))
|
|
107
103
|
|
|
108
104
|
// Helpers
|
|
109
|
-
export const open = (
|
|
110
|
-
url
|
|
111
|
-
out: OutboundQueue,
|
|
112
|
-
options?: Ws.ClientOptions,
|
|
113
|
-
) => T.accessService(WS)(({ open }) => open(url, out, options))
|
|
105
|
+
export const open = (url: string, out: Outbound, options?: Ws.ClientOptions) =>
|
|
106
|
+
T.accessService(WS)(({ open }) => open(url, out, options))
|
|
@@ -3,7 +3,6 @@ const fileName_1 = "DiscordShard/index.ts";
|
|
|
3
3
|
import * as T from "@effect-ts/core/Effect";
|
|
4
4
|
import * as L from "@effect-ts/core/Effect/Layer";
|
|
5
5
|
import * as M from "@effect-ts/core/Effect/Managed";
|
|
6
|
-
import * as Q from "@effect-ts/core/Effect/Queue";
|
|
7
6
|
import { flow, pipe } from "@effect-ts/core/Function";
|
|
8
7
|
import { tag } from "@effect-ts/core/Has";
|
|
9
8
|
import * as O from "@effect-ts/core/Option";
|
|
@@ -17,35 +16,38 @@ import * as Identify from "./identify";
|
|
|
17
16
|
import * as Invalid from "./invalidSession";
|
|
18
17
|
import * as Utils from "./utils";
|
|
19
18
|
const makeImpl = (shard) => M.gen(function* (_) {
|
|
20
|
-
const token = yield* _(Config.token, fileName_1 + ":
|
|
21
|
-
const gateway = yield* _(Config.gateway, fileName_1 + ":
|
|
22
|
-
const outbound =
|
|
23
|
-
const
|
|
24
|
-
|
|
19
|
+
const token = yield* _(Config.token, fileName_1 + ":28:27");
|
|
20
|
+
const gateway = yield* _(Config.gateway, fileName_1 + ":29:29");
|
|
21
|
+
const [emit, outbound] = CB.asyncEmitter();
|
|
22
|
+
const sendMessages = CB.forEach((p) => T.succeedWith(() => {
|
|
23
|
+
emit.data(p);
|
|
24
|
+
}, fileName_1 + ":33:20"));
|
|
25
|
+
const [latestReady, updateLatestReady] = yield* _(Utils.latest(flow(O.fromPredicate((p) => p.op === GatewayOpcode.DISPATCH && p.t === "READY"), O.map((p) => p.d))), fileName_1 + ":38:54");
|
|
26
|
+
const [latestSequence, updateLatestSequence] = yield* _(Utils.latest((p) => O.fromNullable(p.s)), fileName_1 + ":49:60");
|
|
25
27
|
const raw = (CB.share(CB.unwrap(DWS.open({
|
|
26
28
|
outgoingQueue: outbound,
|
|
27
29
|
}))));
|
|
28
30
|
const updateRefs = (CB.runDrain(updateLatestReady(updateLatestSequence(raw))));
|
|
29
31
|
const dispatch = (CB.share(CB.filter_(raw, (p) => p.op === GatewayOpcode.DISPATCH)));
|
|
30
32
|
// heartbeats
|
|
31
|
-
const heartbeatEffects = (
|
|
33
|
+
const heartbeatEffects = (sendMessages(Heartbeats.fromRaw(raw, latestSequence)));
|
|
32
34
|
// identify
|
|
33
|
-
const identifyEffects = (
|
|
35
|
+
const identifyEffects = (sendMessages(Identify.fromRaw(raw, {
|
|
34
36
|
token,
|
|
35
37
|
shard,
|
|
36
38
|
intents: gateway.intents,
|
|
37
39
|
presence: gateway.presence,
|
|
38
40
|
latestSequence,
|
|
39
41
|
latestReady,
|
|
40
|
-
})
|
|
42
|
+
})));
|
|
41
43
|
// invalid session
|
|
42
|
-
const invalidEffects = (
|
|
44
|
+
const invalidEffects = (sendMessages(Invalid.fromRaw(raw, latestReady)));
|
|
43
45
|
return {
|
|
44
|
-
run: (T.ignore(T.zipPar(invalidEffects, fileName_1 + ":
|
|
46
|
+
run: (T.ignore(T.zipPar(invalidEffects, fileName_1 + ":103:17")(T.zipPar(identifyEffects, fileName_1 + ":102:17")(T.zipPar(heartbeatEffects, fileName_1 + ":101:17")(updateRefs))), fileName_1 + ":104:17")),
|
|
45
47
|
raw,
|
|
46
48
|
dispatch,
|
|
47
|
-
send: (p) =>
|
|
48
|
-
reconnect: () =>
|
|
49
|
+
send: (p) => emit.data(p),
|
|
50
|
+
reconnect: () => emit.data(Reconnect),
|
|
49
51
|
};
|
|
50
52
|
});
|
|
51
53
|
const makeService = () => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../DiscordShard/index.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAA;AAC3C,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAA;AACjD,OAAO,KAAK,CAAC,MAAM,gCAAgC,CAAA;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../DiscordShard/index.ts"],"names":[],"mappings":"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"}
|
package/esm/DiscordWS/index.js
CHANGED
|
@@ -2,7 +2,6 @@ import * as tracing_1 from "@effect-ts/core/Tracing";
|
|
|
2
2
|
const fileName_1 = "DiscordWS/index.ts";
|
|
3
3
|
import * as T from "@effect-ts/core/Effect";
|
|
4
4
|
import * as L from "@effect-ts/core/Effect/Layer";
|
|
5
|
-
import * as Q from "@effect-ts/core/Effect/Queue";
|
|
6
5
|
import * as SC from "@effect-ts/core/Effect/Schedule";
|
|
7
6
|
import { pipe } from "@effect-ts/core/Function";
|
|
8
7
|
import { tag } from "@effect-ts/core/Has";
|
|
@@ -14,12 +13,7 @@ export const jsonEncoding = {
|
|
|
14
13
|
encode: (p) => JSON.stringify(p),
|
|
15
14
|
decode: (p) => JSON.parse(p.toString("utf8")),
|
|
16
15
|
};
|
|
17
|
-
const makeOutgoing = (
|
|
18
|
-
if (data === WS.Reconnect) {
|
|
19
|
-
return data;
|
|
20
|
-
}
|
|
21
|
-
return e.encode(data);
|
|
22
|
-
});
|
|
16
|
+
const makeOutgoing = (out, e) => CB.map_(out, (data) => (data === WS.Reconnect ? data : e.encode(data)));
|
|
23
17
|
const openImpl = ({ url = "wss://gateway.discord.gg/", version = 9, encoding = jsonEncoding, outgoingQueue: outgoing, }) => (CB.map_(CB.retry_(CB.tapError_(CB.unwrap(WS.open(`${url}?v=${version}&encoding=${encoding.type}`, makeOutgoing(outgoing, encoding))), (e) => log(serviceTag, "error", e)), SC.exponential(500)), encoding.decode));
|
|
24
18
|
// Service definition
|
|
25
19
|
const serviceTag = "DiscordWSService";
|
|
@@ -30,5 +24,5 @@ const makeService = () => ({
|
|
|
30
24
|
export const DiscordWS = tag();
|
|
31
25
|
export const LiveDiscordWS = L.fromFunction(DiscordWS)(makeService);
|
|
32
26
|
// Helpers
|
|
33
|
-
export const open = (opts) => T.accessService(DiscordWS)(({ open }) => open(opts), fileName_1 + ":
|
|
27
|
+
export const open = (opts) => T.accessService(DiscordWS)(({ open }) => open(opts), fileName_1 + ":78:29");
|
|
34
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../DiscordWS/index.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAA;AAC3C,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAA;AACjD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../DiscordWS/index.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAA;AAC3C,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,iCAAiC,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAO,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAE9C,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAGvC,OAAO,EAAE,GAAG,EAAO,MAAM,QAAQ,CAAA;AAEjC,OAAO,KAAK,EAAE,MAAM,OAAO,CAAA;AAiB3B,MAAM,CAAC,MAAM,YAAY,GAAa;IACpC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC9C,CAAA;AAED,MAAM,YAAY,GAAG,CACnB,GAA0C,EAC1C,CAAW,EACE,EAAE,CACf,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEzE,MAAM,QAAQ,GAAG,CAAC,EAChB,GAAG,GAAG,2BAA2B,EACjC,OAAO,GAAG,CAAC,EACX,QAAQ,GAAG,YAAY,EACvB,aAAa,EAAE,QAAQ,GACd,EAAE,EAAE,CACb,CAQE,EAAE,MADF,EAAE,QADF,EAAE,WADF,EAAE,CAAC,MAAM,CAJT,EAAE,CAAC,IAAI,CACL,GAAG,GAAG,MAAM,OAAO,aAAa,QAAQ,CAAC,IAAI,EAAE,EAC/C,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACjC,GAEW,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,GACrC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GACrB,QAAQ,CAAC,MAAM,EAKvB,CAAA;AAIH,qBAAqB;AACrB,MAAM,UAAU,GAAG,kBAA2B,CAAA;AAC9C,MAAM,WAAW,GAAG,GAAG,EAAE,CACvB,CAAC;IACC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;CACL,CAAA,CAAA;AAGb,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAa,CAAA;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAA;AAEnE,UAAU;AACV,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,IAAc,EAAE,EAAE,CACrC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAC,CAAA"}
|
package/esm/WS/index.js
CHANGED
|
@@ -3,9 +3,9 @@ const fileName_1 = "WS/index.ts";
|
|
|
3
3
|
import * as T from "@effect-ts/core/Effect";
|
|
4
4
|
import * as M from "@effect-ts/core/Effect/Managed";
|
|
5
5
|
import * as SC from "@effect-ts/core/Effect/Schedule";
|
|
6
|
-
import * as CB from "callbag-effect-ts";
|
|
7
6
|
import { pipe } from "@effect-ts/core/Function";
|
|
8
7
|
import { tag } from "@effect-ts/core/Has";
|
|
8
|
+
import * as CB from "callbag-effect-ts";
|
|
9
9
|
import * as Ws from "ws";
|
|
10
10
|
import { logDebug } from "../Log";
|
|
11
11
|
export const Reconnect = Symbol();
|
|
@@ -36,7 +36,7 @@ const send = (ws, out) => (CB.drain(CB.tap_(CB.tap_(CB.unwrap(T.map_(T.effectAsy
|
|
|
36
36
|
cb(T.unit);
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
}, fileName_1 + ":52:18"), () =>
|
|
39
|
+
}, fileName_1 + ":52:18"), () => out, fileName_1 + ":61:10")), (p) => logDebug("WSService", "send", p)), (data) => T.effectAsync((cb) => {
|
|
40
40
|
if (data === Reconnect) {
|
|
41
41
|
ws.close(1012, "reconnecting");
|
|
42
42
|
cb(T.unit);
|
|
@@ -53,13 +53,13 @@ const send = (ws, out) => (CB.drain(CB.tap_(CB.tap_(CB.unwrap(T.map_(T.effectAsy
|
|
|
53
53
|
}
|
|
54
54
|
}, fileName_1 + ":65:20"))));
|
|
55
55
|
const duplex = (out) => (ws) => CB.merge_(recv(ws), send(ws, out));
|
|
56
|
-
const openDuplex = (url, out, options) => (CB.retry_(CB.unwrapManaged(M.map_(openSocket(url, options), duplex(out), fileName_1 + ":
|
|
56
|
+
const openDuplex = (url, out, options) => (CB.retry_(CB.unwrapManaged(M.map_(openSocket(url, options), duplex(out), fileName_1 + ":89:10")), SC.recurWhile((e) => e._tag === "close" && e.code === 1012)));
|
|
57
57
|
const makeService = () => ({
|
|
58
58
|
_tag: "WSService",
|
|
59
59
|
open: openDuplex,
|
|
60
60
|
});
|
|
61
61
|
export const WS = tag();
|
|
62
|
-
export const LiveWS = T.toLayer(WS)(T.succeedWith(makeService, fileName_1 + ":
|
|
62
|
+
export const LiveWS = T.toLayer(WS)(T.succeedWith(makeService, fileName_1 + ":102:50"));
|
|
63
63
|
// Helpers
|
|
64
|
-
export const open = (url, out, options) => T.accessService(WS)(({ open }) => open(url, out, options), fileName_1 + ":
|
|
64
|
+
export const open = (url, out, options) => T.accessService(WS)(({ open }) => open(url, out, options), fileName_1 + ":106:22");
|
|
65
65
|
//# sourceMappingURL=index.js.map
|
package/esm/WS/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../WS/index.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAA;AAC3C,OAAO,KAAK,CAAC,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../WS/index.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAA;AAC3C,OAAO,KAAK,CAAC,MAAM,gCAAgC,CAAA;AACnD,OAAO,KAAK,EAAE,MAAM,iCAAiC,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEvC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAOjC,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAA;AAKjC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,OAA0B,EAAE,EAAE,EAG3D,CAAC,WADD,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,wBAAC,EACxC,CAAC,EAAE,EAAE,EAAE,CAChB,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE;IACjB,EAAE,CAAC,kBAAkB,EAAE,CAAA;IACvB,EAAE,CAAC,KAAK,EAAE,CAAA;AACZ,CAAC,wBAAC,yBAEL,CAAA;AAEH,MAAM,IAAI,GAAG,CAAC,EAAgB,EAAE,EAAE,CAChC,EAAE,CAAC,KAAK,CAAsB,CAAC,IAAI,EAAE,EAAE;IACrC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACjD,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,OAAO;YACb,KAAK;SACN,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAC9B,IAAI,CAAC,IAAI,CAAC;QACR,IAAI,EAAE,OAAO;QACb,IAAI;QACJ,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;KAChC,CAAC,CACH,CAAA;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,IAAI,GAAG,CAAC,EAAgB,EAAE,GAAa,EAAE,EAAE,EA8B7C,EAAE,CAAC,KAAK,CAhBR,EAAE,MADF,EAAE,MADF,EAAE,CAAC,MAAM,CADT,CAAC,MATD,CAAC,CAAC,WAAW,CAAyB,CAAC,EAAE,EAAE,EAAE;IAC3C,IAAI,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI,EAAE;QAC3B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;KACX;SAAM;QACL,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACZ,CAAC,CAAC,CAAA;KACH;AACH,CAAC,wBAAC,EACI,GAAG,EAAE,CAAC,GAAG,2BAER,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,GACvC,CAAC,IAAI,EAAE,EAAE,CACd,CAAC,CAAC,WAAW,CAAyB,CAAC,EAAE,EAAE,EAAE;IAC3C,IAAI,IAAI,KAAK,SAAS,EAAE;QACtB,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;QAC9B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;KACX;SAAM;QACL,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;YACpB,IAAI,GAAG,EAAE;gBACP,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,wBAAC,CAAC,CAAA;aAC1C;iBAAM;gBACL,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;aACX;QACH,CAAC,CAAC,CAAA;KACH;AACH,CAAC,wBAAC,GAGL,CAAA;AAEH,MAAM,MAAM,GAAG,CAAC,GAAa,EAAE,EAAE,CAAC,CAAC,EAAgB,EAAE,EAAE,CACrD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;AAEpC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,GAAa,EAAE,OAA0B,EAAE,EAAE,EAK1E,EAAE,QADF,EAAE,CAAC,aAAa,CADhB,CAAC,MADD,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,EAClB,MAAM,CAAC,GAAG,CAAC,2BAER,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EACrE,CAAA;AAEH,MAAM,WAAW,GAAG,GAAG,EAAE,CACvB,CAAC;IACC,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,UAAU;CACP,CAAA,CAAA;AAGb,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,EAAM,CAAA;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,yBAAC,CAAC,CAAA;AAE/D,UAAU;AACV,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,GAAa,EAAE,OAA0B,EAAE,EAAE,CAC7E,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,yBAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dfx",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Effect-TS discord library",
|
|
5
5
|
"main": "mod.js",
|
|
6
6
|
"author": "Tim Smart <tim.smart@arisechurch.com>",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@effect-ts/tracing-plugin": "^0.19.0",
|
|
25
25
|
"@tim-smart/discord-api-docs-parser": "^0.3.0",
|
|
26
26
|
"@types/ws": "^8.5.3",
|
|
27
|
-
"callbag-effect-ts": "^0.
|
|
27
|
+
"callbag-effect-ts": "^0.10.2",
|
|
28
28
|
"dotenv": "^16.0.0",
|
|
29
29
|
"lerna": "^4.0.0",
|
|
30
30
|
"prettier": "^2.5.1",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"ws": "^8.5.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
|
-
"callbag-effect-ts": "^0.
|
|
44
|
+
"callbag-effect-ts": "^0.10"
|
|
45
45
|
},
|
|
46
46
|
"exports": {
|
|
47
47
|
".": {
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"require": "./WS/index.js"
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "c88abef23929178b1774bf243d6ba3c3e42d523e"
|
|
67
67
|
}
|
package/types.d.ts
CHANGED
|
@@ -151,7 +151,7 @@ export interface Application {
|
|
|
151
151
|
privacy_policy_url?: string;
|
|
152
152
|
/** partial user object containing info on the owner of the application */
|
|
153
153
|
owner?: User;
|
|
154
|
-
/** if this application
|
|
154
|
+
/** deprecated: previously if this application was a game sold on Discord, this field would be the summary field for the store page of its primary SKU; now an empty string */
|
|
155
155
|
summary: string;
|
|
156
156
|
/** the hex encoded key for verification in interactions and the GameSDK's GetTicket */
|
|
157
157
|
verify_key: string;
|
|
@@ -2186,7 +2186,7 @@ export interface InteractionCallbackMessage {
|
|
|
2186
2186
|
export interface InteractionCallbackModal {
|
|
2187
2187
|
/** a developer-defined identifier for the component, max 100 characters */
|
|
2188
2188
|
custom_id: string;
|
|
2189
|
-
/** the title of the popup modal */
|
|
2189
|
+
/** the title of the popup modal, max 45 characters */
|
|
2190
2190
|
title: string;
|
|
2191
2191
|
/** between 1 and 5 (inclusive) components that make up the modal */
|
|
2192
2192
|
components: Component[];
|
package/types.ts
CHANGED
|
@@ -151,7 +151,7 @@ export interface Application {
|
|
|
151
151
|
privacy_policy_url?: string
|
|
152
152
|
/** partial user object containing info on the owner of the application */
|
|
153
153
|
owner?: User
|
|
154
|
-
/** if this application
|
|
154
|
+
/** deprecated: previously if this application was a game sold on Discord, this field would be the summary field for the store page of its primary SKU; now an empty string */
|
|
155
155
|
summary: string
|
|
156
156
|
/** the hex encoded key for verification in interactions and the GameSDK's GetTicket */
|
|
157
157
|
verify_key: string
|
|
@@ -3940,7 +3940,7 @@ export interface InteractionCallbackMessage {
|
|
|
3940
3940
|
export interface InteractionCallbackModal {
|
|
3941
3941
|
/** a developer-defined identifier for the component, max 100 characters */
|
|
3942
3942
|
custom_id: string
|
|
3943
|
-
/** the title of the popup modal */
|
|
3943
|
+
/** the title of the popup modal, max 45 characters */
|
|
3944
3944
|
title: string
|
|
3945
3945
|
/** between 1 and 5 (inclusive) components that make up the modal */
|
|
3946
3946
|
components: Component[]
|