@gravitee/ui-policy-studio-angular 12.15.1 → 12.16.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.
- package/esm2022/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +3 -3
- package/esm2022/lib/policy-group-studio/gio-policy-group-studio.component.mjs +151 -0
- package/esm2022/public-api.mjs +2 -2
- package/esm2022/testing/lib/components/step-form/gio-ps-step-form.harness.mjs +4 -1
- package/esm2022/testing/lib/policy-group-studio/gio-policy-group-studio.harness.mjs +52 -0
- package/esm2022/testing/public-testing-api.mjs +2 -2
- package/fesm2022/gravitee-ui-policy-studio-angular-testing.mjs +11 -9
- package/fesm2022/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
- package/fesm2022/gravitee-ui-policy-studio-angular.mjs +21 -15
- package/fesm2022/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/lib/{environment-flow-studio/gio-environment-flow-studio.component.d.ts → policy-group-studio/gio-policy-group-studio.component.d.ts} +14 -12
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/testing/lib/components/step-form/gio-ps-step-form.harness.d.ts +1 -0
- package/testing/lib/{environment-flow-studio/gio-environment-flow-studio.harness.d.ts → policy-group-studio/gio-policy-group-studio.harness.d.ts} +5 -6
- package/testing/public-testing-api.d.ts +1 -1
- package/esm2022/lib/environment-flow-studio/gio-environment-flow-studio.component.mjs +0 -145
- package/esm2022/testing/lib/environment-flow-studio/gio-environment-flow-studio.harness.mjs +0 -53
|
@@ -116,11 +116,11 @@ export class GioPolicyStudioDetailsPhaseComponent {
|
|
|
116
116
|
]);
|
|
117
117
|
}
|
|
118
118
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioPolicyStudioDetailsPhaseComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
119
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
119
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: GioPolicyStudioDetailsPhaseComponent, isStandalone: true, selector: "gio-ps-flow-details-phase", inputs: { readOnly: "readOnly", steps: "steps", name: "name", description: "description", startConnector: "startConnector", endConnector: "endConnector", apiType: "apiType", policies: "policies", policyExecutionPhase: "policyExecutionPhase", trialUrl: "trialUrl" }, outputs: { stepsChange: "stepsChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <span class=\"header__name\">\n {{ name }}\n </span>\n <span class=\"header__description\">\n {{ description }}\n </span>\n\n <span *ngIf=\"isDisabled\" class=\"header__infoIcon\" matTooltip=\"Policies might not be evaluated\" matTooltipPosition=\"before\">\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n<div *ngIf=\"!isDisabled; else disabledPhaseContent\" class=\"wrapper\">\n <div class=\"content\">\n @for (stepVM of stepsVM; track $index; let isFirst = $first) {\n <div class=\"content__step\">\n <!-- Connector -->\n <ng-container *ngIf=\"stepVM.type === 'connectors'\">\n <div class=\"content__step__connector\">\n <span *ngFor=\"let connector of stepVM.connectors\" class=\"gio-badge-white content__step__connector__badge\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connector__badge__icon\"></mat-icon>\n {{ connector.name }}\n </span>\n </div>\n\n <!-- Add policy button after first connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-button (click)=\"onAddPolicy(-1)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </ng-container>\n\n <!-- Policy -->\n @if (stepVM.type === 'step') {\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\">\n <span class=\"gio-badge-neutral\" [matTooltip]=\"'Condition: ' + stepVM.step.condition\"\n ><mat-icon svgIcon=\"gio:if\"></mat-icon> {{ stepVM.step.condition }}</span\n >\n </div>\n\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [readOnly]=\"readOnly\"\n [class.disabled]=\"readOnly || !stepVM.step.enabled\"\n [policies]=\"policies\"\n [step]=\"stepVM.step\"\n [executionPhase]=\"policyExecutionPhase\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n (disabled)=\"onStepDisabled(stepVM.index)\"\n ></gio-ps-flow-details-phase-step>\n </div>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-button (click)=\"onAddPolicy(stepVM.index)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n }\n </div>\n }\n </div>\n</div>\n\n<ng-template #disabledPhaseContent>\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody>\n Your current flow settings are not applicable to this phase. Select supporting endpoints and operations in the flow configuration to\n enable this phase.\n </span>\n </gio-banner-warning>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;overflow:hidden;min-height:215px;flex-direction:column;padding-top:16px;border:1px solid #d3d5dc;border-radius:8px;background-color:#fff}.header{display:flex;padding:0 16px;gap:8px}.header__name{flex:0 1 auto;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font-size:14px;font-weight:400;line-height:22px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.wrapper{position:relative;flex:1 1 auto;overflow-y:auto}.content{position:absolute;display:flex;width:max-content;height:100%;align-items:center;padding:0 16px}.content__step{display:flex;align-items:center}.content__step__connector{display:flex;flex-direction:column;gap:8px}.content__step__connector__badge{border:1px solid #876fec;border-radius:16px}.content__step__connector__badge__icon{margin-right:4px}.content__step__rightArrow{width:16px;height:16px;margin:0 8px;color:#b4b5bb}.content__step__policy{position:relative;display:flex;flex-direction:row;align-items:center}.content__step__policy__condition{position:absolute;top:-32px;right:0;left:0;display:flex;flex-direction:column}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: ["readOnly", "step", "policies", "executionPhase"], outputs: ["stepChange", "deleted", "disabled"] }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: GioBannerModule }, { kind: "component", type: i6.GioBannerWarningComponent, selector: "gio-banner-warning" }, { kind: "directive", type: i6.GioBannerBodyDirective, selector: "[gioBannerBody]" }] }); }
|
|
120
120
|
}
|
|
121
121
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioPolicyStudioDetailsPhaseComponent, decorators: [{
|
|
122
122
|
type: Component,
|
|
123
|
-
args: [{ standalone: true, imports: [CommonModule, MatTooltipModule, MatButtonModule, GioPolicyStudioDetailsPhaseStepComponent, GioIconsModule, GioBannerModule], selector: 'gio-ps-flow-details-phase', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <span class=\"header__name\">\n {{ name }}\n </span>\n <span class=\"header__description\">\n {{ description }}\n </span>\n\n <span *ngIf=\"isDisabled\" class=\"header__infoIcon\" matTooltip=\"Policies might not be evaluated\" matTooltipPosition=\"before\">\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n<div *ngIf=\"!isDisabled; else disabledPhaseContent\" class=\"wrapper\">\n <div class=\"content\">\n
|
|
123
|
+
args: [{ standalone: true, imports: [CommonModule, MatTooltipModule, MatButtonModule, GioPolicyStudioDetailsPhaseStepComponent, GioIconsModule, GioBannerModule], selector: 'gio-ps-flow-details-phase', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <span class=\"header__name\">\n {{ name }}\n </span>\n <span class=\"header__description\">\n {{ description }}\n </span>\n\n <span *ngIf=\"isDisabled\" class=\"header__infoIcon\" matTooltip=\"Policies might not be evaluated\" matTooltipPosition=\"before\">\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n<div *ngIf=\"!isDisabled; else disabledPhaseContent\" class=\"wrapper\">\n <div class=\"content\">\n @for (stepVM of stepsVM; track $index; let isFirst = $first) {\n <div class=\"content__step\">\n <!-- Connector -->\n <ng-container *ngIf=\"stepVM.type === 'connectors'\">\n <div class=\"content__step__connector\">\n <span *ngFor=\"let connector of stepVM.connectors\" class=\"gio-badge-white content__step__connector__badge\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connector__badge__icon\"></mat-icon>\n {{ connector.name }}\n </span>\n </div>\n\n <!-- Add policy button after first connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-button (click)=\"onAddPolicy(-1)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </ng-container>\n\n <!-- Policy -->\n @if (stepVM.type === 'step') {\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\">\n <span class=\"gio-badge-neutral\" [matTooltip]=\"'Condition: ' + stepVM.step.condition\"\n ><mat-icon svgIcon=\"gio:if\"></mat-icon> {{ stepVM.step.condition }}</span\n >\n </div>\n\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [readOnly]=\"readOnly\"\n [class.disabled]=\"readOnly || !stepVM.step.enabled\"\n [policies]=\"policies\"\n [step]=\"stepVM.step\"\n [executionPhase]=\"policyExecutionPhase\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n (disabled)=\"onStepDisabled(stepVM.index)\"\n ></gio-ps-flow-details-phase-step>\n </div>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-button (click)=\"onAddPolicy(stepVM.index)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n }\n </div>\n }\n </div>\n</div>\n\n<ng-template #disabledPhaseContent>\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody>\n Your current flow settings are not applicable to this phase. Select supporting endpoints and operations in the flow configuration to\n enable this phase.\n </span>\n </gio-banner-warning>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;overflow:hidden;min-height:215px;flex-direction:column;padding-top:16px;border:1px solid #d3d5dc;border-radius:8px;background-color:#fff}.header{display:flex;padding:0 16px;gap:8px}.header__name{flex:0 1 auto;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font-size:14px;font-weight:400;line-height:22px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.wrapper{position:relative;flex:1 1 auto;overflow-y:auto}.content{position:absolute;display:flex;width:max-content;height:100%;align-items:center;padding:0 16px}.content__step{display:flex;align-items:center}.content__step__connector{display:flex;flex-direction:column;gap:8px}.content__step__connector__badge{border:1px solid #876fec;border-radius:16px}.content__step__connector__badge__icon{margin-right:4px}.content__step__rightArrow{width:16px;height:16px;margin:0 8px;color:#b4b5bb}.content__step__policy{position:relative;display:flex;flex-direction:row;align-items:center}.content__step__policy__condition{position:absolute;top:-32px;right:0;left:0;display:flex;flex-direction:column}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"] }]
|
|
124
124
|
}], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { readOnly: [{
|
|
125
125
|
type: Input
|
|
126
126
|
}], steps: [{
|
|
@@ -144,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
144
144
|
}], stepsChange: [{
|
|
145
145
|
type: Output
|
|
146
146
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1waGFzZS9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQ0wsNkNBQTZDLEdBRzlDLE1BQU0scUVBQXFFLENBQUM7QUFFN0UsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0scUVBQXFFLENBQUM7Ozs7Ozs7O0FBdUIvSCxNQUFNLE9BQU8sb0NBQW9DO0lBc0MvQyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBcEMxQyxhQUFRLEdBQUcsS0FBSyxDQUFD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b0NBQW9DO2tHQUFwQyxvQ0FBb0MsNlpDcERqRCwrZ0lBZ0dBLDBxRERqRFksWUFBWSwrUEFBRSxnQkFBZ0IsNFRBQUUsZUFBZSw0TkFBRSx3Q0FBd0Msc0xBQUUsY0FBYyxtTEFBRSxlQUFlOzsyRkFLekgsb0NBQW9DO2tCQVBoRCxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsd0NBQXdDLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQyxZQUMzSCwyQkFBMkI7OEVBTTlCLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsb0JBQW9CO3NCQUQxQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxXQUFXO3NCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEdJT19ESUFMT0dfV0lEVEgsIEdpb0Jhbm5lck1vZHVsZSwgR2lvSWNvbnNNb2R1bGUgfSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCxcbiAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nRGF0YSxcbiAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nUmVzdWx0LFxufSBmcm9tICcuLi9wb2xpY2llcy1jYXRhbG9nLWRpYWxvZy9naW8tcHMtcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEFwaVR5cGUsIENvbm5lY3RvckluZm8sIEV4ZWN1dGlvblBoYXNlLCBQb2xpY3ksIFN0ZXAgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgR2lvUG9saWN5U3R1ZGlvRGV0YWlsc1BoYXNlU3RlcENvbXBvbmVudCB9IGZyb20gJy4uL2Zsb3ctZGV0YWlscy1waGFzZS1zdGVwL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcC5jb21wb25lbnQnO1xuXG50eXBlIFN0ZXBWTSA9XG4gIHwge1xuICAgICAgdHlwZTogJ2Nvbm5lY3RvcnMnO1xuICAgICAgY29ubmVjdG9yczoge1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICBpY29uPzogc3RyaW5nO1xuICAgICAgfVtdO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc3RlcCc7XG4gICAgICBzdGVwOiBTdGVwO1xuICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzUGhhc2VTdGVwQ29tcG9uZW50LCBHaW9JY29uc01vZHVsZSwgR2lvQmFubmVyTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGVwczogU3RlcFtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIG5hbWUhOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRlc2NyaXB0aW9uITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGFydENvbm5lY3RvcjogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGVuZENvbm5lY3RvcjogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFwaVR5cGUhOiBBcGlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb2xpY2llczogUG9saWN5W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWN5RXhlY3V0aW9uUGhhc2UhOiBFeGVjdXRpb25QaGFzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdHJpYWxVcmw/OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdGVwc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcFtdPigpO1xuXG4gIHB1YmxpYyBzdGVwc1ZNOiBTdGVwVk1bXSA9IFtdO1xuXG4gIHB1YmxpYyBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZykge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnN0ZXBzIHx8IGNoYW5nZXMuc3RhcnRDb25uZWN0b3IgfHwgY2hhbmdlcy5lbmRDb25uZWN0b3IpIHtcbiAgICAgIHRoaXMuc3RlcHNWTSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjb25uZWN0b3JzJyxcbiAgICAgICAgICBjb25uZWN0b3JzOiB0aGlzLnN0YXJ0Q29ubmVjdG9yLm1hcChjb25uZWN0b3IgPT4gKHtcbiAgICAgICAgICAgIG5hbWU6IGNvbm5lY3Rvci5uYW1lLFxuICAgICAgICAgICAgaWNvbjogY29ubmVjdG9yLmljb24sXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9LFxuXG4gICAgICAgIC4uLih0aGlzLnN0ZXBzID8/IFtdKS5tYXAoKHN0ZXAsIGluZGV4KSA9PiAoe1xuICAgICAgICAgIHR5cGU6ICdzdGVwJyBhcyBjb25zdCxcbiAgICAgICAgICBzdGVwOiBzdGVwLFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICB9KSksXG5cbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjb25uZWN0b3JzJyxcbiAgICAgICAgICBjb25uZWN0b3JzOiB0aGlzLmVuZENvbm5lY3Rvci5tYXAoY29ubmVjdG9yID0+ICh7XG4gICAgICAgICAgICBuYW1lOiBjb25uZWN0b3IubmFtZSxcbiAgICAgICAgICAgIGljb246IGNvbm5lY3Rvci5pY29uLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIC8vIERpc2FibGUgcGhhc2UgaWYgdGhlcmUgYXJlIG5vIHN0YXJ0ICYgZW5kIGNvbm5lY3RvcnNcbiAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMuc3RlcHNWTS5maWx0ZXIoc3RlcCA9PiBzdGVwLnR5cGUgPT09ICdjb25uZWN0b3JzJyAmJiAhaXNFbXB0eShzdGVwLmNvbm5lY3RvcnMpKS5sZW5ndGggPCAyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkFkZFBvbGljeShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYXREaWFsb2dcbiAgICAgIC5vcGVuPFxuICAgICAgICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0RhdGEsXG4gICAgICAgIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ1Jlc3VsdFxuICAgICAgPihHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHBvbGljaWVzOiB0aGlzLnBvbGljaWVzLFxuICAgICAgICAgIGV4ZWN1dGlvblBoYXNlOiB0aGlzLnBvbGljeUV4ZWN1dGlvblBoYXNlLFxuICAgICAgICAgIGFwaVR5cGU6IHRoaXMuYXBpVHlwZSxcbiAgICAgICAgICB0cmlhbFVybDogdGhpcy50cmlhbFVybCxcbiAgICAgICAgfSxcbiAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgaWQ6ICdnaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2cnLFxuICAgICAgICB3aWR0aDogR0lPX0RJQUxPR19XSURUSC5MQVJHRSxcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZShzdGVwVG9BZGQgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3RlcHMgfHwgIXN0ZXBUb0FkZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgU3RlcCBhZnRlciB0aGUgZ2l2ZW4gaW5kZXhcbiAgICAgICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFsuLi50aGlzLnN0ZXBzLnNsaWNlKDAsIGluZGV4ICsgMSksIHN0ZXBUb0FkZCwgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBDaGFuZ2UoaW5kZXg6IG51bWJlciwgc3RlcFRvRWRpdDogU3RlcCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGVwcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBSZXBsYWNlIHRoZSBzdGVwIGF0IHRoZSBnaXZlbiBpbmRleFxuICAgIHRoaXMuc3RlcHNDaGFuZ2UuZW1pdChbLi4udGhpcy5zdGVwcy5zbGljZSgwLCBpbmRleCksIHN0ZXBUb0VkaXQsIC4uLnRoaXMuc3RlcHMuc2xpY2UoaW5kZXggKyAxKV0pO1xuICB9XG5cbiAgcHVibGljIG9uU3RlcERlbGV0ZWQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGVwcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXgpLCAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSldKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBEaXNhYmxlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFtcbiAgICAgIC4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXgpLFxuICAgICAge1xuICAgICAgICAuLi50aGlzLnN0ZXBzW2luZGV4XSxcbiAgICAgICAgZW5hYmxlZDogIXRoaXMuc3RlcHNbaW5kZXhdLmVuYWJsZWQsXG4gICAgICB9LFxuICAgICAgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpLFxuICAgIF0pO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cblxuPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICA8c3BhbiBjbGFzcz1cImhlYWRlcl9fbmFtZVwiPlxuICAgIHt7IG5hbWUgfX1cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImhlYWRlcl9fZGVzY3JpcHRpb25cIj5cbiAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICA8L3NwYW4+XG5cbiAgPHNwYW4gKm5nSWY9XCJpc0Rpc2FibGVkXCIgY2xhc3M9XCJoZWFkZXJfX2luZm9JY29uXCIgbWF0VG9vbHRpcD1cIlBvbGljaWVzIG1pZ2h0IG5vdCBiZSBldmFsdWF0ZWRcIiBtYXRUb29sdGlwUG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzppbmZvXCI+PC9tYXQtaWNvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhaXNEaXNhYmxlZDsgZWxzZSBkaXNhYmxlZFBoYXNlQ29udGVudFwiIGNsYXNzPVwid3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHN0ZXBWTSBvZiBzdGVwc1ZNOyBmaXJzdCBhcyBpc0ZpcnN0XCIgY2xhc3M9XCJjb250ZW50X19zdGVwXCI+XG4gICAgICA8IS0tIENvbm5lY3RvciAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwVk0udHlwZSA9PT0gJ2Nvbm5lY3RvcnMnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50X19zdGVwX19jb25uZWN0b3JcIj5cbiAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgY29ubmVjdG9yIG9mIHN0ZXBWTS5jb25uZWN0b3JzXCIgY2xhc3M9XCJnaW8tYmFkZ2Utd2hpdGUgY29udGVudF9fc3RlcF9fY29ubmVjdG9yX19iYWRnZVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY29ubmVjdG9yLmljb25cIiBbc3ZnSWNvbl09XCJjb25uZWN0b3IuaWNvblwiIGNsYXNzPVwiY29udGVudF9fc3RlcF9fY29ubmVjdG9yX19iYWRnZV9faWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICB7eyBjb25uZWN0b3IubmFtZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBBZGQgcG9saWN5IGJ1dHRvbiBhZnRlciBmaXJzdCBjb25uZWN0b3IgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZpcnN0XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY29udGVudF9fc3RlcF9fcmlnaHRBcnJvd1wiIHN2Z0ljb249XCJnaW86YXJyb3ctcmlnaHRcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInJlYWRPbmx5XCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19hZGRCdG5cIiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkFkZFBvbGljeSgtMSlcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnBsdXNcIj48L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBQb2xpY3kgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcFZNLnR5cGUgPT09ICdzdGVwJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudF9fc3RlcF9fcG9saWN5XCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN0ZXBWTS5zdGVwPy5jb25kaXRpb25cIiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3BvbGljeV9fY29uZGl0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdpby1iYWRnZS1uZXV0cmFsXCIgW21hdFRvb2x0aXBdPVwiJ0NvbmRpdGlvbjogJyArIHN0ZXBWTS5zdGVwLmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgID48bWF0LWljb24gc3ZnSWNvbj1cImdpbzppZlwiPjwvbWF0LWljb24+e3sgc3RlcFZNLnN0ZXAuY29uZGl0aW9uIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcFxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19zdGVwX19zdGVwXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicmVhZE9ubHkgfHwgIXN0ZXBWTS5zdGVwLmVuYWJsZWRcIlxuICAgICAgICAgICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICAgICAgICAgIFtzdGVwXT1cInN0ZXBWTS5zdGVwXCJcbiAgICAgICAgICAgIFtleGVjdXRpb25QaGFzZV09XCJwb2xpY3lFeGVjdXRpb25QaGFzZVwiXG4gICAgICAgICAgICAoc3RlcENoYW5nZSk9XCJvblN0ZXBDaGFuZ2Uoc3RlcFZNLmluZGV4LCAkZXZlbnQpXCJcbiAgICAgICAgICAgIChkZWxldGVkKT1cIm9uU3RlcERlbGV0ZWQoc3RlcFZNLmluZGV4KVwiXG4gICAgICAgICAgICAoZGlzYWJsZWQpPVwib25TdGVwRGlzYWJsZWQoc3RlcFZNLmluZGV4KVwiXG4gICAgICAgICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEFkZCBwb2xpY3kgYnV0dG9uIC0tPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjb250ZW50X19zdGVwX19yaWdodEFycm93XCIgc3ZnSWNvbj1cImdpbzphcnJvdy1yaWdodFwiPjwvbWF0LWljb24+XG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInJlYWRPbmx5XCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19hZGRCdG5cIiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkFkZFBvbGljeShzdGVwVk0uaW5kZXgpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86cGx1c1wiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjb250ZW50X19zdGVwX19yaWdodEFycm93XCIgc3ZnSWNvbj1cImdpbzphcnJvdy1yaWdodFwiPjwvbWF0LWljb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkaXNhYmxlZFBoYXNlQ29udGVudD5cbiAgPGRpdiBjbGFzcz1cImRpc2FibGVkQ29udGVudFwiPlxuICAgIDxnaW8tYmFubmVyLXdhcm5pbmc+XG4gICAgICBQb2xpY2llcyBtaWdodCBub3QgYmUgZXZhbHVhdGVkXG4gICAgICA8c3BhbiBnaW9CYW5uZXJCb2R5PlxuICAgICAgICBZb3VyIGN1cnJlbnQgZmxvdyBzZXR0aW5ncyBhcmUgbm90IGFwcGxpY2FibGUgdG8gdGhpcyBwaGFzZS4gU2VsZWN0IHN1cHBvcnRpbmcgZW5kcG9pbnRzIGFuZCBvcGVyYXRpb25zIGluIHRoZSBmbG93IGNvbmZpZ3VyYXRpb24gdG9cbiAgICAgICAgZW5hYmxlIHRoaXMgcGhhc2UuXG4gICAgICA8L3NwYW4+XG4gICAgPC9naW8tYmFubmVyLXdhcm5pbmc+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1waGFzZS9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQ0wsNkNBQTZDLEdBRzlDLE1BQU0scUVBQXFFLENBQUM7QUFFN0UsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0scUVBQXFFLENBQUM7Ozs7Ozs7O0FBdUIvSCxNQUFNLE9BQU8sb0NBQW9DO0lBc0MvQyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBcEMxQyxhQUFRLEdBQUcsS0FBSyxDQUFD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b0NBQW9DO2tHQUFwQyxvQ0FBb0MsNlpDcERqRCx1bUlBbUdBLDBxRERwRFksWUFBWSwrUEFBRSxnQkFBZ0IsNFRBQUUsZUFBZSw0TkFBRSx3Q0FBd0Msc0xBQUUsY0FBYyxtTEFBRSxlQUFlOzsyRkFLekgsb0NBQW9DO2tCQVBoRCxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsd0NBQXdDLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQyxZQUMzSCwyQkFBMkI7OEVBTTlCLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsb0JBQW9CO3NCQUQxQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxXQUFXO3NCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEdJT19ESUFMT0dfV0lEVEgsIEdpb0Jhbm5lck1vZHVsZSwgR2lvSWNvbnNNb2R1bGUgfSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCxcbiAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nRGF0YSxcbiAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nUmVzdWx0LFxufSBmcm9tICcuLi9wb2xpY2llcy1jYXRhbG9nLWRpYWxvZy9naW8tcHMtcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEFwaVR5cGUsIENvbm5lY3RvckluZm8sIEV4ZWN1dGlvblBoYXNlLCBQb2xpY3ksIFN0ZXAgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgR2lvUG9saWN5U3R1ZGlvRGV0YWlsc1BoYXNlU3RlcENvbXBvbmVudCB9IGZyb20gJy4uL2Zsb3ctZGV0YWlscy1waGFzZS1zdGVwL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcC5jb21wb25lbnQnO1xuXG50eXBlIFN0ZXBWTSA9XG4gIHwge1xuICAgICAgdHlwZTogJ2Nvbm5lY3RvcnMnO1xuICAgICAgY29ubmVjdG9yczoge1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICBpY29uPzogc3RyaW5nO1xuICAgICAgfVtdO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc3RlcCc7XG4gICAgICBzdGVwOiBTdGVwO1xuICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzUGhhc2VTdGVwQ29tcG9uZW50LCBHaW9JY29uc01vZHVsZSwgR2lvQmFubmVyTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGVwczogU3RlcFtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIG5hbWUhOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRlc2NyaXB0aW9uITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGFydENvbm5lY3RvcjogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGVuZENvbm5lY3RvcjogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFwaVR5cGUhOiBBcGlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb2xpY2llczogUG9saWN5W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWN5RXhlY3V0aW9uUGhhc2UhOiBFeGVjdXRpb25QaGFzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdHJpYWxVcmw/OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdGVwc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcFtdPigpO1xuXG4gIHB1YmxpYyBzdGVwc1ZNOiBTdGVwVk1bXSA9IFtdO1xuXG4gIHB1YmxpYyBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZykge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnN0ZXBzIHx8IGNoYW5nZXMuc3RhcnRDb25uZWN0b3IgfHwgY2hhbmdlcy5lbmRDb25uZWN0b3IpIHtcbiAgICAgIHRoaXMuc3RlcHNWTSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjb25uZWN0b3JzJyxcbiAgICAgICAgICBjb25uZWN0b3JzOiB0aGlzLnN0YXJ0Q29ubmVjdG9yLm1hcChjb25uZWN0b3IgPT4gKHtcbiAgICAgICAgICAgIG5hbWU6IGNvbm5lY3Rvci5uYW1lLFxuICAgICAgICAgICAgaWNvbjogY29ubmVjdG9yLmljb24sXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9LFxuXG4gICAgICAgIC4uLih0aGlzLnN0ZXBzID8/IFtdKS5tYXAoKHN0ZXAsIGluZGV4KSA9PiAoe1xuICAgICAgICAgIHR5cGU6ICdzdGVwJyBhcyBjb25zdCxcbiAgICAgICAgICBzdGVwOiBzdGVwLFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICB9KSksXG5cbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjb25uZWN0b3JzJyxcbiAgICAgICAgICBjb25uZWN0b3JzOiB0aGlzLmVuZENvbm5lY3Rvci5tYXAoY29ubmVjdG9yID0+ICh7XG4gICAgICAgICAgICBuYW1lOiBjb25uZWN0b3IubmFtZSxcbiAgICAgICAgICAgIGljb246IGNvbm5lY3Rvci5pY29uLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIC8vIERpc2FibGUgcGhhc2UgaWYgdGhlcmUgYXJlIG5vIHN0YXJ0ICYgZW5kIGNvbm5lY3RvcnNcbiAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMuc3RlcHNWTS5maWx0ZXIoc3RlcCA9PiBzdGVwLnR5cGUgPT09ICdjb25uZWN0b3JzJyAmJiAhaXNFbXB0eShzdGVwLmNvbm5lY3RvcnMpKS5sZW5ndGggPCAyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkFkZFBvbGljeShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYXREaWFsb2dcbiAgICAgIC5vcGVuPFxuICAgICAgICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0RhdGEsXG4gICAgICAgIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ1Jlc3VsdFxuICAgICAgPihHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHBvbGljaWVzOiB0aGlzLnBvbGljaWVzLFxuICAgICAgICAgIGV4ZWN1dGlvblBoYXNlOiB0aGlzLnBvbGljeUV4ZWN1dGlvblBoYXNlLFxuICAgICAgICAgIGFwaVR5cGU6IHRoaXMuYXBpVHlwZSxcbiAgICAgICAgICB0cmlhbFVybDogdGhpcy50cmlhbFVybCxcbiAgICAgICAgfSxcbiAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgaWQ6ICdnaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2cnLFxuICAgICAgICB3aWR0aDogR0lPX0RJQUxPR19XSURUSC5MQVJHRSxcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZShzdGVwVG9BZGQgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3RlcHMgfHwgIXN0ZXBUb0FkZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgU3RlcCBhZnRlciB0aGUgZ2l2ZW4gaW5kZXhcbiAgICAgICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFsuLi50aGlzLnN0ZXBzLnNsaWNlKDAsIGluZGV4ICsgMSksIHN0ZXBUb0FkZCwgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBDaGFuZ2UoaW5kZXg6IG51bWJlciwgc3RlcFRvRWRpdDogU3RlcCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGVwcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBSZXBsYWNlIHRoZSBzdGVwIGF0IHRoZSBnaXZlbiBpbmRleFxuICAgIHRoaXMuc3RlcHNDaGFuZ2UuZW1pdChbLi4udGhpcy5zdGVwcy5zbGljZSgwLCBpbmRleCksIHN0ZXBUb0VkaXQsIC4uLnRoaXMuc3RlcHMuc2xpY2UoaW5kZXggKyAxKV0pO1xuICB9XG5cbiAgcHVibGljIG9uU3RlcERlbGV0ZWQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGVwcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXgpLCAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSldKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBEaXNhYmxlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFtcbiAgICAgIC4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXgpLFxuICAgICAge1xuICAgICAgICAuLi50aGlzLnN0ZXBzW2luZGV4XSxcbiAgICAgICAgZW5hYmxlZDogIXRoaXMuc3RlcHNbaW5kZXhdLmVuYWJsZWQsXG4gICAgICB9LFxuICAgICAgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpLFxuICAgIF0pO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cblxuPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICA8c3BhbiBjbGFzcz1cImhlYWRlcl9fbmFtZVwiPlxuICAgIHt7IG5hbWUgfX1cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImhlYWRlcl9fZGVzY3JpcHRpb25cIj5cbiAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICA8L3NwYW4+XG5cbiAgPHNwYW4gKm5nSWY9XCJpc0Rpc2FibGVkXCIgY2xhc3M9XCJoZWFkZXJfX2luZm9JY29uXCIgbWF0VG9vbHRpcD1cIlBvbGljaWVzIG1pZ2h0IG5vdCBiZSBldmFsdWF0ZWRcIiBtYXRUb29sdGlwUG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzppbmZvXCI+PC9tYXQtaWNvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhaXNEaXNhYmxlZDsgZWxzZSBkaXNhYmxlZFBoYXNlQ29udGVudFwiIGNsYXNzPVwid3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgIEBmb3IgKHN0ZXBWTSBvZiBzdGVwc1ZNOyB0cmFjayAkaW5kZXg7IGxldCBpc0ZpcnN0ID0gJGZpcnN0KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudF9fc3RlcFwiPlxuICAgICAgICA8IS0tIENvbm5lY3RvciAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXBWTS50eXBlID09PSAnY29ubmVjdG9ycydcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudF9fc3RlcF9fY29ubmVjdG9yXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgY29ubmVjdG9yIG9mIHN0ZXBWTS5jb25uZWN0b3JzXCIgY2xhc3M9XCJnaW8tYmFkZ2Utd2hpdGUgY29udGVudF9fc3RlcF9fY29ubmVjdG9yX19iYWRnZVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjb25uZWN0b3IuaWNvblwiIFtzdmdJY29uXT1cImNvbm5lY3Rvci5pY29uXCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19jb25uZWN0b3JfX2JhZGdlX19pY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAge3sgY29ubmVjdG9yLm5hbWUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gQWRkIHBvbGljeSBidXR0b24gYWZ0ZXIgZmlyc3QgY29ubmVjdG9yIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZpcnN0XCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjb250ZW50X19zdGVwX19yaWdodEFycm93XCIgc3ZnSWNvbj1cImdpbzphcnJvdy1yaWdodFwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJyZWFkT25seVwiIGNsYXNzPVwiY29udGVudF9fc3RlcF9fYWRkQnRuXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwib25BZGRQb2xpY3koLTEpXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnBsdXNcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjb250ZW50X19zdGVwX19yaWdodEFycm93XCIgc3ZnSWNvbj1cImdpbzphcnJvdy1yaWdodFwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gUG9saWN5IC0tPlxuICAgICAgICBAaWYgKHN0ZXBWTS50eXBlID09PSAnc3RlcCcpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudF9fc3RlcF9fcG9saWN5XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RlcFZNLnN0ZXA/LmNvbmRpdGlvblwiIGNsYXNzPVwiY29udGVudF9fc3RlcF9fcG9saWN5X19jb25kaXRpb25cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnaW8tYmFkZ2UtbmV1dHJhbFwiIFttYXRUb29sdGlwXT1cIidDb25kaXRpb246ICcgKyBzdGVwVk0uc3RlcC5jb25kaXRpb25cIlxuICAgICAgICAgICAgICAgID48bWF0LWljb24gc3ZnSWNvbj1cImdpbzppZlwiPjwvbWF0LWljb24+IHt7IHN0ZXBWTS5zdGVwLmNvbmRpdGlvbiB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcFxuICAgICAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3N0ZXBcIlxuICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicmVhZE9ubHkgfHwgIXN0ZXBWTS5zdGVwLmVuYWJsZWRcIlxuICAgICAgICAgICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgICAgICAgICBbc3RlcF09XCJzdGVwVk0uc3RlcFwiXG4gICAgICAgICAgICAgIFtleGVjdXRpb25QaGFzZV09XCJwb2xpY3lFeGVjdXRpb25QaGFzZVwiXG4gICAgICAgICAgICAgIChzdGVwQ2hhbmdlKT1cIm9uU3RlcENoYW5nZShzdGVwVk0uaW5kZXgsICRldmVudClcIlxuICAgICAgICAgICAgICAoZGVsZXRlZCk9XCJvblN0ZXBEZWxldGVkKHN0ZXBWTS5pbmRleClcIlxuICAgICAgICAgICAgICAoZGlzYWJsZWQpPVwib25TdGVwRGlzYWJsZWQoc3RlcFZNLmluZGV4KVwiXG4gICAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXA+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIEFkZCBwb2xpY3kgYnV0dG9uIC0tPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJyZWFkT25seVwiIGNsYXNzPVwiY29udGVudF9fc3RlcF9fYWRkQnRuXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwib25BZGRQb2xpY3koc3RlcFZNLmluZGV4KVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86cGx1c1wiPjwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY29udGVudF9fc3RlcF9fcmlnaHRBcnJvd1wiIHN2Z0ljb249XCJnaW86YXJyb3ctcmlnaHRcIj48L21hdC1pY29uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGlzYWJsZWRQaGFzZUNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJkaXNhYmxlZENvbnRlbnRcIj5cbiAgICA8Z2lvLWJhbm5lci13YXJuaW5nPlxuICAgICAgUG9saWNpZXMgbWlnaHQgbm90IGJlIGV2YWx1YXRlZFxuICAgICAgPHNwYW4gZ2lvQmFubmVyQm9keT5cbiAgICAgICAgWW91ciBjdXJyZW50IGZsb3cgc2V0dGluZ3MgYXJlIG5vdCBhcHBsaWNhYmxlIHRvIHRoaXMgcGhhc2UuIFNlbGVjdCBzdXBwb3J0aW5nIGVuZHBvaW50cyBhbmQgb3BlcmF0aW9ucyBpbiB0aGUgZmxvdyBjb25maWd1cmF0aW9uIHRvXG4gICAgICAgIGVuYWJsZSB0aGlzIHBoYXNlLlxuICAgICAgPC9zcGFuPlxuICAgIDwvZ2lvLWJhbm5lci13YXJuaW5nPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2024 The Gravitee team (http://gravitee.io)
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
17
|
+
import { EMPTY } from 'rxjs';
|
|
18
|
+
import { GioFormJsonSchemaModule, GioLoaderModule } from '@gravitee/ui-particles-angular';
|
|
19
|
+
import { GioPolicyStudioDetailsPhaseComponent } from '../components/flow-details-phase/gio-ps-flow-details-phase.component';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "../policy-studio/gio-policy-studio.service";
|
|
22
|
+
import * as i2 from "@gravitee/ui-particles-angular";
|
|
23
|
+
export class GioPolicyGroupStudioComponent {
|
|
24
|
+
constructor(policyStudioService) {
|
|
25
|
+
this.policyStudioService = policyStudioService;
|
|
26
|
+
/**
|
|
27
|
+
* List of policies usable in the studio
|
|
28
|
+
*/
|
|
29
|
+
this.policies = [];
|
|
30
|
+
/**
|
|
31
|
+
* Called when Policy Group Studio needs to fetch the policy schema
|
|
32
|
+
* @returns Observable of the policy schema
|
|
33
|
+
*/
|
|
34
|
+
this.policySchemaFetcher = () => EMPTY;
|
|
35
|
+
/**
|
|
36
|
+
* Called when Policy Group Studio needs to fetch the policy documentation
|
|
37
|
+
* @returns Observable of the policy documentation
|
|
38
|
+
*/
|
|
39
|
+
this.policyDocumentationFetcher = () => EMPTY;
|
|
40
|
+
this.policyGroup = [];
|
|
41
|
+
/**
|
|
42
|
+
* Output event when the Policy Group Studio changes
|
|
43
|
+
*/
|
|
44
|
+
this.policyGroupChange = new EventEmitter();
|
|
45
|
+
this.isLoading = true;
|
|
46
|
+
this.readOnly = false;
|
|
47
|
+
this.startConnector = name => [
|
|
48
|
+
{
|
|
49
|
+
name,
|
|
50
|
+
icon: 'gio:arrow-right',
|
|
51
|
+
type: 'start',
|
|
52
|
+
supportedModes: [],
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
this.endConnector = name => [
|
|
56
|
+
{
|
|
57
|
+
name,
|
|
58
|
+
icon: 'gio:arrow-right',
|
|
59
|
+
type: 'end',
|
|
60
|
+
supportedModes: [],
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
this.steps = [];
|
|
64
|
+
this.phases = {
|
|
65
|
+
PROXY__REQUEST: {
|
|
66
|
+
name: 'Request phase',
|
|
67
|
+
description: 'Policies will be applied during the connection establishment',
|
|
68
|
+
startConnectorName: 'Incoming request',
|
|
69
|
+
endConnectorName: 'Outgoing request',
|
|
70
|
+
},
|
|
71
|
+
PROXY__RESPONSE: {
|
|
72
|
+
name: 'Response phase',
|
|
73
|
+
description: 'Policies will be applied to the response from the initial connection.',
|
|
74
|
+
startConnectorName: 'Incoming response',
|
|
75
|
+
endConnectorName: 'Outgoing response',
|
|
76
|
+
},
|
|
77
|
+
PROXY__MESSAGE_REQUEST: null, // n/a
|
|
78
|
+
PROXY__MESSAGE_RESPONSE: null, // n/a
|
|
79
|
+
MESSAGE__REQUEST: {
|
|
80
|
+
name: 'Request phase',
|
|
81
|
+
description: 'Policies will be applied during the connection establishment',
|
|
82
|
+
startConnectorName: 'Incoming request',
|
|
83
|
+
endConnectorName: 'Outgoing request',
|
|
84
|
+
},
|
|
85
|
+
MESSAGE__RESPONSE: {
|
|
86
|
+
name: 'Response phase',
|
|
87
|
+
description: 'Policies will be applied during the connection termination',
|
|
88
|
+
startConnectorName: 'Incoming response',
|
|
89
|
+
endConnectorName: 'Outgoing response',
|
|
90
|
+
},
|
|
91
|
+
MESSAGE__MESSAGE_REQUEST: {
|
|
92
|
+
name: 'Publish phase',
|
|
93
|
+
description: 'Policies will be applied on messages sent to the endpoint',
|
|
94
|
+
startConnectorName: 'Incoming message request',
|
|
95
|
+
endConnectorName: 'Outgoing message request',
|
|
96
|
+
},
|
|
97
|
+
MESSAGE__MESSAGE_RESPONSE: {
|
|
98
|
+
name: 'Subscribe phase',
|
|
99
|
+
description: 'Policies will be applied on messages received by the entrypoint',
|
|
100
|
+
startConnectorName: 'Incoming message response',
|
|
101
|
+
endConnectorName: 'Outgoing message response',
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
ngOnChanges(changes) {
|
|
106
|
+
if (changes.policySchemaFetcher) {
|
|
107
|
+
this.policyStudioService.setPolicySchemaFetcher(this.policySchemaFetcher);
|
|
108
|
+
}
|
|
109
|
+
if (changes.policyDocumentationFetcher) {
|
|
110
|
+
this.policyStudioService.setPolicyDocumentationFetcher(this.policyDocumentationFetcher);
|
|
111
|
+
}
|
|
112
|
+
if (changes.policies) {
|
|
113
|
+
this.isLoading = false;
|
|
114
|
+
}
|
|
115
|
+
if (changes.executionPhase) {
|
|
116
|
+
this.policyGroupVM = this.phases[`${this.apiType}__${this.executionPhase}`] ?? undefined;
|
|
117
|
+
}
|
|
118
|
+
if (changes.policyGroup) {
|
|
119
|
+
this.steps = this.policyGroup;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
onStepsChange(steps) {
|
|
123
|
+
this.steps = steps;
|
|
124
|
+
this.policyGroupChange.emit(steps);
|
|
125
|
+
}
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioPolicyGroupStudioComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
127
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: GioPolicyGroupStudioComponent, isStandalone: true, selector: "gio-policy-group-studio", inputs: { policies: "policies", apiType: "apiType", executionPhase: "executionPhase", policySchemaFetcher: "policySchemaFetcher", policyDocumentationFetcher: "policyDocumentationFetcher", policyGroup: "policyGroup" }, outputs: { policyGroupChange: "policyGroupChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (!isLoading && policyGroupVM) {\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n [name]=\"policyGroupVM.name\"\n [description]=\"policyGroupVM.description\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"startConnector(policyGroupVM.startConnectorName)\"\n [endConnector]=\"endConnector(policyGroupVM.endConnectorName)\"\n [steps]=\"steps\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n [policyExecutionPhase]=\"executionPhase\"\n (stepsChange)=\"onStepsChange($event)\"\n ></gio-ps-flow-details-phase>\n} @else {\n <gio-loader></gio-loader>\n}\n", styles: [""], dependencies: [{ kind: "component", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["readOnly", "steps", "name", "description", "startConnector", "endConnector", "apiType", "policies", "policyExecutionPhase", "trialUrl"], outputs: ["stepsChange"] }, { kind: "ngmodule", type: GioFormJsonSchemaModule }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i2.GioLoaderComponent, selector: "gio-loader" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
128
|
+
}
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioPolicyGroupStudioComponent, decorators: [{
|
|
130
|
+
type: Component,
|
|
131
|
+
args: [{ selector: 'gio-policy-group-studio', standalone: true, imports: [GioPolicyStudioDetailsPhaseComponent, GioFormJsonSchemaModule, GioLoaderModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (!isLoading && policyGroupVM) {\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n [name]=\"policyGroupVM.name\"\n [description]=\"policyGroupVM.description\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"startConnector(policyGroupVM.startConnectorName)\"\n [endConnector]=\"endConnector(policyGroupVM.endConnectorName)\"\n [steps]=\"steps\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n [policyExecutionPhase]=\"executionPhase\"\n (stepsChange)=\"onStepsChange($event)\"\n ></gio-ps-flow-details-phase>\n} @else {\n <gio-loader></gio-loader>\n}\n" }]
|
|
132
|
+
}], ctorParameters: () => [{ type: i1.GioPolicyStudioService }], propDecorators: { policies: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}], apiType: [{
|
|
135
|
+
type: Input,
|
|
136
|
+
args: [{ required: true }]
|
|
137
|
+
}], executionPhase: [{
|
|
138
|
+
type: Input,
|
|
139
|
+
args: [{ required: true }]
|
|
140
|
+
}], policySchemaFetcher: [{
|
|
141
|
+
type: Input,
|
|
142
|
+
args: [{ required: true }]
|
|
143
|
+
}], policyDocumentationFetcher: [{
|
|
144
|
+
type: Input,
|
|
145
|
+
args: [{ required: true }]
|
|
146
|
+
}], policyGroup: [{
|
|
147
|
+
type: Input
|
|
148
|
+
}], policyGroupChange: [{
|
|
149
|
+
type: Output
|
|
150
|
+
}] } });
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBvbGljeS1ncm91cC1zdHVkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvcG9saWN5LWdyb3VwLXN0dWRpby9naW8tcG9saWN5LWdyb3VwLXN0dWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9wb2xpY3ktZ3JvdXAtc3R1ZGlvL2dpby1wb2xpY3ktZ3JvdXAtc3R1ZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFMUYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sc0VBQXNFLENBQUM7Ozs7QUFzQjVILE1BQU0sT0FBTyw2QkFBNkI7SUF5R3hDLFlBQTZCLG1CQUEyQztRQUEzQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBeEd4RTs7V0FFRztRQUVJLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFjL0I7OztXQUdHO1FBRUksd0JBQW1CLEdBQXdCLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUU5RDs7O1dBR0c7UUFFSSwrQkFBMEIsR0FBK0IsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBR3JFLGdCQUFXLEdBQXFCLEVBQUUsQ0FBQztRQUUxQzs7V0FFRztRQUVJLHNCQUFpQixHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztR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SUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDOzhHQWpJVSw2QkFBNkI7a0dBQTdCLDZCQUE2Qix1WEN6QzFDLHV4Q0FtQ0EsMEREQ1ksb0NBQW9DLGtQQUFFLHVCQUF1Qiw4QkFBRSxlQUFlOzsyRkFLN0UsNkJBQTZCO2tCQVJ6QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1AsQ0FBQyxvQ0FBb0MsRUFBRSx1QkFBdUIsRUFBRSxlQUFlLENBQUMsbUJBR3hFLHVCQUF1QixDQUFDLE1BQU07MkZBT3hDLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU9sQixjQUFjO3NCQURwQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFRbEIsbUJBQW1CO3NCQUR6QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFRbEIsMEJBQTBCO3NCQURoQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJbEIsV0FBVztzQkFEakIsS0FBSztnQkFPQyxpQkFBaUI7c0JBRHZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDI0IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVNUFRZIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHaW9Gb3JtSnNvblNjaGVtYU1vZHVsZSwgR2lvTG9hZGVyTW9kdWxlIH0gZnJvbSAnQGdyYXZpdGVlL3VpLXBhcnRpY2xlcy1hbmd1bGFyJztcblxuaW1wb3J0IHsgR2lvUG9saWN5U3R1ZGlvRGV0YWlsc1BoYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9mbG93LWRldGFpbHMtcGhhc2UvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBpVHlwZSwgQ29ubmVjdG9ySW5mbywgRXhlY3V0aW9uUGhhc2UsIFBvbGljeSwgUG9saWN5RG9jdW1lbnRhdGlvbkZldGNoZXIsIFBvbGljeVNjaGVtYUZldGNoZXIsIFN0ZXAgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgR2lvUG9saWN5U3R1ZGlvU2VydmljZSB9IGZyb20gJy4uL3BvbGljeS1zdHVkaW8vZ2lvLXBvbGljeS1zdHVkaW8uc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIFBvbGljeUdyb3VwT3V0cHV0ID0gU3RlcFtdO1xuZXhwb3J0IHR5cGUgUG9saWN5R3JvdXBJbnB1dCA9IFN0ZXBbXTtcblxudHlwZSBQb2xpY3lHcm91cFZNID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHN0YXJ0Q29ubmVjdG9yTmFtZTogc3RyaW5nO1xuICBlbmRDb25uZWN0b3JOYW1lOiBzdHJpbmc7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcG9saWN5LWdyb3VwLXN0dWRpbycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzUGhhc2VDb21wb25lbnQsIEdpb0Zvcm1Kc29uU2NoZW1hTW9kdWxlLCBHaW9Mb2FkZXJNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBvbGljeS1ncm91cC1zdHVkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2lvLXBvbGljeS1ncm91cC1zdHVkaW8uY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5R3JvdXBTdHVkaW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogTGlzdCBvZiBwb2xpY2llcyB1c2FibGUgaW4gdGhlIHN0dWRpb1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBvbGljaWVzOiBQb2xpY3lbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHRoZSBBUEkgdGFyZ2V0ZWQgYnkgdGhlIFBvbGljeSBHcm91cCBTdHVkaW9cbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBhcGlUeXBlITogQXBpVHlwZTtcblxuICAvKipcbiAgICogRXhlY3V0aW9uIHBoYXNlIHRhcmdldGVkIGJ5IHRoZSBQb2xpY3kgR3JvdXAgU3R1ZGlvXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgZXhlY3V0aW9uUGhhc2UhOiBFeGVjdXRpb25QaGFzZTtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gUG9saWN5IEdyb3VwIFN0dWRpbyBuZWVkcyB0byBmZXRjaCB0aGUgcG9saWN5IHNjaGVtYVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBwb2xpY3kgc2NoZW1hXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgcG9saWN5U2NoZW1hRmV0Y2hlcjogUG9saWN5U2NoZW1hRmV0Y2hlciA9ICgpID0+IEVNUFRZO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBQb2xpY3kgR3JvdXAgU3R1ZGlvIG5lZWRzIHRvIGZldGNoIHRoZSBwb2xpY3kgZG9jdW1lbnRhdGlvblxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBwb2xpY3kgZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIHBvbGljeURvY3VtZW50YXRpb25GZXRjaGVyOiBQb2xpY3lEb2N1bWVudGF0aW9uRmV0Y2hlciA9ICgpID0+IEVNUFRZO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb2xpY3lHcm91cDogUG9saWN5R3JvdXBJbnB1dCA9IFtdO1xuXG4gIC8qKlxuICAgKiBPdXRwdXQgZXZlbnQgd2hlbiB0aGUgUG9saWN5IEdyb3VwIFN0dWRpbyBjaGFuZ2VzXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHBvbGljeUdyb3VwQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UG9saWN5R3JvdXBPdXRwdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQb2xpY3lHcm91cE91dHB1dD4oKTtcblxuICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIHJlYWRPbmx5ID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzdGFydENvbm5lY3RvcjogKG5hbWU6IHN0cmluZykgPT4gQ29ubmVjdG9ySW5mb1tdID0gbmFtZSA9PiBbXG4gICAge1xuICAgICAgbmFtZSxcbiAgICAgIGljb246ICdnaW86YXJyb3ctcmlnaHQnLFxuICAgICAgdHlwZTogJ3N0YXJ0JyxcbiAgICAgIHN1cHBvcnRlZE1vZGVzOiBbXSxcbiAgICB9LFxuICBdO1xuICBwcm90ZWN0ZWQgZW5kQ29ubmVjdG9yOiAobmFtZTogc3RyaW5nKSA9PiBDb25uZWN0b3JJbmZvW10gPSBuYW1lID0+IFtcbiAgICB7XG4gICAgICBuYW1lLFxuICAgICAgaWNvbjogJ2dpbzphcnJvdy1yaWdodCcsXG4gICAgICB0eXBlOiAnZW5kJyxcbiAgICAgIHN1cHBvcnRlZE1vZGVzOiBbXSxcbiAgICB9LFxuICBdO1xuICBwcm90ZWN0ZWQgcG9saWN5R3JvdXBWTT86IFBvbGljeUdyb3VwVk07XG4gIHByb3RlY3RlZCBzdGVwczogU3RlcFtdID0gW107XG4gIHByb3RlY3RlZCB0cmlhbFVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgcGhhc2VzOiBSZWNvcmQ8YCR7QXBpVHlwZX1fXyR7RXhlY3V0aW9uUGhhc2V9YCwgUG9saWN5R3JvdXBWTSB8IG51bGw+ID0ge1xuICAgIFBST1hZX19SRVFVRVNUOiB7XG4gICAgICBuYW1lOiAnUmVxdWVzdCBwaGFzZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCcsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyByZXF1ZXN0JyxcbiAgICAgIGVuZENvbm5lY3Rvck5hbWU6ICdPdXRnb2luZyByZXF1ZXN0JyxcbiAgICB9LFxuICAgIFBST1hZX19SRVNQT05TRToge1xuICAgICAgbmFtZTogJ1Jlc3BvbnNlIHBoYXNlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSByZXNwb25zZSBmcm9tIHRoZSBpbml0aWFsIGNvbm5lY3Rpb24uJyxcbiAgICAgIHN0YXJ0Q29ubmVjdG9yTmFtZTogJ0luY29taW5nIHJlc3BvbnNlJyxcbiAgICAgIGVuZENvbm5lY3Rvck5hbWU6ICdPdXRnb2luZyByZXNwb25zZScsXG4gICAgfSxcbiAgICBQUk9YWV9fTUVTU0FHRV9SRVFVRVNUOiBudWxsLCAvLyBuL2FcbiAgICBQUk9YWV9fTUVTU0FHRV9SRVNQT05TRTogbnVsbCwgLy8gbi9hXG4gICAgTUVTU0FHRV9fUkVRVUVTVDoge1xuICAgICAgbmFtZTogJ1JlcXVlc3QgcGhhc2UnLFxuICAgICAgZGVzY3JpcHRpb246ICdQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQnLFxuICAgICAgc3RhcnRDb25uZWN0b3JOYW1lOiAnSW5jb21pbmcgcmVxdWVzdCcsXG4gICAgICBlbmRDb25uZWN0b3JOYW1lOiAnT3V0Z29pbmcgcmVxdWVzdCcsXG4gICAgfSxcbiAgICBNRVNTQUdFX19SRVNQT05TRToge1xuICAgICAgbmFtZTogJ1Jlc3BvbnNlIHBoYXNlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIGR1cmluZyB0aGUgY29ubmVjdGlvbiB0ZXJtaW5hdGlvbicsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyByZXNwb25zZScsXG4gICAgICBlbmRDb25uZWN0b3JOYW1lOiAnT3V0Z29pbmcgcmVzcG9uc2UnLFxuICAgIH0sXG4gICAgTUVTU0FHRV9fTUVTU0FHRV9SRVFVRVNUOiB7XG4gICAgICBuYW1lOiAnUHVibGlzaCBwaGFzZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBvbiBtZXNzYWdlcyBzZW50IHRvIHRoZSBlbmRwb2ludCcsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyBtZXNzYWdlIHJlcXVlc3QnLFxuICAgICAgZW5kQ29ubmVjdG9yTmFtZTogJ091dGdvaW5nIG1lc3NhZ2UgcmVxdWVzdCcsXG4gICAgfSxcbiAgICBNRVNTQUdFX19NRVNTQUdFX1JFU1BPTlNFOiB7XG4gICAgICBuYW1lOiAnU3Vic2NyaWJlIHBoYXNlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIG9uIG1lc3NhZ2VzIHJlY2VpdmVkIGJ5IHRoZSBlbnRyeXBvaW50JyxcbiAgICAgIHN0YXJ0Q29ubmVjdG9yTmFtZTogJ0luY29taW5nIG1lc3NhZ2UgcmVzcG9uc2UnLFxuICAgICAgZW5kQ29ubmVjdG9yTmFtZTogJ091dGdvaW5nIG1lc3NhZ2UgcmVzcG9uc2UnLFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwb2xpY3lTdHVkaW9TZXJ2aWNlOiBHaW9Qb2xpY3lTdHVkaW9TZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMucG9saWN5U2NoZW1hRmV0Y2hlcikge1xuICAgICAgdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLnNldFBvbGljeVNjaGVtYUZldGNoZXIodGhpcy5wb2xpY3lTY2hlbWFGZXRjaGVyKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5wb2xpY3lEb2N1bWVudGF0aW9uRmV0Y2hlcikge1xuICAgICAgdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLnNldFBvbGljeURvY3VtZW50YXRpb25GZXRjaGVyKHRoaXMucG9saWN5RG9jdW1lbnRhdGlvbkZldGNoZXIpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5wb2xpY2llcykge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuZXhlY3V0aW9uUGhhc2UpIHtcbiAgICAgIHRoaXMucG9saWN5R3JvdXBWTSA9IHRoaXMucGhhc2VzW2Ake3RoaXMuYXBpVHlwZX1fXyR7dGhpcy5leGVjdXRpb25QaGFzZX1gXSA/PyB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnBvbGljeUdyb3VwKSB7XG4gICAgICB0aGlzLnN0ZXBzID0gdGhpcy5wb2xpY3lHcm91cDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25TdGVwc0NoYW5nZShzdGVwczogU3RlcFtdKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwcyA9IHN0ZXBzO1xuICAgIHRoaXMucG9saWN5R3JvdXBDaGFuZ2UuZW1pdChzdGVwcyk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyNCBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuQGlmICghaXNMb2FkaW5nICYmIHBvbGljeUdyb3VwVk0pIHtcbiAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICBbbmFtZV09XCJwb2xpY3lHcm91cFZNLm5hbWVcIlxuICAgIFtkZXNjcmlwdGlvbl09XCJwb2xpY3lHcm91cFZNLmRlc2NyaXB0aW9uXCJcbiAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgIFtzdGFydENvbm5lY3Rvcl09XCJzdGFydENvbm5lY3Rvcihwb2xpY3lHcm91cFZNLnN0YXJ0Q29ubmVjdG9yTmFtZSlcIlxuICAgIFtlbmRDb25uZWN0b3JdPVwiZW5kQ29ubmVjdG9yKHBvbGljeUdyb3VwVk0uZW5kQ29ubmVjdG9yTmFtZSlcIlxuICAgIFtzdGVwc109XCJzdGVwc1wiXG4gICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgIFtwb2xpY3lFeGVjdXRpb25QaGFzZV09XCJleGVjdXRpb25QaGFzZVwiXG4gICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJGV2ZW50KVwiXG4gID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG59IEBlbHNlIHtcbiAgPGdpby1sb2FkZXI+PC9naW8tbG9hZGVyPlxufVxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -18,5 +18,5 @@
|
|
|
18
18
|
*/
|
|
19
19
|
export * from './lib/models';
|
|
20
20
|
export { GioPolicyStudioComponent } from './lib/policy-studio/gio-policy-studio.component';
|
|
21
|
-
export
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
export * from './lib/policy-group-studio/gio-policy-group-studio.component';
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNIOztHQUVHO0FBQ0gsY0FBYyxjQUFjLENBQUM7QUFDN0IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDM0YsY0FBYyw2REFBNkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHVpLXBvbGljeS1zdHVkaW8tYW5ndWxhclxuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMnO1xuZXhwb3J0IHsgR2lvUG9saWN5U3R1ZGlvQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvcG9saWN5LXN0dWRpby9naW8tcG9saWN5LXN0dWRpby5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcG9saWN5LWdyb3VwLXN0dWRpby9naW8tcG9saWN5LWdyb3VwLXN0dWRpby5jb21wb25lbnQnO1xuIl19
|
|
@@ -23,6 +23,9 @@ export class GioPolicyStudioStepFormHarness extends ComponentHarness {
|
|
|
23
23
|
}
|
|
24
24
|
static { this.hostSelector = 'gio-ps-step-form'; }
|
|
25
25
|
async setStepForm(stepForm) {
|
|
26
|
+
if (stepForm.waitForInitHttpRequestCompletionCb) {
|
|
27
|
+
stepForm.waitForInitHttpRequestCompletionCb();
|
|
28
|
+
}
|
|
26
29
|
if (stepForm.description) {
|
|
27
30
|
const descriptionInput = await this.getDescriptionInput();
|
|
28
31
|
await descriptionInput.setValue(stepForm.description);
|
|
@@ -46,4 +49,4 @@ export class GioPolicyStudioStepFormHarness extends ComponentHarness {
|
|
|
46
49
|
return documentation.getAttribute('ng-reflect-content');
|
|
47
50
|
}
|
|
48
51
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZm9ybS5oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zdGVwLWZvcm0vZ2lvLXBzLXN0ZXAtZm9ybS5oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQVVsRSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsZ0JBQWdCO0lBQXBFOztRQUdVLHdCQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQ0FBaUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3RyxzQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFtQ25ILENBQUM7YUF2Q2UsaUJBQVksR0FBRyxrQkFBa0IsQUFBckIsQ0FBc0I7SUFNekMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFrQjtRQUN6QyxJQUFJLFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1lBQ2hELFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1FBQ2hELENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QixNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDMUQsTUFBTSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RELE1BQU0sY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELElBQUksUUFBUSxDQUFDLDZCQUE2QixFQUFFLENBQUM7WUFDM0MsTUFBTSxRQUFRLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQjtRQUczQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFMUQsT0FBTztZQUNMLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtTQUMvQyxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0I7UUFDM0IsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLDJDQUEyQyxDQUFDLEVBQUUsQ0FBQztRQUMzRixPQUFPLGFBQWEsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50SGFybmVzcywgTG9jYXRvckZhY3RvcnkgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRJbnB1dEhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dC90ZXN0aW5nJztcblxuZXhwb3J0IHR5cGUgU3RlcEZvcm0gPSB7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjb25kaXRpb24/OiBzdHJpbmc7XG4gIC8vIENhbGxiYWNrIHRvIGFsbG93IHRvIGZpbGwgdGhlIGZpZWxkcyBvZiB0aGUganNvblNjaGVtYUZvcm0gc3BlY2lmaWMgdG8gZWFjaCBwb2xpY3ksIGlmIG5lY2Vzc2FyeS4gVXNlZnVsIGlmIHNvbWUgYXJlIHJlcXVpcmVkLlxuICB3YWl0Rm9yUG9saWN5Rm9ybUNvbXBsZXRpb25DYj86IChsb2NhdG9yOiBMb2NhdG9yRmFjdG9yeSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgLy8gQ2FsbGJhY2sgdG8gYWxsb3cgdG8gZmlsbCBpbml0IGh0dHAgcmVxdWVzdCBmaWVsZHMuIFVzZWZ1bCBmb3IgaHR0cFRlc3RpbmdDb250cm9sbGVyLmV4cGVjdE9uZSgpIG9ubiBgL3NjaGVtYWAgJiBgYC9kb2N1bWVudGF0aW9uYCByZXF1ZXN0cy5cbiAgd2FpdEZvckluaXRIdHRwUmVxdWVzdENvbXBsZXRpb25DYj86ICgpID0+IHZvaWQ7XG59O1xuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb1N0ZXBGb3JtSGFybmVzcyBleHRlbmRzIENvbXBvbmVudEhhcm5lc3Mge1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdnaW8tcHMtc3RlcC1mb3JtJztcblxuICBwcml2YXRlIGdldERlc2NyaXB0aW9uSW5wdXQgPSB0aGlzLmxvY2F0b3JGb3IoTWF0SW5wdXRIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogJ1tmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXScgfSkpO1xuXG4gIHByaXZhdGUgZ2V0Q29uZGl0aW9uSW5wdXQgPSB0aGlzLmxvY2F0b3JGb3IoTWF0SW5wdXRIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogJ1tmb3JtQ29udHJvbE5hbWU9XCJjb25kaXRpb25cIl0nIH0pKTtcblxuICBwdWJsaWMgYXN5bmMgc2V0U3RlcEZvcm0oc3RlcEZvcm06IFN0ZXBGb3JtKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHN0ZXBGb3JtLndhaXRGb3JJbml0SHR0cFJlcXVlc3RDb21wbGV0aW9uQ2IpIHtcbiAgICAgIHN0ZXBGb3JtLndhaXRGb3JJbml0SHR0cFJlcXVlc3RDb21wbGV0aW9uQ2IoKTtcbiAgICB9XG5cbiAgICBpZiAoc3RlcEZvcm0uZGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uSW5wdXQgPSBhd2FpdCB0aGlzLmdldERlc2NyaXB0aW9uSW5wdXQoKTtcbiAgICAgIGF3YWl0IGRlc2NyaXB0aW9uSW5wdXQuc2V0VmFsdWUoc3RlcEZvcm0uZGVzY3JpcHRpb24pO1xuICAgIH1cbiAgICBpZiAoc3RlcEZvcm0uY29uZGl0aW9uKSB7XG4gICAgICBjb25zdCBjb25kaXRpb25JbnB1dCA9IGF3YWl0IHRoaXMuZ2V0Q29uZGl0aW9uSW5wdXQoKTtcbiAgICAgIGF3YWl0IGNvbmRpdGlvbklucHV0LnNldFZhbHVlKHN0ZXBGb3JtLmNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHN0ZXBGb3JtLndhaXRGb3JQb2xpY3lGb3JtQ29tcGxldGlvbkNiKSB7XG4gICAgICBhd2FpdCBzdGVwRm9ybS53YWl0Rm9yUG9saWN5Rm9ybUNvbXBsZXRpb25DYih0aGlzLmxvY2F0b3JGYWN0b3J5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RlcEZvcm1WYWx1ZSgpOiBQcm9taXNlPHtcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uSW5wdXQgPSBhd2FpdCB0aGlzLmdldERlc2NyaXB0aW9uSW5wdXQoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbjogYXdhaXQgZGVzY3JpcHRpb25JbnB1dC5nZXRWYWx1ZSgpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RG9jdW1lbnRhdGlvbigpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICBjb25zdCBkb2N1bWVudGF0aW9uID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKCcuZG9jdW1lbnRhdGlvbl9fY29udGVudCA+IGdpby1hc2NpaWRvY3RvcicpKCk7XG4gICAgcmV0dXJuIGRvY3VtZW50YXRpb24uZ2V0QXR0cmlidXRlKCduZy1yZWZsZWN0LWNvbnRlbnQnKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2024 The Gravitee team (http://gravitee.io)
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ComponentHarness } from '@angular/cdk/testing';
|
|
17
|
+
import { DivHarness } from '@gravitee/ui-particles-angular/testing';
|
|
18
|
+
import { MatButtonHarness } from '@angular/material/button/testing';
|
|
19
|
+
import { GioPolicyStudioDetailsPhaseHarness } from '../components/flow-details-phase/gio-ps-flow-details-phase.harness';
|
|
20
|
+
import { GioPolicyStudioPoliciesCatalogDialogHarness } from '../components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.harness';
|
|
21
|
+
export class GioPolicyGroupStudioHarness extends ComponentHarness {
|
|
22
|
+
constructor() {
|
|
23
|
+
super(...arguments);
|
|
24
|
+
this.phaseHarness = () => this.locatorFor(GioPolicyStudioDetailsPhaseHarness)();
|
|
25
|
+
}
|
|
26
|
+
static { this.hostSelector = 'gio-policy-group-studio'; }
|
|
27
|
+
/**
|
|
28
|
+
* Get Policy Group phase harness
|
|
29
|
+
*/
|
|
30
|
+
async getPolicyGroupPhase() {
|
|
31
|
+
return this.phaseHarness();
|
|
32
|
+
}
|
|
33
|
+
async clickAddStep(index) {
|
|
34
|
+
const addStepBtn = await this.locatorForAll(DivHarness.with({ selector: '.content__step' }))().then(divs => divs[index]);
|
|
35
|
+
await addStepBtn
|
|
36
|
+
.childLocatorFor(MatButtonHarness.with({ selector: '.content__step__addBtn' }))()
|
|
37
|
+
.then(btn => btn.click());
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Add a step to a policy-group
|
|
41
|
+
* @param index Index where to add the step. (Add button index)
|
|
42
|
+
* @param stepConfig Step to add
|
|
43
|
+
*/
|
|
44
|
+
async addStep(index, stepConfig) {
|
|
45
|
+
await this.clickAddStep(index);
|
|
46
|
+
const catalogDialog = await this.documentRootLocatorFactory().locatorFor(GioPolicyStudioPoliciesCatalogDialogHarness)();
|
|
47
|
+
await catalogDialog.selectPolicy(stepConfig.policyName);
|
|
48
|
+
await (await catalogDialog.getStepForm()).setStepForm(stepConfig);
|
|
49
|
+
await catalogDialog.clickAddPolicyButton();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBvbGljeS1ncm91cC1zdHVkaW8uaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL3BvbGljeS1ncm91cC1zdHVkaW8vZ2lvLXBvbGljeS1ncm91cC1zdHVkaW8uaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUV4SCxPQUFPLEVBQUUsMkNBQTJDLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUUzSSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsZ0JBQWdCO0lBQWpFOztRQUdVLGlCQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFLENBQUM7SUFxQ3JGLENBQUM7YUF2Q2UsaUJBQVksR0FBRyx5QkFBeUIsQUFBNUIsQ0FBNkI7SUFJdkQ7O09BRUc7SUFDSSxLQUFLLENBQUMsbUJBQW1CO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQWE7UUFDckMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV6SCxNQUFNLFVBQVU7YUFDYixlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxFQUFFO2FBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLE9BQU8sQ0FDbEIsS0FBYSxFQUNiLFVBRVk7UUFFWixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxVQUFVLENBQUMsMkNBQTJDLENBQUMsRUFBRSxDQUFDO1FBQ3hILE1BQU0sYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEQsTUFBTSxDQUFDLE1BQU0sYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sYUFBYSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjQgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgRGl2SGFybmVzcyB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhci90ZXN0aW5nJztcbmltcG9ydCB7IE1hdEJ1dHRvbkhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24vdGVzdGluZyc7XG5cbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZUhhcm5lc3MgfSBmcm9tICcuLi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1waGFzZS9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmhhcm5lc3MnO1xuaW1wb3J0IHsgU3RlcEZvcm0gfSBmcm9tICcuLi9jb21wb25lbnRzL3N0ZXAtZm9ybS9naW8tcHMtc3RlcC1mb3JtLmhhcm5lc3MnO1xuaW1wb3J0IHsgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nSGFybmVzcyB9IGZyb20gJy4uL2NvbXBvbmVudHMvcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cvZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmhhcm5lc3MnO1xuXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5R3JvdXBTdHVkaW9IYXJuZXNzIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcyB7XG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ2dpby1wb2xpY3ktZ3JvdXAtc3R1ZGlvJztcblxuICBwcml2YXRlIHBoYXNlSGFybmVzcyA9ICgpID0+IHRoaXMubG9jYXRvckZvcihHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzUGhhc2VIYXJuZXNzKSgpO1xuXG4gIC8qKlxuICAgKiBHZXQgUG9saWN5IEdyb3VwIHBoYXNlIGhhcm5lc3NcbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRQb2xpY3lHcm91cFBoYXNlKCk6IFByb21pc2U8R2lvUG9saWN5U3R1ZGlvRGV0YWlsc1BoYXNlSGFybmVzcz4ge1xuICAgIHJldHVybiB0aGlzLnBoYXNlSGFybmVzcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNsaWNrQWRkU3RlcChpbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYWRkU3RlcEJ0biA9IGF3YWl0IHRoaXMubG9jYXRvckZvckFsbChEaXZIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogJy5jb250ZW50X19zdGVwJyB9KSkoKS50aGVuKGRpdnMgPT4gZGl2c1tpbmRleF0pO1xuXG4gICAgYXdhaXQgYWRkU3RlcEJ0blxuICAgICAgLmNoaWxkTG9jYXRvckZvcihNYXRCdXR0b25IYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogJy5jb250ZW50X19zdGVwX19hZGRCdG4nIH0pKSgpXG4gICAgICAudGhlbihidG4gPT4gYnRuLmNsaWNrKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHN0ZXAgdG8gYSBwb2xpY3ktZ3JvdXBcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IHdoZXJlIHRvIGFkZCB0aGUgc3RlcC4gKEFkZCBidXR0b24gaW5kZXgpXG4gICAqIEBwYXJhbSBzdGVwQ29uZmlnIFN0ZXAgdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYWRkU3RlcChcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIHN0ZXBDb25maWc6IHtcbiAgICAgIHBvbGljeU5hbWU6IHN0cmluZztcbiAgICB9ICYgU3RlcEZvcm0sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY2xpY2tBZGRTdGVwKGluZGV4KTtcblxuICAgIGNvbnN0IGNhdGFsb2dEaWFsb2cgPSBhd2FpdCB0aGlzLmRvY3VtZW50Um9vdExvY2F0b3JGYWN0b3J5KCkubG9jYXRvckZvcihHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dIYXJuZXNzKSgpO1xuICAgIGF3YWl0IGNhdGFsb2dEaWFsb2cuc2VsZWN0UG9saWN5KHN0ZXBDb25maWcucG9saWN5TmFtZSk7XG5cbiAgICBhd2FpdCAoYXdhaXQgY2F0YWxvZ0RpYWxvZy5nZXRTdGVwRm9ybSgpKS5zZXRTdGVwRm9ybShzdGVwQ29uZmlnKTtcblxuICAgIGF3YWl0IGNhdGFsb2dEaWFsb2cuY2xpY2tBZGRQb2xpY3lCdXR0b24oKTtcbiAgfVxufVxuIl19
|
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
*/
|
|
16
16
|
export * from './lib/models/index-testing';
|
|
17
17
|
export * from './lib/policy-studio/gio-policy-studio.harness';
|
|
18
|
-
export * from './lib/
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
export * from './lib/policy-group-studio/gio-policy-group-studio.harness';
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLXRlc3RpbmctYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9wdWJsaWMtdGVzdGluZy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxjQUFjLDRCQUE0QixDQUFDO0FBRTNDLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYywyREFBMkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvaW5kZXgtdGVzdGluZyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3BvbGljeS1zdHVkaW8vZ2lvLXBvbGljeS1zdHVkaW8uaGFybmVzcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wb2xpY3ktZ3JvdXAtc3R1ZGlvL2dpby1wb2xpY3ktZ3JvdXAtc3R1ZGlvLmhhcm5lc3MnO1xuIl19
|
|
@@ -1126,6 +1126,9 @@ class GioPolicyStudioStepFormHarness extends ComponentHarness {
|
|
|
1126
1126
|
}
|
|
1127
1127
|
static { this.hostSelector = 'gio-ps-step-form'; }
|
|
1128
1128
|
async setStepForm(stepForm) {
|
|
1129
|
+
if (stepForm.waitForInitHttpRequestCompletionCb) {
|
|
1130
|
+
stepForm.waitForInitHttpRequestCompletionCb();
|
|
1131
|
+
}
|
|
1129
1132
|
if (stepForm.description) {
|
|
1130
1133
|
const descriptionInput = await this.getDescriptionInput();
|
|
1131
1134
|
await descriptionInput.setValue(stepForm.description);
|
|
@@ -1560,18 +1563,17 @@ class GioPolicyStudioHarness extends ComponentHarness {
|
|
|
1560
1563
|
* See the License for the specific language governing permissions and
|
|
1561
1564
|
* limitations under the License.
|
|
1562
1565
|
*/
|
|
1563
|
-
class
|
|
1566
|
+
class GioPolicyGroupStudioHarness extends ComponentHarness {
|
|
1564
1567
|
constructor() {
|
|
1565
1568
|
super(...arguments);
|
|
1566
|
-
this.phaseHarness = (
|
|
1569
|
+
this.phaseHarness = () => this.locatorFor(GioPolicyStudioDetailsPhaseHarness)();
|
|
1567
1570
|
}
|
|
1568
|
-
static { this.hostSelector = 'gio-
|
|
1571
|
+
static { this.hostSelector = 'gio-policy-group-studio'; }
|
|
1569
1572
|
/**
|
|
1570
|
-
* Get
|
|
1571
|
-
* @param phaseType Phase type to get
|
|
1573
|
+
* Get Policy Group phase harness
|
|
1572
1574
|
*/
|
|
1573
|
-
async
|
|
1574
|
-
return this.phaseHarness(
|
|
1575
|
+
async getPolicyGroupPhase() {
|
|
1576
|
+
return this.phaseHarness();
|
|
1575
1577
|
}
|
|
1576
1578
|
async clickAddStep(index) {
|
|
1577
1579
|
const addStepBtn = await this.locatorForAll(DivHarness.with({ selector: '.content__step' }))().then(divs => divs[index]);
|
|
@@ -1580,7 +1582,7 @@ class GioEnvironmentFlowStudioHarness extends ComponentHarness {
|
|
|
1580
1582
|
.then(btn => btn.click());
|
|
1581
1583
|
}
|
|
1582
1584
|
/**
|
|
1583
|
-
* Add a step to a
|
|
1585
|
+
* Add a step to a policy-group
|
|
1584
1586
|
* @param index Index where to add the step. (Add button index)
|
|
1585
1587
|
* @param stepConfig Step to add
|
|
1586
1588
|
*/
|
|
@@ -1613,5 +1615,5 @@ class GioEnvironmentFlowStudioHarness extends ComponentHarness {
|
|
|
1613
1615
|
* Generated bundle index. Do not edit.
|
|
1614
1616
|
*/
|
|
1615
1617
|
|
|
1616
|
-
export {
|
|
1618
|
+
export { GioPolicyGroupStudioHarness, GioPolicyStudioHarness, POLICIES_V4_UNREGISTERED_ICON, fakeAllPolicies, fakeBestMatchFlowExecution, fakeChannelFlow, fakeConditionedChannelFlow, fakeConditionedHttpFlow, fakeDefaultFlowExecution, fakeHTTPGetMessageEntrypoint, fakeHTTPPostMessageEntrypoint, fakeHTTPProxyEndpoint, fakeHTTPProxyEntrypoint, fakeHttpFlow, fakeJsonToXmlStep, fakeKafkaMessageEndpoint, fakeMockMessageEndpoint, fakePlan, fakeRateLimitStep, fakeSSEMessageEntrypoint, fakeTestPolicy, fakeTestPolicyStep, fakeWebhookMessageEntrypoint, fakeWebsocketMessageEntrypoint };
|
|
1617
1619
|
//# sourceMappingURL=gravitee-ui-policy-studio-angular-testing.mjs.map
|