@elderbyte/ngx-starter 17.7.1 → 17.7.3
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EventStreamContentType, fetchEventSource } from '@microsoft/fetch-event-source';
|
|
2
2
|
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
3
3
|
import { BehaviorSubject, Subject } from 'rxjs';
|
|
4
|
-
import {
|
|
4
|
+
import { filter } from 'rxjs/operators';
|
|
5
5
|
export var ReactiveEventSourceState;
|
|
6
6
|
(function (ReactiveEventSourceState) {
|
|
7
7
|
ReactiveEventSourceState["IDLE"] = "IDLE";
|
|
@@ -11,12 +11,18 @@ export var ReactiveEventSourceState;
|
|
|
11
11
|
ReactiveEventSourceState["ERROR"] = "ERROR";
|
|
12
12
|
})(ReactiveEventSourceState || (ReactiveEventSourceState = {}));
|
|
13
13
|
export class ReactiveSSeMessage {
|
|
14
|
-
constructor(id, event,
|
|
14
|
+
constructor(id, event, dataRaw, retry) {
|
|
15
15
|
this.id = id;
|
|
16
16
|
this.event = event;
|
|
17
|
-
this.
|
|
17
|
+
this.dataRaw = dataRaw;
|
|
18
18
|
this.retry = retry;
|
|
19
19
|
}
|
|
20
|
+
json() {
|
|
21
|
+
return JSON.parse(this.dataRaw);
|
|
22
|
+
}
|
|
23
|
+
jsonAs() {
|
|
24
|
+
return this.json();
|
|
25
|
+
}
|
|
20
26
|
}
|
|
21
27
|
export class ReactiveFetchEventSource {
|
|
22
28
|
/***************************************************************************
|
|
@@ -45,10 +51,12 @@ export class ReactiveFetchEventSource {
|
|
|
45
51
|
* Fields *
|
|
46
52
|
* *
|
|
47
53
|
**************************************************************************/
|
|
54
|
+
this.EVENT_TYPE_DEFAULT = 'message';
|
|
55
|
+
this.RECONNECT_DELAY_MS = 3000;
|
|
48
56
|
this.log = LoggerFactory.getLogger(this.constructor.name);
|
|
49
|
-
this.abortController =
|
|
57
|
+
this.abortController = null;
|
|
50
58
|
this.state$ = new BehaviorSubject(ReactiveEventSourceState.IDLE);
|
|
51
|
-
this.
|
|
59
|
+
this.eventRelay = new Subject();
|
|
52
60
|
if (!requestInitProvider) {
|
|
53
61
|
throw new Error('You must provide a event source url provider!');
|
|
54
62
|
}
|
|
@@ -82,22 +90,15 @@ export class ReactiveFetchEventSource {
|
|
|
82
90
|
* Get an event stream for the given event type.
|
|
83
91
|
* @param eventTypeRaw The event type. Defaults to 'message'.
|
|
84
92
|
*/
|
|
85
|
-
|
|
93
|
+
streamEventsOfType(eventTypeRaw) {
|
|
86
94
|
const eventType = this.eventTypeOrDefault(eventTypeRaw);
|
|
87
|
-
|
|
88
|
-
this.eventTopics.set(eventType, new Subject());
|
|
89
|
-
}
|
|
90
|
-
const eventSubj = this.eventTopics.get(eventType);
|
|
91
|
-
return eventSubj.asObservable();
|
|
95
|
+
return this.streamEvents().pipe(filter(e => e.event == eventType));
|
|
92
96
|
}
|
|
93
97
|
/**
|
|
94
|
-
* Get an event stream
|
|
95
|
-
* (event.data must be in json format)
|
|
96
|
-
*
|
|
97
|
-
* @param eventType The event type. Defaults to 'message'.
|
|
98
|
+
* Get an event stream for all events no matter their type.
|
|
98
99
|
*/
|
|
99
|
-
|
|
100
|
-
return this.
|
|
100
|
+
streamEvents() {
|
|
101
|
+
return this.eventRelay.asObservable();
|
|
101
102
|
}
|
|
102
103
|
/**
|
|
103
104
|
* Close this event source. It won't reconnect.
|
|
@@ -133,7 +134,10 @@ export class ReactiveFetchEventSource {
|
|
|
133
134
|
*/
|
|
134
135
|
closeCurrent(reason) {
|
|
135
136
|
this.log.debug('Closing the event-source, reason: ' + reason);
|
|
136
|
-
this.abortController
|
|
137
|
+
const crt = this.abortController;
|
|
138
|
+
if (crt) {
|
|
139
|
+
crt.abort(reason);
|
|
140
|
+
}
|
|
137
141
|
}
|
|
138
142
|
/**
|
|
139
143
|
* Reconnects this event source, unless closed is true;
|
|
@@ -148,9 +152,10 @@ export class ReactiveFetchEventSource {
|
|
|
148
152
|
}
|
|
149
153
|
openEventSource() {
|
|
150
154
|
const requestInit = this.requestInitProvider();
|
|
155
|
+
const crt = this.abortController = new AbortController();
|
|
151
156
|
fetchEventSource(requestInit.request, {
|
|
152
157
|
method: requestInit.method,
|
|
153
|
-
signal:
|
|
158
|
+
signal: crt.signal,
|
|
154
159
|
headers: requestInit.headers,
|
|
155
160
|
keepalive: true,
|
|
156
161
|
openWhenHidden: false,
|
|
@@ -176,7 +181,7 @@ export class ReactiveFetchEventSource {
|
|
|
176
181
|
else {
|
|
177
182
|
this.log.error('Failed to open Event Source due to Error ' + response.status, response);
|
|
178
183
|
this.updateState(ReactiveEventSourceState.ERROR);
|
|
179
|
-
this.tryReconnect();
|
|
184
|
+
this.tryReconnect();
|
|
180
185
|
}
|
|
181
186
|
}
|
|
182
187
|
handleOnError(err) {
|
|
@@ -185,7 +190,7 @@ export class ReactiveFetchEventSource {
|
|
|
185
190
|
if (!this.closed) {
|
|
186
191
|
// There was an error - try reconnecting
|
|
187
192
|
this.log.debug('Attempting to reconnect event-source ...');
|
|
188
|
-
this.tryReconnect();
|
|
193
|
+
this.tryReconnect();
|
|
189
194
|
}
|
|
190
195
|
else {
|
|
191
196
|
this.log.debug('There was an error in the sse connection (closed).', err);
|
|
@@ -193,15 +198,12 @@ export class ReactiveFetchEventSource {
|
|
|
193
198
|
}
|
|
194
199
|
tryReconnect() {
|
|
195
200
|
if (!this._closed) {
|
|
196
|
-
setTimeout(() => this.reconnect(),
|
|
201
|
+
setTimeout(() => this.reconnect(), this.RECONNECT_DELAY_MS); // Delay the reconnect
|
|
197
202
|
}
|
|
198
203
|
}
|
|
199
204
|
handleOnMessage(msg) {
|
|
200
205
|
const eventType = this.eventTypeOrDefault(msg.event);
|
|
201
|
-
|
|
202
|
-
if (topic) {
|
|
203
|
-
topic.next(new ReactiveSSeMessage(msg.id, eventType, msg.data, msg.retry));
|
|
204
|
-
}
|
|
206
|
+
this.eventRelay.next(new ReactiveSSeMessage(msg.id, eventType, msg.data, msg.retry));
|
|
205
207
|
}
|
|
206
208
|
handleOnClose() {
|
|
207
209
|
this.log.debug('EventSource has closed.');
|
|
@@ -211,7 +213,7 @@ export class ReactiveFetchEventSource {
|
|
|
211
213
|
this.state$.next(state);
|
|
212
214
|
}
|
|
213
215
|
eventTypeOrDefault(type) {
|
|
214
|
-
return type ??
|
|
216
|
+
return type ?? this.EVENT_TYPE_DEFAULT;
|
|
215
217
|
}
|
|
216
218
|
}
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtZmV0Y2gtZXZlbnQtc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvZmVhdHVyZXMvZXZlbnQtc291cmNlL2ZldGNoL3JlYWN0aXZlLWZldGNoLWV2ZW50LXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLHNCQUFzQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDM0csT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxNQUFNLENBQU4sSUFBWSx3QkFNWDtBQU5ELFdBQVksd0JBQXdCO0lBQ2xDLHlDQUFhLENBQUE7SUFDYixxREFBeUIsQ0FBQTtJQUN6Qix5Q0FBYSxDQUFBO0lBQ2IsNkNBQWlCLENBQUE7SUFDakIsMkNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBTlcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQU1uQztBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDa0IsRUFBVSxFQUNWLEtBQWEsRUFDYixJQUFPLEVBQ1AsS0FBYztRQUhkLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDVixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsU0FBSSxHQUFKLElBQUksQ0FBRztRQUNQLFVBQUssR0FBTCxLQUFLLENBQVM7SUFDNUIsQ0FBQztDQUNOO0FBUUQsTUFBTSxPQUFPLHdCQUF3QjtJQWtCbkM7Ozs7Z0ZBSTRFO0lBRXJFLE1BQU0sQ0FBQyxhQUFhLENBQ3pCLFdBQW1DO1FBRW5DLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FB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LENBQUM7SUFDMUIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQWE7UUFDdEMsT0FBTyxJQUFJLElBQUksU0FBUyxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRTb3VyY2VNZXNzYWdlLCBFdmVudFN0cmVhbUNvbnRlbnRUeXBlLCBmZXRjaEV2ZW50U291cmNlfSBmcm9tICdAbWljcm9zb2Z0L2ZldGNoLWV2ZW50LXNvdXJjZSc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGVudW0gUmVhY3RpdmVFdmVudFNvdXJjZVN0YXRlIHtcbiAgSURMRSA9ICdJRExFJyxcbiAgQ09OTkVDVElORyA9ICdDT05ORUNUSU5HJyxcbiAgT1BFTiA9ICdPUEVOJyxcbiAgQ0xPU0VEID0gJ0NMT1NFRCcsXG4gIEVSUk9SID0gJ0VSUk9SJyxcbn1cblxuZXhwb3J0IGNsYXNzIFJlYWN0aXZlU1NlTWVzc2FnZTxUID0gc3RyaW5nPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBldmVudDogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBkYXRhOiBULFxuICAgIHB1YmxpYyByZWFkb25seSByZXRyeT86IG51bWJlcixcbiAgKSB7IH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmVudFNvdXJjZVJlcXVlc3RJbml0IHtcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIG1ldGhvZD86IHN0cmluZyxcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbn1cblxuZXhwb3J0IGNsYXNzIFJlYWN0aXZlRmV0Y2hFdmVudFNvdXJjZTxUID0gYW55PiB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuICBwcml2YXRlIF9jbG9zZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWFjdGl2ZUV2ZW50U291cmNlU3RhdGU+KFJlYWN0aXZlRXZlbnRTb3VyY2VTdGF0ZS5JRExFKTtcbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50VG9waWNzID0gbmV3IE1hcDxzdHJpbmcsIFN1YmplY3Q8UmVhY3RpdmVTU2VNZXNzYWdlPj4oKTtcblxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBTdGF0aWMgQnVpbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBzdGF0aWMgc3RhdGljUmVxdWVzdDxUPihcbiAgICByZXF1ZXN0SW5pdDogRXZlbnRTb3VyY2VSZXF1ZXN0SW5pdCxcbiAgKTogUmVhY3RpdmVGZXRjaEV2ZW50U291cmNlPFQ+IHtcbiAgICBpZiAoIXJlcXVlc3RJbml0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IHByb3ZpZGUgYSBldmVudCBzb3VyY2UgdXJsIScpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFJlYWN0aXZlRmV0Y2hFdmVudFNvdXJjZSgoKSA9PiByZXF1ZXN0SW5pdCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGR5bmFtaWNSZXF1ZXN0PFQ+KFxuICAgIHJlcXVlc3RJbml0UHJvdmlkZXI6ICgpID0+IEV2ZW50U291cmNlUmVxdWVzdEluaXRcbiAgKTogUmVhY3RpdmVGZXRjaEV2ZW50U291cmNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IFJlYWN0aXZlRmV0Y2hFdmVudFNvdXJjZShyZXF1ZXN0SW5pdFByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXF1ZXN0SW5pdFByb3ZpZGVyOiAoKSA9PiBFdmVudFNvdXJjZVJlcXVlc3RJbml0LFxuICApIHtcbiAgICBpZiAoIXJlcXVlc3RJbml0UHJvdmlkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgcHJvdmlkZSBhIGV2ZW50IHNvdXJjZSB1cmwgcHJvdmlkZXIhJyk7XG4gICAgfVxuICAgIHRoaXMub3BlbigpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldCBjbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlZDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBldmVudCBzb3VyY2UuXG4gICAqXG4gICAqIE5vdGU6IFRoZSBjb25uZWN0aW9uIGlzIG9wZW5lZCBhdXRvbWF0aWNhbGx5IHVwb24gb2JqZWN0IGNyZWF0aW9uLlxuICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSB1c2VkIGlmIHRoaXMgcmVhY3RpdmUtZXZlbnQtc291cmNlIGhhc1xuICAgKiBiZWVuIGNsb3NlZCBleHBsaWNpdGx5LlxuICAgKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvc2VkID0gZmFsc2U7XG4gICAgdGhpcy5yZWNvbm5lY3QoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gZXZlbnQgc3RyZWFtIGZvciB0aGUgZ2l2ZW4gZXZlbnQgdHlwZS5cbiAgICogQHBhcmFtIGV2ZW50VHlwZVJhdyBUaGUgZXZlbnQgdHlwZS4gRGVmYXVsdHMgdG8gJ21lc3NhZ2UnLlxuICAgKi9cbiAgcHVibGljIGV2ZW50cyhldmVudFR5cGVSYXc/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlYWN0aXZlU1NlTWVzc2FnZT4ge1xuICAgIGNvbnN0IGV2ZW50VHlwZSA9IHRoaXMuZXZlbnRUeXBlT3JEZWZhdWx0KGV2ZW50VHlwZVJhdyk7XG4gICAgaWYgKCF0aGlzLmV2ZW50VG9waWNzLmhhcyhldmVudFR5cGUpKSB7XG4gICAgICB0aGlzLmV2ZW50VG9waWNzLnNldChldmVudFR5cGUsIG5ldyBTdWJqZWN0PFJlYWN0aXZlU1NlTWVzc2FnZT4oKSk7XG4gICAgfVxuICAgIGNvbnN0IGV2ZW50U3ViaiA9IHRoaXMuZXZlbnRUb3BpY3MuZ2V0KGV2ZW50VHlwZSk7XG4gICAgcmV0dXJuIGV2ZW50U3Viai5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gZXZlbnQgc3RyZWFtIG9mIG1lc3NhZ2VzIHBhcnNlZCBmcm9tIGpzb24uXG4gICAqIChldmVudC5kYXRhIG11c3QgYmUgaW4ganNvbiBmb3JtYXQpXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFR5cGUgVGhlIGV2ZW50IHR5cGUuIERlZmF1bHRzIHRvICdtZXNzYWdlJy5cbiAgICovXG4gIHB1YmxpYyBldmVudHNKc29uKGV2ZW50VHlwZT86IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50cyhldmVudFR5cGUpLnBpcGUoXG4gICAgICBtYXAoZXZlbnQgPT4gSlNPTi5wYXJzZShldmVudC5kYXRhKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoaXMgZXZlbnQgc291cmNlLiBJdCB3b24ndCByZWNvbm5lY3QuXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvc2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNsb3NlQ3VycmVudCgpO1xuICAgIHRoaXMubG9nLmRlYnVnKCdDbG9zaW5nIHRoZSBldmVudC1zb3VyY2UuJyk7XG4gIH1cblxuICAvKipcbiAgICogS2VlcHMgdGhpcyByZWFjdGl2ZSBldmVudCBzb3VyY2Ugb3BlbiB1bnRpbCB0aGUgZ2l2ZW4gb2JzZXJ2YWJsZSBlbWl0cyBhbiBldmVudC5cbiAgICogQHBhcmFtIHVuc3Vic2NyaWJlXG4gICAqL1xuICBwdWJsaWMgb3BlblVudGlsKHVuc3Vic2NyaWJlOiBPYnNlcnZhYmxlPGFueT4pOiB0aGlzIHtcbiAgICB0aGlzLmNsZWFuVXBPcGVuVW50aWwoKTtcbiAgICB0aGlzLl91bnN1YnNjcmliZVN1YiA9IHVuc3Vic2NyaWJlXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoKSA9PiB0aGlzLmNsb3NlKClcbiAgICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGNsZWFuVXBPcGVuVW50aWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Vuc3Vic2NyaWJlU3ViKSB7XG4gICAgICB0aGlzLl91bnN1YnNjcmliZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5fdW5zdWJzY3JpYmVTdWIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgY3VycmVudCBldmVudCBzb3VyY2VcbiAgICovXG4gIHByaXZhdGUgY2xvc2VDdXJyZW50KHJlYXNvbj86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubG9nLmRlYnVnKCdDbG9zaW5nIHRoZSBldmVudC1zb3VyY2UsIHJlYXNvbjogJyArIHJlYXNvbik7XG4gICAgdGhpcy5hYm9ydENvbnRyb2xsZXIuYWJvcnQocmVhc29uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbm5lY3RzIHRoaXMgZXZlbnQgc291cmNlLCB1bmxlc3MgY2xvc2VkIGlzIHRydWU7XG4gICAqL1xuICBwcml2YXRlIHJlY29ubmVjdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2xvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudXBkYXRlU3RhdGUoUmVhY3RpdmVFdmVudFNvdXJjZVN0YXRlLkNPTk5FQ1RJTkcpO1xuICAgIHRoaXMuY2xvc2VDdXJyZW50KCdSZWNvbm5lY3QnKTtcbiAgICB0aGlzLm9wZW5FdmVudFNvdXJjZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRXZlbnRTb3VyY2UoKTogdm9pZCB7XG4gICAgY29uc3QgcmVxdWVzdEluaXQgPSB0aGlzLnJlcXVlc3RJbml0UHJvdmlkZXIoKTtcbiAgICBmZXRjaEV2ZW50U291cmNlKHJlcXVlc3RJbml0LnJlcXVlc3QsIHtcbiAgICAgIG1ldGhvZDogcmVxdWVzdEluaXQubWV0aG9kLFxuICAgICAgc2lnbmFsOiB0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICBoZWFkZXJzOiByZXF1ZXN0SW5pdC5oZWFkZXJzLFxuICAgICAga2VlcGFsaXZlOiB0cnVlLFxuICAgICAgb3BlbldoZW5IaWRkZW46IGZhbHNlLFxuICAgICAgb25vcGVuOiByZXNwb25zZSA9PiB0aGlzLmhhbmRsZU9uT3BlbihyZXNwb25zZSksXG4gICAgICBvbm1lc3NhZ2U6IG1zZyA9PiB0aGlzLmhhbmRsZU9uTWVzc2FnZShtc2cpLFxuICAgICAgb25lcnJvcjogZXJyID0+IHRoaXMuaGFuZGxlT25FcnJvcihlcnIpLFxuICAgICAgb25jbG9zZTogKCkgPT4gdGhpcy5oYW5kbGVPbkNsb3NlKClcbiAgICB9KS50aGVuKHIgPT4ge1xuXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlT25PcGVuKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChyZXNwb25zZS5vayAmJiByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykgPT09IEV2ZW50U3RyZWFtQ29udGVudFR5cGUpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdFdmVudFNvdXJjZSBjb25uZWN0aW9uIHN1Y2Vzc2Z1bGx5IG9wZW5lZCB0bzogJyArIHJlc3BvbnNlLnVybCArXG4gICAgICAgICcsIHN0YXRlOiAnICsgcmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZSk7XG4gICAgICB0aGlzLnVwZGF0ZVN0YXRlKFJlYWN0aXZlRXZlbnRTb3VyY2VTdGF0ZS5PUEVOKTtcbiAgICAgIHJldHVybjsgLy8gZXZlcnl0aGluZydzIGdvb2RcbiAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDAgJiYgcmVzcG9uc2Uuc3RhdHVzIDwgNTAwICYmIHJlc3BvbnNlLnN0YXR1cyAhPT0gNDI5KSB7XG4gICAgICAvLyBjbGllbnQtc2lkZSBlcnJvcnMgYXJlIHVzdWFsbHkgbm9uLXJldHJpYWJsZTpcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoUmVhY3RpdmVFdmVudFNvdXJjZVN0YXRlLkVSUk9SKTtcbiAgICAgIHRoaXMubG9nLmVycm9yKCdGYWlsZWQgdG8gb3BlbiBFdmVudCBTb3VyY2UgZHVlIHRvIENsaWVudCBFcnJvciAnICsgcmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nLmVycm9yKCdGYWlsZWQgdG8gb3BlbiBFdmVudCBTb3VyY2UgZHVlIHRvIEVycm9yICcgKyByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlKTtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoUmVhY3RpdmVFdmVudFNvdXJjZVN0YXRlLkVSUk9SKTtcbiAgICAgIHRoaXMudHJ5UmVjb25uZWN0KCk7IC8vIFRPRE8gTmVjZXNzYXJ5IGlmIGtlZXAgYWxpdmUgPSB0cnVlP1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlT25FcnJvcihlcnI6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoUmVhY3RpdmVFdmVudFNvdXJjZVN0YXRlLkVSUk9SKTtcbiAgICB0aGlzLmxvZy50cmFjZSgnVGhlcmUgd2FzIGFuIFNTRSBlcnJvci4nLCBlcnIpO1xuICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgIC8vIFRoZXJlIHdhcyBhbiBlcnJvciAtIHRyeSByZWNvbm5lY3RpbmdcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdBdHRlbXB0aW5nIHRvIHJlY29ubmVjdCBldmVudC1zb3VyY2UgLi4uJyk7XG4gICAgICB0aGlzLnRyeVJlY29ubmVjdCgpOyAvLyBUT0RPIE5lY2Vzc2FyeSBpZiBrZWVwIGFsaXZlID0gdHJ1ZT9cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ1RoZXJlIHdhcyBhbiBlcnJvciBpbiB0aGUgc3NlIGNvbm5lY3Rpb24gKGNsb3NlZCkuJywgZXJyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyeVJlY29ubmVjdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2Nsb3NlZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlY29ubmVjdCgpLCAzMDAwKTsgLy8gRGVsYXkgdGhlIHJlY29ubmVjdFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlT25NZXNzYWdlKG1zZzogRXZlbnRTb3VyY2VNZXNzYWdlKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRUeXBlID0gdGhpcy5ldmVudFR5cGVPckRlZmF1bHQobXNnLmV2ZW50KTtcbiAgICBjb25zdCB0b3BpYyA9IHRoaXMuZXZlbnRUb3BpY3MuZ2V0KGV2ZW50VHlwZSk7XG4gICAgaWYgKHRvcGljKSB7XG4gICAgICB0b3BpYy5uZXh0KG5ldyBSZWFjdGl2ZVNTZU1lc3NhZ2UoXG4gICAgICAgIG1zZy5pZCxcbiAgICAgICAgZXZlbnRUeXBlLFxuICAgICAgICBtc2cuZGF0YSxcbiAgICAgICAgbXNnLnJldHJ5XG4gICAgICApKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlT25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnRXZlbnRTb3VyY2UgaGFzIGNsb3NlZC4nKVxuICAgIHRoaXMudXBkYXRlU3RhdGUoUmVhY3RpdmVFdmVudFNvdXJjZVN0YXRlLkNMT1NFRCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXRlKHN0YXRlOiBSZWFjdGl2ZUV2ZW50U291cmNlU3RhdGUpIHtcbiAgICB0aGlzLnN0YXRlJC5uZXh0KHN0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgZXZlbnRUeXBlT3JEZWZhdWx0KHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlID8/ICdtZXNzYWdlJztcbiAgfVxufVxuIl19
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtZmV0Y2gtZXZlbnQtc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvZmVhdHVyZXMvZXZlbnQtc291cmNlL2ZldGNoL3JlYWN0aXZlLWZldGNoLWV2ZW50LXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLHNCQUFzQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDM0csT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxNQUFNLEVBQU0sTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxNQUFNLENBQU4sSUFBWSx3QkFNWDtBQU5ELFdBQVksd0JBQXdCO0lBQ2xDLHlDQUFhLENBQUE7SUFDYixxREFBeUIsQ0FBQTtJQUN6Qix5Q0FBYSxDQUFBO0lBQ2IsNkNBQWlCLENBQUE7SUFDakIsMkNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBTlcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQU1uQztBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDa0IsRUFBVSxFQUNWLEtBQWEsRUFDYixPQUFlLEVBQ2YsS0FBYztRQUhkLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDVixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQVM7SUFFaEMsQ0FBQztJQUVNLElBQUk7UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUF3QixDQUFDO0lBQzND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YTtRQUN0QyxPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudFNvdXJjZU1lc3NhZ2UsIEV2ZW50U3RyZWFtQ29udGVudFR5cGUsIGZldGNoRXZlbnRTb3VyY2V9IGZyb20gJ0BtaWNyb3NvZnQvZmV0Y2gtZXZlbnQtc291cmNlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBlbnVtIFJlYWN0aXZlRXZlbnRTb3VyY2VTdGF0ZSB7XG4gIElETEUgPSAnSURMRScsXG4gIENPTk5FQ1RJTkcgPSAnQ09OTkVDVElORycsXG4gIE9QRU4gPSAnT1BFTicsXG4gIENMT1NFRCA9ICdDTE9TRUQnLFxuICBFUlJPUiA9ICdFUlJPUicsXG59XG5cbmV4cG9ydCBjbGFzcyBSZWFjdGl2ZVNTZU1lc3NhZ2U8VCA9IGFueT4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZXZlbnQ6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGF0YVJhdzogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSByZXRyeT86IG51bWJlcixcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMganNvbigpOiBUIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh0aGlzLmRhdGFSYXcpO1xuICB9XG5cbiAgcHVibGljIGpzb25BczxUQ3VzdG9tPigpOiBUQ3VzdG9tIHtcbiAgICByZXR1cm4gdGhpcy5qc29uKCkgYXMgdW5rbm93biBhcyBUQ3VzdG9tO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRTb3VyY2VSZXF1ZXN0SW5pdCB7XG4gIHJlcXVlc3Q6IFJlcXVlc3RJbmZvLFxuICBtZXRob2Q/OiBzdHJpbmcsXG4gIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG59XG5cbmV4cG9ydCBjbGFzcyBSZWFjdGl2ZUZldGNoRXZlbnRTb3VyY2U8VCA9IGFueT4ge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgRVZFTlRfVFlQRV9ERUZBVUxUID0gJ21lc3NhZ2UnO1xuICBwcml2YXRlIHJlYWRvbmx5IFJFQ09OTkVDVF9ERUxBWV9NUyA9IDMwMDA7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuICBwcml2YXRlIF9jbG9zZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgYWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWFjdGl2ZUV2ZW50U291cmNlU3RhdGU+KFJlYWN0aXZlRXZlbnRTb3VyY2VTdGF0ZS5JRExFKTtcbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50UmVsYXkgPSBuZXcgU3ViamVjdDxSZWFjdGl2ZVNTZU1lc3NhZ2U8VD4+KCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFN0YXRpYyBCdWlsZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHN0YXRpYyBzdGF0aWNSZXF1ZXN0PFQ+KFxuICAgIHJlcXVlc3RJbml0OiBFdmVudFNvdXJjZVJlcXVlc3RJbml0LFxuICApOiBSZWFjdGl2ZUZldGNoRXZlbnRTb3VyY2U8VD4ge1xuICAgIGlmICghcmVxdWVzdEluaXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgcHJvdmlkZSBhIGV2ZW50IHNvdXJjZSB1cmwhJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUmVhY3RpdmVGZXRjaEV2ZW50U291cmNlKCgpID0+IHJlcXVlc3RJbml0KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZHluYW1pY1JlcXVlc3Q8VD4oXG4gICAgcmVxdWVzdEluaXRQcm92aWRlcjogKCkgPT4gRXZlbnRTb3VyY2VSZXF1ZXN0SW5pdFxuICApOiBSZWFjdGl2ZUZldGNoRXZlbnRTb3VyY2U8VD4ge1xuICAgIHJldHVybiBuZXcgUmVhY3RpdmVGZXRjaEV2ZW50U291cmNlKHJlcXVlc3RJbml0UHJvdmlkZXIpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3RJbml0UHJvdmlkZXI6ICgpID0+IEV2ZW50U291cmNlUmVxdWVzdEluaXQsXG4gICkge1xuICAgIGlmICghcmVxdWVzdEluaXRQcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBwcm92aWRlIGEgZXZlbnQgc291cmNlIHVybCBwcm92aWRlciEnKTtcbiAgICB9XG4gICAgdGhpcy5vcGVuKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IGNsb3NlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2xvc2VkO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIGV2ZW50IHNvdXJjZS5cbiAgICpcbiAgICogTm90ZTogVGhlIGNvbm5lY3Rpb24gaXMgb3BlbmVkIGF1dG9tYXRpY2FsbHkgdXBvbiBvYmplY3QgY3JlYXRpb24uXG4gICAqIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIHVzZWQgaWYgdGhpcyByZWFjdGl2ZS1ldmVudC1zb3VyY2UgaGFzXG4gICAqIGJlZW4gY2xvc2VkIGV4cGxpY2l0bHkuXG4gICAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9zZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlY29ubmVjdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBldmVudCBzdHJlYW0gZm9yIHRoZSBnaXZlbiBldmVudCB0eXBlLlxuICAgKiBAcGFyYW0gZXZlbnRUeXBlUmF3IFRoZSBldmVudCB0eXBlLiBEZWZhdWx0cyB0byAnbWVzc2FnZScuXG4gICAqL1xuICBwdWJsaWMgc3RyZWFtRXZlbnRzT2ZUeXBlKGV2ZW50VHlwZVJhdz86IHN0cmluZyk6IE9ic2VydmFibGU8UmVhY3RpdmVTU2VNZXNzYWdlPFQ+PiB7XG4gICAgY29uc3QgZXZlbnRUeXBlID0gdGhpcy5ldmVudFR5cGVPckRlZmF1bHQoZXZlbnRUeXBlUmF3KTtcbiAgICByZXR1cm4gdGhpcy5zdHJlYW1FdmVudHMoKS5waXBlKFxuICAgICAgZmlsdGVyKGUgPT4gZS5ldmVudCA9PSBldmVudFR5cGUpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gZXZlbnQgc3RyZWFtIGZvciBhbGwgZXZlbnRzIG5vIG1hdHRlciB0aGVpciB0eXBlLlxuICAgKi9cbiAgcHVibGljIHN0cmVhbUV2ZW50cygpOiBPYnNlcnZhYmxlPFJlYWN0aXZlU1NlTWVzc2FnZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50UmVsYXkuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhpcyBldmVudCBzb3VyY2UuIEl0IHdvbid0IHJlY29ubmVjdC5cbiAgICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9zZWQgPSB0cnVlO1xuICAgIHRoaXMuY2xvc2VDdXJyZW50KCk7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0Nsb3NpbmcgdGhlIGV2ZW50LXNvdXJjZS4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBLZWVwcyB0aGlzIHJlYWN0aXZlIGV2ZW50IHNvdXJjZSBvcGVuIHVudGlsIHRoZSBnaXZlbiBvYnNlcnZhYmxlIGVtaXRzIGFuIGV2ZW50LlxuICAgKiBAcGFyYW0gdW5zdWJzY3JpYmVcbiAgICovXG4gIHB1YmxpYyBvcGVuVW50aWwodW5zdWJzY3JpYmU6IE9ic2VydmFibGU8YW55Pik6IHRoaXMge1xuICAgIHRoaXMuY2xlYW5VcE9wZW5VbnRpbCgpO1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlU3ViID0gdW5zdWJzY3JpYmVcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+IHRoaXMuY2xvc2UoKVxuICAgICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgY2xlYW5VcE9wZW5VbnRpbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdW5zdWJzY3JpYmVTdWIpIHtcbiAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLl91bnN1YnNjcmliZVN1YiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoZSBjdXJyZW50IGV2ZW50IHNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSBjbG9zZUN1cnJlbnQocmVhc29uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0Nsb3NpbmcgdGhlIGV2ZW50LXNvdXJjZSwgcmVhc29uOiAnICsgcmVhc29uKTtcbiAgICBjb25zdCBjcnQgPSB0aGlzLmFib3J0Q29udHJvbGxlcjtcbiAgICBpZiAoY3J0KSB7XG4gICAgICBjcnQuYWJvcnQocmVhc29uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVjb25uZWN0cyB0aGlzIGV2ZW50IHNvdXJjZSwgdW5sZXNzIGNsb3NlZCBpcyB0cnVlO1xuICAgKi9cbiAgcHJpdmF0ZSByZWNvbm5lY3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Nsb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVN0YXRlKFJlYWN0aXZlRXZlbnRTb3VyY2VTdGF0ZS5DT05ORUNUSU5HKTtcbiAgICB0aGlzLmNsb3NlQ3VycmVudCgnUmVjb25uZWN0Jyk7XG4gICAgdGhpcy5vcGVuRXZlbnRTb3VyY2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkV2ZW50U291cmNlKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlcXVlc3RJbml0ID0gdGhpcy5yZXF1ZXN0SW5pdFByb3ZpZGVyKCk7XG4gICAgY29uc3QgY3J0ID0gdGhpcy5hYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgZmV0Y2hFdmVudFNvdXJjZShyZXF1ZXN0SW5pdC5yZXF1ZXN0LCB7XG4gICAgICBtZXRob2Q6IHJlcXVlc3RJbml0Lm1ldGhvZCxcbiAgICAgIHNpZ25hbDogY3J0LnNpZ25hbCxcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3RJbml0LmhlYWRlcnMsXG4gICAgICBrZWVwYWxpdmU6IHRydWUsXG4gICAgICBvcGVuV2hlbkhpZGRlbjogZmFsc2UsXG4gICAgICBvbm9wZW46IHJlc3BvbnNlID0+IHRoaXMuaGFuZGxlT25PcGVuKHJlc3BvbnNlKSxcbiAgICAgIG9ubWVzc2FnZTogbXNnID0+IHRoaXMuaGFuZGxlT25NZXNzYWdlKG1zZyksXG4gICAgICBvbmVycm9yOiBlcnIgPT4gdGhpcy5oYW5kbGVPbkVycm9yKGVyciksXG4gICAgICBvbmNsb3NlOiAoKSA9PiB0aGlzLmhhbmRsZU9uQ2xvc2UoKVxuICAgIH0pLnRoZW4ociA9PiB7XG5cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlT25PcGVuKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChyZXNwb25zZS5vayAmJiByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykgPT09IEV2ZW50U3RyZWFtQ29udGVudFR5cGUpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdFdmVudFNvdXJjZSBjb25uZWN0aW9uIHN1Y2Vzc2Z1bGx5IG9wZW5lZCB0bzogJyArIHJlc3BvbnNlLnVybCArXG4gICAgICAgICcsIHN0YXRlOiAnICsgcmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZSk7XG4gICAgICB0aGlzLnVwZGF0ZVN0YXRlKFJlYWN0aXZlRXZlbnRTb3VyY2VTdGF0ZS5PUEVOKTtcbiAgICAgIHJldHVybjsgLy8gZXZlcnl0aGluZydzIGdvb2RcbiAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDAgJiYgcmVzcG9uc2Uuc3RhdHVzIDwgNTAwICYmIHJlc3BvbnNlLnN0YXR1cyAhPT0gNDI5KSB7XG4gICAgICAvLyBjbGllbnQtc2lkZSBlcnJvcnMgYXJlIHVzdWFsbHkgbm9uLXJldHJpYWJsZTpcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoUmVhY3RpdmVFdmVudFNvdXJjZVN0YXRlLkVSUk9SKTtcbiAgICAgIHRoaXMubG9nLmVycm9yKCdGYWlsZWQgdG8gb3BlbiBFdmVudCBTb3VyY2UgZHVlIHRvIENsaWVudCBFcnJvciAnICsgcmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nLmVycm9yKCdGYWlsZWQgdG8gb3BlbiBFdmVudCBTb3VyY2UgZHVlIHRvIEVycm9yICcgKyByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlKTtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoUmVhY3RpdmVFdmVudFNvdXJjZVN0YXRlLkVSUk9SKTtcbiAgICAgIHRoaXMudHJ5UmVjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVPbkVycm9yKGVycjogYW55KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZShSZWFjdGl2ZUV2ZW50U291cmNlU3RhdGUuRVJST1IpO1xuICAgIHRoaXMubG9nLnRyYWNlKCdUaGVyZSB3YXMgYW4gU1NFIGVycm9yLicsIGVycik7XG4gICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgLy8gVGhlcmUgd2FzIGFuIGVycm9yIC0gdHJ5IHJlY29ubmVjdGluZ1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ0F0dGVtcHRpbmcgdG8gcmVjb25uZWN0IGV2ZW50LXNvdXJjZSAuLi4nKTtcbiAgICAgIHRoaXMudHJ5UmVjb25uZWN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdUaGVyZSB3YXMgYW4gZXJyb3IgaW4gdGhlIHNzZSBjb25uZWN0aW9uIChjbG9zZWQpLicsIGVycik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cnlSZWNvbm5lY3QoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jbG9zZWQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWNvbm5lY3QoKSwgdGhpcy5SRUNPTk5FQ1RfREVMQVlfTVMpOyAvLyBEZWxheSB0aGUgcmVjb25uZWN0XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVPbk1lc3NhZ2UobXNnOiBFdmVudFNvdXJjZU1lc3NhZ2UpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudFR5cGUgPSB0aGlzLmV2ZW50VHlwZU9yRGVmYXVsdChtc2cuZXZlbnQpO1xuICAgIHRoaXMuZXZlbnRSZWxheS5uZXh0KFxuICAgICAgbmV3IFJlYWN0aXZlU1NlTWVzc2FnZTxUPihcbiAgICAgICAgbXNnLmlkLFxuICAgICAgICBldmVudFR5cGUsXG4gICAgICAgIG1zZy5kYXRhLFxuICAgICAgICBtc2cucmV0cnlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVPbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMubG9nLmRlYnVnKCdFdmVudFNvdXJjZSBoYXMgY2xvc2VkLicpO1xuICAgIHRoaXMudXBkYXRlU3RhdGUoUmVhY3RpdmVFdmVudFNvdXJjZVN0YXRlLkNMT1NFRCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXRlKHN0YXRlOiBSZWFjdGl2ZUV2ZW50U291cmNlU3RhdGUpIHtcbiAgICB0aGlzLnN0YXRlJC5uZXh0KHN0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgZXZlbnRUeXBlT3JEZWZhdWx0KHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlID8/IHRoaXMuRVZFTlRfVFlQRV9ERUZBVUxUO1xuICB9XG59XG4iXX0=
|
|
@@ -31552,12 +31552,18 @@ var ReactiveEventSourceState;
|
|
|
31552
31552
|
ReactiveEventSourceState["ERROR"] = "ERROR";
|
|
31553
31553
|
})(ReactiveEventSourceState || (ReactiveEventSourceState = {}));
|
|
31554
31554
|
class ReactiveSSeMessage {
|
|
31555
|
-
constructor(id, event,
|
|
31555
|
+
constructor(id, event, dataRaw, retry) {
|
|
31556
31556
|
this.id = id;
|
|
31557
31557
|
this.event = event;
|
|
31558
|
-
this.
|
|
31558
|
+
this.dataRaw = dataRaw;
|
|
31559
31559
|
this.retry = retry;
|
|
31560
31560
|
}
|
|
31561
|
+
json() {
|
|
31562
|
+
return JSON.parse(this.dataRaw);
|
|
31563
|
+
}
|
|
31564
|
+
jsonAs() {
|
|
31565
|
+
return this.json();
|
|
31566
|
+
}
|
|
31561
31567
|
}
|
|
31562
31568
|
class ReactiveFetchEventSource {
|
|
31563
31569
|
/***************************************************************************
|
|
@@ -31586,10 +31592,12 @@ class ReactiveFetchEventSource {
|
|
|
31586
31592
|
* Fields *
|
|
31587
31593
|
* *
|
|
31588
31594
|
**************************************************************************/
|
|
31595
|
+
this.EVENT_TYPE_DEFAULT = 'message';
|
|
31596
|
+
this.RECONNECT_DELAY_MS = 3000;
|
|
31589
31597
|
this.log = LoggerFactory.getLogger(this.constructor.name);
|
|
31590
|
-
this.abortController =
|
|
31598
|
+
this.abortController = null;
|
|
31591
31599
|
this.state$ = new BehaviorSubject(ReactiveEventSourceState.IDLE);
|
|
31592
|
-
this.
|
|
31600
|
+
this.eventRelay = new Subject();
|
|
31593
31601
|
if (!requestInitProvider) {
|
|
31594
31602
|
throw new Error('You must provide a event source url provider!');
|
|
31595
31603
|
}
|
|
@@ -31623,22 +31631,15 @@ class ReactiveFetchEventSource {
|
|
|
31623
31631
|
* Get an event stream for the given event type.
|
|
31624
31632
|
* @param eventTypeRaw The event type. Defaults to 'message'.
|
|
31625
31633
|
*/
|
|
31626
|
-
|
|
31634
|
+
streamEventsOfType(eventTypeRaw) {
|
|
31627
31635
|
const eventType = this.eventTypeOrDefault(eventTypeRaw);
|
|
31628
|
-
|
|
31629
|
-
this.eventTopics.set(eventType, new Subject());
|
|
31630
|
-
}
|
|
31631
|
-
const eventSubj = this.eventTopics.get(eventType);
|
|
31632
|
-
return eventSubj.asObservable();
|
|
31636
|
+
return this.streamEvents().pipe(filter(e => e.event == eventType));
|
|
31633
31637
|
}
|
|
31634
31638
|
/**
|
|
31635
|
-
* Get an event stream
|
|
31636
|
-
* (event.data must be in json format)
|
|
31637
|
-
*
|
|
31638
|
-
* @param eventType The event type. Defaults to 'message'.
|
|
31639
|
+
* Get an event stream for all events no matter their type.
|
|
31639
31640
|
*/
|
|
31640
|
-
|
|
31641
|
-
return this.
|
|
31641
|
+
streamEvents() {
|
|
31642
|
+
return this.eventRelay.asObservable();
|
|
31642
31643
|
}
|
|
31643
31644
|
/**
|
|
31644
31645
|
* Close this event source. It won't reconnect.
|
|
@@ -31674,7 +31675,10 @@ class ReactiveFetchEventSource {
|
|
|
31674
31675
|
*/
|
|
31675
31676
|
closeCurrent(reason) {
|
|
31676
31677
|
this.log.debug('Closing the event-source, reason: ' + reason);
|
|
31677
|
-
this.abortController
|
|
31678
|
+
const crt = this.abortController;
|
|
31679
|
+
if (crt) {
|
|
31680
|
+
crt.abort(reason);
|
|
31681
|
+
}
|
|
31678
31682
|
}
|
|
31679
31683
|
/**
|
|
31680
31684
|
* Reconnects this event source, unless closed is true;
|
|
@@ -31689,9 +31693,10 @@ class ReactiveFetchEventSource {
|
|
|
31689
31693
|
}
|
|
31690
31694
|
openEventSource() {
|
|
31691
31695
|
const requestInit = this.requestInitProvider();
|
|
31696
|
+
const crt = this.abortController = new AbortController();
|
|
31692
31697
|
fetchEventSource(requestInit.request, {
|
|
31693
31698
|
method: requestInit.method,
|
|
31694
|
-
signal:
|
|
31699
|
+
signal: crt.signal,
|
|
31695
31700
|
headers: requestInit.headers,
|
|
31696
31701
|
keepalive: true,
|
|
31697
31702
|
openWhenHidden: false,
|
|
@@ -31717,7 +31722,7 @@ class ReactiveFetchEventSource {
|
|
|
31717
31722
|
else {
|
|
31718
31723
|
this.log.error('Failed to open Event Source due to Error ' + response.status, response);
|
|
31719
31724
|
this.updateState(ReactiveEventSourceState.ERROR);
|
|
31720
|
-
this.tryReconnect();
|
|
31725
|
+
this.tryReconnect();
|
|
31721
31726
|
}
|
|
31722
31727
|
}
|
|
31723
31728
|
handleOnError(err) {
|
|
@@ -31726,7 +31731,7 @@ class ReactiveFetchEventSource {
|
|
|
31726
31731
|
if (!this.closed) {
|
|
31727
31732
|
// There was an error - try reconnecting
|
|
31728
31733
|
this.log.debug('Attempting to reconnect event-source ...');
|
|
31729
|
-
this.tryReconnect();
|
|
31734
|
+
this.tryReconnect();
|
|
31730
31735
|
}
|
|
31731
31736
|
else {
|
|
31732
31737
|
this.log.debug('There was an error in the sse connection (closed).', err);
|
|
@@ -31734,15 +31739,12 @@ class ReactiveFetchEventSource {
|
|
|
31734
31739
|
}
|
|
31735
31740
|
tryReconnect() {
|
|
31736
31741
|
if (!this._closed) {
|
|
31737
|
-
setTimeout(() => this.reconnect(),
|
|
31742
|
+
setTimeout(() => this.reconnect(), this.RECONNECT_DELAY_MS); // Delay the reconnect
|
|
31738
31743
|
}
|
|
31739
31744
|
}
|
|
31740
31745
|
handleOnMessage(msg) {
|
|
31741
31746
|
const eventType = this.eventTypeOrDefault(msg.event);
|
|
31742
|
-
|
|
31743
|
-
if (topic) {
|
|
31744
|
-
topic.next(new ReactiveSSeMessage(msg.id, eventType, msg.data, msg.retry));
|
|
31745
|
-
}
|
|
31747
|
+
this.eventRelay.next(new ReactiveSSeMessage(msg.id, eventType, msg.data, msg.retry));
|
|
31746
31748
|
}
|
|
31747
31749
|
handleOnClose() {
|
|
31748
31750
|
this.log.debug('EventSource has closed.');
|
|
@@ -31752,7 +31754,7 @@ class ReactiveFetchEventSource {
|
|
|
31752
31754
|
this.state$.next(state);
|
|
31753
31755
|
}
|
|
31754
31756
|
eventTypeOrDefault(type) {
|
|
31755
|
-
return type ??
|
|
31757
|
+
return type ?? this.EVENT_TYPE_DEFAULT;
|
|
31756
31758
|
}
|
|
31757
31759
|
}
|
|
31758
31760
|
|