http-request-manager 18.3.0 → 18.3.1

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.
@@ -94,11 +94,12 @@ export class RequestService extends WebsocketService {
94
94
  case HttpEventType.Response:
95
95
  try {
96
96
  const fileNamePath = (options?.saveAs) ? options.saveAs : (options.path) ? options.path[options.path.length - 1] : [];
97
- const header_content = event.headers.get('Content-Disposition') || '';
97
+ const fileContentHeader = options.fileContentHeader || 'Content-Disposition';
98
+ const header_content = event.headers.get(fileContentHeader);
98
99
  // checks if header_content is not empty and splits the header_content to get the file name
99
100
  // otherwise, it will use the fileDownload - contains the file name and extension
100
101
  const file = (header_content) ? header_content.split('=')[1].substring(0, header_content.split('=')[1].length) : '';
101
- const fileName = (fileNamePath !== '') ? fileNamePath : file;
102
+ const fileName = (file) ? file : fileNamePath;
102
103
  if (fileName === '') {
103
104
  this.isPending.next(false);
104
105
  throw new Error('Save File: (file name and extension) not found in Headers or Path');
@@ -188,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
188
189
  providedIn: 'root'
189
190
  }]
190
191
  }] });
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMvcmVxdWVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7O0FBTTNFLE1BQU0sT0FBTyxjQUFlLFNBQVEsZ0JBQWdCO0lBSHBEOztRQUtVLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFekIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDM0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7UUFFL0MsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFBO1FBQy9DLGVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUV6RCxhQUFR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RyxJQUFJLEtBQUssSUFBSSxHQUFHLElBQUksS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN0RCxRQUFRLEdBQUcsMEJBQTBCLENBQUE7UUFDdkMsQ0FBQzthQUNJLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLFFBQVEsR0FBRyxtRUFBbUUsQ0FBQTtRQUNoRixDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUE7SUFFakIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUFZLEVBQUUsV0FBb0I7UUFFdkQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDdEI7Z0JBQ0UsR0FBRyxPQUFPO2dCQUNWLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixZQUFZLEVBQUUsTUFBTTtnQkFDcEIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLE1BQU0sRUFBRSxtQkFBbUI7YUFDNUI7WUFDRCxDQUFDLENBQUMsT0FBTyxDQUFBO0lBRVgsQ0FBQzsrR0FyUFUsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBIZWFkZXJSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWxheSwgZmluYWxpemUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXBpUmVxdWVzdCB9IGZyb20gJy4uL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1zZXJ2aWNlL21vZGVscy9hcGktcmVxdWVzdC5tb2RlbCc7XG5pbXBvcnQgeyBQYXRoUXVlcnlTZXJ2aWNlLCBIZWFkZXJzU2VydmljZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IHJlcXVlc3RTdHJlYW1pbmcgfSBmcm9tICcuL3J4anMtb3BlcmF0b3JzL3JlcXVlc3Qtc3RyZWFtaW5nJztcbmltcG9ydCB7IFdlYnNvY2tldFNlcnZpY2UgfSBmcm9tICcuLi93cy1tYW5hZ2VyLXNlcnZpY2Uvd2Vic29ja2V0LnNlcnZpY2UnO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlcXVlc3RTZXJ2aWNlIGV4dGVuZHMgV2Vic29ja2V0U2VydmljZSB7XG5cbiAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpXG5cbiAgcHJpdmF0ZSBwYXRoUXVlcnlTZXJ2aWNlID0gaW5qZWN0KFBhdGhRdWVyeVNlcnZpY2UpXG4gIHByaXZhdGUgaGVhZGVyc1NlcnZpY2UgPSBpbmplY3QoSGVhZGVyc1NlcnZpY2UpXG5cbiAgaXNQZW5kaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcbiAgaXNQZW5kaW5nJCA9IHRoaXMuaXNQZW5kaW5nLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVsYXkoMSkpXG5cbiAgcHJvZ3Jlc3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMClcbiAgcHJvZ3Jlc3MkID0gdGhpcy5wcm9ncmVzcy5hc09ic2VydmFibGUoKVxuXG4gIGdldFJlY29yZFJlcXVlc3Q8VD4ob3B0aW9uczogQXBpUmVxdWVzdCk6IE9ic2VydmFibGU8VD4ge1xuXG4gICAgY29uc3QgdXJsUGF0aCA9IHRoaXMuYnVpbGRVcmxQYXRoKG9wdGlvbnMpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmJ1aWxkQ29tYmluZWRIZWFkZXJzKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKTtcblxuICAgIHJldHVybiAob3B0aW9ucy5zdHJlYW0pXG4gICAgICAgID8gdGhpcy5odHRwLmdldDxhbnk+KHVybFBhdGgsIGhlYWRlcnMpLnBpcGUoXG4gICAgICAgICAgICByZXF1ZXN0U3RyZWFtaW5nKCksXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUZpbmFsaXplKClcbiAgICAgICAgKVxuICAgICAgICA6IHRoaXMuaHR0cC5nZXQ8VD4odXJsUGF0aCwgaGVhZGVycykucGlwZShcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdChvcHRpb25zKSxcbiAgICAgICAgKVxuICB9XG5cbiAgY3JlYXRlUmVjb3JkUmVxdWVzdDxUPihvcHRpb25zOiBBcGlSZXF1ZXN0LCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcblxuICAgIGNvbnN0IHVybFBhdGggPSB0aGlzLmJ1aWxkVXJsUGF0aChvcHRpb25zKTtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5idWlsZENvbWJpbmVkSGVhZGVycyhvcHRpb25zKTtcblxuICAgIHRoaXMuaXNQZW5kaW5nLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gKG9wdGlvbnMuc3RyZWFtKVxuICAgICAgICA/IHRoaXMuaHR0cC5wb3N0PGFueT4odXJsUGF0aCwgZGF0YSwgaGVhZGVycykucGlwZShcbiAgICAgICAgICAgIHJlcXVlc3RTdHJlYW1pbmcoKSxcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRmluYWxpemUoKVxuICAgICAgICApXG4gICAgICAgIDogdGhpcy5odHRwLnBvc3Q8VD4odXJsUGF0aCwgZGF0YSwgaGVhZGVycykucGlwZShcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdChvcHRpb25zKSxcbiAgICAgICAgKVxuICB9XG5cbiAgdXBkYXRlUmVjb3JkUmVxdWVzdDxUPihvcHRpb25zOiBBcGlSZXF1ZXN0LCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCB1cmxQYXRoID0gdGhpcy5idWlsZFVybFBhdGgob3B0aW9ucyk7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuYnVpbGRIZWFkZXJzKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4odXJsUGF0aCwgZGF0YSwgaGVhZGVycykucGlwZShcbiAgICAgICAgdGhpcy5yZXF1ZXN0KG9wdGlvbnMpLFxuICAgIClcbiAgfVxuXG4gIGRlbGV0ZVJlY29yZFJlcXVlc3Q8VD4ob3B0aW9uczogQXBpUmVxdWVzdCk6IE9ic2VydmFibGU8VD4ge1xuXG4gICAgY29uc3QgdXJsUGF0aCA9IHRoaXMuYnVpbGRVcmxQYXRoKG9wdGlvbnMpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmJ1aWxkSGVhZGVycyhvcHRpb25zKTtcblxuICAgIHRoaXMuaXNQZW5kaW5nLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxhbnk+KHVybFBhdGgsIGhlYWRlcnMpLnBpcGUoXG4gICAgICB0aGlzLnJlcXVlc3Qob3B0aW9ucyksXG4gICAgKVxuICB9XG5cbiAgLy8gSGVscGVyIGZ1bmN0aW9uc1xuICBwcml2YXRlIGJ1aWxkVXJsUGF0aChvcHRpb25zOiBBcGlSZXF1ZXN0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoUXVlcnlTZXJ2aWNlLmJ1aWxkQVBJUGF0aChvcHRpb25zLnNlcnZlciwgb3B0aW9ucy5wYXRoKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRIZWFkZXJzKG9wdGlvbnM6IEFwaVJlcXVlc3QpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmhlYWRlcnNTZXJ2aWNlLmdlbmVyYXRlSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbWJpbmVkSGVhZGVycyhvcHRpb25zOiBBcGlSZXF1ZXN0KTogYW55IHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzU2VydmljZS5nZW5lcmF0ZUhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICAgIHJldHVybiB0aGlzLmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIG9wdGlvbnMuc3RyZWFtIHx8IGZhbHNlKVxuICB9XG5cbiAgcHJpdmF0ZSByZXF1ZXN0PFQ+KG9wdGlvbnM6IEFwaVJlcXVlc3QpOiAoc291cmNlOiBPYnNlcnZhYmxlPGFueT4pID0+IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiAoc291cmNlJDogT2JzZXJ2YWJsZTxhbnk+KTogT2JzZXJ2YWJsZTxUPiA9PiB7XG4gICAgICByZXR1cm4gc291cmNlJC5waXBlKFxuICAgICAgICBtYXAoZGF0YSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbnM/LmFkYXB0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEpXG4gICAgICAgICAgICAgID8gZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gb3B0aW9ucy5hZGFwdGVyKGl0ZW0pKVxuICAgICAgICAgICAgICA6IG9wdGlvbnMuYWRhcHRlcihkYXRhKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZGF0YVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGRvd25sb2FkRmlsZVJlcXVlc3Qob3B0aW9uczogQXBpUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICB0aGlzLmlzUGVuZGluZy5uZXh0KHRydWUpO1xuXG4gICAgY29uc3QgdXJsUGF0aCA9IHRoaXMuYnVpbGRVcmxQYXRoKG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsUGF0aCwgeyByZXNwb25zZVR5cGU6ICdibG9iJywgb2JzZXJ2ZTogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzOiB0cnVlIH0pXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4ge1xuXG4gICAgICAgIHRoaXMuaXNQZW5kaW5nLm5leHQodHJ1ZSlcblxuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwSGVhZGVyUmVzcG9uc2UpIHtcbiAgICAgICAgICBpZihldmVudC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRG93bmxvYWQgZmFpbGVkJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMFx0U2VudFx0UmVxdWVzdCBoYXMgYmVlbiBzZW50LlxuICAgICAgICAvLyAxXHRVcGxvYWRQcm9ncmVzc1x0VXBsb2FkIGlzIGluIHByb2dyZXNzLlxuICAgICAgICAvLyAyXHRSZXNwb25zZUhlYWRlclx0UmVzcG9uc2UgaGVhZGVycyByZWNlaXZlZC5cbiAgICAgICAgLy8gM1x0RG93bmxvYWRQcm9ncmVzc1x0RG93bmxvYWQgaXMgaW4gcHJvZ3Jlc3MuXG4gICAgICAgIC8vIDRcdFJlc3BvbnNlXHRSZXNwb25zZSBpcyBmdWxseSByZWNlaXZlZC5cbiAgICAgICAgLy8gNVx0VXNlclx0Q3VzdG9tIHVzZXIgZXZlbnQuXG5cbiAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XG5cbiAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzczpcblxuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IChldmVudC50b3RhbCkgPyBNYXRoLnJvdW5kKGV2ZW50LmxvYWRlZCAvIChldmVudC50b3RhbCB8fCAxKSAqIDEwMCkgOiAxMDBcbiAgICAgICAgICB0aGlzLnByb2dyZXNzLm5leHQoc3RhdHVzKVxuICAgICAgICAgIHJldHVybiBzdGF0dXNcblxuICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcblxuICAgICAgICAgICAgdHJ5IHtcblxuICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZVBhdGggPSAob3B0aW9ucz8uc2F2ZUFzKSA/IG9wdGlvbnMuc2F2ZUFzIDogKG9wdGlvbnMucGF0aCkgPyBvcHRpb25zLnBhdGhbb3B0aW9ucy5wYXRoLmxlbmd0aCAtIDFdIDogW11cbiAgICAgICAgICAgICAgY29uc3QgaGVhZGVyX2NvbnRlbnQgPSBldmVudC5oZWFkZXJzLmdldCgnQ29udGVudC1EaXNwb3NpdGlvbicpIHx8ICcnO1xuICAgICAgICAgICAgICAvLyBjaGVja3MgaWYgaGVhZGVyX2NvbnRlbnQgaXMgbm90IGVtcHR5IGFuZCBzcGxpdHMgdGhlIGhlYWRlcl9jb250ZW50IHRvIGdldCB0aGUgZmlsZSBuYW1lXG4gICAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgaXQgd2lsbCB1c2UgdGhlIGZpbGVEb3dubG9hZCAtIGNvbnRhaW5zIHRoZSBmaWxlIG5hbWUgYW5kIGV4dGVuc2lvblxuICAgICAgICAgICAgICBjb25zdCBmaWxlID0gKGhlYWRlcl9jb250ZW50KSA/IGhlYWRlcl9jb250ZW50LnNwbGl0KCc9JylbMV0uc3Vic3RyaW5nKDAsIGhlYWRlcl9jb250ZW50LnNwbGl0KCc9JylbMV0ubGVuZ3RoKSA6ICcnXG5cbiAgICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSAoZmlsZU5hbWVQYXRoICE9PSAnJykgPyBmaWxlTmFtZVBhdGggOiBmaWxlXG5cbiAgICAgICAgICAgICAgaWYgKGZpbGVOYW1lID09PSAnJykge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2F2ZSBGaWxlOiAoZmlsZSBuYW1lIGFuZCBleHRlbnNpb24pIG5vdCBmb3VuZCBpbiBIZWFkZXJzIG9yIFBhdGgnKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRGaWxlKGZpbGVOYW1lLCBldmVudC5ib2R5KVxuICAgICAgICAgICAgICB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKVxuXG4gICAgICAgICAgICAgIHJldHVybiAxMDBcblxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEb3dubG9hZCBmYWlsZWQnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSlcbiAgICAgICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgfVxuXG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZpbmFsaXplKCk6IChzb3VyY2U6IE9ic2VydmFibGU8YW55PikgPT4gT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gZmluYWxpemUoKCkgPT4gdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBkb3dubG9hZEZpbGUoZmlsZTpzdHJpbmcsIGZpbGVEYXRhOiBhbnkpIHtcblxuICAgIGNvbnN0IG5hdmlnYXRvckFueSA9IHdpbmRvdy5uYXZpZ2F0b3IgYXMgYW55XG5cbiAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlLnNwbGl0KCcuJylbMV0udG9Mb3dlckNhc2UoKVxuXG4gICAgdmFyIG5ld0Jsb2IgPSBuZXcgQmxvYihbZmlsZURhdGFdLCB7IHR5cGU6IHRoaXMuY3JlYXRlRmlsZVR5cGUoZXh0ZW5zaW9uKSB9KVxuXG4gICAgaWYgKG5hdmlnYXRvckFueS5tc1NhdmVPck9wZW5CbG9iKSB7XG4gICAgICBuYXZpZ2F0b3JBbnkubXNTYXZlT3JPcGVuQmxvYihuZXdCbG9iLCBmaWxlKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXdCbG9iKVxuICAgICAgbGluay5ocmVmID0gdXJsXG4gICAgICBsaW5rLmRvd25sb2FkID0gZmlsZVxuICAgICAgbGluay5jbGljaygpXG4gICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpXG4gICAgfVxuXG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZpbGVUeXBlKGV4dDogYW55KTogc3RyaW5nIHtcblxuICAgIGxldCBmaWxlVHlwZTogc3RyaW5nID0gXCJcIlxuXG4gICAgaWYgKGV4dCA9PSAncGRmJyB8fCBleHQgPT0gJ2NzdicpIHtcbiAgICAgIGZpbGVUeXBlID0gYGFwcGxpY2F0aW9uLyR7ZXh0fWBcbiAgICB9XG4gICAgZWxzZSBpZiAoZXh0ID09ICdqcGVnJyB8fCBleHQgPT0gJ2pwZycgfHwgZXh0ID09ICdwbmcnKSB7XG4gICAgICBmaWxlVHlwZSA9IGBpbWFnZS8ke2V4dH1gXG4gICAgfVxuICAgIGVsc2UgaWYgKGV4dCA9PSAndHh0Jykge1xuICAgICAgZmlsZVR5cGUgPSAndGV4dC9wbGFpbidcbiAgICB9XG5cbiAgICBlbHNlIGlmIChleHQgPT0gJ3BwdCcgfHwgZXh0ID09ICdwb3QnIHx8IGV4dCA9PSAncHBzJyB8fCBleHQgPT0gJ3BwYScpIHtcbiAgICAgIGZpbGVUeXBlID0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50J1xuICAgIH1cbiAgICBlbHNlIGlmIChleHQgPT0gJ3BwdHgnKSB7XG4gICAgICBmaWxlVHlwZSA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJ1xuICAgIH1cbiAgICBlbHNlIGlmIChleHQgPT0gJ2RvYycgfHwgZXh0ID09ICdkb3QnKSB7XG4gICAgICBmaWxlVHlwZSA9ICdhcHBsaWNhdGlvbi9tc3dvcmQnXG4gICAgfVxuICAgIGVsc2UgaWYgKGV4dCA9PSAnZG9jeCcpIHtcbiAgICAgIGZpbGVUeXBlID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J1xuICAgIH1cbiAgICBlbHNlIGlmIChleHQgPT0gJ3hscycgfHwgZXh0ID09ICd4bHQnIHx8IGV4dCA9PSAneGxhJykge1xuICAgICAgZmlsZVR5cGUgPSAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJ1xuICAgIH1cbiAgICBlbHNlIGlmIChleHQgPT0gJ3hsc3gnKSB7XG4gICAgICBmaWxlVHlwZSA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCdcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsZVR5cGVcblxuICB9XG5cbiAgcHJpdmF0ZSBjb21iaW5lSGVhZGVycyhoZWFkZXJzOiBhbnksIGlzU3RyZWFtaW5nOiBib29sZWFuKSB7XG5cbiAgICByZXR1cm4gKGlzU3RyZWFtaW5nKSA/XG4gICAge1xuICAgICAgLi4uaGVhZGVycyxcbiAgICAgIG9ic2VydmU6ICdldmVudHMnLFxuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcbiAgICAgIEFjY2VwdDogJ3RleHQvZXZlbnQtc3RyZWFtJ1xuICAgIH1cbiAgICA6IGhlYWRlcnNcblxuICB9XG5cbn1cbiJdfQ==
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMvcmVxdWVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7O0FBTTNFLE1BQU0sT0FBTyxjQUFlLFNBQVEsZ0JBQWdCO0lBSHBEOztRQUtVLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFekIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDM0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7UUFFL0MsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFBO1FBQy9DLGVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUV6RCxhQUFR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Ryx5RUFBeUUsQ0FBQTtRQUN0RixDQUFDO2FBQ0ksSUFBSSxHQUFHLElBQUksS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLElBQUksR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3RELFFBQVEsR0FBRywwQkFBMEIsQ0FBQTtRQUN2QyxDQUFDO2FBQ0ksSUFBSSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7WUFDdkIsUUFBUSxHQUFHLG1FQUFtRSxDQUFBO1FBQ2hGLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQTtJQUVqQixDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQVksRUFBRSxXQUFvQjtRQUV2RCxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN0QjtnQkFDRSxHQUFHLE9BQU87Z0JBQ1YsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFlBQVksRUFBRSxNQUFNO2dCQUNwQixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsTUFBTSxFQUFFLG1CQUFtQjthQUM1QjtZQUNELENBQUMsQ0FBQyxPQUFPLENBQUE7SUFFWCxDQUFDOytHQXZQVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSwgSHR0cEhlYWRlclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlbGF5LCBmaW5hbGl6ZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBcGlSZXF1ZXN0IH0gZnJvbSAnLi4vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzL2FwaS1yZXF1ZXN0Lm1vZGVsJztcbmltcG9ydCB7IFBhdGhRdWVyeVNlcnZpY2UsIEhlYWRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgcmVxdWVzdFN0cmVhbWluZyB9IGZyb20gJy4vcnhqcy1vcGVyYXRvcnMvcmVxdWVzdC1zdHJlYW1pbmcnO1xuaW1wb3J0IHsgV2Vic29ja2V0U2VydmljZSB9IGZyb20gJy4uL3dzLW1hbmFnZXItc2VydmljZS93ZWJzb2NrZXQuc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUmVxdWVzdFNlcnZpY2UgZXh0ZW5kcyBXZWJzb2NrZXRTZXJ2aWNlIHtcblxuICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudClcblxuICBwcml2YXRlIHBhdGhRdWVyeVNlcnZpY2UgPSBpbmplY3QoUGF0aFF1ZXJ5U2VydmljZSlcbiAgcHJpdmF0ZSBoZWFkZXJzU2VydmljZSA9IGluamVjdChIZWFkZXJzU2VydmljZSlcblxuICBpc1BlbmRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBpc1BlbmRpbmckID0gdGhpcy5pc1BlbmRpbmcuYXNPYnNlcnZhYmxlKCkucGlwZShkZWxheSgxKSlcblxuICBwcm9ncmVzcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKVxuICBwcm9ncmVzcyQgPSB0aGlzLnByb2dyZXNzLmFzT2JzZXJ2YWJsZSgpXG5cbiAgZ2V0UmVjb3JkUmVxdWVzdDxUPihvcHRpb25zOiBBcGlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxUPiB7XG5cbiAgICBjb25zdCB1cmxQYXRoID0gdGhpcy5idWlsZFVybFBhdGgob3B0aW9ucyk7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuYnVpbGRDb21iaW5lZEhlYWRlcnMob3B0aW9ucyk7XG5cbiAgICB0aGlzLmlzUGVuZGluZy5uZXh0KHRydWUpO1xuXG4gICAgcmV0dXJuIChvcHRpb25zLnN0cmVhbSlcbiAgICAgICAgPyB0aGlzLmh0dHAuZ2V0PGFueT4odXJsUGF0aCwgaGVhZGVycykucGlwZShcbiAgICAgICAgICAgIHJlcXVlc3RTdHJlYW1pbmcoKSxcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRmluYWxpemUoKVxuICAgICAgICApXG4gICAgICAgIDogdGhpcy5odHRwLmdldDxUPih1cmxQYXRoLCBoZWFkZXJzKS5waXBlKFxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0KG9wdGlvbnMpLFxuICAgICAgICApXG4gIH1cblxuICBjcmVhdGVSZWNvcmRSZXF1ZXN0PFQ+KG9wdGlvbnM6IEFwaVJlcXVlc3QsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8VD4ge1xuXG4gICAgY29uc3QgdXJsUGF0aCA9IHRoaXMuYnVpbGRVcmxQYXRoKG9wdGlvbnMpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmJ1aWxkQ29tYmluZWRIZWFkZXJzKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKTtcblxuICAgIHJldHVybiAob3B0aW9ucy5zdHJlYW0pXG4gICAgICAgID8gdGhpcy5odHRwLnBvc3Q8YW55Pih1cmxQYXRoLCBkYXRhLCBoZWFkZXJzKS5waXBlKFxuICAgICAgICAgICAgcmVxdWVzdFN0cmVhbWluZygpLFxuICAgICAgICAgICAgdGhpcy5oYW5kbGVGaW5hbGl6ZSgpXG4gICAgICAgIClcbiAgICAgICAgOiB0aGlzLmh0dHAucG9zdDxUPih1cmxQYXRoLCBkYXRhLCBoZWFkZXJzKS5waXBlKFxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0KG9wdGlvbnMpLFxuICAgICAgICApXG4gIH1cblxuICB1cGRhdGVSZWNvcmRSZXF1ZXN0PFQ+KG9wdGlvbnM6IEFwaVJlcXVlc3QsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IHVybFBhdGggPSB0aGlzLmJ1aWxkVXJsUGF0aChvcHRpb25zKTtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5idWlsZEhlYWRlcnMob3B0aW9ucyk7XG5cbiAgICB0aGlzLmlzUGVuZGluZy5uZXh0KHRydWUpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55Pih1cmxQYXRoLCBkYXRhLCBoZWFkZXJzKS5waXBlKFxuICAgICAgICB0aGlzLnJlcXVlc3Qob3B0aW9ucyksXG4gICAgKVxuICB9XG5cbiAgZGVsZXRlUmVjb3JkUmVxdWVzdDxUPihvcHRpb25zOiBBcGlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxUPiB7XG5cbiAgICBjb25zdCB1cmxQYXRoID0gdGhpcy5idWlsZFVybFBhdGgob3B0aW9ucyk7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuYnVpbGRIZWFkZXJzKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4odXJsUGF0aCwgaGVhZGVycykucGlwZShcbiAgICAgIHRoaXMucmVxdWVzdChvcHRpb25zKSxcbiAgICApXG4gIH1cblxuICAvLyBIZWxwZXIgZnVuY3Rpb25zXG4gIHByaXZhdGUgYnVpbGRVcmxQYXRoKG9wdGlvbnM6IEFwaVJlcXVlc3QpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBhdGhRdWVyeVNlcnZpY2UuYnVpbGRBUElQYXRoKG9wdGlvbnMuc2VydmVyLCBvcHRpb25zLnBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEhlYWRlcnMob3B0aW9uczogQXBpUmVxdWVzdCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyc1NlcnZpY2UuZ2VuZXJhdGVIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ29tYmluZWRIZWFkZXJzKG9wdGlvbnM6IEFwaVJlcXVlc3QpOiBhbnkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNTZXJ2aWNlLmdlbmVyYXRlSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gICAgcmV0dXJuIHRoaXMuY29tYmluZUhlYWRlcnMoaGVhZGVycywgb3B0aW9ucy5zdHJlYW0gfHwgZmFsc2UpXG4gIH1cblxuICBwcml2YXRlIHJlcXVlc3Q8VD4ob3B0aW9uczogQXBpUmVxdWVzdCk6IChzb3VyY2U6IE9ic2VydmFibGU8YW55PikgPT4gT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIChzb3VyY2UkOiBPYnNlcnZhYmxlPGFueT4pOiBPYnNlcnZhYmxlPFQ+ID0+IHtcbiAgICAgIHJldHVybiBzb3VyY2UkLnBpcGUoXG4gICAgICAgIG1hcChkYXRhID0+IHtcbiAgICAgICAgICBpZiAob3B0aW9ucz8uYWRhcHRlcikge1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGF0YSlcbiAgICAgICAgICAgICAgPyBkYXRhLm1hcCgoaXRlbTogYW55KSA9PiBvcHRpb25zLmFkYXB0ZXIoaXRlbSkpXG4gICAgICAgICAgICAgIDogb3B0aW9ucy5hZGFwdGVyKGRhdGEpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBkYXRhXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgZG93bmxvYWRGaWxlUmVxdWVzdChvcHRpb25zOiBBcGlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIHRoaXMuaXNQZW5kaW5nLm5leHQodHJ1ZSk7XG5cbiAgICBjb25zdCB1cmxQYXRoID0gdGhpcy5idWlsZFVybFBhdGgob3B0aW9ucyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmxQYXRoLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InLCBvYnNlcnZlOiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M6IHRydWUgfSlcbiAgICAucGlwZShcbiAgICAgIG1hcCgoZXZlbnQ6IEh0dHBFdmVudDxhbnk+KSA9PiB7XG5cbiAgICAgICAgdGhpcy5pc1BlbmRpbmcubmV4dCh0cnVlKVxuXG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBIZWFkZXJSZXNwb25zZSkge1xuICAgICAgICAgIGlmKGV2ZW50LnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEb3dubG9hZCBmYWlsZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAwXHRTZW50XHRSZXF1ZXN0IGhhcyBiZWVuIHNlbnQuXG4gICAgICAgIC8vIDFcdFVwbG9hZFByb2dyZXNzXHRVcGxvYWQgaXMgaW4gcHJvZ3Jlc3MuXG4gICAgICAgIC8vIDJcdFJlc3BvbnNlSGVhZGVyXHRSZXNwb25zZSBoZWFkZXJzIHJlY2VpdmVkLlxuICAgICAgICAvLyAzXHREb3dubG9hZFByb2dyZXNzXHREb3dubG9hZCBpcyBpbiBwcm9ncmVzcy5cbiAgICAgICAgLy8gNFx0UmVzcG9uc2VcdFJlc3BvbnNlIGlzIGZ1bGx5IHJlY2VpdmVkLlxuICAgICAgICAvLyA1XHRVc2VyXHRDdXN0b20gdXNlciBldmVudC5cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcblxuICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzOlxuXG4gICAgICAgICAgY29uc3Qgc3RhdHVzID0gKGV2ZW50LnRvdGFsKSA/IE1hdGgucm91bmQoZXZlbnQubG9hZGVkIC8gKGV2ZW50LnRvdGFsIHx8IDEpICogMTAwKSA6IDEwMFxuICAgICAgICAgIHRoaXMucHJvZ3Jlc3MubmV4dChzdGF0dXMpXG4gICAgICAgICAgcmV0dXJuIHN0YXR1c1xuXG4gICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuXG4gICAgICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lUGF0aCA9IChvcHRpb25zPy5zYXZlQXMpID8gb3B0aW9ucy5zYXZlQXMgOiAob3B0aW9ucy5wYXRoKSA/IG9wdGlvbnMucGF0aFtvcHRpb25zLnBhdGgubGVuZ3RoIC0gMV0gOiBbXVxuICAgICAgICAgICAgICBjb25zdCBmaWxlQ29udGVudEhlYWRlciA9IG9wdGlvbnMuZmlsZUNvbnRlbnRIZWFkZXIgfHwgJ0NvbnRlbnQtRGlzcG9zaXRpb24nXG5cbiAgICAgICAgICAgICAgY29uc3QgaGVhZGVyX2NvbnRlbnQgPSBldmVudC5oZWFkZXJzLmdldChmaWxlQ29udGVudEhlYWRlcik7XG4gICAgICAgICAgICAgIC8vIGNoZWNrcyBpZiBoZWFkZXJfY29udGVudCBpcyBub3QgZW1wdHkgYW5kIHNwbGl0cyB0aGUgaGVhZGVyX2NvbnRlbnQgdG8gZ2V0IHRoZSBmaWxlIG5hbWVcbiAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCBpdCB3aWxsIHVzZSB0aGUgZmlsZURvd25sb2FkIC0gY29udGFpbnMgdGhlIGZpbGUgbmFtZSBhbmQgZXh0ZW5zaW9uXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSAoaGVhZGVyX2NvbnRlbnQpID8gaGVhZGVyX2NvbnRlbnQuc3BsaXQoJz0nKVsxXS5zdWJzdHJpbmcoMCwgaGVhZGVyX2NvbnRlbnQuc3BsaXQoJz0nKVsxXS5sZW5ndGgpIDogJydcblxuICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IChmaWxlKSA/IGZpbGUgOiBmaWxlTmFtZVBhdGhcblxuICAgICAgICAgICAgICBpZiAoZmlsZU5hbWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1BlbmRpbmcubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTYXZlIEZpbGU6IChmaWxlIG5hbWUgYW5kIGV4dGVuc2lvbikgbm90IGZvdW5kIGluIEhlYWRlcnMgb3IgUGF0aCcpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZmlsZU5hbWUsIGV2ZW50LmJvZHkpXG4gICAgICAgICAgICAgIHRoaXMuaXNQZW5kaW5nLm5leHQoZmFsc2UpXG5cbiAgICAgICAgICAgICAgcmV0dXJuIDEwMFxuXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rvd25sb2FkIGZhaWxlZCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKVxuICAgICAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9XG5cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRmluYWxpemUoKTogKHNvdXJjZTogT2JzZXJ2YWJsZTxhbnk+KSA9PiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzUGVuZGluZy5uZXh0KGZhbHNlKSk7XG4gIH1cblxuICBwcml2YXRlIGRvd25sb2FkRmlsZShmaWxlOnN0cmluZywgZmlsZURhdGE6IGFueSkge1xuXG4gICAgY29uc3QgbmF2aWdhdG9yQW55ID0gd2luZG93Lm5hdmlnYXRvciBhcyBhbnlcblxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUuc3BsaXQoJy4nKVsxXS50b0xvd2VyQ2FzZSgpXG5cbiAgICB2YXIgbmV3QmxvYiA9IG5ldyBCbG9iKFtmaWxlRGF0YV0sIHsgdHlwZTogdGhpcy5jcmVhdGVGaWxlVHlwZShleHRlbnNpb24pIH0pXG5cbiAgICBpZiAobmF2aWdhdG9yQW55Lm1zU2F2ZU9yT3BlbkJsb2IpIHtcbiAgICAgIG5hdmlnYXRvckFueS5tc1NhdmVPck9wZW5CbG9iKG5ld0Jsb2IsIGZpbGUpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcbiAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ld0Jsb2IpXG4gICAgICBsaW5rLmhyZWYgPSB1cmxcbiAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlXG4gICAgICBsaW5rLmNsaWNrKClcbiAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybClcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmlsZVR5cGUoZXh0OiBhbnkpOiBzdHJpbmcge1xuXG4gICAgbGV0IGZpbGVUeXBlOiBzdHJpbmcgPSBcIlwiXG5cbiAgICBpZiAoZXh0ID09ICdwZGYnIHx8IGV4dCA9PSAnY3N2Jykge1xuICAgICAgZmlsZVR5cGUgPSBgYXBwbGljYXRpb24vJHtleHR9YFxuICAgIH1cbiAgICBlbHNlIGlmIChleHQgPT0gJ2pwZWcnIHx8IGV4dCA9PSAnanBnJyB8fCBleHQgPT0gJ3BuZycpIHtcbiAgICAgIGZpbGVUeXBlID0gYGltYWdlLyR7ZXh0fWBcbiAgICB9XG4gICAgZWxzZSBpZiAoZXh0ID09ICd0eHQnKSB7XG4gICAgICBmaWxlVHlwZSA9ICd0ZXh0L3BsYWluJ1xuICAgIH1cblxuICAgIGVsc2UgaWYgKGV4dCA9PSAncHB0JyB8fCBleHQgPT0gJ3BvdCcgfHwgZXh0ID09ICdwcHMnIHx8IGV4dCA9PSAncHBhJykge1xuICAgICAgZmlsZVR5cGUgPSAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnXG4gICAgfVxuICAgIGVsc2UgaWYgKGV4dCA9PSAncHB0eCcpIHtcbiAgICAgIGZpbGVUeXBlID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nXG4gICAgfVxuICAgIGVsc2UgaWYgKGV4dCA9PSAnZG9jJyB8fCBleHQgPT0gJ2RvdCcpIHtcbiAgICAgIGZpbGVUeXBlID0gJ2FwcGxpY2F0aW9uL21zd29yZCdcbiAgICB9XG4gICAgZWxzZSBpZiAoZXh0ID09ICdkb2N4Jykge1xuICAgICAgZmlsZVR5cGUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnXG4gICAgfVxuICAgIGVsc2UgaWYgKGV4dCA9PSAneGxzJyB8fCBleHQgPT0gJ3hsdCcgfHwgZXh0ID09ICd4bGEnKSB7XG4gICAgICBmaWxlVHlwZSA9ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnXG4gICAgfVxuICAgIGVsc2UgaWYgKGV4dCA9PSAneGxzeCcpIHtcbiAgICAgIGZpbGVUeXBlID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0J1xuICAgIH1cblxuICAgIHJldHVybiBmaWxlVHlwZVxuXG4gIH1cblxuICBwcml2YXRlIGNvbWJpbmVIZWFkZXJzKGhlYWRlcnM6IGFueSwgaXNTdHJlYW1pbmc6IGJvb2xlYW4pIHtcblxuICAgIHJldHVybiAoaXNTdHJlYW1pbmcpID9cbiAgICB7XG4gICAgICAuLi5oZWFkZXJzLFxuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxuICAgICAgQWNjZXB0OiAndGV4dC9ldmVudC1zdHJlYW0nXG4gICAgfVxuICAgIDogaGVhZGVyc1xuXG4gIH1cblxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import { RetryOptions } from "../../request-manager-services";
2
2
  export class ApiRequest {
3
- constructor(server = '', path, headers, adapter, mapper, polling, retry, stream, displayError, saveAs, ws) {
3
+ constructor(server = '', path, headers, adapter, mapper, polling, retry, stream, displayError, saveAs, fileContentHeader, ws) {
4
4
  this.server = server;
5
5
  this.path = path;
6
6
  this.headers = headers;
@@ -11,11 +11,12 @@ export class ApiRequest {
11
11
  this.stream = stream;
12
12
  this.displayError = displayError;
13
13
  this.saveAs = saveAs;
14
+ this.fileContentHeader = fileContentHeader;
14
15
  this.ws = ws;
15
16
  }
16
17
  static adapt(item) {
17
18
  const server = Array.isArray(item?.server) ? item.server.join('/') : item?.server || '';
18
- return new ApiRequest(server, (item?.path) ? item.path : [], (item?.headers) ? item.headers : {}, item?.adapter, item?.mapper, item?.polling ? Math.floor(item.polling) : 0, item?.retry ? RetryOptions.adapt(item.retry) : RetryOptions.adapt(), (item?.stream) ? item.stream : false, (item?.displayError) ? item.displayError : false, item?.saveAs, item?.ws);
19
+ return new ApiRequest(server, (item?.path) ? item.path : [], (item?.headers) ? item.headers : {}, item?.adapter, item?.mapper, item?.polling ? Math.floor(item.polling) : 0, item?.retry ? RetryOptions.adapt(item.retry) : RetryOptions.adapt(), (item?.stream) ? item.stream : false, (item?.displayError) ? item.displayError : false, item?.saveAs, item?.fileContentHeader, item?.ws);
19
20
  }
20
21
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXJlcXVlc3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1zZXJ2aWNlL21vZGVscy9hcGktcmVxdWVzdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFpQjdELE1BQU0sT0FBTyxVQUFVO0lBRXJCLFlBQ1MsU0FBUyxFQUFFLEVBQ1gsSUFBWSxFQUNaLE9BQWEsRUFDYixPQUFhLEVBQ2IsTUFBWSxFQUNaLE9BQWdCLEVBQ2hCLEtBQW9CLEVBQ3BCLE1BQWdCLEVBQ2hCLFlBQXNCLEVBQ3RCLE1BQWUsRUFDZixFQUFjO1FBVmQsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQUNYLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixZQUFPLEdBQVAsT0FBTyxDQUFNO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBTTtRQUNiLFdBQU0sR0FBTixNQUFNLENBQU07UUFDWixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLFVBQUssR0FBTCxLQUFLLENBQWU7UUFDcEIsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFTO1FBQ2YsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUNwQixDQUFDO0lBRUosTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFVO1FBRXJCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFeEYsT0FBTyxJQUFJLFVBQVUsQ0FDbkIsTUFBTSxFQUNOLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQzdCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ25DLElBQUksRUFBRSxPQUFPLEVBQ2IsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM1QyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUNuRSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUNwQyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUNoRCxJQUFJLEVBQUUsTUFBTSxFQUNaLElBQUksRUFBRSxFQUFFLENBQ1QsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJldHJ5T3B0aW9ucyB9IGZyb20gXCIuLi8uLi9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXNcIlxuaW1wb3J0IHsgV1NPcHRpb25zIH0gZnJvbSBcIi4vd3Mtb3B0aW9ucy5tb2RlbFwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUmVxdWVzdEludGVyZmFjZSB7XG4gIHNlcnZlcjogc3RyaW5nXG4gIHBhdGg/OiBhbnlbXVxuICBoZWFkZXJzPzogYW55XG4gIGFkYXB0ZXI/OiBhbnlcbiAgbWFwcGVyPzogYW55XG4gIHBvbGxpbmc/OiBudW1iZXIgLy8gc2Vjb25kcyAodW5kZWZpbmVkIHwgMCA9IG5vbmUpXG4gIHJldHJ5PzogUmV0cnlPcHRpb25zXG4gIHN0cmVhbT86IGJvb2xlYW5cbiAgZGlzcGxheUVycm9yPzogYm9vbGVhblxuICBzYXZlQXM/OiBzdHJpbmdcbiAgd3M/OiBXU09wdGlvbnMgLy8gV2Vic29ja2V0IE9wdGlvbnNcbn1cblxuZXhwb3J0IGNsYXNzIEFwaVJlcXVlc3QgaW1wbGVtZW50cyBBcGlSZXF1ZXN0SW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc2VydmVyID0gJycsXG4gICAgcHVibGljIHBhdGg/OiBhbnlbXSxcbiAgICBwdWJsaWMgaGVhZGVycz86IGFueSxcbiAgICBwdWJsaWMgYWRhcHRlcj86IGFueSxcbiAgICBwdWJsaWMgbWFwcGVyPzogYW55LFxuICAgIHB1YmxpYyBwb2xsaW5nPzogbnVtYmVyLFxuICAgIHB1YmxpYyByZXRyeT86IFJldHJ5T3B0aW9ucyxcbiAgICBwdWJsaWMgc3RyZWFtPzogYm9vbGVhbixcbiAgICBwdWJsaWMgZGlzcGxheUVycm9yPzogYm9vbGVhbixcbiAgICBwdWJsaWMgc2F2ZUFzPzogc3RyaW5nLFxuICAgIHB1YmxpYyB3cz86IFdTT3B0aW9ucyxcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogQXBpUmVxdWVzdCB7XG5cbiAgICBjb25zdCBzZXJ2ZXIgPSBBcnJheS5pc0FycmF5KGl0ZW0/LnNlcnZlcikgPyBpdGVtLnNlcnZlci5qb2luKCcvJykgOiBpdGVtPy5zZXJ2ZXIgfHwgJyc7XG5cbiAgICByZXR1cm4gbmV3IEFwaVJlcXVlc3QoXG4gICAgICBzZXJ2ZXIsXG4gICAgICAoaXRlbT8ucGF0aCkgPyBpdGVtLnBhdGggOiBbXSxcbiAgICAgIChpdGVtPy5oZWFkZXJzKSA/IGl0ZW0uaGVhZGVycyA6IHt9LFxuICAgICAgaXRlbT8uYWRhcHRlcixcbiAgICAgIGl0ZW0/Lm1hcHBlcixcbiAgICAgIGl0ZW0/LnBvbGxpbmcgPyBNYXRoLmZsb29yKGl0ZW0ucG9sbGluZykgOiAwLFxuICAgICAgaXRlbT8ucmV0cnkgPyBSZXRyeU9wdGlvbnMuYWRhcHQoaXRlbS5yZXRyeSkgOiBSZXRyeU9wdGlvbnMuYWRhcHQoKSxcbiAgICAgIChpdGVtPy5zdHJlYW0pID8gaXRlbS5zdHJlYW0gOiBmYWxzZSxcbiAgICAgIChpdGVtPy5kaXNwbGF5RXJyb3IpID8gaXRlbS5kaXNwbGF5RXJyb3IgOiBmYWxzZSxcbiAgICAgIGl0ZW0/LnNhdmVBcyxcbiAgICAgIGl0ZW0/LndzLFxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXJlcXVlc3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1zZXJ2aWNlL21vZGVscy9hcGktcmVxdWVzdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFrQjdELE1BQU0sT0FBTyxVQUFVO0lBRXJCLFlBQ1MsU0FBUyxFQUFFLEVBQ1gsSUFBWSxFQUNaLE9BQWEsRUFDYixPQUFhLEVBQ2IsTUFBWSxFQUNaLE9BQWdCLEVBQ2hCLEtBQW9CLEVBQ3BCLE1BQWdCLEVBQ2hCLFlBQXNCLEVBQ3RCLE1BQWUsRUFDZixpQkFBMEIsRUFDMUIsRUFBYztRQVhkLFdBQU0sR0FBTixNQUFNLENBQUs7UUFDWCxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osWUFBTyxHQUFQLE9BQU8sQ0FBTTtRQUNiLFlBQU8sR0FBUCxPQUFPLENBQU07UUFDYixXQUFNLEdBQU4sTUFBTSxDQUFNO1FBQ1osWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixVQUFLLEdBQUwsS0FBSyxDQUFlO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQUNmLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUztRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQ3BCLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFFckIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUV4RixPQUFPLElBQUksVUFBVSxDQUNuQixNQUFNLEVBQ04sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDN0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDbkMsSUFBSSxFQUFFLE9BQU8sRUFDYixJQUFJLEVBQUUsTUFBTSxFQUNaLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzVDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQ25FLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQ3BDLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQ2hELElBQUksRUFBRSxNQUFNLEVBQ1osSUFBSSxFQUFFLGlCQUFpQixFQUN2QixJQUFJLEVBQUUsRUFBRSxDQUNULENBQUE7SUFFSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXRyeU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vcmVxdWVzdC1tYW5hZ2VyLXNlcnZpY2VzXCJcbmltcG9ydCB7IFdTT3B0aW9ucyB9IGZyb20gXCIuL3dzLW9wdGlvbnMubW9kZWxcIlxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVJlcXVlc3RJbnRlcmZhY2Uge1xuICBzZXJ2ZXI6IHN0cmluZ1xuICBwYXRoPzogYW55W11cbiAgaGVhZGVycz86IGFueVxuICBhZGFwdGVyPzogYW55XG4gIG1hcHBlcj86IGFueVxuICBwb2xsaW5nPzogbnVtYmVyIC8vIHNlY29uZHMgKHVuZGVmaW5lZCB8IDAgPSBub25lKVxuICByZXRyeT86IFJldHJ5T3B0aW9uc1xuICBzdHJlYW0/OiBib29sZWFuXG4gIGRpc3BsYXlFcnJvcj86IGJvb2xlYW5cbiAgc2F2ZUFzPzogc3RyaW5nXG4gIGZpbGVDb250ZW50SGVhZGVyPzogc3RyaW5nXG4gIHdzPzogV1NPcHRpb25zIC8vIFdlYnNvY2tldCBPcHRpb25zXG59XG5cbmV4cG9ydCBjbGFzcyBBcGlSZXF1ZXN0IGltcGxlbWVudHMgQXBpUmVxdWVzdEludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHNlcnZlciA9ICcnLFxuICAgIHB1YmxpYyBwYXRoPzogYW55W10sXG4gICAgcHVibGljIGhlYWRlcnM/OiBhbnksXG4gICAgcHVibGljIGFkYXB0ZXI/OiBhbnksXG4gICAgcHVibGljIG1hcHBlcj86IGFueSxcbiAgICBwdWJsaWMgcG9sbGluZz86IG51bWJlcixcbiAgICBwdWJsaWMgcmV0cnk/OiBSZXRyeU9wdGlvbnMsXG4gICAgcHVibGljIHN0cmVhbT86IGJvb2xlYW4sXG4gICAgcHVibGljIGRpc3BsYXlFcnJvcj86IGJvb2xlYW4sXG4gICAgcHVibGljIHNhdmVBcz86IHN0cmluZyxcbiAgICBwdWJsaWMgZmlsZUNvbnRlbnRIZWFkZXI/OiBzdHJpbmcsXG4gICAgcHVibGljIHdzPzogV1NPcHRpb25zLFxuICApIHt9XG5cbiAgc3RhdGljIGFkYXB0KGl0ZW0/OiBhbnkpOiBBcGlSZXF1ZXN0IHtcblxuICAgIGNvbnN0IHNlcnZlciA9IEFycmF5LmlzQXJyYXkoaXRlbT8uc2VydmVyKSA/IGl0ZW0uc2VydmVyLmpvaW4oJy8nKSA6IGl0ZW0/LnNlcnZlciB8fCAnJztcblxuICAgIHJldHVybiBuZXcgQXBpUmVxdWVzdChcbiAgICAgIHNlcnZlcixcbiAgICAgIChpdGVtPy5wYXRoKSA/IGl0ZW0ucGF0aCA6IFtdLFxuICAgICAgKGl0ZW0/LmhlYWRlcnMpID8gaXRlbS5oZWFkZXJzIDoge30sXG4gICAgICBpdGVtPy5hZGFwdGVyLFxuICAgICAgaXRlbT8ubWFwcGVyLFxuICAgICAgaXRlbT8ucG9sbGluZyA/IE1hdGguZmxvb3IoaXRlbS5wb2xsaW5nKSA6IDAsXG4gICAgICBpdGVtPy5yZXRyeSA/IFJldHJ5T3B0aW9ucy5hZGFwdChpdGVtLnJldHJ5KSA6IFJldHJ5T3B0aW9ucy5hZGFwdCgpLFxuICAgICAgKGl0ZW0/LnN0cmVhbSkgPyBpdGVtLnN0cmVhbSA6IGZhbHNlLFxuICAgICAgKGl0ZW0/LmRpc3BsYXlFcnJvcikgPyBpdGVtLmRpc3BsYXlFcnJvciA6IGZhbHNlLFxuICAgICAgaXRlbT8uc2F2ZUFzLFxuICAgICAgaXRlbT8uZmlsZUNvbnRlbnRIZWFkZXIsXG4gICAgICBpdGVtPy53cyxcbiAgICApXG5cbiAgfVxuXG59XG4iXX0=
@@ -927,11 +927,12 @@ class RequestService extends WebsocketService {
927
927
  case HttpEventType.Response:
928
928
  try {
929
929
  const fileNamePath = (options?.saveAs) ? options.saveAs : (options.path) ? options.path[options.path.length - 1] : [];
930
- const header_content = event.headers.get('Content-Disposition') || '';
930
+ const fileContentHeader = options.fileContentHeader || 'Content-Disposition';
931
+ const header_content = event.headers.get(fileContentHeader);
931
932
  // checks if header_content is not empty and splits the header_content to get the file name
932
933
  // otherwise, it will use the fileDownload - contains the file name and extension
933
934
  const file = (header_content) ? header_content.split('=')[1].substring(0, header_content.split('=')[1].length) : '';
934
- const fileName = (fileNamePath !== '') ? fileNamePath : file;
935
+ const fileName = (file) ? file : fileNamePath;
935
936
  if (fileName === '') {
936
937
  this.isPending.next(false);
937
938
  throw new Error('Save File: (file name and extension) not found in Headers or Path');
@@ -1679,7 +1680,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1679
1680
  }] }] });
1680
1681
 
1681
1682
  class ApiRequest {
1682
- constructor(server = '', path, headers, adapter, mapper, polling, retry, stream, displayError, saveAs, ws) {
1683
+ constructor(server = '', path, headers, adapter, mapper, polling, retry, stream, displayError, saveAs, fileContentHeader, ws) {
1683
1684
  this.server = server;
1684
1685
  this.path = path;
1685
1686
  this.headers = headers;
@@ -1690,11 +1691,12 @@ class ApiRequest {
1690
1691
  this.stream = stream;
1691
1692
  this.displayError = displayError;
1692
1693
  this.saveAs = saveAs;
1694
+ this.fileContentHeader = fileContentHeader;
1693
1695
  this.ws = ws;
1694
1696
  }
1695
1697
  static adapt(item) {
1696
1698
  const server = Array.isArray(item?.server) ? item.server.join('/') : item?.server || '';
1697
- return new ApiRequest(server, (item?.path) ? item.path : [], (item?.headers) ? item.headers : {}, item?.adapter, item?.mapper, item?.polling ? Math.floor(item.polling) : 0, item?.retry ? RetryOptions.adapt(item.retry) : RetryOptions.adapt(), (item?.stream) ? item.stream : false, (item?.displayError) ? item.displayError : false, item?.saveAs, item?.ws);
1699
+ return new ApiRequest(server, (item?.path) ? item.path : [], (item?.headers) ? item.headers : {}, item?.adapter, item?.mapper, item?.polling ? Math.floor(item.polling) : 0, item?.retry ? RetryOptions.adapt(item.retry) : RetryOptions.adapt(), (item?.stream) ? item.stream : false, (item?.displayError) ? item.displayError : false, item?.saveAs, item?.fileContentHeader, item?.ws);
1698
1700
  }
1699
1701
  }
1700
1702