@outfoxx/sunday 1.0.9 → 1.0.10

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 (234) hide show
  1. package/LICENSE.txt +203 -0
  2. package/README.md +36 -2
  3. package/build/date-time-types.d.ts +35 -0
  4. package/build/date-time-types.js +699 -0
  5. package/build/date-time-types.js.map +1 -0
  6. package/build/event-parser.d.ts +17 -0
  7. package/build/event-parser.js +151 -0
  8. package/build/event-parser.js.map +1 -0
  9. package/build/fetch-event-source.d.ts +66 -0
  10. package/build/fetch-event-source.js +365 -0
  11. package/build/fetch-event-source.js.map +1 -0
  12. package/build/fetch-request-factory.d.ts +32 -0
  13. package/build/fetch-request-factory.js +316 -0
  14. package/build/fetch-request-factory.js.map +1 -0
  15. package/build/fetch.d.ts +9 -0
  16. package/build/fetch.js +140 -0
  17. package/build/fetch.js.map +1 -0
  18. package/build/header-parameters.d.ts +3 -0
  19. package/build/header-parameters.js +82 -0
  20. package/build/header-parameters.js.map +1 -0
  21. package/build/index.d.ts +26 -0
  22. package/build/index.js +41 -0
  23. package/build/index.js.map +1 -0
  24. package/{dist → build}/logger.d.ts +9 -0
  25. package/build/logger.js +36 -0
  26. package/build/logger.js.map +1 -0
  27. package/build/media-type-codecs/any-text-decoder.d.ts +7 -0
  28. package/build/media-type-codecs/any-text-decoder.js +29 -0
  29. package/build/media-type-codecs/any-text-decoder.js.map +1 -0
  30. package/build/media-type-codecs/any-text-encoder.d.ts +6 -0
  31. package/build/media-type-codecs/any-text-encoder.js +27 -0
  32. package/build/media-type-codecs/any-text-encoder.js.map +1 -0
  33. package/build/media-type-codecs/binary-decoder.d.ts +7 -0
  34. package/build/media-type-codecs/binary-decoder.js +33 -0
  35. package/build/media-type-codecs/binary-decoder.js.map +1 -0
  36. package/build/media-type-codecs/binary-encoder.d.ts +6 -0
  37. package/build/media-type-codecs/binary-encoder.js +30 -0
  38. package/build/media-type-codecs/binary-encoder.js.map +1 -0
  39. package/build/media-type-codecs/cbor-decoder.d.ts +13 -0
  40. package/build/media-type-codecs/cbor-decoder.js +38 -0
  41. package/build/media-type-codecs/cbor-decoder.js.map +1 -0
  42. package/build/media-type-codecs/cbor-encoder.d.ts +12 -0
  43. package/build/media-type-codecs/cbor-encoder.js +36 -0
  44. package/build/media-type-codecs/cbor-encoder.js.map +1 -0
  45. package/build/media-type-codecs/cbor-tags.d.ts +6 -0
  46. package/build/media-type-codecs/cbor-tags.js +20 -0
  47. package/build/media-type-codecs/cbor-tags.js.map +1 -0
  48. package/build/media-type-codecs/default-policies.d.ts +3 -0
  49. package/build/media-type-codecs/default-policies.js +33 -0
  50. package/build/media-type-codecs/default-policies.js.map +1 -0
  51. package/build/media-type-codecs/json-decoder.d.ts +14 -0
  52. package/build/media-type-codecs/json-decoder.js +40 -0
  53. package/build/media-type-codecs/json-decoder.js.map +1 -0
  54. package/build/media-type-codecs/json-encoder.d.ts +13 -0
  55. package/build/media-type-codecs/json-encoder.js +43 -0
  56. package/build/media-type-codecs/json-encoder.js.map +1 -0
  57. package/build/media-type-codecs/media-type-decoder.d.ts +14 -0
  58. package/build/media-type-codecs/media-type-decoder.js +18 -0
  59. package/build/media-type-codecs/media-type-decoder.js.map +1 -0
  60. package/build/media-type-codecs/media-type-decoders.d.ts +16 -0
  61. package/build/media-type-codecs/media-type-decoders.js +63 -0
  62. package/build/media-type-codecs/media-type-decoders.js.map +1 -0
  63. package/build/media-type-codecs/media-type-encoder.d.ts +12 -0
  64. package/build/media-type-codecs/media-type-encoder.js +22 -0
  65. package/build/media-type-codecs/media-type-encoder.js.map +1 -0
  66. package/build/media-type-codecs/media-type-encoders.d.ts +16 -0
  67. package/build/media-type-codecs/media-type-encoders.js +65 -0
  68. package/build/media-type-codecs/media-type-encoders.js.map +1 -0
  69. package/build/media-type-codecs/www-form-url-encoder.d.ts +31 -0
  70. package/build/media-type-codecs/www-form-url-encoder.js +281 -0
  71. package/build/media-type-codecs/www-form-url-encoder.js.map +1 -0
  72. package/build/media-type.d.ts +94 -0
  73. package/build/media-type.js +305 -0
  74. package/build/media-type.js.map +1 -0
  75. package/build/problem.d.ts +35 -0
  76. package/build/problem.js +122 -0
  77. package/build/problem.js.map +1 -0
  78. package/build/request-adapters.d.ts +23 -0
  79. package/build/request-adapters.js +53 -0
  80. package/build/request-adapters.js.map +1 -0
  81. package/build/request-factory.d.ts +39 -0
  82. package/build/request-factory.js +15 -0
  83. package/build/request-factory.js.map +1 -0
  84. package/build/result-response.d.ts +4 -0
  85. package/build/result-response.js +15 -0
  86. package/build/result-response.js.map +1 -0
  87. package/build/schema-builtins.d.ts +21 -0
  88. package/build/schema-builtins.js +201 -0
  89. package/build/schema-builtins.js.map +1 -0
  90. package/build/schema-policy.d.ts +31 -0
  91. package/build/schema-policy.js +41 -0
  92. package/build/schema-policy.js.map +1 -0
  93. package/build/schema-runtime.d.ts +25 -0
  94. package/build/schema-runtime.js +77 -0
  95. package/build/schema-runtime.js.map +1 -0
  96. package/build/sunday-error.d.ts +10 -0
  97. package/build/sunday-error.js +36 -0
  98. package/build/sunday-error.js.map +1 -0
  99. package/build/url-template.js +33 -0
  100. package/build/url-template.js.map +1 -0
  101. package/build/util/async-iterables.d.ts +15 -0
  102. package/build/util/async-iterables.js +179 -0
  103. package/build/util/async-iterables.js.map +1 -0
  104. package/build/util/errors.d.ts +2 -0
  105. package/build/util/errors.js +65 -0
  106. package/build/util/errors.js.map +1 -0
  107. package/build/util/nullify.d.ts +5 -0
  108. package/build/util/nullify.js +37 -0
  109. package/build/util/nullify.js.map +1 -0
  110. package/build/util/numbers.d.ts +11 -0
  111. package/build/util/numbers.js +41 -0
  112. package/build/util/numbers.js.map +1 -0
  113. package/build/util/subscriptions.d.ts +16 -0
  114. package/build/util/subscriptions.js +78 -0
  115. package/build/util/subscriptions.js.map +1 -0
  116. package/build/util/unknowns.d.ts +2 -0
  117. package/build/util/unknowns.js +23 -0
  118. package/build/util/unknowns.js.map +1 -0
  119. package/package.json +72 -49
  120. package/dist/any-type.d.ts +0 -2
  121. package/dist/any-type.js +0 -2
  122. package/dist/any-type.js.map +0 -1
  123. package/dist/binary-decoder.d.ts +0 -6
  124. package/dist/binary-decoder.js +0 -16
  125. package/dist/binary-decoder.js.map +0 -1
  126. package/dist/binary-encoder.d.ts +0 -5
  127. package/dist/binary-encoder.js +0 -13
  128. package/dist/binary-encoder.js.map +0 -1
  129. package/dist/cbor-decoder.d.ts +0 -15
  130. package/dist/cbor-decoder.js +0 -126
  131. package/dist/cbor-decoder.js.map +0 -1
  132. package/dist/cbor-encoder.d.ts +0 -29
  133. package/dist/cbor-encoder.js +0 -81
  134. package/dist/cbor-encoder.js.map +0 -1
  135. package/dist/cbor-tags.d.ts +0 -3
  136. package/dist/cbor-tags.js +0 -4
  137. package/dist/cbor-tags.js.map +0 -1
  138. package/dist/class-type.d.ts +0 -2
  139. package/dist/class-type.js +0 -2
  140. package/dist/class-type.js.map +0 -1
  141. package/dist/date-time-types.d.ts +0 -7
  142. package/dist/date-time-types.js +0 -5
  143. package/dist/date-time-types.js.map +0 -1
  144. package/dist/fetch-event-source.d.ts +0 -52
  145. package/dist/fetch-event-source.js +0 -271
  146. package/dist/fetch-event-source.js.map +0 -1
  147. package/dist/fetch-request-factory.d.ts +0 -26
  148. package/dist/fetch-request-factory.js +0 -125
  149. package/dist/fetch-request-factory.js.map +0 -1
  150. package/dist/fetch.d.ts +0 -1
  151. package/dist/fetch.js +0 -19
  152. package/dist/fetch.js.map +0 -1
  153. package/dist/http-error.d.ts +0 -10
  154. package/dist/http-error.js +0 -45
  155. package/dist/http-error.js.map +0 -1
  156. package/dist/index.d.ts +0 -25
  157. package/dist/index.js +0 -26
  158. package/dist/index.js.map +0 -1
  159. package/dist/json-decoder.d.ts +0 -31
  160. package/dist/json-decoder.js +0 -139
  161. package/dist/json-decoder.js.map +0 -1
  162. package/dist/json-encoder.d.ts +0 -35
  163. package/dist/json-encoder.js +0 -134
  164. package/dist/json-encoder.js.map +0 -1
  165. package/dist/logger.js +0 -2
  166. package/dist/logger.js.map +0 -1
  167. package/dist/media-type-decoder.d.ts +0 -4
  168. package/dist/media-type-decoder.js +0 -2
  169. package/dist/media-type-decoder.js.map +0 -1
  170. package/dist/media-type-decoders.d.ts +0 -17
  171. package/dist/media-type-decoders.js +0 -40
  172. package/dist/media-type-decoders.js.map +0 -1
  173. package/dist/media-type-encoder.d.ts +0 -8
  174. package/dist/media-type-encoder.js +0 -6
  175. package/dist/media-type-encoder.js.map +0 -1
  176. package/dist/media-type-encoders.d.ts +0 -17
  177. package/dist/media-type-encoders.js +0 -42
  178. package/dist/media-type-encoders.js.map +0 -1
  179. package/dist/media-type.d.ts +0 -14
  180. package/dist/media-type.js +0 -18
  181. package/dist/media-type.js.map +0 -1
  182. package/dist/problem.d.ts +0 -16
  183. package/dist/problem.js +0 -11
  184. package/dist/problem.js.map +0 -1
  185. package/dist/request-factory.d.ts +0 -38
  186. package/dist/request-factory.js +0 -2
  187. package/dist/request-factory.js.map +0 -1
  188. package/dist/url-encoder.d.ts +0 -59
  189. package/dist/url-encoder.js +0 -141
  190. package/dist/url-encoder.js.map +0 -1
  191. package/dist/url-template.js +0 -18
  192. package/dist/url-template.js.map +0 -1
  193. package/dist/util/base64.d.ts +0 -5
  194. package/dist/util/base64.js +0 -64
  195. package/dist/util/base64.js.map +0 -1
  196. package/dist/util/hex.d.ts +0 -4
  197. package/dist/util/hex.js +0 -18
  198. package/dist/util/hex.js.map +0 -1
  199. package/dist/util/rxjs.d.ts +0 -2
  200. package/dist/util/rxjs.js +0 -14
  201. package/dist/util/rxjs.js.map +0 -1
  202. package/dist/util/stream-rxjs.d.ts +0 -2
  203. package/dist/util/stream-rxjs.js +0 -26
  204. package/dist/util/stream-rxjs.js.map +0 -1
  205. package/src/any-type.ts +0 -4
  206. package/src/binary-decoder.ts +0 -24
  207. package/src/binary-encoder.ts +0 -19
  208. package/src/cbor-decoder.ts +0 -148
  209. package/src/cbor-encoder.ts +0 -95
  210. package/src/cbor-tags.ts +0 -3
  211. package/src/class-type.ts +0 -3
  212. package/src/date-time-types.ts +0 -10
  213. package/src/fetch-event-source.ts +0 -387
  214. package/src/fetch-request-factory.ts +0 -225
  215. package/src/fetch.ts +0 -30
  216. package/src/http-error.ts +0 -55
  217. package/src/index.ts +0 -26
  218. package/src/json-decoder.ts +0 -164
  219. package/src/json-encoder.ts +0 -162
  220. package/src/logger.ts +0 -8
  221. package/src/media-type-decoder.ts +0 -5
  222. package/src/media-type-decoders.ts +0 -59
  223. package/src/media-type-encoder.ts +0 -16
  224. package/src/media-type-encoders.ts +0 -61
  225. package/src/media-type.ts +0 -25
  226. package/src/problem.ts +0 -25
  227. package/src/request-factory.ts +0 -76
  228. package/src/url-encoder.ts +0 -173
  229. package/src/url-template.ts +0 -21
  230. package/src/util/base64.ts +0 -77
  231. package/src/util/hex.ts +0 -15
  232. package/src/util/rxjs.ts +0 -18
  233. package/src/util/stream-rxjs.ts +0 -28
  234. /package/{dist → build}/url-template.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-time-types.js","sourceRoot":"","sources":["../src/date-time-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface EventInfo {
2
+ id?: string;
3
+ event?: string;
4
+ data?: string;
5
+ retry?: string;
6
+ }
7
+ export declare class EventParser {
8
+ private readonly decoder;
9
+ private unprocessedBuffer?;
10
+ process(buffer: ArrayBuffer, dispatcher: (eventInfo: EventInfo) => void): void;
11
+ private buildAvailableBuffer;
12
+ private extractEventStringsFromBuffer;
13
+ private static findEventSeparator;
14
+ private static parseAndDispatchEvents;
15
+ private static parseEvent;
16
+ private static trimFieldValue;
17
+ }
@@ -0,0 +1,151 @@
1
+ // Copyright 2020 Outfox, Inc.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ export class EventParser {
15
+ decoder = new TextDecoder('utf-8');
16
+ unprocessedBuffer;
17
+ process(buffer, dispatcher) {
18
+ const availableBuffer = this.buildAvailableBuffer(buffer);
19
+ if (!availableBuffer) {
20
+ return;
21
+ }
22
+ const eventStrings = this.extractEventStringsFromBuffer(availableBuffer);
23
+ if (!eventStrings.length) {
24
+ return;
25
+ }
26
+ EventParser.parseAndDispatchEvents(eventStrings, dispatcher);
27
+ }
28
+ buildAvailableBuffer(buffer) {
29
+ const unprocessedBuffer = this.unprocessedBuffer;
30
+ this.unprocessedBuffer = undefined;
31
+ if (!buffer.byteLength) {
32
+ return unprocessedBuffer;
33
+ }
34
+ else if (!unprocessedBuffer?.byteLength) {
35
+ return buffer;
36
+ }
37
+ const newBuffer = new Uint8Array(unprocessedBuffer.byteLength + buffer.byteLength);
38
+ newBuffer.set(new Uint8Array(unprocessedBuffer), 0);
39
+ newBuffer.set(new Uint8Array(buffer), unprocessedBuffer.byteLength);
40
+ return newBuffer.buffer;
41
+ }
42
+ extractEventStringsFromBuffer(buffer) {
43
+ const eventStrings = [];
44
+ while (buffer.byteLength) {
45
+ // Find end of next event separator in buffer, exiting if none found.
46
+ const eventSeparator = EventParser.findEventSeparator(buffer);
47
+ if (!eventSeparator) {
48
+ // Save unprocessed data
49
+ this.unprocessedBuffer = buffer;
50
+ break;
51
+ }
52
+ const [endOfCurrentEventIdx, startOfNextEventIdx] = eventSeparator;
53
+ const eventBuffer = buffer.slice(0, endOfCurrentEventIdx);
54
+ buffer = buffer.slice(startOfNextEventIdx);
55
+ const eventString = this.decoder.decode(eventBuffer, {
56
+ stream: true,
57
+ });
58
+ eventStrings.push(eventString);
59
+ }
60
+ return eventStrings;
61
+ }
62
+ static findEventSeparator(buffer) {
63
+ const bytes = new Uint8Array(buffer);
64
+ for (let idx = 0; idx < bytes.length; ++idx) {
65
+ const byte = bytes[idx];
66
+ switch (byte) {
67
+ // line-feed
68
+ case 0xa: {
69
+ // if the next byte is the
70
+ // same, we found a separator
71
+ if (bytes[idx + 1] == 0xa) {
72
+ return [idx, idx + 2];
73
+ }
74
+ break;
75
+ }
76
+ // carriage-return
77
+ case 0xd: {
78
+ // if the next byte is the
79
+ // same, we found a separator
80
+ if (bytes[idx + 1] == 0xd) {
81
+ return [idx, idx + 2];
82
+ }
83
+ // if next is line-feed, and pattern
84
+ // repeats, we found a separator.
85
+ if (bytes[idx + 1] == 0xa &&
86
+ bytes[idx + 2] == 0xd &&
87
+ bytes[idx + 3] == 0xa) {
88
+ return [idx, idx + 4];
89
+ }
90
+ break;
91
+ }
92
+ default:
93
+ }
94
+ }
95
+ return undefined;
96
+ }
97
+ static parseAndDispatchEvents(eventStrings, dispatcher) {
98
+ for (const eventString of eventStrings) {
99
+ if (!eventString.length) {
100
+ continue;
101
+ }
102
+ const parsedEvent = EventParser.parseEvent(eventString);
103
+ dispatcher(parsedEvent);
104
+ }
105
+ }
106
+ static parseEvent(eventString) {
107
+ const event = {};
108
+ for (const line of eventString.split(lineSeparatorsRegEx)) {
109
+ const keyValueSeparatorIdx = line.indexOf(':');
110
+ let key;
111
+ let value;
112
+ if (keyValueSeparatorIdx != -1) {
113
+ key = line.slice(0, keyValueSeparatorIdx);
114
+ value = line.slice(keyValueSeparatorIdx + 1);
115
+ }
116
+ else {
117
+ key = line;
118
+ value = '';
119
+ }
120
+ switch (key) {
121
+ case 'retry':
122
+ event.retry = EventParser.trimFieldValue(value);
123
+ break;
124
+ case 'data': {
125
+ const data = event.data ?? '';
126
+ event.data = `${data}${EventParser.trimFieldValue(value)}\n`;
127
+ break;
128
+ }
129
+ case '':
130
+ // comment do nothing
131
+ break;
132
+ default: {
133
+ event[key] =
134
+ EventParser.trimFieldValue(value);
135
+ }
136
+ }
137
+ }
138
+ if (event.data?.[event.data?.length - 1] == '\n') {
139
+ event.data = event.data.slice(0, -1);
140
+ }
141
+ return event;
142
+ }
143
+ static trimFieldValue(value) {
144
+ if (value[0] !== ' ') {
145
+ return value;
146
+ }
147
+ return value.slice(1);
148
+ }
149
+ }
150
+ const lineSeparatorsRegEx = /\r\n|\r|\n/;
151
+ //# sourceMappingURL=event-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-parser.js","sourceRoot":"","sources":["../src/event-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { Logger } from './logger.js';
2
+ import { ExtEventSource } from './request-factory.js';
3
+ export interface FetchEventSource {
4
+ addEventListener<K extends keyof EventSourceEventMap>(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5
+ removeEventListener<K extends keyof EventSourceEventMap>(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6
+ }
7
+ export declare class FetchEventSource extends EventTarget implements ExtEventSource {
8
+ private static readonly LAST_EVENT_ID_HEADER;
9
+ private static readonly MAX_RETRY_TIME_MULTIPLIER;
10
+ private static readonly RETRY_EXPONENT;
11
+ private static readonly EVENT_TIMEOUT_DEFAULT;
12
+ private static readonly EVENT_TIMEOUT_CHECK_INTERVAL_DEFAULT;
13
+ readonly CONNECTING = 0;
14
+ readonly OPEN = 1;
15
+ readonly CLOSED = 2;
16
+ readyState: number;
17
+ url: string;
18
+ withCredentials: boolean;
19
+ onerror: ((this: EventSource, ev: Event) => unknown) | null;
20
+ onmessage: ((this: EventSource, ev: MessageEvent) => unknown) | null;
21
+ onopen: ((this: EventSource, ev: Event) => unknown) | null;
22
+ get retryTime(): number;
23
+ private readonly adapter;
24
+ private readonly signal?;
25
+ private connectionAbortController?;
26
+ private connectionReader?;
27
+ private externalAbortSignal?;
28
+ private externalAbortHandler?;
29
+ private internalRetryTime;
30
+ private retryAttempt;
31
+ private connectionAttemptTime;
32
+ private connectionOrigin?;
33
+ private reconnectTimeoutHandle?;
34
+ private lastEventId?;
35
+ private readonly logger?;
36
+ private readonly eventTimeout?;
37
+ private readonly eventTimeoutCheckInterval;
38
+ private eventTimeoutCheckHandle?;
39
+ private lastEventReceivedTime;
40
+ private readonly eventParser;
41
+ constructor(url: string, eventSourceInit?: EventSourceInit & {
42
+ adapter?: (url: string, requestInit: RequestInit) => Promise<Request>;
43
+ signal?: AbortSignal;
44
+ eventTimeout?: number;
45
+ eventTimeoutCheckInterval?: number;
46
+ logger?: Logger;
47
+ });
48
+ connect(): void;
49
+ private internalConnect;
50
+ close(): void;
51
+ private internalClose;
52
+ private updateLastEventReceived;
53
+ private startEventTimeoutCheck;
54
+ private stopEventTimeoutCheck;
55
+ private checkEventTimeout;
56
+ private receivedHeaders;
57
+ private receivedData;
58
+ private receivedError;
59
+ private receivedComplete;
60
+ private scheduleReconnect;
61
+ private static calculateRetryTime;
62
+ private clearReconnect;
63
+ private readonly dispatchParsedEvent;
64
+ fireErrorEvent(error: unknown): void;
65
+ private abortConnection;
66
+ }
@@ -0,0 +1,365 @@
1
+ // Copyright 2020 Outfox, Inc.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import { EventParser } from './event-parser.js';
15
+ import { validate } from './fetch.js';
16
+ import { levelLogger, LogLevel } from './logger.js';
17
+ import { MediaType } from './media-type.js';
18
+ import { unknownSet } from './util/unknowns.js';
19
+ export class FetchEventSource extends EventTarget {
20
+ 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;
24
+ static EVENT_TIMEOUT_CHECK_INTERVAL_DEFAULT = 2 * 1000;
25
+ CONNECTING = 0;
26
+ OPEN = 1;
27
+ CLOSED = 2;
28
+ readyState = this.CLOSED;
29
+ url;
30
+ withCredentials = false;
31
+ onerror = null;
32
+ onmessage = null;
33
+ onopen = null;
34
+ get retryTime() {
35
+ return this.internalRetryTime;
36
+ }
37
+ adapter;
38
+ signal;
39
+ connectionAbortController;
40
+ connectionReader;
41
+ externalAbortSignal;
42
+ externalAbortHandler;
43
+ internalRetryTime = 100;
44
+ retryAttempt = 0;
45
+ connectionAttemptTime;
46
+ connectionOrigin;
47
+ reconnectTimeoutHandle;
48
+ lastEventId;
49
+ logger;
50
+ eventTimeout;
51
+ eventTimeoutCheckInterval;
52
+ eventTimeoutCheckHandle;
53
+ lastEventReceivedTime = 0;
54
+ eventParser = new EventParser();
55
+ constructor(url, eventSourceInit) {
56
+ super();
57
+ this.url = url;
58
+ this.adapter =
59
+ eventSourceInit?.adapter ??
60
+ ((_url, requestInit) => Promise.resolve(new Request(_url, requestInit)));
61
+ this.signal = eventSourceInit?.signal;
62
+ this.eventTimeout =
63
+ eventSourceInit?.eventTimeout ?? FetchEventSource.EVENT_TIMEOUT_DEFAULT;
64
+ this.eventTimeoutCheckInterval =
65
+ eventSourceInit?.eventTimeoutCheckInterval ??
66
+ FetchEventSource.EVENT_TIMEOUT_CHECK_INTERVAL_DEFAULT;
67
+ this.logger = levelLogger(LogLevel.Info, eventSourceInit?.logger);
68
+ }
69
+ //
70
+ // Connect
71
+ //
72
+ connect() {
73
+ if (this.readyState === this.CONNECTING || this.readyState === this.OPEN) {
74
+ this.logger?.trace?.('skipping connect', { state: this.readyState });
75
+ return;
76
+ }
77
+ this.internalConnect();
78
+ }
79
+ internalConnect() {
80
+ this.logger?.debug?.('connecting');
81
+ 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
+ this.abortConnection();
89
+ const connectionAbortController = new AbortController();
90
+ 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,
110
+ });
111
+ const validatedResponse = await validate(response, true, undefined, this.logger);
112
+ this.receivedHeaders(validatedResponse);
113
+ const body = validatedResponse.body;
114
+ if (!body) {
115
+ this.receivedComplete();
116
+ return;
117
+ }
118
+ const reader = body.getReader();
119
+ this.connectionReader = reader;
120
+ while (true) {
121
+ const result = await reader.read();
122
+ if (result.done) {
123
+ break;
124
+ }
125
+ this.receivedData(result.value);
126
+ }
127
+ this.receivedComplete();
128
+ })
129
+ .catch((error) => {
130
+ this.receivedError(error);
131
+ })
132
+ .finally(() => {
133
+ if (this.connectionReader) {
134
+ try {
135
+ this.connectionReader.releaseLock();
136
+ }
137
+ catch {
138
+ // ignore
139
+ }
140
+ }
141
+ this.connectionReader = undefined;
142
+ });
143
+ }
144
+ //
145
+ // Close
146
+ //
147
+ close() {
148
+ if (this.readyState === this.CLOSED) {
149
+ return;
150
+ }
151
+ this.logger?.debug?.('closing');
152
+ this.readyState = this.CLOSED;
153
+ this.internalClose();
154
+ }
155
+ internalClose() {
156
+ this.abortConnection();
157
+ this.clearReconnect();
158
+ this.stopEventTimeoutCheck();
159
+ }
160
+ //
161
+ // Event Timeout
162
+ //
163
+ updateLastEventReceived(time = Date.now()) {
164
+ this.lastEventReceivedTime = time;
165
+ }
166
+ startEventTimeoutCheck(lastEventReceivedTime) {
167
+ this.stopEventTimeoutCheck();
168
+ if (!this.eventTimeout) {
169
+ return;
170
+ }
171
+ this.updateLastEventReceived(lastEventReceivedTime);
172
+ this.logger?.trace?.('starting event timeout checks');
173
+ this.eventTimeoutCheckHandle = setInterval(() => this.checkEventTimeout(), this.eventTimeoutCheckInterval);
174
+ }
175
+ stopEventTimeoutCheck() {
176
+ if (this.eventTimeoutCheckHandle) {
177
+ this.logger?.trace?.('stopping event timeout checks');
178
+ clearInterval(this.eventTimeoutCheckHandle);
179
+ }
180
+ this.eventTimeoutCheckHandle = undefined;
181
+ }
182
+ checkEventTimeout() {
183
+ if (!this.eventTimeout) {
184
+ this.stopEventTimeoutCheck();
185
+ return;
186
+ }
187
+ this.logger?.trace?.('checking event timeout');
188
+ // Check elapsed time since last received event
189
+ const elapsed = Date.now() - this.lastEventReceivedTime;
190
+ if (elapsed > this.eventTimeout) {
191
+ this.logger?.debug?.('event timeout reached', {
192
+ elapsed,
193
+ });
194
+ this.fireErrorEvent(new Error('EventTimeout'));
195
+ this.scheduleReconnect();
196
+ }
197
+ }
198
+ //
199
+ // Connection Handlers
200
+ //
201
+ receivedHeaders(response) {
202
+ if (this.readyState !== this.CONNECTING) {
203
+ this.logger?.error?.('invalid readyState for receivedHeaders', {
204
+ readyState: this.readyState,
205
+ });
206
+ this.fireErrorEvent(new Error('InvalidState'));
207
+ this.scheduleReconnect();
208
+ return;
209
+ }
210
+ this.logger?.info?.('opened');
211
+ this.connectionOrigin = response.url;
212
+ this.retryAttempt = 0;
213
+ this.readyState = this.OPEN;
214
+ // Start event timeout check, treating this connection
215
+ // as the last time we received an event
216
+ this.startEventTimeoutCheck(Date.now());
217
+ 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);
241
+ }
242
+ receivedError(error) {
243
+ if (this.readyState === this.CLOSED) {
244
+ return;
245
+ }
246
+ this.logger?.debug?.('received error', { error });
247
+ this.fireErrorEvent(error);
248
+ if (this.readyState !== this.CLOSED) {
249
+ this.scheduleReconnect();
250
+ }
251
+ }
252
+ receivedComplete() {
253
+ if (this.readyState == this.CLOSED) {
254
+ return;
255
+ }
256
+ this.logger?.debug?.('received complete');
257
+ this.scheduleReconnect();
258
+ }
259
+ //
260
+ // Reconnection
261
+ //
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++;
269
+ this.readyState = this.CONNECTING;
270
+ this.logger?.debug?.('scheduling reconnect', { retryDelay });
271
+ this.reconnectTimeoutHandle = setTimeout(() => this.internalConnect(), retryDelay);
272
+ }
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);
284
+ }
285
+ return retryDelay;
286
+ }
287
+ clearReconnect() {
288
+ if (this.reconnectTimeoutHandle) {
289
+ clearTimeout(this.reconnectTimeoutHandle);
290
+ }
291
+ this.reconnectTimeoutHandle = undefined;
292
+ }
293
+ //
294
+ // Event Dispatch
295
+ //
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;
303
+ }
304
+ else {
305
+ this.logger?.warn?.('ignoring invalid retry timeout event', {
306
+ eventInfo,
307
+ });
308
+ }
309
+ }
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;
323
+ }
324
+ else {
325
+ this.logger?.warn?.('event id contains NULL byte, unable to use for last-event-id');
326
+ }
327
+ }
328
+ // Dispatch event
329
+ const event = new MessageEvent(eventInfo.event ?? 'message', {
330
+ data: eventInfo.data,
331
+ lastEventId: this.lastEventId,
332
+ origin: this.connectionOrigin,
333
+ });
334
+ this.onmessage?.(event);
335
+ this.dispatchEvent(event);
336
+ };
337
+ fireErrorEvent(error) {
338
+ const event = new Event('error');
339
+ unknownSet(event, 'error', error);
340
+ this.onerror?.(event);
341
+ }
342
+ abortConnection() {
343
+ if (this.connectionAbortController) {
344
+ this.connectionAbortController.abort();
345
+ }
346
+ this.connectionAbortController = undefined;
347
+ if (this.connectionReader) {
348
+ void this.connectionReader.cancel()
349
+ .catch(() => this.logger?.warn?.('failed to cancel connection reader'));
350
+ try {
351
+ this.connectionReader.releaseLock();
352
+ }
353
+ catch {
354
+ // ignore
355
+ }
356
+ }
357
+ this.connectionReader = undefined;
358
+ if (this.externalAbortSignal && this.externalAbortHandler) {
359
+ this.externalAbortSignal.removeEventListener('abort', this.externalAbortHandler);
360
+ }
361
+ this.externalAbortSignal = undefined;
362
+ this.externalAbortHandler = undefined;
363
+ }
364
+ }
365
+ //# sourceMappingURL=fetch-event-source.js.map