@relative-ci/core 6.0.0 → 6.0.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/__/content-type/dist/index.js +155 -71
- package/lib/cjs/__/content-type/dist/index.js.map +1 -1
- package/lib/cjs/__/undici/lib/core/request.js +68 -2
- package/lib/cjs/__/undici/lib/core/request.js.map +1 -1
- package/lib/cjs/__/undici/lib/dispatcher/agent.js +6 -2
- package/lib/cjs/__/undici/lib/dispatcher/agent.js.map +1 -1
- package/lib/cjs/__/undici/lib/dispatcher/client-h1.js +18 -9
- package/lib/cjs/__/undici/lib/dispatcher/client-h1.js.map +1 -1
- package/lib/cjs/__/undici/lib/dispatcher/client-h2.js +73 -23
- package/lib/cjs/__/undici/lib/dispatcher/client-h2.js.map +1 -1
- package/lib/cjs/__/undici/lib/dispatcher/client.js +3 -2
- package/lib/cjs/__/undici/lib/dispatcher/client.js.map +1 -1
- package/lib/cjs/__/undici/lib/dispatcher/dispatcher-base.js +14 -0
- package/lib/cjs/__/undici/lib/dispatcher/dispatcher-base.js.map +1 -1
- package/lib/cjs/__/undici/lib/handler/retry-handler.js +4 -1
- package/lib/cjs/__/undici/lib/handler/retry-handler.js.map +1 -1
- package/lib/cjs/__/undici/lib/web/eventsource/eventsource-stream.js +93 -10
- package/lib/cjs/__/undici/lib/web/eventsource/eventsource-stream.js.map +1 -1
- package/lib/cjs/__/undici/lib/web/eventsource/eventsource.js +5 -1
- package/lib/cjs/__/undici/lib/web/eventsource/eventsource.js.map +1 -1
- package/lib/cjs/__/undici/lib/web/fetch/index.js +7 -9
- package/lib/cjs/__/undici/lib/web/fetch/index.js.map +1 -1
- package/lib/cjs/__/undici/lib/web/websocket/receiver.js +14 -0
- package/lib/cjs/__/undici/lib/web/websocket/receiver.js.map +1 -1
- package/lib/cjs/env/load.js +1 -1
- package/lib/cjs/env/load.js.map +1 -1
- package/lib/esm/__/content-type/dist/index.js +155 -71
- package/lib/esm/__/content-type/dist/index.js.map +1 -1
- package/lib/esm/__/undici/lib/core/request.js +68 -2
- package/lib/esm/__/undici/lib/core/request.js.map +1 -1
- package/lib/esm/__/undici/lib/dispatcher/agent.js +6 -2
- package/lib/esm/__/undici/lib/dispatcher/agent.js.map +1 -1
- package/lib/esm/__/undici/lib/dispatcher/client-h1.js +18 -9
- package/lib/esm/__/undici/lib/dispatcher/client-h1.js.map +1 -1
- package/lib/esm/__/undici/lib/dispatcher/client-h2.js +72 -23
- package/lib/esm/__/undici/lib/dispatcher/client-h2.js.map +1 -1
- package/lib/esm/__/undici/lib/dispatcher/client.js +3 -2
- package/lib/esm/__/undici/lib/dispatcher/client.js.map +1 -1
- package/lib/esm/__/undici/lib/dispatcher/dispatcher-base.js +10 -0
- package/lib/esm/__/undici/lib/dispatcher/dispatcher-base.js.map +1 -1
- package/lib/esm/__/undici/lib/handler/retry-handler.js +4 -1
- package/lib/esm/__/undici/lib/handler/retry-handler.js.map +1 -1
- package/lib/esm/__/undici/lib/web/eventsource/eventsource-stream.js +92 -10
- package/lib/esm/__/undici/lib/web/eventsource/eventsource-stream.js.map +1 -1
- package/lib/esm/__/undici/lib/web/eventsource/eventsource.js +5 -1
- package/lib/esm/__/undici/lib/web/eventsource/eventsource.js.map +1 -1
- package/lib/esm/__/undici/lib/web/fetch/index.js +7 -9
- package/lib/esm/__/undici/lib/web/fetch/index.js.map +1 -1
- package/lib/esm/__/undici/lib/web/websocket/receiver.js +14 -0
- package/lib/esm/__/undici/lib/web/websocket/receiver.js.map +1 -1
- package/lib/esm/env/load.js +1 -1
- package/lib/esm/env/load.js.map +1 -1
- package/lib/esm/index.js +2 -2
- package/package.json +10 -10
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import require$$0$1 from 'node:buffer';
|
|
1
2
|
import require$$0 from 'node:stream';
|
|
2
3
|
import { __require as requireUtil } from './util.js';
|
|
3
4
|
|
|
@@ -7,6 +8,7 @@ var hasRequiredEventsourceStream;
|
|
|
7
8
|
function requireEventsourceStream () {
|
|
8
9
|
if (hasRequiredEventsourceStream) return eventsourceStream;
|
|
9
10
|
hasRequiredEventsourceStream = 1;
|
|
11
|
+
const buffer = require$$0$1;
|
|
10
12
|
const { Transform } = require$$0;
|
|
11
13
|
const { isASCIINumber, isValidLastEventId } = requireUtil();
|
|
12
14
|
|
|
@@ -31,11 +33,19 @@ function requireEventsourceStream () {
|
|
|
31
33
|
*/
|
|
32
34
|
const SPACE = 0x20;
|
|
33
35
|
|
|
36
|
+
const defaultMaxEventSize = buffer.kStringMaxLength;
|
|
37
|
+
|
|
34
38
|
const DATA = Buffer.from('data');
|
|
35
39
|
const EVENT = Buffer.from('event');
|
|
36
40
|
const ID = Buffer.from('id');
|
|
37
41
|
const RETRY = Buffer.from('retry');
|
|
38
42
|
|
|
43
|
+
// Each data field creates a string node, and each unconsumed input chunk keeps
|
|
44
|
+
// a Buffer wrapper. The absolute ceiling protects the large default byte limit.
|
|
45
|
+
const minParserItems = 1024;
|
|
46
|
+
const maxParserItems = 131072;
|
|
47
|
+
const bytesPerParserItem = 128;
|
|
48
|
+
|
|
39
49
|
function isASCIINumberBytes (buffer, start) {
|
|
40
50
|
if (start >= buffer.length) {
|
|
41
51
|
return false
|
|
@@ -74,6 +84,12 @@ function requireEventsourceStream () {
|
|
|
74
84
|
return true
|
|
75
85
|
}
|
|
76
86
|
|
|
87
|
+
function createMaxEventSizeExceededError () {
|
|
88
|
+
const error = new Error('EventSource message size exceeded');
|
|
89
|
+
error.aborted = false;
|
|
90
|
+
return error
|
|
91
|
+
}
|
|
92
|
+
|
|
77
93
|
/**
|
|
78
94
|
* @typedef {object} EventSourceStreamEvent
|
|
79
95
|
* @type {object}
|
|
@@ -122,6 +138,13 @@ function requireEventsourceStream () {
|
|
|
122
138
|
pos = 0
|
|
123
139
|
lineChunkIndex = 0
|
|
124
140
|
linePos = 0
|
|
141
|
+
lineLength = 0
|
|
142
|
+
eventSize = 0
|
|
143
|
+
eventFieldSizes = { data: 0, event: 0, id: 0, retry: 0 }
|
|
144
|
+
dataLineCount = 0
|
|
145
|
+
maxEventSize
|
|
146
|
+
maxDataLines
|
|
147
|
+
maxBufferedChunks
|
|
125
148
|
|
|
126
149
|
event = {
|
|
127
150
|
data: undefined,
|
|
@@ -132,6 +155,7 @@ function requireEventsourceStream () {
|
|
|
132
155
|
|
|
133
156
|
/**
|
|
134
157
|
* @param {object} options
|
|
158
|
+
* @param {number} [options.maxEventSize]
|
|
135
159
|
* @param {eventSourceSettings} options.eventSourceSettings
|
|
136
160
|
* @param {Function} [options.push]
|
|
137
161
|
*/
|
|
@@ -143,6 +167,12 @@ function requireEventsourceStream () {
|
|
|
143
167
|
super(options);
|
|
144
168
|
|
|
145
169
|
this.state = options.eventSourceSettings || {};
|
|
170
|
+
this.maxEventSize = options.maxEventSize ?? defaultMaxEventSize;
|
|
171
|
+
const parserItemLimit = this.maxEventSize > 0
|
|
172
|
+
? Math.min(maxParserItems, Math.max(minParserItems, Math.floor(this.maxEventSize / bytesPerParserItem)))
|
|
173
|
+
: 0;
|
|
174
|
+
this.maxDataLines = parserItemLimit;
|
|
175
|
+
this.maxBufferedChunks = parserItemLimit;
|
|
146
176
|
if (options.push) {
|
|
147
177
|
this.push = options.push;
|
|
148
178
|
}
|
|
@@ -160,6 +190,14 @@ function requireEventsourceStream () {
|
|
|
160
190
|
return
|
|
161
191
|
}
|
|
162
192
|
|
|
193
|
+
// A leading line ending can immediately release the currently buffered
|
|
194
|
+
// line, even when it uses the final allowed chunk slot.
|
|
195
|
+
if (this.maxEventSize > 0 &&
|
|
196
|
+
this.chunks.length >= this.maxBufferedChunks &&
|
|
197
|
+
chunk[0] !== LF && chunk[0] !== CR) {
|
|
198
|
+
callback(createMaxEventSizeExceededError());
|
|
199
|
+
return
|
|
200
|
+
}
|
|
163
201
|
this.chunks.push(chunk);
|
|
164
202
|
|
|
165
203
|
// Strip leading byte-order-mark if we opened the stream and started
|
|
@@ -238,7 +276,12 @@ function requireEventsourceStream () {
|
|
|
238
276
|
|
|
239
277
|
// In any case, we can process the line as we reached an
|
|
240
278
|
// end-of-line character
|
|
241
|
-
|
|
279
|
+
try {
|
|
280
|
+
this.parseLine(this.readLine(), this.event);
|
|
281
|
+
} catch (error) {
|
|
282
|
+
callback(error);
|
|
283
|
+
return
|
|
284
|
+
}
|
|
242
285
|
this.consumeCurrentByte();
|
|
243
286
|
// A line was processed and this could be the end of the event. We need
|
|
244
287
|
// to check if the next line is empty to determine if the event is
|
|
@@ -247,15 +290,28 @@ function requireEventsourceStream () {
|
|
|
247
290
|
continue
|
|
248
291
|
}
|
|
249
292
|
|
|
293
|
+
// readLine() is only called after CR or LF. Reject an unfinished line
|
|
294
|
+
// before it can retain an unbounded number of decoded chunks. The seven
|
|
295
|
+
// extra bytes allow the longest field prefix ("event: " or "retry: ").
|
|
296
|
+
if (this.maxEventSize > 0 && ++this.lineLength > this.maxEventSize + 7) {
|
|
297
|
+
callback(createMaxEventSizeExceededError());
|
|
298
|
+
return
|
|
299
|
+
}
|
|
250
300
|
this.advanceCursor();
|
|
251
301
|
}
|
|
252
302
|
|
|
253
303
|
callback();
|
|
254
304
|
}
|
|
255
305
|
|
|
306
|
+
_destroy (error, callback) {
|
|
307
|
+
this.chunks.length = 0;
|
|
308
|
+
this.clearEvent();
|
|
309
|
+
super._destroy(error, callback);
|
|
310
|
+
}
|
|
311
|
+
|
|
256
312
|
/**
|
|
257
313
|
* @param {Buffer} line
|
|
258
|
-
* @param {
|
|
314
|
+
* @param {EventSourceStreamEvent} event
|
|
259
315
|
*/
|
|
260
316
|
parseLine (line, event) {
|
|
261
317
|
// If the line is empty (a blank line)
|
|
@@ -289,6 +345,13 @@ function requireEventsourceStream () {
|
|
|
289
345
|
}
|
|
290
346
|
|
|
291
347
|
if (isFieldName(line, fieldLength, DATA)) {
|
|
348
|
+
if (this.maxEventSize > 0 && this.dataLineCount >= this.maxDataLines) {
|
|
349
|
+
throw createMaxEventSizeExceededError()
|
|
350
|
+
}
|
|
351
|
+
const valueBytes = line.length - valueStart;
|
|
352
|
+
const dataSize = this.eventFieldSizes.data + (event.data === undefined ? 0 : 1) + valueBytes;
|
|
353
|
+
this.setEventFieldSize('data', dataSize);
|
|
354
|
+
|
|
292
355
|
const value = line.toString('utf8', valueStart);
|
|
293
356
|
|
|
294
357
|
if (event.data === undefined) {
|
|
@@ -296,11 +359,13 @@ function requireEventsourceStream () {
|
|
|
296
359
|
} else {
|
|
297
360
|
event.data += `\n${value}`;
|
|
298
361
|
}
|
|
362
|
+
this.dataLineCount++;
|
|
299
363
|
return
|
|
300
364
|
}
|
|
301
365
|
|
|
302
366
|
if (isFieldName(line, fieldLength, RETRY)) {
|
|
303
367
|
if (isASCIINumberBytes(line, valueStart)) {
|
|
368
|
+
this.setEventFieldSize('retry', line.length - valueStart);
|
|
304
369
|
event.retry = line.toString('utf8', valueStart);
|
|
305
370
|
}
|
|
306
371
|
return
|
|
@@ -308,20 +373,29 @@ function requireEventsourceStream () {
|
|
|
308
373
|
|
|
309
374
|
if (isFieldName(line, fieldLength, ID)) {
|
|
310
375
|
if (isValidLastEventIdBytes(line, valueStart)) {
|
|
376
|
+
this.setEventFieldSize('id', line.length - valueStart);
|
|
311
377
|
event.id = line.toString('utf8', valueStart);
|
|
312
378
|
}
|
|
313
379
|
return
|
|
314
380
|
}
|
|
315
381
|
|
|
316
382
|
if (isFieldName(line, fieldLength, EVENT)) {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
event.event = value;
|
|
383
|
+
if (valueStart < line.length) {
|
|
384
|
+
this.setEventFieldSize('event', line.length - valueStart);
|
|
385
|
+
event.event = line.toString('utf8', valueStart);
|
|
321
386
|
}
|
|
322
387
|
}
|
|
323
388
|
}
|
|
324
389
|
|
|
390
|
+
setEventFieldSize (field, size) {
|
|
391
|
+
const eventSize = this.eventSize - this.eventFieldSizes[field] + size;
|
|
392
|
+
if (this.maxEventSize > 0 && eventSize > this.maxEventSize) {
|
|
393
|
+
throw createMaxEventSizeExceededError()
|
|
394
|
+
}
|
|
395
|
+
this.eventSize = eventSize;
|
|
396
|
+
this.eventFieldSizes[field] = size;
|
|
397
|
+
}
|
|
398
|
+
|
|
325
399
|
/**
|
|
326
400
|
* @param {EventSourceStreamEvent} event
|
|
327
401
|
*/
|
|
@@ -352,6 +426,12 @@ function requireEventsourceStream () {
|
|
|
352
426
|
this.event.event = undefined;
|
|
353
427
|
this.event.id = undefined;
|
|
354
428
|
this.event.retry = undefined;
|
|
429
|
+
this.eventSize = 0;
|
|
430
|
+
this.dataLineCount = 0;
|
|
431
|
+
this.eventFieldSizes.data = 0;
|
|
432
|
+
this.eventFieldSizes.event = 0;
|
|
433
|
+
this.eventFieldSizes.id = 0;
|
|
434
|
+
this.eventFieldSizes.retry = 0;
|
|
355
435
|
}
|
|
356
436
|
|
|
357
437
|
hasPendingEvent () {
|
|
@@ -387,14 +467,16 @@ function requireEventsourceStream () {
|
|
|
387
467
|
syncLineStartToCursor () {
|
|
388
468
|
this.lineChunkIndex = this.chunkIndex;
|
|
389
469
|
this.linePos = this.pos;
|
|
470
|
+
this.lineLength = 0;
|
|
390
471
|
this.dropConsumedChunks();
|
|
391
472
|
}
|
|
392
473
|
|
|
393
474
|
dropConsumedChunks () {
|
|
394
|
-
|
|
395
|
-
this.
|
|
396
|
-
this.
|
|
397
|
-
this.
|
|
475
|
+
if (this.lineChunkIndex > 0) {
|
|
476
|
+
const consumed = this.lineChunkIndex;
|
|
477
|
+
this.chunks.splice(0, consumed);
|
|
478
|
+
this.lineChunkIndex = 0;
|
|
479
|
+
this.chunkIndex -= consumed;
|
|
398
480
|
}
|
|
399
481
|
|
|
400
482
|
if (this.chunkIndex === this.chunks.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventsource-stream.js","sources":["../../../../../../../../../node_modules/undici/lib/web/eventsource/eventsource-stream.js"],"sourcesContent":["'use strict'\nconst { Transform } = require('node:stream')\nconst { isASCIINumber, isValidLastEventId } = require('./util')\n\n/**\n * @type {number[]} BOM\n */\nconst BOM = [0xEF, 0xBB, 0xBF]\n/**\n * @type {10} LF\n */\nconst LF = 0x0A\n/**\n * @type {13} CR\n */\nconst CR = 0x0D\n/**\n * @type {58} COLON\n */\nconst COLON = 0x3A\n/**\n * @type {32} SPACE\n */\nconst SPACE = 0x20\n\nconst DATA = Buffer.from('data')\nconst EVENT = Buffer.from('event')\nconst ID = Buffer.from('id')\nconst RETRY = Buffer.from('retry')\n\nfunction isASCIINumberBytes (buffer, start) {\n if (start >= buffer.length) {\n return false\n }\n\n for (let i = start; i < buffer.length; i++) {\n if (buffer[i] < 0x30 || buffer[i] > 0x39) {\n return false\n }\n }\n\n return true\n}\n\nfunction isValidLastEventIdBytes (buffer, start) {\n for (let i = start; i < buffer.length; i++) {\n if (buffer[i] === 0x00) {\n return false\n }\n }\n\n return true\n}\n\nfunction isFieldName (line, length, field) {\n if (length !== field.length) {\n return false\n }\n\n for (let i = 0; i < length; i++) {\n if (line[i] !== field[i]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @typedef {object} EventSourceStreamEvent\n * @type {object}\n * @property {string} [event] The event type.\n * @property {string} [data] The data of the message.\n * @property {string} [id] A unique ID for the event.\n * @property {string} [retry] The reconnection time, in milliseconds.\n */\n\n/**\n * @typedef eventSourceSettings\n * @type {object}\n * @property {string} lastEventId The last event ID received from the server.\n * @property {string} origin The origin of the event source.\n * @property {number} reconnectionTime The reconnection time, in milliseconds.\n */\n\nclass EventSourceStream extends Transform {\n /**\n * @type {eventSourceSettings}\n */\n state = null\n\n /**\n * Leading byte-order-mark check.\n * @type {boolean}\n */\n checkBOM = true\n\n /**\n * @type {boolean}\n */\n crlfCheck = false\n\n /**\n * @type {boolean}\n */\n eventEndCheck = false\n\n /**\n * @type {Buffer[]}\n */\n chunks = []\n\n chunkIndex = 0\n pos = 0\n lineChunkIndex = 0\n linePos = 0\n\n event = {\n data: undefined,\n event: undefined,\n id: undefined,\n retry: undefined\n }\n\n /**\n * @param {object} options\n * @param {eventSourceSettings} options.eventSourceSettings\n * @param {Function} [options.push]\n */\n constructor (options = {}) {\n // Enable object mode as EventSourceStream emits objects of shape\n // EventSourceStreamEvent\n options.readableObjectMode = true\n\n super(options)\n\n this.state = options.eventSourceSettings || {}\n if (options.push) {\n this.push = options.push\n }\n }\n\n /**\n * @param {Buffer} chunk\n * @param {string} _encoding\n * @param {Function} callback\n * @returns {void}\n */\n _transform (chunk, _encoding, callback) {\n if (chunk.length === 0) {\n callback()\n return\n }\n\n this.chunks.push(chunk)\n\n // Strip leading byte-order-mark if we opened the stream and started\n // the processing of the incoming data\n if (this.checkBOM) {\n if (this.handleBOM()) {\n callback()\n return\n }\n }\n\n while (this.hasCurrentByte()) {\n const byte = this.currentByte()\n\n // If the previous line ended with an end-of-line, we need to check\n // if the next character is also an end-of-line.\n if (this.eventEndCheck) {\n // If the the current character is an end-of-line, then the event\n // is finished and we can process it\n\n // If the previous line ended with a carriage return, we need to\n // check if the current character is a line feed and remove it\n // from the buffer.\n if (this.crlfCheck) {\n // If the current character is a line feed, we can remove it\n // from the buffer and reset the crlfCheck flag\n if (byte === LF) {\n this.crlfCheck = false\n this.consumeCurrentByte()\n\n // It is possible that the line feed is not the end of the\n // event. We need to check if the next character is an\n // end-of-line character to determine if the event is\n // finished. We simply continue the loop to check the next\n // character.\n\n // As we removed the line feed from the buffer and set the\n // crlfCheck flag to false, we basically don't make any\n // distinction between a line feed and a carriage return.\n continue\n }\n this.crlfCheck = false\n }\n\n if (byte === LF || byte === CR) {\n // If the current character is a carriage return, we need to\n // set the crlfCheck flag to true, as we need to check if the\n // next character is a line feed so we can remove it from the\n // buffer\n if (byte === CR) {\n this.crlfCheck = true\n }\n\n this.consumeCurrentByte()\n if (this.hasPendingEvent()) {\n this.processEvent(this.event)\n }\n this.clearEvent()\n continue\n }\n // If the current character is not an end-of-line, then the event\n // is not finished and we have to reset the eventEndCheck flag\n this.eventEndCheck = false\n continue\n }\n\n // If the current character is an end-of-line, we can process the\n // line\n if (byte === LF || byte === CR) {\n // If the current character is a carriage return, we need to\n // set the crlfCheck flag to true, as we need to check if the\n // next character is a line feed\n if (byte === CR) {\n this.crlfCheck = true\n }\n\n // In any case, we can process the line as we reached an\n // end-of-line character\n this.parseLine(this.readLine(), this.event)\n this.consumeCurrentByte()\n // A line was processed and this could be the end of the event. We need\n // to check if the next line is empty to determine if the event is\n // finished.\n this.eventEndCheck = true\n continue\n }\n\n this.advanceCursor()\n }\n\n callback()\n }\n\n /**\n * @param {Buffer} line\n * @param {EventStreamEvent} event\n */\n parseLine (line, event) {\n // If the line is empty (a blank line)\n // Dispatch the event, as defined below.\n // This will be handled in the _transform method\n if (line.length === 0) {\n return\n }\n\n // If the line starts with a U+003A COLON character (:)\n // Ignore the line.\n const colonPosition = line.indexOf(COLON)\n if (colonPosition === 0) {\n return\n }\n\n let fieldLength = line.length\n let valueStart = line.length\n\n // If the line contains a U+003A COLON character (:)\n if (colonPosition !== -1) {\n fieldLength = colonPosition\n\n // Collect the characters on the line after the first U+003A COLON\n // character (:), and let value be that string.\n // If value starts with a U+0020 SPACE character, remove it from value.\n valueStart = colonPosition + 1\n if (line[valueStart] === SPACE) {\n ++valueStart\n }\n }\n\n if (isFieldName(line, fieldLength, DATA)) {\n const value = line.toString('utf8', valueStart)\n\n if (event.data === undefined) {\n event.data = value\n } else {\n event.data += `\\n${value}`\n }\n return\n }\n\n if (isFieldName(line, fieldLength, RETRY)) {\n if (isASCIINumberBytes(line, valueStart)) {\n event.retry = line.toString('utf8', valueStart)\n }\n return\n }\n\n if (isFieldName(line, fieldLength, ID)) {\n if (isValidLastEventIdBytes(line, valueStart)) {\n event.id = line.toString('utf8', valueStart)\n }\n return\n }\n\n if (isFieldName(line, fieldLength, EVENT)) {\n const value = line.toString('utf8', valueStart)\n\n if (value.length > 0) {\n event.event = value\n }\n }\n }\n\n /**\n * @param {EventSourceStreamEvent} event\n */\n processEvent (event) {\n if (event.retry && isASCIINumber(event.retry)) {\n this.state.reconnectionTime = parseInt(event.retry, 10)\n }\n\n if (event.id && isValidLastEventId(event.id)) {\n this.state.lastEventId = event.id\n }\n\n // only dispatch event, when data is provided\n if (event.data !== undefined) {\n this.push({\n type: event.event || 'message',\n options: {\n data: event.data,\n lastEventId: this.state.lastEventId,\n origin: this.state.origin\n }\n })\n }\n }\n\n clearEvent () {\n this.event.data = undefined\n this.event.event = undefined\n this.event.id = undefined\n this.event.retry = undefined\n }\n\n hasPendingEvent () {\n return this.event.data !== undefined ||\n this.event.event !== undefined ||\n this.event.id !== undefined ||\n this.event.retry !== undefined\n }\n\n hasCurrentByte () {\n return this.chunkIndex < this.chunks.length &&\n this.pos < this.chunks[this.chunkIndex].length\n }\n\n currentByte () {\n return this.chunks[this.chunkIndex][this.pos]\n }\n\n consumeCurrentByte () {\n this.advanceCursor()\n this.syncLineStartToCursor()\n }\n\n advanceCursor () {\n this.pos++\n\n while (this.chunkIndex < this.chunks.length && this.pos >= this.chunks[this.chunkIndex].length) {\n this.chunkIndex++\n this.pos = 0\n }\n }\n\n syncLineStartToCursor () {\n this.lineChunkIndex = this.chunkIndex\n this.linePos = this.pos\n this.dropConsumedChunks()\n }\n\n dropConsumedChunks () {\n while (this.lineChunkIndex > 0) {\n this.chunks.shift()\n this.lineChunkIndex--\n this.chunkIndex--\n }\n\n if (this.chunkIndex === this.chunks.length) {\n this.chunks.length = 0\n this.chunkIndex = 0\n this.pos = 0\n this.lineChunkIndex = 0\n this.linePos = 0\n }\n }\n\n readLine () {\n if (this.lineChunkIndex === this.chunkIndex) {\n return this.chunks[this.chunkIndex].subarray(this.linePos, this.pos)\n }\n\n const chunks = []\n let length = 0\n\n for (let i = this.lineChunkIndex; i <= this.chunkIndex; i++) {\n const chunk = this.chunks[i]\n const start = i === this.lineChunkIndex ? this.linePos : 0\n const end = i === this.chunkIndex ? this.pos : chunk.length\n const slice = chunk.subarray(start, end)\n length += slice.length\n chunks.push(slice)\n }\n\n return Buffer.concat(chunks, length)\n }\n\n peekBufferedByte (offset) {\n let chunkIndex = this.lineChunkIndex\n let pos = this.linePos\n\n while (chunkIndex < this.chunks.length) {\n const chunk = this.chunks[chunkIndex]\n const remaining = chunk.length - pos\n\n if (offset < remaining) {\n return chunk[pos + offset]\n }\n\n offset -= remaining\n chunkIndex++\n pos = 0\n }\n }\n\n discardLeadingBytes (count) {\n while (count > 0 && this.lineChunkIndex < this.chunks.length) {\n const chunk = this.chunks[this.lineChunkIndex]\n const remaining = chunk.length - this.linePos\n\n if (count < remaining) {\n this.linePos += count\n count = 0\n } else {\n count -= remaining\n this.lineChunkIndex++\n this.linePos = 0\n }\n }\n\n this.chunkIndex = this.lineChunkIndex\n this.pos = this.linePos\n this.dropConsumedChunks()\n }\n\n handleBOM () {\n const first = this.peekBufferedByte(0)\n const second = this.peekBufferedByte(1)\n const third = this.peekBufferedByte(2)\n\n if (second === undefined) {\n if (first === BOM[0]) {\n return true\n }\n\n this.checkBOM = false\n return true\n }\n\n if (third === undefined) {\n if (first === BOM[0] && second === BOM[1]) {\n return true\n }\n\n this.checkBOM = false\n return false\n }\n\n if (first === BOM[0] && second === BOM[1] && third === BOM[2]) {\n this.discardLeadingBytes(3)\n }\n\n this.checkBOM = false\n return !this.hasCurrentByte()\n }\n}\n\nmodule.exports = {\n EventSourceStream\n}\n"],"names":["require$$1"],"mappings":";;;;;;;;;CACA,MAAM,EAAE,SAAS,EAAE,GAAG;AACtB,CAAA,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAGA,WAAA;;AAE9C;AACA;AACA;AACA,CAAA,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI;AAC7B;AACA;AACA;AACA,CAAA,MAAM,EAAE,GAAG;AACX;AACA;AACA;AACA,CAAA,MAAM,EAAE,GAAG;AACX;AACA;AACA;AACA,CAAA,MAAM,KAAK,GAAG;AACd;AACA;AACA;AACA,CAAA,MAAM,KAAK,GAAG;;AAEd,CAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM;AAC/B,CAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO;AACjC,CAAA,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI;AAC3B,CAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO;;AAEjC,CAAA,SAAS,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE;AAC5C,GAAE,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;AAC9B,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,KAAI,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE;AAC9C,OAAM,OAAO;AACb,KAAA;AACA,GAAA;;AAEA,GAAE,OAAO;AACT,CAAA;;AAEA,CAAA,SAAS,uBAAuB,EAAE,MAAM,EAAE,KAAK,EAAE;AACjD,GAAE,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,KAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC5B,OAAM,OAAO;AACb,KAAA;AACA,GAAA;;AAEA,GAAE,OAAO;AACT,CAAA;;AAEA,CAAA,SAAS,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;AAC3C,GAAE,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;AAC/B,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;KAC/B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;AAC9B,OAAM,OAAO;AACb,KAAA;AACA,GAAA;;AAEA,GAAE,OAAO;AACT,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;CAEA,MAAM,iBAAiB,SAAS,SAAS,CAAC;AAC1C;AACA;AACA;AACA,GAAE,KAAK,GAAG;;AAEV;AACA;AACA;AACA;AACA,GAAE,QAAQ,GAAG;;AAEb;AACA;AACA;AACA,GAAE,SAAS,GAAG;;AAEd;AACA;AACA;AACA,GAAE,aAAa,GAAG;;AAElB;AACA;AACA;AACA,GAAE,MAAM,GAAG;;AAEX,GAAE,UAAU,GAAG;AACf,GAAE,GAAG,GAAG;AACR,GAAE,cAAc,GAAG;AACnB,GAAE,OAAO,GAAG;;AAEZ,GAAE,KAAK,GAAG;KACN,IAAI,EAAE,SAAS;KACf,KAAK,EAAE,SAAS;KAChB,EAAE,EAAE,SAAS;AACjB,KAAI,KAAK,EAAE;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,CAAC,OAAO,GAAG,EAAE,EAAE;AAC7B;AACA;KACI,OAAO,CAAC,kBAAkB,GAAG;;KAE7B,KAAK,CAAC,OAAO;;AAEjB,KAAI,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,mBAAmB,IAAI;AAChD,KAAI,IAAI,OAAO,CAAC,IAAI,EAAE;AACtB,OAAM,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AAC1B,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,UAAU,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE;AAC1C,KAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,OAAM,QAAQ;OACR;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;;AAE1B;AACA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,OAAM,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAC5B,SAAQ,QAAQ;SACR;AACR,OAAA;AACA,KAAA;;AAEA,KAAI,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE;AAClC,OAAM,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;;AAEnC;AACA;AACA,OAAM,IAAI,IAAI,CAAC,aAAa,EAAE;AAC9B;AACA;;AAEA;AACA;AACA;AACA,SAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B;AACA;AACA,WAAU,IAAI,IAAI,KAAK,EAAE,EAAE;aACf,IAAI,CAAC,SAAS,GAAG;aACjB,IAAI,CAAC,kBAAkB;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;aACY;AACZ,WAAA;WACU,IAAI,CAAC,SAAS,GAAG;AAC3B,SAAA;;SAEQ,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE;AACxC;AACA;AACA;AACA;AACA,WAAU,IAAI,IAAI,KAAK,EAAE,EAAE;aACf,IAAI,CAAC,SAAS,GAAG;AAC7B,WAAA;;WAEU,IAAI,CAAC,kBAAkB;AACjC,WAAU,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AACtC,aAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK;AACxC,WAAA;WACU,IAAI,CAAC,UAAU;WACf;AACV,SAAA;AACA;AACA;SACQ,IAAI,CAAC,aAAa,GAAG;SACrB;AACR,OAAA;;AAEA;AACA;OACM,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE;AACtC;AACA;AACA;AACA,SAAQ,IAAI,IAAI,KAAK,EAAE,EAAE;WACf,IAAI,CAAC,SAAS,GAAG;AAC3B,SAAA;;AAEA;AACA;SACQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,KAAK;SAC1C,IAAI,CAAC,kBAAkB;AAC/B;AACA;AACA;SACQ,IAAI,CAAC,aAAa,GAAG;SACrB;AACR,OAAA;;OAEM,IAAI,CAAC,aAAa;AACxB,KAAA;;AAEA,KAAI,QAAQ;AACZ,GAAA;;AAEA;AACA;AACA;AACA;AACA,GAAE,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;AAC1B;AACA;AACA;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;OACrB;AACN,KAAA;;AAEA;AACA;AACA,KAAI,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;AAC5C,KAAI,IAAI,aAAa,KAAK,CAAC,EAAE;OACvB;AACN,KAAA;;AAEA,KAAI,IAAI,WAAW,GAAG,IAAI,CAAC;AAC3B,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC;;AAE1B;AACA,KAAI,IAAI,aAAa,KAAK,EAAE,EAAE;AAC9B,OAAM,WAAW,GAAG;;AAEpB;AACA;AACA;OACM,UAAU,GAAG,aAAa,GAAG;AACnC,OAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE;AACtC,SAAQ,EAAE;AACV,OAAA;AACA,KAAA;;KAEI,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE;OACxC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU;;AAEpD,OAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;SAC5B,KAAK,CAAC,IAAI,GAAG;AACrB,OAAA,CAAO,MAAM;SACL,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;AACjC,OAAA;OACM;AACN,KAAA;;KAEI,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE;AAC/C,OAAM,IAAI,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;SACxC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU;AACtD,OAAA;OACM;AACN,KAAA;;KAEI,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE;AAC5C,OAAM,IAAI,uBAAuB,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;SAC7C,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU;AACnD,OAAA;OACM;AACN,KAAA;;KAEI,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE;OACzC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU;;AAEpD,OAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;SACpB,KAAK,CAAC,KAAK,GAAG;AACtB,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA,GAAE,YAAY,CAAC,CAAC,KAAK,EAAE;KACnB,IAAI,KAAK,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACnD,OAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE;AAC5D,KAAA;;KAEI,IAAI,KAAK,CAAC,EAAE,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAClD,OAAM,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;AACrC,KAAA;;AAEA;AACA,KAAI,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;OAC5B,IAAI,CAAC,IAAI,CAAC;AAChB,SAAQ,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;AACtC,SAAQ,OAAO,EAAE;AACjB,WAAU,IAAI,EAAE,KAAK,CAAC,IAAI;AAC1B,WAAU,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;AAC7C,WAAU,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;AAC7B;QACO;AACP,KAAA;AACA,GAAA;;GAEE,UAAU,CAAC,GAAG;AAChB,KAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG;AACtB,KAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;AACvB,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG;AACpB,KAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;AACvB,GAAA;;GAEE,eAAe,CAAC,GAAG;AACrB,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;AACxC,OAAM,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS;AACpC,OAAM,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS;AACjC,OAAM,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK;AAC3B,GAAA;;GAEE,cAAc,CAAC,GAAG;KAChB,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AAC/C,OAAM,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9C,GAAA;;GAEE,WAAW,CAAC,GAAG;AACjB,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG;AAChD,GAAA;;GAEE,kBAAkB,CAAC,GAAG;KACpB,IAAI,CAAC,aAAa;KAClB,IAAI,CAAC,qBAAqB;AAC9B,GAAA;;GAEE,aAAa,CAAC,GAAG;KACf,IAAI,CAAC,GAAG;;KAER,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;OAC9F,IAAI,CAAC,UAAU;OACf,IAAI,CAAC,GAAG,GAAG;AACjB,KAAA;AACA,GAAA;;GAEE,qBAAqB,CAAC,GAAG;AAC3B,KAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B,KAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACpB,IAAI,CAAC,kBAAkB;AAC3B,GAAA;;GAEE,kBAAkB,CAAC,GAAG;AACxB,KAAI,OAAO,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AACpC,OAAM,IAAI,CAAC,MAAM,CAAC,KAAK;OACjB,IAAI,CAAC,cAAc;OACnB,IAAI,CAAC,UAAU;AACrB,KAAA;;KAEI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAChD,OAAM,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG;OACrB,IAAI,CAAC,UAAU,GAAG;OAClB,IAAI,CAAC,GAAG,GAAG;OACX,IAAI,CAAC,cAAc,GAAG;OACtB,IAAI,CAAC,OAAO,GAAG;AACrB,KAAA;AACA,GAAA;;GAEE,QAAQ,CAAC,GAAG;KACV,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,UAAU,EAAE;AACjD,OAAM,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG;AACzE,KAAA;;KAEI,MAAM,MAAM,GAAG;KACf,IAAI,MAAM,GAAG;;AAEjB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;AACjE,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,OAAM,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,GAAG;AAC/D,OAAM,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;OACrD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG;OACvC,MAAM,IAAI,KAAK,CAAC;AACtB,OAAM,MAAM,CAAC,IAAI,CAAC,KAAK;AACvB,KAAA;;AAEA,KAAI,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM;AACvC,GAAA;;AAEA,GAAE,gBAAgB,CAAC,CAAC,MAAM,EAAE;AAC5B,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC;;KAEf,OAAO,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAC5C,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;AAC1C,OAAM,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG;;AAEvC,OAAM,IAAI,MAAM,GAAG,SAAS,EAAE;AAC9B,SAAQ,OAAO,KAAK,CAAC,GAAG,GAAG,MAAM;AACjC,OAAA;;AAEA,OAAM,MAAM,IAAI;AAChB,OAAM,UAAU;AAChB,OAAM,GAAG,GAAG;AACZ,KAAA;AACA,GAAA;;AAEA,GAAE,mBAAmB,CAAC,CAAC,KAAK,EAAE;AAC9B,KAAI,OAAO,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;OAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc;OAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;;AAE5C,OAAM,IAAI,KAAK,GAAG,SAAS,EAAE;SACrB,IAAI,CAAC,OAAO,IAAI;AACxB,SAAQ,KAAK,GAAG;AAChB,OAAA,CAAO,MAAM;AACb,SAAQ,KAAK,IAAI;SACT,IAAI,CAAC,cAAc;SACnB,IAAI,CAAC,OAAO,GAAG;AACvB,OAAA;AACA,KAAA;;AAEA,KAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;KAChB,IAAI,CAAC,kBAAkB;AAC3B,GAAA;;GAEE,SAAS,CAAC,GAAG;AACf,KAAI,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACzC,KAAI,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC1C,KAAI,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;;AAEzC,KAAI,IAAI,MAAM,KAAK,SAAS,EAAE;AAC9B,OAAM,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;AAC5B,SAAQ,OAAO;AACf,OAAA;;OAEM,IAAI,CAAC,QAAQ,GAAG;AACtB,OAAM,OAAO;AACb,KAAA;;AAEA,KAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,OAAM,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;AACjD,SAAQ,OAAO;AACf,OAAA;;OAEM,IAAI,CAAC,QAAQ,GAAG;AACtB,OAAM,OAAO;AACb,KAAA;;KAEI,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;AACnE,OAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAChC,KAAA;;KAEI,IAAI,CAAC,QAAQ,GAAG;AACpB,KAAI,OAAO,CAAC,IAAI,CAAC,cAAc;AAC/B,GAAA;AACA;;AAEA,CAAA,iBAAc,GAAG;GACf;AACF;;;;","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"eventsource-stream.js","sources":["../../../../../../../../../node_modules/undici/lib/web/eventsource/eventsource-stream.js"],"sourcesContent":["'use strict'\nconst buffer = require('node:buffer')\nconst { Transform } = require('node:stream')\nconst { isASCIINumber, isValidLastEventId } = require('./util')\n\n/**\n * @type {number[]} BOM\n */\nconst BOM = [0xEF, 0xBB, 0xBF]\n/**\n * @type {10} LF\n */\nconst LF = 0x0A\n/**\n * @type {13} CR\n */\nconst CR = 0x0D\n/**\n * @type {58} COLON\n */\nconst COLON = 0x3A\n/**\n * @type {32} SPACE\n */\nconst SPACE = 0x20\n\nconst defaultMaxEventSize = buffer.kStringMaxLength\n\nconst DATA = Buffer.from('data')\nconst EVENT = Buffer.from('event')\nconst ID = Buffer.from('id')\nconst RETRY = Buffer.from('retry')\n\n// Each data field creates a string node, and each unconsumed input chunk keeps\n// a Buffer wrapper. The absolute ceiling protects the large default byte limit.\nconst minParserItems = 1024\nconst maxParserItems = 131072\nconst bytesPerParserItem = 128\n\nfunction isASCIINumberBytes (buffer, start) {\n if (start >= buffer.length) {\n return false\n }\n\n for (let i = start; i < buffer.length; i++) {\n if (buffer[i] < 0x30 || buffer[i] > 0x39) {\n return false\n }\n }\n\n return true\n}\n\nfunction isValidLastEventIdBytes (buffer, start) {\n for (let i = start; i < buffer.length; i++) {\n if (buffer[i] === 0x00) {\n return false\n }\n }\n\n return true\n}\n\nfunction isFieldName (line, length, field) {\n if (length !== field.length) {\n return false\n }\n\n for (let i = 0; i < length; i++) {\n if (line[i] !== field[i]) {\n return false\n }\n }\n\n return true\n}\n\nfunction createMaxEventSizeExceededError () {\n const error = new Error('EventSource message size exceeded')\n error.aborted = false\n return error\n}\n\n/**\n * @typedef {object} EventSourceStreamEvent\n * @type {object}\n * @property {string} [event] The event type.\n * @property {string} [data] The data of the message.\n * @property {string} [id] A unique ID for the event.\n * @property {string} [retry] The reconnection time, in milliseconds.\n */\n\n/**\n * @typedef eventSourceSettings\n * @type {object}\n * @property {string} lastEventId The last event ID received from the server.\n * @property {string} origin The origin of the event source.\n * @property {number} reconnectionTime The reconnection time, in milliseconds.\n */\n\nclass EventSourceStream extends Transform {\n /**\n * @type {eventSourceSettings}\n */\n state = null\n\n /**\n * Leading byte-order-mark check.\n * @type {boolean}\n */\n checkBOM = true\n\n /**\n * @type {boolean}\n */\n crlfCheck = false\n\n /**\n * @type {boolean}\n */\n eventEndCheck = false\n\n /**\n * @type {Buffer[]}\n */\n chunks = []\n\n chunkIndex = 0\n pos = 0\n lineChunkIndex = 0\n linePos = 0\n lineLength = 0\n eventSize = 0\n eventFieldSizes = { data: 0, event: 0, id: 0, retry: 0 }\n dataLineCount = 0\n maxEventSize\n maxDataLines\n maxBufferedChunks\n\n event = {\n data: undefined,\n event: undefined,\n id: undefined,\n retry: undefined\n }\n\n /**\n * @param {object} options\n * @param {number} [options.maxEventSize]\n * @param {eventSourceSettings} options.eventSourceSettings\n * @param {Function} [options.push]\n */\n constructor (options = {}) {\n // Enable object mode as EventSourceStream emits objects of shape\n // EventSourceStreamEvent\n options.readableObjectMode = true\n\n super(options)\n\n this.state = options.eventSourceSettings || {}\n this.maxEventSize = options.maxEventSize ?? defaultMaxEventSize\n const parserItemLimit = this.maxEventSize > 0\n ? Math.min(maxParserItems, Math.max(minParserItems, Math.floor(this.maxEventSize / bytesPerParserItem)))\n : 0\n this.maxDataLines = parserItemLimit\n this.maxBufferedChunks = parserItemLimit\n if (options.push) {\n this.push = options.push\n }\n }\n\n /**\n * @param {Buffer} chunk\n * @param {string} _encoding\n * @param {Function} callback\n * @returns {void}\n */\n _transform (chunk, _encoding, callback) {\n if (chunk.length === 0) {\n callback()\n return\n }\n\n // A leading line ending can immediately release the currently buffered\n // line, even when it uses the final allowed chunk slot.\n if (this.maxEventSize > 0 &&\n this.chunks.length >= this.maxBufferedChunks &&\n chunk[0] !== LF && chunk[0] !== CR) {\n callback(createMaxEventSizeExceededError())\n return\n }\n this.chunks.push(chunk)\n\n // Strip leading byte-order-mark if we opened the stream and started\n // the processing of the incoming data\n if (this.checkBOM) {\n if (this.handleBOM()) {\n callback()\n return\n }\n }\n\n while (this.hasCurrentByte()) {\n const byte = this.currentByte()\n\n // If the previous line ended with an end-of-line, we need to check\n // if the next character is also an end-of-line.\n if (this.eventEndCheck) {\n // If the the current character is an end-of-line, then the event\n // is finished and we can process it\n\n // If the previous line ended with a carriage return, we need to\n // check if the current character is a line feed and remove it\n // from the buffer.\n if (this.crlfCheck) {\n // If the current character is a line feed, we can remove it\n // from the buffer and reset the crlfCheck flag\n if (byte === LF) {\n this.crlfCheck = false\n this.consumeCurrentByte()\n\n // It is possible that the line feed is not the end of the\n // event. We need to check if the next character is an\n // end-of-line character to determine if the event is\n // finished. We simply continue the loop to check the next\n // character.\n\n // As we removed the line feed from the buffer and set the\n // crlfCheck flag to false, we basically don't make any\n // distinction between a line feed and a carriage return.\n continue\n }\n this.crlfCheck = false\n }\n\n if (byte === LF || byte === CR) {\n // If the current character is a carriage return, we need to\n // set the crlfCheck flag to true, as we need to check if the\n // next character is a line feed so we can remove it from the\n // buffer\n if (byte === CR) {\n this.crlfCheck = true\n }\n\n this.consumeCurrentByte()\n if (this.hasPendingEvent()) {\n this.processEvent(this.event)\n }\n this.clearEvent()\n continue\n }\n // If the current character is not an end-of-line, then the event\n // is not finished and we have to reset the eventEndCheck flag\n this.eventEndCheck = false\n continue\n }\n\n // If the current character is an end-of-line, we can process the\n // line\n if (byte === LF || byte === CR) {\n // If the current character is a carriage return, we need to\n // set the crlfCheck flag to true, as we need to check if the\n // next character is a line feed\n if (byte === CR) {\n this.crlfCheck = true\n }\n\n // In any case, we can process the line as we reached an\n // end-of-line character\n try {\n this.parseLine(this.readLine(), this.event)\n } catch (error) {\n callback(error)\n return\n }\n this.consumeCurrentByte()\n // A line was processed and this could be the end of the event. We need\n // to check if the next line is empty to determine if the event is\n // finished.\n this.eventEndCheck = true\n continue\n }\n\n // readLine() is only called after CR or LF. Reject an unfinished line\n // before it can retain an unbounded number of decoded chunks. The seven\n // extra bytes allow the longest field prefix (\"event: \" or \"retry: \").\n if (this.maxEventSize > 0 && ++this.lineLength > this.maxEventSize + 7) {\n callback(createMaxEventSizeExceededError())\n return\n }\n this.advanceCursor()\n }\n\n callback()\n }\n\n _destroy (error, callback) {\n this.chunks.length = 0\n this.clearEvent()\n super._destroy(error, callback)\n }\n\n /**\n * @param {Buffer} line\n * @param {EventSourceStreamEvent} event\n */\n parseLine (line, event) {\n // If the line is empty (a blank line)\n // Dispatch the event, as defined below.\n // This will be handled in the _transform method\n if (line.length === 0) {\n return\n }\n\n // If the line starts with a U+003A COLON character (:)\n // Ignore the line.\n const colonPosition = line.indexOf(COLON)\n if (colonPosition === 0) {\n return\n }\n\n let fieldLength = line.length\n let valueStart = line.length\n\n // If the line contains a U+003A COLON character (:)\n if (colonPosition !== -1) {\n fieldLength = colonPosition\n\n // Collect the characters on the line after the first U+003A COLON\n // character (:), and let value be that string.\n // If value starts with a U+0020 SPACE character, remove it from value.\n valueStart = colonPosition + 1\n if (line[valueStart] === SPACE) {\n ++valueStart\n }\n }\n\n if (isFieldName(line, fieldLength, DATA)) {\n if (this.maxEventSize > 0 && this.dataLineCount >= this.maxDataLines) {\n throw createMaxEventSizeExceededError()\n }\n const valueBytes = line.length - valueStart\n const dataSize = this.eventFieldSizes.data + (event.data === undefined ? 0 : 1) + valueBytes\n this.setEventFieldSize('data', dataSize)\n\n const value = line.toString('utf8', valueStart)\n\n if (event.data === undefined) {\n event.data = value\n } else {\n event.data += `\\n${value}`\n }\n this.dataLineCount++\n return\n }\n\n if (isFieldName(line, fieldLength, RETRY)) {\n if (isASCIINumberBytes(line, valueStart)) {\n this.setEventFieldSize('retry', line.length - valueStart)\n event.retry = line.toString('utf8', valueStart)\n }\n return\n }\n\n if (isFieldName(line, fieldLength, ID)) {\n if (isValidLastEventIdBytes(line, valueStart)) {\n this.setEventFieldSize('id', line.length - valueStart)\n event.id = line.toString('utf8', valueStart)\n }\n return\n }\n\n if (isFieldName(line, fieldLength, EVENT)) {\n if (valueStart < line.length) {\n this.setEventFieldSize('event', line.length - valueStart)\n event.event = line.toString('utf8', valueStart)\n }\n }\n }\n\n setEventFieldSize (field, size) {\n const eventSize = this.eventSize - this.eventFieldSizes[field] + size\n if (this.maxEventSize > 0 && eventSize > this.maxEventSize) {\n throw createMaxEventSizeExceededError()\n }\n this.eventSize = eventSize\n this.eventFieldSizes[field] = size\n }\n\n /**\n * @param {EventSourceStreamEvent} event\n */\n processEvent (event) {\n if (event.retry && isASCIINumber(event.retry)) {\n this.state.reconnectionTime = parseInt(event.retry, 10)\n }\n\n if (event.id && isValidLastEventId(event.id)) {\n this.state.lastEventId = event.id\n }\n\n // only dispatch event, when data is provided\n if (event.data !== undefined) {\n this.push({\n type: event.event || 'message',\n options: {\n data: event.data,\n lastEventId: this.state.lastEventId,\n origin: this.state.origin\n }\n })\n }\n }\n\n clearEvent () {\n this.event.data = undefined\n this.event.event = undefined\n this.event.id = undefined\n this.event.retry = undefined\n this.eventSize = 0\n this.dataLineCount = 0\n this.eventFieldSizes.data = 0\n this.eventFieldSizes.event = 0\n this.eventFieldSizes.id = 0\n this.eventFieldSizes.retry = 0\n }\n\n hasPendingEvent () {\n return this.event.data !== undefined ||\n this.event.event !== undefined ||\n this.event.id !== undefined ||\n this.event.retry !== undefined\n }\n\n hasCurrentByte () {\n return this.chunkIndex < this.chunks.length &&\n this.pos < this.chunks[this.chunkIndex].length\n }\n\n currentByte () {\n return this.chunks[this.chunkIndex][this.pos]\n }\n\n consumeCurrentByte () {\n this.advanceCursor()\n this.syncLineStartToCursor()\n }\n\n advanceCursor () {\n this.pos++\n\n while (this.chunkIndex < this.chunks.length && this.pos >= this.chunks[this.chunkIndex].length) {\n this.chunkIndex++\n this.pos = 0\n }\n }\n\n syncLineStartToCursor () {\n this.lineChunkIndex = this.chunkIndex\n this.linePos = this.pos\n this.lineLength = 0\n this.dropConsumedChunks()\n }\n\n dropConsumedChunks () {\n if (this.lineChunkIndex > 0) {\n const consumed = this.lineChunkIndex\n this.chunks.splice(0, consumed)\n this.lineChunkIndex = 0\n this.chunkIndex -= consumed\n }\n\n if (this.chunkIndex === this.chunks.length) {\n this.chunks.length = 0\n this.chunkIndex = 0\n this.pos = 0\n this.lineChunkIndex = 0\n this.linePos = 0\n }\n }\n\n readLine () {\n if (this.lineChunkIndex === this.chunkIndex) {\n return this.chunks[this.chunkIndex].subarray(this.linePos, this.pos)\n }\n\n const chunks = []\n let length = 0\n\n for (let i = this.lineChunkIndex; i <= this.chunkIndex; i++) {\n const chunk = this.chunks[i]\n const start = i === this.lineChunkIndex ? this.linePos : 0\n const end = i === this.chunkIndex ? this.pos : chunk.length\n const slice = chunk.subarray(start, end)\n length += slice.length\n chunks.push(slice)\n }\n\n return Buffer.concat(chunks, length)\n }\n\n peekBufferedByte (offset) {\n let chunkIndex = this.lineChunkIndex\n let pos = this.linePos\n\n while (chunkIndex < this.chunks.length) {\n const chunk = this.chunks[chunkIndex]\n const remaining = chunk.length - pos\n\n if (offset < remaining) {\n return chunk[pos + offset]\n }\n\n offset -= remaining\n chunkIndex++\n pos = 0\n }\n }\n\n discardLeadingBytes (count) {\n while (count > 0 && this.lineChunkIndex < this.chunks.length) {\n const chunk = this.chunks[this.lineChunkIndex]\n const remaining = chunk.length - this.linePos\n\n if (count < remaining) {\n this.linePos += count\n count = 0\n } else {\n count -= remaining\n this.lineChunkIndex++\n this.linePos = 0\n }\n }\n\n this.chunkIndex = this.lineChunkIndex\n this.pos = this.linePos\n this.dropConsumedChunks()\n }\n\n handleBOM () {\n const first = this.peekBufferedByte(0)\n const second = this.peekBufferedByte(1)\n const third = this.peekBufferedByte(2)\n\n if (second === undefined) {\n if (first === BOM[0]) {\n return true\n }\n\n this.checkBOM = false\n return true\n }\n\n if (third === undefined) {\n if (first === BOM[0] && second === BOM[1]) {\n return true\n }\n\n this.checkBOM = false\n return false\n }\n\n if (first === BOM[0] && second === BOM[1] && third === BOM[2]) {\n this.discardLeadingBytes(3)\n }\n\n this.checkBOM = false\n return !this.hasCurrentByte()\n }\n}\n\nmodule.exports = {\n EventSourceStream\n}\n"],"names":["require$$0","require$$1","require$$2"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -9,6 +9,7 @@ import { __require as requireResponse } from '../fetch/response.js';
|
|
|
9
9
|
import { __require as requireUtil } from './util.js';
|
|
10
10
|
import { __require as requireUtil$1 } from '../../core/util.js';
|
|
11
11
|
import { __require as requireUtil$2 } from '../fetch/util.js';
|
|
12
|
+
import { __require as requireGlobal } from '../../global.js';
|
|
12
13
|
|
|
13
14
|
var eventsource;
|
|
14
15
|
var hasRequiredEventsource;
|
|
@@ -28,6 +29,7 @@ function requireEventsource () {
|
|
|
28
29
|
const { delay } = requireUtil();
|
|
29
30
|
const { kEnumerableProperty } = requireUtil$1();
|
|
30
31
|
const { environmentSettingsObject } = requireUtil$2();
|
|
32
|
+
const { getGlobalDispatcher } = requireGlobal();
|
|
31
33
|
|
|
32
34
|
let experimentalWarned = false;
|
|
33
35
|
|
|
@@ -309,6 +311,7 @@ function requireEventsource () {
|
|
|
309
311
|
|
|
310
312
|
const eventSourceStream = new EventSourceStream({
|
|
311
313
|
eventSourceSettings: this.#state,
|
|
314
|
+
maxEventSize: this.#dispatcher.eventSourceOptions?.maxEventSize,
|
|
312
315
|
push: (event) => {
|
|
313
316
|
this.dispatchEvent(createFastMessageEvent(
|
|
314
317
|
event.type,
|
|
@@ -487,7 +490,8 @@ function requireEventsource () {
|
|
|
487
490
|
},
|
|
488
491
|
{
|
|
489
492
|
key: 'dispatcher', // undici only
|
|
490
|
-
converter: webidl.converters.any
|
|
493
|
+
converter: webidl.converters.any,
|
|
494
|
+
defaultValue: () => getGlobalDispatcher()
|
|
491
495
|
}
|
|
492
496
|
]);
|
|
493
497
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventsource.js","sources":["../../../../../../../../../node_modules/undici/lib/web/eventsource/eventsource.js"],"sourcesContent":["'use strict'\n\nconst { pipeline } = require('node:stream')\nconst { fetching } = require('../fetch')\nconst { makeRequest } = require('../fetch/request')\nconst { webidl } = require('../fetch/webidl')\nconst { EventSourceStream } = require('./eventsource-stream')\nconst { parseMIMEType } = require('../fetch/data-url')\nconst { createFastMessageEvent } = require('../websocket/events')\nconst { isNetworkError } = require('../fetch/response')\nconst { delay } = require('./util')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { environmentSettingsObject } = require('../fetch/util')\n\nlet experimentalWarned = false\n\n/**\n * A reconnection time, in milliseconds. This must initially be an implementation-defined value,\n * probably in the region of a few seconds.\n *\n * In Comparison:\n * - Chrome uses 3000ms.\n * - Deno uses 5000ms.\n *\n * @type {3000}\n */\nconst defaultReconnectionTime = 3000\n\n/**\n * The readyState attribute represents the state of the connection.\n * @enum\n * @readonly\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#dom-eventsource-readystate-dev\n */\n\n/**\n * The connection has not yet been established, or it was closed and the user\n * agent is reconnecting.\n * @type {0}\n */\nconst CONNECTING = 0\n\n/**\n * The user agent has an open connection and is dispatching events as it\n * receives them.\n * @type {1}\n */\nconst OPEN = 1\n\n/**\n * The connection is not open, and the user agent is not trying to reconnect.\n * @type {2}\n */\nconst CLOSED = 2\n\n/**\n * Requests for the element will have their mode set to \"cors\" and their credentials mode set to \"same-origin\".\n * @type {'anonymous'}\n */\nconst ANONYMOUS = 'anonymous'\n\n/**\n * Requests for the element will have their mode set to \"cors\" and their credentials mode set to \"include\".\n * @type {'use-credentials'}\n */\nconst USE_CREDENTIALS = 'use-credentials'\n\n/**\n * The EventSource interface is used to receive server-sent events. It\n * connects to a server over HTTP and receives events in text/event-stream\n * format without closing the connection.\n * @extends {EventTarget}\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events\n * @api public\n */\nclass EventSource extends EventTarget {\n #events = {\n open: null,\n error: null,\n message: null\n }\n\n #url = null\n #withCredentials = false\n\n #readyState = CONNECTING\n\n #request = null\n #controller = null\n\n #dispatcher\n\n /**\n * @type {import('./eventsource-stream').eventSourceSettings}\n */\n #state\n\n /**\n * Creates a new EventSource object.\n * @param {string} url\n * @param {EventSourceInit} [eventSourceInitDict]\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#the-eventsource-interface\n */\n constructor (url, eventSourceInitDict = {}) {\n // 1. Let ev be a new EventSource object.\n super()\n\n webidl.util.markAsUncloneable(this)\n\n const prefix = 'EventSource constructor'\n webidl.argumentLengthCheck(arguments, 1, prefix)\n\n if (!experimentalWarned) {\n experimentalWarned = true\n process.emitWarning('EventSource is experimental, expect them to change at any time.', {\n code: 'UNDICI-ES'\n })\n }\n\n url = webidl.converters.USVString(url, prefix, 'url')\n eventSourceInitDict = webidl.converters.EventSourceInitDict(eventSourceInitDict, prefix, 'eventSourceInitDict')\n\n this.#dispatcher = eventSourceInitDict.dispatcher\n this.#state = {\n lastEventId: '',\n reconnectionTime: defaultReconnectionTime\n }\n\n // 2. Let settings be ev's relevant settings object.\n // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n const settings = environmentSettingsObject\n\n let urlRecord\n\n try {\n // 3. Let urlRecord be the result of encoding-parsing a URL given url, relative to settings.\n urlRecord = new URL(url, settings.settingsObject.baseUrl)\n this.#state.origin = urlRecord.origin\n } catch (e) {\n // 4. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n throw new DOMException(e, 'SyntaxError')\n }\n\n // 5. Set ev's url to urlRecord.\n this.#url = urlRecord.href\n\n // 6. Let corsAttributeState be Anonymous.\n let corsAttributeState = ANONYMOUS\n\n // 7. If the value of eventSourceInitDict's withCredentials member is true,\n // then set corsAttributeState to Use Credentials and set ev's\n // withCredentials attribute to true.\n if (eventSourceInitDict.withCredentials) {\n corsAttributeState = USE_CREDENTIALS\n this.#withCredentials = true\n }\n\n // 8. Let request be the result of creating a potential-CORS request given\n // urlRecord, the empty string, and corsAttributeState.\n const initRequest = {\n redirect: 'follow',\n keepalive: true,\n // @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes\n mode: 'cors',\n credentials: corsAttributeState === 'anonymous'\n ? 'same-origin'\n : 'omit',\n referrer: 'no-referrer'\n }\n\n // 9. Set request's client to settings.\n initRequest.client = environmentSettingsObject.settingsObject\n\n // 10. User agents may set (`Accept`, `text/event-stream`) in request's header list.\n initRequest.headersList = [['accept', { name: 'accept', value: 'text/event-stream' }]]\n\n // 11. Set request's cache mode to \"no-store\".\n initRequest.cache = 'no-store'\n\n // 12. Set request's initiator type to \"other\".\n initRequest.initiator = 'other'\n\n initRequest.urlList = [new URL(this.#url)]\n\n // 13. Set ev's request to request.\n this.#request = makeRequest(initRequest)\n\n this.#connect()\n }\n\n /**\n * Returns the state of this EventSource object's connection. It can have the\n * values described below.\n * @returns {0|1|2}\n * @readonly\n */\n get readyState () {\n return this.#readyState\n }\n\n /**\n * Returns the URL providing the event stream.\n * @readonly\n * @returns {string}\n */\n get url () {\n return this.#url\n }\n\n /**\n * Returns a boolean indicating whether the EventSource object was\n * instantiated with CORS credentials set (true), or not (false, the default).\n */\n get withCredentials () {\n return this.#withCredentials\n }\n\n #connect () {\n if (this.#readyState === CLOSED) return\n\n this.#readyState = CONNECTING\n\n const fetchParams = {\n request: this.#request,\n dispatcher: this.#dispatcher\n }\n\n // 14. Let processEventSourceEndOfBody given response res be the following step: if res is not a network error, then reestablish the connection.\n const processEventSourceEndOfBody = (response) => {\n if (isNetworkError(response)) {\n this.dispatchEvent(new Event('error'))\n this.close()\n }\n\n this.#reconnect()\n }\n\n // 15. Fetch request, with processResponseEndOfBody set to processEventSourceEndOfBody...\n fetchParams.processResponseEndOfBody = processEventSourceEndOfBody\n\n // and processResponse set to the following steps given response res:\n fetchParams.processResponse = (response) => {\n // 1. If res is an aborted network error, then fail the connection.\n\n if (isNetworkError(response)) {\n // 1. When a user agent is to fail the connection, the user agent\n // must queue a task which, if the readyState attribute is set to a\n // value other than CLOSED, sets the readyState attribute to CLOSED\n // and fires an event named error at the EventSource object. Once the\n // user agent has failed the connection, it does not attempt to\n // reconnect.\n if (response.aborted) {\n this.close()\n this.dispatchEvent(new Event('error'))\n return\n // 2. Otherwise, if res is a network error, then reestablish the\n // connection, unless the user agent knows that to be futile, in\n // which case the user agent may fail the connection.\n } else {\n this.#reconnect()\n return\n }\n }\n\n // 3. Otherwise, if res's status is not 200, or if res's `Content-Type`\n // is not `text/event-stream`, then fail the connection.\n const contentType = response.headersList.get('content-type', true)\n const mimeType = contentType !== null ? parseMIMEType(contentType) : 'failure'\n const contentTypeValid = mimeType !== 'failure' && mimeType.essence === 'text/event-stream'\n if (\n response.status !== 200 ||\n contentTypeValid === false\n ) {\n this.close()\n this.dispatchEvent(new Event('error'))\n return\n }\n\n // 4. Otherwise, announce the connection and interpret res's body\n // line by line.\n\n // When a user agent is to announce the connection, the user agent\n // must queue a task which, if the readyState attribute is set to a\n // value other than CLOSED, sets the readyState attribute to OPEN\n // and fires an event named open at the EventSource object.\n // @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model\n this.#readyState = OPEN\n this.dispatchEvent(new Event('open'))\n\n // If redirected to a different origin, set the origin to the new origin.\n this.#state.origin = response.urlList[response.urlList.length - 1].origin\n\n const eventSourceStream = new EventSourceStream({\n eventSourceSettings: this.#state,\n push: (event) => {\n this.dispatchEvent(createFastMessageEvent(\n event.type,\n event.options\n ))\n }\n })\n\n pipeline(response.body.stream,\n eventSourceStream,\n (error) => {\n if (\n error?.aborted === false\n ) {\n this.close()\n this.dispatchEvent(new Event('error'))\n }\n })\n }\n\n this.#controller = fetching(fetchParams)\n }\n\n /**\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model\n * @returns {Promise<void>}\n */\n async #reconnect () {\n // When a user agent is to reestablish the connection, the user agent must\n // run the following steps. These steps are run in parallel, not as part of\n // a task. (The tasks that it queues, of course, are run like normal tasks\n // and not themselves in parallel.)\n\n // 1. Queue a task to run the following steps:\n\n // 1. If the readyState attribute is set to CLOSED, abort the task.\n if (this.#readyState === CLOSED) return\n\n // 2. Set the readyState attribute to CONNECTING.\n this.#readyState = CONNECTING\n\n // 3. Fire an event named error at the EventSource object.\n this.dispatchEvent(new Event('error'))\n\n // 2. Wait a delay equal to the reconnection time of the event source.\n await delay(this.#state.reconnectionTime)\n\n // 5. Queue a task to run the following steps:\n\n // 1. If the EventSource object's readyState attribute is not set to\n // CONNECTING, then return.\n if (this.#readyState !== CONNECTING) return\n\n // 2. Let request be the EventSource object's request.\n // 3. If the EventSource object's last event ID string is not the empty\n // string, then:\n // 1. Let lastEventIDValue be the EventSource object's last event ID\n // string, encoded as UTF-8.\n // 2. Set (`Last-Event-ID`, lastEventIDValue) in request's header\n // list.\n if (this.#state.lastEventId.length) {\n this.#request.headersList.set('last-event-id', this.#state.lastEventId, true)\n }\n\n // 4. Fetch request and process the response obtained in this fashion, if any, as described earlier in this section.\n this.#connect()\n }\n\n /**\n * Closes the connection, if any, and sets the readyState attribute to\n * CLOSED.\n */\n close () {\n webidl.brandCheck(this, EventSource)\n\n if (this.#readyState === CLOSED) return\n this.#readyState = CLOSED\n this.#controller.abort()\n this.#request = null\n }\n\n get onopen () {\n return this.#events.open\n }\n\n set onopen (fn) {\n if (this.#events.open) {\n this.removeEventListener('open', this.#events.open)\n }\n\n if (typeof fn === 'function') {\n this.#events.open = fn\n this.addEventListener('open', fn)\n } else {\n this.#events.open = null\n }\n }\n\n get onmessage () {\n return this.#events.message\n }\n\n set onmessage (fn) {\n if (this.#events.message) {\n this.removeEventListener('message', this.#events.message)\n }\n\n if (typeof fn === 'function') {\n this.#events.message = fn\n this.addEventListener('message', fn)\n } else {\n this.#events.message = null\n }\n }\n\n get onerror () {\n return this.#events.error\n }\n\n set onerror (fn) {\n if (this.#events.error) {\n this.removeEventListener('error', this.#events.error)\n }\n\n if (typeof fn === 'function') {\n this.#events.error = fn\n this.addEventListener('error', fn)\n } else {\n this.#events.error = null\n }\n }\n}\n\nconst constantsPropertyDescriptors = {\n CONNECTING: {\n __proto__: null,\n configurable: false,\n enumerable: true,\n value: CONNECTING,\n writable: false\n },\n OPEN: {\n __proto__: null,\n configurable: false,\n enumerable: true,\n value: OPEN,\n writable: false\n },\n CLOSED: {\n __proto__: null,\n configurable: false,\n enumerable: true,\n value: CLOSED,\n writable: false\n }\n}\n\nObject.defineProperties(EventSource, constantsPropertyDescriptors)\nObject.defineProperties(EventSource.prototype, constantsPropertyDescriptors)\n\nObject.defineProperties(EventSource.prototype, {\n close: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onmessage: kEnumerableProperty,\n onopen: kEnumerableProperty,\n readyState: kEnumerableProperty,\n url: kEnumerableProperty,\n withCredentials: kEnumerableProperty\n})\n\nwebidl.converters.EventSourceInitDict = webidl.dictionaryConverter([\n {\n key: 'withCredentials',\n converter: webidl.converters.boolean,\n defaultValue: () => false\n },\n {\n key: 'dispatcher', // undici only\n converter: webidl.converters.any\n }\n])\n\nmodule.exports = {\n EventSource,\n defaultReconnectionTime\n}\n"],"names":["require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10"],"mappings":";;;;;;;;;;;;;;;;;;;CAEA,MAAM,EAAE,QAAQ,EAAE,GAAG;CACrB,MAAM,EAAE,QAAQ,EAAE,GAAGA,YAAA;CACrB,MAAM,EAAE,WAAW,EAAE,GAAGC,cAAA;CACxB,MAAM,EAAE,MAAM,EAAE,GAAGC,aAAA;CACnB,MAAM,EAAE,iBAAiB,EAAE,GAAGC,wBAAA;CAC9B,MAAM,EAAE,aAAa,EAAE,GAAGC,cAAA;CAC1B,MAAM,EAAE,sBAAsB,EAAE,GAAGC,aAAA;CACnC,MAAM,EAAE,cAAc,EAAE,GAAGC,eAAA;CAC3B,MAAM,EAAE,KAAK,EAAE,GAAGC,WAAA;CAClB,MAAM,EAAE,mBAAmB,EAAE,GAAGC,aAAA;CAChC,MAAM,EAAE,yBAAyB,EAAE,GAAGC,aAAA;;AAEtC,CAAA,IAAI,kBAAkB,GAAG;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,uBAAuB,GAAG;;AAEhC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,UAAU,GAAG;;AAEnB;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,IAAI,GAAG;;AAEb;AACA;AACA;AACA;AACA,CAAA,MAAM,MAAM,GAAG;;AAEf;AACA;AACA;AACA;AACA,CAAA,MAAM,SAAS,GAAG;;AAElB;AACA;AACA;AACA;AACA,CAAA,MAAM,eAAe,GAAG;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,MAAM,WAAW,SAAS,WAAW,CAAC;AACtC,GAAE,OAAO,GAAG;KACR,IAAI,EAAE,IAAI;KACV,KAAK,EAAE,IAAI;AACf,KAAI,OAAO,EAAE;AACb;;AAEA,GAAE,IAAI,GAAG;AACT,GAAE,gBAAgB,GAAG;;AAErB,GAAE,WAAW,GAAG;;AAEhB,GAAE,QAAQ,GAAG;AACb,GAAE,WAAW,GAAG;;GAEd;;AAEF;AACA;AACA;GACE;;AAEF;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,CAAC,CAAC,GAAG,EAAE,mBAAmB,GAAG,EAAE,EAAE;AAC9C;AACA,KAAI,KAAK;;AAET,KAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI;;KAElC,MAAM,MAAM,GAAG;KACf,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM;;KAE/C,IAAI,CAAC,kBAAkB,EAAE;AAC7B,OAAM,kBAAkB,GAAG;AAC3B,OAAM,OAAO,CAAC,WAAW,CAAC,iEAAiE,EAAE;AAC7F,SAAQ,IAAI,EAAE;QACP;AACP,KAAA;;AAEA,KAAI,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK;AACxD,KAAI,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,MAAM,EAAE,qBAAqB;;AAElH,KAAI,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC;KACvC,IAAI,CAAC,MAAM,GAAG;OACZ,WAAW,EAAE,EAAE;AACrB,OAAM,gBAAgB,EAAE;AACxB;;AAEA;AACA;KACI,MAAM,QAAQ,GAAG;;AAErB,KAAI,IAAI;;AAER,KAAI,IAAI;AACR;OACM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO;AAC9D,OAAM,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;KACrC,CAAK,CAAC,OAAO,CAAC,EAAE;AAChB;AACA,OAAM,MAAM,IAAI,YAAY,CAAC,CAAC,EAAE,aAAa;AAC7C,KAAA;;AAEA;AACA,KAAI,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;;AAE1B;KACI,IAAI,kBAAkB,GAAG;;AAE7B;AACA;AACA;AACA,KAAI,IAAI,mBAAmB,CAAC,eAAe,EAAE;AAC7C,OAAM,kBAAkB,GAAG;OACrB,IAAI,CAAC,gBAAgB,GAAG;AAC9B,KAAA;;AAEA;AACA;KACI,MAAM,WAAW,GAAG;OAClB,QAAQ,EAAE,QAAQ;OAClB,SAAS,EAAE,IAAI;AACrB;OACM,IAAI,EAAE,MAAM;OACZ,WAAW,EAAE,kBAAkB,KAAK;WAChC;AACV,WAAU,MAAM;AAChB,OAAM,QAAQ,EAAE;AAChB;;AAEA;AACA,KAAI,WAAW,CAAC,MAAM,GAAG,yBAAyB,CAAC;;AAEnD;AACA,KAAI,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;;AAEzF;KACI,WAAW,CAAC,KAAK,GAAG;;AAExB;KACI,WAAW,CAAC,SAAS,GAAG;;KAExB,WAAW,CAAC,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE7C;AACA,KAAI,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,WAAW;;KAEvC,IAAI,CAAC,QAAQ;AACjB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,IAAI,UAAU,CAAC,GAAG;KAChB,OAAO,IAAI,CAAC;AAChB,GAAA;;AAEA;AACA;AACA;AACA;AACA;GACE,IAAI,GAAG,CAAC,GAAG;KACT,OAAO,IAAI,CAAC;AAChB,GAAA;;AAEA;AACA;AACA;AACA;GACE,IAAI,eAAe,CAAC,GAAG;KACrB,OAAO,IAAI,CAAC;AAChB,GAAA;;GAEE,QAAQ,CAAC,GAAG;AACd,KAAI,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE;;KAEjC,IAAI,CAAC,WAAW,GAAG;;KAEnB,MAAM,WAAW,GAAG;AACxB,OAAM,OAAO,EAAE,IAAI,CAAC,QAAQ;OACtB,UAAU,EAAE,IAAI,CAAC;AACvB;;AAEA;AACA,KAAI,MAAM,2BAA2B,GAAG,CAAC,QAAQ,KAAK;AACtD,OAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE;SAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;SACrC,IAAI,CAAC,KAAK;AAClB,OAAA;;OAEM,IAAI,CAAC,UAAU;AACrB,KAAA;;AAEA;KACI,WAAW,CAAC,wBAAwB,GAAG;;AAE3C;AACA,KAAI,WAAW,CAAC,eAAe,GAAG,CAAC,QAAQ,KAAK;AAChD;;AAEA,OAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE;WACpB,IAAI,CAAC,KAAK;WACV,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;WACrC;AACV;AACA;AACA;AACA,SAAA,CAAS,MAAM;WACL,IAAI,CAAC,UAAU;WACf;AACV,SAAA;AACA,OAAA;;AAEA;AACA;OACM,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI;OACjE,MAAM,QAAQ,GAAG,WAAW,KAAK,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG;OACrE,MAAM,gBAAgB,GAAG,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,KAAK;OACxE;AACN,SAAQ,QAAQ,CAAC,MAAM,KAAK,GAAG;AAC/B,SAAQ,gBAAgB,KAAK;SACrB;SACA,IAAI,CAAC,KAAK;SACV,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;SACrC;AACR,OAAA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;OACM,IAAI,CAAC,WAAW,GAAG;OACnB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;;AAE1C;AACA,OAAM,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;AAEzE,OAAM,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;AACtD,SAAQ,mBAAmB,EAAE,IAAI,CAAC,MAAM;AACxC,SAAQ,IAAI,EAAE,CAAC,KAAK,KAAK;AACzB,WAAU,IAAI,CAAC,aAAa,CAAC,sBAAsB;aACvC,KAAK,CAAC,IAAI;AACtB,aAAY,KAAK,CAAC;YACP;AACX,SAAA;QACO;;AAEP,OAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;AACnC,SAAQ,iBAAiB;SACjB,CAAC,KAAK,KAAK;WACT;aACE,KAAK,EAAE,OAAO,KAAK;aACnB;aACA,IAAI,CAAC,KAAK;aACV,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;AACjD,WAAA;SACA,CAAS;AACT,KAAA;;AAEA,KAAI,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW;AAC3C,GAAA;;AAEA;AACA;AACA;AACA;GACE,MAAM,UAAU,CAAC,GAAG;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAI,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE;;AAErC;KACI,IAAI,CAAC,WAAW,GAAG;;AAEvB;KACI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;;AAEzC;AACA,KAAI,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB;;AAE5C;;AAEA;AACA;AACA,KAAI,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;KACI,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE;AACxC,OAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI;AAClF,KAAA;;AAEA;KACI,IAAI,CAAC,QAAQ;AACjB,GAAA;;AAEA;AACA;AACA;AACA;GACE,KAAK,CAAC,GAAG;AACX,KAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW;;AAEvC,KAAI,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE;KACjC,IAAI,CAAC,WAAW,GAAG;AACvB,KAAI,IAAI,CAAC,WAAW,CAAC,KAAK;KACtB,IAAI,CAAC,QAAQ,GAAG;AACpB,GAAA;;GAEE,IAAI,MAAM,CAAC,GAAG;AAChB,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,GAAA;;AAEA,GAAE,IAAI,MAAM,CAAC,CAAC,EAAE,EAAE;AAClB,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;OACrB,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;AACxD,KAAA;;AAEA,KAAI,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAClC,OAAM,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG;AAC1B,OAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;AACtC,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG;AAC1B,KAAA;AACA,GAAA;;GAEE,IAAI,SAAS,CAAC,GAAG;AACnB,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,GAAA;;AAEA,GAAE,IAAI,SAAS,CAAC,CAAC,EAAE,EAAE;AACrB,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;OACxB,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AAC9D,KAAA;;AAEA,KAAI,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAClC,OAAM,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG;AAC7B,OAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE;AACzC,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG;AAC7B,KAAA;AACA,GAAA;;GAEE,IAAI,OAAO,CAAC,GAAG;AACjB,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,GAAA;;AAEA,GAAE,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE;AACnB,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;OACtB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1D,KAAA;;AAEA,KAAI,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAClC,OAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG;AAC3B,OAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE;AACvC,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG;AAC3B,KAAA;AACA,GAAA;AACA;;AAEA,CAAA,MAAM,4BAA4B,GAAG;AACrC,GAAE,UAAU,EAAE;KACV,SAAS,EAAE,IAAI;KACf,YAAY,EAAE,KAAK;KACnB,UAAU,EAAE,IAAI;KAChB,KAAK,EAAE,UAAU;AACrB,KAAI,QAAQ,EAAE;IACX;AACH,GAAE,IAAI,EAAE;KACJ,SAAS,EAAE,IAAI;KACf,YAAY,EAAE,KAAK;KACnB,UAAU,EAAE,IAAI;KAChB,KAAK,EAAE,IAAI;AACf,KAAI,QAAQ,EAAE;IACX;AACH,GAAE,MAAM,EAAE;KACN,SAAS,EAAE,IAAI;KACf,YAAY,EAAE,KAAK;KACnB,UAAU,EAAE,IAAI;KAChB,KAAK,EAAE,MAAM;AACjB,KAAI,QAAQ,EAAE;AACd;AACA;;AAEA,CAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,4BAA4B;AACjE,CAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,EAAE,4BAA4B;;AAE3E,CAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,EAAE;GAC7C,KAAK,EAAE,mBAAmB;GAC1B,OAAO,EAAE,mBAAmB;GAC5B,SAAS,EAAE,mBAAmB;GAC9B,MAAM,EAAE,mBAAmB;GAC3B,UAAU,EAAE,mBAAmB;GAC/B,GAAG,EAAE,mBAAmB;AAC1B,GAAE,eAAe,EAAE;EAClB;;CAED,MAAM,CAAC,UAAU,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;GACjE;KACE,GAAG,EAAE,iBAAiB;AAC1B,KAAI,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO;KACpC,YAAY,EAAE,MAAM;IACrB;GACD;KACE,GAAG,EAAE,YAAY;AACrB,KAAI,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC;AACjC;EACC;;AAED,CAAA,WAAc,GAAG;AACjB,GAAE,WAAW;GACX;AACF;;;;","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"eventsource.js","sources":["../../../../../../../../../node_modules/undici/lib/web/eventsource/eventsource.js"],"sourcesContent":["'use strict'\n\nconst { pipeline } = require('node:stream')\nconst { fetching } = require('../fetch')\nconst { makeRequest } = require('../fetch/request')\nconst { webidl } = require('../fetch/webidl')\nconst { EventSourceStream } = require('./eventsource-stream')\nconst { parseMIMEType } = require('../fetch/data-url')\nconst { createFastMessageEvent } = require('../websocket/events')\nconst { isNetworkError } = require('../fetch/response')\nconst { delay } = require('./util')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { environmentSettingsObject } = require('../fetch/util')\nconst { getGlobalDispatcher } = require('../../global')\n\nlet experimentalWarned = false\n\n/**\n * A reconnection time, in milliseconds. This must initially be an implementation-defined value,\n * probably in the region of a few seconds.\n *\n * In Comparison:\n * - Chrome uses 3000ms.\n * - Deno uses 5000ms.\n *\n * @type {3000}\n */\nconst defaultReconnectionTime = 3000\n\n/**\n * The readyState attribute represents the state of the connection.\n * @enum\n * @readonly\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#dom-eventsource-readystate-dev\n */\n\n/**\n * The connection has not yet been established, or it was closed and the user\n * agent is reconnecting.\n * @type {0}\n */\nconst CONNECTING = 0\n\n/**\n * The user agent has an open connection and is dispatching events as it\n * receives them.\n * @type {1}\n */\nconst OPEN = 1\n\n/**\n * The connection is not open, and the user agent is not trying to reconnect.\n * @type {2}\n */\nconst CLOSED = 2\n\n/**\n * Requests for the element will have their mode set to \"cors\" and their credentials mode set to \"same-origin\".\n * @type {'anonymous'}\n */\nconst ANONYMOUS = 'anonymous'\n\n/**\n * Requests for the element will have their mode set to \"cors\" and their credentials mode set to \"include\".\n * @type {'use-credentials'}\n */\nconst USE_CREDENTIALS = 'use-credentials'\n\n/**\n * The EventSource interface is used to receive server-sent events. It\n * connects to a server over HTTP and receives events in text/event-stream\n * format without closing the connection.\n * @extends {EventTarget}\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events\n * @api public\n */\nclass EventSource extends EventTarget {\n #events = {\n open: null,\n error: null,\n message: null\n }\n\n #url = null\n #withCredentials = false\n\n #readyState = CONNECTING\n\n #request = null\n #controller = null\n\n #dispatcher\n\n /**\n * @type {import('./eventsource-stream').eventSourceSettings}\n */\n #state\n\n /**\n * Creates a new EventSource object.\n * @param {string} url\n * @param {EventSourceInit} [eventSourceInitDict]\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#the-eventsource-interface\n */\n constructor (url, eventSourceInitDict = {}) {\n // 1. Let ev be a new EventSource object.\n super()\n\n webidl.util.markAsUncloneable(this)\n\n const prefix = 'EventSource constructor'\n webidl.argumentLengthCheck(arguments, 1, prefix)\n\n if (!experimentalWarned) {\n experimentalWarned = true\n process.emitWarning('EventSource is experimental, expect them to change at any time.', {\n code: 'UNDICI-ES'\n })\n }\n\n url = webidl.converters.USVString(url, prefix, 'url')\n eventSourceInitDict = webidl.converters.EventSourceInitDict(eventSourceInitDict, prefix, 'eventSourceInitDict')\n\n this.#dispatcher = eventSourceInitDict.dispatcher\n this.#state = {\n lastEventId: '',\n reconnectionTime: defaultReconnectionTime\n }\n\n // 2. Let settings be ev's relevant settings object.\n // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n const settings = environmentSettingsObject\n\n let urlRecord\n\n try {\n // 3. Let urlRecord be the result of encoding-parsing a URL given url, relative to settings.\n urlRecord = new URL(url, settings.settingsObject.baseUrl)\n this.#state.origin = urlRecord.origin\n } catch (e) {\n // 4. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n throw new DOMException(e, 'SyntaxError')\n }\n\n // 5. Set ev's url to urlRecord.\n this.#url = urlRecord.href\n\n // 6. Let corsAttributeState be Anonymous.\n let corsAttributeState = ANONYMOUS\n\n // 7. If the value of eventSourceInitDict's withCredentials member is true,\n // then set corsAttributeState to Use Credentials and set ev's\n // withCredentials attribute to true.\n if (eventSourceInitDict.withCredentials) {\n corsAttributeState = USE_CREDENTIALS\n this.#withCredentials = true\n }\n\n // 8. Let request be the result of creating a potential-CORS request given\n // urlRecord, the empty string, and corsAttributeState.\n const initRequest = {\n redirect: 'follow',\n keepalive: true,\n // @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes\n mode: 'cors',\n credentials: corsAttributeState === 'anonymous'\n ? 'same-origin'\n : 'omit',\n referrer: 'no-referrer'\n }\n\n // 9. Set request's client to settings.\n initRequest.client = environmentSettingsObject.settingsObject\n\n // 10. User agents may set (`Accept`, `text/event-stream`) in request's header list.\n initRequest.headersList = [['accept', { name: 'accept', value: 'text/event-stream' }]]\n\n // 11. Set request's cache mode to \"no-store\".\n initRequest.cache = 'no-store'\n\n // 12. Set request's initiator type to \"other\".\n initRequest.initiator = 'other'\n\n initRequest.urlList = [new URL(this.#url)]\n\n // 13. Set ev's request to request.\n this.#request = makeRequest(initRequest)\n\n this.#connect()\n }\n\n /**\n * Returns the state of this EventSource object's connection. It can have the\n * values described below.\n * @returns {0|1|2}\n * @readonly\n */\n get readyState () {\n return this.#readyState\n }\n\n /**\n * Returns the URL providing the event stream.\n * @readonly\n * @returns {string}\n */\n get url () {\n return this.#url\n }\n\n /**\n * Returns a boolean indicating whether the EventSource object was\n * instantiated with CORS credentials set (true), or not (false, the default).\n */\n get withCredentials () {\n return this.#withCredentials\n }\n\n #connect () {\n if (this.#readyState === CLOSED) return\n\n this.#readyState = CONNECTING\n\n const fetchParams = {\n request: this.#request,\n dispatcher: this.#dispatcher\n }\n\n // 14. Let processEventSourceEndOfBody given response res be the following step: if res is not a network error, then reestablish the connection.\n const processEventSourceEndOfBody = (response) => {\n if (isNetworkError(response)) {\n this.dispatchEvent(new Event('error'))\n this.close()\n }\n\n this.#reconnect()\n }\n\n // 15. Fetch request, with processResponseEndOfBody set to processEventSourceEndOfBody...\n fetchParams.processResponseEndOfBody = processEventSourceEndOfBody\n\n // and processResponse set to the following steps given response res:\n fetchParams.processResponse = (response) => {\n // 1. If res is an aborted network error, then fail the connection.\n\n if (isNetworkError(response)) {\n // 1. When a user agent is to fail the connection, the user agent\n // must queue a task which, if the readyState attribute is set to a\n // value other than CLOSED, sets the readyState attribute to CLOSED\n // and fires an event named error at the EventSource object. Once the\n // user agent has failed the connection, it does not attempt to\n // reconnect.\n if (response.aborted) {\n this.close()\n this.dispatchEvent(new Event('error'))\n return\n // 2. Otherwise, if res is a network error, then reestablish the\n // connection, unless the user agent knows that to be futile, in\n // which case the user agent may fail the connection.\n } else {\n this.#reconnect()\n return\n }\n }\n\n // 3. Otherwise, if res's status is not 200, or if res's `Content-Type`\n // is not `text/event-stream`, then fail the connection.\n const contentType = response.headersList.get('content-type', true)\n const mimeType = contentType !== null ? parseMIMEType(contentType) : 'failure'\n const contentTypeValid = mimeType !== 'failure' && mimeType.essence === 'text/event-stream'\n if (\n response.status !== 200 ||\n contentTypeValid === false\n ) {\n this.close()\n this.dispatchEvent(new Event('error'))\n return\n }\n\n // 4. Otherwise, announce the connection and interpret res's body\n // line by line.\n\n // When a user agent is to announce the connection, the user agent\n // must queue a task which, if the readyState attribute is set to a\n // value other than CLOSED, sets the readyState attribute to OPEN\n // and fires an event named open at the EventSource object.\n // @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model\n this.#readyState = OPEN\n this.dispatchEvent(new Event('open'))\n\n // If redirected to a different origin, set the origin to the new origin.\n this.#state.origin = response.urlList[response.urlList.length - 1].origin\n\n const eventSourceStream = new EventSourceStream({\n eventSourceSettings: this.#state,\n maxEventSize: this.#dispatcher.eventSourceOptions?.maxEventSize,\n push: (event) => {\n this.dispatchEvent(createFastMessageEvent(\n event.type,\n event.options\n ))\n }\n })\n\n pipeline(response.body.stream,\n eventSourceStream,\n (error) => {\n if (\n error?.aborted === false\n ) {\n this.close()\n this.dispatchEvent(new Event('error'))\n }\n })\n }\n\n this.#controller = fetching(fetchParams)\n }\n\n /**\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model\n * @returns {Promise<void>}\n */\n async #reconnect () {\n // When a user agent is to reestablish the connection, the user agent must\n // run the following steps. These steps are run in parallel, not as part of\n // a task. (The tasks that it queues, of course, are run like normal tasks\n // and not themselves in parallel.)\n\n // 1. Queue a task to run the following steps:\n\n // 1. If the readyState attribute is set to CLOSED, abort the task.\n if (this.#readyState === CLOSED) return\n\n // 2. Set the readyState attribute to CONNECTING.\n this.#readyState = CONNECTING\n\n // 3. Fire an event named error at the EventSource object.\n this.dispatchEvent(new Event('error'))\n\n // 2. Wait a delay equal to the reconnection time of the event source.\n await delay(this.#state.reconnectionTime)\n\n // 5. Queue a task to run the following steps:\n\n // 1. If the EventSource object's readyState attribute is not set to\n // CONNECTING, then return.\n if (this.#readyState !== CONNECTING) return\n\n // 2. Let request be the EventSource object's request.\n // 3. If the EventSource object's last event ID string is not the empty\n // string, then:\n // 1. Let lastEventIDValue be the EventSource object's last event ID\n // string, encoded as UTF-8.\n // 2. Set (`Last-Event-ID`, lastEventIDValue) in request's header\n // list.\n if (this.#state.lastEventId.length) {\n this.#request.headersList.set('last-event-id', this.#state.lastEventId, true)\n }\n\n // 4. Fetch request and process the response obtained in this fashion, if any, as described earlier in this section.\n this.#connect()\n }\n\n /**\n * Closes the connection, if any, and sets the readyState attribute to\n * CLOSED.\n */\n close () {\n webidl.brandCheck(this, EventSource)\n\n if (this.#readyState === CLOSED) return\n this.#readyState = CLOSED\n this.#controller.abort()\n this.#request = null\n }\n\n get onopen () {\n return this.#events.open\n }\n\n set onopen (fn) {\n if (this.#events.open) {\n this.removeEventListener('open', this.#events.open)\n }\n\n if (typeof fn === 'function') {\n this.#events.open = fn\n this.addEventListener('open', fn)\n } else {\n this.#events.open = null\n }\n }\n\n get onmessage () {\n return this.#events.message\n }\n\n set onmessage (fn) {\n if (this.#events.message) {\n this.removeEventListener('message', this.#events.message)\n }\n\n if (typeof fn === 'function') {\n this.#events.message = fn\n this.addEventListener('message', fn)\n } else {\n this.#events.message = null\n }\n }\n\n get onerror () {\n return this.#events.error\n }\n\n set onerror (fn) {\n if (this.#events.error) {\n this.removeEventListener('error', this.#events.error)\n }\n\n if (typeof fn === 'function') {\n this.#events.error = fn\n this.addEventListener('error', fn)\n } else {\n this.#events.error = null\n }\n }\n}\n\nconst constantsPropertyDescriptors = {\n CONNECTING: {\n __proto__: null,\n configurable: false,\n enumerable: true,\n value: CONNECTING,\n writable: false\n },\n OPEN: {\n __proto__: null,\n configurable: false,\n enumerable: true,\n value: OPEN,\n writable: false\n },\n CLOSED: {\n __proto__: null,\n configurable: false,\n enumerable: true,\n value: CLOSED,\n writable: false\n }\n}\n\nObject.defineProperties(EventSource, constantsPropertyDescriptors)\nObject.defineProperties(EventSource.prototype, constantsPropertyDescriptors)\n\nObject.defineProperties(EventSource.prototype, {\n close: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onmessage: kEnumerableProperty,\n onopen: kEnumerableProperty,\n readyState: kEnumerableProperty,\n url: kEnumerableProperty,\n withCredentials: kEnumerableProperty\n})\n\nwebidl.converters.EventSourceInitDict = webidl.dictionaryConverter([\n {\n key: 'withCredentials',\n converter: webidl.converters.boolean,\n defaultValue: () => false\n },\n {\n key: 'dispatcher', // undici only\n converter: webidl.converters.any,\n defaultValue: () => getGlobalDispatcher()\n }\n])\n\nmodule.exports = {\n EventSource,\n defaultReconnectionTime\n}\n"],"names":["require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1897,8 +1897,10 @@ function requireFetch () {
|
|
|
1897
1897
|
// 19. Run these steps in parallel:
|
|
1898
1898
|
|
|
1899
1899
|
// 1. Run these steps, but abort when fetchParams is canceled:
|
|
1900
|
-
fetchParams.controller.
|
|
1901
|
-
|
|
1900
|
+
if (!fetchParams.controller.resume) {
|
|
1901
|
+
fetchParams.controller.on('terminated', onAborted);
|
|
1902
|
+
}
|
|
1903
|
+
|
|
1902
1904
|
fetchParams.controller.resume = async () => {
|
|
1903
1905
|
// 1. While true
|
|
1904
1906
|
while (true) {
|
|
@@ -2067,8 +2069,6 @@ function requireFetch () {
|
|
|
2067
2069
|
}
|
|
2068
2070
|
location = headersList.get('location', true);
|
|
2069
2071
|
|
|
2070
|
-
this.body = new Readable({ read: resume });
|
|
2071
|
-
|
|
2072
2072
|
const decoders = [];
|
|
2073
2073
|
|
|
2074
2074
|
const willFollow = location && request.redirect === 'follow' &&
|
|
@@ -2086,7 +2086,7 @@ function requireFetch () {
|
|
|
2086
2086
|
// CVE fix similar to urllib3 (GHSA-gm62-xv2j-4w53) and curl (CVE-2022-32206).
|
|
2087
2087
|
const maxContentEncodings = 5;
|
|
2088
2088
|
if (codings.length > maxContentEncodings) {
|
|
2089
|
-
|
|
2089
|
+
this.abort(new Error(`too many content-encodings in response: ${codings.length}, maximum allowed is ${maxContentEncodings}`));
|
|
2090
2090
|
return true
|
|
2091
2091
|
}
|
|
2092
2092
|
|
|
@@ -2119,6 +2119,8 @@ function requireFetch () {
|
|
|
2119
2119
|
}
|
|
2120
2120
|
}
|
|
2121
2121
|
|
|
2122
|
+
this.body = new Readable({ read: resume });
|
|
2123
|
+
|
|
2122
2124
|
const onError = this.onError.bind(this);
|
|
2123
2125
|
|
|
2124
2126
|
resolve({
|
|
@@ -2165,10 +2167,6 @@ function requireFetch () {
|
|
|
2165
2167
|
fetchParams.controller.off('terminated', this.abort);
|
|
2166
2168
|
}
|
|
2167
2169
|
|
|
2168
|
-
if (fetchParams.controller.onAborted) {
|
|
2169
|
-
fetchParams.controller.off('terminated', fetchParams.controller.onAborted);
|
|
2170
|
-
}
|
|
2171
|
-
|
|
2172
2170
|
fetchParams.controller.ended = true;
|
|
2173
2171
|
|
|
2174
2172
|
this.body.push(null);
|