@buape/carbon 0.14.0 → 0.16.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.
Files changed (182) hide show
  1. package/LICENSE +1 -1
  2. package/dist/package.json +11 -9
  3. package/dist/src/abstracts/BaseChannel.d.ts +24 -2
  4. package/dist/src/abstracts/BaseChannel.d.ts.map +1 -1
  5. package/dist/src/abstracts/BaseChannel.js +45 -4
  6. package/dist/src/abstracts/BaseChannel.js.map +1 -1
  7. package/dist/src/abstracts/BaseCommand.d.ts +15 -3
  8. package/dist/src/abstracts/BaseCommand.d.ts.map +1 -1
  9. package/dist/src/abstracts/BaseCommand.js +32 -3
  10. package/dist/src/abstracts/BaseCommand.js.map +1 -1
  11. package/dist/src/abstracts/BaseInteraction.d.ts +1 -1
  12. package/dist/src/abstracts/BaseInteraction.d.ts.map +1 -1
  13. package/dist/src/abstracts/BaseInteraction.js +3 -3
  14. package/dist/src/abstracts/BaseInteraction.js.map +1 -1
  15. package/dist/src/abstracts/BaseListener.d.ts +7 -4
  16. package/dist/src/abstracts/BaseListener.d.ts.map +1 -1
  17. package/dist/src/abstracts/BaseListener.js.map +1 -1
  18. package/dist/src/abstracts/Plugin.d.ts +6 -0
  19. package/dist/src/abstracts/Plugin.d.ts.map +1 -1
  20. package/dist/src/abstracts/Plugin.js.map +1 -1
  21. package/dist/src/adapters/bun/index.d.ts +1 -1
  22. package/dist/src/adapters/bun/index.d.ts.map +1 -1
  23. package/dist/src/adapters/bun/index.js +6 -0
  24. package/dist/src/adapters/bun/index.js.map +1 -1
  25. package/dist/src/adapters/fetch/index.d.ts.map +1 -1
  26. package/dist/src/adapters/fetch/index.js +6 -0
  27. package/dist/src/adapters/fetch/index.js.map +1 -1
  28. package/dist/src/classes/Client.d.ts +97 -6
  29. package/dist/src/classes/Client.d.ts.map +1 -1
  30. package/dist/src/classes/Client.js +187 -12
  31. package/dist/src/classes/Client.js.map +1 -1
  32. package/dist/src/classes/EntryPointCommand.d.ts +11 -0
  33. package/dist/src/classes/EntryPointCommand.d.ts.map +1 -0
  34. package/dist/src/classes/EntryPointCommand.js +13 -0
  35. package/dist/src/classes/EntryPointCommand.js.map +1 -0
  36. package/dist/src/classes/Listener.d.ts +83 -81
  37. package/dist/src/classes/Listener.d.ts.map +1 -1
  38. package/dist/src/classes/Listener.js +15 -4
  39. package/dist/src/classes/Listener.js.map +1 -1
  40. package/dist/src/classes/RequestClient.d.ts +92 -17
  41. package/dist/src/classes/RequestClient.d.ts.map +1 -1
  42. package/dist/src/classes/RequestClient.js +207 -136
  43. package/dist/src/classes/RequestClient.js.map +1 -1
  44. package/dist/src/errors/RatelimitError.d.ts +4 -1
  45. package/dist/src/errors/RatelimitError.d.ts.map +1 -1
  46. package/dist/src/errors/RatelimitError.js +7 -1
  47. package/dist/src/errors/RatelimitError.js.map +1 -1
  48. package/dist/src/functions/channelFactory.d.ts +4 -12
  49. package/dist/src/functions/channelFactory.d.ts.map +1 -1
  50. package/dist/src/functions/channelFactory.js +39 -13
  51. package/dist/src/functions/channelFactory.js.map +1 -1
  52. package/dist/src/index.d.ts +1 -0
  53. package/dist/src/index.d.ts.map +1 -1
  54. package/dist/src/index.js +1 -0
  55. package/dist/src/index.js.map +1 -1
  56. package/dist/src/internals/BoundedExecutor.d.ts +12 -0
  57. package/dist/src/internals/BoundedExecutor.d.ts.map +1 -0
  58. package/dist/src/internals/BoundedExecutor.js +60 -0
  59. package/dist/src/internals/BoundedExecutor.js.map +1 -0
  60. package/dist/src/internals/CommandHandler.d.ts.map +1 -1
  61. package/dist/src/internals/CommandHandler.js +53 -6
  62. package/dist/src/internals/CommandHandler.js.map +1 -1
  63. package/dist/src/internals/ComponentHandler.d.ts +2 -1
  64. package/dist/src/internals/ComponentHandler.d.ts.map +1 -1
  65. package/dist/src/internals/ComponentHandler.js +11 -4
  66. package/dist/src/internals/ComponentHandler.js.map +1 -1
  67. package/dist/src/internals/EventHandler.d.ts +18 -3
  68. package/dist/src/internals/EventHandler.d.ts.map +1 -1
  69. package/dist/src/internals/EventQueue.d.ts +43 -12
  70. package/dist/src/internals/EventQueue.d.ts.map +1 -1
  71. package/dist/src/internals/EventQueue.js +294 -62
  72. package/dist/src/internals/EventQueue.js.map +1 -1
  73. package/dist/src/internals/FieldsHandler.d.ts.map +1 -1
  74. package/dist/src/internals/FieldsHandler.js +10 -1
  75. package/dist/src/internals/FieldsHandler.js.map +1 -1
  76. package/dist/src/internals/RequestBody.d.ts +6 -0
  77. package/dist/src/internals/RequestBody.d.ts.map +1 -0
  78. package/dist/src/internals/RequestBody.js +74 -0
  79. package/dist/src/internals/RequestBody.js.map +1 -0
  80. package/dist/src/internals/RequestScheduler.d.ts +131 -0
  81. package/dist/src/internals/RequestScheduler.d.ts.map +1 -0
  82. package/dist/src/internals/RequestScheduler.js +245 -0
  83. package/dist/src/internals/RequestScheduler.js.map +1 -0
  84. package/dist/src/internals/TemporaryListenerManager.d.ts +3 -3
  85. package/dist/src/internals/TemporaryListenerManager.d.ts.map +1 -1
  86. package/dist/src/internals/TemporaryListenerManager.js +1 -1
  87. package/dist/src/internals/TemporaryListenerManager.js.map +1 -1
  88. package/dist/src/plugins/client-manager/ClientManager.d.ts +30 -2
  89. package/dist/src/plugins/client-manager/ClientManager.d.ts.map +1 -1
  90. package/dist/src/plugins/client-manager/ClientManager.js +86 -16
  91. package/dist/src/plugins/client-manager/ClientManager.js.map +1 -1
  92. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayDurableObject.d.ts +43 -0
  93. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayDurableObject.d.ts.map +1 -0
  94. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayDurableObject.js +210 -0
  95. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayDurableObject.js.map +1 -0
  96. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayPlugin.d.ts +16 -0
  97. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayPlugin.d.ts.map +1 -0
  98. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayPlugin.js +129 -0
  99. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayPlugin.js.map +1 -0
  100. package/dist/src/plugins/cloudflare-gateway/index.d.ts +4 -0
  101. package/dist/src/plugins/cloudflare-gateway/index.d.ts.map +1 -0
  102. package/dist/src/plugins/cloudflare-gateway/index.js +4 -0
  103. package/dist/src/plugins/cloudflare-gateway/index.js.map +1 -0
  104. package/dist/src/plugins/cloudflare-gateway/types.d.ts +63 -0
  105. package/dist/src/plugins/cloudflare-gateway/types.d.ts.map +1 -0
  106. package/dist/src/plugins/cloudflare-gateway/types.js +2 -0
  107. package/dist/src/plugins/cloudflare-gateway/types.js.map +1 -0
  108. package/dist/src/plugins/gateway/GatewayPlugin.d.ts +108 -19
  109. package/dist/src/plugins/gateway/GatewayPlugin.d.ts.map +1 -1
  110. package/dist/src/plugins/gateway/GatewayPlugin.js +564 -253
  111. package/dist/src/plugins/gateway/GatewayPlugin.js.map +1 -1
  112. package/dist/src/plugins/gateway/types.d.ts +33 -1
  113. package/dist/src/plugins/gateway/types.d.ts.map +1 -1
  114. package/dist/src/plugins/gateway/types.js +21 -0
  115. package/dist/src/plugins/gateway/types.js.map +1 -1
  116. package/dist/src/plugins/gateway/utils/heartbeat.d.ts.map +1 -1
  117. package/dist/src/plugins/gateway/utils/heartbeat.js +10 -4
  118. package/dist/src/plugins/gateway/utils/heartbeat.js.map +1 -1
  119. package/dist/src/plugins/gateway/utils/payload.d.ts.map +1 -1
  120. package/dist/src/plugins/gateway/utils/payload.js +0 -4
  121. package/dist/src/plugins/gateway/utils/payload.js.map +1 -1
  122. package/dist/src/plugins/gateway-forwarder/GatewayForwarderPlugin.d.ts +56 -3
  123. package/dist/src/plugins/gateway-forwarder/GatewayForwarderPlugin.d.ts.map +1 -1
  124. package/dist/src/plugins/gateway-forwarder/GatewayForwarderPlugin.js +224 -21
  125. package/dist/src/plugins/gateway-forwarder/GatewayForwarderPlugin.js.map +1 -1
  126. package/dist/src/plugins/paginator/index.d.ts +1 -1
  127. package/dist/src/plugins/paginator/index.d.ts.map +1 -1
  128. package/dist/src/plugins/paginator/index.js +1 -1
  129. package/dist/src/plugins/paginator/index.js.map +1 -1
  130. package/dist/src/plugins/voice/VoicePlugin.d.ts.map +1 -1
  131. package/dist/src/plugins/voice/VoicePlugin.js +5 -1
  132. package/dist/src/plugins/voice/VoicePlugin.js.map +1 -1
  133. package/dist/src/plugins/voice/VoiceServerUpdateListener.d.ts +10 -0
  134. package/dist/src/plugins/voice/VoiceServerUpdateListener.d.ts.map +1 -0
  135. package/dist/src/plugins/voice/VoiceServerUpdateListener.js +16 -0
  136. package/dist/src/plugins/voice/VoiceServerUpdateListener.js.map +1 -0
  137. package/dist/src/plugins/voice/VoiceStateUpdateListener.d.ts +10 -0
  138. package/dist/src/plugins/voice/VoiceStateUpdateListener.d.ts.map +1 -0
  139. package/dist/src/plugins/voice/VoiceStateUpdateListener.js +21 -0
  140. package/dist/src/plugins/voice/VoiceStateUpdateListener.js.map +1 -0
  141. package/dist/src/structures/GroupDmChannel.d.ts +5 -1
  142. package/dist/src/structures/GroupDmChannel.d.ts.map +1 -1
  143. package/dist/src/structures/GroupDmChannel.js +10 -1
  144. package/dist/src/structures/GroupDmChannel.js.map +1 -1
  145. package/dist/src/structures/Guild.d.ts +13 -4
  146. package/dist/src/structures/Guild.d.ts.map +1 -1
  147. package/dist/src/structures/Guild.js +9 -1
  148. package/dist/src/structures/Guild.js.map +1 -1
  149. package/dist/src/structures/GuildMediaChannel.d.ts +1 -1
  150. package/dist/src/structures/GuildMediaChannel.d.ts.map +1 -1
  151. package/dist/src/structures/GuildMediaChannel.js.map +1 -1
  152. package/dist/src/structures/Message.d.ts +1 -1
  153. package/dist/src/structures/Poll.d.ts +1 -1
  154. package/dist/src/structures/Poll.d.ts.map +1 -1
  155. package/dist/src/structures/Webhook.d.ts +4 -2
  156. package/dist/src/structures/Webhook.d.ts.map +1 -1
  157. package/dist/src/structures/Webhook.js +42 -29
  158. package/dist/src/structures/Webhook.js.map +1 -1
  159. package/dist/src/types/channels.d.ts +33 -0
  160. package/dist/src/types/channels.d.ts.map +1 -0
  161. package/dist/src/types/channels.js +2 -0
  162. package/dist/src/types/channels.js.map +1 -0
  163. package/dist/src/types/commandMiddleware.d.ts +64 -0
  164. package/dist/src/types/commandMiddleware.d.ts.map +1 -0
  165. package/dist/src/types/commandMiddleware.js +2 -0
  166. package/dist/src/types/commandMiddleware.js.map +1 -0
  167. package/dist/src/types/index.d.ts +10 -5
  168. package/dist/src/types/index.d.ts.map +1 -1
  169. package/dist/src/types/index.js +2 -0
  170. package/dist/src/types/index.js.map +1 -1
  171. package/dist/src/types/listeners.d.ts +13 -4
  172. package/dist/src/types/listeners.d.ts.map +1 -1
  173. package/dist/src/types/listeners.js.map +1 -1
  174. package/dist/src/utils/payload.d.ts.map +1 -1
  175. package/dist/src/utils/payload.js +16 -0
  176. package/dist/src/utils/payload.js.map +1 -1
  177. package/dist/tsconfig.tsbuildinfo +1 -1
  178. package/package.json +11 -9
  179. package/dist/src/adapters/node/index.d.ts +0 -13
  180. package/dist/src/adapters/node/index.d.ts.map +0 -1
  181. package/dist/src/adapters/node/index.js +0 -17
  182. package/dist/src/adapters/node/index.js.map +0 -1
@@ -0,0 +1,63 @@
1
+ import type { ClientOptions } from "../../classes/Client.js";
2
+ import type { ListenerEventRawData, ListenerEventType } from "../../types/listeners.js";
3
+ import type { GatewayPluginOptions } from "../gateway/types.js";
4
+ export type CloudflareGatewayForwardPayload = {
5
+ type: ListenerEventType;
6
+ data: ListenerEventRawData[ListenerEventType];
7
+ };
8
+ export type CloudflareGatewayDurableObjectConfig = Omit<Pick<ClientOptions, "baseUrl" | "deploySecret" | "token" | "clientId">, "deploySecret"> & {
9
+ deploySecret: string;
10
+ forwardPath: `/${string}`;
11
+ secretHeader: string;
12
+ gateway: {
13
+ intents: number;
14
+ autoInteractions?: boolean;
15
+ reconnect?: GatewayPluginOptions["reconnect"];
16
+ };
17
+ };
18
+ export interface CloudflareGatewayPluginOptions {
19
+ /**
20
+ * Gateway intents passed to the internal GatewayPlugin running in the Durable Object.
21
+ */
22
+ intents: number;
23
+ /**
24
+ * Gateway reconnect strategy passed through to GatewayPlugin.
25
+ */
26
+ reconnect?: GatewayPluginOptions["reconnect"];
27
+ /**
28
+ * Whether autoInteractions should be enabled in the Durable Object GatewayPlugin.
29
+ * @default false
30
+ */
31
+ autoInteractions?: boolean;
32
+ /**
33
+ * Route on your Worker that receives forwarded events from the Durable Object.
34
+ * @default "/__carbon/gateway-events"
35
+ */
36
+ forwardPath?: `/${string}`;
37
+ /**
38
+ * Header used to authenticate forwarded events.
39
+ * @default "x-carbon-gateway-secret"
40
+ */
41
+ secretHeader?: string;
42
+ /**
43
+ * Durable Object binding name in Wrangler.
44
+ * @default "CARBON_GATEWAY"
45
+ */
46
+ durableObjectBinding?: string;
47
+ /**
48
+ * Durable Object instance name.
49
+ * @default "default"
50
+ */
51
+ durableObjectName?: string;
52
+ /**
53
+ * Connect endpoint implemented by the Durable Object.
54
+ * @default "/connect"
55
+ */
56
+ connectPath?: `/${string}`;
57
+ /**
58
+ * Minimum time between automatic connect calls.
59
+ * @default 10000
60
+ */
61
+ connectDebounceMs?: number;
62
+ }
63
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/plugins/cloudflare-gateway/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EACX,oBAAoB,EACpB,iBAAiB,EACjB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE/D,MAAM,MAAM,+BAA+B,GAAG;IAC7C,IAAI,EAAE,iBAAiB,CAAA;IACvB,IAAI,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,oCAAoC,GAAG,IAAI,CACtD,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC,EACtE,cAAc,CACd,GAAG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,IAAI,MAAM,EAAE,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE;QACR,OAAO,EAAE,MAAM,CAAA;QACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,SAAS,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAA;KAC7C,CAAA;CACD,CAAA;AAED,MAAM,WAAW,8BAA8B;IAC9C;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAC7C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,IAAI,MAAM,EAAE,CAAA;IAC1B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,IAAI,MAAM,EAAE,CAAA;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/plugins/cloudflare-gateway/types.ts"],"names":[],"mappings":""}
@@ -1,9 +1,8 @@
1
1
  import { EventEmitter } from "node:events";
2
- import WebSocket from "ws";
3
2
  import { Plugin } from "../../abstracts/Plugin.js";
4
3
  import type { Client } from "../../classes/Client.js";
5
4
  import { BabyCache } from "./BabyCache.js";
6
- import { type APIGatewayBotInfo, type GatewayPayload, type GatewayPluginOptions, type GatewayState, type RequestGuildMembersData, type UpdatePresenceData, type UpdateVoiceStateData } from "./types.js";
5
+ import { type APIGatewayBotInfo, type GatewayPayload, type GatewayPluginOptions, type GatewayState, type GatewayWebSocketLike, type RequestGuildMembersData, type UpdatePresenceData, type UpdateVoiceStateData } from "./types.js";
7
6
  import { ConnectionMonitor } from "./utils/monitor.js";
8
7
  import { GatewayRateLimit } from "./utils/rateLimit.js";
9
8
  export declare class GatewayPlugin extends Plugin {
@@ -11,10 +10,11 @@ export declare class GatewayPlugin extends Plugin {
11
10
  protected client?: Client;
12
11
  readonly options: GatewayPluginOptions;
13
12
  protected state: GatewayState;
14
- protected ws: WebSocket | null;
13
+ protected ws: GatewayWebSocketLike | null;
15
14
  protected monitor: ConnectionMonitor;
16
15
  protected rateLimit: GatewayRateLimit;
17
16
  heartbeatInterval?: NodeJS.Timeout;
17
+ firstHeartbeatTimeout?: NodeJS.Timeout;
18
18
  sequence: number | null;
19
19
  lastHeartbeatAck: boolean;
20
20
  protected emitter: EventEmitter;
@@ -27,42 +27,75 @@ export declare class GatewayPlugin extends Plugin {
27
27
  protected babyCache: BabyCache;
28
28
  private reconnectTimeout?;
29
29
  private isConnecting;
30
+ private socketGeneration;
31
+ private shouldReconnect;
32
+ private nextConnectionShouldResume;
33
+ private silentSocketClosures;
34
+ private consecutiveResumeFailures;
30
35
  constructor(options: GatewayPluginOptions, gatewayInfo?: APIGatewayBotInfo);
31
36
  get ping(): number | null;
37
+ /**
38
+ * Bootstraps gateway metadata and opens the initial websocket connection.
39
+ */
32
40
  registerClient(client: Client): Promise<void>;
41
+ /**
42
+ * Opens a new websocket connection and prepares either IDENTIFY or RESUME on HELLO.
43
+ */
33
44
  connect(resume?: boolean): void;
45
+ /**
46
+ * Stops heartbeats, clears reconnect state, and closes the active socket intentionally.
47
+ */
34
48
  disconnect(): void;
35
- protected createWebSocket(url: string): WebSocket;
49
+ /**
50
+ * Creates the websocket instance for a gateway URL. Override in tests if needed.
51
+ */
52
+ protected createWebSocket(url: string): GatewayWebSocketLike;
53
+ /**
54
+ * Attaches websocket lifecycle handlers for open, message, close, and error.
55
+ */
36
56
  protected setupWebSocket(): void;
37
- protected handleReconnectionAttempt(options: {
38
- code?: number;
39
- isZombieConnection?: boolean;
40
- forceNoResume?: boolean;
41
- }): void;
57
+ /**
58
+ * Handles close codes and decides whether reconnection should resume or re-identify.
59
+ */
42
60
  protected handleClose(code: number): void;
61
+ /**
62
+ * Handles missing heartbeat acknowledgements by forcing a reconnect flow.
63
+ */
43
64
  protected handleZombieConnection(): void;
65
+ /**
66
+ * Compatibility wrapper that maps to reconnect opcode handling.
67
+ */
44
68
  protected handleReconnect(): void;
69
+ /**
70
+ * Returns whether session_id and sequence are both available for RESUME.
71
+ */
45
72
  protected canResume(): boolean;
73
+ /**
74
+ * Sends a RESUME payload using cached session_id and latest sequence.
75
+ */
46
76
  protected resume(): void;
77
+ /**
78
+ * Sends a gateway payload with size and rate-limit safeguards.
79
+ */
47
80
  send(payload: GatewayPayload, skipRateLimit?: boolean): void;
81
+ /**
82
+ * Sends an IDENTIFY payload for a fresh gateway session.
83
+ */
48
84
  protected identify(): void;
49
85
  /**
50
- * Update the bot's presence (status, activity, etc.)
51
- * @param data Presence data to update
86
+ * Updates bot presence over the gateway connection.
52
87
  */
53
88
  updatePresence(data: UpdatePresenceData): void;
54
89
  /**
55
- * Update the bot's voice state
56
- * @param data Voice state data to update
90
+ * Updates bot voice state for a guild over the gateway connection.
57
91
  */
58
92
  updateVoiceState(data: UpdateVoiceStateData): void;
59
93
  /**
60
- * Request guild members from Discord. The data will come in through the GUILD_MEMBERS_CHUNK event, not as a return on this function.
61
- * @param data Guild members request data
94
+ * Requests guild members and validates required intents/options.
62
95
  */
63
96
  requestGuildMembers(data: RequestGuildMembersData): void;
64
97
  /**
65
- * Get the current rate limit status
98
+ * Returns the current outbound gateway rate-limit snapshot.
66
99
  */
67
100
  getRateLimitStatus(): {
68
101
  remainingEvents: number;
@@ -70,7 +103,7 @@ export declare class GatewayPlugin extends Plugin {
70
103
  currentEventCount: number;
71
104
  };
72
105
  /**
73
- * Get information about optionsured intents
106
+ * Returns helpers describing which intents are currently enabled.
74
107
  */
75
108
  getIntentsInfo(): {
76
109
  intents: number;
@@ -81,10 +114,66 @@ export declare class GatewayPlugin extends Plugin {
81
114
  hasMessageContent: boolean;
82
115
  };
83
116
  /**
84
- * Check if a specific intent is enabled
85
- * @param intent The intent to check
117
+ * Checks if a specific intent bit is enabled.
86
118
  */
87
119
  hasIntent(intent: number): boolean;
120
+ /**
121
+ * Guards handlers from acting on stale websocket instances.
122
+ */
123
+ private isCurrentSocket;
124
+ protected onSocketEvent(socket: GatewayWebSocketLike, event: "open" | "message" | "close" | "error", handler: (incoming: unknown) => void): void;
125
+ protected getMessageText(incoming: unknown): string | null;
126
+ private extractSocketPayload;
127
+ private getCloseCode;
128
+ private getSocketError;
129
+ private closeSocketImmediately;
130
+ /**
131
+ * Processes HELLO, starts heartbeat scheduling, then sends RESUME or IDENTIFY.
132
+ */
133
+ private handleHello;
134
+ /**
135
+ * Marks heartbeat acknowledged and updates rolling ping metrics.
136
+ */
137
+ private handleHeartbeatAck;
138
+ /**
139
+ * Immediately sends a heartbeat in response to gateway heartbeat requests.
140
+ */
141
+ private sendHeartbeatNow;
142
+ /**
143
+ * Processes dispatch events, session caching, and Carbon event forwarding.
144
+ */
145
+ private handleDispatch;
146
+ /**
147
+ * Handles INVALID_SESSION and schedules reconnect with Discord-compliant delay.
148
+ */
149
+ private handleInvalidSession;
150
+ /**
151
+ * Handles RECONNECT opcode by scheduling reconnect with resume preference.
152
+ */
153
+ private handleReconnectOpcode;
154
+ /**
155
+ * Terminates the current socket after reconnect has been scheduled.
156
+ */
157
+ private reconnectWithSocketRestart;
158
+ /**
159
+ * Schedules a single reconnect attempt with backoff and attempt limits.
160
+ */
161
+ private scheduleReconnect;
162
+ /**
163
+ * Computes exponential reconnect delay with jitter and optional minimum delay.
164
+ */
165
+ private computeReconnectDelay;
166
+ /**
167
+ * Clears any pending reconnect timer.
168
+ */
169
+ private clearReconnectTimeout;
170
+ /**
171
+ * Clears resume-related session state after non-resumable failures.
172
+ */
173
+ private resetSessionState;
174
+ /**
175
+ * Ensures gateway URLs include v=10 and encoding=json query parameters.
176
+ */
88
177
  private ensureGatewayParams;
89
178
  }
90
179
  //# sourceMappingURL=GatewayPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GatewayPlugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/gateway/GatewayPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GatewayPlugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/gateway/GatewayPlugin.ts"],"names":[],"mappings":"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"}