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.
@@ -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>) => T.Effect<unknown, never, boolean>;
13
- readonly reconnect: () => T.Effect<unknown, never, boolean>;
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> {
@@ -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) => T.Effect<unknown, never, boolean>;
18
- readonly reconnect: () => T.Effect<unknown, never, boolean>;
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) => T.Effect<unknown, never, boolean>;
30
- readonly reconnect: () => T.Effect<unknown, never, boolean>;
29
+ readonly send: (p: GatewayPayload) => void;
30
+ readonly reconnect: () => void;
31
31
  }>;
32
32
  export {};
@@ -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 + ":29:27");
25
- const gateway = yield* _(Config.gateway, fileName_1 + ":30:29");
26
- const outbound = yield* _(Q.makeUnbounded(), fileName_1 + ":31:30");
27
- 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 + ":33:54");
28
- const [latestSequence, updateLatestSequence] = yield* _(Utils.latest((p) => O.fromNullable(p.s)), fileName_1 + ":44:60");
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 = (CB.forEach_(Heartbeats.fromRaw(raw, latestSequence), (p) => Q.offer_(outbound, p)));
37
+ const heartbeatEffects = (sendMessages(Heartbeats.fromRaw(raw, latestSequence)));
36
38
  // identify
37
- const identifyEffects = (CB.forEach_(Identify.fromRaw(raw, {
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
- }), (p) => Q.offer_(outbound, p)));
46
+ })));
45
47
  // invalid session
46
- const invalidEffects = (CB.forEach_(Invalid.fromRaw(raw, latestReady), (p) => Q.offer_(outbound, p)));
48
+ const invalidEffects = (sendMessages(Invalid.fromRaw(raw, latestReady)));
47
49
  return {
48
- run: (T.ignore(T.zipPar(invalidEffects, fileName_1 + ":101:17")(T.zipPar(identifyEffects, fileName_1 + ":100:17")(T.zipPar(heartbeatEffects, fileName_1 + ":99:17")(updateRefs))), fileName_1 + ":102:17")),
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) => Q.offer_(outbound, p),
52
- reconnect: () => Q.offer_(outbound, WS_1.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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
@@ -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 = yield* _(Q.makeUnbounded<DWS.Message>())
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
- CB.forEach((p) => Q.offer_(outbound, p)),
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
- CB.forEach((p) => Q.offer_(outbound, p)),
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) => Q.offer_(outbound, p),
107
- reconnect: () => Q.offer_(outbound, Reconnect),
108
+ send: (p: GatewayPayload) => emit.data(p),
109
+ reconnect: () => emit.data(Reconnect),
108
110
  } as const
109
111
  })
110
112
 
@@ -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: Q.Queue<Message>;
17
+ outgoingQueue: EffectSource<unknown, never, Message>;
18
18
  }
19
19
  export interface Encoding {
20
20
  type: "json" | "etf";
@@ -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 = (q, e) => Q.map_(q, (data) => {
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 + ":82:29");
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA2C;AAC3C,wEAAiD;AACjD,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,CAAC,CAAmB,EAAE,CAAW,EAAoB,EAAE,CAC1E,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAc,EAAE;IAC7B,IAAI,IAAI,KAAK,EAAE,CAAC,SAAS,EAAE;QACzB,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC,CAAC,CAAA;AAEJ,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"}
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"}
@@ -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 { tag, Has } from "@effect-ts/core/Has"
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: Q.Queue<Message>
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 = (q: Q.Queue<Message>, e: Encoding): WS.OutboundQueue =>
37
- Q.map_(q, (data): WS.Message => {
38
- if (data === WS.Reconnect) {
39
- return data
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 OutboundQueue = Q.Dequeue<Message>;
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: OutboundQueue, options?: Ws.ClientOptions | undefined) => CB.EffectSource<import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, WsError, Ws.RawData>;
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: OutboundQueue, 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>>;
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"), () => CB.fromQueue(out), fileName_1 + ":61:10")), (p) => (0, Log_1.logDebug)("WSService", "send", p)), (data) => T.effectAsync((cb) => {
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 + ":93:10")), SC.recurWhile((e) => e._tag === "close" && e.code === 1012)));
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 + ":106:50"));
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 + ":113:25");
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":"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"}
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 OutboundQueue = Q.Dequeue<Message>
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<unknown, WsError, Ws.RawData>((emit) => {
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: OutboundQueue) =>
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(() => CB.fromQueue(out)),
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: OutboundQueue) => (ws: Ws.WebSocket) =>
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: string,
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 + ":29:27");
21
- const gateway = yield* _(Config.gateway, fileName_1 + ":30:29");
22
- const outbound = yield* _(Q.makeUnbounded(), fileName_1 + ":31:30");
23
- const [latestReady, updateLatestReady] = yield* _(Utils.latest(flow(O.fromPredicate((p) => p.op === GatewayOpcode.DISPATCH && p.t === "READY"), O.map((p) => p.d))), fileName_1 + ":33:54");
24
- const [latestSequence, updateLatestSequence] = yield* _(Utils.latest((p) => O.fromNullable(p.s)), fileName_1 + ":44:60");
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 = (CB.forEach_(Heartbeats.fromRaw(raw, latestSequence), (p) => Q.offer_(outbound, p)));
33
+ const heartbeatEffects = (sendMessages(Heartbeats.fromRaw(raw, latestSequence)));
32
34
  // identify
33
- const identifyEffects = (CB.forEach_(Identify.fromRaw(raw, {
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
- }), (p) => Q.offer_(outbound, p)));
42
+ })));
41
43
  // invalid session
42
- const invalidEffects = (CB.forEach_(Invalid.fromRaw(raw, latestReady), (p) => Q.offer_(outbound, p)));
44
+ const invalidEffects = (sendMessages(Invalid.fromRaw(raw, latestReady)));
43
45
  return {
44
- run: (T.ignore(T.zipPar(invalidEffects, fileName_1 + ":101:17")(T.zipPar(identifyEffects, fileName_1 + ":100:17")(T.zipPar(heartbeatEffects, fileName_1 + ":99:17")(updateRefs))), fileName_1 + ":102:17")),
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) => Q.offer_(outbound, p),
48
- reconnect: () => Q.offer_(outbound, 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":"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"}
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,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAC1C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAA;AACnC,OAAO,EAEL,aAAa,GAGd,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAMhC,MAAM,QAAQ,GAAG,CAAC,KAAkC,EAAE,EAAE,CACtD,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IAChB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,wBAAC,CAAA;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,wBAAC,CAAA;IACxC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,YAAY,EAAsB,CAAA;IAE9D,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAc,EAAE,EAAE,CACjD,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE;QACjB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACd,CAAC,wBAAC,CACH,CAAA;IAED,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAC/C,KAAK,CAAC,MAAM,CACV,IAAI,CACF,CAAC,CAAC,aAAa,CACb,CAAC,CAAC,EAAmC,EAAE,CACrC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CACrD,EACD,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CACnB,CACF,wBACF,CAAA;IACD,MAAM,CAAC,cAAc,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CACrD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBACzC,CAAA;IAED,MAAM,GAAG,IAKP,EAAE,CAAC,KAAK,CADR,EAAE,CAAC,MAAM,CAHT,GAAG,CAAC,IAAI,CAAC;QACP,aAAa,EAAE,QAAQ;KACxB,CAAC,GAGH,CAAA;IACD,MAAM,UAAU,IAId,EAAE,CAAC,QAAQ,CADX,iBAAiB,CADjB,oBAAoB,CADpB,GAAG,IAIJ,CAAA;IAED,MAAM,QAAQ,IAMZ,EAAE,CAAC,KAAK,CAJR,EAAE,SADF,GAAG,EAED,CAAC,CAAC,EAAqC,EAAE,CACvC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,QAAQ,GAGpC,CAAA;IAED,aAAa;IACb,MAAM,gBAAgB,IAEpB,YAAY,CADZ,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,EAExC,CAAA;IAED,WAAW;IACX,MAAM,eAAe,IASnB,YAAY,CARZ,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE;QACpB,KAAK;QACL,KAAK;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,cAAc;QACd,WAAW;KACZ,CAAC,EAEH,CAAA;IAED,kBAAkB;IAClB,MAAM,cAAc,IAA2C,YAAY,CAA/C,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,EAAe,CAAA;IAE5E,OAAO;QACL,GAAG,GAKD,CAAC,CAAC,MAAM,CADR,CAAC,CAAC,MAAM,CAAC,cAAc,yBAAC,CADxB,CAAC,CAAC,MAAM,CAAC,eAAe,yBAAC,CADzB,CAAC,CAAC,MAAM,CAAC,gBAAgB,yBAAC,CAD1B,UAAU,6BAKX;QACD,GAAG;QACH,QAAQ;QACR,IAAI,EAAE,CAAC,CAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;KAC7B,CAAA;AACZ,CAAC,CAAC,CAAA;AAEJ,MAAM,WAAW,GAAG,GAAG,EAAE,CACvB,CAAC;IACC,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,QAAQ;CACL,CAAA,CAAA;AAGb,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAgB,CAAA;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAuB,EAAE,EAAE,CAC9C,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA"}
@@ -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 = (q, e) => Q.map_(q, (data) => {
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 + ":82:29");
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,CAAC,MAAM,8BAA8B,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,iCAAiC,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,GAAG,EAAO,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,CAAC,CAAmB,EAAE,CAAW,EAAoB,EAAE,CAC1E,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAc,EAAE;IAC7B,IAAI,IAAI,KAAK,EAAE,CAAC,SAAS,EAAE;QACzB,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC,CAAC,CAAA;AAEJ,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"}
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"), () => CB.fromQueue(out), fileName_1 + ":61:10")), (p) => logDebug("WSService", "send", p)), (data) => T.effectAsync((cb) => {
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 + ":93:10")), SC.recurWhile((e) => e._tag === "close" && e.code === 1012)));
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 + ":106:50"));
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 + ":113:25");
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../WS/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../WS/index.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.0",
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.9.3",
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.9"
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": "da62d81057810fa1bb07bb0552d695e34cdea010"
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 is a game sold on Discord, this field will be the summary field for the store page of its primary sku */
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 is a game sold on Discord, this field will be the summary field for the store page of its primary sku */
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[]