dfx 0.93.0 → 0.95.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cache/prelude.d.ts.map +1 -1
- package/Cache/prelude.js +18 -18
- package/Cache/prelude.js.map +1 -1
- package/Cache.d.ts +4 -1
- package/Cache.d.ts.map +1 -1
- package/Cache.js +8 -8
- package/Cache.js.map +1 -1
- package/DiscordGateway/DiscordWS.d.ts.map +1 -1
- package/DiscordGateway/DiscordWS.js +10 -10
- package/DiscordGateway/DiscordWS.js.map +1 -1
- package/DiscordGateway/Messaging.d.ts.map +1 -1
- package/DiscordGateway/Messaging.js +3 -3
- package/DiscordGateway/Messaging.js.map +1 -1
- package/DiscordGateway/Shard.d.ts +2 -2
- package/DiscordGateway/Shard.d.ts.map +1 -1
- package/DiscordGateway/Shard.js +18 -18
- package/DiscordGateway/Shard.js.map +1 -1
- package/DiscordGateway/Sharder.d.ts +1 -1
- package/DiscordGateway/Sharder.d.ts.map +1 -1
- package/DiscordGateway/Sharder.js +11 -11
- package/DiscordGateway/Sharder.js.map +1 -1
- package/DiscordGateway.d.ts +1 -1
- package/DiscordGateway.js +3 -3
- package/DiscordGateway.js.map +1 -1
- package/DiscordREST.d.ts +1 -1
- package/DiscordREST.js +6 -6
- package/DiscordREST.js.map +1 -1
- package/Interactions/context.d.ts +1 -1
- package/Interactions/definitions.d.ts +5 -5
- package/Interactions/gateway.d.ts.map +1 -1
- package/Interactions/gateway.js +11 -11
- package/Interactions/gateway.js.map +1 -1
- package/RateLimit.js +2 -2
- package/RateLimit.js.map +1 -1
- package/gateway.d.ts +2 -2
- package/mjs/Cache/prelude.mjs +18 -18
- package/mjs/Cache/prelude.mjs.map +1 -1
- package/mjs/Cache.mjs +8 -8
- package/mjs/Cache.mjs.map +1 -1
- package/mjs/DiscordGateway/DiscordWS.mjs +10 -10
- package/mjs/DiscordGateway/DiscordWS.mjs.map +1 -1
- package/mjs/DiscordGateway/Messaging.mjs +3 -3
- package/mjs/DiscordGateway/Messaging.mjs.map +1 -1
- package/mjs/DiscordGateway/Shard.mjs +18 -18
- package/mjs/DiscordGateway/Shard.mjs.map +1 -1
- package/mjs/DiscordGateway/Sharder.mjs +11 -11
- package/mjs/DiscordGateway/Sharder.mjs.map +1 -1
- package/mjs/DiscordGateway.mjs +3 -3
- package/mjs/DiscordGateway.mjs.map +1 -1
- package/mjs/DiscordREST.mjs +6 -6
- package/mjs/DiscordREST.mjs.map +1 -1
- package/mjs/Interactions/gateway.mjs +11 -11
- package/mjs/Interactions/gateway.mjs.map +1 -1
- package/mjs/RateLimit.mjs +2 -2
- package/mjs/RateLimit.mjs.map +1 -1
- package/mjs/version.mjs +1 -1
- package/package.json +4 -4
- package/src/Cache/prelude.ts +94 -100
- package/src/Cache.ts +28 -32
- package/src/DiscordGateway/DiscordWS.ts +13 -17
- package/src/DiscordGateway/Messaging.ts +7 -11
- package/src/DiscordGateway/Shard.ts +23 -30
- package/src/DiscordGateway/Sharder.ts +14 -16
- package/src/DiscordGateway.ts +3 -3
- package/src/DiscordREST.ts +6 -6
- package/src/Interactions/gateway.ts +24 -31
- package/src/RateLimit.ts +2 -2
- package/src/version.ts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/webhooks.d.ts +1 -1
package/mjs/Cache.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cache.mjs","names":["TypeIdError","Effect","Option","Schedule","Stream","create","memoryDriver","createWithParent","memoryParentDriver","memoryTTLDriver","memoryTTLParentDriver","retryPolicy","exponential","pipe","union","spaced","makeWithParent","driver","id","onMiss","onParentMiss","ops","empty","gen","
|
|
1
|
+
{"version":3,"file":"Cache.mjs","names":["TypeIdError","Effect","Option","Schedule","Stream","create","memoryDriver","createWithParent","memoryParentDriver","memoryTTLDriver","memoryTTLParentDriver","retryPolicy","exponential","pipe","union","spaced","makeWithParent","driver","id","onMiss","onParentMiss","ops","empty","gen","runDrain","tap","op","set","parentId","resourceId","resource","delete","parentDelete","tapErrorCause","_","logError","retry","forkScoped","interruptible","run","get","flatMap","match","onNone","a","onSome","succeed","put","update","f","getForParent","entries","all","map","concurrency","Map","annotateLogs","package","service","make","CacheErrorTypeId","Symbol","for","CacheMissError","message","cacheName"],"sources":["../src/Cache.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -13,29 +13,29 @@ export const JsonDiscordWSCodecLive = /*#__PURE__*/Layer.succeed(DiscordWSCodec,
|
|
|
13
13
|
encode: p => JSON.stringify(p),
|
|
14
14
|
decode: p => JSON.parse(typeof p === "string" ? p : decoder.decode(p))
|
|
15
15
|
});
|
|
16
|
-
const make = /*#__PURE__*/Effect.gen(function* (
|
|
17
|
-
const encoding = yield*
|
|
16
|
+
const make = /*#__PURE__*/Effect.gen(function* () {
|
|
17
|
+
const encoding = yield* DiscordWSCodec;
|
|
18
18
|
const connect = ({
|
|
19
19
|
onConnecting,
|
|
20
20
|
outbound,
|
|
21
21
|
url = "wss://gateway.discord.gg/",
|
|
22
22
|
version = 10
|
|
23
|
-
}) => Effect.gen(function* (
|
|
24
|
-
const urlRef = yield*
|
|
23
|
+
}) => Effect.gen(function* () {
|
|
24
|
+
const urlRef = yield* Ref.make(`${url}?v=${version}&encoding=${encoding.type}`);
|
|
25
25
|
const setUrl = url => Ref.set(urlRef, `${url}?v=${version}&encoding=${encoding.type}`);
|
|
26
|
-
const messages = yield*
|
|
27
|
-
const socket = yield*
|
|
26
|
+
const messages = yield* Queue.unbounded();
|
|
27
|
+
const socket = yield* Socket.makeWebSocket(Ref.get(urlRef), {
|
|
28
28
|
closeCodeIsError: _ => true,
|
|
29
29
|
openTimeout: 5000
|
|
30
|
-
})
|
|
31
|
-
const write = yield*
|
|
32
|
-
yield
|
|
30
|
+
});
|
|
31
|
+
const write = yield* socket.writer;
|
|
32
|
+
yield outbound.pipe(Effect.flatMap(_ => {
|
|
33
33
|
if (_ === Reconnect) {
|
|
34
34
|
return Effect.zipRight(Effect.logTrace("Reconnecting"), write(new Socket.CloseEvent(1012, "reconnecting")));
|
|
35
35
|
}
|
|
36
36
|
return Effect.zipRight(Effect.logTrace(_), write(encoding.encode(_)));
|
|
37
37
|
}), Effect.forever, Effect.annotateLogs("channel", "outbound"), Effect.forkScoped, Effect.interruptible);
|
|
38
|
-
yield
|
|
38
|
+
yield onConnecting.pipe(Effect.zipRight(socket.runRaw(_ => {
|
|
39
39
|
const message = encoding.decode(_);
|
|
40
40
|
return Effect.zipRight(Effect.logTrace(message), messages.offer(message));
|
|
41
41
|
})), Effect.retry({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordWS.mjs","names":["GenericTag","Effect","Layer","Ref","Socket","Queue","Schedule","Reconnect","Symbol","for","decoder","TextDecoder","DiscordWSCodec","JsonDiscordWSCodecLive","succeed","type","encode","p","JSON","stringify","decode","parse","make","gen","
|
|
1
|
+
{"version":3,"file":"DiscordWS.mjs","names":["GenericTag","Effect","Layer","Ref","Socket","Queue","Schedule","Reconnect","Symbol","for","decoder","TextDecoder","DiscordWSCodec","JsonDiscordWSCodecLive","succeed","type","encode","p","JSON","stringify","decode","parse","make","gen","encoding","connect","onConnecting","outbound","url","version","urlRef","setUrl","set","messages","unbounded","socket","makeWebSocket","get","closeCodeIsError","_","openTimeout","write","writer","pipe","flatMap","zipRight","logTrace","CloseEvent","forever","annotateLogs","forkScoped","interruptible","runRaw","message","offer","retry","while","e","reason","code","catchAllCause","cause","logDebug","repeat","exponential","union","spaced","take","module","DiscordWS","DiscordWSLive","effect"],"sources":["../../src/DiscordGateway/DiscordWS.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -12,9 +12,9 @@ const handleDispatchFactory = hub => (event, handle) => EffectUtils.subscribeFor
|
|
|
12
12
|
}
|
|
13
13
|
return Effect.void;
|
|
14
14
|
});
|
|
15
|
-
export const make = /*#__PURE__*/Effect.gen(function* (
|
|
16
|
-
const hub = yield*
|
|
17
|
-
const sendQueue = yield*
|
|
15
|
+
export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
16
|
+
const hub = yield* Effect.acquireRelease(PubSub.unbounded(), PubSub.shutdown);
|
|
17
|
+
const sendQueue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
18
18
|
const send = payload => sendQueue.offer(payload);
|
|
19
19
|
const dispatch = Stream.fromPubSub(hub);
|
|
20
20
|
const fromDispatch = fromDispatchFactory(dispatch);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Messaging.mjs","names":["GenericTag","Effect","PubSub","Layer","Queue","Stream","EffectUtils","fromDispatchFactory","source","event","map","filter","p","t","d","handleDispatchFactory","hub","handle","subscribeForEachPar","_","void","make","gen","acquireRelease","unbounded","shutdown","sendQueue","send","payload","offer","dispatch","fromPubSub","fromDispatch","handleDispatch","Messaging","MesssagingLive","scoped"],"sources":["../../src/DiscordGateway/Messaging.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAU,QAAQ,gBAAgB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C,MAAMC,mBAAmB,GAErBC,MAAyE,IAGzEC,KAAQ,IAERJ,MAAM,CAACK,GAAG,CACRL,MAAM,CAACM,MAAM,CAACH,MAAM,EAAEI,CAAC,IAAIA,CAAC,CAACC,CAAC,KAAKJ,KAAK,CAAC,EACzCG,CAAC,IAAIA,CAAC,CAACE,CAAS,CACjB;AAEL,MAAMC,qBAAqB,GACxBC,GAAgE,IACjE,CACEP,KAAQ,EACRQ,MAAmE,KAEnEX,WAAW,CAACY,mBAAmB,CAACF,GAAG,EAAEG,CAAC,IAAG;EACvC,IAAIA,CAAC,CAACN,CAAC,KAAKJ,KAAK,EAAE;IACjB,OAAOQ,MAAM,CAACE,CAAC,CAACL,CAAQ,CAAC;EAC3B;EACA,OAAOb,MAAM,CAACmB,IAAW;AAC3B,CAAC,CAAC;AAEN,OAAO,MAAMC,IAAI,gBAAGpB,MAAM,CAACqB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"Messaging.mjs","names":["GenericTag","Effect","PubSub","Layer","Queue","Stream","EffectUtils","fromDispatchFactory","source","event","map","filter","p","t","d","handleDispatchFactory","hub","handle","subscribeForEachPar","_","void","make","gen","acquireRelease","unbounded","shutdown","sendQueue","send","payload","offer","dispatch","fromPubSub","fromDispatch","handleDispatch","Messaging","MesssagingLive","scoped"],"sources":["../../src/DiscordGateway/Messaging.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAU,QAAQ,gBAAgB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C,MAAMC,mBAAmB,GAErBC,MAAyE,IAGzEC,KAAQ,IAERJ,MAAM,CAACK,GAAG,CACRL,MAAM,CAACM,MAAM,CAACH,MAAM,EAAEI,CAAC,IAAIA,CAAC,CAACC,CAAC,KAAKJ,KAAK,CAAC,EACzCG,CAAC,IAAIA,CAAC,CAACE,CAAS,CACjB;AAEL,MAAMC,qBAAqB,GACxBC,GAAgE,IACjE,CACEP,KAAQ,EACRQ,MAAmE,KAEnEX,WAAW,CAACY,mBAAmB,CAACF,GAAG,EAAEG,CAAC,IAAG;EACvC,IAAIA,CAAC,CAACN,CAAC,KAAKJ,KAAK,EAAE;IACjB,OAAOQ,MAAM,CAACE,CAAC,CAACL,CAAQ,CAAC;EAC3B;EACA,OAAOb,MAAM,CAACmB,IAAW;AAC3B,CAAC,CAAC;AAEN,OAAO,MAAMC,IAAI,gBAAGpB,MAAM,CAACqB,GAAG,CAAC,aAAS;EACtC,MAAMN,GAAG,GAAG,OAAOf,MAAM,CAACsB,cAAc,CACtCrB,MAAM,CAACsB,SAAS,EAAgD,EAChEtB,MAAM,CAACuB,QAAQ,CAChB;EAED,MAAMC,SAAS,GAAG,OAAOzB,MAAM,CAACsB,cAAc,CAC5CnB,KAAK,CAACoB,SAAS,EAA6C,EAC5DpB,KAAK,CAACqB,QAAQ,CACf;EACD,MAAME,IAAI,GAAIC,OAAkD,IAC9DF,SAAS,CAACG,KAAK,CAACD,OAAO,CAAC;EAE1B,MAAME,QAAQ,GAAGzB,MAAM,CAAC0B,UAAU,CAACf,GAAG,CAAC;EACvC,MAAMgB,YAAY,GAAGzB,mBAAmB,CAACuB,QAAQ,CAAC;EAClD,MAAMG,cAAc,GAAGlB,qBAAqB,CAACC,GAAG,CAAC;EAEjD,OAAO;IACLA,GAAG;IACHU,SAAS;IACTI,QAAQ;IACRE,YAAY;IACZC,cAAc;IACdN;GACQ;AACZ,CAAC,CAAC;AAKF,OAAO,MAAMO,SAAS,gBAAGlC,UAAU,CAGjC,8BAA8B,CAAC;AACjC,OAAO,MAAMmC,cAAc,gBAAGhC,KAAK,CAACiC,MAAM,CAACF,SAAS,EAAEb,IAAI,CAAC","ignoreList":[]}
|
|
@@ -18,21 +18,21 @@ import * as Utils from "dfx/DiscordGateway/Shard/utils";
|
|
|
18
18
|
import { RateLimiterLive, RateLimiter } from "dfx/RateLimit";
|
|
19
19
|
import * as Discord from "dfx/types";
|
|
20
20
|
import { Messaging, MesssagingLive } from "dfx/DiscordGateway/Messaging";
|
|
21
|
-
export const make = /*#__PURE__*/Effect.gen(function* (
|
|
21
|
+
export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
22
22
|
const {
|
|
23
23
|
gateway,
|
|
24
24
|
token
|
|
25
|
-
} = yield*
|
|
26
|
-
const limiter = yield*
|
|
27
|
-
const dws = yield*
|
|
25
|
+
} = yield* DiscordConfig;
|
|
26
|
+
const limiter = yield* RateLimiter;
|
|
27
|
+
const dws = yield* DiscordWS;
|
|
28
28
|
const {
|
|
29
29
|
hub,
|
|
30
30
|
sendQueue
|
|
31
|
-
} = yield*
|
|
32
|
-
const connect = shard => Effect.gen(function* (
|
|
33
|
-
const outboundQueue = yield*
|
|
34
|
-
const pendingQueue = yield*
|
|
35
|
-
const phase = yield*
|
|
31
|
+
} = yield* Messaging;
|
|
32
|
+
const connect = shard => Effect.gen(function* () {
|
|
33
|
+
const outboundQueue = yield* Queue.unbounded();
|
|
34
|
+
const pendingQueue = yield* Queue.unbounded();
|
|
35
|
+
const phase = yield* Ref.make(0 /* Phase.Connecting */);
|
|
36
36
|
const setPhase = p => Effect.zipLeft(Ref.set(phase, p), Effect.annotateLogs(Effect.logTrace("phase transition"), "phase", p));
|
|
37
37
|
const outbound = Effect.zipLeft(Queue.take(outboundQueue), limiter.maybeWait("dfx.shard.send", Duration.minutes(1), 120));
|
|
38
38
|
const send = p => Effect.flatMap(Ref.get(phase), phase => phase === 2 /* Phase.Connected */ ? Queue.offer(outboundQueue, p) : Queue.offer(pendingQueue, p));
|
|
@@ -40,23 +40,23 @@ export const make = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
40
40
|
const prioritySend = p => Queue.offer(outboundQueue, p);
|
|
41
41
|
const resume = pipe(setPhase(2 /* Phase.Connected */), Effect.zipRight(Queue.takeAll(pendingQueue)), Effect.tap(_ => Queue.offerAll(outboundQueue, _)), Effect.asVoid);
|
|
42
42
|
const onConnecting = pipe(Queue.takeAll(outboundQueue), Effect.tap(msgs => Queue.offerAll(pendingQueue, Chunk.filter(msgs, msg => msg !== Reconnect && msg.op !== Discord.GatewayOpcode.IDENTIFY && msg.op !== Discord.GatewayOpcode.RESUME && msg.op !== Discord.GatewayOpcode.HEARTBEAT))), Effect.zipRight(setPhase(0 /* Phase.Connecting */)));
|
|
43
|
-
const socket = yield*
|
|
43
|
+
const socket = yield* dws.connect({
|
|
44
44
|
outbound,
|
|
45
45
|
onConnecting
|
|
46
|
-
})
|
|
46
|
+
});
|
|
47
47
|
const isReady = Option.liftPredicate(p => p.op === Discord.GatewayOpcode.DISPATCH && p.t === "READY");
|
|
48
|
-
const [latestReady, updateLatestReady] = yield*
|
|
49
|
-
const [latestSequence, updateLatestSequence] = yield*
|
|
48
|
+
const [latestReady, updateLatestReady] = yield* Utils.latest(p => Option.map(isReady(p), p => p.d));
|
|
49
|
+
const [latestSequence, updateLatestSequence] = yield* Utils.latest(p => Option.fromNullable(p.s));
|
|
50
50
|
const maybeUpdateUrl = p => Option.match(Option.map(isReady(p), p => p.d), {
|
|
51
51
|
onNone: () => Effect.void,
|
|
52
52
|
onSome: ({
|
|
53
53
|
resume_gateway_url
|
|
54
54
|
}) => socket.setUrl(resume_gateway_url)
|
|
55
55
|
});
|
|
56
|
-
const hellos = yield*
|
|
57
|
-
const acks = yield*
|
|
56
|
+
const hellos = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
57
|
+
const acks = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
58
58
|
// heartbeats
|
|
59
|
-
yield
|
|
59
|
+
yield Heartbeats.send(hellos, acks, latestSequence, heartbeatSend).pipe(Effect.forkScoped, Effect.interruptible);
|
|
60
60
|
// identify
|
|
61
61
|
const identify = Identify.identifyOrResume({
|
|
62
62
|
token: Secret.value(token),
|
|
@@ -95,8 +95,8 @@ export const make = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
}));
|
|
98
|
-
yield
|
|
99
|
-
yield
|
|
98
|
+
yield Queue.take(sendQueue).pipe(Effect.tap(send), Effect.forever, Effect.forkScoped, Effect.interruptible);
|
|
99
|
+
yield socket.take.pipe(Effect.flatMap(onPayload), Effect.forever, Effect.forkScoped, Effect.interruptible);
|
|
100
100
|
return {
|
|
101
101
|
id: shard,
|
|
102
102
|
send
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shard.mjs","names":["Chunk","GenericTag","Duration","pipe","Option","Secret","Effect","PubSub","Layer","Queue","Ref","DiscordConfig","DiscordWS","DiscordWSLive","Reconnect","Heartbeats","Identify","InvalidSession","Utils","RateLimiterLive","RateLimiter","Discord","Messaging","MesssagingLive","make","gen","
|
|
1
|
+
{"version":3,"file":"Shard.mjs","names":["Chunk","GenericTag","Duration","pipe","Option","Secret","Effect","PubSub","Layer","Queue","Ref","DiscordConfig","DiscordWS","DiscordWSLive","Reconnect","Heartbeats","Identify","InvalidSession","Utils","RateLimiterLive","RateLimiter","Discord","Messaging","MesssagingLive","make","gen","gateway","token","limiter","dws","hub","sendQueue","connect","shard","outboundQueue","unbounded","pendingQueue","phase","setPhase","p","zipLeft","set","annotateLogs","logTrace","outbound","take","maybeWait","minutes","send","flatMap","get","offer","heartbeatSend","succeed","prioritySend","resume","zipRight","takeAll","tap","_","offerAll","asVoid","onConnecting","msgs","filter","msg","op","GatewayOpcode","IDENTIFY","RESUME","HEARTBEAT","socket","isReady","liftPredicate","DISPATCH","t","latestReady","updateLatestReady","latest","map","d","latestSequence","updateLatestSequence","fromNullable","s","maybeUpdateUrl","match","onNone","void","onSome","resume_gateway_url","setUrl","hellos","acquireRelease","shutdown","acks","forkScoped","interruptible","identify","identifyOrResume","value","intents","presence","onPayload","HELLO","HEARTBEAT_ACK","INVALID_SESSION","fromPayload","publish","RECONNECT","forever","id","package","module","Shard","ShardLive","effect","provide"],"sources":["../../src/DiscordGateway/Shard.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -12,16 +12,16 @@ import * as Layer from "effect/Layer";
|
|
|
12
12
|
import * as Ref from "effect/Ref";
|
|
13
13
|
import * as Schedule from "effect/Schedule";
|
|
14
14
|
const claimRepeatPolicy = /*#__PURE__*/Schedule.spaced("3 minutes").pipe( /*#__PURE__*/Schedule.whileInput(_ => _._tag === "None"), Schedule.passthrough);
|
|
15
|
-
const make = /*#__PURE__*/Effect.gen(function* (
|
|
16
|
-
const store = yield*
|
|
17
|
-
const rest = yield*
|
|
15
|
+
const make = /*#__PURE__*/Effect.gen(function* () {
|
|
16
|
+
const store = yield* ShardStore;
|
|
17
|
+
const rest = yield* DiscordREST;
|
|
18
18
|
const {
|
|
19
19
|
gateway: config
|
|
20
|
-
} = yield*
|
|
21
|
-
const limiter = yield*
|
|
22
|
-
const shard = yield*
|
|
23
|
-
const currentShards = yield*
|
|
24
|
-
const gateway = yield*
|
|
20
|
+
} = yield* DiscordConfig;
|
|
21
|
+
const limiter = yield* RateLimiter;
|
|
22
|
+
const shard = yield* Shard;
|
|
23
|
+
const currentShards = yield* Ref.make(HashSet.empty());
|
|
24
|
+
const gateway = yield* rest.getGatewayBot().pipe(Effect.flatMap(r => r.json), Effect.catchAll(() => Effect.succeed({
|
|
25
25
|
url: "wss://gateway.discord.gg/",
|
|
26
26
|
shards: 1,
|
|
27
27
|
session_start_limit: {
|
|
@@ -32,7 +32,7 @@ const make = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
32
32
|
}
|
|
33
33
|
})));
|
|
34
34
|
const totalCount = config.shardCount ?? gateway.shards;
|
|
35
|
-
const currentCount = yield*
|
|
35
|
+
const currentCount = yield* Ref.make(0);
|
|
36
36
|
const claimId = sharderCount => pipe(store.claimId({
|
|
37
37
|
totalCount,
|
|
38
38
|
sharderCount
|
|
@@ -49,10 +49,10 @@ const make = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
49
49
|
concurrency,
|
|
50
50
|
id
|
|
51
51
|
}) => limiter.maybeWait(`dfx.sharder.${id % concurrency}`, Duration.millis(config.identifyRateLimit[0]), config.identifyRateLimit[1])), Effect.flatMap(c => shard.connect([c.id, c.totalCount])), Effect.flatMap(shard => Ref.update(currentShards, HashSet.add(shard))), Effect.forever);
|
|
52
|
-
yield
|
|
52
|
+
yield Effect.replicateEffect(spawner, gateway.session_start_limit.max_concurrency, {
|
|
53
53
|
concurrency: "unbounded",
|
|
54
54
|
discard: true
|
|
55
|
-
})
|
|
55
|
+
}).pipe(Effect.scoped, Effect.catchAllCause(Effect.logError), Effect.ensuring(Ref.set(currentShards, HashSet.empty())), Effect.forever, Effect.forkScoped, Effect.interruptible);
|
|
56
56
|
return {
|
|
57
57
|
shards: Ref.get(currentShards)
|
|
58
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sharder.mjs","names":["DiscordConfig","Shard","ShardLive","ShardStore","DiscordREST","DiscordRESTLive","RateLimiter","RateLimiterLive","GenericTag","Duration","Effect","pipe","HashSet","Layer","Ref","Schedule","claimRepeatPolicy","spaced","whileInput","_","_tag","passthrough","make","gen","store","rest","gateway","config","limiter","shard","currentShards","empty","getGatewayBot","flatMap","r","json","catchAll","succeed","url","shards","session_start_limit","total","remaining","reset_after","max_concurrency","totalCount","shardCount","currentCount","claimId","sharderCount","repeat","map","value","takeConfig","getAndUpdate","id","spawner","concurrency","tap","maybeWait","millis","identifyRateLimit","c","connect","update","add","forever","replicateEffect","discard","scoped","catchAllCause","logError","ensuring","set","forkScoped","interruptible","get","annotateLogs","package","module","Sharder","SharderLive","provide"],"sources":["../../src/DiscordGateway/Sharder.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,aAAa,QAAQ,mBAAmB;AAEjD,SAASC,KAAK,EAAEC,SAAS,QAAQ,0BAA0B;AAC3D,SAASC,UAAU,QAAQ,+BAA+B;AAC1D,SAASC,WAAW,EAAEC,eAAe,QAAQ,iBAAiB;AAC9D,SAASC,WAAW,EAAEC,eAAe,QAAQ,eAAe;AAE5D,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,OAAO,KAAKC,GAAG,MAAM,YAAY;AACjC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAE3C,MAAMC,iBAAiB,gBAAGD,QAAQ,CAACE,MAAM,CAAC,WAAW,CAAC,CAACN,IAAI,eACzDI,QAAQ,CAACG,UAAU,CAAEC,CAAwB,IAAKA,CAAC,CAACC,IAAI,KAAK,MAAM,CAAC,EACpEL,QAAQ,CAACM,WAAW,CAC4C;AAElE,MAAMC,IAAI,gBAAGZ,MAAM,CAACa,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"Sharder.mjs","names":["DiscordConfig","Shard","ShardLive","ShardStore","DiscordREST","DiscordRESTLive","RateLimiter","RateLimiterLive","GenericTag","Duration","Effect","pipe","HashSet","Layer","Ref","Schedule","claimRepeatPolicy","spaced","whileInput","_","_tag","passthrough","make","gen","store","rest","gateway","config","limiter","shard","currentShards","empty","getGatewayBot","flatMap","r","json","catchAll","succeed","url","shards","session_start_limit","total","remaining","reset_after","max_concurrency","totalCount","shardCount","currentCount","claimId","sharderCount","repeat","map","value","takeConfig","getAndUpdate","id","spawner","concurrency","tap","maybeWait","millis","identifyRateLimit","c","connect","update","add","forever","replicateEffect","discard","scoped","catchAllCause","logError","ensuring","set","forkScoped","interruptible","get","annotateLogs","package","module","Sharder","SharderLive","provide"],"sources":["../../src/DiscordGateway/Sharder.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/mjs/DiscordGateway.mjs
CHANGED
|
@@ -5,9 +5,9 @@ import * as Effect from "effect/Effect";
|
|
|
5
5
|
import * as Layer from "effect/Layer";
|
|
6
6
|
export const TypeId = /*#__PURE__*/Symbol.for("dfx/DiscordGateway");
|
|
7
7
|
export const DiscordGateway = /*#__PURE__*/GenericTag("dfx/DiscordGateway");
|
|
8
|
-
export const make = /*#__PURE__*/Effect.gen(function* (
|
|
9
|
-
const sharder = yield*
|
|
10
|
-
const messaging = yield*
|
|
8
|
+
export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
9
|
+
const sharder = yield* Sharder;
|
|
10
|
+
const messaging = yield* Messaging;
|
|
11
11
|
return DiscordGateway.of({
|
|
12
12
|
[TypeId]: TypeId,
|
|
13
13
|
dispatch: messaging.dispatch,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordGateway.mjs","names":["Messaging","MesssagingLive","Sharder","SharderLive","GenericTag","Effect","Layer","TypeId","Symbol","for","DiscordGateway","make","gen","
|
|
1
|
+
{"version":3,"file":"DiscordGateway.mjs","names":["Messaging","MesssagingLive","Sharder","SharderLive","GenericTag","Effect","Layer","TypeId","Symbol","for","DiscordGateway","make","gen","sharder","messaging","of","dispatch","fromDispatch","handleDispatch","send","shards","DiscordGatewayLive","effect","pipe","provide"],"sources":["../src/DiscordGateway.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAS,EAAEC,cAAc,QAAQ,8BAA8B;AAExE,SAASC,OAAO,EAAEC,WAAW,QAAQ,4BAA4B;AAEjE,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAGrC,OAAO,MAAMC,MAAM,gBAAGC,MAAM,CAACC,GAAG,CAAC,oBAAoB,CAAC;AAoBtD,OAAO,MAAMC,cAAc,gBAAGN,UAAU,CAAiB,oBAAoB,CAAC;AAE9E,OAAO,MAAMO,IAAI,gBAAGN,MAAM,CAACO,GAAG,CAAC,aAAS;EACtC,MAAMC,OAAO,GAAG,OAAOX,OAAO;EAC9B,MAAMY,SAAS,GAAG,OAAOd,SAAS;EAElC,OAAOU,cAAc,CAACK,EAAE,CAAC;IACvB,CAACR,MAAM,GAAGA,MAAM;IAChBS,QAAQ,EAAEF,SAAS,CAACE,QAAQ;IAC5BC,YAAY,EAAEH,SAAS,CAACG,YAAY;IACpCC,cAAc,EAAEJ,SAAS,CAACI,cAAc;IACxCC,IAAI,EAAEL,SAAS,CAACK,IAAI;IACpBC,MAAM,EAAEP,OAAO,CAACO;GACjB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,MAAMC,kBAAkB,gBAAGf,KAAK,CAACgB,MAAM,CAACZ,cAAc,EAAEC,IAAI,CAAC,CAACY,IAAI,eACvEjB,KAAK,CAACkB,OAAO,CAACvB,cAAc,CAAC,eAC7BK,KAAK,CAACkB,OAAO,CAACrB,WAAW,CAAC,CAC3B","ignoreList":[]}
|
package/mjs/DiscordREST.mjs
CHANGED
|
@@ -23,19 +23,19 @@ export class DiscordRESTError extends TypeIdError(DiscordRESTErrorTypeId, "Disco
|
|
|
23
23
|
return this.body !== undefined ? `${httpMessage}: ${JSON.stringify(this.body)}` : httpMessage;
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
const make = /*#__PURE__*/Effect.gen(function* (
|
|
26
|
+
const make = /*#__PURE__*/Effect.gen(function* () {
|
|
27
27
|
const {
|
|
28
28
|
rest,
|
|
29
29
|
token
|
|
30
|
-
} = yield*
|
|
31
|
-
const http = yield*
|
|
32
|
-
const store = yield*
|
|
30
|
+
} = yield* DiscordConfig;
|
|
31
|
+
const http = yield* Http.client.Client;
|
|
32
|
+
const store = yield* RateLimitStore;
|
|
33
33
|
const {
|
|
34
34
|
maybeWait
|
|
35
|
-
} = yield*
|
|
35
|
+
} = yield* RateLimiter;
|
|
36
36
|
const globalRateLimit = maybeWait("dfx.rest.global", Duration.decode(rest.globalRateLimit.window), rest.globalRateLimit.limit);
|
|
37
37
|
// Invalid route handling (40x)
|
|
38
|
-
const badRoutesRef = yield*
|
|
38
|
+
const badRoutesRef = yield* Ref.make(HashSet.empty());
|
|
39
39
|
const tenMinutes = Duration.toMillis(Duration.minutes(10));
|
|
40
40
|
const addBadRoute = route => Effect.logDebug("bad route").pipe(Effect.zipRight(Ref.update(badRoutesRef, HashSet.add(route))), Effect.zipRight(store.incrementCounter("dfx.rest.invalid", tenMinutes, 10000)), Effect.annotateLogs("route", route));
|
|
41
41
|
const isBadRoute = route => Effect.map(Ref.get(badRoutesRef), HashSet.has(route));
|
package/mjs/DiscordREST.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordREST.mjs","names":["TypeIdError","Http","DiscordConfig","rateLimitFromHeaders","retryAfter","routeFromConfig","RateLimitStore","RateLimiter","RateLimiterLive","Discord","LIB_VERSION","GenericTag","Duration","millis","Effect","Effectable","pipe","HashSet","Layer","Option","Ref","Secret","DiscordRESTErrorTypeId","Symbol","for","DiscordRESTError","message","httpMessage","error","body","undefined","JSON","stringify","make","gen","
|
|
1
|
+
{"version":3,"file":"DiscordREST.mjs","names":["TypeIdError","Http","DiscordConfig","rateLimitFromHeaders","retryAfter","routeFromConfig","RateLimitStore","RateLimiter","RateLimiterLive","Discord","LIB_VERSION","GenericTag","Duration","millis","Effect","Effectable","pipe","HashSet","Layer","Option","Ref","Secret","DiscordRESTErrorTypeId","Symbol","for","DiscordRESTError","message","httpMessage","error","body","undefined","JSON","stringify","make","gen","rest","token","http","client","Client","store","maybeWait","globalRateLimit","decode","window","limit","badRoutesRef","empty","tenMinutes","toMillis","minutes","addBadRoute","route","logDebug","zipRight","update","add","incrementCounter","annotateLogs","isBadRoute","map","get","has","removeBadRoute","remove","invalidRateLimit","tap","invalid","void","asVoid","requestRateLimit","path","request","Do","let","method","bind","getBucketForRoute","flatMap","maybeBucket","match","onNone","onSome","bucket","key","resetAfter","updateBuckets","response","url","headers","rateLimit","hasBucket","effectsToRun","putBucketRoute","remaining","push","removeCounter","putBucket","all","concurrency","discard","ignore","httpExecutor","filterStatusOk","mapRequest","req","prependUrl","baseUrl","setHeaders","Authorization","value","catchAll","reason","json","mapError","_","fail","executor","zipLeft","catchTag","e","status","sleep","getOrElse","seconds","package","module","routes","createRoutes","options","params","hasBody","appendUrlParams","_tag","formData","append","unsafeJsonBody","RestResponseImpl","Class","effect","constructor","commit","scoped","DiscordREST","DiscordRESTLive","provide"],"sources":["../src/DiscordREST.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAW,QAAQ,wBAAwB;AACpD,OAAO,KAAKC,IAAI,MAAM,6BAA6B;AACnD,SAASC,aAAa,QAAQ,mBAAmB;AAEjD,SACEC,oBAAoB,EACpBC,UAAU,EACVC,eAAe,QACV,uBAAuB;AAC9B,SAASC,cAAc,EAAEC,WAAW,EAAEC,eAAe,QAAQ,eAAe;AAC5E,OAAO,KAAKC,OAAO,MAAM,WAAW;AACpC,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,SAASC,MAAM,QAAQ,iBAAiB;AACxC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,UAAU,MAAM,mBAAmB;AAC/C,SAASC,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,GAAG,MAAM,YAAY;AAEjC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,OAAO,MAAMC,sBAAsB,gBAAGC,MAAM,CAACC,GAAG,CAC9C,kCAAkC,CACnC;AAED,OAAM,MAAOC,gBAAiB,SAAQzB,WAAW,CAC/CsB,sBAAsB,EACtB,kBAAkB,CAIlB;EACA,IAAII,OAAOA,CAAA;IACT,MAAMC,WAAW,GAAG,IAAI,CAACC,KAAK,CAACF,OAAO;IACtC,OAAO,IAAI,CAACG,IAAI,KAAKC,SAAS,GAC1B,GAAGH,WAAW,KAAKI,IAAI,CAACC,SAAS,CAAC,IAAI,CAACH,IAAI,CAAC,EAAE,GAC9CF,WAAW;EACjB;;AAGF,MAAMM,IAAI,gBAAGnB,MAAM,CAACoB,GAAG,CAAC,aAAS;EAC/B,MAAM;IAAEC,IAAI;IAAEC;EAAK,CAAE,GAAG,OAAOlC,aAAa;EAE5C,MAAMmC,IAAI,GAAG,OAAOpC,IAAI,CAACqC,MAAM,CAACC,MAAM;EACtC,MAAMC,KAAK,GAAG,OAAOlC,cAAc;EACnC,MAAM;IAAEmC;EAAS,CAAE,GAAG,OAAOlC,WAAW;EAExC,MAAMmC,eAAe,GAAGD,SAAS,CAC/B,iBAAiB,EACjB7B,QAAQ,CAAC+B,MAAM,CAACR,IAAI,CAACO,eAAe,CAACE,MAAM,CAAC,EAC5CT,IAAI,CAACO,eAAe,CAACG,KAAK,CAC3B;EAED;EACA,MAAMC,YAAY,GAAG,OAAO1B,GAAG,CAACa,IAAI,CAAChB,OAAO,CAAC8B,KAAK,EAAU,CAAC;EAC7D,MAAMC,UAAU,GAAGpC,QAAQ,CAACqC,QAAQ,CAACrC,QAAQ,CAACsC,OAAO,CAAC,EAAE,CAAC,CAAC;EAC1D,MAAMC,WAAW,GAAIC,KAAa,IAChCtC,MAAM,CAACuC,QAAQ,CAAC,WAAW,CAAC,CAACrC,IAAI,CAC/BF,MAAM,CAACwC,QAAQ,CAAClC,GAAG,CAACmC,MAAM,CAACT,YAAY,EAAE7B,OAAO,CAACuC,GAAG,CAACJ,KAAK,CAAC,CAAC,CAAC,EAC7DtC,MAAM,CAACwC,QAAQ,CACbd,KAAK,CAACiB,gBAAgB,CAAC,kBAAkB,EAAET,UAAU,EAAE,KAAK,CAAC,CAC9D,EACDlC,MAAM,CAAC4C,YAAY,CAAC,OAAO,EAAEN,KAAK,CAAC,CACpC;EACH,MAAMO,UAAU,GAAIP,KAAa,IAC/BtC,MAAM,CAAC8C,GAAG,CAACxC,GAAG,CAACyC,GAAG,CAACf,YAAY,CAAC,EAAE7B,OAAO,CAAC6C,GAAG,CAACV,KAAK,CAAC,CAAC;EACvD,MAAMW,cAAc,GAAIX,KAAa,IACnChC,GAAG,CAACmC,MAAM,CAACT,YAAY,EAAE7B,OAAO,CAAC+C,MAAM,CAACZ,KAAK,CAAC,CAAC;EAEjD,MAAMa,gBAAgB,GAAIb,KAAa,IACrCO,UAAU,CAACP,KAAK,CAAC,CAACpC,IAAI,CACpBF,MAAM,CAACoD,GAAG,CAACC,OAAO,IAChBA,OAAO,GACH1B,SAAS,CAAC,kBAAkB,EAAE7B,QAAQ,CAACsC,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAC1DpC,MAAM,CAACsD,IAAI,CAChB,EACDtD,MAAM,CAACuD,MAAM,CACd;EAEH;EACA,MAAMC,gBAAgB,GAAGA,CACvBC,IAAY,EACZC,OAAmC,KAEnC1D,MAAM,CAAC2D,EAAE,CAACzD,IAAI,CACZF,MAAM,CAAC4D,GAAG,CAAC,OAAO,EAAE,MAAMrE,eAAe,CAACkE,IAAI,EAAEC,OAAO,CAACG,MAAM,CAAC,CAAC,EAChE7D,MAAM,CAAC8D,IAAI,CAAC,aAAa,EAAE,CAAC;IAAExB;EAAK,CAAE,KAAKZ,KAAK,CAACqC,iBAAiB,CAACzB,KAAK,CAAC,CAAC,EACzEtC,MAAM,CAACgE,OAAO,CAAC,CAAC;IAAEC,WAAW;IAAE3B;EAAK,CAAE,KACpCjC,MAAM,CAAC6D,KAAK,CAACD,WAAW,EAAE;IACxBE,MAAM,EAAEA,CAAA,KAAMhB,gBAAgB,CAACb,KAAK,CAAC;IACrC8B,MAAM,EAAEC,MAAM,IACZrE,MAAM,CAACwC,QAAQ,CACbW,gBAAgB,CAACb,KAAK,CAAC,EACvBX,SAAS,CACP,YAAY0C,MAAM,CAACC,GAAG,EAAE,EACxBvE,MAAM,CAACsE,MAAM,CAACE,UAAU,CAAC,EACzBF,MAAM,CAACtC,KAAK,CACb;GAEN,CAAC,CACH,CACF;EAEH;EACA,MAAMyC,aAAa,GAAGA,CACpBd,OAAmC,EACnCe,QAAsC,KAEtCzE,MAAM,CAAC2D,EAAE,CAACzD,IAAI,CACZF,MAAM,CAAC4D,GAAG,CAAC,OAAO,EAAE,MAAMrE,eAAe,CAACmE,OAAO,CAACgB,GAAG,EAAEhB,OAAO,CAACG,MAAM,CAAC,CAAC,EACvE7D,MAAM,CAAC8D,IAAI,CAAC,WAAW,EAAE,MAAMzE,oBAAoB,CAACoF,QAAQ,CAACE,OAAO,CAAC,CAAC,EACtE3E,MAAM,CAAC8D,IAAI,CAAC,WAAW,EAAE,CAAC;IAAEc;EAAS,CAAE,KACrClD,KAAK,CAACmD,SAAS,CAACD,SAAS,CAACP,MAAM,CAAC,CAClC,EACDrE,MAAM,CAACgE,OAAO,CAAC,CAAC;IAAEa,SAAS;IAAED,SAAS;IAAEtC;EAAK,CAAE,KAAI;IACjD,MAAMwC,YAAY,GAAG,CACnB7B,cAAc,CAACX,KAAK,CAAC,EACrBZ,KAAK,CAACqD,cAAc,CAACzC,KAAK,EAAEsC,SAAS,CAACP,MAAM,CAAC,CAC9C;IAED,IAAI,CAACQ,SAAS,IAAID,SAAS,CAAC7C,KAAK,GAAG,CAAC,KAAK6C,SAAS,CAACI,SAAS,EAAE;MAC7DF,YAAY,CAACG,IAAI,CACfvD,KAAK,CAACwD,aAAa,CAAC,cAAc5C,KAAK,EAAE,CAAC,EAC1CZ,KAAK,CAACyD,SAAS,CAAC;QACdb,GAAG,EAAEM,SAAS,CAACP,MAAM;QACrBE,UAAU,EAAEzE,QAAQ,CAACqC,QAAQ,CAACyC,SAAS,CAACtF,UAAU,CAAC;QACnDyC,KAAK,EACH,CAAC8C,SAAS,IAAID,SAAS,CAACI,SAAS,GAAG,CAAC,GACjCJ,SAAS,CAACI,SAAS,GACnBJ,SAAS,CAAC7C;OACjB,CAAC,CACH;IACH;IAEA,OAAO/B,MAAM,CAACoF,GAAG,CAACN,YAAY,EAAE;MAC9BO,WAAW,EAAE,WAAW;MACxBC,OAAO,EAAE;KACV,CAAC;EACJ,CAAC,CAAC,EACFtF,MAAM,CAACuF,MAAM,CACd;EAEH,MAAMC,YAAY,GAAGtF,IAAI,CACvBf,IAAI,CAACqC,MAAM,CAACiE,cAAc,CAAClE,IAAI,CAAC,EAChCpC,IAAI,CAACqC,MAAM,CAACkE,UAAU,CAACC,GAAG,IACxBzF,IAAI,CACFf,IAAI,CAACuE,OAAO,CAACkC,UAAU,CAACD,GAAG,EAAEtE,IAAI,CAACwE,OAAO,CAAC,EAC1C1G,IAAI,CAACuE,OAAO,CAACoC,UAAU,CAAC;IACtBC,aAAa,EAAE,OAAOxF,MAAM,CAACyF,KAAK,CAAC1E,KAAK,CAAC,EAAE;IAC3C,YAAY,EAAE,iDAAiD1B,WAAW;GAC3E,CAAC,CACH,CACF,EACDT,IAAI,CAACqC,MAAM,CAACyE,QAAQ,CAACnF,KAAK,IACxBA,KAAK,CAACoF,MAAM,KAAK,YAAY,GACzBpF,KAAK,CAAC2D,QAAQ,CAAC0B,IAAI,CAACjG,IAAI,CACtBF,MAAM,CAACoG,QAAQ,CAACC,CAAC,IAAI,IAAI1F,gBAAgB,CAAC;IAAEG;EAAK,CAAE,CAAC,CAAC,EACrDd,MAAM,CAACgE,OAAO,CAACjD,IAAI,IACjBf,MAAM,CAACsG,IAAI,CAAC,IAAI3F,gBAAgB,CAAC;IAAEG,KAAK;IAAEC;EAAI,CAAE,CAAC,CAAC,CACnD,CACF,GACDf,MAAM,CAACsG,IAAI,CAAC,IAAI3F,gBAAgB,CAAC;IAAEG;EAAK,CAAE,CAAC,CAAC,CACjD,CACF;EAED,MAAMyF,QAAQ,GACZ7C,OAAmC,IAEnCF,gBAAgB,CAACE,OAAO,CAACgB,GAAG,EAAEhB,OAAO,CAAC,CAACxD,IAAI,CACzCF,MAAM,CAACwG,OAAO,CAAC5E,eAAe,CAAC,EAC/B5B,MAAM,CAACwC,QAAQ,CACbgD,YAAY,CAAC9B,OAAO,CAInB,CACF,EACD1D,MAAM,CAACoD,GAAG,CAACqB,QAAQ,IAAID,aAAa,CAACd,OAAO,EAAEe,QAAQ,CAAC,CAAC,EACxDzE,MAAM,CAACyG,QAAQ,CAAC,kBAAkB,EAAEC,CAAC,IAAG;IACtC,IAAIA,CAAC,CAAC5F,KAAK,CAACoF,MAAM,KAAK,YAAY,EAAE;MACnC,OAAOlG,MAAM,CAACsG,IAAI,CAACI,CAAC,CAAC;IACvB;IAEA,MAAMjC,QAAQ,GAAGiC,CAAC,CAAC5F,KAAK,CAAC2D,QAAQ;IAEjC,QAAQA,QAAQ,CAACkC,MAAM;MACrB,KAAK,GAAG;QACN,OAAO3G,MAAM,CAACwC,QAAQ,CACpBxC,MAAM,CAACoF,GAAG,CACR,CACEpF,MAAM,CAAC4C,YAAY,CACjB5C,MAAM,CAACuC,QAAQ,CAAC,KAAK,CAAC,EACtB,KAAK,EACLmB,OAAO,CAACgB,GAAG,CACZ,EACDrC,WAAW,CAAC9C,eAAe,CAACmE,OAAO,CAACgB,GAAG,EAAEhB,OAAO,CAACG,MAAM,CAAC,CAAC,EACzDW,aAAa,CAACd,OAAO,EAAEe,QAAQ,CAAC,CACjC,EACD;UAAEY,WAAW,EAAE,WAAW;UAAEC,OAAO,EAAE;QAAI,CAAE,CAC5C,EACDtF,MAAM,CAACsG,IAAI,CAACI,CAAC,CAAC,CACf;MAEH,KAAK,GAAG;QACN,OAAO1G,MAAM,CAAC4C,YAAY,CACxB5C,MAAM,CAACuC,QAAQ,CAAC,KAAK,CAAC,EACtB,KAAK,EACLmB,OAAO,CAACgB,GAAG,CACZ,CAACxE,IAAI,CACJF,MAAM,CAACwC,QAAQ,CACbH,WAAW,CAAC9C,eAAe,CAACmE,OAAO,CAACgB,GAAG,EAAEhB,OAAO,CAACG,MAAM,CAAC,CAAC,CAC1D,EACD7D,MAAM,CAACwC,QAAQ,CAACgC,aAAa,CAACd,OAAO,EAAEe,QAAQ,CAAC,CAAC,EACjDzE,MAAM,CAACwC,QAAQ,CACbxC,MAAM,CAAC4G,KAAK,CACVvG,MAAM,CAACwG,SAAS,CAACvH,UAAU,CAACmF,QAAQ,CAACE,OAAO,CAAC,EAAE,MAC7C7E,QAAQ,CAACgH,OAAO,CAAC,CAAC,CAAC,CACpB,CACF,CACF,EACD9G,MAAM,CAACwC,QAAQ,CAAC+D,QAAQ,CAAI7C,OAAO,CAAC,CAAC,CACtC;IACL;IAEA,OAAO1D,MAAM,CAACsG,IAAI,CAACI,CAAC,CAAC;EACvB,CAAC,CAAC,EACF1G,MAAM,CAAC4C,YAAY,CAAC;IAClBmE,OAAO,EAAE,KAAK;IACdC,MAAM,EAAE;GACT,CAAC,CACH;EAEH,MAAMC,MAAM,GAAGtH,OAAO,CAACuH,YAAY,CACjC,CAAO;IACLrD,MAAM;IACNsD,OAAO,GAAG,EAAE;IACZC,MAAM;IACN1C;EAAG,CAIJ,KAAqB;IACpB,MAAM2C,OAAO,GAAGxD,MAAM,KAAK,KAAK,IAAIA,MAAM,KAAK,QAAQ;IACvD,IAAIH,OAAO,GAAGvE,IAAI,CAACuE,OAAO,CAACvC,IAAI,CAAC0C,MAAa,CAAC,CAACa,GAAG,EAAEyC,OAAO,CAAC;IAE5D,IAAI,CAACE,OAAO,EAAE;MACZ,IAAID,MAAM,EAAE;QACV1D,OAAO,GAAGvE,IAAI,CAACuE,OAAO,CAAC4D,eAAe,CAAC5D,OAAO,EAAE0D,MAAa,CAAC;MAChE;IACF,CAAC,MAAM,IAAIA,MAAM,IAAI1D,OAAO,CAAC3C,IAAI,CAACwG,IAAI,KAAK,UAAU,EAAE;MACrD7D,OAAO,CAAC3C,IAAI,CAACyG,QAAQ,CAACC,MAAM,CAAC,cAAc,EAAExG,IAAI,CAACC,SAAS,CAACkG,MAAM,CAAC,CAAC;IACtE,CAAC,MAAM,IAAIA,MAAM,EAAE;MACjB1D,OAAO,GAAGvE,IAAI,CAACuE,OAAO,CAACgE,cAAc,CAAChE,OAAO,EAAE0D,MAAM,CAAC;IACxD;IAEA,OAAO,IAAIO,gBAAgB,CAACpB,QAAQ,CAAC7C,OAAO,CAAC,CAAC;EAChD,CAAC,CACF;EAED,OAAO;IACL,GAAGuD,MAAM;IACTV;GACD;AACH,CAAC,CAAC;AAEF,MAAMoB,gBACJ,SAAQ1H,UAAU,CAAC2H,KAA4C;EAIpDC,MAAA;EADXC,YACWD,MAIR;IAED,KAAK,EAAE;IANE,KAAAA,MAAM,GAANA,MAAM;EAOjB;EAEAE,MAAMA,CAAA;IACJ,OAAO/H,MAAM,CAACgI,MAAM,CAAC,IAAI,CAACH,MAAM,CAAC;EACnC;EAEA,IAAI1B,IAAIA,CAAA;IACN,OAAOnG,MAAM,CAACgI,MAAM,CAAChI,MAAM,CAACgE,OAAO,CAAC,IAAI,CAAC6D,MAAM,EAAExB,CAAC,IAAIA,CAAC,CAACF,IAAI,CAAC,CAAC;EAChE;EAEA,IAAI1B,QAAQA,CAAA;IACV,OAAO,IAAI,CAACoD,MAAM;EACpB;;AAcF,OAAO,MAAMI,WAAW,gBAAGpI,UAAU,CACnC,iBAAiB,CAClB;AACD,OAAO,MAAMqI,eAAe,gBAAG9H,KAAK,CAACyH,MAAM,CAACI,WAAW,EAAE9G,IAAI,CAAC,CAACjB,IAAI,eACjEE,KAAK,CAAC+H,OAAO,CAACzI,eAAe,CAAC,CAC/B","ignoreList":[]}
|
|
@@ -17,12 +17,12 @@ import { globalValue } from "effect/GlobalValue";
|
|
|
17
17
|
import * as FiberRef from "effect/FiberRef";
|
|
18
18
|
export const interactionsSync = /*#__PURE__*/globalValue("dfx/Interactions/sync", () => FiberRef.unsafeMake(true));
|
|
19
19
|
export const setInteractionsSync = enabled => Layer.locally(interactionsSync, enabled);
|
|
20
|
-
export const run = postHandler => ix => Effect.gen(function* (
|
|
20
|
+
export const run = postHandler => ix => Effect.gen(function* () {
|
|
21
21
|
const GlobalApplicationCommand = ix.definitions.pipe(Chunk.map(_ => _[0]), Chunk.filter(_ => _._tag === "GlobalApplicationCommand"), Chunk.toReadonlyArray);
|
|
22
22
|
const GuildApplicationCommand = ix.definitions.pipe(Chunk.map(_ => _[0]), Chunk.filter(_ => _._tag === "GuildApplicationCommand"), Chunk.toReadonlyArray);
|
|
23
|
-
const gateway = yield*
|
|
24
|
-
const rest = yield*
|
|
25
|
-
const application = yield*
|
|
23
|
+
const gateway = yield* DiscordGateway;
|
|
24
|
+
const rest = yield* DiscordREST;
|
|
25
|
+
const application = yield* rest.getCurrentBotApplicationInformation().json;
|
|
26
26
|
const globalSync = rest.bulkOverwriteGlobalApplicationCommands(application.id, {
|
|
27
27
|
body: Http.body.unsafeJson(GlobalApplicationCommand.map(_ => _.command))
|
|
28
28
|
});
|
|
@@ -33,17 +33,17 @@ export const run = postHandler => ix => Effect.gen(function* (_) {
|
|
|
33
33
|
interactionId: i.id
|
|
34
34
|
}
|
|
35
35
|
}));
|
|
36
|
-
const sync = yield*
|
|
37
|
-
return yield*
|
|
36
|
+
const sync = yield* FiberRef.get(interactionsSync);
|
|
37
|
+
return yield* sync ? Effect.forever(Effect.all([run, globalSync, guildSync], {
|
|
38
38
|
concurrency: "unbounded",
|
|
39
39
|
discard: true
|
|
40
|
-
})) : run
|
|
40
|
+
})) : run;
|
|
41
41
|
});
|
|
42
|
-
const makeRegistry = /*#__PURE__*/Effect.gen(function* (
|
|
43
|
-
const ref = yield*
|
|
44
|
-
const queue = yield*
|
|
42
|
+
const makeRegistry = /*#__PURE__*/Effect.gen(function* () {
|
|
43
|
+
const ref = yield* Ref.make(builder);
|
|
44
|
+
const queue = yield* Queue.sliding(1);
|
|
45
45
|
const register = ix => Effect.flatMap(Ref.updateAndGet(ref, _ => _.concat(ix)), _ => Queue.offer(queue, _));
|
|
46
|
-
yield
|
|
46
|
+
yield EffectUtils.foreverSwitch(Queue.take(queue), ix => pipe(ix, run(Effect.catchAllCause(_ => Effect.logError("unhandled error", _))), Effect.delay(Duration.seconds(0.1)))).pipe(Effect.tapErrorCause(_ => Effect.logError("registry error", _)), Effect.retry(Schedule.exponential("1 seconds").pipe(Schedule.union(Schedule.spaced("20 seconds")))), Effect.forkScoped, Effect.interruptible);
|
|
47
47
|
return {
|
|
48
48
|
register
|
|
49
49
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.mjs","names":["Chunk","GenericTag","Duration","pipe","Effect","Layer","Queue","Ref","Http","DiscordGateway","DiscordREST","handlers","builder","Interaction","EffectUtils","Schedule","globalValue","FiberRef","interactionsSync","unsafeMake","setInteractionsSync","enabled","locally","run","postHandler","ix","gen","
|
|
1
|
+
{"version":3,"file":"gateway.mjs","names":["Chunk","GenericTag","Duration","pipe","Effect","Layer","Queue","Ref","Http","DiscordGateway","DiscordREST","handlers","builder","Interaction","EffectUtils","Schedule","globalValue","FiberRef","interactionsSync","unsafeMake","setInteractionsSync","enabled","locally","run","postHandler","ix","gen","GlobalApplicationCommand","definitions","map","_","filter","_tag","toReadonlyArray","GuildApplicationCommand","gateway","rest","application","getCurrentBotApplicationInformation","json","globalSync","bulkOverwriteGlobalApplicationCommands","id","body","unsafeJson","command","guildSync","length","handleDispatch","a","bulkOverwriteGuildApplicationCommands","never","handle","i","r","createInteractionResponse","token","effect","withSpan","provideService","type","attributes","interactionId","sync","get","forever","all","concurrency","discard","makeRegistry","ref","make","queue","sliding","register","flatMap","updateAndGet","concat","offer","foreverSwitch","take","catchAllCause","logError","delay","seconds","tapErrorCause","retry","exponential","union","spaced","forkScoped","interruptible","annotateLogs","package","service","InteractionsRegistry","InteractionsRegistryLive","scoped"],"sources":["../../src/Interactions/gateway.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/mjs/RateLimit.mjs
CHANGED
|
@@ -6,8 +6,8 @@ import * as Memory from "dfx/RateLimit/memory";
|
|
|
6
6
|
import { delayFrom } from "dfx/RateLimit/utils";
|
|
7
7
|
export const RateLimitStore = /*#__PURE__*/GenericTag("dfx/RateLimit/RateLimitStore");
|
|
8
8
|
export const MemoryRateLimitStoreLive = /*#__PURE__*/Layer.sync(RateLimitStore, Memory.make);
|
|
9
|
-
const makeLimiter = /*#__PURE__*/Effect.gen(function* (
|
|
10
|
-
const store = yield*
|
|
9
|
+
const makeLimiter = /*#__PURE__*/Effect.gen(function* () {
|
|
10
|
+
const store = yield* RateLimitStore;
|
|
11
11
|
const maybeWait = (key, window, limit, multiplier = 1.05) => {
|
|
12
12
|
const windowMs = Duration.toMillis(window) * multiplier;
|
|
13
13
|
return store.incrementCounter(key, windowMs, limit).pipe(Effect.map(([count, ttl]) => delayFrom(windowMs, limit, count, ttl)), Effect.tap(d => Effect.annotateLogs(Effect.logTrace("maybeWait"), {
|
package/mjs/RateLimit.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RateLimit.mjs","names":["GenericTag","Duration","Effect","Layer","Memory","delayFrom","RateLimitStore","MemoryRateLimitStoreLive","sync","make","makeLimiter","gen","
|
|
1
|
+
{"version":3,"file":"RateLimit.mjs","names":["GenericTag","Duration","Effect","Layer","Memory","delayFrom","RateLimitStore","MemoryRateLimitStoreLive","sync","make","makeLimiter","gen","store","maybeWait","key","window","limit","multiplier","windowMs","toMillis","incrementCounter","pipe","map","count","ttl","tap","d","annotateLogs","logTrace","service","delay","_","void","sleep","asVoid","RateLimiter","RateLimiterLive","effect"],"sources":["../src/RateLimit.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAU,QAAQ,gBAAgB;AAC3C,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAE3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,sBAAsB;AAC9C,SAASC,SAAS,QAAQ,qBAAqB;AAmC/C,OAAO,MAAMC,cAAc,gBAAGN,UAAU,CACtC,8BAA8B,CAC/B;AACD,OAAO,MAAMO,wBAAwB,gBAAGJ,KAAK,CAACK,IAAI,CAACF,cAAc,EAAEF,MAAM,CAACK,IAAI,CAAC;AAE/E,MAAMC,WAAW,gBAAGR,MAAM,CAACS,GAAG,CAAC,aAAS;EACtC,MAAMC,KAAK,GAAG,OAAON,cAAc;EAEnC,MAAMO,SAAS,GAAGA,CAChBC,GAAW,EACXC,MAAyB,EACzBC,KAAa,EACbC,UAAU,GAAG,IAAI,KACf;IACF,MAAMC,QAAQ,GAAGjB,QAAQ,CAACkB,QAAQ,CAACJ,MAAM,CAAC,GAAGE,UAAU;IAEvD,OAAOL,KAAK,CAACQ,gBAAgB,CAACN,GAAG,EAAEI,QAAQ,EAAEF,KAAK,CAAC,CAACK,IAAI,CACtDnB,MAAM,CAACoB,GAAG,CAAC,CAAC,CAACC,KAAK,EAAEC,GAAG,CAAC,KAAKnB,SAAS,CAACa,QAAQ,EAAEF,KAAK,EAAEO,KAAK,EAAEC,GAAG,CAAC,CAAC,EACpEtB,MAAM,CAACuB,GAAG,CAACC,CAAC,IACVxB,MAAM,CAACyB,YAAY,CAACzB,MAAM,CAAC0B,QAAQ,CAAC,WAAW,CAAC,EAAE;MAChDC,OAAO,EAAE,WAAW;MACpBf,GAAG;MACHC,MAAM,EAAEd,QAAQ,CAACkB,QAAQ,CAACJ,MAAM,CAAC;MACjCG,QAAQ;MACRF,KAAK;MACLc,KAAK,EAAE7B,QAAQ,CAACkB,QAAQ,CAACO,CAAC;KAC3B,CAAC,CACH,EACDxB,MAAM,CAACuB,GAAG,CAACM,CAAC,IACV9B,QAAQ,CAACkB,QAAQ,CAACY,CAAC,CAAC,KAAK,CAAC,GAAG7B,MAAM,CAAC8B,IAAI,GAAG9B,MAAM,CAAC+B,KAAK,CAACF,CAAC,CAAC,CAC3D,EACD7B,MAAM,CAACgC,MAAM,CACd;EACH,CAAC;EAED,OAAO;IAAErB;EAAS,CAAE;AACtB,CAAC,CAAC;AAKF,OAAO,MAAMsB,WAAW,gBAAGnC,UAAU,CAGnC,2BAA2B,CAAC;AAC9B,OAAO,MAAMoC,eAAe,gBAAGjC,KAAK,CAACkC,MAAM,CAACF,WAAW,EAAEzB,WAAW,CAAC","ignoreList":[]}
|
package/mjs/version.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const LIB_VERSION = "0.
|
|
1
|
+
export const LIB_VERSION = "0.95.0";
|
|
2
2
|
//# sourceMappingURL=version.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dfx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.95.0",
|
|
4
4
|
"description": "Effect-TS discord library",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"sideEffects": [],
|
|
36
36
|
"author": "Tim Smart <hello@timsmart.co>",
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"@effect/platform": "^0.
|
|
39
|
-
"effect": "^3.0.
|
|
38
|
+
"@effect/platform": "^0.50.2",
|
|
39
|
+
"effect": "^3.0.5"
|
|
40
40
|
},
|
|
41
41
|
"optionalDependencies": {
|
|
42
42
|
"bufferutil": "^4.0.8",
|
|
@@ -44,6 +44,6 @@
|
|
|
44
44
|
"utf-8-validate": "^6.0.3",
|
|
45
45
|
"zlib-sync": "^0.1.9"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "473a75d0bb61545ebe85359f15210e4c6c56a0a1",
|
|
48
48
|
"main": "./index.js"
|
|
49
49
|
}
|