dfx 0.1.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.
@@ -5,12 +5,12 @@ import * as Shard from "../DiscordShard";
5
5
  import * as CB from "callbag-effect-ts";
6
6
  import { GatewayEvents } from "../types";
7
7
  declare const make: M.Managed<import("@effect-ts/system/Has").Has<import("../DiscordConfig").DiscordConfig> & import("@effect-ts/system/Has").Has<Shard.DiscordShard>, never, {
8
- readonly fromDispatch: <K extends keyof GatewayEvents>(event: K) => 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, unknown, GatewayEvents[K]>;
8
+ readonly fromDispatch: <K extends keyof GatewayEvents>(event: K) => 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, GatewayEvents[K]>;
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
- 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, unknown, import("../types").GatewayPayload<any>>;
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, unknown, 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>;
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
+ 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>) => void;
13
+ readonly reconnect: () => void;
14
14
  readonly _tag: "DiscordGatewayService";
15
15
  }>;
16
16
  export interface DiscordGateway extends _A<typeof make> {
@@ -19,5 +19,5 @@ export declare const DiscordGateway: import("@effect-ts/system/Has").Tag<Discord
19
19
  export declare const LiveDiscordGateway: import("@effect-ts/system/Layer").Layer<import("@effect-ts/system/Has").Has<import("../DiscordConfig").DiscordConfig> & import("@effect-ts/system/Has").Has<Shard.DiscordShard>, never, import("@effect-ts/system/Has").Has<DiscordGateway>>;
20
20
  export declare const gateway: T.Effect<import("@effect-ts/system/Has").Has<DiscordGateway>, never, DiscordGateway>;
21
21
  export declare const run: T.Effect<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 & import("@effect-ts/system/Has").Has<DiscordGateway>, never, void>;
22
- export declare const fromDispatch: <K extends keyof GatewayEvents>(event: K) => CB.EffectSource<import("@effect-ts/system/Has").Has<DiscordGateway> & 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, unknown, GatewayEvents[K]>;
22
+ export declare const fromDispatch: <K extends keyof GatewayEvents>(event: K) => CB.EffectSource<import("@effect-ts/system/Has").Has<DiscordGateway> & 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, GatewayEvents[K]>;
23
23
  export {};
@@ -1,11 +1,15 @@
1
1
  import * as T from "@effect-ts/core/Effect";
2
- import { AxiosInstance, AxiosRequestConfig } from "axios";
2
+ import { _A } from "@effect-ts/core/Utils";
3
+ import { AxiosRequestConfig } from "axios";
3
4
  import * as Config from "../DiscordConfig";
4
- import { Endpoints } from "../types";
5
- export interface DiscordREST extends Endpoints<AxiosRequestConfig> {
6
- _tag: "DiscordREST";
7
- axios: AxiosInstance;
5
+ declare const make: T.Effect<import("@effect-ts/system/Has").Has<Config.DiscordConfig>, never, {
6
+ _tag: string;
7
+ axios: import("axios").AxiosInstance;
8
+ request: <A>(config: AxiosRequestConfig<any>) => import("./types").Response<A>;
9
+ }>;
10
+ export interface DiscordREST extends _A<typeof make> {
8
11
  }
9
12
  export declare const DiscordREST: import("@effect-ts/system/Has").Tag<DiscordREST>;
10
13
  export declare const LiveDiscordREST: import("@effect-ts/system/Layer").Layer<import("@effect-ts/system/Has").Has<Config.DiscordConfig>, never, import("@effect-ts/system/Has").Has<DiscordREST>>;
11
- export declare const rest: <R, E, B>(f: (a: DiscordREST) => T.Effect<R, E, B>, __trace?: string | undefined) => T.Effect<R & import("@effect-ts/system/Has").Has<DiscordREST>, E, B>;
14
+ export declare const rest: import("../types").Endpoints<AxiosRequestConfig<any>>;
15
+ export {};
@@ -5,15 +5,14 @@ const tslib_1 = require("tslib");
5
5
  const tracing_1 = tslib_1.__importStar(require("@effect-ts/core/Tracing"));
6
6
  const fileName_1 = "DiscordREST/index.ts";
7
7
  const T = tslib_1.__importStar(require("@effect-ts/core/Effect"));
8
- const Has_1 = require("@effect-ts/system/Has");
8
+ const Has_1 = require("@effect-ts/core/Has");
9
9
  const axios_1 = tslib_1.__importDefault(require("axios"));
10
10
  const Config = tslib_1.__importStar(require("../DiscordConfig"));
11
11
  const types_1 = require("../types");
12
12
  const Http = tslib_1.__importStar(require("./http"));
13
- exports.DiscordREST = (0, Has_1.tag)();
14
13
  const make = T.gen(function* (_) {
15
- const token = yield* _(Config.token, fileName_1 + ":20:25");
16
- const config = yield* _(Config.rest, fileName_1 + ":21:26");
14
+ const token = yield* _(Config.token, fileName_1 + ":15:25");
15
+ const config = yield* _(Config.rest, fileName_1 + ":16:26");
17
16
  const axios = axios_1.default.create({
18
17
  baseURL: config.baseUrl,
19
18
  headers: {
@@ -21,45 +20,44 @@ const make = T.gen(function* (_) {
21
20
  },
22
21
  });
23
22
  const request = Http.request(axios);
24
- const routes = (0, types_1.createRoutes)(({ method, url, params = {}, options = {} }) => {
25
- const hasBody = method !== "GET" && method !== "DELETE";
26
- let hasFormData = false;
27
- if (typeof options.data?.append === "function") {
28
- hasFormData = true;
29
- options.data.append("payload_json", JSON.stringify(params));
30
- }
31
- const qsParams = hasBody
32
- ? options.params
33
- : {
34
- ...(options.params || {}),
35
- ...params,
36
- };
37
- const data = hasFormData || !hasBody
38
- ? options.data
39
- : {
40
- ...(options.data || {}),
41
- ...params,
42
- };
43
- const config = {
44
- ...options,
45
- headers: {
46
- ...(options.headers || {}),
47
- ...(hasFormData ? data.getHeaders() : {}),
48
- },
49
- method: method,
50
- url,
51
- params: qsParams,
52
- data,
53
- };
54
- return request(config);
55
- });
56
- const rest = {
23
+ return {
57
24
  _tag: "DiscordREST",
58
25
  axios,
59
- ...routes,
26
+ request,
60
27
  };
61
- return rest;
62
- }, fileName_1 + ":19:19");
28
+ }, fileName_1 + ":14:19");
29
+ exports.DiscordREST = (0, Has_1.tag)();
63
30
  exports.LiveDiscordREST = T.toLayer(exports.DiscordREST)(make);
64
- exports.rest = T.accessServiceM(exports.DiscordREST);
31
+ exports.rest = (0, types_1.createRoutes)(({ method, url, params = {}, options = {} }) => T.accessServiceM(exports.DiscordREST)(({ request }) => {
32
+ const hasBody = method !== "GET" && method !== "DELETE";
33
+ let hasFormData = false;
34
+ if (typeof options.data?.append === "function") {
35
+ hasFormData = true;
36
+ options.data.append("payload_json", JSON.stringify(params));
37
+ }
38
+ const qsParams = hasBody
39
+ ? options.params
40
+ : {
41
+ ...(options.params || {}),
42
+ ...params,
43
+ };
44
+ const data = hasFormData || !hasBody
45
+ ? options.data
46
+ : {
47
+ ...(options.data || {}),
48
+ ...params,
49
+ };
50
+ const config = {
51
+ ...options,
52
+ headers: {
53
+ ...(options.headers || {}),
54
+ ...(hasFormData ? data.getHeaders() : {}),
55
+ },
56
+ method: method,
57
+ url,
58
+ params: qsParams,
59
+ data,
60
+ };
61
+ return request(config);
62
+ }, fileName_1 + ":39:34"));
65
63
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA2C;AAC3C,+CAA2C;AAC3C,0DAAwE;AACxE,iEAA0C;AAC1C,oCAAkD;AAClD,qDAA8B;AAMjB,QAAA,WAAW,GAAG,IAAA,SAAG,GAAe,CAAA;AAO7C,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,wBAAC,CAAA;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,wBAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,eAAK,CAAC,MAAM,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE;YACP,aAAa,EAAE,OAAO,KAAK,EAAE;SAC9B;KACF,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACnC,MAAM,MAAM,GAAG,IAAA,oBAAY,EACzB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAA;QACvD,IAAI,WAAW,GAAG,KAAK,CAAA;QAEvB,IAAI,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,EAAE;YAC9C,WAAW,GAAG,IAAI,CACjB;YAAC,OAAO,CAAC,IAAiB,CAAC,MAAM,CAChC,cAAc,EACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACvB,CAAA;SACF;QAED,MAAM,QAAQ,GAAG,OAAO;YACtB,CAAC,CAAC,OAAO,CAAC,MAAM;YAChB,CAAC,CAAC;gBACE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;gBACzB,GAAG,MAAM;aACV,CAAA;QACL,MAAM,IAAI,GACR,WAAW,IAAI,CAAC,OAAO;YACrB,CAAC,CAAC,OAAO,CAAC,IAAI;YACd,CAAC,CAAC;gBACE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;gBACvB,GAAG,MAAM;aACV,CAAA;QAEP,MAAM,MAAM,GAAG;YACb,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC1B,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1C;YACD,MAAM,EAAE,MAAgB;YACxB,GAAG;YACH,MAAM,EAAE,QAAQ;YAChB,IAAI;SACL,CAAA;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;IACxB,CAAC,CACF,CAAA;IAED,MAAM,IAAI,GAAgB;QACxB,IAAI,EAAE,aAAa;QACnB,KAAK;QACL,GAAG,MAAM;KACV,CAAA;IAED,OAAO,IAAI,CAAA;AACb,CAAC,wBAAC,CAAA;AAEW,QAAA,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAC,IAAI,CAAC,CAAA;AAE9C,QAAA,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,mBAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA2C;AAC3C,6CAAyC;AAEzC,0DAAyD;AACzD,iEAA0C;AAC1C,oCAAuC;AACvC,qDAA8B;AAO9B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,wBAAC,CAAA;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,wBAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,eAAK,CAAC,MAAM,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE;YACP,aAAa,EAAE,OAAO,KAAK,EAAE;SAC9B;KACF,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAEnC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,KAAK;QACL,OAAO;KACR,CAAA;AACH,CAAC,wBAAC,CAAA;AAGW,QAAA,WAAW,GAAG,IAAA,SAAG,GAAe,CAAA;AAChC,QAAA,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAC,IAAI,CAAC,CAAA;AAE9C,QAAA,IAAI,GAAG,IAAA,oBAAY,EAC9B,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE,CAC7C,CAAC,CAAC,cAAc,CAAC,mBAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC5C,MAAM,OAAO,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAA;IACvD,IAAI,WAAW,GAAG,KAAK,CAAA;IAEvB,IAAI,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,EAAE;QAC9C,WAAW,GAAG,IAAI,CACjB;QAAC,OAAO,CAAC,IAAiB,CAAC,MAAM,CAChC,cAAc,EACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACvB,CAAA;KACF;IAED,MAAM,QAAQ,GAAG,OAAO;QACtB,CAAC,CAAC,OAAO,CAAC,MAAM;QAChB,CAAC,CAAC;YACE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;YACzB,GAAG,MAAM;SACV,CAAA;IACL,MAAM,IAAI,GACR,WAAW,IAAI,CAAC,OAAO;QACrB,CAAC,CAAC,OAAO,CAAC,IAAI;QACd,CAAC,CAAC;YACE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YACvB,GAAG,MAAM;SACV,CAAA;IAEP,MAAM,MAAM,GAAG;QACb,GAAG,OAAO;QACV,OAAO,EAAE;YACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;YAC1B,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C;QACD,MAAM,EAAE,MAAgB;QACxB,GAAG;QACH,MAAM,EAAE,QAAQ;QAChB,IAAI;KACL,CAAA;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC,wBAAC,CACL,CAAA"}
@@ -1,16 +1,11 @@
1
1
  import * as T from "@effect-ts/core/Effect"
2
- import { tag } from "@effect-ts/system/Has"
3
- import Axios, { AxiosInstance, AxiosRequestConfig, Method } from "axios"
2
+ import { tag } from "@effect-ts/core/Has"
3
+ import { _A } from "@effect-ts/core/Utils"
4
+ import Axios, { AxiosRequestConfig, Method } from "axios"
4
5
  import * as Config from "../DiscordConfig"
5
- import { createRoutes, Endpoints } from "../types"
6
+ import { createRoutes } from "../types"
6
7
  import * as Http from "./http"
7
8
 
8
- export interface DiscordREST extends Endpoints<AxiosRequestConfig> {
9
- _tag: "DiscordREST"
10
- axios: AxiosInstance
11
- }
12
- export const DiscordREST = tag<DiscordREST>()
13
-
14
9
  interface FormData {
15
10
  append: (key: string, value: unknown) => void
16
11
  getHeaders: () => Record<string, string>
@@ -27,8 +22,21 @@ const make = T.gen(function* (_) {
27
22
  },
28
23
  })
29
24
  const request = Http.request(axios)
30
- const routes = createRoutes<AxiosRequestConfig>(
31
- ({ method, url, params = {}, options = {} }) => {
25
+
26
+ return {
27
+ _tag: "DiscordREST",
28
+ axios,
29
+ request,
30
+ }
31
+ })
32
+
33
+ export interface DiscordREST extends _A<typeof make> {}
34
+ export const DiscordREST = tag<DiscordREST>()
35
+ export const LiveDiscordREST = T.toLayer(DiscordREST)(make)
36
+
37
+ export const rest = createRoutes<AxiosRequestConfig>(
38
+ ({ method, url, params = {}, options = {} }) =>
39
+ T.accessServiceM(DiscordREST)(({ request }) => {
32
40
  const hasBody = method !== "GET" && method !== "DELETE"
33
41
  let hasFormData = false
34
42
 
@@ -65,19 +73,7 @@ const make = T.gen(function* (_) {
65
73
  params: qsParams,
66
74
  data,
67
75
  }
68
- return request(config)
69
- },
70
- )
71
-
72
- const rest: DiscordREST = {
73
- _tag: "DiscordREST",
74
- axios,
75
- ...routes,
76
- }
77
76
 
78
- return rest
79
- })
80
-
81
- export const LiveDiscordREST = T.toLayer(DiscordREST)(make)
82
-
83
- export const rest = T.accessServiceM(DiscordREST)
77
+ return request(config)
78
+ }),
79
+ )
@@ -1,5 +1,7 @@
1
1
  import * as T from "@effect-ts/core/Effect";
2
+ import { Has } from "@effect-ts/core/Has";
2
3
  import { AxiosError, AxiosRequestConfig } from "axios";
4
+ import { DiscordREST } from ".";
3
5
  export declare type RESTError = {
4
6
  _tag: "http";
5
7
  config: AxiosRequestConfig<unknown>;
@@ -9,4 +11,4 @@ export declare type RESTError = {
9
11
  _tag: "axios";
10
12
  cause: AxiosError<never>;
11
13
  };
12
- export declare type Response<T> = T.IO<RESTError, T>;
14
+ export declare type Response<T> = T.Effect<Has<DiscordREST>, RESTError, T>;
@@ -1,5 +1,7 @@
1
1
  import * as T from "@effect-ts/core/Effect"
2
+ import { Has } from "@effect-ts/core/Has"
2
3
  import { AxiosError, AxiosRequestConfig } from "axios"
4
+ import { DiscordREST } from "."
3
5
 
4
6
  export type RESTError =
5
7
  | {
@@ -10,4 +12,4 @@ export type RESTError =
10
12
  }
11
13
  | { _tag: "axios"; cause: AxiosError<never> }
12
14
 
13
- export type Response<T> = T.IO<RESTError, T>
15
+ export type Response<T> = T.Effect<Has<DiscordREST>, RESTError, T>
@@ -12,10 +12,10 @@ declare const makeService: () => {
12
12
  readonly _tag: "DiscordShardService";
13
13
  readonly make: (shard: [id: number, count: number]) => M.Managed<import("@effect-ts/system/Has").Has<Config.DiscordConfig>, never, {
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
- 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, unknown, GatewayPayload<any>>;
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, unknown, GatewayPayload<GatewayEvent>>;
17
- readonly send: (p: GatewayPayload) => T.Effect<unknown, never, boolean>;
18
- readonly reconnect: () => T.Effect<unknown, never, boolean>;
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
+ 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) => void;
18
+ readonly reconnect: () => void;
19
19
  }>;
20
20
  };
21
21
  export interface DiscordShard extends ReturnType<typeof makeService> {
@@ -24,9 +24,9 @@ export declare const DiscordShard: import("@effect-ts/system/Has").Tag<DiscordSh
24
24
  export declare const LiveDiscordShard: L.Layer<unknown, never, import("@effect-ts/system/Has").Has<DiscordShard>>;
25
25
  export declare const make: (shard: [number, number]) => M.Managed<import("@effect-ts/system/Has").Has<Config.DiscordConfig> & import("@effect-ts/system/Has").Has<DiscordShard>, never, {
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
- 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, unknown, GatewayPayload<any>>;
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, unknown, GatewayPayload<GatewayEvent>>;
29
- readonly send: (p: GatewayPayload) => T.Effect<unknown, never, boolean>;
30
- readonly reconnect: () => T.Effect<unknown, never, boolean>;
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
+ 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) => 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,9 +1,12 @@
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";
4
+ import { Has } from "@effect-ts/core/Has";
5
+ import { HasClock } from "@effect-ts/system/Clock";
5
6
  import * as CB from "callbag-effect-ts";
7
+ import { EffectSource } from "callbag-effect-ts";
6
8
  import { RawData } from "ws";
9
+ import { Log } from "../Log";
7
10
  import { GatewayPayload } from "../types";
8
11
  import * as WS from "../WS";
9
12
  export declare type Message = GatewayPayload | WS.Reconnect;
@@ -11,7 +14,7 @@ export interface OpenOpts {
11
14
  url?: string;
12
15
  version?: number;
13
16
  encoding?: Encoding;
14
- outgoingQueue: Q.Queue<Message>;
17
+ outgoingQueue: EffectSource<unknown, never, Message>;
15
18
  }
16
19
  export interface Encoding {
17
20
  type: "json" | "etf";
@@ -19,15 +22,15 @@ export interface Encoding {
19
22
  decode: (p: RawData) => GatewayPayload;
20
23
  }
21
24
  export declare const jsonEncoding: Encoding;
22
- declare const openImpl: ({ url, version, encoding, outgoingQueue: outgoing, }: OpenOpts) => CB.EffectSource<import("@effect-ts/system/Has").Has<WS.WS> & import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, unknown, GatewayPayload<any>>;
25
+ declare const openImpl: ({ url, version, encoding, outgoingQueue: outgoing, }: OpenOpts) => CB.EffectSource<Has<WS.WS> & Has<Log> & HasClock, never, GatewayPayload<any>>;
23
26
  export declare type Connection = ReturnType<typeof openImpl>;
24
27
  declare const makeService: () => {
25
28
  readonly _tag: "DiscordWSService";
26
- readonly open: ({ url, version, encoding, outgoingQueue: outgoing, }: OpenOpts) => CB.EffectSource<import("@effect-ts/system/Has").Has<WS.WS> & import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, unknown, GatewayPayload<any>>;
29
+ readonly open: ({ url, version, encoding, outgoingQueue: outgoing, }: OpenOpts) => CB.EffectSource<Has<WS.WS> & Has<Log> & HasClock, never, GatewayPayload<any>>;
27
30
  };
28
31
  export interface DiscordWS extends ReturnType<typeof makeService> {
29
32
  }
30
33
  export declare const DiscordWS: import("@effect-ts/system/Has").Tag<DiscordWS>;
31
- export declare const LiveDiscordWS: L.Layer<unknown, never, import("@effect-ts/system/Has").Has<DiscordWS>>;
32
- export declare const open: (opts: OpenOpts) => T.Effect<import("@effect-ts/system/Has").Has<DiscordWS>, never, CB.EffectSource<import("@effect-ts/system/Has").Has<WS.WS> & import("@effect-ts/system/Has").Has<import("../Log").Log> & import("@effect-ts/system/Clock").HasClock, unknown, GatewayPayload<any>>>;
34
+ export declare const LiveDiscordWS: L.Layer<unknown, never, Has<DiscordWS>>;
35
+ export declare const open: (opts: OpenOpts) => T.Effect<Has<DiscordWS>, never, CB.EffectSource<Has<WS.WS> & Has<Log> & HasClock, never, GatewayPayload<any>>>;
33
36
  export {};
@@ -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 + ":76: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,6CAAyC;AACzC,8DAAuC;AAEvC,gCAA4B;AAE5B,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,EASX,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,EACvB,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,12 +1,13 @@
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 } from "@effect-ts/core/Has"
5
+ import { Has, tag } from "@effect-ts/core/Has"
6
+ import { HasClock } from "@effect-ts/system/Clock"
7
7
  import * as CB from "callbag-effect-ts"
8
+ import { EffectSource } from "callbag-effect-ts"
8
9
  import { RawData } from "ws"
9
- import { log } from "../Log"
10
+ import { log, Log } from "../Log"
10
11
  import { GatewayPayload } from "../types"
11
12
  import * as WS from "../WS"
12
13
 
@@ -16,7 +17,7 @@ export interface OpenOpts {
16
17
  url?: string
17
18
  version?: number
18
19
  encoding?: Encoding
19
- outgoingQueue: Q.Queue<Message>
20
+ outgoingQueue: EffectSource<unknown, never, Message>
20
21
  }
21
22
 
22
23
  export interface Encoding {
@@ -31,14 +32,11 @@ export const jsonEncoding: Encoding = {
31
32
  decode: (p) => JSON.parse(p.toString("utf8")),
32
33
  }
33
34
 
34
- const makeOutgoing = (q: Q.Queue<Message>, e: Encoding): WS.OutboundQueue =>
35
- Q.map_(q, (data): WS.Message => {
36
- if (data === WS.Reconnect) {
37
- return data
38
- }
39
-
40
- return e.encode(data)
41
- })
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)))
42
40
 
43
41
  const openImpl = ({
44
42
  url = "wss://gateway.discord.gg/",
@@ -55,7 +53,11 @@ const openImpl = ({
55
53
  CB.tapError((e) => log(serviceTag, "error", e)),
56
54
  CB.retry(SC.exponential(500)),
57
55
  CB.map(encoding.decode),
58
- )
56
+ ) as EffectSource<
57
+ Has<WS.WS> & Has<Log> & HasClock,
58
+ never,
59
+ GatewayPayload<any>
60
+ >
59
61
 
60
62
  export type Connection = ReturnType<typeof openImpl>
61
63
 
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":";;;;;;AAAA,kEAA2C;AAC3C,0EAAmD;AACnD,4EAAqD;AACrD,uDAA+C;AAC/C,6CAAyC;AACzC,8DAAuC;AAEvC,+CAAwB;AACxB,gCAAiC;AAOpB,QAAA,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,IAAA,cAAQ,EAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,GACvC,CAAC,IAAI,EAAE,EAAE,CACd,CAAC,CAAC,WAAW,CAAyB,CAAC,EAAE,EAAE,EAAE;IAC3C,IAAI,IAAI,KAAK,iBAAS,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;AAGA,QAAA,EAAE,GAAG,IAAA,SAAG,GAAM,CAAA;AACd,QAAA,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,UAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,yBAAC,CAAC,CAAA;AAE/D,UAAU;AACH,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,GAAa,EAAE,OAA0B,EAAE,EAAE,CAC7E,CAAC,CAAC,aAAa,CAAC,UAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,yBAAC,CAAA;AAD/C,QAAA,IAAI,QAC2C"}
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))
package/bot.js CHANGED
@@ -21,8 +21,8 @@ const Config = (0, mod_1.makeConfigLayer)({
21
21
  // logger
22
22
  const logger = T.chain_(mod_1.gateway, ({ raw }) => CB.forEach_(raw, (p) => (0, Log_1.log)(p)), fileName_1 + ":27:24");
23
23
  // ping command
24
- const pingPong = (CB.forEach_(CB.filter_((0, mod_1.fromDispatch)("MESSAGE_CREATE"), (msg) => msg.content.startsWith("!ping")), (msg) => (0, mod_1.rest)((r) => r.createMessage(msg.channel_id, {
24
+ const pingPong = (CB.forEach_(CB.filter_((0, mod_1.fromDispatch)("MESSAGE_CREATE"), (msg) => msg.content.startsWith("!ping")), (msg) => mod_1.rest.createMessage(msg.channel_id, {
25
25
  content: "Pong!",
26
- }), fileName_1 + ":34:9")));
27
- (R.runMain(T.provideSomeLayer(Config)(T.provideSomeLayer(mod_1.DebugEnv)(T.zipPar(pingPong, fileName_1 + ":45:11")(T.zipPar(logger, fileName_1 + ":44:11")(mod_1.run))))));
26
+ })));
27
+ (R.runMain(T.provideSomeLayer(Config)(T.provideSomeLayer(mod_1.DebugEnv)(T.zipPar(pingPong, fileName_1 + ":43:11")(T.zipPar(logger, fileName_1 + ":42:11")(mod_1.run))))));
28
28
  //# sourceMappingURL=bot.js.map
package/bot.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bot.js","sourceRoot":"","sources":["bot.ts"],"names":[],"mappings":";;;;;AAAA,kEAA2C;AAC3C,uDAA+C;AAC/C,mEAA4C;AAC5C,8DAAuC;AACvC,uDAAgC;AAChC,+BAA2B;AAC3B,+BAOc;AACd,mCAAwC;AAExC,MAAM,CAAC,MAAM,EAAE,CAAA;AAEf,MAAM,MAAM,GAAG,IAAA,qBAAe,EAAC;IAC7B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAkB;IACrC,OAAO,EAAE;QACP,OAAO,EAAE,sBAAc,CAAC,MAAM,GAAG,sBAAc,CAAC,cAAc;KAC/D;CACF,CAAC,CAAA;AAEF,SAAS;AACT,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,aAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,SAAG,EAAC,CAAC,CAAC,CAAC,wBAAC,CAAA;AAE9E,eAAe;AACf,MAAM,QAAQ,IAGZ,EAAE,UADF,EAAE,SADF,IAAA,kBAAY,EAAC,gBAAgB,CAAC,EACpB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GACvC,CAAC,GAAG,EAAE,EAAE,CACjB,IAAA,UAAI,EAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE;IAC9B,OAAO,EAAE,OAAO;CACjB,CAAC,uBACH,EAEJ,CAAA;AAED,CAOE,CAAC,CAAC,OAAO,CADT,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAD1B,CAAC,CAAC,gBAAgB,CAAC,cAAQ,CAAC,CAF5B,CAAC,CAAC,MAAM,CAAC,QAAQ,wBAAC,CADlB,CAAC,CAAC,MAAM,CAAC,MAAM,wBAAC,CADhB,SAAG,OAOJ"}
1
+ {"version":3,"file":"bot.js","sourceRoot":"","sources":["bot.ts"],"names":[],"mappings":";;;;;AAAA,kEAA2C;AAC3C,uDAA+C;AAC/C,mEAA4C;AAC5C,8DAAuC;AACvC,uDAAgC;AAChC,+BAA2B;AAC3B,+BAOc;AACd,mCAAwC;AAExC,MAAM,CAAC,MAAM,EAAE,CAAA;AAEf,MAAM,MAAM,GAAG,IAAA,qBAAe,EAAC;IAC7B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAkB;IACrC,OAAO,EAAE;QACP,OAAO,EAAE,sBAAc,CAAC,MAAM,GAAG,sBAAc,CAAC,cAAc;KAC/D;CACF,CAAC,CAAA;AAEF,SAAS;AACT,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,aAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,SAAG,EAAC,CAAC,CAAC,CAAC,wBAAC,CAAA;AAE9E,eAAe;AACf,MAAM,QAAQ,IAGZ,EAAE,UADF,EAAE,SADF,IAAA,kBAAY,EAAC,gBAAgB,CAAC,EACpB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GACvC,CAAC,GAAG,EAAE,EAAE,CACjB,UAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE;IACjC,OAAO,EAAE,OAAO;CACjB,CAAC,EAEL,CAAA;AAED,CAOE,CAAC,CAAC,OAAO,CADT,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAD1B,CAAC,CAAC,gBAAgB,CAAC,cAAQ,CAAC,CAF5B,CAAC,CAAC,MAAM,CAAC,QAAQ,wBAAC,CADlB,CAAC,CAAC,MAAM,CAAC,MAAM,wBAAC,CADhB,SAAG,OAOJ"}
package/bot.ts CHANGED
@@ -31,11 +31,9 @@ const pingPong = pipe(
31
31
  fromDispatch("MESSAGE_CREATE"),
32
32
  CB.filter((msg) => msg.content.startsWith("!ping")),
33
33
  CB.forEach((msg) =>
34
- rest((r) =>
35
- r.createMessage(msg.channel_id, {
36
- content: "Pong!",
37
- }),
38
- ),
34
+ rest.createMessage(msg.channel_id, {
35
+ content: "Pong!",
36
+ }),
39
37
  ),
40
38
  )
41
39
 
@@ -1,15 +1,14 @@
1
1
  import * as tracing_1 from "@effect-ts/core/Tracing";
2
2
  const fileName_1 = "DiscordREST/index.ts";
3
3
  import * as T from "@effect-ts/core/Effect";
4
- import { tag } from "@effect-ts/system/Has";
4
+ import { tag } from "@effect-ts/core/Has";
5
5
  import Axios from "axios";
6
6
  import * as Config from "../DiscordConfig";
7
7
  import { createRoutes } from "../types";
8
8
  import * as Http from "./http";
9
- export const DiscordREST = tag();
10
9
  const make = T.gen(function* (_) {
11
- const token = yield* _(Config.token, fileName_1 + ":20:25");
12
- const config = yield* _(Config.rest, fileName_1 + ":21:26");
10
+ const token = yield* _(Config.token, fileName_1 + ":15:25");
11
+ const config = yield* _(Config.rest, fileName_1 + ":16:26");
13
12
  const axios = Axios.create({
14
13
  baseURL: config.baseUrl,
15
14
  headers: {
@@ -17,45 +16,44 @@ const make = T.gen(function* (_) {
17
16
  },
18
17
  });
19
18
  const request = Http.request(axios);
20
- const routes = createRoutes(({ method, url, params = {}, options = {} }) => {
21
- const hasBody = method !== "GET" && method !== "DELETE";
22
- let hasFormData = false;
23
- if (typeof options.data?.append === "function") {
24
- hasFormData = true;
25
- options.data.append("payload_json", JSON.stringify(params));
26
- }
27
- const qsParams = hasBody
28
- ? options.params
29
- : {
30
- ...(options.params || {}),
31
- ...params,
32
- };
33
- const data = hasFormData || !hasBody
34
- ? options.data
35
- : {
36
- ...(options.data || {}),
37
- ...params,
38
- };
39
- const config = {
40
- ...options,
41
- headers: {
42
- ...(options.headers || {}),
43
- ...(hasFormData ? data.getHeaders() : {}),
44
- },
45
- method: method,
46
- url,
47
- params: qsParams,
48
- data,
49
- };
50
- return request(config);
51
- });
52
- const rest = {
19
+ return {
53
20
  _tag: "DiscordREST",
54
21
  axios,
55
- ...routes,
22
+ request,
56
23
  };
57
- return rest;
58
- }, fileName_1 + ":19:19");
24
+ }, fileName_1 + ":14:19");
25
+ export const DiscordREST = tag();
59
26
  export const LiveDiscordREST = T.toLayer(DiscordREST)(make);
60
- export const rest = T.accessServiceM(DiscordREST);
27
+ export const rest = createRoutes(({ method, url, params = {}, options = {} }) => T.accessServiceM(DiscordREST)(({ request }) => {
28
+ const hasBody = method !== "GET" && method !== "DELETE";
29
+ let hasFormData = false;
30
+ if (typeof options.data?.append === "function") {
31
+ hasFormData = true;
32
+ options.data.append("payload_json", JSON.stringify(params));
33
+ }
34
+ const qsParams = hasBody
35
+ ? options.params
36
+ : {
37
+ ...(options.params || {}),
38
+ ...params,
39
+ };
40
+ const data = hasFormData || !hasBody
41
+ ? options.data
42
+ : {
43
+ ...(options.data || {}),
44
+ ...params,
45
+ };
46
+ const config = {
47
+ ...options,
48
+ headers: {
49
+ ...(options.headers || {}),
50
+ ...(hasFormData ? data.getHeaders() : {}),
51
+ },
52
+ method: method,
53
+ url,
54
+ params: qsParams,
55
+ data,
56
+ };
57
+ return request(config);
58
+ }, fileName_1 + ":39:34"));
61
59
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../DiscordREST/index.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAC3C,OAAO,KAAoD,MAAM,OAAO,CAAA;AACxE,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAa,MAAM,UAAU,CAAA;AAClD,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAM9B,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAe,CAAA;AAO7C,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,wBAAC,CAAA;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,wBAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE;YACP,aAAa,EAAE,OAAO,KAAK,EAAE;SAC9B;KACF,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACnC,MAAM,MAAM,GAAG,YAAY,CACzB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAA;QACvD,IAAI,WAAW,GAAG,KAAK,CAAA;QAEvB,IAAI,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,EAAE;YAC9C,WAAW,GAAG,IAAI,CACjB;YAAC,OAAO,CAAC,IAAiB,CAAC,MAAM,CAChC,cAAc,EACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACvB,CAAA;SACF;QAED,MAAM,QAAQ,GAAG,OAAO;YACtB,CAAC,CAAC,OAAO,CAAC,MAAM;YAChB,CAAC,CAAC;gBACE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;gBACzB,GAAG,MAAM;aACV,CAAA;QACL,MAAM,IAAI,GACR,WAAW,IAAI,CAAC,OAAO;YACrB,CAAC,CAAC,OAAO,CAAC,IAAI;YACd,CAAC,CAAC;gBACE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;gBACvB,GAAG,MAAM;aACV,CAAA;QAEP,MAAM,MAAM,GAAG;YACb,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC1B,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1C;YACD,MAAM,EAAE,MAAgB;YACxB,GAAG;YACH,MAAM,EAAE,QAAQ;YAChB,IAAI;SACL,CAAA;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;IACxB,CAAC,CACF,CAAA;IAED,MAAM,IAAI,GAAgB;QACxB,IAAI,EAAE,aAAa;QACnB,KAAK;QACL,GAAG,MAAM;KACV,CAAA;IAED,OAAO,IAAI,CAAA;AACb,CAAC,wBAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAA;AAE3D,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../DiscordREST/index.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAEzC,OAAO,KAAqC,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAO9B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,wBAAC,CAAA;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,wBAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE;YACP,aAAa,EAAE,OAAO,KAAK,EAAE;SAC9B;KACF,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAEnC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,KAAK;QACL,OAAO;KACR,CAAA;AACH,CAAC,wBAAC,CAAA;AAGF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAe,CAAA;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAA;AAE3D,MAAM,CAAC,MAAM,IAAI,GAAG,YAAY,CAC9B,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE,CAC7C,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC5C,MAAM,OAAO,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAA;IACvD,IAAI,WAAW,GAAG,KAAK,CAAA;IAEvB,IAAI,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,EAAE;QAC9C,WAAW,GAAG,IAAI,CACjB;QAAC,OAAO,CAAC,IAAiB,CAAC,MAAM,CAChC,cAAc,EACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACvB,CAAA;KACF;IAED,MAAM,QAAQ,GAAG,OAAO;QACtB,CAAC,CAAC,OAAO,CAAC,MAAM;QAChB,CAAC,CAAC;YACE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;YACzB,GAAG,MAAM;SACV,CAAA;IACL,MAAM,IAAI,GACR,WAAW,IAAI,CAAC,OAAO;QACrB,CAAC,CAAC,OAAO,CAAC,IAAI;QACd,CAAC,CAAC;YACE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YACvB,GAAG,MAAM;SACV,CAAA;IAEP,MAAM,MAAM,GAAG;QACb,GAAG,OAAO;QACV,OAAO,EAAE;YACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;YAC1B,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C;QACD,MAAM,EAAE,MAAgB;QACxB,GAAG;QACH,MAAM,EAAE,QAAQ;QAChB,IAAI;KACL,CAAA;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC,wBAAC,CACL,CAAA"}
@@ -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":"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"}
@@ -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 + ":76: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,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEvC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAE5B,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,EASX,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,EACvB,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":";;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/esm/bot.js CHANGED
@@ -18,8 +18,8 @@ const Config = makeConfigLayer({
18
18
  // logger
19
19
  const logger = T.chain_(gateway, ({ raw }) => CB.forEach_(raw, (p) => log(p)), fileName_1 + ":27:24");
20
20
  // ping command
21
- const pingPong = (CB.forEach_(CB.filter_(fromDispatch("MESSAGE_CREATE"), (msg) => msg.content.startsWith("!ping")), (msg) => rest((r) => r.createMessage(msg.channel_id, {
21
+ const pingPong = (CB.forEach_(CB.filter_(fromDispatch("MESSAGE_CREATE"), (msg) => msg.content.startsWith("!ping")), (msg) => rest.createMessage(msg.channel_id, {
22
22
  content: "Pong!",
23
- }), fileName_1 + ":34:9")));
24
- (R.runMain(T.provideSomeLayer(Config)(T.provideSomeLayer(DebugEnv)(T.zipPar(pingPong, fileName_1 + ":45:11")(T.zipPar(logger, fileName_1 + ":44:11")(run))))));
23
+ })));
24
+ (R.runMain(T.provideSomeLayer(Config)(T.provideSomeLayer(DebugEnv)(T.zipPar(pingPong, fileName_1 + ":43:11")(T.zipPar(logger, fileName_1 + ":42:11")(run))))));
25
25
  //# sourceMappingURL=bot.js.map
package/esm/bot.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bot.js","sourceRoot":"","sources":["../bot.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,KAAK,CAAC,MAAM,yBAAyB,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,eAAe,EACf,IAAI,EACJ,GAAG,GACJ,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExC,MAAM,CAAC,MAAM,EAAE,CAAA;AAEf,MAAM,MAAM,GAAG,eAAe,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAkB;IACrC,OAAO,EAAE;QACP,OAAO,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,cAAc;KAC/D;CACF,CAAC,CAAA;AAEF,SAAS;AACT,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAC,CAAA;AAE9E,eAAe;AACf,MAAM,QAAQ,IAGZ,EAAE,UADF,EAAE,SADF,YAAY,CAAC,gBAAgB,CAAC,EACpB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GACvC,CAAC,GAAG,EAAE,EAAE,CACjB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE;IAC9B,OAAO,EAAE,OAAO;CACjB,CAAC,uBACH,EAEJ,CAAA;AAED,CAOE,CAAC,CAAC,OAAO,CADT,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAD1B,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAF5B,CAAC,CAAC,MAAM,CAAC,QAAQ,wBAAC,CADlB,CAAC,CAAC,MAAM,CAAC,MAAM,wBAAC,CADhB,GAAG,OAOJ"}
1
+ {"version":3,"file":"bot.js","sourceRoot":"","sources":["../bot.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,KAAK,CAAC,MAAM,yBAAyB,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,eAAe,EACf,IAAI,EACJ,GAAG,GACJ,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExC,MAAM,CAAC,MAAM,EAAE,CAAA;AAEf,MAAM,MAAM,GAAG,eAAe,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAkB;IACrC,OAAO,EAAE;QACP,OAAO,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,cAAc;KAC/D;CACF,CAAC,CAAA;AAEF,SAAS;AACT,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAC,CAAA;AAE9E,eAAe;AACf,MAAM,QAAQ,IAGZ,EAAE,UADF,EAAE,SADF,YAAY,CAAC,gBAAgB,CAAC,EACpB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GACvC,CAAC,GAAG,EAAE,EAAE,CACjB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE;IACjC,OAAO,EAAE,OAAO;CACjB,CAAC,EAEL,CAAA;AAED,CAOE,CAAC,CAAC,OAAO,CADT,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAD1B,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAF5B,CAAC,CAAC,MAAM,CAAC,QAAQ,wBAAC,CADlB,CAAC,CAAC,MAAM,CAAC,MAAM,wBAAC,CADhB,GAAG,OAOJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dfx",
3
- "version": "0.1.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": "52e532e1a72dda52c83e2b4923c362bfeaaf23dc"
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[]