@depup/openai 7.34.0-depup.0 → 7.35.0-depup.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 (201) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +2 -2
  3. package/changes.json +1 -1
  4. package/client.d.mts +2 -2
  5. package/client.d.mts.map +1 -1
  6. package/client.d.ts +2 -2
  7. package/client.d.ts.map +1 -1
  8. package/client.js.map +1 -1
  9. package/client.mjs.map +1 -1
  10. package/internal/responses-ws-credentials.d.mts +4 -21
  11. package/internal/responses-ws-credentials.d.mts.map +1 -1
  12. package/internal/responses-ws-credentials.d.ts +4 -21
  13. package/internal/responses-ws-credentials.d.ts.map +1 -1
  14. package/internal/responses-ws-credentials.js +4 -100
  15. package/internal/responses-ws-credentials.js.map +1 -1
  16. package/internal/responses-ws-credentials.mjs +4 -100
  17. package/internal/responses-ws-credentials.mjs.map +1 -1
  18. package/internal/ws-connection-controller.d.mts +95 -0
  19. package/internal/ws-connection-controller.d.mts.map +1 -0
  20. package/internal/ws-connection-controller.d.ts +95 -0
  21. package/internal/ws-connection-controller.d.ts.map +1 -0
  22. package/internal/ws-connection-controller.js +457 -0
  23. package/internal/ws-connection-controller.js.map +1 -0
  24. package/internal/ws-connection-controller.mjs +453 -0
  25. package/internal/ws-connection-controller.mjs.map +1 -0
  26. package/internal/ws-connection.d.mts +18 -0
  27. package/internal/ws-connection.d.mts.map +1 -0
  28. package/internal/ws-connection.d.ts +18 -0
  29. package/internal/ws-connection.d.ts.map +1 -0
  30. package/internal/ws-connection.js +94 -0
  31. package/internal/ws-connection.js.map +1 -0
  32. package/internal/ws-connection.mjs +88 -0
  33. package/internal/ws-connection.mjs.map +1 -0
  34. package/internal/ws-credentials.d.mts +25 -0
  35. package/internal/ws-credentials.d.mts.map +1 -0
  36. package/internal/ws-credentials.d.ts +25 -0
  37. package/internal/ws-credentials.d.ts.map +1 -0
  38. package/internal/ws-credentials.js +109 -0
  39. package/internal/ws-credentials.js.map +1 -0
  40. package/internal/ws-credentials.mjs +105 -0
  41. package/internal/ws-credentials.mjs.map +1 -0
  42. package/lib/live/webrtc.d.mts +5 -1
  43. package/lib/live/webrtc.d.mts.map +1 -1
  44. package/lib/live/webrtc.d.ts +5 -1
  45. package/lib/live/webrtc.d.ts.map +1 -1
  46. package/lib/live/webrtc.js.map +1 -1
  47. package/lib/live/webrtc.mjs.map +1 -1
  48. package/package.json +3 -3
  49. package/resources/admin/organization/projects/api-keys.d.mts +28 -5
  50. package/resources/admin/organization/projects/api-keys.d.mts.map +1 -1
  51. package/resources/admin/organization/projects/api-keys.d.ts +28 -5
  52. package/resources/admin/organization/projects/api-keys.d.ts.map +1 -1
  53. package/resources/admin/organization/projects/api-keys.js +18 -3
  54. package/resources/admin/organization/projects/api-keys.js.map +1 -1
  55. package/resources/admin/organization/projects/api-keys.mjs +18 -3
  56. package/resources/admin/organization/projects/api-keys.mjs.map +1 -1
  57. package/resources/audio/speech.d.mts +2 -1
  58. package/resources/audio/speech.d.mts.map +1 -1
  59. package/resources/audio/speech.d.ts +2 -1
  60. package/resources/audio/speech.d.ts.map +1 -1
  61. package/resources/audio/voices.d.mts +47 -12
  62. package/resources/audio/voices.d.mts.map +1 -1
  63. package/resources/audio/voices.d.ts +47 -12
  64. package/resources/audio/voices.d.ts.map +1 -1
  65. package/resources/audio/voices.js +9 -9
  66. package/resources/audio/voices.mjs +9 -9
  67. package/resources/beta/realtime/realtime.d.mts +4 -0
  68. package/resources/beta/realtime/realtime.d.mts.map +1 -1
  69. package/resources/beta/realtime/realtime.d.ts +4 -0
  70. package/resources/beta/realtime/realtime.d.ts.map +1 -1
  71. package/resources/beta/realtime/realtime.js.map +1 -1
  72. package/resources/beta/realtime/realtime.mjs.map +1 -1
  73. package/resources/beta/responses/responses.d.mts +8 -0
  74. package/resources/beta/responses/responses.d.mts.map +1 -1
  75. package/resources/beta/responses/responses.d.ts +8 -0
  76. package/resources/beta/responses/responses.d.ts.map +1 -1
  77. package/resources/beta/responses/responses.js.map +1 -1
  78. package/resources/beta/responses/responses.mjs.map +1 -1
  79. package/resources/beta/responses/ws-base.d.mts +2 -24
  80. package/resources/beta/responses/ws-base.d.mts.map +1 -1
  81. package/resources/beta/responses/ws-base.d.ts +2 -24
  82. package/resources/beta/responses/ws-base.d.ts.map +1 -1
  83. package/resources/beta/responses/ws-base.js +93 -519
  84. package/resources/beta/responses/ws-base.js.map +1 -1
  85. package/resources/beta/responses/ws-base.mjs +94 -520
  86. package/resources/beta/responses/ws-base.mjs.map +1 -1
  87. package/resources/chat/completions/completions.d.mts +1 -1
  88. package/resources/chat/completions/completions.d.ts +1 -1
  89. package/resources/decisions.d.mts +68 -1
  90. package/resources/decisions.d.mts.map +1 -1
  91. package/resources/decisions.d.ts +68 -1
  92. package/resources/decisions.d.ts.map +1 -1
  93. package/resources/index.d.mts +1 -1
  94. package/resources/index.d.mts.map +1 -1
  95. package/resources/index.d.ts +1 -1
  96. package/resources/index.d.ts.map +1 -1
  97. package/resources/index.js.map +1 -1
  98. package/resources/index.mjs.map +1 -1
  99. package/resources/live/forks/forks.d.mts +2 -2
  100. package/resources/live/forks/forks.d.mts.map +1 -1
  101. package/resources/live/forks/forks.d.ts +2 -2
  102. package/resources/live/forks/forks.d.ts.map +1 -1
  103. package/resources/live/forks/ws-base.d.mts +2 -23
  104. package/resources/live/forks/ws-base.d.mts.map +1 -1
  105. package/resources/live/forks/ws-base.d.ts +2 -23
  106. package/resources/live/forks/ws-base.d.ts.map +1 -1
  107. package/resources/live/forks/ws-base.js +84 -485
  108. package/resources/live/forks/ws-base.js.map +1 -1
  109. package/resources/live/forks/ws-base.mjs +83 -484
  110. package/resources/live/forks/ws-base.mjs.map +1 -1
  111. package/resources/live/live.d.mts +523 -29
  112. package/resources/live/live.d.mts.map +1 -1
  113. package/resources/live/live.d.ts +523 -29
  114. package/resources/live/live.d.ts.map +1 -1
  115. package/resources/live/live.js.map +1 -1
  116. package/resources/live/live.mjs.map +1 -1
  117. package/resources/live/sessions.d.mts +16 -4
  118. package/resources/live/sessions.d.mts.map +1 -1
  119. package/resources/live/sessions.d.ts +16 -4
  120. package/resources/live/sessions.d.ts.map +1 -1
  121. package/resources/live/sideband/sideband.d.mts +4 -4
  122. package/resources/live/sideband/sideband.d.mts.map +1 -1
  123. package/resources/live/sideband/sideband.d.ts +4 -4
  124. package/resources/live/sideband/sideband.d.ts.map +1 -1
  125. package/resources/live/sideband/ws-base.d.mts +2 -23
  126. package/resources/live/sideband/ws-base.d.mts.map +1 -1
  127. package/resources/live/sideband/ws-base.d.ts +2 -23
  128. package/resources/live/sideband/ws-base.d.ts.map +1 -1
  129. package/resources/live/sideband/ws-base.js +84 -485
  130. package/resources/live/sideband/ws-base.js.map +1 -1
  131. package/resources/live/sideband/ws-base.mjs +83 -484
  132. package/resources/live/sideband/ws-base.mjs.map +1 -1
  133. package/resources/live/ws-base.d.mts +2 -23
  134. package/resources/live/ws-base.d.mts.map +1 -1
  135. package/resources/live/ws-base.d.ts +2 -23
  136. package/resources/live/ws-base.d.ts.map +1 -1
  137. package/resources/live/ws-base.js +84 -485
  138. package/resources/live/ws-base.js.map +1 -1
  139. package/resources/live/ws-base.mjs +83 -484
  140. package/resources/live/ws-base.mjs.map +1 -1
  141. package/resources/realtime/realtime.d.mts +8 -2
  142. package/resources/realtime/realtime.d.mts.map +1 -1
  143. package/resources/realtime/realtime.d.ts +8 -2
  144. package/resources/realtime/realtime.d.ts.map +1 -1
  145. package/resources/realtime/realtime.js.map +1 -1
  146. package/resources/realtime/realtime.mjs.map +1 -1
  147. package/resources/responses/responses.d.mts +8 -0
  148. package/resources/responses/responses.d.mts.map +1 -1
  149. package/resources/responses/responses.d.ts +8 -0
  150. package/resources/responses/responses.d.ts.map +1 -1
  151. package/resources/responses/responses.js.map +1 -1
  152. package/resources/responses/responses.mjs.map +1 -1
  153. package/resources/responses/ws-base.d.mts +2 -24
  154. package/resources/responses/ws-base.d.mts.map +1 -1
  155. package/resources/responses/ws-base.d.ts +2 -24
  156. package/resources/responses/ws-base.d.ts.map +1 -1
  157. package/resources/responses/ws-base.js +93 -519
  158. package/resources/responses/ws-base.js.map +1 -1
  159. package/resources/responses/ws-base.mjs +94 -520
  160. package/resources/responses/ws-base.mjs.map +1 -1
  161. package/resources/shared.d.mts +7 -0
  162. package/resources/shared.d.mts.map +1 -1
  163. package/resources/shared.d.ts +7 -0
  164. package/resources/shared.d.ts.map +1 -1
  165. package/resources/videos.d.mts +8 -0
  166. package/resources/videos.d.mts.map +1 -1
  167. package/resources/videos.d.ts +8 -0
  168. package/resources/videos.d.ts.map +1 -1
  169. package/src/client.ts +2 -0
  170. package/src/internal/responses-ws-credentials.ts +5 -157
  171. package/src/internal/ws-connection-controller.ts +632 -0
  172. package/src/internal/ws-connection.ts +116 -0
  173. package/src/internal/ws-credentials.ts +165 -0
  174. package/src/lib/live/webrtc.ts +4 -1
  175. package/src/resources/admin/organization/projects/api-keys.ts +29 -5
  176. package/src/resources/audio/speech.ts +2 -1
  177. package/src/resources/audio/voices.ts +53 -12
  178. package/src/resources/beta/realtime/realtime.ts +5 -0
  179. package/src/resources/beta/responses/responses.ts +10 -0
  180. package/src/resources/beta/responses/ws-base.ts +106 -604
  181. package/src/resources/chat/completions/completions.ts +1 -1
  182. package/src/resources/decisions.ts +75 -0
  183. package/src/resources/index.ts +1 -0
  184. package/src/resources/live/api.md +12 -0
  185. package/src/resources/live/forks/forks.ts +9 -0
  186. package/src/resources/live/forks/ws-base.ts +98 -558
  187. package/src/resources/live/live.ts +668 -26
  188. package/src/resources/live/sessions.ts +19 -4
  189. package/src/resources/live/sideband/sideband.ts +11 -2
  190. package/src/resources/live/sideband/ws-base.ts +98 -562
  191. package/src/resources/live/ws-base.ts +98 -558
  192. package/src/resources/realtime/realtime.ts +9 -2
  193. package/src/resources/responses/responses.ts +10 -0
  194. package/src/resources/responses/ws-base.ts +106 -600
  195. package/src/resources/shared.ts +7 -0
  196. package/src/resources/videos.ts +10 -0
  197. package/src/version.ts +1 -1
  198. package/version.d.mts +1 -1
  199. package/version.d.ts +1 -1
  200. package/version.js +1 -1
  201. package/version.mjs +1 -1
@@ -0,0 +1,457 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebSocketConnection = void 0;
4
+ const error_1 = require("../core/error.js");
5
+ const EventEmitter_1 = require("../core/EventEmitter.js");
6
+ const sleep_1 = require("./utils/sleep.js");
7
+ const ws_adapter_1 = require("./ws-adapter.js");
8
+ const ws_1 = require("./ws.js");
9
+ const ws_connection_1 = require("./ws-connection.js");
10
+ /** Shared connection lifecycle; public fields and event listeners remain on the binding. */
11
+ class WebSocketConnection {
12
+ constructor(owner, hooks, options) {
13
+ this._isReconnecting = false;
14
+ this._intentionallyClosed = false;
15
+ this._closeCode = 1000;
16
+ this._closeReason = 'OK';
17
+ this._lastCloseCode = 1006;
18
+ this._lastCloseReason = '';
19
+ // Necessary to keep the public event interface clean while we manage reconnecting
20
+ this._internalEvents = new EventEmitter_1.InternalEventEmitter();
21
+ this._owner = owner;
22
+ this._hooks = hooks;
23
+ this._reconnectOptions = options?.reconnect ?? null;
24
+ this._sendQueue = new ws_1.SendQueue(options?.maxQueueSize);
25
+ }
26
+ send(event) {
27
+ (0, ws_connection_1.sendWebSocketEvent)(this._owner, event, this._sendQueue, () => this._isReconnecting, (message, cause) => this._hooks.onError(message, cause));
28
+ }
29
+ sendRaw(data) {
30
+ (0, ws_connection_1.sendRawWebSocketData)(this._owner, data, this._sendQueue, () => this._isReconnecting, (message, cause) => this._hooks.onError(message, cause));
31
+ }
32
+ close(props) {
33
+ if (!this._owner.socket) {
34
+ throw new error_1.OpenAIError('Internal error: failed to initialize socket. Please report this issue.');
35
+ }
36
+ this._intentionallyClosed = true;
37
+ this._closeCode = props?.code ?? 1000;
38
+ this._closeReason = props?.reason ?? 'OK';
39
+ this._cancelRefresh?.();
40
+ try {
41
+ this._owner.socket.close(this._closeCode, this._closeReason);
42
+ }
43
+ catch (error) {
44
+ this._hooks.onError('could not close the connection', error);
45
+ }
46
+ }
47
+ iterate(options) {
48
+ if (!this._owner.socket) {
49
+ throw new error_1.OpenAIError('Internal error: failed to initialize socket. Please report this issue.');
50
+ }
51
+ const maxBufferedEvents = (0, ws_1.getMaxBufferedEvents)(options);
52
+ // Two-queue async iterator: `queue` buffers incoming messages,
53
+ // `resolvers` buffers waiting next() calls. A push wakes the
54
+ // oldest next(); a next() drains the oldest message.
55
+ const queue = [];
56
+ const resolvers = [];
57
+ let queueHead = 0;
58
+ let resolverHead = 0;
59
+ let done = false;
60
+ let failure;
61
+ let currentSocket = this._owner.socket;
62
+ const wakeResolver = () => {
63
+ if (resolverHead >= resolvers.length) {
64
+ return;
65
+ }
66
+ const resolver = resolvers[resolverHead];
67
+ resolvers[resolverHead] = undefined;
68
+ resolverHead += 1;
69
+ if (resolverHead >= 64 && resolverHead * 2 >= resolvers.length) {
70
+ resolvers.splice(0, resolverHead);
71
+ resolverHead = 0;
72
+ }
73
+ resolver?.();
74
+ };
75
+ /* oxlint-disable eslint/no-use-before-define -- These mutually dependent callbacks are initialized before any listener is registered. */
76
+ const push = (msg) => {
77
+ if (done) {
78
+ return;
79
+ }
80
+ if (maxBufferedEvents !== undefined && queue.length - queueHead >= maxBufferedEvents) {
81
+ failure = this._hooks.createError(`WebSocket stream exceeded maxBufferedEvents (${maxBufferedEvents})`);
82
+ done = true;
83
+ queue.length = 0;
84
+ queueHead = 0;
85
+ cleanup();
86
+ flushResolvers();
87
+ return;
88
+ }
89
+ queue.push(msg);
90
+ wakeResolver();
91
+ };
92
+ const onEvent = (event) => {
93
+ // Protocol errors are handled by onEmitterError.
94
+ if (this._hooks.isErrorEvent(event)) {
95
+ return;
96
+ }
97
+ push({ type: 'message', message: event });
98
+ };
99
+ const onRaw = (data) => {
100
+ push({ type: 'raw', data });
101
+ };
102
+ // All errors (API + socket) funnel through _onError → 'error' event
103
+ const onEmitterError = (err) => {
104
+ push({ type: 'error', error: err });
105
+ };
106
+ const onOpen = () => {
107
+ push({ type: 'open' });
108
+ };
109
+ const onReconnecting = (evt) => {
110
+ push({ type: 'reconnecting', reconnect: evt });
111
+ };
112
+ const onReconnected = () => {
113
+ push({ type: 'reconnected' });
114
+ };
115
+ const flushResolvers = () => {
116
+ while (resolverHead < resolvers.length) {
117
+ const resolver = resolvers[resolverHead];
118
+ resolvers[resolverHead] = undefined;
119
+ resolverHead += 1;
120
+ resolver?.();
121
+ }
122
+ resolvers.length = 0;
123
+ resolverHead = 0;
124
+ };
125
+ const onClose = (code, reason, unsent) => {
126
+ push({ type: 'close', code, reason, unsent });
127
+ done = true;
128
+ flushResolvers();
129
+ cleanup();
130
+ };
131
+ const onSocketSwap = (_oldSocket, newSocket) => {
132
+ if (currentSocket === newSocket) {
133
+ return;
134
+ }
135
+ currentSocket.off('open', onOpen);
136
+ newSocket.on('open', onOpen);
137
+ currentSocket = newSocket;
138
+ };
139
+ const cleanup = () => {
140
+ this._hooks.unsubscribe(onEvent, onRaw, onEmitterError);
141
+ currentSocket.off('open', onOpen);
142
+ this._internalEvents.off('close', onClose);
143
+ this._internalEvents.off('socketSwap', onSocketSwap);
144
+ this._internalEvents.off('reconnecting', onReconnecting);
145
+ this._internalEvents.off('reconnected', onReconnected);
146
+ };
147
+ /* oxlint-enable eslint/no-use-before-define */
148
+ this._hooks.subscribe(onEvent, onRaw, onEmitterError);
149
+ this._owner.socket.on('open', onOpen);
150
+ this._internalEvents.on('close', onClose);
151
+ this._internalEvents.on('socketSwap', onSocketSwap);
152
+ this._internalEvents.on('reconnecting', onReconnecting);
153
+ this._internalEvents.on('reconnected', onReconnected);
154
+ // Overridden registration hooks may have terminated the iterator before setup finished.
155
+ if (done) {
156
+ cleanup();
157
+ }
158
+ if (this._isReconnecting) {
159
+ // A reconnect is already in flight. The socket may be CLOSED but the
160
+ // instance is still alive. Emit 'reconnecting' so the iterator stays
161
+ // open and receives the upcoming reconnected/message events.
162
+ push({
163
+ type: 'reconnecting',
164
+ reconnect: { attempt: 0, maxAttempts: 0, delay: 0, closeCode: 0, parameters: undefined },
165
+ });
166
+ }
167
+ else {
168
+ switch (this._owner.socket.readyState) {
169
+ case ws_adapter_1.ReadyState.CONNECTING: {
170
+ push({ type: 'connecting' });
171
+ break;
172
+ }
173
+ case ws_adapter_1.ReadyState.OPEN: {
174
+ push({ type: 'open' });
175
+ break;
176
+ }
177
+ case ws_adapter_1.ReadyState.CLOSING: {
178
+ push({ type: 'closing' });
179
+ break;
180
+ }
181
+ case ws_adapter_1.ReadyState.CLOSED: {
182
+ push({
183
+ type: 'close',
184
+ code: this._lastCloseCode,
185
+ reason: this._lastCloseReason,
186
+ unsent: this._sendQueue.drain(),
187
+ });
188
+ done = true;
189
+ cleanup();
190
+ break;
191
+ }
192
+ default: {
193
+ break;
194
+ }
195
+ }
196
+ }
197
+ const tryResolve = (res, reject) => {
198
+ if (failure) {
199
+ reject(failure);
200
+ }
201
+ else if (queueHead < queue.length) {
202
+ // oxlint-disable-next-line typescript/no-non-null-assertion -- Only consumed queue slots are cleared; the length guard proves this slot is populated.
203
+ const queued = queue[queueHead];
204
+ queue[queueHead] = undefined;
205
+ queueHead += 1;
206
+ if (queueHead >= 64 && queueHead * 2 >= queue.length) {
207
+ queue.splice(0, queueHead);
208
+ queueHead = 0;
209
+ }
210
+ res({ value: queued, done: false });
211
+ }
212
+ else if (done) {
213
+ res({ value: undefined, done: true });
214
+ }
215
+ else {
216
+ return false;
217
+ }
218
+ return true;
219
+ };
220
+ const next = () =>
221
+ // oxlint-disable-next-line promise/avoid-new -- Each next() waits for the socket callbacks to produce a record or close.
222
+ new Promise((resolve, reject) => {
223
+ if (tryResolve(resolve, reject)) {
224
+ return;
225
+ }
226
+ resolvers.push(() => {
227
+ tryResolve(resolve, reject);
228
+ });
229
+ });
230
+ return {
231
+ next,
232
+ return: () => {
233
+ done = true;
234
+ queue.length = 0;
235
+ queueHead = 0;
236
+ cleanup();
237
+ flushResolvers();
238
+ return Promise.resolve({ value: undefined, done: true });
239
+ },
240
+ [Symbol.asyncIterator]() {
241
+ return this;
242
+ },
243
+ };
244
+ }
245
+ connect(createSocket = (url) => this._hooks.createSocket(url), url = this._hooks.buildURL()) {
246
+ this._owner.url = url;
247
+ const socket = createSocket(this._owner.url);
248
+ socket.on('message', (data, isBinary) => this._hooks.onMessage(data, isBinary));
249
+ socket.on('error', (err) => {
250
+ this._hooks.onSocketError?.(socket, err);
251
+ // Suppress transient errors during reconnection — the retry loop
252
+ // already handles them and will surface a close if retries exhaust.
253
+ if (this._isReconnecting) {
254
+ return;
255
+ }
256
+ this._hooks.onError(err.message, err);
257
+ });
258
+ socket.on('open', () => {
259
+ this._flushSendQueue();
260
+ });
261
+ socket.on('close', (code, reason) => {
262
+ // Ignore close events from superseded sockets — a stale socket's
263
+ // late close must not kick off a second reconnect loop.
264
+ if (socket !== this._owner.socket) {
265
+ return;
266
+ }
267
+ if (!this._intentionallyClosed && this._canReconnect(code)) {
268
+ this._reconnect(code);
269
+ }
270
+ else if (!this._isReconnecting) {
271
+ this._emitPermanentClose(code, reason);
272
+ }
273
+ });
274
+ return socket;
275
+ }
276
+ // Reconnect is opt-in via onReconnecting so callers can pass
277
+ // state (e.g. session IDs) into the new connection.
278
+ _canReconnect(code) {
279
+ if (this._intentionallyClosed) {
280
+ return false;
281
+ }
282
+ if (!this._reconnectOptions) {
283
+ return false;
284
+ }
285
+ if (this._reconnectOptions.maxRetries === 0) {
286
+ return false;
287
+ }
288
+ if (!this._reconnectOptions.onReconnecting) {
289
+ return false;
290
+ }
291
+ return (0, ws_1.isRecoverableClose)(code);
292
+ }
293
+ _abortReconnect(closeCode) {
294
+ if (this._canReconnect(closeCode)) {
295
+ return false;
296
+ }
297
+ this._isReconnecting = false;
298
+ if (!this._intentionallyClosed) {
299
+ this._hooks.onError(`WebSocket reconnect aborted: non-recoverable close code ${closeCode}`);
300
+ }
301
+ this._emitPermanentClose(this._intentionallyClosed ? this._closeCode : closeCode, this._intentionallyClosed ? this._closeReason : 'reconnect aborted');
302
+ return true;
303
+ }
304
+ _notifyReconnecting(options, initialEvent) {
305
+ let reconnectingEvent = initialEvent;
306
+ const { closeCode } = initialEvent;
307
+ let overrides;
308
+ try {
309
+ overrides = options.onReconnecting(reconnectingEvent);
310
+ }
311
+ catch (error) {
312
+ this._isReconnecting = false;
313
+ this._hooks.onError('onReconnecting callback threw', error);
314
+ this._emitPermanentClose(closeCode, 'onReconnecting callback threw');
315
+ return false;
316
+ }
317
+ if (overrides && 'abort' in overrides && overrides.abort) {
318
+ this._isReconnecting = false;
319
+ this._emitPermanentClose(closeCode, 'reconnect aborted by handler');
320
+ return false;
321
+ }
322
+ if (overrides && 'parameters' in overrides) {
323
+ this._hooks.parameters = overrides.parameters;
324
+ reconnectingEvent = { ...reconnectingEvent, parameters: this._hooks.parameters };
325
+ }
326
+ try {
327
+ this._hooks.emitReconnecting(reconnectingEvent);
328
+ }
329
+ catch (error) {
330
+ this._hooks.onError('onReconnecting callback threw', error);
331
+ }
332
+ this._internalEvents._emit('reconnecting', reconnectingEvent);
333
+ return true;
334
+ }
335
+ async _reconnect(initialCloseCode) {
336
+ let closeCode = initialCloseCode;
337
+ if (!this._owner.socket) {
338
+ throw new error_1.OpenAIError('Internal error: failed to initialize socket. Please report this issue.');
339
+ }
340
+ if (this._isReconnecting || !this._reconnectOptions) {
341
+ return;
342
+ }
343
+ this._isReconnecting = true;
344
+ const maxRetries = this._reconnectOptions.maxRetries ?? 5;
345
+ const initialDelay = this._reconnectOptions.initialDelay ?? 500;
346
+ const maxDelay = this._reconnectOptions.maxDelay ?? 8000;
347
+ /* oxlint-disable eslint/no-await-in-loop -- Reconnect attempts and their credential refresh must run sequentially. */
348
+ for (let attempt = 1; attempt <= maxRetries; attempt += 1) {
349
+ if (this._abortReconnect(closeCode)) {
350
+ return;
351
+ }
352
+ const baseDelay = Math.min(initialDelay * 2 ** (attempt - 1), maxDelay);
353
+ // Jitter: rand [0.75, 1.0] to spread out connection attempts without over-delaying
354
+ const jitter = 0.75 + Math.random() * 0.25;
355
+ const actualDelay = Math.round(baseDelay * jitter);
356
+ const reconnectingEvent = {
357
+ attempt,
358
+ maxAttempts: maxRetries,
359
+ delay: actualDelay,
360
+ closeCode,
361
+ parameters: this._hooks.parameters ? { ...this._hooks.parameters } : undefined,
362
+ };
363
+ if (!this._notifyReconnecting(this._reconnectOptions, reconnectingEvent)) {
364
+ return;
365
+ }
366
+ if (this._abortReconnect(closeCode)) {
367
+ return;
368
+ }
369
+ await (0, sleep_1.sleep)(actualDelay);
370
+ if (this._abortReconnect(closeCode)) {
371
+ return;
372
+ }
373
+ let closeCodePromise;
374
+ try {
375
+ const oldSocket = this._owner.socket;
376
+ if (this._hooks.prepareReconnectSocket) {
377
+ const url = this._hooks.buildURL();
378
+ // oxlint-disable-next-line promise/avoid-new -- Public close cancels the pending credential refresh through this callback.
379
+ const canceled = new Promise((resolve) => {
380
+ // oxlint-disable-next-line unicorn/no-useless-undefined -- Promise<undefined> requires an explicit value in TypeScript.
381
+ this._cancelRefresh = () => resolve(undefined);
382
+ });
383
+ let createSocket;
384
+ try {
385
+ createSocket = await Promise.race([this._hooks.prepareReconnectSocket(), canceled]);
386
+ }
387
+ finally {
388
+ this._cancelRefresh = undefined;
389
+ }
390
+ if (!this._canReconnect(closeCode)) {
391
+ this._isReconnecting = false;
392
+ this._emitPermanentClose(this._closeCode, this._closeReason);
393
+ return;
394
+ }
395
+ this._owner.socket = this.connect(createSocket, url);
396
+ }
397
+ else {
398
+ this._owner.socket = this.connect();
399
+ }
400
+ // Registered synchronously after _connect() and before any
401
+ // await so the code is captured even when ws emits 'close'
402
+ // in the same tick as 'error' (e.g. abortHandshake).
403
+ // oxlint-disable-next-line promise/avoid-new -- Capture close before awaiting open, including synchronous error/close pairs.
404
+ closeCodePromise = new Promise((resolve) => {
405
+ this._owner.socket.once('close', resolve);
406
+ });
407
+ await (0, ws_connection_1.waitForWebSocketOpen)(this._owner.socket);
408
+ this._internalEvents._emit('socketSwap', oldSocket, this._owner.socket);
409
+ this._isReconnecting = false;
410
+ this._flushSendQueue();
411
+ this._hooks.emitReconnected();
412
+ this._internalEvents._emit('reconnected');
413
+ return;
414
+ }
415
+ catch {
416
+ if (this._hooks.prepareReconnectSocket && this._intentionallyClosed) {
417
+ // A public close observer may have thrown after lifecycle cleanup.
418
+ // Only emit here if the reconnect itself had not already closed.
419
+ if (this._isReconnecting) {
420
+ this._isReconnecting = false;
421
+ this._emitPermanentClose(this._closeCode, this._closeReason);
422
+ }
423
+ return;
424
+ }
425
+ if (closeCodePromise) {
426
+ // ws may emit 'error' before 'close', so await the code
427
+ // rather than reading it synchronously.
428
+ closeCode = await closeCodePromise;
429
+ }
430
+ }
431
+ }
432
+ /* oxlint-enable eslint/no-await-in-loop */
433
+ // All retries exhausted — surface an error so consumers can
434
+ // distinguish retry failure from a clean close.
435
+ this._isReconnecting = false;
436
+ this._hooks.onError(`WebSocket reconnect failed after ${maxRetries} attempts (close code: ${closeCode})`);
437
+ this._emitPermanentClose(closeCode, `reconnect failed after ${maxRetries} attempts`);
438
+ }
439
+ _flushSendQueue() {
440
+ (0, ws_connection_1.flushWebSocketSendQueue)(this._owner, this._sendQueue, (message, cause) => this._hooks.onError(message, cause), this._hooks.requeueFailed === undefined ? undefined : { requeueFailed: this._hooks.requeueFailed });
441
+ }
442
+ /**
443
+ * Emits the public `close` event with unsent messages and the internal
444
+ * `close` event used by the async iterator.
445
+ */
446
+ _emitPermanentClose(code, reason) {
447
+ this._lastCloseCode = code;
448
+ this._lastCloseReason = reason;
449
+ const unsent = this._sendQueue.drain();
450
+ // Internal close fires first so the async iterator is guaranteed to
451
+ // terminate even if a public 'close' listener throws.
452
+ this._internalEvents._emit('close', code, reason, unsent);
453
+ this._hooks.emitClose(code, reason, unsent);
454
+ }
455
+ }
456
+ exports.WebSocketConnection = WebSocketConnection;
457
+ //# sourceMappingURL=ws-connection-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-connection-controller.js","sourceRoot":"","sources":["../src/internal/ws-connection-controller.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,0DAA4D;AAC5D,4CAAsC;AACtC,gDAA0C;AAE1C,gCAA2E;AAQ3E,sDAKyB;AA6DzB,4FAA4F;AAC5F,MAAa,mBAAmB;IA2B9B,YACE,KAA+B,EAC/B,KAAyF,EACzF,OAAiD;QArB3C,oBAAe,GAAG,KAAK,CAAC;QACxB,yBAAoB,GAAG,KAAK,CAAC;QAC7B,eAAU,GAAG,IAAI,CAAC;QAClB,iBAAY,GAAG,IAAI,CAAC;QACpB,mBAAc,GAAG,IAAI,CAAC;QACtB,qBAAgB,GAAG,EAAE,CAAC;QAE9B,kFAAkF;QAC1E,oBAAe,GAAG,IAAI,mCAAoB,EAK9C,CAAC;QAUH,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,iBAAiB,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,IAAI,cAAS,CAAe,OAAO,EAAE,YAAY,CAAC,CAAC;IACvE,CAAC;IAID,IAAI,CAAC,KAAmB;QACtB,IAAA,kCAAkB,EAChB,IAAI,CAAC,MAAM,EACX,KAAK,EACL,IAAI,CAAC,UAAU,EACf,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAC1B,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CACxD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,IAAsB;QAC5B,IAAA,oCAAoB,EAClB,IAAI,CAAC,MAAM,EACX,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAC1B,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CACxD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAwC;QAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,mBAAW,CAAC,wEAAwE,CAAC,CAAC;QAClG,CAAC;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,CACL,OAAgC;QAEhC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,mBAAW,CAAC,wEAAwE,CAAC,CAAC;QAClG,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAA,yBAAoB,EAAC,OAAO,CAAC,CAAC;QAExD,+DAA+D;QAC/D,6DAA6D;QAC7D,qDAAqD;QACrD,MAAM,KAAK,GAA4F,EAAE,CAAC;QAC1G,MAAM,SAAS,GAAiC,EAAE,CAAC;QACnD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,OAA2B,CAAC;QAChC,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAEvC,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,IAAI,YAAY,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBACrC,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;YACzC,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;YACpC,YAAY,IAAI,CAAC,CAAC;YAClB,IAAI,YAAY,IAAI,EAAE,IAAI,YAAY,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC/D,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;gBAClC,YAAY,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,QAAQ,EAAE,EAAE,CAAC;QACf,CAAC,CAAC;QAEF,yIAAyI;QACzI,MAAM,IAAI,GAAG,CAAC,GAA4E,EAAE,EAAE;YAC5F,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YAED,IAAI,iBAAiB,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,IAAI,iBAAiB,EAAE,CAAC;gBACrF,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAC/B,gDAAgD,iBAAiB,GAAG,CACrE,CAAC;gBACF,IAAI,GAAG,IAAI,CAAC;gBACZ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACjB,SAAS,GAAG,CAAC,CAAC;gBACd,OAAO,EAAE,CAAC;gBACV,cAAc,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,YAAY,EAAE,CAAC;QACjB,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,KAAmB,EAAE,EAAE;YACtC,iDAAiD;YACjD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,OAAO;YACT,CAAC;YACD,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,CAAC,IAAsB,EAAE,EAAE;YACvC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEF,oEAAoE;QACpE,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE;YACrC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG,CAAC,GAAmC,EAAE,EAAE;YAC7D,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,OAAO,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;gBACzC,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;gBACpC,YAAY,IAAI,CAAC,CAAC;gBAClB,QAAQ,EAAE,EAAE,CAAC;YACf,CAAC;YACD,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YACrB,YAAY,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,MAAqC,EAAE,EAAE;YACtF,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,IAAI,GAAG,IAAI,CAAC;YACZ,cAAc,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,UAAmB,EAAE,SAAkB,EAAE,EAAE;YAC/D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7B,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;YACxD,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YACrD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC,CAAC;QAEF,+CAA+C;QAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QAEtD,wFAAwF;QACxF,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,qEAAqE;YACrE,qEAAqE;YACrE,6DAA6D;YAC7D,IAAI,CAAC;gBACH,IAAI,EAAE,cAAc;gBACpB,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE;aACzF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtC,KAAK,uBAAU,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC3B,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC7B,MAAM;gBACR,CAAC;gBACD,KAAK,uBAAU,CAAC,IAAI,CAAC,CAAC,CAAC;oBACrB,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;oBACvB,MAAM;gBACR,CAAC;gBACD,KAAK,uBAAU,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC1B,MAAM;gBACR,CAAC;gBACD,KAAK,uBAAU,CAAC,MAAM,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC;wBACH,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,IAAI,CAAC,cAAc;wBACzB,MAAM,EAAE,IAAI,CAAC,gBAAgB;wBAC7B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;qBAChC,CAAC,CAAC;oBACH,IAAI,GAAG,IAAI,CAAC;oBACZ,OAAO,EAAE,CAAC;oBACV,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,CACjB,GAES,EACT,MAA+B,EAC/B,EAAE;YACF,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,OAAO,CAAC,CAAC;YAClB,CAAC;iBAAM,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpC,sJAAsJ;gBACtJ,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAE,CAAC;gBACjC,KAAK,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;gBAC7B,SAAS,IAAI,CAAC,CAAC;gBACf,IAAI,SAAS,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACrD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;oBAC3B,SAAS,GAAG,CAAC,CAAC;gBAChB,CAAC;gBACD,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,IAAI,EAAE,CAAC;gBAChB,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,GAEX,EAAE;QACF,yHAAyH;QACzH,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9B,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;gBAClB,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEL,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,GAA6C,EAAE;gBACrD,IAAI,GAAG,IAAI,CAAC;gBACZ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACjB,SAAS,GAAG,CAAC,CAAC;gBACd,OAAO,EAAE,CAAC;gBACV,cAAc,EAAE,CAAC;gBACjB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,CAAC,MAAM,CAAC,aAAa,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAsC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EAC5E,MAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QAEjC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QAEtB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE7C,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEhF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACzC,iEAAiE;YACjE,oEAAoE;YACpE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACrB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;YAClD,iEAAiE;YACjE,wDAAwD;YACxD,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,OAAO;YACT,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACjC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6DAA6D;IAC7D,oDAAoD;IAC5C,aAAa,CAAC,IAAY;QAChC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAA,uBAAkB,EAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEO,eAAe,CAAC,SAAiB;QACvC,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,2DAA2D,SAAS,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACvD,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CACpE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mBAAmB,CACzB,OAA+C,EAC/C,YAA4C;QAE5C,IAAI,iBAAiB,GAAG,YAAY,CAAC;QACrC,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QACnC,IAAI,SAA+E,CAAC;QACpF,IAAI,CAAC;YACH,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,SAAS,IAAI,OAAO,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACzD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;YACpE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,SAAS,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;YAC9C,iBAAiB,GAAG,EAAE,GAAG,iBAAiB,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACnF,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,gBAAwB;QAC/C,IAAI,SAAS,GAAG,gBAAgB,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,mBAAW,CAAC,wEAAwE,CAAC,CAAC;QAClG,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,IAAI,GAAG,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,IAAI,IAAI,CAAC;QAEzD,sHAAsH;QACtH,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YAC1D,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACxE,mFAAmF;YACnF,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;YAEnD,MAAM,iBAAiB,GAAmC;gBACxD,OAAO;gBACP,WAAW,EAAE,UAAU;gBACvB,KAAK,EAAE,WAAW;gBAClB,SAAS;gBACT,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;aAC/E,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,CAAC;gBACzE,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,OAAO;YACT,CAAC;YAED,MAAM,IAAA,aAAK,EAAC,WAAW,CAAC,CAAC;YAEzB,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,OAAO;YACT,CAAC;YAED,IAAI,gBAA6C,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBACrC,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACnC,2HAA2H;oBAC3H,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,EAAE;wBAClD,wHAAwH;wBACxH,IAAI,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;oBACH,IAAI,YAAiD,CAAC;oBACtD,IAAI,CAAC;wBACH,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;oBACtF,CAAC;4BAAS,CAAC;wBACT,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;oBAClC,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;wBACnC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;wBAC7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;wBAC7D,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtC,CAAC;gBACD,2DAA2D;gBAC3D,2DAA2D;gBAC3D,qDAAqD;gBACrD,6HAA6H;gBAC7H,gBAAgB,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;oBACjD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;gBAEH,MAAM,IAAA,oCAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAE/C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACxE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gBAC9B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBACpE,mEAAmE;oBACnE,iEAAiE;oBACjE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;wBACzB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;wBAC7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC/D,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,IAAI,gBAAgB,EAAE,CAAC;oBACrB,wDAAwD;oBACxD,wCAAwC;oBACxC,SAAS,GAAG,MAAM,gBAAgB,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,4DAA4D;QAC5D,gDAAgD;QAChD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,oCAAoC,UAAU,0BAA0B,SAAS,GAAG,CAAC,CAAC;QAC1G,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,0BAA0B,UAAU,WAAW,CAAC,CAAC;IACvF,CAAC;IAEO,eAAe;QACrB,IAAA,uCAAuB,EACrB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EACvD,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CACnG,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,IAAY,EAAE,MAAc;QACtD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACvC,oEAAoE;QACpE,sDAAsD;QACtD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;CACF;AAviBD,kDAuiBC"}