@outfoxx/sunday 2.0.0-beta.2 → 2.0.0-beta.21

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 (141) hide show
  1. package/README.md +346 -4
  2. package/build/authentication-adapter.d.ts +21 -0
  3. package/build/authentication-adapter.js +74 -0
  4. package/build/authentication-adapter.js.map +1 -0
  5. package/build/bearer-token-rejection-adapter.d.ts +6 -0
  6. package/build/bearer-token-rejection-adapter.js +25 -0
  7. package/build/bearer-token-rejection-adapter.js.map +1 -0
  8. package/build/client-settings.d.ts +22 -0
  9. package/build/client-settings.js +180 -0
  10. package/build/client-settings.js.map +1 -0
  11. package/build/credentials.d.ts +58 -0
  12. package/build/credentials.js +51 -0
  13. package/build/credentials.js.map +1 -0
  14. package/build/event-parser.d.ts +23 -8
  15. package/build/event-parser.js +93 -121
  16. package/build/event-parser.js.map +1 -1
  17. package/build/fetch-copy.d.ts +15 -0
  18. package/build/fetch-copy.js +71 -0
  19. package/build/fetch-copy.js.map +1 -0
  20. package/build/fetch-event-source.d.ts +18 -8
  21. package/build/fetch-event-source.js +241 -144
  22. package/build/fetch-event-source.js.map +1 -1
  23. package/build/fetch-oauth-token-provider.d.ts +28 -0
  24. package/build/fetch-oauth-token-provider.js +213 -0
  25. package/build/fetch-oauth-token-provider.js.map +1 -0
  26. package/build/fetch-transport.d.ts +15 -1
  27. package/build/fetch-transport.js +142 -132
  28. package/build/fetch-transport.js.map +1 -1
  29. package/build/fetch.js +24 -10
  30. package/build/fetch.js.map +1 -1
  31. package/build/header-token-adapters.d.ts +28 -0
  32. package/build/header-token-adapters.js +121 -0
  33. package/build/header-token-adapters.js.map +1 -0
  34. package/build/index.d.ts +23 -1
  35. package/build/index.js +22 -1
  36. package/build/index.js.map +1 -1
  37. package/build/media-type-codecs/binary-decoder.d.ts +1 -0
  38. package/build/media-type-codecs/binary-decoder.js +4 -11
  39. package/build/media-type-codecs/binary-decoder.js.map +1 -1
  40. package/build/media-type-codecs/cbor-encoder.d.ts +2 -2
  41. package/build/media-type-codecs/cbor-encoder.js +2 -2
  42. package/build/media-type-codecs/cbor-encoder.js.map +1 -1
  43. package/build/media-type-codecs/json-encoder.d.ts +3 -3
  44. package/build/media-type-codecs/json-encoder.js +4 -4
  45. package/build/media-type-codecs/json-encoder.js.map +1 -1
  46. package/build/media-type-codecs/media-type-encoder.d.ts +3 -3
  47. package/build/media-type-codecs/media-type-encoder.js.map +1 -1
  48. package/build/media-type-codecs/www-form-url-encoder.d.ts +2 -2
  49. package/build/media-type-codecs/www-form-url-encoder.js +2 -2
  50. package/build/media-type-codecs/www-form-url-encoder.js.map +1 -1
  51. package/build/model-construction.d.ts +5 -0
  52. package/build/model-construction.js +40 -0
  53. package/build/model-construction.js.map +1 -0
  54. package/build/model-schema.d.ts +9 -0
  55. package/build/model-schema.js +131 -0
  56. package/build/model-schema.js.map +1 -0
  57. package/build/oauth-wire.d.ts +33 -0
  58. package/build/oauth-wire.js +143 -0
  59. package/build/oauth-wire.js.map +1 -0
  60. package/build/operation.d.ts +3 -1
  61. package/build/problem.d.ts +39 -16
  62. package/build/problem.js +88 -32
  63. package/build/problem.js.map +1 -1
  64. package/build/request-adapter.d.ts +8 -0
  65. package/build/request-adapter.js +15 -0
  66. package/build/request-adapter.js.map +1 -0
  67. package/build/request-adapters-compat.d.ts +6 -0
  68. package/build/request-adapters-compat.js +19 -0
  69. package/build/request-adapters-compat.js.map +1 -0
  70. package/build/request-adapters.d.ts +13 -23
  71. package/build/request-adapters.js +40 -31
  72. package/build/request-adapters.js.map +1 -1
  73. package/build/request-body.d.ts +24 -0
  74. package/build/request-body.js +104 -0
  75. package/build/request-body.js.map +1 -0
  76. package/build/request-cancellation-error.d.ts +13 -0
  77. package/build/request-cancellation-error.js +43 -0
  78. package/build/request-cancellation-error.js.map +1 -0
  79. package/build/request-context.d.ts +4 -0
  80. package/build/request-context.js +29 -0
  81. package/build/request-context.js.map +1 -0
  82. package/build/request-execution.d.ts +13 -0
  83. package/build/request-execution.js +80 -0
  84. package/build/request-execution.js.map +1 -0
  85. package/build/request-security-bindings.d.ts +5 -0
  86. package/build/request-security-bindings.js +30 -0
  87. package/build/request-security-bindings.js.map +1 -0
  88. package/build/request-security.d.ts +20 -0
  89. package/build/request-security.js +223 -0
  90. package/build/request-security.js.map +1 -0
  91. package/build/request-validation-error.d.ts +4 -0
  92. package/build/request-validation-error.js +21 -0
  93. package/build/request-validation-error.js.map +1 -0
  94. package/build/response-adapter.d.ts +10 -0
  95. package/build/response-adapter.js +15 -0
  96. package/build/response-adapter.js.map +1 -0
  97. package/build/response-adapters.d.ts +13 -0
  98. package/build/response-adapters.js +75 -0
  99. package/build/response-adapters.js.map +1 -0
  100. package/build/schema-builtins.js +11 -21
  101. package/build/schema-builtins.js.map +1 -1
  102. package/build/schema-runtime.d.ts +8 -1
  103. package/build/schema-runtime.js +12 -3
  104. package/build/schema-runtime.js.map +1 -1
  105. package/build/security-binding.d.ts +22 -0
  106. package/build/security-binding.js +15 -0
  107. package/build/security-binding.js.map +1 -0
  108. package/build/standard-authentication-adapter.d.ts +18 -0
  109. package/build/standard-authentication-adapter.js +58 -0
  110. package/build/standard-authentication-adapter.js.map +1 -0
  111. package/build/token-manager.d.ts +42 -0
  112. package/build/token-manager.js +276 -0
  113. package/build/token-manager.js.map +1 -0
  114. package/build/token-provider.d.ts +52 -0
  115. package/build/token-provider.js +102 -0
  116. package/build/token-provider.js.map +1 -0
  117. package/build/transport.d.ts +10 -3
  118. package/build/unknown-variant.d.ts +12 -0
  119. package/build/unknown-variant.js +45 -0
  120. package/build/unknown-variant.js.map +1 -0
  121. package/build/url-template.d.ts +3 -0
  122. package/build/url-template.js +30 -2
  123. package/build/url-template.js.map +1 -1
  124. package/build/util/abort.d.ts +3 -0
  125. package/build/util/abort.js +42 -0
  126. package/build/util/abort.js.map +1 -0
  127. package/build/util/base64.d.ts +4 -0
  128. package/build/util/base64.js +46 -0
  129. package/build/util/base64.js.map +1 -0
  130. package/build/util/native-fetch.d.ts +2 -0
  131. package/build/util/native-fetch.js +39 -0
  132. package/build/util/native-fetch.js.map +1 -0
  133. package/build/util/nullify.js +12 -5
  134. package/build/util/nullify.js.map +1 -1
  135. package/build/util/owned-body.d.ts +12 -0
  136. package/build/util/owned-body.js +243 -0
  137. package/build/util/owned-body.js.map +1 -0
  138. package/build/util/status-title.d.ts +2 -0
  139. package/build/util/status-title.js +83 -0
  140. package/build/util/status-title.js.map +1 -0
  141. package/package.json +18 -6
@@ -11,16 +11,24 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- import { EventParser } from './event-parser.js';
14
+ import { nativeFetch } from './util/native-fetch.js';
15
+ import { copyRequest } from './fetch-copy.js';
16
+ import { isRequestStopped, requestFailure, } from './request-cancellation-error.js';
17
+ import { discardBody, withAbort } from './util/abort.js';
18
+ import { RequestValidationError } from './request-validation-error.js';
19
+ import { EventParser, parseEventMilliseconds, } from './event-parser.js';
15
20
  import { validate } from './fetch.js';
16
21
  import { levelLogger, LogLevel } from './logger.js';
17
22
  import { MediaType } from './media-type.js';
18
23
  import { unknownSet } from './util/unknowns.js';
19
24
  export class FetchEventSource extends EventTarget {
20
25
  static LAST_EVENT_ID_HEADER = 'Last-Event-ID';
21
- static MAX_RETRY_TIME_MULTIPLIER = 12;
22
- static RETRY_EXPONENT = 2.6;
23
- static EVENT_TIMEOUT_DEFAULT = 120 * 1000;
26
+ static RETRY_TIME_DEFAULT = 500;
27
+ // Longer delays overflow native timers into immediate callbacks.
28
+ static MAX_TIMER_DELAY = 0x7fffffff;
29
+ static RETRY_MAX_MULTIPLIER_DEFAULT = 30;
30
+ static KEEPALIVE_TIMEOUT_MULTIPLIER = 3;
31
+ static KEEPALIVE_TIMEOUT_MINIMUM = 1000;
24
32
  static EVENT_TIMEOUT_CHECK_INTERVAL_DEFAULT = 2 * 1000;
25
33
  CONNECTING = 0;
26
34
  OPEN = 1;
@@ -35,32 +43,34 @@ export class FetchEventSource extends EventTarget {
35
43
  return this.internalRetryTime;
36
44
  }
37
45
  adapter;
46
+ fetchRequest;
38
47
  signal;
39
48
  connectionAbortController;
40
49
  connectionReader;
41
50
  externalAbortSignal;
42
51
  externalAbortHandler;
43
- internalRetryTime = 100;
52
+ internalRetryTime = FetchEventSource.RETRY_TIME_DEFAULT;
53
+ internalRetryMax;
44
54
  retryAttempt = 0;
45
- connectionAttemptTime;
46
55
  connectionOrigin;
47
56
  reconnectTimeoutHandle;
48
57
  lastEventId;
49
58
  logger;
50
59
  eventTimeout;
60
+ eventTimeoutConfigured;
51
61
  eventTimeoutCheckInterval;
52
62
  eventTimeoutCheckHandle;
53
63
  lastEventReceivedTime = 0;
54
- eventParser = new EventParser();
55
64
  constructor(url, eventSourceInit) {
56
65
  super();
57
66
  this.url = url;
58
67
  this.adapter =
59
68
  eventSourceInit?.adapter ??
60
69
  ((_url, requestInit) => Promise.resolve(new Request(_url, requestInit)));
70
+ this.fetchRequest = eventSourceInit?.fetch ?? nativeFetch;
61
71
  this.signal = eventSourceInit?.signal;
62
- this.eventTimeout =
63
- eventSourceInit?.eventTimeout ?? FetchEventSource.EVENT_TIMEOUT_DEFAULT;
72
+ this.eventTimeout = eventSourceInit?.eventTimeout;
73
+ this.eventTimeoutConfigured = eventSourceInit?.eventTimeout !== undefined;
64
74
  this.eventTimeoutCheckInterval =
65
75
  eventSourceInit?.eventTimeoutCheckInterval ??
66
76
  FetchEventSource.EVENT_TIMEOUT_CHECK_INTERVAL_DEFAULT;
@@ -74,88 +84,127 @@ export class FetchEventSource extends EventTarget {
74
84
  this.logger?.trace?.('skipping connect', { state: this.readyState });
75
85
  return;
76
86
  }
87
+ if (this.signal?.aborted) {
88
+ this.logger?.trace?.('skipping connect with aborted signal');
89
+ return;
90
+ }
91
+ this.startExternalAbortListener();
77
92
  this.internalConnect();
78
93
  }
79
94
  internalConnect() {
80
95
  this.logger?.debug?.('connecting');
96
+ if (this.signal?.aborted)
97
+ return;
81
98
  this.readyState = this.CONNECTING;
82
- const headers = new Headers({
83
- accept: MediaType.EventStream.toString(),
84
- });
85
- if (this.lastEventId) {
86
- headers.append(FetchEventSource.LAST_EVENT_ID_HEADER, this.lastEventId);
87
- }
88
99
  this.abortConnection();
89
100
  const connectionAbortController = new AbortController();
90
101
  this.connectionAbortController = connectionAbortController;
91
- const externalSignal = this.signal;
92
- if (externalSignal instanceof AbortSignal) {
93
- this.externalAbortSignal = externalSignal;
94
- this.externalAbortHandler = () => {
95
- this.connectionAbortController?.abort();
96
- };
97
- externalSignal.addEventListener('abort', this.externalAbortHandler);
98
- }
99
- const requestInit = {
100
- headers,
101
- cache: 'no-store',
102
- redirect: 'follow',
103
- signal: connectionAbortController.signal,
104
- };
105
- this.connectionAttemptTime = Date.now();
106
- void this.adapter(this.url, requestInit)
107
- .then(async (request) => {
108
- const response = await fetch(request, {
109
- signal: connectionAbortController.signal,
102
+ const active = () => this.connectionAbortController === connectionAbortController &&
103
+ !connectionAbortController.signal.aborted;
104
+ const parser = new EventParser(this.receiveControls);
105
+ let signal = connectionAbortController.signal;
106
+ let reader;
107
+ void withAbort(() => {
108
+ // Header construction can throw too; keep all setup inside this connection's error boundary.
109
+ const headers = new Headers({
110
+ accept: MediaType.EventStream.toString(),
110
111
  });
111
- const validatedResponse = await validate(response, true, undefined, this.logger);
112
+ if (this.lastEventId) {
113
+ const bytes = new TextEncoder().encode(this.lastEventId);
114
+ headers.set(FetchEventSource.LAST_EVENT_ID_HEADER, Array.from(bytes, (byte) => String.fromCharCode(byte)).join(''));
115
+ }
116
+ return this.adapter(this.url, {
117
+ headers,
118
+ cache: 'no-store',
119
+ redirect: 'follow',
120
+ signal,
121
+ });
122
+ }, signal, discardBody)
123
+ .then(async (request) => {
124
+ signal = AbortSignal.any([signal, request.signal]);
125
+ request = copyRequest(request, { signal });
126
+ const response = await withAbort(() => this.fetchRequest(request, signal, (effective) => {
127
+ signal = effective;
128
+ }), signal, discardBody);
129
+ let validatedResponse;
130
+ try {
131
+ validatedResponse = await withAbort(() => validate(response, true, undefined, this.logger), signal);
132
+ }
133
+ catch (error) {
134
+ const failure = requestFailure(error, signal);
135
+ discardBody(response, failure);
136
+ if (active())
137
+ this.receivedFatalError(failure);
138
+ return;
139
+ }
140
+ if (!active()) {
141
+ discardBody(validatedResponse, signal.reason);
142
+ return;
143
+ }
112
144
  this.receivedHeaders(validatedResponse);
113
- const body = validatedResponse.body;
114
- if (!body) {
145
+ if (!active()) {
146
+ discardBody(validatedResponse, signal.reason);
147
+ return;
148
+ }
149
+ if (!validatedResponse.body) {
115
150
  this.receivedComplete();
116
151
  return;
117
152
  }
118
- const reader = body.getReader();
153
+ reader = validatedResponse.body.getReader();
119
154
  this.connectionReader = reader;
120
- while (true) {
121
- const result = await reader.read();
122
- if (result.done) {
155
+ while (active()) {
156
+ const result = await withAbort(() => reader.read(), signal);
157
+ if (!active())
158
+ return;
159
+ if (result.done)
123
160
  break;
124
- }
125
- this.receivedData(result.value);
161
+ this.logger?.debug?.('received data', {
162
+ length: result.value.byteLength,
163
+ });
164
+ if (result.value.byteLength)
165
+ this.updateLastEventReceived();
166
+ parser.process(result.value, this.dispatchParsedEvent, signal);
126
167
  }
127
- this.receivedComplete();
168
+ if (active())
169
+ this.receivedComplete();
128
170
  })
129
171
  .catch((error) => {
130
- this.receivedError(error);
172
+ // A closed/replaced connection must never schedule a reconnect or close its successor.
173
+ if (!active())
174
+ return;
175
+ const failure = requestFailure(error, signal);
176
+ if (signal.aborted ||
177
+ isRequestStopped(failure) ||
178
+ failure instanceof RequestValidationError) {
179
+ this.receivedFatalError(failure);
180
+ }
181
+ else {
182
+ this.receivedError(failure);
183
+ }
131
184
  })
132
185
  .finally(() => {
133
- if (this.connectionReader) {
134
- try {
135
- this.connectionReader.releaseLock();
136
- }
137
- catch {
138
- // ignore
139
- }
140
- }
141
- this.connectionReader = undefined;
186
+ reader?.releaseLock();
187
+ if (this.connectionReader === reader)
188
+ this.connectionReader = undefined;
142
189
  });
143
190
  }
144
191
  //
145
192
  // Close
146
193
  //
147
- close() {
194
+ /** Stops the subscription, forwarding an optional failure to the request and body producer. */
195
+ close(reason = this.signal?.reason) {
148
196
  if (this.readyState === this.CLOSED) {
149
197
  return;
150
198
  }
151
199
  this.logger?.debug?.('closing');
152
200
  this.readyState = this.CLOSED;
153
- this.internalClose();
201
+ this.stopExternalAbortListener();
202
+ this.internalClose(reason);
154
203
  }
155
- internalClose() {
156
- this.abortConnection();
204
+ internalClose(reason) {
157
205
  this.clearReconnect();
158
206
  this.stopEventTimeoutCheck();
207
+ this.abortConnection(reason);
159
208
  }
160
209
  //
161
210
  // Event Timeout
@@ -170,7 +219,7 @@ export class FetchEventSource extends EventTarget {
170
219
  }
171
220
  this.updateLastEventReceived(lastEventReceivedTime);
172
221
  this.logger?.trace?.('starting event timeout checks');
173
- this.eventTimeoutCheckHandle = setInterval(() => this.checkEventTimeout(), this.eventTimeoutCheckInterval);
222
+ this.eventTimeoutCheckHandle = setInterval(() => this.checkEventTimeout(), Math.min(this.eventTimeoutCheckInterval, this.eventTimeout, FetchEventSource.MAX_TIMER_DELAY));
174
223
  }
175
224
  stopEventTimeoutCheck() {
176
225
  if (this.eventTimeoutCheckHandle) {
@@ -191,8 +240,7 @@ export class FetchEventSource extends EventTarget {
191
240
  this.logger?.debug?.('event timeout reached', {
192
241
  elapsed,
193
242
  });
194
- this.fireErrorEvent(new Error('EventTimeout'));
195
- this.scheduleReconnect();
243
+ this.receivedError(new Error('EventTimeout'));
196
244
  }
197
245
  }
198
246
  //
@@ -203,86 +251,86 @@ export class FetchEventSource extends EventTarget {
203
251
  this.logger?.error?.('invalid readyState for receivedHeaders', {
204
252
  readyState: this.readyState,
205
253
  });
206
- this.fireErrorEvent(new Error('InvalidState'));
207
- this.scheduleReconnect();
254
+ this.receivedError(new Error('InvalidState'));
208
255
  return;
209
256
  }
210
257
  this.logger?.info?.('opened');
211
258
  this.connectionOrigin = response.url;
212
259
  this.retryAttempt = 0;
213
260
  this.readyState = this.OPEN;
261
+ if (!this.eventTimeoutConfigured) {
262
+ this.eventTimeout = undefined;
263
+ }
214
264
  // Start event timeout check, treating this connection
215
265
  // as the last time we received an event
216
266
  this.startEventTimeoutCheck(Date.now());
217
267
  const event = new Event('open');
218
- this.onopen?.(event);
219
- this.dispatchEvent(event);
220
- }
221
- receivedData(buffer) {
222
- if (this.readyState !== this.OPEN) {
223
- this.logger?.error?.('invalid readyState for receiveData', {
224
- readyState: this.readyState,
225
- });
226
- this.fireErrorEvent(new Error('InvalidState'));
227
- this.scheduleReconnect();
228
- return;
229
- }
230
- if (!buffer) {
231
- return;
232
- }
233
- const slicedBuffer = buffer instanceof ArrayBuffer
234
- ? buffer
235
- : buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
236
- const arrayBuffer = slicedBuffer instanceof ArrayBuffer
237
- ? slicedBuffer
238
- : Uint8Array.from(new Uint8Array(slicedBuffer)).buffer;
239
- this.logger?.debug?.('received data', { length: arrayBuffer.byteLength });
240
- this.eventParser.process(arrayBuffer, this.dispatchParsedEvent);
268
+ this.notify(event, this.onopen);
241
269
  }
242
270
  receivedError(error) {
243
271
  if (this.readyState === this.CLOSED) {
244
272
  return;
245
273
  }
246
274
  this.logger?.debug?.('received error', { error });
275
+ const connection = this.connectionAbortController;
247
276
  this.fireErrorEvent(error);
248
- if (this.readyState !== this.CLOSED) {
249
- this.scheduleReconnect();
277
+ this.scheduleReconnect(connection, error);
278
+ }
279
+ receivedFatalError(error) {
280
+ if (this.readyState === this.CLOSED) {
281
+ return;
250
282
  }
283
+ this.logger?.debug?.('received fatal error', { error });
284
+ this.readyState = this.CLOSED;
285
+ this.stopExternalAbortListener();
286
+ this.internalClose(error);
287
+ this.fireErrorEvent(error);
251
288
  }
252
289
  receivedComplete() {
253
290
  if (this.readyState == this.CLOSED) {
254
291
  return;
255
292
  }
256
293
  this.logger?.debug?.('received complete');
257
- this.scheduleReconnect();
294
+ this.scheduleReconnect(this.connectionAbortController);
258
295
  }
259
296
  //
260
297
  // Reconnection
261
298
  //
262
- scheduleReconnect() {
263
- this.internalClose();
264
- const lastConnectionTime = this.connectionAttemptTime
265
- ? Date.now() - this.connectionAttemptTime
266
- : 0;
267
- const retryDelay = FetchEventSource.calculateRetryTime(this.retryAttempt, this.retryTime, lastConnectionTime);
268
- this.retryAttempt++;
299
+ scheduleReconnect(connection, reason) {
300
+ // A notification can synchronously close, abort, or replace the connection.
301
+ if (!connection ||
302
+ connection !== this.connectionAbortController ||
303
+ connection.signal.aborted ||
304
+ this.signal?.aborted ||
305
+ this.readyState === this.CLOSED)
306
+ return;
269
307
  this.readyState = this.CONNECTING;
308
+ this.internalClose(reason);
309
+ // Cancellation handlers can also start a successor; never overwrite its state or timers.
310
+ if (this.connectionAbortController ||
311
+ this.readyState !== this.CONNECTING ||
312
+ this.signal?.aborted)
313
+ return;
314
+ const retryDelay = FetchEventSource.calculateRetryTime(this.retryAttempt, this.retryTime, Math.max(this.retryTime, this.internalRetryMax ??
315
+ this.retryTime * FetchEventSource.RETRY_MAX_MULTIPLIER_DEFAULT));
316
+ this.retryAttempt++;
270
317
  this.logger?.debug?.('scheduling reconnect', { retryDelay });
271
- this.reconnectTimeoutHandle = setTimeout(() => this.internalConnect(), retryDelay);
318
+ const timer = setTimeout(() => {
319
+ if (this.reconnectTimeoutHandle !== timer)
320
+ return;
321
+ this.reconnectTimeoutHandle = undefined;
322
+ if (this.readyState === this.CONNECTING && !this.signal?.aborted)
323
+ this.internalConnect();
324
+ }, retryDelay);
325
+ this.reconnectTimeoutHandle = timer;
272
326
  }
273
- static calculateRetryTime(retryAttempt, retryTime, lastConnectTime) {
274
- const retryMultiplier = Math.min(retryAttempt, this.MAX_RETRY_TIME_MULTIPLIER);
275
- // calculate total delay
276
- let retryDelay = Math.pow(retryMultiplier, this.RETRY_EXPONENT) * retryTime;
277
- // Adjust delay by the amount of time the last connection
278
- // cycle took, except on the first attempt
279
- if (retryAttempt > 0) {
280
- retryDelay -= lastConnectTime;
281
- // Ensure the delay is at least as large as
282
- // the minimum retry time interval
283
- retryDelay = Math.max(retryDelay, retryTime);
327
+ static calculateRetryTime(retryAttempt, retryTime, retryMax) {
328
+ if (retryAttempt === 0 || retryTime === 0) {
329
+ return Math.min(retryTime, FetchEventSource.MAX_TIMER_DELAY);
284
330
  }
285
- return retryDelay;
331
+ const cappedDelay = Math.min(retryTime * Math.pow(2, retryAttempt), retryMax, FetchEventSource.MAX_TIMER_DELAY);
332
+ const randomValue = crypto.getRandomValues(new Uint32Array(1))[0] / 0x100000000;
333
+ return cappedDelay * (0.9 + randomValue * 0.1);
286
334
  }
287
335
  clearReconnect() {
288
336
  if (this.reconnectTimeoutHandle) {
@@ -293,68 +341,117 @@ export class FetchEventSource extends EventTarget {
293
341
  //
294
342
  // Event Dispatch
295
343
  //
296
- dispatchParsedEvent = (eventInfo) => {
297
- this.updateLastEventReceived();
298
- if (eventInfo.retry) {
299
- const retryTime = Number.parseInt(eventInfo.retry, 10);
300
- if (Number.isSafeInteger(retryTime)) {
301
- this.logger?.debug?.('updating retry timeout', { retryTime });
302
- this.internalRetryTime = retryTime;
344
+ receiveControls = (eventInfo) => {
345
+ if (eventInfo.retry !== undefined) {
346
+ this.internalRetryTime = Number(eventInfo.retry);
347
+ this.logger?.debug?.('updating retry timeout', {
348
+ retryTime: this.internalRetryTime,
349
+ });
350
+ }
351
+ if (eventInfo['retry-max'] != null) {
352
+ const retryMax = parseEventMilliseconds(eventInfo['retry-max']);
353
+ if (retryMax != null && retryMax > 0) {
354
+ this.logger?.debug?.('updating maximum retry timeout', { retryMax });
355
+ this.internalRetryMax = retryMax;
303
356
  }
304
357
  else {
305
- this.logger?.warn?.('ignoring invalid retry timeout event', {
358
+ this.logger?.warn?.('ignoring invalid maximum retry timeout event', {
306
359
  eventInfo,
307
360
  });
308
361
  }
309
362
  }
310
- // skip empty events
311
- if (eventInfo.id == null &&
312
- eventInfo.event == null &&
313
- eventInfo.data == null) {
314
- // skip empty events
315
- this.logger?.trace?.('skipping empty event');
316
- return;
317
- }
318
- // Save last-event-id if the new id is valid
319
- if (eventInfo.id != null) {
320
- // Check for NULL as it is not allowed
321
- if (!eventInfo.id.includes('\0')) {
322
- this.lastEventId = eventInfo.id;
363
+ if (eventInfo.keepalive != null) {
364
+ const keepalive = parseEventMilliseconds(eventInfo.keepalive);
365
+ const keepaliveTimeout = keepalive == null || keepalive === 0
366
+ ? undefined
367
+ : Math.max(keepalive * FetchEventSource.KEEPALIVE_TIMEOUT_MULTIPLIER, FetchEventSource.KEEPALIVE_TIMEOUT_MINIMUM);
368
+ if (keepaliveTimeout != null && Number.isSafeInteger(keepaliveTimeout)) {
369
+ this.logger?.debug?.('updating keepalive timeout', {
370
+ keepalive,
371
+ eventTimeout: keepaliveTimeout,
372
+ });
373
+ if (!this.eventTimeoutConfigured) {
374
+ this.eventTimeout = keepaliveTimeout;
375
+ this.startEventTimeoutCheck(this.lastEventReceivedTime);
376
+ }
323
377
  }
324
378
  else {
325
- this.logger?.warn?.('event id contains NULL byte, unable to use for last-event-id');
379
+ this.logger?.warn?.('ignoring invalid keepalive event', { eventInfo });
326
380
  }
327
381
  }
382
+ };
383
+ dispatchParsedEvent = (eventInfo) => {
384
+ if (eventInfo.id !== undefined)
385
+ this.lastEventId = eventInfo.id;
386
+ // ID-only frames update the reconnect cursor without emitting application events.
387
+ if (eventInfo.data == null)
388
+ return;
328
389
  // Dispatch event
329
- const event = new MessageEvent(eventInfo.event ?? 'message', {
390
+ const event = new MessageEvent(eventInfo.event || 'message', {
330
391
  data: eventInfo.data,
331
392
  lastEventId: this.lastEventId,
332
393
  origin: this.connectionOrigin,
333
394
  });
334
- this.onmessage?.(event);
335
- this.dispatchEvent(event);
395
+ this.notify(event, this.onmessage);
336
396
  };
337
397
  fireErrorEvent(error) {
338
398
  const event = new Event('error');
339
399
  unknownSet(event, 'error', error);
340
- this.onerror?.(event);
400
+ this.notify(event, this.onerror);
341
401
  }
342
- abortConnection() {
343
- if (this.connectionAbortController) {
344
- this.connectionAbortController.abort();
402
+ notify(event, handler) {
403
+ if (!handler) {
404
+ this.dispatchEvent(event);
405
+ return;
406
+ }
407
+ // Properties receive named SSE messages too. Run them through native dispatch so observer
408
+ // exceptions are reported by the runtime, never mistaken for a failed request or read.
409
+ const listener = (received) => {
410
+ // A registered listener can synchronously dispatch another event of the same type.
411
+ if (received !== event)
412
+ return;
413
+ return handler.call(this, event);
414
+ };
415
+ super.addEventListener(event.type, listener);
416
+ try {
417
+ this.dispatchEvent(event);
418
+ }
419
+ finally {
420
+ // stopImmediatePropagation can prevent the property listener from running.
421
+ super.removeEventListener(event.type, listener);
345
422
  }
423
+ }
424
+ abortConnection(reason) {
425
+ const controller = this.connectionAbortController;
426
+ const reader = this.connectionReader;
346
427
  this.connectionAbortController = undefined;
347
- if (this.connectionReader) {
348
- void this.connectionReader.cancel()
349
- .catch(() => this.logger?.warn?.('failed to cancel connection reader'));
428
+ this.connectionReader = undefined;
429
+ controller?.abort(reason);
430
+ if (reader) {
431
+ void reader
432
+ .cancel(reason)
433
+ .catch((error) => this.logger?.warn?.('failed to cancel connection reader', { error }));
350
434
  try {
351
- this.connectionReader.releaseLock();
435
+ reader.releaseLock();
352
436
  }
353
437
  catch {
354
- // ignore
438
+ // A native reader may refuse lock release while cancellation is pending.
355
439
  }
356
440
  }
357
- this.connectionReader = undefined;
441
+ }
442
+ startExternalAbortListener() {
443
+ const externalSignal = this.signal;
444
+ if (!(externalSignal instanceof AbortSignal)) {
445
+ return;
446
+ }
447
+ this.stopExternalAbortListener();
448
+ this.externalAbortSignal = externalSignal;
449
+ this.externalAbortHandler = () => this.close();
450
+ externalSignal.addEventListener('abort', this.externalAbortHandler, {
451
+ once: true,
452
+ });
453
+ }
454
+ stopExternalAbortListener() {
358
455
  if (this.externalAbortSignal && this.externalAbortHandler) {
359
456
  this.externalAbortSignal.removeEventListener('abort', this.externalAbortHandler);
360
457
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-event-source.js","sourceRoot":"","sources":["../src/fetch-event-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-event-source.js","sourceRoot":"","sources":["../src/fetch-event-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { SecurityBinding } from './security-binding.js';
2
+ import { TokenConfiguration, TokenProvider, TokenRequest, TokenSet } from './token-provider.js';
3
+ import { OAuthCredentialOptions } from './credentials.js';
4
+ export type { AuthorizationGrant } from './credentials.js';
5
+ /** Fetch-specific OAuth exchange options. */
6
+ export interface OAuthProviderOptions extends OAuthCredentialOptions {
7
+ readonly fetch?: typeof fetch;
8
+ readonly now?: () => number;
9
+ }
10
+ /** Client-credentials, application-authorized PKCE, and refresh exchange without cookies or automatic redirects. */
11
+ export declare class FetchOAuthTokenProvider implements TokenProvider {
12
+ readonly identity: string;
13
+ private readonly options;
14
+ private readonly authentication;
15
+ private readonly consumedCodes;
16
+ private readonly fetch;
17
+ private readonly now;
18
+ constructor(options: OAuthProviderOptions);
19
+ /** Selects the application client and fresh session without changing the generated profile. */
20
+ configure(_binding: SecurityBinding): TokenConfiguration;
21
+ /** Acquires a client token or exchanges one application-authorized PKCE grant. */
22
+ acquire(request: TokenRequest, signal: AbortSignal): Promise<TokenSet>;
23
+ /** Rotates refresh credentials without using an authorization code again. */
24
+ refresh(request: TokenRequest, refreshToken: string, signal: AbortSignal): Promise<TokenSet>;
25
+ private resolveEndpoints;
26
+ private fetchResponse;
27
+ private exchange;
28
+ }