verben-authentication-ui 0.1.9 → 0.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 (26) hide show
  1. package/esm2022/lib/components/button/button.component.mjs +1 -1
  2. package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +1 -1
  3. package/esm2022/lib/components/mail-validation/mail-validation.component.mjs +1 -1
  4. package/esm2022/lib/components/o-auth/o-auth.component.mjs +1 -1
  5. package/esm2022/lib/components/reset-password/reset-password.component.mjs +3 -8
  6. package/esm2022/lib/components/sign-in/sign-in.component.mjs +8 -10
  7. package/esm2022/lib/components/sso/sso-form/sso-form.component.mjs +1 -1
  8. package/esm2022/lib/components/sso/sso.component.mjs +1 -1
  9. package/esm2022/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.mjs +61 -9
  10. package/esm2022/lib/components/two-factor-auth-setup/two-factor-auth-setup.component.mjs +1 -1
  11. package/esm2022/lib/components/user-management/user-management-form/use-management-form.component.mjs +1 -1
  12. package/esm2022/lib/components/user-management/user-management.component.mjs +1 -1
  13. package/esm2022/lib/components/user-request/user-request.component.mjs +1 -1
  14. package/esm2022/lib/components/user-request-approval/user-request-approval.component.mjs +1 -1
  15. package/esm2022/lib/components/user-request-approval/user-request-form/use-request-form.component.mjs +1 -1
  16. package/esm2022/lib/models/log-in.mjs +1 -1
  17. package/esm2022/lib/services/environment.service.mjs +1 -1
  18. package/esm2022/lib/services/http-web-request.service.mjs +49 -53
  19. package/fesm2022/verben-authentication-ui.mjs +125 -87
  20. package/fesm2022/verben-authentication-ui.mjs.map +1 -1
  21. package/lib/components/reset-password/reset-password.component.d.ts +1 -2
  22. package/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.d.ts +10 -3
  23. package/lib/models/log-in.d.ts +4 -1
  24. package/lib/services/environment.service.d.ts +1 -0
  25. package/lib/services/http-web-request.service.d.ts +8 -5
  26. package/package.json +2 -2
@@ -44,7 +44,7 @@ export class UserRequestFormComponent {
44
44
  console.log('Delete requested');
45
45
  }
46
46
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestFormComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
47
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserRequestFormComponent, selector: "lib-user-request-form", inputs: { currentData: "currentData" }, outputs: { switchView: "switchView" }, ngImport: i0, template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n>\n <verbena-input\n name=\"MailAddress\"\n label=\"Mail Address:\"\n formControlName=\"MailAddress\"\n />\n <verbena-input label=\"Name:\" name=\"Name\" type=\"text\" formControlName=\"Name\" />\n <verbena-input\n label=\"Phone Number:\"\n name=\"PhoneNumber\"\n type=\"tel\"\n formControlName=\"PhoneNumber\"\n />\n\n <div class=\"space-y-1\">\n <label for=\"role\">Role</label>\n\n <verben-drop-down\n label=\"Role\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"roles\"\n id=\"role\"\n optionLabel=\"name\"\n optionValue=\"id\"\n formControlName=\"RoleId\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- buttons -->\n <div\n class=\"flex justify-between bottom-8 left-0 right-0 px-3 pb-2 absolute\"\n style=\"\n display: flex;\n justify-content: space-between;\n position: absolute;\n padding: 8px 12px;\n right: 0;\n left: 0;\n bottom: 32;\n \"\n >\n <!-- <verbena-button\n text=\"Delete\"\n class=\"bg-secondary-200 text-[black]\"\n (click)=\"onDelete()\"\n />\n <verbena-button\n text=\"Save\"\n class=\"bg-primary text-[black]\"\n (click)=\"onSave()\"\n />\n\n <verbena-button\n text=\"Secondary Button\"\n styleType=\"secondary\"\n ></verbena-button> -->\n <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Reject\"\n styleType=\"danger\"\n borderRadius=\"10px\"\n ></verbena-button>\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n <verbena-button\n text=\"Approve\"\n bgColor=\"#28a745\"\n textColor=\"white\"\n border=\"1px solid #28a745\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n ></verbena-button>\n </div>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i2.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass"] }, { kind: "component", type: i2.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }] });
47
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserRequestFormComponent, selector: "lib-user-request-form", inputs: { currentData: "currentData" }, outputs: { switchView: "switchView" }, ngImport: i0, template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n>\n <verbena-input\n name=\"MailAddress\"\n label=\"Mail Address:\"\n formControlName=\"MailAddress\"\n />\n <verbena-input label=\"Name:\" name=\"Name\" type=\"text\" formControlName=\"Name\" />\n <verbena-input\n label=\"Phone Number:\"\n name=\"PhoneNumber\"\n type=\"tel\"\n formControlName=\"PhoneNumber\"\n />\n\n <div class=\"space-y-1\">\n <label for=\"role\">Role</label>\n\n <verben-drop-down\n label=\"Role\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"roles\"\n id=\"role\"\n optionLabel=\"name\"\n optionValue=\"id\"\n formControlName=\"RoleId\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- buttons -->\n <div\n class=\"flex justify-between bottom-8 left-0 right-0 px-3 pb-2 absolute\"\n style=\"\n display: flex;\n justify-content: space-between;\n position: absolute;\n padding: 8px 12px;\n right: 0;\n left: 0;\n bottom: 32;\n \"\n >\n <!-- <verbena-button\n text=\"Delete\"\n class=\"bg-secondary-200 text-[black]\"\n (click)=\"onDelete()\"\n />\n <verbena-button\n text=\"Save\"\n class=\"bg-primary text-[black]\"\n (click)=\"onSave()\"\n />\n\n <verbena-button\n text=\"Secondary Button\"\n styleType=\"secondary\"\n ></verbena-button> -->\n <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Reject\"\n styleType=\"danger\"\n borderRadius=\"10px\"\n ></verbena-button>\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n <verbena-button\n text=\"Approve\"\n bgColor=\"#28a745\"\n textColor=\"white\"\n border=\"1px solid #28a745\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n ></verbena-button>\n </div>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i2.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "component", type: i2.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }] });
48
48
  }
49
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestFormComponent, decorators: [{
50
50
  type: Component,
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvbW9kZWxzL2xvZy1pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBMb2dpbkRhdGF7IFxuICAgIEVtYWlsOnN0cmluZyxcbiAgICBQYXNzd29yZDpzdHJpbmcsXG4gIH0iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvbW9kZWxzL2xvZy1pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBMb2dpbkRhdGF7IFxuICAgIE1haWxBZGRyZXNzOnN0cmluZyxcbiAgICBQYXNzd29yZDpzdHJpbmcsXG4gICAgTG9naW5UeXBlOnN0cmluZyxcbiAgICBBUElLZXk6c3RyaW5nLFxuICAgIFNlY3JldGU6c3RyaW5nXG4gIH0iXX0=
@@ -23,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
23
23
  type: Inject,
24
24
  args: [ENVIRONMENT]
25
25
  }] }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0RBQW9EO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFDbkUsNkRBQTZEO0FBRTdELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBYyxhQUFhLENBQUMsQ0FBQztBQVUxRSxNQUFNLE9BQU8sa0JBQWtCO0lBQ1k7SUFBekMsWUFBeUMsR0FBZ0I7UUFBaEIsUUFBRyxHQUFILEdBQUcsQ0FBYTtJQUFHLENBQUM7SUFFN0QsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7d0dBTFUsa0JBQWtCLGtCQUNULFdBQVc7NEdBRHBCLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFFYyxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbiB5b3VyIGxpYnJhcnkncyBzZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBpbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJy4uL21vZGVscy9FTlZJUk9OTUVOVF9UT0tFTic7XG5cbmV4cG9ydCBjb25zdCBFTlZJUk9OTUVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnZpcm9ubWVudD4oJ2Vudmlyb25tZW50Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnQge1xuICBwcm9kdWN0aW9uOiBib29sZWFuO1xuICBBdXRoZW50aWNhdGlvbkFQSTogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoQEluamVjdChFTlZJUk9OTUVOVCkgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50KSB7fVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBFbnZpcm9ubWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZW52O1xuICB9XG59XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0RBQW9EO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFDbkUsNkRBQTZEO0FBRTdELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBYyxhQUFhLENBQUMsQ0FBQztBQVcxRSxNQUFNLE9BQU8sa0JBQWtCO0lBQ1k7SUFBekMsWUFBeUMsR0FBZ0I7UUFBaEIsUUFBRyxHQUFILEdBQUcsQ0FBYTtJQUFHLENBQUM7SUFFN0QsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7d0dBTFUsa0JBQWtCLGtCQUNULFdBQVc7NEdBRHBCLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFFYyxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbiB5b3VyIGxpYnJhcnkncyBzZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBpbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJy4uL21vZGVscy9FTlZJUk9OTUVOVF9UT0tFTic7XG5cbmV4cG9ydCBjb25zdCBFTlZJUk9OTUVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnZpcm9ubWVudD4oJ2Vudmlyb25tZW50Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnQge1xuICBwcm9kdWN0aW9uOiBib29sZWFuO1xuICBBdXRoZW50aWNhdGlvbkFQSTogc3RyaW5nO1xuICBBcGlLZXk6c3RyaW5nXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KEVOVklST05NRU5UKSBwcml2YXRlIGVudjogRW52aXJvbm1lbnQpIHt9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IEVudmlyb25tZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbnY7XG4gIH1cbn1cbiJdfQ==
@@ -8,72 +8,68 @@ export class HttpWebRequestService {
8
8
  http;
9
9
  envSvc;
10
10
  notificationService;
11
- isProd = false;
11
+ isProd;
12
12
  constructor(http, envSvc, notificationService) {
13
13
  this.http = http;
14
14
  this.envSvc = envSvc;
15
15
  this.notificationService = notificationService;
16
16
  this.isProd = this.envSvc.environment.production;
17
17
  }
18
+ buildHeaders(apiKey = this.envSvc.environment.ApiKey) {
19
+ return {
20
+ 'Content-Type': 'application/json',
21
+ 'Api-key': apiKey,
22
+ };
23
+ }
24
+ buildUrl(url, baseUrl) {
25
+ return `${baseUrl}/${url}`;
26
+ }
18
27
  handleError(err) {
19
- let msg = '';
20
- if (err.error) {
21
- if (err.error.ErrorMsg) {
22
- msg = err.error.ErrorMsg;
23
- }
24
- else if (err.error.errors) {
25
- msg = err.error.errors.values.toString();
26
- }
27
- }
28
- if (!msg) {
29
- msg = `${err.status} ${err.statusText}`;
30
- }
31
- console.log('err msg is here', msg);
28
+ const msg = err.error?.ErrorMsg ||
29
+ err.error?.errors?.values?.toString() ||
30
+ `${err.status} ${err.statusText}`;
32
31
  this.notificationService.error(msg, { timeout: 3000 });
33
32
  return new ErrorResponse(msg);
34
33
  }
35
- get(url, baseUrl = this.envSvc.environment.AuthenticationAPI) {
36
- const URL = baseUrl + `/${url}`;
37
- return new Promise((resolve, reject) => {
38
- this.http
39
- .get(URL, {
40
- headers: {
41
- 'Content-Type': 'application/json',
42
- },
43
- })
44
- .subscribe({
45
- next: (data) => resolve(data),
46
- error: (err) => resolve(this.handleError(err)),
47
- });
48
- });
34
+ request(method, url, body, baseUrl = this.envSvc.environment.AuthenticationAPI, apiKey) {
35
+ const options = {
36
+ headers: this.buildHeaders(apiKey),
37
+ };
38
+ const requestUrl = this.buildUrl(url, baseUrl);
39
+ switch (method) {
40
+ case 'GET':
41
+ return new Promise((resolve) => this.http.get(requestUrl, options).subscribe({
42
+ next: resolve,
43
+ error: (err) => resolve(this.handleError(err)),
44
+ }));
45
+ case 'POST':
46
+ return new Promise((resolve) => this.http.post(requestUrl, body, options).subscribe({
47
+ next: resolve,
48
+ error: (err) => resolve(this.handleError(err)),
49
+ }));
50
+ case 'PUT':
51
+ return this.http.put(requestUrl, body, options);
52
+ case 'DELETE':
53
+ return this.http.delete(requestUrl, options);
54
+ }
55
+ }
56
+ get(url, baseUrl, apiKey) {
57
+ return this.request('GET', url, undefined, baseUrl, apiKey);
49
58
  }
50
- post(url, body, baseUrl = this.envSvc.environment.AuthenticationAPI) {
51
- return new Promise((resolve, reject) => {
52
- this.http
53
- .post(baseUrl + '/' + url, JSON.stringify(body), {
54
- headers: {
55
- 'Content-Type': 'application/json',
56
- },
57
- })
58
- .subscribe({
59
- next: (data) => resolve(data),
60
- error: (err) => resolve(this.handleError(err)),
61
- });
62
- });
59
+ post(url, body, baseUrl, apiKey) {
60
+ return this.request('POST', url, JSON.stringify(body), baseUrl, apiKey);
63
61
  }
64
- postFile(url, formData, baseUrl = this.envSvc.environment.AuthenticationAPI) {
65
- return new Promise((resolve, reject) => {
66
- this.http.post(baseUrl + '/' + url, formData).subscribe({
67
- next: (data) => resolve(data),
68
- error: (err) => resolve(this.handleError(err)),
69
- });
70
- });
62
+ postFile(url, formData, baseUrl) {
63
+ return new Promise((resolve) => this.http.post(this.buildUrl(url, baseUrl || this.envSvc.environment.AuthenticationAPI), formData).subscribe({
64
+ next: resolve,
65
+ error: (err) => resolve(this.handleError(err)),
66
+ }));
71
67
  }
72
- put(url, body, baseUrl = this.envSvc.environment.AuthenticationAPI) {
73
- return this.http.put(baseUrl + '/' + url, body);
68
+ put(url, body, baseUrl) {
69
+ return this.request('PUT', url, body, baseUrl);
74
70
  }
75
- delete(url, baseUrl = this.envSvc.environment.AuthenticationAPI) {
76
- return this.http.delete(baseUrl + '/' + url);
71
+ delete(url, baseUrl) {
72
+ return this.request('DELETE', url, undefined, baseUrl);
77
73
  }
78
74
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HttpWebRequestService, deps: [{ token: i1.HttpClient }, { token: i2.EnvironmentService }, { token: i3.NotificationService }], target: i0.ɵɵFactoryTarget.Injectable });
79
75
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HttpWebRequestService, providedIn: 'root' });
@@ -84,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
84
80
  providedIn: 'root',
85
81
  }]
86
82
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.EnvironmentService }, { type: i3.NotificationService }] });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC13ZWItcmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvc2VydmljZXMvaHR0cC13ZWItcmVxdWVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQU94RCxNQUFNLE9BQU8scUJBQXFCO0lBSXRCO0lBQ0E7SUFDQTtJQUxWLE1BQU0sR0FBWSxLQUFLLENBQUM7SUFFeEIsWUFDVSxJQUFnQixFQUNoQixNQUEwQixFQUMxQixtQkFBd0M7UUFGeEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBRWhELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO0lBQ25ELENBQUM7SUFFTyxXQUFXLENBQUMsR0FBUTtRQUMxQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFFYixJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNaLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDckIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQzdCLENBQUM7aUJBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMxQixHQUFHLEdBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzRCxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxHQUFH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RyxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxNQUFNLENBQ0osR0FBVyxFQUNYLFVBQWtCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQjtRQUUzRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDL0MsQ0FBQzt3R0E5RlUscUJBQXFCOzRHQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi4vbW9kZWxzL0Vycm9yUmVzcG9uc2UnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICd2ZXJiZW4tbmctdWknO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSHR0cFdlYlJlcXVlc3RTZXJ2aWNlIHtcbiAgaXNQcm9kOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgZW52U3ZjOiBFbnZpcm9ubWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgdGhpcy5pc1Byb2QgPSB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnI6IGFueSk6IEVycm9yUmVzcG9uc2Uge1xuICAgIGxldCBtc2cgPSAnJztcblxuICAgIGlmIChlcnIuZXJyb3IpIHtcbiAgICAgICAgaWYgKGVyci5lcnJvci5FcnJvck1zZykge1xuICAgICAgICAgICAgbXNnID0gZXJyLmVycm9yLkVycm9yTXNnO1xuICAgICAgICB9IGVsc2UgaWYgKGVyci5lcnJvci5lcnJvcnMpIHtcbiAgICAgICAgICAgIG1zZyA9IChlcnIuZXJyb3IuZXJyb3JzLnZhbHVlcyBhcyBzdHJpbmdbXSkudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgIH0gXG5cbiAgICBpZiAoIW1zZykge1xuICAgICAgICBtc2cgPSBgJHtlcnIuc3RhdHVzfSAke2Vyci5zdGF0dXNUZXh0fWA7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdlcnIgbXNnIGlzIGhlcmUnLG1zZylcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IobXNnLCB7IHRpbWVvdXQ6IDMwMDAgfSk7XG4gICAgcmV0dXJuIG5ldyBFcnJvclJlc3BvbnNlKG1zZyk7XG59XG5cbiAgZ2V0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJhc2VVcmw6IHN0cmluZyA9IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkF1dGhlbnRpY2F0aW9uQVBJXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgVVJMID0gYmFzZVVybCArIGAvJHt1cmx9YDtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5odHRwXG4gICAgICAgIC5nZXQ8QXJyYXk8YW55Pj4oVVJMLCB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoZGF0YSkgPT4gcmVzb2x2ZShkYXRhKSxcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4gcmVzb2x2ZSh0aGlzLmhhbmRsZUVycm9yKGVycikpLFxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHBvc3QoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55LFxuICAgIGJhc2VVcmw6IHN0cmluZyA9IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkF1dGhlbnRpY2F0aW9uQVBJXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAucG9zdChiYXNlVXJsICsgJy8nICsgdXJsLCBKU09OLnN0cmluZ2lmeShib2R5KSwge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKGRhdGEpID0+IHJlc29sdmUoZGF0YSksXG4gICAgICAgICAgZXJyb3I6IChlcnIpID0+IHJlc29sdmUodGhpcy5oYW5kbGVFcnJvcihlcnIpKSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwb3N0RmlsZShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBmb3JtRGF0YTogRm9ybURhdGEsXG4gICAgYmFzZVVybDogc3RyaW5nID0gdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQXV0aGVudGljYXRpb25BUElcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5odHRwLnBvc3QoYmFzZVVybCArICcvJyArIHVybCwgZm9ybURhdGEpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiByZXNvbHZlKGRhdGEpLFxuICAgICAgICBlcnJvcjogKGVycikgPT4gcmVzb2x2ZSh0aGlzLmhhbmRsZUVycm9yKGVycikpLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55LFxuICAgIGJhc2VVcmw6IHN0cmluZyA9IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkF1dGhlbnRpY2F0aW9uQVBJXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYmFzZVVybCArICcvJyArIHVybCwgYm9keSk7XG4gIH1cblxuICBkZWxldGUoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYmFzZVVybDogc3RyaW5nID0gdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQXV0aGVudGljYXRpb25BUElcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShiYXNlVXJsICsgJy8nICsgdXJsKTtcbiAgfVxufVxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC13ZWItcmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvc2VydmljZXMvaHR0cC13ZWItcmVxdWVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQU94RCxNQUFNLE9BQU8scUJBQXFCO0lBSXRCO0lBQ0E7SUFDQTtJQUxWLE1BQU0sQ0FBVTtJQUVoQixZQUNVLElBQWdCLEVBQ2hCLE1BQTBCLEVBQzFCLG1CQUF3QztRQUZ4QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFFaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7SUFDbkQsQ0FBQztJQUVPLFlBQVksQ0FBQyxTQUFpQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNO1FBQ2xFLE9BQU87WUFDTCxjQUFjLEVBQUUsa0JBQWtCO1lBQ2xDLFNBQVMsRUFBRSxNQUFNO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRU8sUUFBUSxDQUFDLEdBQVcsRUFBRSxPQUFlO1FBQzNDLE9BQU8sR0FBRyxPQUFPLElBQUksR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLFdBQVcsQ0FBQyxHQUFRO1FBQzFCLE1BQU0sR0FBRyxHQUNQLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUTtZQUNsQixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFtQixFQUFFLFFBQVEsRUFBRTtZQUNuRCxHQUFHLEdBQUcsQ0FBQyxN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QUMsR0FBRyxDQUFNLENBQUM7U0FDcEQsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsR0FBRyxDQUFJLEdBQVcsRUFBRSxJQUFTLEVBQUUsT0FBZ0I7UUFDN0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBa0IsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFJLEdBQVcsRUFBRSxPQUFnQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFrQixDQUFDO0lBQzFFLENBQUM7d0dBMUZVLHFCQUFxQjs0R0FBckIscUJBQXFCLGNBRnBCLE1BQU07OzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uL21vZGVscy9FcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4vZW52aXJvbm1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAndmVyYmVuLW5nLXVpJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEh0dHBXZWJSZXF1ZXN0U2VydmljZSB7XG4gIGlzUHJvZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pc1Byb2QgPSB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEhlYWRlcnMoYXBpS2V5OiBzdHJpbmcgPSB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BcGlLZXkpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICdBcGkta2V5JzogYXBpS2V5LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVXJsKHVybDogc3RyaW5nLCBiYXNlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtiYXNlVXJsfS8ke3VybH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnI6IGFueSk6IEVycm9yUmVzcG9uc2Uge1xuICAgIGNvbnN0IG1zZyA9XG4gICAgICBlcnIuZXJyb3I/LkVycm9yTXNnIHx8XG4gICAgICAoZXJyLmVycm9yPy5lcnJvcnM/LnZhbHVlcyBhcyBzdHJpbmdbXSk/LnRvU3RyaW5nKCkgfHxcbiAgICAgIGAke2Vyci5zdGF0dXN9ICR7ZXJyLnN0YXR1c1RleHR9YDtcblxuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihtc2csIHsgdGltZW91dDogMzAwMCB9KTtcbiAgICByZXR1cm4gbmV3IEVycm9yUmVzcG9uc2UobXNnKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVxdWVzdDxUPihcbiAgICBtZXRob2Q6ICdHRVQnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAnREVMRVRFJyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5PzogYW55LFxuICAgIGJhc2VVcmw6IHN0cmluZyA9IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkF1dGhlbnRpY2F0aW9uQVBJLFxuICAgIGFwaUtleT86IHN0cmluZ1xuICApOiBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IHRoaXMuYnVpbGRIZWFkZXJzKGFwaUtleSksXG4gICAgfTtcblxuICAgIGNvbnN0IHJlcXVlc3RVcmwgPSB0aGlzLmJ1aWxkVXJsKHVybCwgYmFzZVVybCk7XG5cbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAnR0VUJzpcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PlxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8VD4ocmVxdWVzdFVybCwgb3B0aW9ucykuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IHJlc29sdmUsXG4gICAgICAgICAgICBlcnJvcjogKGVycikgPT4gcmVzb2x2ZSh0aGlzLmhhbmRsZUVycm9yKGVycikgYXMgVCksXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ1BPU1QnOlxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+XG4gICAgICAgICAgdGhpcy5odHRwLnBvc3Q8VD4ocmVxdWVzdFVybCwgYm9keSwgb3B0aW9ucykuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IHJlc29sdmUsXG4gICAgICAgICAgICBlcnJvcjogKGVycikgPT4gcmVzb2x2ZSh0aGlzLmhhbmRsZUVycm9yKGVycikgYXMgVCksXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ1BVVCc6XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFQ+KHJlcXVlc3RVcmwsIGJvZHksIG9wdGlvbnMpO1xuICAgICAgY2FzZSAnREVMRVRFJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8VD4ocmVxdWVzdFVybCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0PFQ+KHVybDogc3RyaW5nLCBiYXNlVXJsPzogc3RyaW5nLCBhcGlLZXk/OiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdHRVQnLCB1cmwsIHVuZGVmaW5lZCwgYmFzZVVybCwgYXBpS2V5KSBhcyBQcm9taXNlPFQ+O1xuICB9XG5cbiAgcG9zdDxUPih1cmw6IHN0cmluZywgYm9keTogYW55LCBiYXNlVXJsPzogc3RyaW5nLCBhcGlLZXk/OiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQT1NUJywgdXJsLCBKU09OLnN0cmluZ2lmeShib2R5KSwgYmFzZVVybCwgYXBpS2V5KSBhcyBQcm9taXNlPFQ+O1xuICB9XG5cbiAgcG9zdEZpbGU8VD4odXJsOiBzdHJpbmcsIGZvcm1EYXRhOiBGb3JtRGF0YSwgYmFzZVVybD86IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT5cbiAgICAgIHRoaXMuaHR0cC5wb3N0PFQ+KHRoaXMuYnVpbGRVcmwodXJsLCBiYXNlVXJsIHx8IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkF1dGhlbnRpY2F0aW9uQVBJKSwgZm9ybURhdGEpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IHJlc29sdmUsXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiByZXNvbHZlKHRoaXMuaGFuZGxlRXJyb3IoZXJyKSBhcyBUKSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1dDxUPih1cmw6IHN0cmluZywgYm9keTogYW55LCBiYXNlVXJsPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUFVUJywgdXJsLCBib2R5LCBiYXNlVXJsKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9XG5cbiAgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBiYXNlVXJsPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnREVMRVRFJywgdXJsLCB1bmRlZmluZWQsIGJhc2VVcmwpIGFzIE9ic2VydmFibGU8VD47XG4gIH1cbn1cbiJdfQ==