dfx 0.64.1 → 0.66.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/driver.d.ts +2 -2
- package/Cache/driver.d.ts.map +1 -1
- package/Cache/memory.d.ts +1 -1
- package/Cache/memory.d.ts.map +1 -1
- package/Cache/memory.js +2 -2
- package/Cache/memoryTTL.d.ts +2 -2
- package/Cache/memoryTTL.d.ts.map +1 -1
- package/Cache/memoryTTL.js +4 -4
- package/Cache/prelude.d.ts +2 -2
- package/Cache/prelude.d.ts.map +1 -1
- package/Cache/prelude.js +2 -2
- package/Cache.d.ts +2 -2
- package/Cache.d.ts.map +1 -1
- package/Cache.js +3 -3
- package/DiscordConfig.d.ts +6 -6
- package/DiscordConfig.d.ts.map +1 -1
- package/DiscordConfig.js +6 -7
- package/DiscordConfig.js.map +1 -1
- package/DiscordGateway/DiscordWS.d.ts +3 -3
- package/DiscordGateway/DiscordWS.d.ts.map +1 -1
- package/DiscordGateway/DiscordWS.js +8 -12
- package/DiscordGateway/DiscordWS.js.map +1 -1
- package/DiscordGateway/Shard/heartbeats.d.ts +4 -4
- package/DiscordGateway/Shard/heartbeats.d.ts.map +1 -1
- package/DiscordGateway/Shard/heartbeats.js +6 -6
- package/DiscordGateway/Shard/identify.d.ts +3 -3
- package/DiscordGateway/Shard/identify.d.ts.map +1 -1
- package/DiscordGateway/Shard/identify.js +3 -3
- package/DiscordGateway/Shard/invalidSession.d.ts +3 -3
- package/DiscordGateway/Shard/invalidSession.d.ts.map +1 -1
- package/DiscordGateway/Shard/invalidSession.js +3 -3
- package/DiscordGateway/Shard/utils.d.ts +4 -4
- package/DiscordGateway/Shard/utils.d.ts.map +1 -1
- package/DiscordGateway/Shard/utils.js +4 -4
- package/DiscordGateway/Shard/utils.js.map +1 -1
- package/DiscordGateway/Shard.d.ts +5 -5
- package/DiscordGateway/Shard.d.ts.map +1 -1
- package/DiscordGateway/Shard.js +19 -21
- package/DiscordGateway/Shard.js.map +1 -1
- package/DiscordGateway/ShardStore.d.ts +4 -4
- package/DiscordGateway/ShardStore.d.ts.map +1 -1
- package/DiscordGateway/ShardStore.js +6 -8
- package/DiscordGateway/ShardStore.js.map +1 -1
- package/DiscordGateway/Sharder.d.ts +6 -6
- package/DiscordGateway/Sharder.d.ts.map +1 -1
- package/DiscordGateway/Sharder.js +21 -22
- package/DiscordGateway/Sharder.js.map +1 -1
- package/DiscordGateway/WS.d.ts +5 -5
- package/DiscordGateway/WS.d.ts.map +1 -1
- package/DiscordGateway/WS.js +16 -18
- package/DiscordGateway/WS.js.map +1 -1
- package/DiscordGateway.d.ts +5 -5
- package/DiscordGateway.d.ts.map +1 -1
- package/DiscordGateway.js +9 -12
- package/DiscordGateway.js.map +1 -1
- package/DiscordREST/types.d.ts +1 -1
- package/DiscordREST/types.d.ts.map +1 -1
- package/DiscordREST/utils.d.ts +2 -2
- package/DiscordREST/utils.d.ts.map +1 -1
- package/DiscordREST/utils.js +3 -3
- package/DiscordREST/utils.js.map +1 -1
- package/DiscordREST.d.ts +3 -3
- package/DiscordREST.d.ts.map +1 -1
- package/DiscordREST.js +15 -15
- package/DiscordREST.js.map +1 -1
- package/Helpers/intents.js +6 -12
- package/Helpers/intents.js.map +1 -1
- package/Helpers/interactions.d.ts +2 -2
- package/Helpers/interactions.d.ts.map +1 -1
- package/Helpers/interactions.js +6 -6
- package/Helpers/interactions.js.map +1 -1
- package/Helpers/permissions.d.ts +1 -1
- package/Helpers/permissions.d.ts.map +1 -1
- package/Helpers/permissions.js +7 -10
- package/Helpers/permissions.js.map +1 -1
- package/Interactions/builder.d.ts +3 -3
- package/Interactions/builder.d.ts.map +1 -1
- package/Interactions/builder.js +7 -7
- package/Interactions/builder.js.map +1 -1
- package/Interactions/context.d.ts +4 -4
- package/Interactions/context.d.ts.map +1 -1
- package/Interactions/context.js +14 -24
- package/Interactions/context.js.map +1 -1
- package/Interactions/definitions.d.ts +2 -2
- package/Interactions/definitions.d.ts.map +1 -1
- package/Interactions/gateway.d.ts +4 -4
- package/Interactions/gateway.d.ts.map +1 -1
- package/Interactions/gateway.js +11 -12
- package/Interactions/gateway.js.map +1 -1
- package/Interactions/handlers.d.ts +2 -2
- package/Interactions/handlers.d.ts.map +1 -1
- package/Interactions/handlers.js +2 -2
- package/Interactions/index.d.ts +1 -1
- package/Interactions/index.d.ts.map +1 -1
- package/Interactions/index.js +1 -1
- package/Interactions/utils.d.ts +2 -2
- package/Interactions/utils.d.ts.map +1 -1
- package/Interactions/utils.js +2 -2
- package/Interactions/webhook.d.ts +7 -7
- package/Interactions/webhook.d.ts.map +1 -1
- package/Interactions/webhook.js +8 -9
- package/Interactions/webhook.js.map +1 -1
- package/Log.d.ts +3 -3
- package/Log.d.ts.map +1 -1
- package/Log.js +6 -9
- package/Log.js.map +1 -1
- package/RateLimit/memory.js +2 -2
- package/RateLimit/memory.js.map +1 -1
- package/RateLimit/utils.d.ts +1 -1
- package/RateLimit/utils.d.ts.map +1 -1
- package/RateLimit/utils.js +1 -1
- package/RateLimit.d.ts +5 -5
- package/RateLimit.d.ts.map +1 -1
- package/RateLimit.js +8 -12
- package/RateLimit.js.map +1 -1
- package/gateway.d.ts +3 -3
- package/gateway.d.ts.map +1 -1
- package/gateway.js +11 -11
- package/gateway.js.map +1 -1
- package/mjs/Cache/memory.mjs +2 -2
- package/mjs/Cache/memory.mjs.map +1 -1
- package/mjs/Cache/memoryTTL.mjs +4 -4
- package/mjs/Cache/memoryTTL.mjs.map +1 -1
- package/mjs/Cache/prelude.mjs +2 -2
- package/mjs/Cache/prelude.mjs.map +1 -1
- package/mjs/Cache.mjs +3 -3
- package/mjs/Cache.mjs.map +1 -1
- package/mjs/DiscordConfig.mjs +5 -5
- package/mjs/DiscordConfig.mjs.map +1 -1
- package/mjs/DiscordGateway/DiscordWS.mjs +4 -4
- package/mjs/DiscordGateway/DiscordWS.mjs.map +1 -1
- package/mjs/DiscordGateway/Shard/heartbeats.mjs +6 -6
- package/mjs/DiscordGateway/Shard/heartbeats.mjs.map +1 -1
- package/mjs/DiscordGateway/Shard/identify.mjs +3 -3
- package/mjs/DiscordGateway/Shard/identify.mjs.map +1 -1
- package/mjs/DiscordGateway/Shard/invalidSession.mjs +3 -3
- package/mjs/DiscordGateway/Shard/invalidSession.mjs.map +1 -1
- package/mjs/DiscordGateway/Shard/utils.mjs +4 -4
- package/mjs/DiscordGateway/Shard/utils.mjs.map +1 -1
- package/mjs/DiscordGateway/Shard.mjs +16 -15
- package/mjs/DiscordGateway/Shard.mjs.map +1 -1
- package/mjs/DiscordGateway/ShardStore.mjs +4 -4
- package/mjs/DiscordGateway/ShardStore.mjs.map +1 -1
- package/mjs/DiscordGateway/Sharder.mjs +19 -18
- package/mjs/DiscordGateway/Sharder.mjs.map +1 -1
- package/mjs/DiscordGateway/WS.mjs +13 -12
- package/mjs/DiscordGateway/WS.mjs.map +1 -1
- package/mjs/DiscordGateway.mjs +6 -6
- package/mjs/DiscordGateway.mjs.map +1 -1
- package/mjs/DiscordREST/utils.mjs +3 -3
- package/mjs/DiscordREST/utils.mjs.map +1 -1
- package/mjs/DiscordREST.mjs +12 -11
- package/mjs/DiscordREST.mjs.map +1 -1
- package/mjs/Helpers/interactions.mjs +6 -6
- package/mjs/Helpers/interactions.mjs.map +1 -1
- package/mjs/Helpers/permissions.mjs +3 -2
- package/mjs/Helpers/permissions.mjs.map +1 -1
- package/mjs/Interactions/builder.mjs +4 -4
- package/mjs/Interactions/builder.mjs.map +1 -1
- package/mjs/Interactions/context.mjs +4 -4
- package/mjs/Interactions/context.mjs.map +1 -1
- package/mjs/Interactions/gateway.mjs +9 -8
- package/mjs/Interactions/gateway.mjs.map +1 -1
- package/mjs/Interactions/handlers.mjs +2 -2
- package/mjs/Interactions/handlers.mjs.map +1 -1
- package/mjs/Interactions/index.mjs +1 -1
- package/mjs/Interactions/index.mjs.map +1 -1
- package/mjs/Interactions/utils.mjs +2 -2
- package/mjs/Interactions/utils.mjs.map +1 -1
- package/mjs/Interactions/webhook.mjs +7 -7
- package/mjs/Interactions/webhook.mjs.map +1 -1
- package/mjs/Log.mjs +3 -3
- package/mjs/Log.mjs.map +1 -1
- package/mjs/RateLimit/memory.mjs +2 -2
- package/mjs/RateLimit/memory.mjs.map +1 -1
- package/mjs/RateLimit/utils.mjs +1 -1
- package/mjs/RateLimit/utils.mjs.map +1 -1
- package/mjs/RateLimit.mjs +4 -4
- package/mjs/RateLimit.mjs.map +1 -1
- package/mjs/gateway.mjs +3 -3
- package/mjs/gateway.mjs.map +1 -1
- package/mjs/utils/Effect.mjs +9 -8
- package/mjs/utils/Effect.mjs.map +1 -1
- package/mjs/version.mjs +1 -1
- package/mjs/webhooks.mjs +3 -3
- package/mjs/webhooks.mjs.map +1 -1
- package/package.json +5 -7
- package/src/Cache/driver.ts +2 -2
- package/src/Cache/memory.ts +2 -2
- package/src/Cache/memoryTTL.ts +4 -4
- package/src/Cache/prelude.ts +2 -2
- package/src/Cache.ts +3 -3
- package/src/DiscordConfig.ts +7 -7
- package/src/DiscordGateway/DiscordWS.ts +4 -4
- package/src/DiscordGateway/Shard/heartbeats.ts +6 -6
- package/src/DiscordGateway/Shard/identify.ts +3 -3
- package/src/DiscordGateway/Shard/invalidSession.ts +3 -3
- package/src/DiscordGateway/Shard/utils.ts +4 -4
- package/src/DiscordGateway/Shard.ts +11 -11
- package/src/DiscordGateway/ShardStore.ts +4 -4
- package/src/DiscordGateway/Sharder.ts +13 -13
- package/src/DiscordGateway/WS.ts +7 -7
- package/src/DiscordGateway.ts +7 -7
- package/src/DiscordREST/types.ts +1 -1
- package/src/DiscordREST/utils.ts +3 -3
- package/src/DiscordREST.ts +10 -10
- package/src/Helpers/interactions.ts +4 -4
- package/src/Helpers/permissions.ts +2 -2
- package/src/Interactions/builder.ts +5 -5
- package/src/Interactions/context.ts +5 -5
- package/src/Interactions/definitions.ts +2 -2
- package/src/Interactions/gateway.ts +9 -9
- package/src/Interactions/handlers.ts +3 -3
- package/src/Interactions/index.ts +1 -1
- package/src/Interactions/utils.ts +2 -2
- package/src/Interactions/webhook.ts +10 -10
- package/src/Log.ts +3 -3
- package/src/RateLimit/memory.ts +2 -2
- package/src/RateLimit/utils.ts +2 -2
- package/src/RateLimit.ts +5 -5
- package/src/gateway.ts +4 -4
- package/src/utils/Effect.ts +7 -7
- package/src/version.ts +1 -1
- package/src/webhooks.ts +4 -4
- package/tsconfig.tsbuildinfo +1 -0
- package/types.js +11 -72
- package/types.js.map +1 -1
- package/utils/Effect.d.ts +2 -2
- package/utils/Effect.d.ts.map +1 -1
- package/utils/Effect.js +9 -8
- package/utils/Effect.js.map +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -2
- package/version.js.map +1 -1
- package/webhooks.d.ts +3 -3
- package/webhooks.d.ts.map +1 -1
- package/webhooks.js +5 -7
- package/webhooks.js.map +1 -1
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import * as Chunk from "
|
|
2
|
-
import { Tag } from "
|
|
3
|
-
import * as Duration from "
|
|
4
|
-
import
|
|
5
|
-
import * as
|
|
6
|
-
import * as
|
|
7
|
-
import * as
|
|
8
|
-
import * as
|
|
9
|
-
import * as
|
|
10
|
-
import * as
|
|
1
|
+
import * as Chunk from "effect/Chunk";
|
|
2
|
+
import { Tag } from "effect/Context";
|
|
3
|
+
import * as Duration from "effect/Duration";
|
|
4
|
+
import { pipe } from "effect/Function";
|
|
5
|
+
import * as Option from "effect/Option";
|
|
6
|
+
import * as ConfigSecret from "effect/ConfigSecret";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Hub from "effect/Hub";
|
|
9
|
+
import * as Layer from "effect/Layer";
|
|
10
|
+
import * as Queue from "effect/Queue";
|
|
11
|
+
import * as Ref from "effect/Ref";
|
|
11
12
|
import { DiscordConfig } from "dfx/DiscordConfig";
|
|
12
13
|
import { DiscordWS, LiveDiscordWS } from "dfx/DiscordGateway/DiscordWS";
|
|
13
14
|
import * as Heartbeats from "dfx/DiscordGateway/Shard/heartbeats";
|
|
@@ -35,8 +36,8 @@ export const make = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
35
36
|
const send = p => Effect.flatMap(Ref.get(phase), phase => phase === 2 /* Phase.Connected */ ? Queue.offer(outboundQueue, p) : Queue.offer(pendingQueue, p));
|
|
36
37
|
const heartbeatSend = p => Effect.flatMap(Ref.get(phase), phase => phase !== 0 /* Phase.Connecting */ ? Queue.offer(outboundQueue, p) : Effect.succeed(false));
|
|
37
38
|
const prioritySend = p => Queue.offer(outboundQueue, p);
|
|
38
|
-
const resume =
|
|
39
|
-
const onConnecting =
|
|
39
|
+
const resume = pipe(setPhase(2 /* Phase.Connected */), Effect.zipRight(Queue.takeAll(pendingQueue)), Effect.tap(_ => Queue.offerAll(outboundQueue, _)), Effect.asUnit);
|
|
40
|
+
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 */)));
|
|
40
41
|
const socket = yield* _(dws.connect({
|
|
41
42
|
outbound,
|
|
42
43
|
onConnecting
|
|
@@ -61,10 +62,10 @@ export const make = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
61
62
|
intents: gateway.intents,
|
|
62
63
|
presence: gateway.presence
|
|
63
64
|
}, latestReady, latestSequence);
|
|
64
|
-
const onPayload = p => Effect.tap(() => {
|
|
65
|
+
const onPayload = p => pipe(updateLatestReady(p), Effect.zipRight(updateLatestSequence(p)), Effect.zipRight(maybeUpdateUrl(p)), Effect.tap(() => {
|
|
65
66
|
switch (p.op) {
|
|
66
67
|
case Discord.GatewayOpcode.HELLO:
|
|
67
|
-
return Effect.
|
|
68
|
+
return pipe(Effect.tap(identify, prioritySend), Effect.zipRight(setPhase(1 /* Phase.Handshake */)), Effect.zipRight(Queue.offer(hellos, p)));
|
|
68
69
|
case Discord.GatewayOpcode.HEARTBEAT_ACK:
|
|
69
70
|
return Queue.offer(acks, p);
|
|
70
71
|
case Discord.GatewayOpcode.INVALID_SESSION:
|
|
@@ -77,7 +78,7 @@ export const make = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
77
78
|
default:
|
|
78
79
|
return Effect.unit;
|
|
79
80
|
}
|
|
80
|
-
})
|
|
81
|
+
}));
|
|
81
82
|
const drainSendQueue = Effect.forever(Effect.tap(Queue.take(sendQueue), send));
|
|
82
83
|
const run = Effect.all([Effect.forever(Effect.flatMap(socket.take, onPayload)), heartbeats, drainSendQueue, socket.run], {
|
|
83
84
|
discard: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shard.mjs","names":["Chunk","Tag","Duration","Option","ConfigSecret","Effect","Hub","Layer","Queue","Ref","DiscordConfig","DiscordWS","LiveDiscordWS","Heartbeats","Identify","InvalidSession","Utils","Reconnect","Log","LiveRateLimiter","RateLimiter","Discord","make","gen","_","gateway","token","limiter","dws","log","connect","shard","hub","sendQueue","outboundQueue","unbounded","pendingQueue","phase","setPhase","p","zipLeft","set","debug","outbound","take","maybeWait","minutes","send","flatMap","get","offer","heartbeatSend","succeed","prioritySend","resume","
|
|
1
|
+
{"version":3,"file":"Shard.mjs","names":["Chunk","Tag","Duration","pipe","Option","ConfigSecret","Effect","Hub","Layer","Queue","Ref","DiscordConfig","DiscordWS","LiveDiscordWS","Heartbeats","Identify","InvalidSession","Utils","Reconnect","Log","LiveRateLimiter","RateLimiter","Discord","make","gen","_","gateway","token","limiter","dws","log","connect","shard","hub","sendQueue","outboundQueue","unbounded","pendingQueue","phase","setPhase","p","zipLeft","set","debug","outbound","take","maybeWait","minutes","send","flatMap","get","offer","heartbeatSend","succeed","prioritySend","resume","zipRight","takeAll","tap","offerAll","asUnit","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","unit","onSome","resume_gateway_url","setUrl","hellos","acks","heartbeats","identify","identifyOrResume","value","intents","presence","onPayload","HELLO","HEARTBEAT_ACK","INVALID_SESSION","fromPayload","publish","drainSendQueue","forever","run","all","discard","concurrency","id","Shard","LiveShard","provide","merge","effect"],"sources":["../../src/DiscordGateway/Shard.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Tag } from "
|
|
2
|
-
import * as Option from "
|
|
3
|
-
import * as Effect from "
|
|
4
|
-
import * as Layer from "
|
|
1
|
+
import { Tag } from "effect/Context";
|
|
2
|
+
import * as Option from "effect/Option";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Layer from "effect/Layer";
|
|
5
5
|
export const ShardStore = /*#__PURE__*/Tag();
|
|
6
6
|
// Very basic shard id store, that does no health checks
|
|
7
7
|
const memoryStore = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShardStore.mjs","names":["Tag","Option","Effect","Layer","ShardStore","memoryStore","currentId","claimId","totalCount","sync","none","id","some","allClaimed","LiveMemoryShardStore"],"sources":["../../src/DiscordGateway/ShardStore.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"ShardStore.mjs","names":["Tag","Option","Effect","Layer","ShardStore","memoryStore","currentId","claimId","totalCount","sync","none","id","some","allClaimed","LiveMemoryShardStore"],"sources":["../../src/DiscordGateway/ShardStore.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AACpC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAcrC,OAAO,MAAMC,UAAU,gBAAGJ,GAAG,EAAc;AAE3C;AACA,MAAMK,WAAW,GAAGA,CAAA,KAAiB;EACnC,IAAIC,SAAS,GAAG,CAAC;EAEjB,OAAO;IACLC,OAAO,EAAEA,CAAC;MAAEC;IAAU,CAAE,KACtBN,MAAM,CAACO,IAAI,CAAC,MAAK;MACf,IAAIH,SAAS,IAAIE,UAAU,EAAE;QAC3B,OAAOP,MAAM,CAACS,IAAI,EAAE;;MAGtB,MAAMC,EAAE,GAAGL,SAAS;MACpBA,SAAS,EAAE;MACX,OAAOL,MAAM,CAACW,IAAI,CAACD,EAAE,CAAC;IACxB,CAAC,CAAC;IAEJE,UAAU,EAAEL,UAAU,IAAIN,MAAM,CAACO,IAAI,CAAC,MAAMH,SAAS,IAAIE,UAAU;GACpE;AACH,CAAC;AAED,OAAO,MAAMM,oBAAoB,gBAAGX,KAAK,CAACM,IAAI,CAACL,UAAU,EAAEC,WAAW,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import * as Chunk from "
|
|
2
|
-
import { Tag } from "
|
|
3
|
-
import * as Duration from "
|
|
4
|
-
import
|
|
5
|
-
import * as
|
|
6
|
-
import * as
|
|
7
|
-
import * as
|
|
8
|
-
import * as
|
|
9
|
-
import * as
|
|
1
|
+
import * as Chunk from "effect/Chunk";
|
|
2
|
+
import { Tag } from "effect/Context";
|
|
3
|
+
import * as Duration from "effect/Duration";
|
|
4
|
+
import { pipe } from "effect/Function";
|
|
5
|
+
import * as HashSet from "effect/HashSet";
|
|
6
|
+
import * as Deferred from "effect/Deferred";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Layer from "effect/Layer";
|
|
9
|
+
import * as Ref from "effect/Ref";
|
|
10
|
+
import * as Schedule from "effect/Schedule";
|
|
10
11
|
import { DiscordConfig } from "dfx/DiscordConfig";
|
|
11
12
|
import { LiveShard, Shard } from "dfx/DiscordGateway/Shard";
|
|
12
13
|
import { ShardStore } from "dfx/DiscordGateway/ShardStore";
|
|
@@ -24,14 +25,14 @@ const make = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
24
25
|
const currentShards = yield* _(Ref.make(HashSet.empty()));
|
|
25
26
|
const takeConfig = totalCount => Effect.gen(function* (_) {
|
|
26
27
|
const currentCount = yield* _(Ref.make(0));
|
|
27
|
-
const claimId = sharderCount =>
|
|
28
|
+
const claimId = sharderCount => pipe(store.claimId({
|
|
28
29
|
totalCount,
|
|
29
30
|
sharderCount
|
|
30
|
-
})));
|
|
31
|
-
return Effect.map(id => ({
|
|
31
|
+
}), Effect.repeat(claimRepeatPolicy), Effect.map(_ => _.value));
|
|
32
|
+
return pipe(Ref.getAndUpdate(currentCount, _ => _ + 1), Effect.flatMap(claimId), Effect.map(id => ({
|
|
32
33
|
id,
|
|
33
34
|
totalCount
|
|
34
|
-
}))
|
|
35
|
+
})));
|
|
35
36
|
});
|
|
36
37
|
const gateway = yield* _(rest.getGatewayBot(), Effect.flatMap(r => r.json), Effect.catchAll(() => Effect.succeed({
|
|
37
38
|
url: "wss://gateway.discord.gg/",
|
|
@@ -46,14 +47,14 @@ const make = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
46
47
|
const run = (hub, sendQueue) => Effect.gen(function* (_) {
|
|
47
48
|
const deferred = yield* _(Deferred.make());
|
|
48
49
|
const take = yield* _(takeConfig(config.shardCount ?? gateway.shards));
|
|
49
|
-
const spawner =
|
|
50
|
-
concurrency,
|
|
51
|
-
id
|
|
52
|
-
}) => limiter.maybeWait(`dfx.sharder.${id % concurrency}`, Duration.millis(config.identifyRateLimit[0]), config.identifyRateLimit[1]))(Effect.map(config => ({
|
|
50
|
+
const spawner = pipe(take, Effect.map(config => ({
|
|
53
51
|
...config,
|
|
54
52
|
url: gateway.url,
|
|
55
53
|
concurrency: gateway.session_start_limit.max_concurrency
|
|
56
|
-
}))(
|
|
54
|
+
})), Effect.tap(({
|
|
55
|
+
concurrency,
|
|
56
|
+
id
|
|
57
|
+
}) => limiter.maybeWait(`dfx.sharder.${id % concurrency}`, Duration.millis(config.identifyRateLimit[0]), config.identifyRateLimit[1])), Effect.flatMap(c => shard.connect([c.id, c.totalCount], hub, sendQueue)), Effect.flatMap(shard => Effect.acquireUseRelease(Ref.update(currentShards, HashSet.add(shard)), () => shard.run, () => Ref.update(currentShards, HashSet.remove(shard))).pipe(Effect.catchAllCause(_ => Deferred.failCause(deferred, _)), Effect.fork)), Effect.forever);
|
|
57
58
|
const spawners = Chunk.map(Chunk.range(1, gateway.session_start_limit.max_concurrency), () => spawner);
|
|
58
59
|
return yield* _(Effect.all([Effect.all(spawners, {
|
|
59
60
|
concurrency: "unbounded",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sharder.mjs","names":["Chunk","Tag","Duration","HashSet","Deferred","Effect","Layer","Ref","Schedule","DiscordConfig","LiveShard","Shard","ShardStore","DiscordREST","LiveRateLimiter","RateLimiter","claimRepeatPolicy","spaced","
|
|
1
|
+
{"version":3,"file":"Sharder.mjs","names":["Chunk","Tag","Duration","pipe","HashSet","Deferred","Effect","Layer","Ref","Schedule","DiscordConfig","LiveShard","Shard","ShardStore","DiscordREST","LiveRateLimiter","RateLimiter","claimRepeatPolicy","spaced","whileInput","_","_tag","passthrough","make","gen","store","rest","gateway","config","limiter","shard","currentShards","empty","takeConfig","totalCount","currentCount","claimId","sharderCount","repeat","map","value","getAndUpdate","flatMap","id","getGatewayBot","r","json","catchAll","succeed","url","shards","session_start_limit","total","remaining","reset_after","max_concurrency","run","hub","sendQueue","deferred","take","shardCount","spawner","concurrency","tap","maybeWait","millis","identifyRateLimit","c","connect","acquireUseRelease","update","add","remove","catchAllCause","failCause","fork","forever","spawners","range","all","discard","await","get","Sharder","LiveSharder","provide","merge","effect"],"sources":["../../src/DiscordGateway/Sharder.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Tag } from "
|
|
2
|
-
import * as Duration from "
|
|
3
|
-
import
|
|
4
|
-
import * as
|
|
5
|
-
import * as
|
|
6
|
-
import * as
|
|
1
|
+
import { Tag } from "effect/Context";
|
|
2
|
+
import * as Duration from "effect/Duration";
|
|
3
|
+
import { pipe } from "effect/Function";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import * as Layer from "effect/Layer";
|
|
6
|
+
import * as Queue from "effect/Queue";
|
|
7
|
+
import * as Ref from "effect/Ref";
|
|
7
8
|
import { Log } from "dfx/Log";
|
|
8
9
|
import WebSocket from "isomorphic-ws";
|
|
9
10
|
export const Reconnect = /*#__PURE__*/Symbol();
|
|
@@ -26,12 +27,12 @@ export class WebSocketCloseError {
|
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
const isReconnect = e => e._tag === "WebSocketCloseError" && e.code === 1012;
|
|
29
|
-
const socket = urlRef => Effect.acquireRelease(ws => Effect.sync(() => {
|
|
30
|
+
const socket = urlRef => pipe(Ref.get(urlRef), Effect.map(_ => new WebSocket(_)), Effect.acquireRelease(ws => Effect.sync(() => {
|
|
30
31
|
// eslint-disable-next-line no-extra-semi
|
|
31
32
|
;
|
|
32
33
|
ws.removeAllListeners?.();
|
|
33
34
|
ws.close();
|
|
34
|
-
}))
|
|
35
|
+
})));
|
|
35
36
|
const offer = (ws, queue, log) => Effect.async(resume => {
|
|
36
37
|
ws.addEventListener("message", message => {
|
|
37
38
|
Effect.runFork(Effect.zipRight(log.debug("WS", "receive", message.data), Queue.offer(queue, message.data)));
|
|
@@ -56,7 +57,7 @@ const waitForOpen = (ws, timeout) => Effect.timeoutFail(Effect.suspend(() => {
|
|
|
56
57
|
onTimeout: () => new WebSocketError("open-timeout"),
|
|
57
58
|
duration: timeout
|
|
58
59
|
});
|
|
59
|
-
const send = (ws, take, log) => Effect.
|
|
60
|
+
const send = (ws, take, log) => pipe(take, Effect.tap(data => log.debug("WS", "send", data)), Effect.tap(data => {
|
|
60
61
|
if (data === Reconnect) {
|
|
61
62
|
return Effect.failSync(() => {
|
|
62
63
|
ws.close(1012, "reconnecting");
|
|
@@ -66,15 +67,15 @@ const send = (ws, take, log) => Effect.forever(Effect.tap(data => {
|
|
|
66
67
|
return Effect.sync(() => {
|
|
67
68
|
ws.send(data);
|
|
68
69
|
});
|
|
69
|
-
})
|
|
70
|
+
}), Effect.forever);
|
|
70
71
|
const make = /*#__PURE__*/Effect.gen(function* (_) {
|
|
71
72
|
const log = yield* _(Log);
|
|
72
73
|
const connect = (url, takeOutbound, onConnecting = Effect.unit, openTimeout = Duration.seconds(3)) => Effect.gen(function* (_) {
|
|
73
74
|
const queue = yield* _(Queue.unbounded());
|
|
74
|
-
const run = Effect.
|
|
75
|
+
const run = pipe(onConnecting, Effect.zipRight(socket(url)), Effect.flatMap(ws => Effect.all([offer(ws, queue, log), Effect.zipRight(waitForOpen(ws, openTimeout), send(ws, takeOutbound, log))], {
|
|
75
76
|
concurrency: "unbounded",
|
|
76
77
|
discard: true
|
|
77
|
-
}))
|
|
78
|
+
})), Effect.scoped, Effect.retryWhile(isReconnect));
|
|
78
79
|
return {
|
|
79
80
|
run,
|
|
80
81
|
take: Queue.take(queue)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WS.mjs","names":["Tag","Duration","Effect","Layer","Queue","Ref","Log","WebSocket","Reconnect","Symbol","WebSocketError","reason","error","_tag","constructor","WebSocketCloseError","code","isReconnect","e","socket","urlRef","
|
|
1
|
+
{"version":3,"file":"WS.mjs","names":["Tag","Duration","pipe","Effect","Layer","Queue","Ref","Log","WebSocket","Reconnect","Symbol","WebSocketError","reason","error","_tag","constructor","WebSocketCloseError","code","isReconnect","e","socket","urlRef","get","map","_","acquireRelease","ws","sync","removeAllListeners","close","offer","queue","log","async","resume","addEventListener","message","runFork","zipRight","debug","data","cause","fail","waitForOpen","timeout","timeoutFail","suspend","readyState","OPEN","unit","once","onTimeout","duration","send","take","tap","failSync","forever","make","gen","connect","url","takeOutbound","onConnecting","openTimeout","seconds","unbounded","run","flatMap","all","concurrency","discard","scoped","retryWhile","WS","LiveWS","effect"],"sources":["../../src/DiscordGateway/WS.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/mjs/DiscordGateway.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Tag } from "
|
|
2
|
-
import * as Effect from "
|
|
3
|
-
import * as Hub from "
|
|
4
|
-
import * as Layer from "
|
|
5
|
-
import * as Queue from "
|
|
6
|
-
import * as Stream from "
|
|
1
|
+
import { Tag } from "effect/Context";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Hub from "effect/Hub";
|
|
4
|
+
import * as Layer from "effect/Layer";
|
|
5
|
+
import * as Queue from "effect/Queue";
|
|
6
|
+
import * as Stream from "effect/Stream";
|
|
7
7
|
import { LiveSharder, Sharder } from "dfx/DiscordGateway/Sharder";
|
|
8
8
|
import * as EffectUtils from "dfx/utils/Effect";
|
|
9
9
|
const fromDispatchFactory = source => event => Stream.map(Stream.filter(source, p => p.t === event), p => p.d);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordGateway.mjs","names":["Tag","Effect","Hub","Layer","Queue","Stream","LiveSharder","Sharder","EffectUtils","fromDispatchFactory","source","event","map","filter","p","t","d","handleDispatchFactory","hub","handle","subscribeForEachPar","_","unit","DiscordGateway","make","gen","sharder","unbounded","sendQueue","send","payload","offer","dispatch","fromHub","fromDispatch","handleDispatch","run","of","shards","LiveDiscordGateway","provide","effect"],"sources":["../src/DiscordGateway.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"DiscordGateway.mjs","names":["Tag","Effect","Hub","Layer","Queue","Stream","LiveSharder","Sharder","EffectUtils","fromDispatchFactory","source","event","map","filter","p","t","d","handleDispatchFactory","hub","handle","subscribeForEachPar","_","unit","DiscordGateway","make","gen","sharder","unbounded","sendQueue","send","payload","offer","dispatch","fromHub","fromDispatch","handleDispatch","run","of","shards","LiveDiscordGateway","provide","effect"],"sources":["../src/DiscordGateway.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAEpC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,GAAG,MAAM,YAAY;AACjC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,SAASC,WAAW,EAAEC,OAAO,QAAQ,4BAA4B;AAGjE,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C,MAAMC,mBAAmB,GAErBC,MAAyE,IAGzEC,KAAQ,IAERN,MAAM,CAACO,GAAG,CACRP,MAAM,CAACQ,MAAM,CAACH,MAAM,EAAEI,CAAC,IAAIA,CAAC,CAACC,CAAC,KAAKJ,KAAK,CAAC,EACzCG,CAAC,IAAIA,CAAC,CAACE,CAAS,CACjB;AAEL,MAAMC,qBAAqB,GACxBC,GAA0D,IAC3D,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;;EAE3B,OAAOf,MAAM,CAACqB,IAAI;AACpB,CAAC,CAAC;AAyBN,OAAO,MAAMC,cAAc,gBAAGvB,GAAG,EAAkB;AAEnD,OAAO,MAAMwB,IAAI,gBAAGvB,MAAM,CAACwB,GAAG,CAAC,WAAWJ,CAAC;EACzC,MAAMK,OAAO,GAAG,OAAOL,CAAC,CAACd,OAAO,CAAC;EACjC,MAAMW,GAAG,GAAG,OAAOG,CAAC,CAClBnB,GAAG,CAACyB,SAAS,EAAgD,CAC9D;EAED,MAAMC,SAAS,GAAG,OAAOP,CAAC,CACxBjB,KAAK,CAACuB,SAAS,EAA6C,CAC7D;EACD,MAAME,IAAI,GAAIC,OAAkD,IAC9DF,SAAS,CAACG,KAAK,CAACD,OAAO,CAAC;EAE1B,MAAME,QAAQ,GAAG3B,MAAM,CAAC4B,OAAO,CAACf,GAAG,CAAC;EACpC,MAAMgB,YAAY,GAAGzB,mBAAmB,CAACuB,QAAQ,CAAC;EAClD,MAAMG,cAAc,GAAGlB,qBAAqB,CAACC,GAAG,CAAC;EAEjD,MAAMkB,GAAG,GAAGV,OAAO,CAACU,GAAG,CAAClB,GAAG,EAAEU,SAAS,CAAC;EAEvC,OAAOL,cAAc,CAACc,EAAE,CAAC;IACvBD,GAAG;IACHJ,QAAQ;IACRE,YAAY;IACZC,cAAc;IACdN,IAAI;IACJS,MAAM,EAAEZ,OAAO,CAACY;GACjB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,MAAMC,kBAAkB,gBAAGpC,KAAK,CAACqC,OAAO,CAC7ClC,WAAW,eACXH,KAAK,CAACsC,MAAM,CAAClB,cAAc,EAAEC,IAAI,CAAC,CACnC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as Duration from "
|
|
2
|
-
import * as Option from "
|
|
3
|
-
import * as ReadonlyRecord from "
|
|
1
|
+
import * as Duration from "effect/Duration";
|
|
2
|
+
import * as Option from "effect/Option";
|
|
3
|
+
import * as ReadonlyRecord from "effect/ReadonlyRecord";
|
|
4
4
|
const majorResources = ["channels", "guilds", "webhooks"];
|
|
5
5
|
export const routeFromConfig = (path, method) => {
|
|
6
6
|
// Only keep major ID's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":["Duration","Option","ReadonlyRecord","majorResources","routeFromConfig","path","method","routeURL","split","replace","match","resource","includes","numberHeader","headers","key","get","pipe","map","parseFloat","filter","n","isNaN","retryAfter","orElse","seconds","rateLimitFromHeaders","all","bucket","limit","remaining"],"sources":["../../src/DiscordREST/utils.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,QAAQ,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":["Duration","Option","ReadonlyRecord","majorResources","routeFromConfig","path","method","routeURL","split","replace","match","resource","includes","numberHeader","headers","key","get","pipe","map","parseFloat","filter","n","isNaN","retryAfter","orElse","seconds","rateLimitFromHeaders","all","bucket","limit","remaining"],"sources":["../../src/DiscordREST/utils.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,cAAc,MAAM,uBAAuB;AAGvD,MAAMC,cAAc,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAU;AAElE,OAAO,MAAMC,eAAe,GAAGA,CAACC,IAAY,EAAEC,MAAc,KAAI;EAC9D;EACA,MAAMC,QAAQ,GAAGF,IAAI,CAClBG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACbC,OAAO,CAAC,iCAAiC,EAAE,CAACC,KAAK,EAAEC,QAAQ,KAC1DR,cAAc,CAACS,QAAQ,CAACD,QAAQ,CAAC,GAAGD,KAAK,GAAG,IAAIC,QAAQ,EAAE;EAE5D;EAAA,CACCF,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC;EAE7C,OAAO,GAAGH,MAAM,IAAIC,QAAQ,EAAE;AAChC,CAAC;AAED,OAAO,MAAMM,YAAY,GAAIC,OAA6B,IAAMC,GAAW,IACzEb,cAAc,CAACc,GAAG,CAACF,OAAO,EAAEC,GAAG,CAAC,CAACE,IAAI,CACnChB,MAAM,CAACiB,GAAG,CAACC,UAAU,CAAC,EACtBlB,MAAM,CAACmB,MAAM,CAACC,CAAC,IAAI,CAACC,KAAK,CAACD,CAAC,CAAC,CAAC,CAC9B;AAEH,OAAO,MAAME,UAAU,GAAIT,OAA6B,IACtDD,YAAY,CAACC,OAAO,CAAC,CAAC,yBAAyB,CAAC,CAACG,IAAI,CACnDhB,MAAM,CAACuB,MAAM,CAAC,MAAMX,YAAY,CAACC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,EACzDb,MAAM,CAACiB,GAAG,CAAClB,QAAQ,CAACyB,OAAO,CAAC,CAC7B;AAEH,OAAO,MAAMC,oBAAoB,GAAIZ,OAA6B,IAChEb,MAAM,CAAC0B,GAAG,CAAC;EACTC,MAAM,EAAE1B,cAAc,CAACc,GAAG,CAACF,OAAO,EAAE,oBAAoB,CAAC;EACzDS,UAAU,EAAEA,UAAU,CAACT,OAAO,CAAC;EAC/Be,KAAK,EAAEhB,YAAY,CAACC,OAAO,CAAC,CAAC,mBAAmB,CAAC;EACjDgB,SAAS,EAAEjB,YAAY,CAACC,OAAO,CAAC,CAAC,uBAAuB;CACzD,CAAC"}
|
package/mjs/DiscordREST.mjs
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { Tag } from "
|
|
2
|
-
import * as Duration from "
|
|
3
|
-
import { millis } from "
|
|
4
|
-
import
|
|
5
|
-
import * as
|
|
6
|
-
import * as
|
|
7
|
-
import * as
|
|
8
|
-
import * as
|
|
9
|
-
import * as
|
|
1
|
+
import { Tag } from "effect/Context";
|
|
2
|
+
import * as Duration from "effect/Duration";
|
|
3
|
+
import { millis } from "effect/Duration";
|
|
4
|
+
import { pipe } from "effect/Function";
|
|
5
|
+
import * as HashSet from "effect/HashSet";
|
|
6
|
+
import * as Option from "effect/Option";
|
|
7
|
+
import * as ConfigSecret from "effect/ConfigSecret";
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import * as Layer from "effect/Layer";
|
|
10
|
+
import * as Ref from "effect/Ref";
|
|
10
11
|
import * as Http from "@effect/platform/HttpClient";
|
|
11
12
|
import { DiscordConfig } from "dfx/DiscordConfig";
|
|
12
13
|
import { rateLimitFromHeaders, retryAfter, routeFromConfig } from "dfx/DiscordREST/utils";
|
|
@@ -73,10 +74,10 @@ const make = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
73
74
|
discard: true
|
|
74
75
|
});
|
|
75
76
|
}), Effect.ignore);
|
|
76
|
-
const httpExecutor = Http.client.
|
|
77
|
+
const httpExecutor = pipe(Http.client.filterStatusOk(http), Http.client.mapRequest(req => pipe(Http.request.prependUrl(req, rest.baseUrl), Http.request.setHeaders({
|
|
77
78
|
Authorization: `Bot ${ConfigSecret.value(token)}`,
|
|
78
79
|
"User-Agent": `DiscordBot (https://github.com/tim-smart/dfx, ${LIB_VERSION})`
|
|
79
|
-
})
|
|
80
|
+
}))), Http.client.catchAll(error => error.reason === "StatusCode" ? error.response.json.pipe(Effect.mapError(_ => new DiscordRESTError(_)), Effect.flatMap(body => Effect.fail(new DiscordRESTError(error, body)))) : Effect.fail(new DiscordRESTError(error))));
|
|
80
81
|
const executor = request => requestRateLimit(request.url, request).pipe(Effect.zipLeft(globalRateLimit), Effect.zipRight(httpExecutor(request)), Effect.tap(response => updateBuckets(request, response)), Effect.catchTag("DiscordRESTError", e => {
|
|
81
82
|
if (e.error.reason !== "StatusCode") {
|
|
82
83
|
return Effect.fail(e);
|
package/mjs/DiscordREST.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordREST.mjs","names":["Tag","Duration","millis","HashSet","Option","ConfigSecret","Effect","Layer","Ref","Http","DiscordConfig","rateLimitFromHeaders","retryAfter","routeFromConfig","Log","LiveRateLimiter","RateLimiter","RateLimitStore","Discord","LIB_VERSION","DiscordRESTError","error","body","_tag","constructor","make","gen","_","rest","token","http","client","Client","log","store","maybeWait","globalRateLimit","decode","window","limit","badRoutesRef","empty","tenMinutes","toMillis","minutes","addBadRoute","route","info","
|
|
1
|
+
{"version":3,"file":"DiscordREST.mjs","names":["Tag","Duration","millis","pipe","HashSet","Option","ConfigSecret","Effect","Layer","Ref","Http","DiscordConfig","rateLimitFromHeaders","retryAfter","routeFromConfig","Log","LiveRateLimiter","RateLimiter","RateLimitStore","Discord","LIB_VERSION","DiscordRESTError","error","body","_tag","constructor","make","gen","_","rest","token","http","client","Client","log","store","maybeWait","globalRateLimit","decode","window","limit","badRoutesRef","empty","tenMinutes","toMillis","minutes","addBadRoute","route","info","zipRight","update","add","incrementCounter","isBadRoute","map","get","has","removeBadRoute","remove","invalidRateLimit","tap","invalid","unit","asUnit","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","routes","createRoutes","options","params","hasBody","appendUrlParams","formData","append","JSON","stringify","unsafeJsonBody","DiscordREST","LiveDiscordREST","effect","use","layer"],"sources":["../src/DiscordREST.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { identity } from "
|
|
2
|
-
import * as HashMap from "
|
|
3
|
-
import * as Option from "
|
|
4
|
-
import * as Arr from "
|
|
1
|
+
import { identity, pipe } from "effect/Function";
|
|
2
|
+
import * as HashMap from "effect/HashMap";
|
|
3
|
+
import * as Option from "effect/Option";
|
|
4
|
+
import * as Arr from "effect/ReadonlyArray";
|
|
5
5
|
import * as Discord from "dfx/types";
|
|
6
6
|
/**
|
|
7
7
|
* Option find a sub-command within the interaction options.
|
|
8
8
|
*/
|
|
9
|
-
export const allSubCommands = interaction => Arr.filter(o => o.type === Discord.ApplicationCommandOptionType.SUB_COMMAND)
|
|
9
|
+
export const allSubCommands = interaction => pipe(optionsWithNested(interaction), Arr.filter(o => o.type === Discord.ApplicationCommandOptionType.SUB_COMMAND));
|
|
10
10
|
/**
|
|
11
11
|
* Option find a sub-command within the interaction options.
|
|
12
12
|
*/
|
|
13
|
-
export const findSubCommand = name => interaction => Arr.findFirst(o => o.type === Discord.ApplicationCommandOptionType.SUB_COMMAND && o.name === name)
|
|
13
|
+
export const findSubCommand = name => interaction => pipe(optionsWithNested(interaction), Arr.findFirst(o => o.type === Discord.ApplicationCommandOptionType.SUB_COMMAND && o.name === name));
|
|
14
14
|
/**
|
|
15
15
|
* If the sub-command exists return `true`, else `false`.
|
|
16
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactions.mjs","names":["identity","HashMap","Option","Arr","Discord","allSubCommands","interaction","filter","o","type","ApplicationCommandOptionType","SUB_COMMAND","
|
|
1
|
+
{"version":3,"file":"interactions.mjs","names":["identity","pipe","HashMap","Option","Arr","Discord","allSubCommands","interaction","optionsWithNested","filter","o","type","ApplicationCommandOptionType","SUB_COMMAND","findSubCommand","name","findFirst","isSubCommand","_","isSome","subCommandOptions","flatMapNullable","options","data","optsFromOption","opt","fromNullable","map","opts","flatMap","match","onNone","onSome","getOrElse","transformOptions","reduce","option","set","value","empty","optionsMap","getOption","focusedOption","focused","optionValue","resolved","a","resolveOptionValue","f","Do","bind","id","r","resolveValues","values","compact","extractComponents","c","components","componentsWithValue","undefined","transformComponents","custom_id","componentsMap","getComponent","componentValue","response"],"sources":["../../src/Helpers/interactions.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { pipe } from "effect/Function";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
2
3
|
import * as Flags from "dfx/Helpers/flags";
|
|
3
4
|
import * as Members from "dfx/Helpers/members";
|
|
4
5
|
import * as Discord from "dfx/types";
|
|
@@ -25,7 +26,7 @@ export const forRoles = roles => roles.reduce((permissions, role) => permissions
|
|
|
25
26
|
/**
|
|
26
27
|
* From a list of roles, calculate the permissions bitfield for the member.
|
|
27
28
|
*/
|
|
28
|
-
export const forMember = roles => member =>
|
|
29
|
+
export const forMember = roles => member => pipe(Members.roles(roles)(member), forRoles);
|
|
29
30
|
const overwriteIsForMember = guildId => member => overwrite => {
|
|
30
31
|
if (overwrite.type === 0) {
|
|
31
32
|
return overwrite.id === guildId || member.roles.includes(overwrite.id);
|