dfx 0.21.22 → 0.22.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.
Files changed (113) hide show
  1. package/Cache/memory.d.ts +2 -2
  2. package/Cache/memoryTTL.d.ts +2 -2
  3. package/Cache/memoryTTL.js +11 -11
  4. package/Cache/memoryTTL.js.map +1 -1
  5. package/Cache/prelude.d.ts +5 -5
  6. package/Cache/prelude.js +52 -52
  7. package/Cache/prelude.js.map +1 -1
  8. package/Cache.d.ts +69 -0
  9. package/{Cache/index.js → Cache.js} +15 -15
  10. package/Cache.js.map +1 -0
  11. package/{DiscordConfig/index.d.ts → DiscordConfig.d.ts} +3 -3
  12. package/{DiscordConfig/index.js → DiscordConfig.js} +2 -2
  13. package/DiscordConfig.js.map +1 -0
  14. package/DiscordGateway/{DiscordWS/index.d.ts → DiscordWS.d.ts} +5 -5
  15. package/DiscordGateway/{DiscordWS/index.js → DiscordWS.js} +9 -9
  16. package/DiscordGateway/DiscordWS.js.map +1 -0
  17. package/DiscordGateway/Shard/heartbeats.d.ts +1 -1
  18. package/DiscordGateway/Shard/heartbeats.js +7 -7
  19. package/DiscordGateway/Shard/heartbeats.js.map +1 -1
  20. package/DiscordGateway/Shard/identify.d.ts +1 -1
  21. package/DiscordGateway/Shard/identify.js +3 -3
  22. package/DiscordGateway/Shard/identify.js.map +1 -1
  23. package/DiscordGateway/Shard/invalidSession.d.ts +1 -1
  24. package/DiscordGateway/Shard/invalidSession.js +1 -1
  25. package/DiscordGateway/Shard/invalidSession.js.map +1 -1
  26. package/DiscordGateway/Shard/utils.d.ts +2 -2
  27. package/DiscordGateway/Shard/utils.js +3 -3
  28. package/DiscordGateway/Shard/utils.js.map +1 -1
  29. package/DiscordGateway/Shard.d.ts +9 -0
  30. package/DiscordGateway/Shard.js +44 -0
  31. package/DiscordGateway/Shard.js.map +1 -0
  32. package/DiscordGateway/{ShardStore/index.d.ts → ShardStore.d.ts} +2 -2
  33. package/DiscordGateway/{ShardStore/index.js → ShardStore.js} +1 -1
  34. package/DiscordGateway/ShardStore.js.map +1 -0
  35. package/DiscordGateway/Sharder.d.ts +16 -0
  36. package/DiscordGateway/Sharder.js +42 -0
  37. package/DiscordGateway/Sharder.js.map +1 -0
  38. package/DiscordGateway/{WS/index.d.ts → WS.d.ts} +1 -1
  39. package/DiscordGateway/{WS/index.js → WS.js} +10 -10
  40. package/DiscordGateway/WS.js.map +1 -0
  41. package/DiscordGateway.d.ts +12 -0
  42. package/DiscordGateway.js +20 -0
  43. package/DiscordGateway.js.map +1 -0
  44. package/DiscordREST/types.d.ts +5 -7
  45. package/DiscordREST/utils.d.ts +1 -1
  46. package/DiscordREST/utils.js +3 -4
  47. package/DiscordREST/utils.js.map +1 -1
  48. package/DiscordREST.d.ts +194 -0
  49. package/DiscordREST.js +120 -0
  50. package/DiscordREST.js.map +1 -0
  51. package/Helpers/interactions.js +10 -10
  52. package/Helpers/interactions.js.map +1 -1
  53. package/Helpers/permissions.d.ts +2 -2
  54. package/Helpers/permissions.js +4 -4
  55. package/Helpers/permissions.js.map +1 -1
  56. package/Interactions/context.d.ts +6 -6
  57. package/Interactions/context.js +6 -6
  58. package/Interactions/context.js.map +1 -1
  59. package/Interactions/gateway.d.ts +4 -2
  60. package/Interactions/gateway.js +6 -7
  61. package/Interactions/gateway.js.map +1 -1
  62. package/Interactions/handlers.js +6 -6
  63. package/Interactions/handlers.js.map +1 -1
  64. package/Interactions/index.d.ts +3 -2
  65. package/Interactions/index.js +5 -4
  66. package/Interactions/index.js.map +1 -1
  67. package/Interactions/webhook.d.ts +3 -3
  68. package/Interactions/webhook.js +9 -9
  69. package/Interactions/webhook.js.map +1 -1
  70. package/Log.d.ts +12 -0
  71. package/{Log/index.js → Log.js} +1 -1
  72. package/Log.js.map +1 -0
  73. package/RateLimit/memory.d.ts +1 -1
  74. package/RateLimit/memory.js +3 -3
  75. package/RateLimit/memory.js.map +1 -1
  76. package/{RateLimit/index.d.ts → RateLimit.d.ts} +6 -6
  77. package/{RateLimit/index.js → RateLimit.js} +8 -8
  78. package/RateLimit.js.map +1 -0
  79. package/gateway.d.ts +10 -10
  80. package/gateway.js +11 -12
  81. package/gateway.js.map +1 -1
  82. package/global.d.ts +1 -1
  83. package/index.d.ts +5 -6
  84. package/index.js +5 -6
  85. package/index.js.map +1 -1
  86. package/package.json +8 -6
  87. package/webhooks.d.ts +4 -4
  88. package/webhooks.js +3 -4
  89. package/webhooks.js.map +1 -1
  90. package/Cache/index.d.ts +0 -69
  91. package/Cache/index.js.map +0 -1
  92. package/DiscordConfig/index.js.map +0 -1
  93. package/DiscordGateway/DiscordWS/index.js.map +0 -1
  94. package/DiscordGateway/Shard/index.d.ts +0 -9
  95. package/DiscordGateway/Shard/index.js +0 -44
  96. package/DiscordGateway/Shard/index.js.map +0 -1
  97. package/DiscordGateway/ShardStore/index.js.map +0 -1
  98. package/DiscordGateway/Sharder/index.d.ts +0 -16
  99. package/DiscordGateway/Sharder/index.js +0 -42
  100. package/DiscordGateway/Sharder/index.js.map +0 -1
  101. package/DiscordGateway/WS/index.js.map +0 -1
  102. package/DiscordGateway/index.d.ts +0 -12
  103. package/DiscordGateway/index.js +0 -20
  104. package/DiscordGateway/index.js.map +0 -1
  105. package/DiscordREST/index.d.ts +0 -188
  106. package/DiscordREST/index.js +0 -122
  107. package/DiscordREST/index.js.map +0 -1
  108. package/Http/index.d.ts +0 -37
  109. package/Http/index.js +0 -51
  110. package/Http/index.js.map +0 -1
  111. package/Log/index.d.ts +0 -12
  112. package/Log/index.js.map +0 -1
  113. package/RateLimit/index.js.map +0 -1
@@ -22,9 +22,9 @@ const resume = (token, ready, seq) => SendEvents.resume({
22
22
  session_id: ready.session_id,
23
23
  seq,
24
24
  });
25
- const identifyOrResume = (opts, ready, seq) => tsplus_module_3.flatMap(readyEvent => tsplus_module_3.map(seqNumber => tsplus_module_1.match(() => identify(opts), ({ readyEvent, seqNumber }) => resume(opts.token, readyEvent, seqNumber))(tsplus_module_1.struct({
25
+ const identifyOrResume = (opts, ready, seq) => tsplus_module_3.flatMap(tsplus_module_2.get(ready), readyEvent => tsplus_module_3.map(tsplus_module_2.get(seq), seqNumber => tsplus_module_1.match(tsplus_module_1.struct({
26
26
  readyEvent,
27
27
  seqNumber,
28
- })))(tsplus_module_2.get(seq)))(tsplus_module_2.get(ready));
29
- export const fromRaw = (source, { latestReady, latestSequence, ...opts }) => tsplus_module_5.mapEffect(() => identifyOrResume(opts, latestReady, latestSequence))(opCode(source)(10 /* Discord.GatewayOpcode.HELLO */));
28
+ }), () => identify(opts), ({ readyEvent, seqNumber }) => resume(opts.token, readyEvent, seqNumber))));
29
+ export const fromRaw = (source, { latestReady, latestSequence, ...opts }) => tsplus_module_5.mapEffect(opCode(source)(10 /* Discord.GatewayOpcode.HELLO */), () => identifyOrResume(opts, latestReady, latestSequence));
30
30
  //# sourceMappingURL=identify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identify.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Shard/identify.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAcnC,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAW,EAAE,EAAE,CAChE,UAAU,CAAC,QAAQ,CAAC;IAClB,KAAK;IACL,OAAO;IACP,UAAU,EAAE;QACV,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE;QACjB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK;KACd;IACD,KAAK;IACL,QAAQ;CACT,CAAC,CAAA;AAEJ,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,KAAyB,EAAE,GAAW,EAAE,EAAE,CACvE,UAAU,CAAC,MAAM,CAAC;IAChB,KAAK;IACL,UAAU,EAAE,KAAK,CAAC,UAAU;IAC5B,GAAG;CACJ,CAAC,CAAA;AAEJ,MAAM,gBAAgB,GAAG,CACvB,IAAa,EACb,KAAqC,EACrC,GAAuB,EACvB,EAAE,yBAEM,UAAU,wBACV,SAAS,IAER,sBAIL,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EALnE,uBAAa;IAClB,UAAU;IACV,SAAS;CACV,CAAC,CAGD,sBARmB,GAAG,wBADF,KAAK,EAU1B,CAAA;AAEJ,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,MAA4C,EAC5C,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI,EAA0B,EAChE,EAAE,CACF,0BACE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,CAAC,EAD3D,MAAM,CAAC,MAAM,CAAC,sCAAiD,CAE9D,CAAA"}
1
+ {"version":3,"file":"identify.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Shard/identify.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAcnC,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAW,EAAE,EAAE,CAChE,UAAU,CAAC,QAAQ,CAAC;IAClB,KAAK;IACL,OAAO;IACP,UAAU,EAAE;QACV,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE;QACjB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK;KACd;IACD,KAAK;IACL,QAAQ;CACT,CAAC,CAAA;AAEJ,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,KAAyB,EAAE,GAAW,EAAE,EAAE,CACvE,UAAU,CAAC,MAAM,CAAC;IAChB,KAAK;IACL,UAAU,EAAE,KAAK,CAAC,UAAU;IAC5B,GAAG;CACJ,CAAC,CAAA;AAEJ,MAAM,gBAAgB,GAAG,CACvB,IAAa,EACb,KAAqC,EACrC,GAAuB,EACvB,EAAE,6CAEqB,KAAK,GAApB,UAAU,4CACI,GAAG,GAAjB,SAAS,IAER,sBAAA,uBAAa;IAClB,UAAU;IACV,SAAS;CACV,CAAC,EACA,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CACzE,EACD,CAAA;AAEJ,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,MAA4C,EAC5C,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI,EAA0B,EAChE,EAAE,CACF,0BAAA,MAAM,CAAC,MAAM,CAAC,sCAAiD,EAC7D,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,CAAC,CAC1D,CAAA"}
@@ -1,3 +1,3 @@
1
1
  import { Stream, Discord, Ref, Maybe } from "dfx/_common";
2
2
  import { DiscordWS } from "dfx/gateway";
3
- export declare const fromRaw: <R, E>(raw: import("../../_common.js").Stream<R, E, import("../../types.js").GatewayPayload<any>>, latestReady: Ref<Maybe<Discord.ReadyEvent>>) => import("../../_common.js").Stream<R, E, import("../DiscordWS/index.js").Message>;
3
+ export declare const fromRaw: <R, E>(raw: import("@effect-http/client/_common").Stream<R, E, import("../../types.js").GatewayPayload<any>>, latestReady: Ref<Maybe<Discord.ReadyEvent>>) => import("@effect-http/client/_common").Stream<R, E, import("../DiscordWS.js").Message>;
@@ -5,5 +5,5 @@ import * as tsplus_module_4 from "@effect/io/Ref";
5
5
  import * as tsplus_module_5 from "dfx/_common";
6
6
  import * as tsplus_module_6 from "@effect/stream/Stream";
7
7
  import { opCode } from "./utils.js";
8
- export const fromRaw = (raw, latestReady) => tsplus_module_6.map(() => tsplus_module_1.WS.Reconnect)(tsplus_module_6.tap(p => (p.d ? tsplus_module_2.unit() : tsplus_module_4.set(tsplus_module_3.none())(latestReady)))(opCode(raw)(9 /* Discord.GatewayOpcode.INVALID_SESSION */)));
8
+ export const fromRaw = (raw, latestReady) => tsplus_module_6.map(tsplus_module_6.tap(opCode(raw)(9 /* Discord.GatewayOpcode.INVALID_SESSION */), p => (p.d ? tsplus_module_2.unit() : tsplus_module_4.set(latestReady, tsplus_module_3.none()))), () => tsplus_module_1.WS.Reconnect);
9
9
  //# sourceMappingURL=invalidSession.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invalidSession.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Shard/invalidSession.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnC,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,GAAyC,EACzC,WAA2C,EAC3C,EAAE,CACF,oBAIO,GAAsB,EAAE,CAAC,gBAAA,EAAE,CAAC,SAAS,EAJ5C,oBAGO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAa,CAAC,CAAC,CAAC,oBAAgB,sBAAY,EAA5B,WAAW,CAAkB,CAAC,EAHjE,MAAM,CAAC,GAAG,CAAC,+CAEV,CACiE,CACrB,CAAA"}
1
+ {"version":3,"file":"invalidSession.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Shard/invalidSession.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnC,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,GAAyC,EACzC,WAA2C,EAC3C,EAAE,CACF,oBAAA,oBAAA,MAAM,CAAC,GAAG,CAAC,+CAEV,EACM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAa,CAAC,CAAC,CAAC,oBAAA,WAAW,EAAK,sBAAY,CAAC,CAAC,CAAC,EAC3D,GAAsB,EAAE,CAAC,gBAAA,EAAE,CAAC,SAAS,CAAC,CAAA"}
@@ -1,3 +1,3 @@
1
1
  import { Stream, Discord, Maybe, Ref } from "dfx/_common";
2
- export declare const opCode: <R, E>(source: import("../../_common.js").Stream<R, E, import("../../types.js").GatewayPayload<any>>) => <T = any>(code: Discord.GatewayOpcode) => import("../../_common.js").Stream<R, E, import("../../types.js").GatewayPayload<T>>;
3
- export declare const latest: <T>(f: (p: Discord.GatewayPayload) => import("../../_common.js").Maybe<T>) => import("../../_common.js").Effect<never, never, readonly [import("../../_common.js").Ref<import("../../_common.js").Maybe<T>>, (p: import("../../types.js").GatewayPayload<any>) => import("../../_common.js").Effect<never, never, void>]>;
2
+ export declare const opCode: <R, E>(source: import("@effect-http/client/_common").Stream<R, E, import("../../types.js").GatewayPayload<any>>) => <T = any>(code: Discord.GatewayOpcode) => import("@effect-http/client/_common").Stream<R, E, import("../../types.js").GatewayPayload<any>>;
3
+ export declare const latest: <T>(f: (p: Discord.GatewayPayload) => import("../../_common.js").Maybe<T>) => import("@effect-http/client/_common").Effect<never, never, readonly [import("../../_common.js").Ref<import("../../_common.js").Maybe<T>>, (p: import("../../types.js").GatewayPayload<any>) => import("@effect-http/client/_common").Effect<never, never, void>]>;
@@ -3,7 +3,7 @@ import * as tsplus_module_2 from "@effect/io/Effect";
3
3
  import * as tsplus_module_3 from "@fp-ts/core/Option";
4
4
  import * as tsplus_module_4 from "@effect/io/Ref";
5
5
  import * as tsplus_module_5 from "@fp-ts/core/Function";
6
- export const opCode = (source) => (code) => tsplus_module_1.filter((p) => p.op === code)(source);
7
- const maybeUpdateRef = (f, ref) => tsplus_module_5.flow(f, o => tsplus_module_3.match(tsplus_module_2.unit, a => tsplus_module_4.set(tsplus_module_3.some(a))(ref))(o));
8
- export const latest = (f) => tsplus_module_2.map(ref => [ref, maybeUpdateRef(f, ref)])(tsplus_module_4.make(tsplus_module_3.none()));
6
+ export const opCode = (source) => (code) => tsplus_module_1.filter(source, (p) => p.op === code);
7
+ const maybeUpdateRef = (f, ref) => tsplus_module_5.flow(f, o => tsplus_module_3.match(o, tsplus_module_2.unit, a => tsplus_module_4.set(ref, tsplus_module_3.some(a))));
8
+ export const latest = (f) => tsplus_module_2.map(tsplus_module_4.make(tsplus_module_3.none()), ref => [ref, maybeUpdateRef(f, ref)]);
9
9
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Shard/utils.ts"],"names":[],"mappings":";;;;;AAAA,MAAM,CAAC,MAAM,MAAM,GACjB,CAAO,MAA4C,EAAE,EAAE,CACvD,CAAU,IAA2B,EAAE,EAAE,CACvC,uBAAc,CAAC,CAAC,EAAkC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAlE,MAAM,CAA6D,CAAA;AAEvE,MAAM,cAAc,GAAG,CACrB,CAA0C,EAC1C,GAAkB,EAClB,EAAE,CAAC,gBAAA,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,4CAAqB,CAAC,CAAC,EAAE,CAAC,oBAAQ,qBAAW,CAAC,CAAC,EAArB,GAAG,CAAmB,EAAhD,CAAC,CAAgD,CAAC,CAAA;AAEpE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,CAA0C,EAAE,EAAE,CACtE,oBACE,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAU,EAD/C,qBAAmB,sBAAY,CAAC,CAE/B,CAAA"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Shard/utils.ts"],"names":[],"mappings":";;;;;AAAA,MAAM,CAAC,MAAM,MAAM,GACjB,CAAO,MAA4C,EAAE,EAAE,CACvD,CAAU,IAA2B,EAAE,EAAE,CACvC,uBAAA,MAAM,EAAQ,CAAC,CAAC,EAAkC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAA;AAEvE,MAAM,cAAc,GAAG,CACrB,CAA0C,EAC1C,GAAkB,EAClB,EAAE,CAAC,gBAAA,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,sBAAA,CAAC,wBAAoB,CAAC,CAAC,EAAE,CAAC,oBAAA,GAAG,EAAK,qBAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAEpE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,CAA0C,EAAE,EAAE,CACtE,oBAAA,qBAAmB,sBAAY,CAAC,EAC9B,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAU,CAC9C,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { DiscordWS } from "dfx/gateway";
2
+ import { Discord } from "dfx/_common";
3
+ export declare const make: (shard: [id: number, count: number]) => import("@effect-http/client/_common").Effect<import("../_common.js").Scope | import("../DiscordConfig.js").DiscordConfig | import("../Log.js").Log | import("../RateLimit.js").RateLimiter | import("./DiscordWS.js").DiscordWSCodec, never, {
4
+ run: import("@effect-http/client/_common").Effect<never, never, void>;
5
+ raw: import("@effect-http/client/_common").Stream<never, never, import("../types.js").GatewayPayload<any>>;
6
+ dispatch: import("@effect-http/client/_common").Stream<never, never, import("../types.js").GatewayPayload<any>>;
7
+ send: (p: Discord.GatewayPayload) => import("@effect-http/client/_common").Effect<never, never, boolean>;
8
+ reconnect: import("@effect-http/client/_common").Effect<never, never, boolean>;
9
+ }>;
@@ -0,0 +1,44 @@
1
+ import * as tsplus_module_1 from "@effect/io/Effect";
2
+ import * as tsplus_module_2 from "dfx/gateway";
3
+ import * as tsplus_module_3 from "@effect/stream/Stream";
4
+ import * as tsplus_module_4 from "@effect/io/Config/Secret";
5
+ import * as tsplus_module_5 from "dfx/_common";
6
+ import * as tsplus_module_6 from "@fp-ts/core/Option";
7
+ import * as tsplus_module_7 from "@effect/data/Duration";
8
+ import * as tsplus_module_8 from "@effect/io/Queue";
9
+ import * as tsplus_module_9 from "dfx";
10
+ import * as Heartbeats from "./Shard/heartbeats.js";
11
+ import * as Identify from "./Shard/identify.js";
12
+ import * as InvalidSession from "./Shard/invalidSession.js";
13
+ import * as Utils from "./Shard/utils.js";
14
+ export const make = (shard) => tsplus_module_1.flatMap(tsplus_module_1.service(tsplus_module_9.DiscordConfig.DiscordConfig), ({ token, gateway }) => tsplus_module_1.flatMap(tsplus_module_1.service(tsplus_module_9.RateLimiter), limiter => tsplus_module_1.flatMap(tsplus_module_8.unbounded(), outboundQueue => {
15
+ const outbound = tsplus_module_1.tap(outboundQueue
16
+ .take(), () => limiter.maybeWait("dfx.shard.send", tsplus_module_7.minutes(1), 120));
17
+ const send = (p) => outboundQueue.offer(p);
18
+ return tsplus_module_1.flatMap(tsplus_module_2.DiscordWS.make({ outbound }), socket => tsplus_module_1.flatMap(tsplus_module_3.broadcastDynamic(socket.source, 1), raw => tsplus_module_1.flatMap(Utils.latest(p => tsplus_module_6.map(tsplus_module_6.filter((p) => p.op === 0 /* Discord.GatewayOpcode.DISPATCH */ && p.t === "READY")(tsplus_module_6.some(p)), p => p.d)), ([latestReady, updateLatestReady]) => tsplus_module_1.map(Utils.latest(p => tsplus_module_6.fromNullable(p.s)), ([latestSequence, updateLatestSequence]) => {
19
+ const maybeUpdateUrl = (p) => tsplus_module_6.match(tsplus_module_6.map(tsplus_module_6.filter((p) => p.op === 0 /* Discord.GatewayOpcode.DISPATCH */ && p.t === "READY")(tsplus_module_6.some(p)), p => p.d), () => tsplus_module_1.unit(), a => socket.setUrl(a.resume_gateway_url));
20
+ const updateRefs = tsplus_module_3.runDrain(tsplus_module_3.tap(tsplus_module_3.tap(tsplus_module_3.tap(raw, updateLatestReady), updateLatestSequence), maybeUpdateUrl));
21
+ // heartbeats
22
+ const heartbeatEffects = tsplus_module_3.runForEach(Heartbeats.fromRaw(raw, latestSequence), send);
23
+ const dispatch = tsplus_module_3.filter(raw, (p) => p.op === 0 /* Discord.GatewayOpcode.DISPATCH */);
24
+ // identify
25
+ const identifyEffects = tsplus_module_3.runForEach(Identify.fromRaw(raw, {
26
+ token: tsplus_module_4.value(token),
27
+ shard,
28
+ intents: gateway.intents,
29
+ presence: gateway.presence,
30
+ latestSequence,
31
+ latestReady,
32
+ }), send);
33
+ // invalid session
34
+ const invalidEffects = tsplus_module_3.runForEach(InvalidSession.fromRaw(raw, latestReady), send);
35
+ return {
36
+ run: tsplus_module_1.asUnit(tsplus_module_1.zipPar(tsplus_module_1.zipPar(tsplus_module_1.zipPar(updateRefs, heartbeatEffects), identifyEffects), invalidEffects)),
37
+ raw,
38
+ dispatch,
39
+ send: (p) => send(p),
40
+ reconnect: send(tsplus_module_2.WS.Reconnect),
41
+ };
42
+ }))));
43
+ })));
44
+ //# sourceMappingURL=Shard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shard.js","sourceRoot":"","sources":["../../src/DiscordGateway/Shard.ts"],"names":[],"mappings":"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"}
@@ -8,5 +8,5 @@ export interface ShardStore {
8
8
  allClaimed: (totalCount: number) => Effect<never, never, boolean>;
9
9
  heartbeat?: (shardId: number) => Effect<never, never, void>;
10
10
  }
11
- export declare const ShardStore: import("../../_common.js").Tag<ShardStore>;
12
- export declare const LiveMemoryShardStore: import("../../_common.js").Layer<never, never, ShardStore>;
11
+ export declare const ShardStore: import("@effect-http/client/_common").Tag<ShardStore>;
12
+ export declare const LiveMemoryShardStore: import("../_common.js").Layer<never, never, ShardStore>;
@@ -19,4 +19,4 @@ const memoryStore = () => {
19
19
  };
20
20
  };
21
21
  export const LiveMemoryShardStore = tsplus_module_4.sync(ShardStore, memoryStore);
22
- //# sourceMappingURL=index.js.map
22
+ //# sourceMappingURL=ShardStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShardStore.js","sourceRoot":"","sources":["../../src/DiscordGateway/ShardStore.ts"],"names":[],"mappings":";;;;AAUA,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAA,GAAG,EAAc,CAAA;AAE3C,wDAAwD;AACxD,MAAM,WAAW,GAAG,GAAe,EAAE;IACnC,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAC1B,qBAAY,GAAG,EAAE;YACf,IAAI,SAAS,IAAI,UAAU,EAAE;gBAC3B,OAAO,sBAAY,CAAA;aACpB;YAED,MAAM,EAAE,GAAG,SAAS,CAAA;YACpB,SAAS,EAAE,CAAA;YACX,OAAO,qBAAW,EAAE,CAAC,CAAA;QACvB,CAAC,CAAC;QAEJ,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,qBAAY,GAAG,EAAE,CAAC,SAAS,IAAI,UAAU,CAAC;KACrE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAW,UAAU,EAAE,WAAW,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { Effect, Discord } from "dfx/_common";
2
+ import { ShardStore } from "./ShardStore.js";
3
+ declare const make: import("@effect-http/client/_common").Effect<import("../_common.js").Scope | import("../DiscordREST.js").DiscordREST | import("../DiscordConfig.js").DiscordConfig | ShardStore | import("../Log.js").Log | import("../RateLimit.js").RateLimiter | import("./DiscordWS.js").DiscordWSCodec, never, {
4
+ shards: import("@effect-http/client/_common").Stream<never, never, {
5
+ run: import("@effect-http/client/_common").Effect<never, never, void>;
6
+ raw: import("@effect-http/client/_common").Stream<never, never, import("../types.js").GatewayPayload<any>>;
7
+ dispatch: import("@effect-http/client/_common").Stream<never, never, import("../types.js").GatewayPayload<any>>;
8
+ send: (p: import("../types.js").GatewayPayload<any>) => import("@effect-http/client/_common").Effect<never, never, boolean>;
9
+ reconnect: import("@effect-http/client/_common").Effect<never, never, boolean>;
10
+ }>;
11
+ }>;
12
+ export interface Sharder extends Effect.Success<typeof make> {
13
+ }
14
+ export declare const Sharder: import("@effect-http/client/_common").Tag<Sharder>;
15
+ export declare const LiveSharder: import("../_common.js").Layer<import("../DiscordREST.js").DiscordREST | import("../DiscordConfig.js").DiscordConfig | ShardStore | import("../Log.js").Log | import("../RateLimit.js").RateLimiter | import("./DiscordWS.js").DiscordWSCodec, never, Sharder>;
16
+ export {};
@@ -0,0 +1,42 @@
1
+ import * as tsplus_module_1 from "@effect/stream/Stream";
2
+ import * as tsplus_module_2 from "dfx/gateway";
3
+ import * as tsplus_module_3 from "@effect/io/Effect";
4
+ import * as tsplus_module_4 from "@effect/stream/GroupBy";
5
+ import * as tsplus_module_5 from "@effect/data/Duration";
6
+ import * as tsplus_module_6 from "@fp-ts/core/Option";
7
+ import * as tsplus_module_7 from "dfx";
8
+ import * as tsplus_module_8 from "dfx/_common";
9
+ import * as tsplus_module_9 from "@effect/io/Layer";
10
+ import { millis } from "@effect/data/Duration";
11
+ import { ShardStore } from "./ShardStore.js";
12
+ const make = tsplus_module_3.flatMap(tsplus_module_3.service(ShardStore), store => tsplus_module_3.flatMap(tsplus_module_3.service(tsplus_module_7.DiscordREST), rest => tsplus_module_3.flatMap(tsplus_module_3.service(tsplus_module_7.DiscordConfig.DiscordConfig), ({ gateway: config }) => tsplus_module_3.flatMap(tsplus_module_3.service(tsplus_module_7.RateLimiter), limiter => {
13
+ const configs = (totalCount) => {
14
+ const claimId = (sharderCount) => tsplus_module_3.flatMap(store
15
+ .claimId({
16
+ totalCount,
17
+ sharderCount,
18
+ }), a => tsplus_module_6.match(a, () => tsplus_module_3.delay(claimId(sharderCount), tsplus_module_5.minutes(3)), id => tsplus_module_3.succeed(id)));
19
+ return tsplus_module_1.map(tsplus_module_1.unfoldEffect(0, sharderCount => tsplus_module_3.map(claimId(sharderCount), id => tsplus_module_6.some([id, sharderCount + 1]))), id => ({
20
+ id,
21
+ totalCount,
22
+ }));
23
+ };
24
+ return tsplus_module_3.flatMap(tsplus_module_3.catchAll(tsplus_module_3.flatMap(rest
25
+ .getGatewayBot(), r => r.json), () => tsplus_module_3.succeed({
26
+ url: "wss://gateway.discord.gg/",
27
+ shards: 1,
28
+ session_start_limit: {
29
+ total: 0,
30
+ remaining: 0,
31
+ reset_after: 0,
32
+ max_concurrency: 1,
33
+ },
34
+ })), gateway => tsplus_module_3.map(tsplus_module_1.broadcastDynamic(tsplus_module_1.flatMap(tsplus_module_4.evaluate(tsplus_module_1.groupBy(tsplus_module_1.map(configs(config.shardCount ?? gateway.shards), config => ({
35
+ ...config,
36
+ url: gateway.url,
37
+ concurrency: gateway.session_start_limit.max_concurrency,
38
+ })), c => tsplus_module_3.succeed([c.id % c.concurrency, c])), (key, shardConfig) => tsplus_module_1.mapEffect(tsplus_module_1.tap(shardConfig, () => limiter.maybeWait(`dfx.sharder.${key}`, millis(config.identifyRateLimit[0]), config.identifyRateLimit[1])), c => tsplus_module_2.Shard.make([c.id, c.totalCount]))), shard => tsplus_module_1.merge(tsplus_module_1.succeed(shard), tsplus_module_1.drain(tsplus_module_1.fromEffect(shard.run)))), 1), shards => ({ shards })));
39
+ }))));
40
+ export const Sharder = tsplus_module_8.Tag();
41
+ export const LiveSharder = tsplus_module_9.scoped(Sharder, make);
42
+ //# sourceMappingURL=Sharder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sharder.js","sourceRoot":"","sources":["../../src/DiscordGateway/Sharder.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,4 @@ export declare class WebSocketCloseError {
17
17
  readonly _tag = "WebSocketCloseError";
18
18
  constructor(code: number, reason: string);
19
19
  }
20
- export declare const make: (url: Ref<string>, takeOutbound: Effect<never, never, Message>) => import("../../_common.js").Stream<import("../../Log/index.js").Log, WebSocketError | WebSocketCloseError, WebSocket.Data>;
20
+ export declare const make: (url: Ref<string>, takeOutbound: Effect<never, never, Message>) => import("@effect-http/client/_common").Stream<import("../Log.js").Log, WebSocketError | WebSocketCloseError, WebSocket.Data>;
@@ -22,14 +22,14 @@ export class WebSocketCloseError {
22
22
  this.reason = reason;
23
23
  }
24
24
  }
25
- const socket = (urlRef) => tsplus_module_1.acquireRelease(tsplus_module_1.flatMap(url => {
25
+ const socket = (urlRef) => tsplus_module_1.acquireRelease(tsplus_module_1.flatMap(tsplus_module_2.get(urlRef), url => {
26
26
  const ws = new WebSocket(url);
27
- return tsplus_module_1.map(() => ws)(tsplus_module_1.async(resume => {
27
+ return tsplus_module_1.map(tsplus_module_1.async(resume => {
28
28
  ws.addEventListener("open", () => resume(tsplus_module_1.unit()), {
29
29
  once: true,
30
30
  });
31
- }));
32
- })(tsplus_module_2.get(urlRef)), ws => tsplus_module_1.sync(() => {
31
+ }), () => ws);
32
+ }), ws => tsplus_module_1.sync(() => {
33
33
  ;
34
34
  ws.removeAllListeners?.();
35
35
  ws.close();
@@ -45,7 +45,7 @@ const recv = (ws) => tsplus_module_3.asyncEffect(emit => tsplus_module_1.sync(()
45
45
  emit.fail(new WebSocketCloseError(e.code, e.reason));
46
46
  });
47
47
  }));
48
- const send = (ws, take, log) => tsplus_module_1.forever(tsplus_module_1.tap((data) => {
48
+ const send = (ws, take, log) => tsplus_module_1.forever(tsplus_module_1.tap(tsplus_module_1.tap(take, data => log.debug("WS", "send", data)), (data) => {
49
49
  if (data === Reconnect) {
50
50
  return tsplus_module_1.failSync(() => {
51
51
  ws.close(1012, "reconnecting");
@@ -55,9 +55,9 @@ const send = (ws, take, log) => tsplus_module_1.forever(tsplus_module_1.tap((dat
55
55
  return tsplus_module_1.sync(() => {
56
56
  ws.send(data);
57
57
  });
58
- })(tsplus_module_1.tap(data => log.debug("WS", "send", data))(take)));
59
- export const make = (url, takeOutbound) => tsplus_module_6.pipe(tsplus_module_1.flatMap(log => tsplus_module_1.map(ws => {
58
+ }));
59
+ export const make = (url, takeOutbound) => tsplus_module_6.pipe(tsplus_module_1.flatMap(tsplus_module_1.service(tsplus_module_5.Log.Log), log => tsplus_module_1.map(socket(url), ws => {
60
60
  const sendEffect = send(ws, takeOutbound, log);
61
- return tsplus_module_3.retry(tsplus_module_4.recurWhile(e => e._tag === "WebSocketCloseError" && e.code === 1012))(tsplus_module_3.merge(tsplus_module_3.fromEffect(sendEffect))(recv(ws)));
62
- })(socket(url)))(tsplus_module_1.service(tsplus_module_5.Log.Log)), tsplus_module_3.unwrapScoped);
63
- //# sourceMappingURL=index.js.map
61
+ return tsplus_module_3.retry(tsplus_module_3.merge(recv(ws), tsplus_module_3.fromEffect(sendEffect)), tsplus_module_4.recurWhile(e => e._tag === "WebSocketCloseError" && e.code === 1012));
62
+ })), tsplus_module_3.unwrapScoped);
63
+ //# sourceMappingURL=WS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WS.js","sourceRoot":"","sources":["../../src/DiscordGateway/WS.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Stream, Discord, Effect } from "dfx/_common";
2
+ import { Sharder } from "./DiscordGateway/Sharder.js";
3
+ export declare const make: import("@effect-http/client/_common").Effect<import("./_common.js").Scope | Sharder, never, {
4
+ raw: import("@effect-http/client/_common").Stream<never, never, import("./types.js").GatewayPayload<any>>;
5
+ dispatch: import("@effect-http/client/_common").Stream<never, never, import("./types.js").GatewayPayload<any>>;
6
+ fromDispatch: <K extends keyof import("./types.js").ReceiveEvents>(event: K) => import("@effect-http/client/_common").Stream<never, never, import("./types.js").ReceiveEvents[K]>;
7
+ handleDispatch: <K_1 extends keyof import("./types.js").ReceiveEvents, R1, E1, A>(event: K_1, handle: (event: import("./types.js").ReceiveEvents[K_1]) => import("@effect-http/client/_common").Effect<R1, E1, A>) => import("@effect-http/client/_common").Effect<R1, E1, void>;
8
+ }>;
9
+ export interface DiscordGateway extends Effect.Success<typeof make> {
10
+ }
11
+ export declare const DiscordGateway: import("@effect-http/client/_common").Tag<DiscordGateway>;
12
+ export declare const LiveDiscordGateway: import("./_common.js").Layer<Sharder, never, DiscordGateway>;
@@ -0,0 +1,20 @@
1
+ import * as tsplus_module_1 from "@effect/stream/Stream";
2
+ import * as tsplus_module_2 from "@effect/io/Effect";
3
+ import * as tsplus_module_3 from "dfx/_common";
4
+ import * as tsplus_module_4 from "@effect/io/Layer";
5
+ import { Sharder } from "./DiscordGateway/Sharder.js";
6
+ const fromDispatchFactory = (source) => (event) => tsplus_module_1.map(tsplus_module_1.filter(source, p => p.t === event), p => p.d);
7
+ const handleDispatchFactory = (source) => (event, handle) => tsplus_module_1.runDrain(tsplus_module_1.flatMapPar(tsplus_module_1.filter(source, p => p.t === event), a => tsplus_module_1.fromEffect(handle(a.d)), Number.POSITIVE_INFINITY));
8
+ export const make = tsplus_module_2.flatMap(tsplus_module_2.service(Sharder), sharder => tsplus_module_2.flatMap(tsplus_module_1.broadcastDynamic(tsplus_module_1.flatMapPar(sharder.shards, s => s.raw, Number.POSITIVE_INFINITY), 8), raw => tsplus_module_2.map(tsplus_module_1.broadcastDynamic(tsplus_module_1.flatMapPar(sharder.shards, s => s.dispatch, Number.POSITIVE_INFINITY), 8), dispatch => {
9
+ const fromDispatch = fromDispatchFactory(dispatch);
10
+ const handleDispatch = handleDispatchFactory(dispatch);
11
+ return {
12
+ raw,
13
+ dispatch,
14
+ fromDispatch,
15
+ handleDispatch,
16
+ };
17
+ })));
18
+ export const DiscordGateway = tsplus_module_3.Tag();
19
+ export const LiveDiscordGateway = tsplus_module_4.scoped(DiscordGateway, make);
20
+ //# sourceMappingURL=DiscordGateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscordGateway.js","sourceRoot":"","sources":["../src/DiscordGateway.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAErD,MAAM,mBAAmB,GACvB,CAAO,MAAkE,EAAE,EAAE,CAC7E,CACE,KAAQ,EACgC,EAAE,CAC1C,oBAAA,uBAAA,MAAM,EAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAS,CAAC,CAAA;AAE3D,MAAM,qBAAqB,GACzB,CAAO,MAAkE,EAAE,EAAE,CAC7E,CACE,KAAQ,EACR,MAA8D,EAChC,EAAE,0BAChC,2BAAA,uBAAA,MAAM,EACI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAEzB,CAAC,CAAC,EAAE,CAAC,2BAAkB,MAAM,CAAC,CAAC,CAAC,CAAQ,CAAC,CAAC,EAC1C,MAAM,CAAC,iBAAiB,CACzB,CAAS,CAAA;AAEhB,MAAM,CAAC,MAAM,IAAI,2BACG,wBAAe,OAAO,CAAC,EAAnC,OAAO,4BAEX,iCAAA,2BAAA,OAAO,CAAC,MAAM,EACA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAC/B,CAAC,CAAC,EAHlB,GAAG,wBAMP,iCAAA,2BAAA,OAAO,CAAC,MAAM,EACA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,iBAAiB,CAAC,EACpC,CAAC,CAAC,EAHlB,QAAQ;IAKd,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAClD,MAAM,cAAc,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;IAEtD,OAAO;QACL,GAAG;QACH,QAAQ;QACR,YAAY;QACZ,cAAc;KACf,CAAA;IACD,CAAA;AAGF,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAA,GAAG,EAAkB,CAAA;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAa,cAAc,EAAE,IAAI,CAAC,CAAA"}
@@ -1,9 +1,7 @@
1
- import { BlobError, FetchError, JsonParseError, StatusCodeError } from "dfx";
1
+ import * as Http from "@effect-http/client";
2
+ import { DiscordRESTError } from "dfx/DiscordREST";
2
3
  import { Effect } from "dfx/_common";
3
- export interface ResponseWithData<A> {
4
- response: Response;
5
- json: Effect<never, JsonParseError, A>;
6
- text: Effect<never, never, string>;
7
- blob: Effect<never, BlobError, Blob>;
4
+ export interface ResponseWithData<A> extends Http.response.Response {
5
+ readonly json: Effect<never, Http.HttpClientError, A>;
8
6
  }
9
- export type RestResponse<T> = Effect<never, FetchError | StatusCodeError | JsonParseError, ResponseWithData<T>>;
7
+ export type RestResponse<T> = Effect<never, DiscordRESTError, ResponseWithData<T>>;
@@ -1,4 +1,4 @@
1
- export declare const routeFromConfig: (path: string, init: RequestInit) => string;
1
+ export declare const routeFromConfig: (path: string, method: string) => string;
2
2
  export declare const numberHeader: (headers: Headers) => (key: string) => import("../_common.js").Maybe<number>;
3
3
  export declare const retryAfter: (headers: Headers) => import("../_common.js").Maybe<import("../_common.js").Duration>;
4
4
  export declare const rateLimitFromHeaders: (headers: Headers) => import("../_common.js").Maybe<{
@@ -1,8 +1,7 @@
1
1
  import * as tsplus_module_1 from "@fp-ts/core/Option";
2
2
  import * as tsplus_module_2 from "@effect/data/Duration";
3
3
  const majorResources = ["channels", "guilds", "webhooks"];
4
- export const routeFromConfig = (path, init) => {
5
- const method = (init?.method ?? "get").toLowerCase();
4
+ export const routeFromConfig = (path, method) => {
6
5
  // Only keep major ID's
7
6
  const routeURL = path
8
7
  .split("?")[0]
@@ -11,8 +10,8 @@ export const routeFromConfig = (path, init) => {
11
10
  .replace(/\/reactions\/(.*)/, "/reactions");
12
11
  return `${method}-${routeURL}`;
13
12
  };
14
- export const numberHeader = (headers) => (key) => tsplus_module_1.filter(tsplus_module_1.map(parseFloat)(tsplus_module_1.fromNullable(headers.get(key))), n => !isNaN(n));
15
- export const retryAfter = (headers) => tsplus_module_1.map(tsplus_module_2.seconds)(tsplus_module_1.orElse(() => numberHeader(headers)("retry-after"))(numberHeader(headers)("x-ratelimit-reset-after")));
13
+ export const numberHeader = (headers) => (key) => tsplus_module_1.filter(n => !isNaN(n))(tsplus_module_1.map(tsplus_module_1.fromNullable(headers.get(key)), parseFloat));
14
+ export const retryAfter = (headers) => tsplus_module_1.map(tsplus_module_1.orElse(numberHeader(headers)("x-ratelimit-reset-after"), () => numberHeader(headers)("retry-after")), tsplus_module_2.seconds);
16
15
  export const rateLimitFromHeaders = (headers) => tsplus_module_1.struct({
17
16
  bucket: tsplus_module_1.fromNullable(headers.get("x-ratelimit-bucket")),
18
17
  retryAfter: retryAfter(headers),
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/DiscordREST/utils.ts"],"names":[],"mappings":";;AAAA,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAA;AAElE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,IAAiB,EAAE,EAAE;IACjE,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IAEpD,uBAAuB;IACvB,MAAM,QAAQ,GAAG,IAAI;SAClB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACb,OAAO,CAAC,iCAAiC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAC9D,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAC3D;QACD,kBAAkB;SACjB,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;IAE7C,OAAO,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAChE,uBAAA,oBACO,UAAU,EADjB,6BAAmB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAClB,EACR,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAE3B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE,CAC7C,6CAAA,uBACU,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EADpD,YAAY,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,CACK,CAC7B,CAAA;AAE1B,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,EAAE,CACvD,uBAAa;IACX,MAAM,EAAE,6BAAmB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7D,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC;IAC/B,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC;IACjD,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAAC;CAC1D,CAAC,CAAA"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/DiscordREST/utils.ts"],"names":[],"mappings":";;AAAA,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAA;AAElE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;IAC9D,uBAAuB;IACvB,MAAM,QAAQ,GAAG,IAAI;SAClB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACb,OAAO,CAAC,iCAAiC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAC9D,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAC3D;QACD,kBAAkB;SACjB,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;IAE7C,OAAO,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAChE,uBAEU,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAFxB,oBAAA,6BAAmB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAC7B,UAAU,CAAC,CACO,CAAA;AAE3B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE,CAC7C,oBAAA,uBAAA,YAAY,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,EACtC,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,0BAC7B,CAAA;AAE1B,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,EAAE,CACvD,uBAAa;IACX,MAAM,EAAE,6BAAmB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7D,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC;IAC/B,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC;IACjD,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAAC;CAC1D,CAAC,CAAA"}