http-request-manager 15.0.17 → 15.0.19

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.
@@ -31,10 +31,7 @@ export class HTTPManagerService extends RequestService {
31
31
  getRequest(options, params) {
32
32
  this.isPending.next(true);
33
33
  this.data.next(null);
34
- if (options?.path)
35
- options.path = (params) ? [...options.path, ...params] : options.path;
36
- options = (options) ? options : ApiRequest.adapt();
37
- const updatedOptions = this.objectMergerService.mergeOptions(options);
34
+ const updatedOptions = this.defineReqOptions(options, params);
38
35
  const func = this.getRecordRequest;
39
36
  const requests = this.createRequest(func, updatedOptions);
40
37
  return this.createObservable(updatedOptions, requests, func.name)
@@ -48,10 +45,7 @@ export class HTTPManagerService extends RequestService {
48
45
  postRequest(data, options, params) {
49
46
  this.isPending.next(true);
50
47
  this.data.next(null);
51
- if (options?.path)
52
- options.path = (params) ? [...options.path, ...params] : options.path;
53
- options = (options) ? options : ApiRequest.adapt();
54
- const updatedOptions = this.objectMergerService.mergeOptions(options);
48
+ const updatedOptions = this.defineReqOptions(options, params);
55
49
  const func = this.createRecordRequest;
56
50
  const requests = this.createRequest(func, updatedOptions, data);
57
51
  return this.createObservable(updatedOptions, requests, func.name).pipe(tap(data => this.data.next(data)))
@@ -65,10 +59,7 @@ export class HTTPManagerService extends RequestService {
65
59
  putRequest(data, options, params) {
66
60
  this.isPending.next(true);
67
61
  this.data.next(null);
68
- if (options?.path)
69
- options.path = (params) ? [...options.path, ...params] : options.path;
70
- options = (options) ? options : ApiRequest.adapt();
71
- const updatedOptions = this.objectMergerService.mergeOptions(options);
62
+ const updatedOptions = this.defineReqOptions(options, params);
72
63
  const func = this.updateRecordRequest;
73
64
  const requests = this.createRequest(func, updatedOptions, data);
74
65
  return this.createObservable(updatedOptions, requests, func.name).pipe(tap(data => this.data.next(data)))
@@ -82,10 +73,7 @@ export class HTTPManagerService extends RequestService {
82
73
  deleteRequest(options, params) {
83
74
  this.isPending.next(true);
84
75
  this.data.next(null);
85
- if (options?.path)
86
- options.path = (params) ? [...options.path, ...params] : options.path;
87
- options = (options) ? options : ApiRequest.adapt();
88
- const updatedOptions = this.objectMergerService.mergeOptions(options);
76
+ const updatedOptions = this.defineReqOptions(options, params);
89
77
  const func = this.deleteRecordRequest;
90
78
  const requests = this.createRequest(func, updatedOptions);
91
79
  return this.createObservable(updatedOptions, requests, func.name).pipe(tap(data => this.data.next(data)))
@@ -98,10 +86,7 @@ export class HTTPManagerService extends RequestService {
98
86
  }
99
87
  downloadRequest(options, params, saveAs) {
100
88
  this.isPending.next(true);
101
- if (options?.path)
102
- options.path = (params) ? [...options.path, ...params] : options.path;
103
- options = (options) ? options : ApiRequest.adapt({ saveAs });
104
- const updatedOptions = this.objectMergerService.mergeOptions(options);
89
+ const updatedOptions = this.defineReqOptions(options, params);
105
90
  const func = this.downloadFileRequest;
106
91
  const requests = this.createRequest(func, updatedOptions);
107
92
  return this.createObservable(updatedOptions, requests, func.name)
@@ -197,6 +182,14 @@ export class HTTPManagerService extends RequestService {
197
182
  this.isPending.next(false);
198
183
  this.polling$.next();
199
184
  }
185
+ defineReqOptions(options, params) {
186
+ const req = ApiRequest.adapt(options);
187
+ if (req?.path)
188
+ req.path = (params) ? [...req.path, ...params] : req.path;
189
+ const optionsReq = (req) ? req : ApiRequest.adapt();
190
+ const updatedOptions = this.objectMergerService.mergeOptions(optionsReq);
191
+ return updatedOptions;
192
+ }
200
193
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HTTPManagerService, deps: [{ token: CONFIG_SETTINGS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
201
194
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HTTPManagerService, providedIn: 'root' }); }
202
195
  }
@@ -211,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
211
204
  type: Inject,
212
205
  args: [CONFIG_SETTINGS_TOKEN]
213
206
  }] }]; } });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zZXJ2aWNlcy9odHRwLW1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBS3JFLE1BQU0sT0FBTyxrQkFBc0IsU0FBUSxjQUFjO0lBbUJ2RCxZQUErRCxhQUE2QjtRQUMxRixLQUFLLEVBQUUsQ0FBQTtRQURzRCxrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFqQjVGLGlCQUFZLEdBQUcsTUFB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QUE7UUFDekUsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVPLHVCQUF1QixDQUFDLEtBQXFCO1FBRW5ELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDaEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxNQUFNLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDakUsTUFBTSxFQUFFLElBQUk7WUFDWixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7WUFDeEIsSUFBSSxFQUFFLE9BQU87WUFDYixRQUFRLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxXQUFXO1NBQ2hDLENBQUMsQ0FBQTtRQUVSLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRTlDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQzsrR0ExUVUsa0JBQWtCLGtCQW1CRyxxQkFBcUI7bUhBbkIxQyxrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBb0JjLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCwgbWFwLCBmaW5hbGl6ZSwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXBpUmVxdWVzdCB9IGZyb20gJy4uL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1zZXJ2aWNlL21vZGVscy9hcGktcmVxdWVzdC5tb2RlbCc7XG5pbXBvcnQgeyBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4vcmVxdWVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IHJlcXVlc3RQb2xsaW5nLCBjb3VudGRvd24sIGRlbGF5ZWRSZXRyeSB9IGZyb20gJy4vcnhqcy1vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUb2FzdENvbG9ycywgVG9hc3REaXNwbGF5LCBUb2FzdE1lc3NhZ2VEaXNwbGF5U2VydmljZSB9IGZyb20gJ3RvYXN0LW1lc3NhZ2UtZGlzcGxheSc7XG5cbmltcG9ydCB7IENPTkZJR19TRVRUSU5HU19UT0tFTiB9IGZyb20gJy4uLy4uL21vZGVscy9jb25maWctdG9rZW4ubW9kZWwnO1xuaW1wb3J0IHsgQ29uZmlnT3B0aW9ucyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBPYmplY3RNZXJnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvb2JqZWN0LW1lcmdlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEhUVFBNYW5hZ2VyU2VydmljZTxUPiBleHRlbmRzIFJlcXVlc3RTZXJ2aWNlIHtcblxuICB0b2FzdE1lc3NhZ2UgPSBpbmplY3QoVG9hc3RNZXNzYWdlRGlzcGxheVNlcnZpY2UpXG4gIG5nX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKVxuICBvYmplY3RNZXJnZXJTZXJ2aWNlID0gaW5qZWN0KE9iamVjdE1lcmdlclNlcnZpY2UpXG5cbiAgcHJpdmF0ZSBjb3VudGRvd24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIGNvdW50ZG93biQgPSB0aGlzLmNvdW50ZG93bi5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIGVycm9yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGVycm9yJCA9IHRoaXMuZXJyb3IuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBkYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpXG4gIGRhdGEkID0gdGhpcy5kYXRhLmFzT2JzZXJ2YWJsZSgpXG5cbiAgcHJpdmF0ZSBwb2xsaW5nJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uZmlnID0gQXBpUmVxdWVzdC5hZGFwdCgpO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoQ09ORklHX1NFVFRJTkdTX1RPS0VOKSBwcml2YXRlIGNvbmZpZ09wdGlvbnM/OiBDb25maWdPcHRpb25zKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuY29uZmlnID0gKGNvbmZpZ09wdGlvbnMpID8gQXBpUmVxdWVzdC5hZGFwdChjb25maWdPcHRpb25zLmh0dHBSZXF1ZXN0T3B0aW9ucykgOiB0aGlzLmNvbmZpZ1xuICB9XG5cbiAgLy8gUkVRVUVTVFNcblxuICBnZXRSZXF1ZXN0PFQ+KG9wdGlvbnM/OiBBcGlSZXF1ZXN0LCBwYXJhbXM/OiBhbnlbXSkge1xuXG4gICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRhdGEubmV4dChudWxsKVxuXG4gICAgaWYob3B0aW9ucz8ucGF0aCkgb3B0aW9ucy5wYXRoID0gKHBhcmFtcykgPyBbLi4ub3B0aW9ucy5wYXRoLCAuLi5wYXJhbXNdIDogb3B0aW9ucy5wYXRoXG5cbiAgICBvcHRpb25zID0gKG9wdGlvbnMpPyBvcHRpb25zIDogQXBpUmVxdWVzdC5hZGFwdCgpXG4gICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSB0aGlzLm9iamVjdE1lcmdlclNlcnZpY2UubWVyZ2VPcHRpb25zKG9wdGlvbnMpXG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5nZXRSZWNvcmRSZXF1ZXN0O1xuXG4gICAgY29uc3QgcmVxdWVzdHMgPSB0aGlzLmNyZWF0ZVJlcXVlc3QoZnVuYywgdXBkYXRlZE9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZTxUPih1cGRhdGVkT3B0aW9ucywgcmVxdWVzdHMsIGZ1bmMubmFtZSlcbiAgICAucGlwZShcbiAgICAgIHRhcChkYXRhID0+IHRoaXMuZGF0YS5uZXh0KGRhdGEpKVxuICAgICkucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSkpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICBpZih1cGRhdGVkT3B0aW9ucy5kaXNwbGF5RXJyb3IpIHRoaXMuaGFuZGxlRXJyb3JXaXRoU25hY2tCYXIoZXJyKVxuICAgICAgICAgIHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgfVxuXG4gIHBvc3RSZXF1ZXN0PFQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyfHN0cmluZyB9PihkYXRhOiBULCBvcHRpb25zOiBBcGlSZXF1ZXN0LCBwYXJhbXM/OiBhbnlbXSkge1xuXG4gICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRhdGEubmV4dChudWxsKVxuXG4gICAgaWYob3B0aW9ucz8ucGF0aCkgb3B0aW9ucy5wYXRoID0gKHBhcmFtcykgPyBbLi4ub3B0aW9ucy5wYXRoLCAuLi5wYXJhbXNdIDogb3B0aW9ucy5wYXRoXG5cbiAgICBvcHRpb25zID0gKG9wdGlvbnMpPyBvcHRpb25zIDogQXBpUmVxdWVzdC5hZGFwdCgpXG4gICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSB0aGlzLm9iamVjdE1lcmdlclNlcnZpY2UubWVyZ2VPcHRpb25zKG9wdGlvbnMpXG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5jcmVhdGVSZWNvcmRSZXF1ZXN0O1xuXG4gICAgY29uc3QgcmVxdWVzdHMgPSB0aGlzLmNyZWF0ZVJlcXVlc3QoZnVuYywgdXBkYXRlZE9wdGlvbnMsIGRhdGEpO1xuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZTxUPih1cGRhdGVkT3B0aW9ucywgcmVxdWVzdHMsIGZ1bmMubmFtZSkucGlwZSh0YXAoZGF0YSA9PiB0aGlzLmRhdGEubmV4dChkYXRhKSkpXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSkpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICBpZih1cGRhdGVkT3B0aW9ucy5kaXNwbGF5RXJyb3IpIHRoaXMuaGFuZGxlRXJyb3JXaXRoU25hY2tCYXIoZXJyKVxuICAgICAgICAgIHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgfVxuXG4gIHB1dFJlcXVlc3Q8VCBleHRlbmRzIHsgaWQ/OiBudW1iZXJ8c3RyaW5nIH0+KGRhdGE6IFQsIG9wdGlvbnM6IEFwaVJlcXVlc3QsIHBhcmFtcz86IGFueVtdKSB7XG5cbiAgICB0aGlzLmlzUGVuZGluZy5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGF0YS5uZXh0KG51bGwpXG5cbiAgICBpZihvcHRpb25zPy5wYXRoKSBvcHRpb25zLnBhdGggPSAocGFyYW1zKSA/IFsuLi5vcHRpb25zLnBhdGgsIC4uLnBhcmFtc10gOiBvcHRpb25zLnBhdGhcblxuICAgIG9wdGlvbnMgPSAob3B0aW9ucyk/IG9wdGlvbnMgOiBBcGlSZXF1ZXN0LmFkYXB0KClcbiAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9IHRoaXMub2JqZWN0TWVyZ2VyU2VydmljZS5tZXJnZU9wdGlvbnMob3B0aW9ucylcbiAgICBjb25zdCBmdW5jID0gdGhpcy51cGRhdGVSZWNvcmRSZXF1ZXN0O1xuXG4gICAgY29uc3QgcmVxdWVzdHMgPSB0aGlzLmNyZWF0ZVJlcXVlc3QoZnVuYywgdXBkYXRlZE9wdGlvbnMsIGRhdGEpO1xuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZTxUPih1cGRhdGVkT3B0aW9ucywgcmVxdWVzdHMsIGZ1bmMubmFtZSkucGlwZSh0YXAoZGF0YSA9PiB0aGlzLmRhdGEubmV4dChkYXRhKSkpXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSkpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICBpZih1cGRhdGVkT3B0aW9ucy5kaXNwbGF5RXJyb3IpIHRoaXMuaGFuZGxlRXJyb3JXaXRoU25hY2tCYXIoZXJyKVxuICAgICAgICAgICAgdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSlcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihlcnIpO1xuICAgICAgICB9KVxuICAgICAgKVxuICB9XG5cbiAgZGVsZXRlUmVxdWVzdDxUPihvcHRpb25zOiBBcGlSZXF1ZXN0LCBwYXJhbXM/OiBhbnlbXSkge1xuXG4gICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRhdGEubmV4dChudWxsKVxuXG4gICAgaWYob3B0aW9ucz8ucGF0aCkgb3B0aW9ucy5wYXRoID0gKHBhcmFtcykgPyBbLi4ub3B0aW9ucy5wYXRoLCAuLi5wYXJhbXNdIDogb3B0aW9ucy5wYXRoXG5cbiAgICBvcHRpb25zID0gKG9wdGlvbnMpPyBvcHRpb25zIDogQXBpUmVxdWVzdC5hZGFwdCgpXG4gICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSB0aGlzLm9iamVjdE1lcmdlclNlcnZpY2UubWVyZ2VPcHRpb25zKG9wdGlvbnMpXG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5kZWxldGVSZWNvcmRSZXF1ZXN0O1xuXG4gICAgY29uc3QgcmVxdWVzdHMgPSB0aGlzLmNyZWF0ZVJlcXVlc3QoZnVuYywgdXBkYXRlZE9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZTxUPih1cGRhdGVkT3B0aW9ucywgcmVxdWVzdHMsIGZ1bmMubmFtZSkucGlwZSh0YXAoZGF0YSA9PiB0aGlzLmRhdGEubmV4dChkYXRhKSkpXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSkpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICBpZih1cGRhdGVkT3B0aW9ucy5kaXNwbGF5RXJyb3IpIHRoaXMuaGFuZGxlRXJyb3JXaXRoU25hY2tCYXIoZXJyKVxuICAgICAgICAgIHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgfVxuXG4gIGRvd25sb2FkUmVxdWVzdDxUPihvcHRpb25zOiBBcGlSZXF1ZXN0LCBwYXJhbXM/OiBhbnlbXSwgc2F2ZUFzPzogc3RyaW5nKSB7XG5cbiAgICB0aGlzLmlzUGVuZGluZy5uZXh0KHRydWUpO1xuXG4gICAgaWYob3B0aW9ucz8ucGF0aCkgb3B0aW9ucy5wYXRoID0gKHBhcmFtcykgPyBbLi4ub3B0aW9ucy5wYXRoLCAuLi5wYXJhbXNdIDogb3B0aW9ucy5wYXRoXG5cbiAgICBvcHRpb25zID0gKG9wdGlvbnMpPyBvcHRpb25zIDogQXBpUmVxdWVzdC5hZGFwdCh7IHNhdmVBcyB9KVxuICAgIGNvbnN0IHVwZGF0ZWRPcHRpb25zID0gdGhpcy5vYmplY3RNZXJnZXJTZXJ2aWNlLm1lcmdlT3B0aW9ucyhvcHRpb25zKVxuXG4gICAgY29uc3QgZnVuYyA9IHRoaXMuZG93bmxvYWRGaWxlUmVxdWVzdDtcblxuICAgIGNvbnN0IHJlcXVlc3RzID0gdGhpcy5jcmVhdGVSZXF1ZXN0KGZ1bmMsIHVwZGF0ZWRPcHRpb25zKVxuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZTxUPih1cGRhdGVkT3B0aW9ucywgcmVxdWVzdHMsIGZ1bmMubmFtZSlcbiAgICAucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICB0aGlzLmVycm9yLm5leHQodHJ1ZSlcbiAgICAgICAgdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSlcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgIH0pXG4gICAgKVxuXG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU9ic2VydmFibGU8VD4ob3B0aW9uczogQXBpUmVxdWVzdCwgcmVxdWVzdCQ6IE9ic2VydmFibGU8VD4sIGZ1bmNOYW1lOiBzdHJpbmcpIHtcblxuICAgIGNvbnN0IHBvbGxpbmcgPSBvcHRpb25zLnBvbGxpbmcgPyAob3B0aW9ucy5wb2xsaW5nID4gMCA/IHRydWUgOiBmYWxzZSkgOiBmYWxzZTtcbiAgICBjb25zdCBpc1BvbGxpbmcgPVxuICAgICAgcG9sbGluZyAmJlxuICAgICAgIShmdW5jTmFtZSA9PT0gJ2RlbGV0ZVJlY29yZFJlcXVlc3QnIHx8IGZ1bmNOYW1lID09PSAndXBkYXRlUmVjb3JkUmVxdWVzdCcgfHwgZnVuY05hbWUgPT09ICdjcmVhdGVSZWNvcmRSZXF1ZXN0JylcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogZmFsc2U7XG5cbiAgICB0aGlzLnBvbGxpbmckLm5leHQoKTtcblxuICAgIGNvbnN0IHBvbGxpbmckID1cbiAgICAgIChpc1BvbGxpbmcgJiYgb3B0aW9ucy5wb2xsaW5nKSB8fCAwID49IDNcbiAgICAgICAgPyByZXF1ZXN0JC5waXBlKFxuICAgICAgICAgICAgcmVxdWVzdFBvbGxpbmcoKG9wdGlvbnMucG9sbGluZyB8fCAwKSArIDEsIHRoaXMucG9sbGluZyQsIHRoaXMuaXNQZW5kaW5nKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmNvdW50ZG93bi5uZXh0KDApKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9ucy5wb2xsaW5nKSByZXR1cm47XG4gICAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gb3B0aW9ucy5wb2xsaW5nID8gb3B0aW9ucy5wb2xsaW5nIDogMDtcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0NPVU5UOicsIGNvdW50KTtcbiAgICAgICAgICAgICAgY291bnRkb3duKGNvdW50KVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgbWFwKCh4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1hYOicsIGNvdW50LCB4KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9sbGluZ0luU2VjID0gb3B0aW9ucy5wb2xsaW5nIHx8IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcmNlbnRhZ2VDb21wbGV0ZWQgPSAoKHBvbGxpbmdJblNlYyAtIHgpIC8gcG9sbGluZ0luU2VjKSAqIDEwMDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQocGVyY2VudGFnZUNvbXBsZXRlZCk7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChjb3VudERvd25WYWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNvdW50ZG93bi52YWx1ZSwgY291bnREb3duVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudGRvd24ubmV4dChjb3VudERvd25WYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIDogcmVxdWVzdCQucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XG5cbiAgICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvci5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yKGVycik7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAvLyBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKSlcbiAgICAgICAgICApXG5cbiAgICByZXR1cm4gcG9sbGluZyQucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55LCBjYXVnaHQ6IE9ic2VydmFibGU8VD4pID0+IHtcblxuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICB0aGlzLmVycm9yLm5leHQodHJ1ZSk7XG4gICAgICAgICAgaWYoaXNQb2xsaW5nKSB0aGlzLnN0b3BQb2xsaW5nKCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgICB9KSxcbiAgICAgIChvcHRpb25zPy5yZXRyeSAmJiBvcHRpb25zLnJldHJ5LnRpbWVzID4gMClcbiAgICAgICAgPyBkZWxheWVkUmV0cnkoKG9wdGlvbnMucmV0cnkuZGVsYXkgfHwgMykgKiAxMDAwLCAob3B0aW9ucy5yZXRyeS50aW1lcyB8fCAwKSAtIDEpXG4gICAgICAgIDogKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4gc291cmNlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUmVxdWVzdChmdW5jOiBGdW5jdGlvbiwgb3B0aW9uczogQXBpUmVxdWVzdCwgZGF0YT86IGFueSB8IGFueVtdKSB7XG4gICAgY29uc3QgZGF0YUl0ZW0gPSB0aGlzLnByZXBhcmVSZXF1ZXN0RGF0YShvcHRpb25zLCBkYXRhLCBmdW5jLm5hbWUpO1xuICAgIHJldHVybiBmdW5jLmJpbmQodGhpcykoZGF0YUl0ZW0ub3B0aW9ucywgZGF0YUl0ZW0uZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVSZXF1ZXN0RGF0YShvcHRpb25zOiBBcGlSZXF1ZXN0LCBkYXRhOiBhbnksIGZ1bmNOYW1lOiBzdHJpbmcpIHtcblxuICAgIGlmICgob3B0aW9ucy5tYXBwZXIgJiYgZnVuY05hbWUgPT09ICd1cGRhdGVSZWNvcmRSZXF1ZXN0JykgfHwgZnVuY05hbWUgPT09ICdjcmVhdGVSZWNvcmRSZXF1ZXN0Jykge1xuICAgICAgaWYgKG9wdGlvbnM/Lm1hcHBlcikge1xuICAgICAgICBkYXRhID0gb3B0aW9ucy5tYXBwZXJcbiAgICAgICAgICA/IEFycmF5LmlzQXJyYXkoZGF0YSlcbiAgICAgICAgICAgID8gbWFwKChpdGVtKSA9PiBvcHRpb25zLm1hcHBlcihpdGVtKSlcbiAgICAgICAgICAgIDogb3B0aW9ucy5tYXBwZXIoZGF0YSlcbiAgICAgICAgICA6IGRhdGE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvcHRpb25zPy5hZGFwdGVyKSB7XG4gICAgICAgIGRhdGEgPSBBcnJheS5pc0FycmF5KGRhdGEpXG4gICAgICAgICAgICA/IG1hcCgoaXRlbSkgPT4gb3B0aW9ucy5hZGFwdGVyKGl0ZW0pKVxuICAgICAgICAgICAgOiBvcHRpb25zLmFkYXB0ZXIoZGF0YSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBvcHRpb25zOiBvcHRpb25zLCBkYXRhOiBkYXRhIH07XG4gIH1cblxuICAvLyBNSVNDXG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogUmVzcG9uc2UgfCBhbnkpIHtcbiAgICB0aGlzLmVycm9yLm5leHQoZXJyb3IubWVzc2FnZSB8fCBgJHtlcnJvci5zdGF0dXN9IC0gJHtlcnJvci5zdGF0dXNUZXh0fWApXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yV2l0aFNuYWNrQmFyKGVycm9yOiBSZXNwb25zZSB8IGFueSkge1xuXG4gICAgY29uc3QgZGlzcGxheUVycm9yID0gVG9hc3REaXNwbGF5LmFkYXB0KHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfHwgYCR7ZXJyb3Iuc3RhdHVzfSAtICR7ZXJyb3Iuc3RhdHVzVGV4dH1gLFxuICAgICAgICAgICAgYWN0aW9uOiAnT0snLFxuICAgICAgICAgICAgY29sb3I6IFRvYXN0Q29sb3JzLkVSUk9SLFxuICAgICAgICAgICAgaWNvbjogJ2Vycm9yJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiA1ICogMTAwMCwgLy81IHNlY29uZHNcbiAgICAgICAgICB9KVxuXG4gICAgdGhpcy50b2FzdE1lc3NhZ2UudG9hc3RNZXNzYWdlKGRpc3BsYXlFcnJvcilcblxuICB9XG5cbiAgcHJpdmF0ZSBzdG9wUG9sbGluZygpIHtcbiAgICB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLnBvbGxpbmckLm5leHQoKTtcbiAgfVxufVxuIl19
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zZXJ2aWNlcy9odHRwLW1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBS3JFLE1BQU0sT0FBTyxrQkFBc0IsU0FBUSxjQUFjO0lBbUJ2RCxZQUErRCxhQUE2QjtRQUMxRixLQUFLLEVBQUUsQ0FBQTtRQURzRCxrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFqQjVGLGlCQUFZLEdBQUcsTUFB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QUMsQ0FBQTtJQUU5QyxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFZLEVBQUUsTUFBYztRQUVuRCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3JDLElBQUcsR0FBRyxFQUFFLElBQUk7WUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUE7UUFFdkUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDbEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUV4RSxPQUFPLGNBQWMsQ0FBQTtJQUV2QixDQUFDOytHQXhRVSxrQkFBa0Isa0JBbUJHLHFCQUFxQjttSEFuQjFDLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFvQmMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCBtYXAsIGZpbmFsaXplLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBcGlSZXF1ZXN0IH0gZnJvbSAnLi4vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzL2FwaS1yZXF1ZXN0Lm1vZGVsJztcbmltcG9ydCB7IFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgcmVxdWVzdFBvbGxpbmcsIGNvdW50ZG93biwgZGVsYXllZFJldHJ5IH0gZnJvbSAnLi9yeGpzLW9wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFRvYXN0Q29sb3JzLCBUb2FzdERpc3BsYXksIFRvYXN0TWVzc2FnZURpc3BsYXlTZXJ2aWNlIH0gZnJvbSAndG9hc3QtbWVzc2FnZS1kaXNwbGF5JztcblxuaW1wb3J0IHsgQ09ORklHX1NFVFRJTkdTX1RPS0VOIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbmZpZy10b2tlbi5tb2RlbCc7XG5pbXBvcnQgeyBDb25maWdPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IE9iamVjdE1lcmdlclNlcnZpY2UgfSBmcm9tICcuLi91dGlscy9vYmplY3QtbWVyZ2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSFRUUE1hbmFnZXJTZXJ2aWNlPFQ+IGV4dGVuZHMgUmVxdWVzdFNlcnZpY2Uge1xuXG4gIHRvYXN0TWVzc2FnZSA9IGluamVjdChUb2FzdE1lc3NhZ2VEaXNwbGF5U2VydmljZSlcbiAgbmdfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpXG4gIG9iamVjdE1lcmdlclNlcnZpY2UgPSBpbmplY3QoT2JqZWN0TWVyZ2VyU2VydmljZSlcblxuICBwcml2YXRlIGNvdW50ZG93biA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgY291bnRkb3duJCA9IHRoaXMuY291bnRkb3duLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgZXJyb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZXJyb3IkID0gdGhpcy5lcnJvci5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIGRhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbClcbiAgZGF0YSQgPSB0aGlzLmRhdGEuYXNPYnNlcnZhYmxlKClcblxuICBwcml2YXRlIHBvbGxpbmckID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25maWcgPSBBcGlSZXF1ZXN0LmFkYXB0KCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChDT05GSUdfU0VUVElOR1NfVE9LRU4pIHByaXZhdGUgY29uZmlnT3B0aW9ucz86IENvbmZpZ09wdGlvbnMpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5jb25maWcgPSAoY29uZmlnT3B0aW9ucykgPyBBcGlSZXF1ZXN0LmFkYXB0KGNvbmZpZ09wdGlvbnMuaHR0cFJlcXVlc3RPcHRpb25zKSA6IHRoaXMuY29uZmlnXG4gIH1cblxuICAvLyBSRVFVRVNUU1xuXG4gIGdldFJlcXVlc3Q8VD4ob3B0aW9ucz86IEFwaVJlcXVlc3QsIHBhcmFtcz86IGFueVtdKSB7XG5cbiAgICB0aGlzLmlzUGVuZGluZy5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGF0YS5uZXh0KG51bGwpXG5cbiAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9IHRoaXMuZGVmaW5lUmVxT3B0aW9ucyhvcHRpb25zLCBwYXJhbXMpXG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5nZXRSZWNvcmRSZXF1ZXN0O1xuXG4gICAgY29uc3QgcmVxdWVzdHMgPSB0aGlzLmNyZWF0ZVJlcXVlc3QoZnVuYywgdXBkYXRlZE9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZTxUPih1cGRhdGVkT3B0aW9ucywgcmVxdWVzdHMsIGZ1bmMubmFtZSlcbiAgICAucGlwZShcbiAgICAgIHRhcChkYXRhID0+IHRoaXMuZGF0YS5uZXh0KGRhdGEpKVxuICAgICkucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSkpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICBpZih1cGRhdGVkT3B0aW9ucy5kaXNwbGF5RXJyb3IpIHRoaXMuaGFuZGxlRXJyb3JXaXRoU25hY2tCYXIoZXJyKVxuICAgICAgICAgIHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgfVxuXG4gIHBvc3RSZXF1ZXN0PFQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyfHN0cmluZyB9PihkYXRhOiBULCBvcHRpb25zOiBBcGlSZXF1ZXN0LCBwYXJhbXM/OiBhbnlbXSkge1xuXG4gICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRhdGEubmV4dChudWxsKVxuXG4gICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSB0aGlzLmRlZmluZVJlcU9wdGlvbnMob3B0aW9ucywgcGFyYW1zKVxuXG4gICAgY29uc3QgZnVuYyA9IHRoaXMuY3JlYXRlUmVjb3JkUmVxdWVzdDtcblxuICAgIGNvbnN0IHJlcXVlc3RzID0gdGhpcy5jcmVhdGVSZXF1ZXN0KGZ1bmMsIHVwZGF0ZWRPcHRpb25zLCBkYXRhKTtcblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9ic2VydmFibGU8VD4odXBkYXRlZE9wdGlvbnMsIHJlcXVlc3RzLCBmdW5jLm5hbWUpLnBpcGUodGFwKGRhdGEgPT4gdGhpcy5kYXRhLm5leHQoZGF0YSkpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgaWYodXBkYXRlZE9wdGlvbnMuZGlzcGxheUVycm9yKSB0aGlzLmhhbmRsZUVycm9yV2l0aFNuYWNrQmFyKGVycilcbiAgICAgICAgICB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKVxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yKGVycik7XG4gICAgICAgIH0pXG4gICAgICApXG4gIH1cblxuICBwdXRSZXF1ZXN0PFQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyfHN0cmluZyB9PihkYXRhOiBULCBvcHRpb25zOiBBcGlSZXF1ZXN0LCBwYXJhbXM/OiBhbnlbXSkge1xuXG4gICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRhdGEubmV4dChudWxsKVxuXG4gICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSB0aGlzLmRlZmluZVJlcU9wdGlvbnMob3B0aW9ucywgcGFyYW1zKVxuXG4gICAgY29uc3QgZnVuYyA9IHRoaXMudXBkYXRlUmVjb3JkUmVxdWVzdDtcblxuICAgIGNvbnN0IHJlcXVlc3RzID0gdGhpcy5jcmVhdGVSZXF1ZXN0KGZ1bmMsIHVwZGF0ZWRPcHRpb25zLCBkYXRhKTtcblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9ic2VydmFibGU8VD4odXBkYXRlZE9wdGlvbnMsIHJlcXVlc3RzLCBmdW5jLm5hbWUpLnBpcGUodGFwKGRhdGEgPT4gdGhpcy5kYXRhLm5leHQoZGF0YSkpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgaWYodXBkYXRlZE9wdGlvbnMuZGlzcGxheUVycm9yKSB0aGlzLmhhbmRsZUVycm9yV2l0aFNuYWNrQmFyKGVycilcbiAgICAgICAgICAgIHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgfVxuXG4gIGRlbGV0ZVJlcXVlc3Q8VD4ob3B0aW9uczogQXBpUmVxdWVzdCwgcGFyYW1zPzogYW55W10pIHtcblxuICAgIHRoaXMuaXNQZW5kaW5nLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kYXRhLm5leHQobnVsbClcblxuICAgIGNvbnN0IHVwZGF0ZWRPcHRpb25zID0gdGhpcy5kZWZpbmVSZXFPcHRpb25zKG9wdGlvbnMsIHBhcmFtcylcblxuICAgIGNvbnN0IGZ1bmMgPSB0aGlzLmRlbGV0ZVJlY29yZFJlcXVlc3Q7XG5cbiAgICBjb25zdCByZXF1ZXN0cyA9IHRoaXMuY3JlYXRlUmVxdWVzdChmdW5jLCB1cGRhdGVkT3B0aW9ucyk7XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPYnNlcnZhYmxlPFQ+KHVwZGF0ZWRPcHRpb25zLCByZXF1ZXN0cywgZnVuYy5uYW1lKS5waXBlKHRhcChkYXRhID0+IHRoaXMuZGF0YS5uZXh0KGRhdGEpKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGlmKHVwZGF0ZWRPcHRpb25zLmRpc3BsYXlFcnJvcikgdGhpcy5oYW5kbGVFcnJvcldpdGhTbmFja0JhcihlcnIpXG4gICAgICAgICAgdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSlcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihlcnIpO1xuICAgICAgICB9KVxuICAgICAgKVxuICB9XG5cbiAgZG93bmxvYWRSZXF1ZXN0PFQ+KG9wdGlvbnM6IEFwaVJlcXVlc3QsIHBhcmFtcz86IGFueVtdLCBzYXZlQXM/OiBzdHJpbmcpIHtcblxuICAgIHRoaXMuaXNQZW5kaW5nLm5leHQodHJ1ZSk7XG5cbiAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9IHRoaXMuZGVmaW5lUmVxT3B0aW9ucyhvcHRpb25zLCBwYXJhbXMpXG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5kb3dubG9hZEZpbGVSZXF1ZXN0O1xuXG4gICAgY29uc3QgcmVxdWVzdHMgPSB0aGlzLmNyZWF0ZVJlcXVlc3QoZnVuYywgdXBkYXRlZE9wdGlvbnMpXG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPYnNlcnZhYmxlPFQ+KHVwZGF0ZWRPcHRpb25zLCByZXF1ZXN0cywgZnVuYy5uYW1lKVxuICAgIC5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3IubmV4dCh0cnVlKVxuICAgICAgICB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKVxuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihlcnIpO1xuICAgICAgfSlcbiAgICApXG5cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT2JzZXJ2YWJsZTxUPihvcHRpb25zOiBBcGlSZXF1ZXN0LCByZXF1ZXN0JDogT2JzZXJ2YWJsZTxUPiwgZnVuY05hbWU6IHN0cmluZykge1xuXG4gICAgY29uc3QgcG9sbGluZyA9IG9wdGlvbnMucG9sbGluZyA/IChvcHRpb25zLnBvbGxpbmcgPiAwID8gdHJ1ZSA6IGZhbHNlKSA6IGZhbHNlO1xuICAgIGNvbnN0IGlzUG9sbGluZyA9XG4gICAgICBwb2xsaW5nICYmXG4gICAgICAhKGZ1bmNOYW1lID09PSAnZGVsZXRlUmVjb3JkUmVxdWVzdCcgfHwgZnVuY05hbWUgPT09ICd1cGRhdGVSZWNvcmRSZXF1ZXN0JyB8fCBmdW5jTmFtZSA9PT0gJ2NyZWF0ZVJlY29yZFJlcXVlc3QnKVxuICAgICAgICA/IHRydWVcbiAgICAgICAgOiBmYWxzZTtcblxuICAgIHRoaXMucG9sbGluZyQubmV4dCgpO1xuXG4gICAgY29uc3QgcG9sbGluZyQgPVxuICAgICAgKGlzUG9sbGluZyAmJiBvcHRpb25zLnBvbGxpbmcpIHx8IDAgPj0gM1xuICAgICAgICA/IHJlcXVlc3QkLnBpcGUoXG4gICAgICAgICAgICByZXF1ZXN0UG9sbGluZygob3B0aW9ucy5wb2xsaW5nIHx8IDApICsgMSwgdGhpcy5wb2xsaW5nJCwgdGhpcy5pc1BlbmRpbmcpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuY291bnRkb3duLm5leHQoMCkpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLnBvbGxpbmcpIHJldHVybjtcbiAgICAgICAgICAgICAgY29uc3QgY291bnQgPSBvcHRpb25zLnBvbGxpbmcgPyBvcHRpb25zLnBvbGxpbmcgOiAwO1xuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQ09VTlQ6JywgY291bnQpO1xuICAgICAgICAgICAgICBjb3VudGRvd24oY291bnQpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICBtYXAoKHg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnWFg6JywgY291bnQsIHgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2xsaW5nSW5TZWMgPSBvcHRpb25zLnBvbGxpbmcgfHwgMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGVyY2VudGFnZUNvbXBsZXRlZCA9ICgocG9sbGluZ0luU2VjIC0geCkgLyBwb2xsaW5nSW5TZWMpICogMTAwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChwZXJjZW50YWdlQ29tcGxldGVkKTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNvdW50RG93blZhbHVlOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY291bnRkb3duLnZhbHVlLCBjb3VudERvd25WYWx1ZSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNvdW50ZG93bi5uZXh0KGNvdW50RG93blZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgOiByZXF1ZXN0JC5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcblxuICAgICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC8vIGZpbmFsaXplKCgpID0+IHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpKVxuICAgICAgICAgIClcblxuICAgIHJldHVybiBwb2xsaW5nJC5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnksIGNhdWdodDogT2JzZXJ2YWJsZTxUPikgPT4ge1xuXG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgIHRoaXMuZXJyb3IubmV4dCh0cnVlKTtcbiAgICAgICAgICBpZihpc1BvbGxpbmcpIHRoaXMuc3RvcFBvbGxpbmcoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcbiAgICAgIH0pLFxuICAgICAgKG9wdGlvbnM/LnJldHJ5ICYmIG9wdGlvbnMucmV0cnkudGltZXMgPiAwKVxuICAgICAgICA/IGRlbGF5ZWRSZXRyeSgob3B0aW9ucy5yZXRyeS5kZWxheSB8fCAzKSAqIDEwMDAsIChvcHRpb25zLnJldHJ5LnRpbWVzIHx8IDApIC0gMSlcbiAgICAgICAgOiAoc291cmNlOiBPYnNlcnZhYmxlPFQ+KSA9PiBzb3VyY2VcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVSZXF1ZXN0KGZ1bmM6IEZ1bmN0aW9uLCBvcHRpb25zOiBBcGlSZXF1ZXN0LCBkYXRhPzogYW55IHwgYW55W10pIHtcbiAgICBjb25zdCBkYXRhSXRlbSA9IHRoaXMucHJlcGFyZVJlcXVlc3REYXRhKG9wdGlvbnMsIGRhdGEsIGZ1bmMubmFtZSk7XG4gICAgcmV0dXJuIGZ1bmMuYmluZCh0aGlzKShkYXRhSXRlbS5vcHRpb25zLCBkYXRhSXRlbS5kYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZVJlcXVlc3REYXRhKG9wdGlvbnM6IEFwaVJlcXVlc3QsIGRhdGE6IGFueSwgZnVuY05hbWU6IHN0cmluZykge1xuXG4gICAgaWYgKChvcHRpb25zLm1hcHBlciAmJiBmdW5jTmFtZSA9PT0gJ3VwZGF0ZVJlY29yZFJlcXVlc3QnKSB8fCBmdW5jTmFtZSA9PT0gJ2NyZWF0ZVJlY29yZFJlcXVlc3QnKSB7XG4gICAgICBpZiAob3B0aW9ucz8ubWFwcGVyKSB7XG4gICAgICAgIGRhdGEgPSBvcHRpb25zLm1hcHBlclxuICAgICAgICAgID8gQXJyYXkuaXNBcnJheShkYXRhKVxuICAgICAgICAgICAgPyBtYXAoKGl0ZW0pID0+IG9wdGlvbnMubWFwcGVyKGl0ZW0pKVxuICAgICAgICAgICAgOiBvcHRpb25zLm1hcHBlcihkYXRhKVxuICAgICAgICAgIDogZGF0YTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wdGlvbnM/LmFkYXB0ZXIpIHtcbiAgICAgICAgZGF0YSA9IEFycmF5LmlzQXJyYXkoZGF0YSlcbiAgICAgICAgICAgID8gbWFwKChpdGVtKSA9PiBvcHRpb25zLmFkYXB0ZXIoaXRlbSkpXG4gICAgICAgICAgICA6IG9wdGlvbnMuYWRhcHRlcihkYXRhKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IG9wdGlvbnM6IG9wdGlvbnMsIGRhdGE6IGRhdGEgfTtcbiAgfVxuXG4gIC8vIE1JU0NcblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBSZXNwb25zZSB8IGFueSkge1xuICAgIHRoaXMuZXJyb3IubmV4dChlcnJvci5tZXNzYWdlIHx8IGAke2Vycm9yLnN0YXR1c30gLSAke2Vycm9yLnN0YXR1c1RleHR9YClcbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcilcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3JXaXRoU25hY2tCYXIoZXJyb3I6IFJlc3BvbnNlIHwgYW55KSB7XG5cbiAgICBjb25zdCBkaXNwbGF5RXJyb3IgPSBUb2FzdERpc3BsYXkuYWRhcHQoe1xuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSB8fCBgJHtlcnJvci5zdGF0dXN9IC0gJHtlcnJvci5zdGF0dXNUZXh0fWAsXG4gICAgICAgICAgICBhY3Rpb246ICdPSycsXG4gICAgICAgICAgICBjb2xvcjogVG9hc3RDb2xvcnMuRVJST1IsXG4gICAgICAgICAgICBpY29uOiAnZXJyb3InLFxuICAgICAgICAgICAgZHVyYXRpb246IDUgKiAxMDAwLCAvLzUgc2Vjb25kc1xuICAgICAgICAgIH0pXG5cbiAgICB0aGlzLnRvYXN0TWVzc2FnZS50b2FzdE1lc3NhZ2UoZGlzcGxheUVycm9yKVxuXG4gIH1cblxuICBwcml2YXRlIHN0b3BQb2xsaW5nKCkge1xuICAgIHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpO1xuICAgIHRoaXMucG9sbGluZyQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWZpbmVSZXFPcHRpb25zKG9wdGlvbnM6IGFueSwgcGFyYW1zPzogYW55W10pIHtcblxuICAgIGNvbnN0IHJlcSA9IEFwaVJlcXVlc3QuYWRhcHQob3B0aW9ucylcbiAgICBpZihyZXE/LnBhdGgpIHJlcS5wYXRoID0gKHBhcmFtcykgPyBbLi4ucmVxLnBhdGgsIC4uLnBhcmFtc10gOiByZXEucGF0aFxuXG4gICAgY29uc3Qgb3B0aW9uc1JlcSA9IChyZXEpPyByZXEgOiBBcGlSZXF1ZXN0LmFkYXB0KClcbiAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9IHRoaXMub2JqZWN0TWVyZ2VyU2VydmljZS5tZXJnZU9wdGlvbnMob3B0aW9uc1JlcSlcblxuICAgIHJldHVybiB1cGRhdGVkT3B0aW9uc1xuXG4gIH1cbn1cbiJdfQ==
@@ -999,10 +999,7 @@ class HTTPManagerService extends RequestService {
999
999
  getRequest(options, params) {
1000
1000
  this.isPending.next(true);
1001
1001
  this.data.next(null);
1002
- if (options?.path)
1003
- options.path = (params) ? [...options.path, ...params] : options.path;
1004
- options = (options) ? options : ApiRequest.adapt();
1005
- const updatedOptions = this.objectMergerService.mergeOptions(options);
1002
+ const updatedOptions = this.defineReqOptions(options, params);
1006
1003
  const func = this.getRecordRequest;
1007
1004
  const requests = this.createRequest(func, updatedOptions);
1008
1005
  return this.createObservable(updatedOptions, requests, func.name)
@@ -1016,10 +1013,7 @@ class HTTPManagerService extends RequestService {
1016
1013
  postRequest(data, options, params) {
1017
1014
  this.isPending.next(true);
1018
1015
  this.data.next(null);
1019
- if (options?.path)
1020
- options.path = (params) ? [...options.path, ...params] : options.path;
1021
- options = (options) ? options : ApiRequest.adapt();
1022
- const updatedOptions = this.objectMergerService.mergeOptions(options);
1016
+ const updatedOptions = this.defineReqOptions(options, params);
1023
1017
  const func = this.createRecordRequest;
1024
1018
  const requests = this.createRequest(func, updatedOptions, data);
1025
1019
  return this.createObservable(updatedOptions, requests, func.name).pipe(tap(data => this.data.next(data)))
@@ -1033,10 +1027,7 @@ class HTTPManagerService extends RequestService {
1033
1027
  putRequest(data, options, params) {
1034
1028
  this.isPending.next(true);
1035
1029
  this.data.next(null);
1036
- if (options?.path)
1037
- options.path = (params) ? [...options.path, ...params] : options.path;
1038
- options = (options) ? options : ApiRequest.adapt();
1039
- const updatedOptions = this.objectMergerService.mergeOptions(options);
1030
+ const updatedOptions = this.defineReqOptions(options, params);
1040
1031
  const func = this.updateRecordRequest;
1041
1032
  const requests = this.createRequest(func, updatedOptions, data);
1042
1033
  return this.createObservable(updatedOptions, requests, func.name).pipe(tap(data => this.data.next(data)))
@@ -1050,10 +1041,7 @@ class HTTPManagerService extends RequestService {
1050
1041
  deleteRequest(options, params) {
1051
1042
  this.isPending.next(true);
1052
1043
  this.data.next(null);
1053
- if (options?.path)
1054
- options.path = (params) ? [...options.path, ...params] : options.path;
1055
- options = (options) ? options : ApiRequest.adapt();
1056
- const updatedOptions = this.objectMergerService.mergeOptions(options);
1044
+ const updatedOptions = this.defineReqOptions(options, params);
1057
1045
  const func = this.deleteRecordRequest;
1058
1046
  const requests = this.createRequest(func, updatedOptions);
1059
1047
  return this.createObservable(updatedOptions, requests, func.name).pipe(tap(data => this.data.next(data)))
@@ -1066,10 +1054,7 @@ class HTTPManagerService extends RequestService {
1066
1054
  }
1067
1055
  downloadRequest(options, params, saveAs) {
1068
1056
  this.isPending.next(true);
1069
- if (options?.path)
1070
- options.path = (params) ? [...options.path, ...params] : options.path;
1071
- options = (options) ? options : ApiRequest.adapt({ saveAs });
1072
- const updatedOptions = this.objectMergerService.mergeOptions(options);
1057
+ const updatedOptions = this.defineReqOptions(options, params);
1073
1058
  const func = this.downloadFileRequest;
1074
1059
  const requests = this.createRequest(func, updatedOptions);
1075
1060
  return this.createObservable(updatedOptions, requests, func.name)
@@ -1165,6 +1150,14 @@ class HTTPManagerService extends RequestService {
1165
1150
  this.isPending.next(false);
1166
1151
  this.polling$.next();
1167
1152
  }
1153
+ defineReqOptions(options, params) {
1154
+ const req = ApiRequest.adapt(options);
1155
+ if (req?.path)
1156
+ req.path = (params) ? [...req.path, ...params] : req.path;
1157
+ const optionsReq = (req) ? req : ApiRequest.adapt();
1158
+ const updatedOptions = this.objectMergerService.mergeOptions(optionsReq);
1159
+ return updatedOptions;
1160
+ }
1168
1161
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HTTPManagerService, deps: [{ token: CONFIG_SETTINGS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1169
1162
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HTTPManagerService, providedIn: 'root' }); }
1170
1163
  }
@@ -2136,7 +2129,7 @@ class RequestManagerDemoComponent {
2136
2129
  this.questionControl = this.fb.control("", [Validators.required]);
2137
2130
  this.downloadRequest = ApiRequest.adapt({
2138
2131
  server: 'assets/images',
2139
- path: ['me.jpg'],
2132
+ path: ['me.png'],
2140
2133
  // saveAs: 'john.jpg' // Optional
2141
2134
  });
2142
2135
  // downloadRequest = ApiRequest.adapt({
@@ -2156,7 +2149,7 @@ class RequestManagerDemoComponent {
2156
2149
  email: "wavecoders@gmail.com"
2157
2150
  };
2158
2151
  this.requestForm = this.fb.group({
2159
- path: this.fb.control("ai/"),
2152
+ path: this.fb.control("oidc/ai/"),
2160
2153
  headers: this.fb.array([]),
2161
2154
  adapter: [null],
2162
2155
  mapper: [null],
@@ -2535,7 +2528,7 @@ class RequestManagerStateDemoComponent {
2535
2528
  this.selectedRecord = this.fb.control(null);
2536
2529
  this.requestForm = this.fb.group({
2537
2530
  datatype: this.fb.control('ARRAY'),
2538
- path: this.fb.control("ai/"),
2531
+ path: this.fb.control("oidc/ai/"),
2539
2532
  headers: this.fb.array([]),
2540
2533
  adapter: [null],
2541
2534
  mapper: [null],