http-request-manager 18.0.13 → 18.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/esm2022/lib/http-request-manager.module.mjs +47 -7
  2. package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +10 -6
  3. package/esm2022/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.mjs +184 -0
  4. package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.mjs +9 -0
  5. package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.mjs +12 -0
  6. package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.mjs +14 -0
  7. package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.mjs +336 -0
  8. package/esm2022/lib/services/local-storage-manager-service/index.mjs +3 -2
  9. package/esm2022/lib/services/local-storage-manager-service/local-storage-signals-manager.service.mjs +277 -0
  10. package/esm2022/lib/services/local-storage-manager-service/models/setting-options.model.mjs +6 -2
  11. package/esm2022/lib/services/request-manager-services/http-manager-signals.service.mjs +199 -0
  12. package/esm2022/lib/services/request-manager-services/index.mjs +2 -1
  13. package/esm2022/lib/services/request-manager-services/request-signals.service.mjs +170 -0
  14. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-polling.mjs +26 -7
  15. package/esm2022/lib/services/utils/object-merger.service.mjs +26 -6
  16. package/fesm2022/http-request-manager.mjs +2053 -842
  17. package/fesm2022/http-request-manager.mjs.map +1 -1
  18. package/http-request-manager-18.2.0.tgz +0 -0
  19. package/lib/http-request-manager.module.d.ts +24 -22
  20. package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +8 -0
  21. package/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.d.ts +55 -0
  22. package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.d.ts +8 -0
  23. package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.d.ts +14 -0
  24. package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.d.ts +14 -0
  25. package/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.d.ts +106 -0
  26. package/lib/services/local-storage-manager-service/index.d.ts +2 -1
  27. package/lib/services/local-storage-manager-service/local-storage-signals-manager.service.d.ts +64 -0
  28. package/lib/services/request-manager-services/http-manager-signals.service.d.ts +38 -0
  29. package/lib/services/request-manager-services/index.d.ts +1 -0
  30. package/lib/services/request-manager-services/request-signals.service.d.ts +26 -0
  31. package/lib/services/request-manager-services/rxjs-operators/request-polling.d.ts +2 -7
  32. package/lib/services/utils/object-merger.service.d.ts +2 -0
  33. package/package.json +1 -1
  34. package/http-request-manager-18.0.13.tgz +0 -0
@@ -0,0 +1,170 @@
1
+ import { HttpClient, HttpEventType, HttpHeaderResponse } from '@angular/common/http';
2
+ import { Injectable, inject, signal, computed } from '@angular/core';
3
+ import { throwError } from 'rxjs';
4
+ import { catchError, finalize, map } from 'rxjs/operators';
5
+ import { PathQueryService, HeadersService } from '../utils';
6
+ import { requestStreaming } from './rxjs-operators/request-streaming';
7
+ import * as i0 from "@angular/core";
8
+ export class RequestSignalsService {
9
+ constructor() {
10
+ this.http = inject(HttpClient);
11
+ this.pathQueryService = inject(PathQueryService);
12
+ this.headersService = inject(HeadersService);
13
+ this.isPending = signal(false);
14
+ this.progress = signal(0);
15
+ this.isIdle = computed(() => !this.isPending());
16
+ }
17
+ getRecordRequest(options) {
18
+ const urlPath = this.buildUrlPath(options);
19
+ const headers = this.buildCombinedHeaders(options);
20
+ this.isPending.set(true);
21
+ return (options.stream)
22
+ ? this.http.get(urlPath, headers).pipe(requestStreaming(), this.handleFinalize())
23
+ : this.http.get(urlPath, headers).pipe(this.request(options), this.handleFinalize());
24
+ }
25
+ createRecordRequest(options, data) {
26
+ const urlPath = this.buildUrlPath(options);
27
+ const headers = this.buildCombinedHeaders(options);
28
+ this.isPending.set(true);
29
+ return (options.stream)
30
+ ? this.http.post(urlPath, data, headers).pipe(requestStreaming(), this.handleFinalize())
31
+ : this.http.post(urlPath, data, headers).pipe(this.request(options), this.handleFinalize());
32
+ }
33
+ updateRecordRequest(options, data) {
34
+ const urlPath = this.buildUrlPath(options);
35
+ const headers = this.buildHeaders(options);
36
+ this.isPending.set(true);
37
+ return this.http.put(urlPath, data, headers).pipe(this.request(options), this.handleFinalize());
38
+ }
39
+ deleteRecordRequest(options) {
40
+ const urlPath = this.buildUrlPath(options);
41
+ const headers = this.buildHeaders(options);
42
+ this.isPending.set(true);
43
+ return this.http.delete(urlPath, headers).pipe(this.request(options), this.handleFinalize());
44
+ }
45
+ buildUrlPath(options) {
46
+ return this.pathQueryService.buildAPIPath(options.server, options.path);
47
+ }
48
+ buildHeaders(options) {
49
+ return this.headersService.generateHeaders(options.headers);
50
+ }
51
+ buildCombinedHeaders(options) {
52
+ const headers = this.headersService.generateHeaders(options.headers);
53
+ return this.combineHeaders(headers, options.stream || false);
54
+ }
55
+ request(options) {
56
+ return (source$) => {
57
+ return source$.pipe(map(data => {
58
+ if (options?.adapter) {
59
+ return Array.isArray(data)
60
+ ? data.map((item) => options.adapter(item))
61
+ : options.adapter(data);
62
+ }
63
+ return data;
64
+ }));
65
+ };
66
+ }
67
+ downloadFileRequest(options) {
68
+ this.isPending.set(true);
69
+ const urlPath = this.buildUrlPath(options);
70
+ return this.http.get(urlPath, { responseType: 'blob', observe: 'events', reportProgress: true })
71
+ .pipe(map((event) => {
72
+ this.isPending.set(true);
73
+ if (event instanceof HttpHeaderResponse) {
74
+ if (event.status !== 200) {
75
+ this.isPending.set(false);
76
+ throw new Error('Download failed');
77
+ }
78
+ }
79
+ switch (event.type) {
80
+ case HttpEventType.DownloadProgress:
81
+ const status = (event.total) ? Math.round(event.loaded / (event.total || 1) * 100) : 100;
82
+ this.progress.set(status);
83
+ return status;
84
+ case HttpEventType.Response:
85
+ try {
86
+ const fileNamePath = (options?.saveAs) ? options.saveAs : (options.path) ? options.path[options.path.length - 1] : [];
87
+ const header_content = event.headers.get('Content-Disposition') || '';
88
+ const file = (header_content) ? header_content.split('=')[1].substring(0, header_content.split('=')[1].length) : '';
89
+ const fileName = (fileNamePath !== '') ? fileNamePath : file;
90
+ if (fileName === '') {
91
+ this.isPending.set(false);
92
+ throw new Error('Save File: (file name and extension) not found in Headers or Path');
93
+ }
94
+ this.downloadFile(fileName, event.body);
95
+ this.isPending.set(false);
96
+ return 100;
97
+ }
98
+ catch (error) {
99
+ throw new Error('Download failed');
100
+ }
101
+ default:
102
+ this.isPending.set(false);
103
+ return 0;
104
+ }
105
+ }), catchError(err => {
106
+ return throwError(() => err);
107
+ }));
108
+ }
109
+ handleFinalize() {
110
+ return finalize(() => this.isPending.set(false));
111
+ }
112
+ downloadFile(file, fileData) {
113
+ const navigatorAny = window.navigator;
114
+ const extension = file.split('.')[1]?.toLowerCase();
115
+ const newBlob = new Blob([fileData], { type: this.createFileType(extension) });
116
+ if (navigatorAny.msSaveOrOpenBlob) {
117
+ navigatorAny.msSaveOrOpenBlob(newBlob, file);
118
+ }
119
+ else {
120
+ const link = document.createElement('a');
121
+ const url = window.URL.createObjectURL(newBlob);
122
+ link.href = url;
123
+ link.download = file;
124
+ link.click();
125
+ window.URL.revokeObjectURL(url);
126
+ }
127
+ }
128
+ createFileType(ext) {
129
+ let fileType = "";
130
+ if (ext === 'pdf' || ext === 'csv')
131
+ fileType = `application/${ext}`;
132
+ else if (ext === 'jpeg' || ext === 'jpg' || ext === 'png')
133
+ fileType = `image/${ext}`;
134
+ else if (ext === 'txt')
135
+ fileType = 'text/plain';
136
+ else if (ext === 'ppt' || ext === 'pot' || ext === 'pps' || ext === 'ppa')
137
+ fileType = 'application/vnd.ms-powerpoint';
138
+ else if (ext === 'pptx')
139
+ fileType = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
140
+ else if (ext === 'doc' || ext === 'dot')
141
+ fileType = 'application/msword';
142
+ else if (ext === 'docx')
143
+ fileType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
144
+ else if (ext === 'xls' || ext === 'xlt' || ext === 'xla')
145
+ fileType = 'application/vnd.ms-excel';
146
+ else if (ext === 'xlsx')
147
+ fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
148
+ return fileType;
149
+ }
150
+ combineHeaders(headers, isStreaming) {
151
+ return (isStreaming)
152
+ ? {
153
+ ...headers,
154
+ observe: 'events',
155
+ responseType: 'text',
156
+ reportProgress: true,
157
+ Accept: 'text/event-stream'
158
+ }
159
+ : headers;
160
+ }
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RequestSignalsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
162
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RequestSignalsService, providedIn: 'root' }); }
163
+ }
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RequestSignalsService, decorators: [{
165
+ type: Injectable,
166
+ args: [{
167
+ providedIn: 'root'
168
+ }]
169
+ }] });
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1zaWduYWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zZXJ2aWNlcy9yZXF1ZXN0LXNpZ25hbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUt0RSxNQUFNLE9BQU8scUJBQXFCO0lBSGxDO1FBS1UsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVoRCxjQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLGFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckIsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBZ001QztJQTlMQyxnQkFBZ0IsQ0FBSSxPQUFt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QkFDakIsWUFBWSxFQUFFLE1BQU07Z0JBQ3BCLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixNQUFNLEVBQUUsbUJBQW1CO2FBQzVCO1lBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNkLENBQUM7K0dBeE1VLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBIZWFkZXJSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXBpUmVxdWVzdCB9IGZyb20gJy4uL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1zZXJ2aWNlL21vZGVscy9hcGktcmVxdWVzdC5tb2RlbCc7XG5pbXBvcnQgeyBQYXRoUXVlcnlTZXJ2aWNlLCBIZWFkZXJzU2VydmljZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IHJlcXVlc3RTdHJlYW1pbmcgfSBmcm9tICcuL3J4anMtb3BlcmF0b3JzL3JlcXVlc3Qtc3RyZWFtaW5nJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUmVxdWVzdFNpZ25hbHNTZXJ2aWNlIHtcblxuICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgcGF0aFF1ZXJ5U2VydmljZSA9IGluamVjdChQYXRoUXVlcnlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBoZWFkZXJzU2VydmljZSA9IGluamVjdChIZWFkZXJzU2VydmljZSk7XG5cbiAgaXNQZW5kaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvZ3Jlc3MgPSBzaWduYWwoMCk7XG5cbiAgaXNJZGxlID0gY29tcHV0ZWQoKCkgPT4gIXRoaXMuaXNQZW5kaW5nKCkpO1xuXG4gIGdldFJlY29yZFJlcXVlc3Q8VD4ob3B0aW9uczogQXBpUmVxdWVzdCk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IHVybFBhdGggPSB0aGlzLmJ1aWxkVXJsUGF0aChvcHRpb25zKTtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5idWlsZENvbWJpbmVkSGVhZGVycyhvcHRpb25zKTtcblxuICAgIHRoaXMuaXNQZW5kaW5nLnNldCh0cnVlKTtcblxuICAgIHJldHVybiAob3B0aW9ucy5zdHJlYW0pXG4gICAgICA/IHRoaXMuaHR0cC5nZXQ8YW55Pih1cmxQYXRoLCBoZWFkZXJzKS5waXBlKFxuICAgICAgICAgIHJlcXVlc3RTdHJlYW1pbmcoKSxcbiAgICAgICAgICB0aGlzLmhhbmRsZUZpbmFsaXplKClcbiAgICAgICAgKVxuICAgICAgOiB0aGlzLmh0dHAuZ2V0PFQ+KHVybFBhdGgsIGhlYWRlcnMpLnBpcGUoXG4gICAgICAgICAgdGhpcy5yZXF1ZXN0KG9wdGlvbnMpLFxuICAgICAgICAgIHRoaXMuaGFuZGxlRmluYWxpemUoKVxuICAgICAgICApO1xuICB9XG5cbiAgY3JlYXRlUmVjb3JkUmVxdWVzdDxUPihvcHRpb25zOiBBcGlSZXF1ZXN0LCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCB1cmxQYXRoID0gdGhpcy5idWlsZFVybFBhdGgob3B0aW9ucyk7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuYnVpbGRDb21iaW5lZEhlYWRlcnMob3B0aW9ucyk7XG5cbiAgICB0aGlzLmlzUGVuZGluZy5zZXQodHJ1ZSk7XG5cbiAgICByZXR1cm4gKG9wdGlvbnMuc3RyZWFtKVxuICAgICAgPyB0aGlzLmh0dHAucG9zdDxhbnk+KHVybFBhdGgsIGRhdGEsIGhlYWRlcnMpLnBpcGUoXG4gICAgICAgICAgcmVxdWVzdFN0cmVhbWluZygpLFxuICAgICAgICAgIHRoaXMuaGFuZGxlRmluYWxpemUoKVxuICAgICAgICApXG4gICAgICA6IHRoaXMuaHR0cC5wb3N0PFQ+KHVybFBhdGgsIGRhdGEsIGhlYWRlcnMpLnBpcGUoXG4gICAgICAgICAgdGhpcy5yZXF1ZXN0KG9wdGlvbnMpLFxuICAgICAgICAgIHRoaXMuaGFuZGxlRmluYWxpemUoKVxuICAgICAgICApO1xuICB9XG5cbiAgdXBkYXRlUmVjb3JkUmVxdWVzdDxUPihvcHRpb25zOiBBcGlSZXF1ZXN0LCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCB1cmxQYXRoID0gdGhpcy5idWlsZFVybFBhdGgob3B0aW9ucyk7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuYnVpbGRIZWFkZXJzKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5pc1BlbmRpbmcuc2V0KHRydWUpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55Pih1cmxQYXRoLCBkYXRhLCBoZWFkZXJzKS5waXBlKFxuICAgICAgdGhpcy5yZXF1ZXN0KG9wdGlvbnMpLFxuICAgICAgdGhpcy5oYW5kbGVGaW5hbGl6ZSgpXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVJlY29yZFJlcXVlc3Q8VD4ob3B0aW9uczogQXBpUmVxdWVzdCk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IHVybFBhdGggPSB0aGlzLmJ1aWxkVXJsUGF0aChvcHRpb25zKTtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5idWlsZEhlYWRlcnMob3B0aW9ucyk7XG5cbiAgICB0aGlzLmlzUGVuZGluZy5zZXQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxhbnk+KHVybFBhdGgsIGhlYWRlcnMpLnBpcGUoXG4gICAgICB0aGlzLnJlcXVlc3Qob3B0aW9ucyksXG4gICAgICB0aGlzLmhhbmRsZUZpbmFsaXplKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFVybFBhdGgob3B0aW9uczogQXBpUmVxdWVzdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFF1ZXJ5U2VydmljZS5idWlsZEFQSVBhdGgob3B0aW9ucy5zZXJ2ZXIsIG9wdGlvbnMucGF0aCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkSGVhZGVycyhvcHRpb25zOiBBcGlSZXF1ZXN0KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJzU2VydmljZS5nZW5lcmF0ZUhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb21iaW5lZEhlYWRlcnMob3B0aW9uczogQXBpUmVxdWVzdCk6IGFueSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1NlcnZpY2UuZ2VuZXJhdGVIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG4gICAgcmV0dXJuIHRoaXMuY29tYmluZUhlYWRlcnMoaGVhZGVycywgb3B0aW9ucy5zdHJlYW0gfHwgZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXF1ZXN0PFQ+KG9wdGlvbnM6IEFwaVJlcXVlc3QpOiAoc291cmNlOiBPYnNlcnZhYmxlPGFueT4pID0+IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiAoc291cmNlJDogT2JzZXJ2YWJsZTxhbnk+KTogT2JzZXJ2YWJsZTxUPiA9PiB7XG4gICAgICByZXR1cm4gc291cmNlJC5waXBlKFxuICAgICAgICBtYXAoZGF0YSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbnM/LmFkYXB0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEpXG4gICAgICAgICAgICAgID8gZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gb3B0aW9ucy5hZGFwdGVyKGl0ZW0pKVxuICAgICAgICAgICAgICA6IG9wdGlvbnMuYWRhcHRlcihkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH07XG4gIH1cblxuICBkb3dubG9hZEZpbGVSZXF1ZXN0KG9wdGlvbnM6IEFwaVJlcXVlc3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHRoaXMuaXNQZW5kaW5nLnNldCh0cnVlKTtcblxuICAgIGNvbnN0IHVybFBhdGggPSB0aGlzLmJ1aWxkVXJsUGF0aChvcHRpb25zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybFBhdGgsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicsIG9ic2VydmU6ICdldmVudHMnLCByZXBvcnRQcm9ncmVzczogdHJ1ZSB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZXZlbnQ6IEh0dHBFdmVudDxhbnk+KSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1BlbmRpbmcuc2V0KHRydWUpO1xuXG4gICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cEhlYWRlclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgdGhpcy5pc1BlbmRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEb3dubG9hZCBmYWlsZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzOlxuICAgICAgICAgICAgICBjb25zdCBzdGF0dXMgPSAoZXZlbnQudG90YWwpID8gTWF0aC5yb3VuZChldmVudC5sb2FkZWQgLyAoZXZlbnQudG90YWwgfHwgMSkgKiAxMDApIDogMTAwO1xuICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzLnNldChzdGF0dXMpO1xuICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzO1xuXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZU5hbWVQYXRoID0gKG9wdGlvbnM/LnNhdmVBcykgPyBvcHRpb25zLnNhdmVBcyA6IChvcHRpb25zLnBhdGgpID8gb3B0aW9ucy5wYXRoW29wdGlvbnMucGF0aC5sZW5ndGggLSAxXSA6IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcl9jb250ZW50ID0gZXZlbnQuaGVhZGVycy5nZXQoJ0NvbnRlbnQtRGlzcG9zaXRpb24nKSB8fCAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gKGhlYWRlcl9jb250ZW50KSA/IGhlYWRlcl9jb250ZW50LnNwbGl0KCc9JylbMV0uc3Vic3RyaW5nKDAsIGhlYWRlcl9jb250ZW50LnNwbGl0KCc9JylbMV0ubGVuZ3RoKSA6ICcnO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSAoZmlsZU5hbWVQYXRoICE9PSAnJykgPyBmaWxlTmFtZVBhdGggOiBmaWxlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGZpbGVOYW1lID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5pc1BlbmRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2F2ZSBGaWxlOiAoZmlsZSBuYW1lIGFuZCBleHRlbnNpb24pIG5vdCBmb3VuZCBpbiBIZWFkZXJzIG9yIFBhdGgnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkRmlsZShmaWxlTmFtZSwgZXZlbnQuYm9keSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1BlbmRpbmcuc2V0KGZhbHNlKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAxMDA7XG5cbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rvd25sb2FkIGZhaWxlZCcpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRoaXMuaXNQZW5kaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRmluYWxpemUoKTogKHNvdXJjZTogT2JzZXJ2YWJsZTxhbnk+KSA9PiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzUGVuZGluZy5zZXQoZmFsc2UpKTtcbiAgfVxuXG4gIHByaXZhdGUgZG93bmxvYWRGaWxlKGZpbGU6IHN0cmluZywgZmlsZURhdGE6IGFueSkge1xuICAgIGNvbnN0IG5hdmlnYXRvckFueSA9IHdpbmRvdy5uYXZpZ2F0b3IgYXMgYW55O1xuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUuc3BsaXQoJy4nKVsxXT8udG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBuZXdCbG9iID0gbmV3IEJsb2IoW2ZpbGVEYXRhXSwgeyB0eXBlOiB0aGlzLmNyZWF0ZUZpbGVUeXBlKGV4dGVuc2lvbikgfSk7XG5cbiAgICBpZiAobmF2aWdhdG9yQW55Lm1zU2F2ZU9yT3BlbkJsb2IpIHtcbiAgICAgIG5hdmlnYXRvckFueS5tc1NhdmVPck9wZW5CbG9iKG5ld0Jsb2IsIGZpbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3QmxvYik7XG4gICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICBsaW5rLmRvd25sb2FkID0gZmlsZTtcbiAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGaWxlVHlwZShleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGZpbGVUeXBlID0gXCJcIjtcblxuICAgIGlmIChleHQgPT09ICdwZGYnIHx8IGV4dCA9PT0gJ2NzdicpIGZpbGVUeXBlID0gYGFwcGxpY2F0aW9uLyR7ZXh0fWA7XG4gICAgZWxzZSBpZiAoZXh0ID09PSAnanBlZycgfHwgZXh0ID09PSAnanBnJyB8fCBleHQgPT09ICdwbmcnKSBmaWxlVHlwZSA9IGBpbWFnZS8ke2V4dH1gO1xuICAgIGVsc2UgaWYgKGV4dCA9PT0gJ3R4dCcpIGZpbGVUeXBlID0gJ3RleHQvcGxhaW4nO1xuICAgIGVsc2UgaWYgKGV4dCA9PT0gJ3BwdCcgfHwgZXh0ID09PSAncG90JyB8fCBleHQgPT09ICdwcHMnIHx8IGV4dCA9PT0gJ3BwYScpIGZpbGVUeXBlID0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JztcbiAgICBlbHNlIGlmIChleHQgPT09ICdwcHR4JykgZmlsZVR5cGUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbic7XG4gICAgZWxzZSBpZiAoZXh0ID09PSAnZG9jJyB8fCBleHQgPT09ICdkb3QnKSBmaWxlVHlwZSA9ICdhcHBsaWNhdGlvbi9tc3dvcmQnO1xuICAgIGVsc2UgaWYgKGV4dCA9PT0gJ2RvY3gnKSBmaWxlVHlwZSA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCc7XG4gICAgZWxzZSBpZiAoZXh0ID09PSAneGxzJyB8fCBleHQgPT09ICd4bHQnIHx8IGV4dCA9PT0gJ3hsYScpIGZpbGVUeXBlID0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCc7XG4gICAgZWxzZSBpZiAoZXh0ID09PSAneGxzeCcpIGZpbGVUeXBlID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JztcblxuICAgIHJldHVybiBmaWxlVHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgY29tYmluZUhlYWRlcnMoaGVhZGVyczogYW55LCBpc1N0cmVhbWluZzogYm9vbGVhbikge1xuICAgIHJldHVybiAoaXNTdHJlYW1pbmcpXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5oZWFkZXJzLFxuICAgICAgICAgIG9ic2VydmU6ICdldmVudHMnLFxuICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgIEFjY2VwdDogJ3RleHQvZXZlbnQtc3RyZWFtJ1xuICAgICAgICB9XG4gICAgICA6IGhlYWRlcnM7XG4gIH1cbn1cbiJdfQ==
@@ -1,14 +1,33 @@
1
1
  import { interval } from 'rxjs';
2
2
  import { mergeMap, startWith, takeUntil, tap } from 'rxjs/operators';
3
- /**
4
- * @param pollInterval
5
- * @param stopCondition$
6
- * @param isPending$
7
- */
8
3
  export function requestPolling(pollInterval, stopCondition$, isPending$) {
9
4
  return (source) => {
10
5
  return interval(pollInterval * 1000)
11
- .pipe(startWith(0), tap(() => isPending$.next(true)), mergeMap(() => source), tap(() => isPending$.next(false)), takeUntil(stopCondition$));
6
+ .pipe(startWith(0), tap(() => {
7
+ try {
8
+ if (isPending$ && typeof isPending$.next === 'function') {
9
+ isPending$.next(true);
10
+ }
11
+ else if (isPending$ && typeof isPending$.set === 'function') {
12
+ isPending$.set(true);
13
+ }
14
+ }
15
+ catch (e) {
16
+ // no-op if setting fails
17
+ }
18
+ }), mergeMap(() => source), tap(() => {
19
+ try {
20
+ if (isPending$ && typeof isPending$.next === 'function') {
21
+ isPending$.next(false);
22
+ }
23
+ else if (isPending$ && typeof isPending$.set === 'function') {
24
+ isPending$.set(false);
25
+ }
26
+ }
27
+ catch (e) {
28
+ // no-op if setting fails
29
+ }
30
+ }), takeUntil(stopCondition$));
12
31
  };
13
32
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1wb2xsaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMvcnhqcy1vcGVyYXRvcnMvcmVxdWVzdC1wb2xsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0IsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRTs7OztHQUlHO0FBRUgsTUFBTSxVQUFVLGNBQWMsQ0FBSSxZQUFvQixFQUFFLGNBQStCLEVBQUUsVUFBb0M7SUFDM0gsT0FBTyxDQUFDLE1BQXFCLEVBQWlCLEVBQUU7UUFDOUMsT0FBTyxRQUFRLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzthQUNuQyxJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNaLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ2hDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFDdEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDakMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUMxQixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1lcmdlTWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIEBwYXJhbSBwb2xsSW50ZXJ2YWxcbiAqIEBwYXJhbSBzdG9wQ29uZGl0aW9uJFxuICogQHBhcmFtIGlzUGVuZGluZyRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdFBvbGxpbmc8VD4ocG9sbEludGVydmFsOiBudW1iZXIsIHN0b3BDb25kaXRpb24kOiBPYnNlcnZhYmxlPGFueT4sIGlzUGVuZGluZyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPikge1xuICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4gPT4ge1xuICAgIHJldHVybiBpbnRlcnZhbChwb2xsSW50ZXJ2YWwgKiAxMDAwKVxuICAgIC5waXBlKFxuICAgICAgc3RhcnRXaXRoKDApLCBcbiAgICAgIHRhcCgoKSA9PiBpc1BlbmRpbmckLm5leHQodHJ1ZSkpLFxuICAgICAgbWVyZ2VNYXAoKCkgPT4gc291cmNlKSxcbiAgICAgIHRhcCgoKSA9PiBpc1BlbmRpbmckLm5leHQoZmFsc2UpKSxcbiAgICAgIHRha2VVbnRpbChzdG9wQ29uZGl0aW9uJCksXG4gICAgKTtcbiAgfTtcbn0iXX0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1wb2xsaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMvcnhqcy1vcGVyYXRvcnMvcmVxdWVzdC1wb2xsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJFLE1BQU0sVUFBVSxjQUFjLENBQUksWUFBb0IsRUFBRSxjQUErQixFQUFFLFVBQWU7SUFDdEcsT0FBTyxDQUFDLE1BQXFCLEVBQWlCLEVBQUU7UUFDOUMsT0FBTyxRQUFRLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzthQUNuQyxJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNaLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxVQUFVLElBQUksT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUN4RCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QixDQUFDO3FCQUFNLElBQUksVUFBVSxJQUFJLE9BQU8sVUFBVSxDQUFDLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDOUQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLHlCQUF5QjtZQUMzQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUN0QixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDO2dCQUNILElBQUksVUFBVSxJQUFJLE9BQU8sVUFBVSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDeEQsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsQ0FBQztxQkFBTSxJQUFJLFVBQVUsSUFBSSxPQUFPLFVBQVUsQ0FBQyxHQUFHLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQzlELFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCx5QkFBeUI7WUFDM0IsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FDMUIsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VNYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0UG9sbGluZzxUPihwb2xsSW50ZXJ2YWw6IG51bWJlciwgc3RvcENvbmRpdGlvbiQ6IE9ic2VydmFibGU8YW55PiwgaXNQZW5kaW5nJDogYW55KSB7XG4gIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiA9PiB7XG4gICAgcmV0dXJuIGludGVydmFsKHBvbGxJbnRlcnZhbCAqIDEwMDApXG4gICAgLnBpcGUoXG4gICAgICBzdGFydFdpdGgoMCksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChpc1BlbmRpbmckICYmIHR5cGVvZiBpc1BlbmRpbmckLm5leHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGlzUGVuZGluZyQubmV4dCh0cnVlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzUGVuZGluZyQgJiYgdHlwZW9mIGlzUGVuZGluZyQuc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpc1BlbmRpbmckLnNldCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBuby1vcCBpZiBzZXR0aW5nIGZhaWxzXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgbWVyZ2VNYXAoKCkgPT4gc291cmNlKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKGlzUGVuZGluZyQgJiYgdHlwZW9mIGlzUGVuZGluZyQubmV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaXNQZW5kaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzUGVuZGluZyQgJiYgdHlwZW9mIGlzUGVuZGluZyQuc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpc1BlbmRpbmckLnNldChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gbm8tb3AgaWYgc2V0dGluZyBmYWlsc1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbChzdG9wQ29uZGl0aW9uJCksXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==
@@ -1,6 +1,7 @@
1
- import { Inject, Injectable, Optional } from '@angular/core';
1
+ import { Inject, Injectable, Optional, inject } from '@angular/core';
2
2
  import { ApiRequest } from '../request-manager-state-service/models';
3
3
  import { SettingOptions } from '../local-storage-manager-service';
4
+ import { UtilsService } from '../utils/utils.service';
4
5
  import { CONFIG_SETTINGS_TOKEN } from '../../models/config-token.model';
5
6
  import { ConfigHTTPOptions, ConfigOptions, LocalStorageOptions } from '../request-manager-services';
6
7
  import * as i0 from "@angular/core";
@@ -8,6 +9,7 @@ import * as i1 from "../request-manager-services";
8
9
  export class ObjectMergerService {
9
10
  constructor(configOptions) {
10
11
  this.configOptions = configOptions;
12
+ this.utils = inject(UtilsService);
11
13
  if (!this.configOptions)
12
14
  this.configOptions = ConfigOptions.adapt();
13
15
  }
@@ -27,10 +29,28 @@ export class ObjectMergerService {
27
29
  const configForRoot = (this.configOptions?.LocalStorageOptions) ? this.configOptions.LocalStorageOptions : LocalStorageOptions.adapt();
28
30
  const configForRootOptions = configForRoot.options || LocalStorageOptions.adapt().options;
29
31
  const mergedOptions = SettingOptions.adapt(options);
30
- mergedOptions.storage = (options && options.storage === 0) ? configForRootOptions?.storage || 0 : options.storage;
31
- mergedOptions.expires = (options && options.expires === 0) ? configForRootOptions?.expires || 0 : options.expires;
32
- mergedOptions.expiresIn = (options && options.expiresIn === '') ? configForRootOptions?.expiresIn || '' : options.expiresIn;
33
- mergedOptions.encrypted = (options && !options.encrypted) ? configForRootOptions?.encrypted || false : options.encrypted;
32
+ // storage type
33
+ mergedOptions.storage = (options && (typeof options.storage !== 'undefined')) ? options.storage : (configForRootOptions?.storage ?? 0);
34
+ // expires: prefer explicit numeric expires; if not provided, compute from expiresIn string; otherwise use config default
35
+ // if an explicit, non-zero numeric expires is provided, use it
36
+ if (options && (typeof options.expires !== 'undefined') && options.expires !== null && Number(options.expires) > 0) {
37
+ mergedOptions.expires = Number(options.expires);
38
+ }
39
+ else if (options && options.expiresIn) {
40
+ // compute numeric epoch from expiresIn string using UtilsService if available
41
+ try {
42
+ mergedOptions.expires = this.utils ? this.utils.expires(options.expiresIn) : 0;
43
+ }
44
+ catch {
45
+ mergedOptions.expires = 0;
46
+ }
47
+ }
48
+ else {
49
+ mergedOptions.expires = configForRootOptions?.expires ?? 0;
50
+ }
51
+ // keep expiresIn string if explicitly provided, otherwise use config default
52
+ mergedOptions.expiresIn = (options && (typeof options.expiresIn !== 'undefined')) ? options.expiresIn : (configForRootOptions?.expiresIn || '');
53
+ mergedOptions.encrypted = (options && (typeof options.encrypted !== 'undefined')) ? options.encrypted : (configForRootOptions?.encrypted || false);
34
54
  return mergedOptions;
35
55
  }
36
56
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectMergerService, deps: [{ token: CONFIG_SETTINGS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -47,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
47
67
  }, {
48
68
  type: Optional
49
69
  }] }] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1lcmdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy91dGlscy9vYmplY3QtbWVyZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFLcEcsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixZQUErRCxhQUE2QjtRQUE3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDeEYsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDdEUsQ0FBQztJQUVGLFlBQVksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRTtRQUV2QyxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDbEksTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUUvQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFBO1FBRXhHLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsYUFBYSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUUsQ0FBQTtRQUU1RSxhQUFhLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxHQUFHLGFBQWEsRUFBRSxPQUFPLElBQUksRUFBRSxFQUFFLENBQUE7UUFFckYsYUFBYSxDQUFDLEtBQUssR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLENBQUMsSUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFakssYUFBYSxDQUFDLE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQztRQUU1RyxhQUFhLENBQUMsWUFBWSxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLFlBQVksSUFBSSxLQUFLLENBQUM7UUFFOUgsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDO1FBRXRHLE9BQU8sYUFBYSxDQUFDO0lBRXZCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRTtRQUVsRCxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDdEksTUFBTSxvQkFBb0IsR0FBRyxhQUFhLENBQUMsT0FBTyxJQUFJLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQTtRQUV6RixNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRW5ELGFBQWEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUVqSCxhQUFhLENBQUMsT0FBTyxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUE7UUFFakgsYUFBYSxDQUFDLFNBQVMsR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFBO1FBRTNILGFBQWEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLFNBQVMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUE7UUFFeEgsT0FBTyxhQUFhLENBQUM7SUFFdkIsQ0FBQzsrR0E5Q1UsbUJBQW1CLGtCQUVWLHFCQUFxQjttSEFGOUIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdjLE1BQU07MkJBQUMscUJBQXFCOzswQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcGlSZXF1ZXN0IH0gZnJvbSAnLi4vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzJztcbmltcG9ydCB7IFNldHRpbmdPcHRpb25zIH0gZnJvbSAnLi4vbG9jYWwtc3RvcmFnZS1tYW5hZ2VyLXNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDT05GSUdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29uZmlnLXRva2VuLm1vZGVsJztcbmltcG9ydCB7IENvbmZpZ0hUVFBPcHRpb25zLCBDb25maWdPcHRpb25zLCBMb2NhbFN0b3JhZ2VPcHRpb25zIH0gZnJvbSAnLi4vcmVxdWVzdC1tYW5hZ2VyLXNlcnZpY2VzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0TWVyZ2VyU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChDT05GSUdfU0VUVElOR1NfVE9LRU4pIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlnT3B0aW9ucz86IENvbmZpZ09wdGlvbnMpIHtcbiAgICAgIGlmICghdGhpcy5jb25maWdPcHRpb25zKSB0aGlzLmNvbmZpZ09wdGlvbnMgPSBDb25maWdPcHRpb25zLmFkYXB0KClcbiAgIH1cblxuICBtZXJnZU9wdGlvbnMob3B0aW9ucyA9IEFwaVJlcXVlc3QuYWRhcHQoKSkge1xuXG4gICAgY29uc3QgY29uZmlnRm9yUm9vdCA9ICh0aGlzLmNvbmZpZ09wdGlvbnM/Lmh0dHBSZXF1ZXN0T3B0aW9ucykgPyB0aGlzLmNvbmZpZ09wdGlvbnMuaHR0cFJlcXVlc3RPcHRpb25zIDogQ29uZmlnSFRUUE9wdGlvbnMuYWRhcHQoKVxuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBBcGlSZXF1ZXN0LmFkYXB0KG9wdGlvbnMpXG5cbiAgICBtZXJnZWRPcHRpb25zLnNlcnZlciA9IChvcHRpb25zICYmIG9wdGlvbnMuc2VydmVyID09PSAnJykgPyBjb25maWdGb3JSb290Py5zZXJ2ZXIgfHwgJycgOiBvcHRpb25zLnNlcnZlclxuXG4gICAgbWVyZ2VkT3B0aW9ucy5wYXRoID0gWyAuLi5vcHRpb25zLnBhdGggfHwgW10sIC4uLmNvbmZpZ0ZvclJvb3Q/LnBhdGggfHwgW10gXVxuXG4gICAgbWVyZ2VkT3B0aW9ucy5oZWFkZXJzID0geyAuLi5vcHRpb25zLmhlYWRlcnMgfHwge30sIC4uLmNvbmZpZ0ZvclJvb3Q/LmhlYWRlcnMgfHwge30gfVxuXG4gICAgbWVyZ2VkT3B0aW9ucy5yZXRyeSA9IChvcHRpb25zICYmIChvcHRpb25zPy5yZXRyeT8udGltZXMgIT09IDAgfHwgb3B0aW9ucz8ucmV0cnk/LmRlbGF5ICE9PSAzKSkgPyBvcHRpb25zLnJldHJ5IDogY29uZmlnRm9yUm9vdD8ucmV0cnkgfHwgeyB0aW1lczogMCwgZGVsYXk6IDMgfTtcblxuICAgIG1lcmdlZE9wdGlvbnMucG9sbGluZyA9IChvcHRpb25zICYmIG9wdGlvbnM/LnBvbGxpbmcgIT09IDApID8gb3B0aW9ucy5wb2xsaW5nIDogY29uZmlnRm9yUm9vdD8ucG9sbGluZyB8fCAwO1xuXG4gICAgbWVyZ2VkT3B0aW9ucy5kaXNwbGF5RXJyb3IgPSAob3B0aW9ucyAmJiBvcHRpb25zPy5kaXNwbGF5RXJyb3IpID8gb3B0aW9ucy5kaXNwbGF5RXJyb3IgOiBjb25maWdGb3JSb290Py5kaXNwbGF5RXJyb3IgfHwgZmFsc2U7XG5cbiAgICBtZXJnZWRPcHRpb25zLnN0cmVhbSA9IChvcHRpb25zICYmIG9wdGlvbnM/LnN0cmVhbSkgPyBvcHRpb25zLnN0cmVhbSA6IGNvbmZpZ0ZvclJvb3Q/LnN0cmVhbSB8fCBmYWxzZTtcblxuICAgIHJldHVybiBtZXJnZWRPcHRpb25zO1xuXG4gIH1cblxuICBtZXJnZVN0b3JhZ2VPcHRpb25zKG9wdGlvbnMgPSBTZXR0aW5nT3B0aW9ucy5hZGFwdCgpKSB7XG5cbiAgICBjb25zdCBjb25maWdGb3JSb290ID0gKHRoaXMuY29uZmlnT3B0aW9ucz8uTG9jYWxTdG9yYWdlT3B0aW9ucykgPyB0aGlzLmNvbmZpZ09wdGlvbnMuTG9jYWxTdG9yYWdlT3B0aW9ucyA6IExvY2FsU3RvcmFnZU9wdGlvbnMuYWRhcHQoKVxuICAgIGNvbnN0IGNvbmZpZ0ZvclJvb3RPcHRpb25zID0gY29uZmlnRm9yUm9vdC5vcHRpb25zIHx8IExvY2FsU3RvcmFnZU9wdGlvbnMuYWRhcHQoKS5vcHRpb25zXG5cbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gU2V0dGluZ09wdGlvbnMuYWRhcHQob3B0aW9ucylcblxuICAgIG1lcmdlZE9wdGlvbnMuc3RvcmFnZSA9IChvcHRpb25zICYmIG9wdGlvbnMuc3RvcmFnZSA9PT0gMCkgPyBjb25maWdGb3JSb290T3B0aW9ucz8uc3RvcmFnZSB8fCAwIDogb3B0aW9ucy5zdG9yYWdlXG5cbiAgICBtZXJnZWRPcHRpb25zLmV4cGlyZXMgPSAob3B0aW9ucyAmJiBvcHRpb25zLmV4cGlyZXMgPT09IDApID8gY29uZmlnRm9yUm9vdE9wdGlvbnM/LmV4cGlyZXMgfHwgMCA6IG9wdGlvbnMuZXhwaXJlc1xuXG4gICAgbWVyZ2VkT3B0aW9ucy5leHBpcmVzSW4gPSAob3B0aW9ucyAmJiBvcHRpb25zLmV4cGlyZXNJbiA9PT0gJycpID8gY29uZmlnRm9yUm9vdE9wdGlvbnM/LmV4cGlyZXNJbiB8fCAnJyA6IG9wdGlvbnMuZXhwaXJlc0luXG5cbiAgICBtZXJnZWRPcHRpb25zLmVuY3J5cHRlZCA9IChvcHRpb25zICYmICFvcHRpb25zLmVuY3J5cHRlZCkgPyBjb25maWdGb3JSb290T3B0aW9ucz8uZW5jcnlwdGVkIHx8IGZhbHNlIDogb3B0aW9ucy5lbmNyeXB0ZWRcblxuICAgIHJldHVybiBtZXJnZWRPcHRpb25zO1xuXG4gIH1cblxufVxuIl19
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1lcmdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy91dGlscy9vYmplY3QtbWVyZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUtwRyxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQStELGFBQTZCO1FBQTdCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUY1RixVQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBR3pCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3RFLENBQUM7SUFFRixZQUFZLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUU7UUFFdkMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2xJLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFL0MsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQTtRQUV4RyxhQUFhLENBQUMsSUFBSSxHQUFHLENBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFFLENBQUE7UUFFNUUsYUFBYSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsR0FBRyxhQUFhLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFBO1FBRXJGLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRWpLLGFBQWEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUM7UUFFNUcsYUFBYSxDQUFDLFlBQVksR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMs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b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLYyxNQUFNOzJCQUFDLHFCQUFxQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcGlSZXF1ZXN0IH0gZnJvbSAnLi4vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzJztcbmltcG9ydCB7IFNldHRpbmdPcHRpb25zIH0gZnJvbSAnLi4vbG9jYWwtc3RvcmFnZS1tYW5hZ2VyLXNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMuc2VydmljZSc7XG5cbmltcG9ydCB7IENPTkZJR19TRVRUSU5HU19UT0tFTiB9IGZyb20gJy4uLy4uL21vZGVscy9jb25maWctdG9rZW4ubW9kZWwnO1xuaW1wb3J0IHsgQ29uZmlnSFRUUE9wdGlvbnMsIENvbmZpZ09wdGlvbnMsIExvY2FsU3RvcmFnZU9wdGlvbnMgfSBmcm9tICcuLi9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RNZXJnZXJTZXJ2aWNlIHtcblxuICB1dGlscyA9IGluamVjdChVdGlsc1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09ORklHX1NFVFRJTkdTX1RPS0VOKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZ09wdGlvbnM/OiBDb25maWdPcHRpb25zKSB7XG4gICAgICBpZiAoIXRoaXMuY29uZmlnT3B0aW9ucykgdGhpcy5jb25maWdPcHRpb25zID0gQ29uZmlnT3B0aW9ucy5hZGFwdCgpXG4gICB9XG5cbiAgbWVyZ2VPcHRpb25zKG9wdGlvbnMgPSBBcGlSZXF1ZXN0LmFkYXB0KCkpIHtcblxuICAgIGNvbnN0IGNvbmZpZ0ZvclJvb3QgPSAodGhpcy5jb25maWdPcHRpb25zPy5odHRwUmVxdWVzdE9wdGlvbnMpID8gdGhpcy5jb25maWdPcHRpb25zLmh0dHBSZXF1ZXN0T3B0aW9ucyA6IENvbmZpZ0hUVFBPcHRpb25zLmFkYXB0KClcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gQXBpUmVxdWVzdC5hZGFwdChvcHRpb25zKVxuXG4gICAgbWVyZ2VkT3B0aW9ucy5zZXJ2ZXIgPSAob3B0aW9ucyAmJiBvcHRpb25zLnNlcnZlciA9PT0gJycpID8gY29uZmlnRm9yUm9vdD8uc2VydmVyIHx8ICcnIDogb3B0aW9ucy5zZXJ2ZXJcblxuICAgIG1lcmdlZE9wdGlvbnMucGF0aCA9IFsgLi4ub3B0aW9ucy5wYXRoIHx8IFtdLCAuLi5jb25maWdGb3JSb290Py5wYXRoIHx8IFtdIF1cblxuICAgIG1lcmdlZE9wdGlvbnMuaGVhZGVycyA9IHsgLi4ub3B0aW9ucy5oZWFkZXJzIHx8IHt9LCAuLi5jb25maWdGb3JSb290Py5oZWFkZXJzIHx8IHt9IH1cblxuICAgIG1lcmdlZE9wdGlvbnMucmV0cnkgPSAob3B0aW9ucyAmJiAob3B0aW9ucz8ucmV0cnk/LnRpbWVzICE9PSAwIHx8IG9wdGlvbnM/LnJldHJ5Py5kZWxheSAhPT0gMykpID8gb3B0aW9ucy5yZXRyeSA6IGNvbmZpZ0ZvclJvb3Q/LnJldHJ5IHx8IHsgdGltZXM6IDAsIGRlbGF5OiAzIH07XG5cbiAgICBtZXJnZWRPcHRpb25zLnBvbGxpbmcgPSAob3B0aW9ucyAmJiBvcHRpb25zPy5wb2xsaW5nICE9PSAwKSA/IG9wdGlvbnMucG9sbGluZyA6IGNvbmZpZ0ZvclJvb3Q/LnBvbGxpbmcgfHwgMDtcblxuICAgIG1lcmdlZE9wdGlvbnMuZGlzcGxheUVycm9yID0gKG9wdGlvbnMgJiYgb3B0aW9ucz8uZGlzcGxheUVycm9yKSA/IG9wdGlvbnMuZGlzcGxheUVycm9yIDogY29uZmlnRm9yUm9vdD8uZGlzcGxheUVycm9yIHx8IGZhbHNlO1xuXG4gICAgbWVyZ2VkT3B0aW9ucy5zdHJlYW0gPSAob3B0aW9ucyAmJiBvcHRpb25zPy5zdHJlYW0pID8gb3B0aW9ucy5zdHJlYW0gOiBjb25maWdGb3JSb290Py5zdHJlYW0gfHwgZmFsc2U7XG5cbiAgICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcblxuICB9XG5cbiAgbWVyZ2VTdG9yYWdlT3B0aW9ucyhvcHRpb25zID0gU2V0dGluZ09wdGlvbnMuYWRhcHQoKSkge1xuXG4gICAgY29uc3QgY29uZmlnRm9yUm9vdCA9ICh0aGlzLmNvbmZpZ09wdGlvbnM/LkxvY2FsU3RvcmFnZU9wdGlvbnMpID8gdGhpcy5jb25maWdPcHRpb25zLkxvY2FsU3RvcmFnZU9wdGlvbnMgOiBMb2NhbFN0b3JhZ2VPcHRpb25zLmFkYXB0KClcbiAgICBjb25zdCBjb25maWdGb3JSb290T3B0aW9ucyA9IGNvbmZpZ0ZvclJvb3Qub3B0aW9ucyB8fCBMb2NhbFN0b3JhZ2VPcHRpb25zLmFkYXB0KCkub3B0aW9uc1xuXG4gICAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IFNldHRpbmdPcHRpb25zLmFkYXB0KG9wdGlvbnMpXG5cbiAgICAvLyBzdG9yYWdlIHR5cGVcbiAgICBtZXJnZWRPcHRpb25zLnN0b3JhZ2UgPSAob3B0aW9ucyAmJiAodHlwZW9mIG9wdGlvbnMuc3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpKSA/IG9wdGlvbnMuc3RvcmFnZSA6IChjb25maWdGb3JSb290T3B0aW9ucz8uc3RvcmFnZSA/PyAwKVxuXG4gICAgLy8gZXhwaXJlczogcHJlZmVyIGV4cGxpY2l0IG51bWVyaWMgZXhwaXJlczsgaWYgbm90IHByb3ZpZGVkLCBjb21wdXRlIGZyb20gZXhwaXJlc0luIHN0cmluZzsgb3RoZXJ3aXNlIHVzZSBjb25maWcgZGVmYXVsdFxuICAgIC8vIGlmIGFuIGV4cGxpY2l0LCBub24temVybyBudW1lcmljIGV4cGlyZXMgaXMgcHJvdmlkZWQsIHVzZSBpdFxuICAgIGlmIChvcHRpb25zICYmICh0eXBlb2Ygb3B0aW9ucy5leHBpcmVzICE9PSAndW5kZWZpbmVkJykgJiYgb3B0aW9ucy5leHBpcmVzICE9PSBudWxsICYmIE51bWJlcihvcHRpb25zLmV4cGlyZXMpID4gMCkge1xuICAgICAgbWVyZ2VkT3B0aW9ucy5leHBpcmVzID0gTnVtYmVyKG9wdGlvbnMuZXhwaXJlcyk7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZXhwaXJlc0luKSB7XG4gICAgICAvLyBjb21wdXRlIG51bWVyaWMgZXBvY2ggZnJvbSBleHBpcmVzSW4gc3RyaW5nIHVzaW5nIFV0aWxzU2VydmljZSBpZiBhdmFpbGFibGVcbiAgICAgIHRyeSB7XG4gICAgICAgIG1lcmdlZE9wdGlvbnMuZXhwaXJlcyA9IHRoaXMudXRpbHMgPyB0aGlzLnV0aWxzLmV4cGlyZXMob3B0aW9ucy5leHBpcmVzSW4pIDogMDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBtZXJnZWRPcHRpb25zLmV4cGlyZXMgPSAwO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZWRPcHRpb25zLmV4cGlyZXMgPSBjb25maWdGb3JSb290T3B0aW9ucz8uZXhwaXJlcyA/PyAwO1xuICAgIH1cblxuICAgIC8vIGtlZXAgZXhwaXJlc0luIHN0cmluZyBpZiBleHBsaWNpdGx5IHByb3ZpZGVkLCBvdGhlcndpc2UgdXNlIGNvbmZpZyBkZWZhdWx0XG4gICAgbWVyZ2VkT3B0aW9ucy5leHBpcmVzSW4gPSAob3B0aW9ucyAmJiAodHlwZW9mIG9wdGlvbnMuZXhwaXJlc0luICE9PSAndW5kZWZpbmVkJykpID8gb3B0aW9ucy5leHBpcmVzSW4gOiAoY29uZmlnRm9yUm9vdE9wdGlvbnM/LmV4cGlyZXNJbiB8fCAnJylcblxuICAgIG1lcmdlZE9wdGlvbnMuZW5jcnlwdGVkID0gKG9wdGlvbnMgJiYgKHR5cGVvZiBvcHRpb25zLmVuY3J5cHRlZCAhPT0gJ3VuZGVmaW5lZCcpKSA/IG9wdGlvbnMuZW5jcnlwdGVkIDogKGNvbmZpZ0ZvclJvb3RPcHRpb25zPy5lbmNyeXB0ZWQgfHwgZmFsc2UpXG5cbiAgICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcblxuICB9XG5cbn1cbiJdfQ==