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