@gravitee/ui-policy-studio-angular 7.12.0 → 7.13.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/esm2020/lib/components/flow-details/gio-ps-flow-details.component.mjs +4 -3
- package/esm2020/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +19 -19
- package/esm2020/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.mjs +77 -0
- package/esm2020/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.mjs +11 -5
- package/esm2020/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.mjs +46 -0
- package/esm2020/lib/components/step-form/gio-ps-step-form.component.mjs +78 -0
- package/esm2020/lib/gio-policy-studio.component.mjs +44 -14
- package/esm2020/lib/gio-policy-studio.module.mjs +13 -11
- package/esm2020/lib/gio-policy-studio.service.mjs +66 -0
- package/esm2020/lib/models/PolicySchemaFetcher.mjs +2 -0
- package/esm2020/lib/models/index.mjs +2 -1
- package/esm2020/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.mjs +53 -7
- package/esm2020/testing/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.harness.mjs +42 -0
- package/esm2020/testing/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.harness.mjs +55 -0
- package/esm2020/testing/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.harness.mjs +30 -0
- package/esm2020/testing/lib/components/step-form/gio-ps-step-form.harness.mjs +37 -0
- package/esm2020/testing/lib/gio-policy-studio.harness.mjs +8 -8
- package/esm2020/testing/lib/models/PolicySchemaFetcher.mjs +2 -0
- package/esm2020/testing/lib/models/flow/Step.fixture.mjs +10 -9
- package/esm2020/testing/lib/models/index.mjs +2 -1
- package/fesm2015/gravitee-ui-policy-studio-angular-testing.mjs +171 -27
- package/fesm2015/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
- package/fesm2015/gravitee-ui-policy-studio-angular.mjs +214 -555
- package/fesm2015/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/fesm2020/gravitee-ui-policy-studio-angular-testing.mjs +185 -25
- package/fesm2020/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
- package/fesm2020/gravitee-ui-policy-studio-angular.mjs +220 -611
- package/fesm2020/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.d.ts +4 -2
- package/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.d.ts +18 -0
- package/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.d.ts +4 -2
- package/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.d.ts +18 -0
- package/lib/components/step-form/gio-ps-step-form.component.d.ts +23 -0
- package/lib/gio-policy-studio.component.d.ts +30 -2
- package/lib/gio-policy-studio.module.d.ts +4 -4
- package/lib/gio-policy-studio.service.d.ts +26 -0
- package/lib/models/PolicySchemaFetcher.d.ts +4 -0
- package/lib/models/index.d.ts +1 -0
- package/package.json +1 -1
- package/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.d.ts +29 -4
- package/testing/lib/components/{flow-details-phase-policy/gio-ps-flow-details-phase-policy.harness.d.ts → flow-details-phase-step/gio-ps-flow-details-phase-step.harness.d.ts} +4 -3
- package/testing/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.harness.d.ts +12 -0
- package/testing/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.harness.d.ts +8 -0
- package/testing/lib/components/step-form/gio-ps-step-form.harness.d.ts +11 -0
- package/testing/lib/gio-policy-studio.harness.d.ts +4 -7
- package/testing/lib/models/PolicySchemaFetcher.d.ts +4 -0
- package/testing/lib/models/flow/Step.fixture.d.ts +2 -2
- package/testing/lib/models/index.d.ts +1 -0
- package/esm2020/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.component.mjs +0 -58
- package/esm2020/lib/components/policy-form/gio-ps-policy-form.component.mjs +0 -30
- package/esm2020/lib/components/policy-form-dialog/gio-ps-policy-form-dialog.component.mjs +0 -43
- package/esm2020/lib/models/ConnectorsInfo.fixture.mjs +0 -152
- package/esm2020/lib/models/flow/Flow.fixture.mjs +0 -66
- package/esm2020/lib/models/flow/FlowExecution.fixture.mjs +0 -43
- package/esm2020/lib/models/flow/Step.fixture.mjs +0 -70
- package/esm2020/lib/models/flow/index-testing.mjs +0 -19
- package/esm2020/lib/models/index-testing.mjs +0 -20
- package/esm2020/lib/models/plan/Plan.fixture.mjs +0 -31
- package/esm2020/lib/models/plan/index-testing.mjs +0 -17
- package/esm2020/lib/models/policy/Policy.fixture.mjs +0 -133
- package/esm2020/lib/models/policy/index-testing.mjs +0 -17
- package/esm2020/testing/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.harness.mjs +0 -38
- package/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.component.d.ts +0 -13
- package/lib/components/policy-form/gio-ps-policy-form.component.d.ts +0 -8
- package/lib/components/policy-form-dialog/gio-ps-policy-form-dialog.component.d.ts +0 -17
- package/lib/models/ConnectorsInfo.fixture.d.ts +0 -10
- package/lib/models/flow/Flow.fixture.d.ts +0 -3
- package/lib/models/flow/FlowExecution.fixture.d.ts +0 -3
- package/lib/models/flow/Step.fixture.d.ts +0 -4
- package/lib/models/flow/index-testing.d.ts +0 -3
- package/lib/models/index-testing.d.ts +0 -4
- package/lib/models/plan/Plan.fixture.d.ts +0 -2
- package/lib/models/plan/index-testing.d.ts +0 -1
- package/lib/models/policy/Policy.fixture.d.ts +0 -4
- package/lib/models/policy/index-testing.d.ts +0 -1
|
@@ -24,10 +24,12 @@ import * as i8$1 from '@angular/material/slide-toggle';
|
|
|
24
24
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
25
25
|
import * as i4$2 from '@angular/material/menu';
|
|
26
26
|
import { MatMenuModule } from '@angular/material/menu';
|
|
27
|
-
import { cloneDeep, uniqueId,
|
|
27
|
+
import { cloneDeep, uniqueId, isEmpty, filter, isEqual, flatten, differenceBy, omit, unionBy } from 'lodash';
|
|
28
28
|
import * as i3 from '@angular/material/icon';
|
|
29
29
|
import * as i6 from '@angular/material/core';
|
|
30
|
-
import { tap } from 'rxjs/operators';
|
|
30
|
+
import { shareReplay, takeUntil, startWith, tap } from 'rxjs/operators';
|
|
31
|
+
import { of, Subject, EMPTY } from 'rxjs';
|
|
32
|
+
import { __decorate } from 'tslib';
|
|
31
33
|
|
|
32
34
|
/*
|
|
33
35
|
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
|
|
@@ -414,17 +416,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
414
416
|
* See the License for the specific language governing permissions and
|
|
415
417
|
* limitations under the License.
|
|
416
418
|
*/
|
|
417
|
-
class
|
|
419
|
+
let GioPolicyStudioService = class GioPolicyStudioService {
|
|
420
|
+
constructor() {
|
|
421
|
+
this.schemasCache = {};
|
|
422
|
+
this.documentationsCache = {};
|
|
423
|
+
}
|
|
424
|
+
setPolicySchemaFetcher(policySchemaFetcher) {
|
|
425
|
+
this.policySchemaFetcher = policySchemaFetcher;
|
|
426
|
+
}
|
|
427
|
+
setPolicyDocumentationFetcher(policyDocumentationFetcher) {
|
|
428
|
+
this.policyDocumentationFetcher = policyDocumentationFetcher;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Call the policy schema fetcher to get the schema for the given policy. If the
|
|
432
|
+
* schema has already been fetched, it will be returned from the cache.
|
|
433
|
+
*
|
|
434
|
+
* @param policy to get the schema for
|
|
435
|
+
* @returns the schema for the policy
|
|
436
|
+
*/
|
|
437
|
+
getPolicySchema(policy) {
|
|
438
|
+
if (!this.policySchemaFetcher)
|
|
439
|
+
throw new Error('PolicySchemaFetcher not defined!');
|
|
440
|
+
if (this.schemasCache[policy.id]) {
|
|
441
|
+
return of(this.schemasCache[policy.id]).pipe(shareReplay(1));
|
|
442
|
+
}
|
|
443
|
+
return this.policySchemaFetcher(policy);
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Call the policy documentation fetcher to get the documentation for the given policy. If the
|
|
447
|
+
* documentation has already been fetched, it will be returned from the cache.
|
|
448
|
+
*
|
|
449
|
+
* @param policy to get the documentation for
|
|
450
|
+
* @returns the documentation for the policy
|
|
451
|
+
*/
|
|
452
|
+
getPolicyDocumentation(policy) {
|
|
453
|
+
if (!this.policyDocumentationFetcher)
|
|
454
|
+
throw new Error('PolicyDocumentationFetcher not defined!');
|
|
455
|
+
if (this.documentationsCache[policy.id]) {
|
|
456
|
+
return of(this.documentationsCache[policy.id]).pipe(shareReplay(1));
|
|
457
|
+
}
|
|
458
|
+
return this.policyDocumentationFetcher(policy);
|
|
459
|
+
}
|
|
460
|
+
};
|
|
461
|
+
GioPolicyStudioService = __decorate([
|
|
462
|
+
Inject({})
|
|
463
|
+
], GioPolicyStudioService);
|
|
464
|
+
|
|
465
|
+
/*
|
|
466
|
+
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
467
|
+
*
|
|
468
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
469
|
+
* you may not use this file except in compliance with the License.
|
|
470
|
+
* You may obtain a copy of the License at
|
|
471
|
+
*
|
|
472
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
473
|
+
*
|
|
474
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
475
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
476
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
477
|
+
* See the License for the specific language governing permissions and
|
|
478
|
+
* limitations under the License.
|
|
479
|
+
*/
|
|
480
|
+
class GioPolicyStudioStepFormComponent {
|
|
481
|
+
constructor(policyStudioService) {
|
|
482
|
+
this.policyStudioService = policyStudioService;
|
|
483
|
+
this.stepChange = new EventEmitter();
|
|
484
|
+
this.isValid = new EventEmitter();
|
|
485
|
+
this.unsubscribe$ = new Subject();
|
|
486
|
+
}
|
|
487
|
+
ngOnChanges(changes) {
|
|
488
|
+
if (changes.policy) {
|
|
489
|
+
this.policySchema$ = this.policyStudioService.getPolicySchema(this.policy);
|
|
490
|
+
this.policyDocumentation$ = this.policyStudioService.getPolicyDocumentation(this.policy);
|
|
491
|
+
}
|
|
492
|
+
if (changes.step && !changes.step.firstChange) {
|
|
493
|
+
this.initStepForm();
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
ngOnInit() {
|
|
497
|
+
this.initStepForm();
|
|
498
|
+
}
|
|
499
|
+
ngOnDestroy() {
|
|
500
|
+
this.unsubscribe$.next();
|
|
501
|
+
this.unsubscribe$.complete();
|
|
502
|
+
}
|
|
503
|
+
initStepForm() {
|
|
504
|
+
var _a;
|
|
505
|
+
this.stepForm = new FormGroup({
|
|
506
|
+
description: new FormControl((_a = this.step) === null || _a === void 0 ? void 0 : _a.description, []),
|
|
507
|
+
});
|
|
508
|
+
this.stepForm.valueChanges.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
509
|
+
var _a, _b;
|
|
510
|
+
this.stepChange.emit(Object.assign(Object.assign({}, this.step), { description: (_b = (_a = this.stepForm) === null || _a === void 0 ? void 0 : _a.get('description')) === null || _b === void 0 ? void 0 : _b.value }));
|
|
511
|
+
});
|
|
512
|
+
this.stepForm.statusChanges.pipe(takeUntil(this.unsubscribe$), startWith(this.stepForm.status)).subscribe(valid => {
|
|
513
|
+
this.isValid.emit(valid === 'VALID');
|
|
514
|
+
});
|
|
515
|
+
}
|
|
418
516
|
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type:
|
|
517
|
+
GioPolicyStudioStepFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioStepFormComponent, deps: [{ token: GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component });
|
|
518
|
+
GioPolicyStudioStepFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: { step: "step", policy: "policy" }, outputs: { stepChange: "stepChange", isValid: "isValid" }, 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=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div *ngIf=\"stepForm\" class=\"settings__content\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <input matInput formControlName=\"description\" cdkFocusInitial />\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <ng-container *ngIf=\"policySchema$\">\n {{ $any(policySchema$) | async | json }}\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <ng-container *ngIf=\"policyDocumentation$\">\n {{ $any(policyDocumentation$) | async }}\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;border:1px solid #d3d5dc;border-radius:8px}.settings{display:flex;flex:1 1 50%;flex-direction:column}.settings__header{border-right:1px solid #d3d5dc}.settings__content{display:flex;flex-direction:column;padding:16px;border-right:1px solid #d3d5dc}.documentation{display:flex;flex:1 1 50%;flex-direction:column}.documentation__content{padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d3d5dc;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}\n"], components: [{ type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "json": i5$1.JsonPipe, "async": i5$1.AsyncPipe } });
|
|
519
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioStepFormComponent, decorators: [{
|
|
422
520
|
type: Component,
|
|
423
|
-
args: [{ selector: 'gio-ps-
|
|
424
|
-
}], propDecorators: { step: [{
|
|
521
|
+
args: [{ selector: 'gio-ps-step-form', 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=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div *ngIf=\"stepForm\" class=\"settings__content\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <input matInput formControlName=\"description\" cdkFocusInitial />\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <ng-container *ngIf=\"policySchema$\">\n {{ $any(policySchema$) | async | json }}\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <ng-container *ngIf=\"policyDocumentation$\">\n {{ $any(policyDocumentation$) | async }}\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;border:1px solid #d3d5dc;border-radius:8px}.settings{display:flex;flex:1 1 50%;flex-direction:column}.settings__header{border-right:1px solid #d3d5dc}.settings__content{display:flex;flex-direction:column;padding:16px;border-right:1px solid #d3d5dc}.documentation{display:flex;flex:1 1 50%;flex-direction:column}.documentation__content{padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d3d5dc;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}\n"] }]
|
|
522
|
+
}], ctorParameters: function () { return [{ type: GioPolicyStudioService }]; }, propDecorators: { step: [{
|
|
425
523
|
type: Input
|
|
426
524
|
}], policy: [{
|
|
427
525
|
type: Input
|
|
526
|
+
}], stepChange: [{
|
|
527
|
+
type: Output
|
|
528
|
+
}], isValid: [{
|
|
529
|
+
type: Output
|
|
428
530
|
}] } });
|
|
429
531
|
|
|
430
532
|
/*
|
|
@@ -452,6 +554,7 @@ class GioPolicyStudioPoliciesCatalogDialogComponent {
|
|
|
452
554
|
constructor(dialogRef, flowDialogData) {
|
|
453
555
|
this.dialogRef = dialogRef;
|
|
454
556
|
this.policies = [];
|
|
557
|
+
this.isValid = false;
|
|
455
558
|
this.policies = flowDialogData.policies.filter(policy => {
|
|
456
559
|
var _a, _b;
|
|
457
560
|
if (flowDialogData.apiType === 'PROXY') {
|
|
@@ -465,17 +568,18 @@ class GioPolicyStudioPoliciesCatalogDialogComponent {
|
|
|
465
568
|
this.selectedPolicy = policy;
|
|
466
569
|
}
|
|
467
570
|
onAddPolicy() {
|
|
468
|
-
|
|
571
|
+
var _a, _b;
|
|
572
|
+
this.dialogRef.close(Object.assign(Object.assign({}, this.stepToAdd), { name: (_a = this.selectedPolicy) === null || _a === void 0 ? void 0 : _a.name, enabled: true, policy: (_b = this.selectedPolicy) === null || _b === void 0 ? void 0 : _b.id }));
|
|
469
573
|
}
|
|
470
574
|
onGoBack() {
|
|
471
575
|
this.selectedPolicy = undefined;
|
|
472
576
|
}
|
|
473
577
|
}
|
|
474
578
|
GioPolicyStudioPoliciesCatalogDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
475
|
-
GioPolicyStudioPoliciesCatalogDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioPoliciesCatalogDialogComponent, selector: "gio-ps-policies-catalog-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Policies for <span class=\"title__phase\">{{ executionPhaseLabel }}</span> phase\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"!selectedPolicy\" class=\"policiesCatalog\">\n <div *ngFor=\"let policy of policies\" class=\"policiesCatalog__policy\">\n <div class=\"policiesCatalog__policy__head\">\n <mat-icon class=\"policiesCatalog__policy__head__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"policy.name\" class=\"policiesCatalog__policy__head__name\">{{ policy.name }}</span>\n </div>\n\n <div *ngIf=\"policy.description\" class=\"policiesCatalog__policy__description\">{{ policy.description }}</div>\n\n <button class=\"policiesCatalog__policy__selectBtn\" mat-stroked-button role=\"dialog\" (click)=\"onSelectPolicy(policy)\">Select</button>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-content *ngIf=\"selectedPolicy\" class=\"policyForm\">\n <button class=\"policyForm__goBackBtn\" mat-stroked-button (click)=\"onGoBack()\">\n <mat-icon svgIcon=\"gio:arrow-left\"></mat-icon>\n Go back\n </button>\n\n <div class=\"policyForm__info\">\n <div class=\"policyForm__info__head\">\n <mat-icon class=\"policyForm__info__head__icon\" [svgIcon]=\"selectedPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"selectedPolicy.name\" class=\"policyForm__info__head__name\">{{ selectedPolicy.name }}</span>\n </div>\n\n <div *ngIf=\"selectedPolicy.description\" class=\"policyForm__info__description\">{{ selectedPolicy.description }}</div>\n </div>\n\n <gio-ps-
|
|
579
|
+
GioPolicyStudioPoliciesCatalogDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioPoliciesCatalogDialogComponent, selector: "gio-ps-policies-catalog-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Policies for <span class=\"title__phase\">{{ executionPhaseLabel }}</span> phase\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"!selectedPolicy\" class=\"policiesCatalog\">\n <div *ngFor=\"let policy of policies\" class=\"policiesCatalog__policy\">\n <div class=\"policiesCatalog__policy__head\">\n <mat-icon class=\"policiesCatalog__policy__head__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"policy.name\" class=\"policiesCatalog__policy__head__name\">{{ policy.name }}</span>\n </div>\n\n <div *ngIf=\"policy.description\" class=\"policiesCatalog__policy__description\">{{ policy.description }}</div>\n\n <button class=\"policiesCatalog__policy__selectBtn\" mat-stroked-button role=\"dialog\" (click)=\"onSelectPolicy(policy)\">Select</button>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-content *ngIf=\"selectedPolicy\" class=\"policyForm\">\n <button class=\"policyForm__goBackBtn\" mat-stroked-button (click)=\"onGoBack()\">\n <mat-icon svgIcon=\"gio:arrow-left\"></mat-icon>\n Go back\n </button>\n\n <div class=\"policyForm__info\">\n <div class=\"policyForm__info__head\">\n <mat-icon class=\"policyForm__info__head__icon\" [svgIcon]=\"selectedPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"selectedPolicy.name\" class=\"policyForm__info__head__name\">{{ selectedPolicy.name }}</span>\n </div>\n\n <div *ngIf=\"selectedPolicy.description\" class=\"policyForm__info__description\">{{ selectedPolicy.description }}</div>\n </div>\n\n <gio-ps-step-form [policy]=\"selectedPolicy\" [(step)]=\"stepToAdd\" (isValid)=\"isValid = $event\"></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"\">Cancel</button>\n <button\n *ngIf=\"selectedPolicy\"\n class=\"actions__addBtn\"\n color=\"primary\"\n mat-stroked-button\n role=\"dialog\"\n [disabled]=\"!isValid\"\n (click)=\"onAddPolicy()\"\n >\n Add policy\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.policiesCatalog{--grid-layout-gap: 16px;--grid-column-count: 4;--grid-item-min-width: 200px;--gap-count: calc(var(--grid-column-count) - 1);--total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));--grid-item-max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));display:grid;grid-gap:var(--grid-layout-gap);grid-template-columns:repeat(auto-fill,minmax(max(var(--grid-item-min-width),var(--grid-item-max-width)),1fr))}.policiesCatalog__policy{display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:16px;border:1px solid #d3d5dc;border-radius:8px;gap:4px}.policiesCatalog__policy__head{display:flex;max-width:100%;align-items:center}.policiesCatalog__policy__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policiesCatalog__policy__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.policiesCatalog__policy__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.policiesCatalog__policy__description:empty{display:none}.policiesCatalog__policy__selectBtn{margin-top:8px}.policyForm__goBackBtn{margin:16px 0}.policyForm__info{display:flex;max-width:100%;flex-direction:column;align-items:flex-start;padding-bottom:16px;gap:4px}.policyForm__info__head{display:flex;align-items:center}.policyForm__info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policyForm__info__head__name{flex:1 1 auto}.policyForm__info__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: ["step", "policy"], outputs: ["stepChange", "isValid"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
476
580
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, decorators: [{
|
|
477
581
|
type: Component,
|
|
478
|
-
args: [{ selector: 'gio-ps-policies-catalog-dialog', template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Policies for <span class=\"title__phase\">{{ executionPhaseLabel }}</span> phase\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"!selectedPolicy\" class=\"policiesCatalog\">\n <div *ngFor=\"let policy of policies\" class=\"policiesCatalog__policy\">\n <div class=\"policiesCatalog__policy__head\">\n <mat-icon class=\"policiesCatalog__policy__head__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"policy.name\" class=\"policiesCatalog__policy__head__name\">{{ policy.name }}</span>\n </div>\n\n <div *ngIf=\"policy.description\" class=\"policiesCatalog__policy__description\">{{ policy.description }}</div>\n\n <button class=\"policiesCatalog__policy__selectBtn\" mat-stroked-button role=\"dialog\" (click)=\"onSelectPolicy(policy)\">Select</button>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-content *ngIf=\"selectedPolicy\" class=\"policyForm\">\n <button class=\"policyForm__goBackBtn\" mat-stroked-button (click)=\"onGoBack()\">\n <mat-icon svgIcon=\"gio:arrow-left\"></mat-icon>\n Go back\n </button>\n\n <div class=\"policyForm__info\">\n <div class=\"policyForm__info__head\">\n <mat-icon class=\"policyForm__info__head__icon\" [svgIcon]=\"selectedPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"selectedPolicy.name\" class=\"policyForm__info__head__name\">{{ selectedPolicy.name }}</span>\n </div>\n\n <div *ngIf=\"selectedPolicy.description\" class=\"policyForm__info__description\">{{ selectedPolicy.description }}</div>\n </div>\n\n <gio-ps-
|
|
582
|
+
args: [{ selector: 'gio-ps-policies-catalog-dialog', template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Policies for <span class=\"title__phase\">{{ executionPhaseLabel }}</span> phase\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"!selectedPolicy\" class=\"policiesCatalog\">\n <div *ngFor=\"let policy of policies\" class=\"policiesCatalog__policy\">\n <div class=\"policiesCatalog__policy__head\">\n <mat-icon class=\"policiesCatalog__policy__head__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"policy.name\" class=\"policiesCatalog__policy__head__name\">{{ policy.name }}</span>\n </div>\n\n <div *ngIf=\"policy.description\" class=\"policiesCatalog__policy__description\">{{ policy.description }}</div>\n\n <button class=\"policiesCatalog__policy__selectBtn\" mat-stroked-button role=\"dialog\" (click)=\"onSelectPolicy(policy)\">Select</button>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-content *ngIf=\"selectedPolicy\" class=\"policyForm\">\n <button class=\"policyForm__goBackBtn\" mat-stroked-button (click)=\"onGoBack()\">\n <mat-icon svgIcon=\"gio:arrow-left\"></mat-icon>\n Go back\n </button>\n\n <div class=\"policyForm__info\">\n <div class=\"policyForm__info__head\">\n <mat-icon class=\"policyForm__info__head__icon\" [svgIcon]=\"selectedPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"selectedPolicy.name\" class=\"policyForm__info__head__name\">{{ selectedPolicy.name }}</span>\n </div>\n\n <div *ngIf=\"selectedPolicy.description\" class=\"policyForm__info__description\">{{ selectedPolicy.description }}</div>\n </div>\n\n <gio-ps-step-form [policy]=\"selectedPolicy\" [(step)]=\"stepToAdd\" (isValid)=\"isValid = $event\"></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"\">Cancel</button>\n <button\n *ngIf=\"selectedPolicy\"\n class=\"actions__addBtn\"\n color=\"primary\"\n mat-stroked-button\n role=\"dialog\"\n [disabled]=\"!isValid\"\n (click)=\"onAddPolicy()\"\n >\n Add policy\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.policiesCatalog{--grid-layout-gap: 16px;--grid-column-count: 4;--grid-item-min-width: 200px;--gap-count: calc(var(--grid-column-count) - 1);--total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));--grid-item-max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));display:grid;grid-gap:var(--grid-layout-gap);grid-template-columns:repeat(auto-fill,minmax(max(var(--grid-item-min-width),var(--grid-item-max-width)),1fr))}.policiesCatalog__policy{display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:16px;border:1px solid #d3d5dc;border-radius:8px;gap:4px}.policiesCatalog__policy__head{display:flex;max-width:100%;align-items:center}.policiesCatalog__policy__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policiesCatalog__policy__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.policiesCatalog__policy__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.policiesCatalog__policy__description:empty{display:none}.policiesCatalog__policy__selectBtn{margin-top:8px}.policyForm__goBackBtn{margin:16px 0}.policyForm__info{display:flex;max-width:100%;flex-direction:column;align-items:flex-start;padding-bottom:16px;gap:4px}.policyForm__info__head{display:flex;align-items:center}.policyForm__info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policyForm__info__head__name{flex:1 1 auto}.policyForm__info__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"] }]
|
|
479
583
|
}], ctorParameters: function () {
|
|
480
584
|
return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
481
585
|
type: Inject,
|
|
@@ -498,21 +602,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
498
602
|
* See the License for the specific language governing permissions and
|
|
499
603
|
* limitations under the License.
|
|
500
604
|
*/
|
|
501
|
-
class
|
|
605
|
+
class GioPolicyStudioStepEditDialogComponent {
|
|
502
606
|
constructor(dialogRef, flowDialogData) {
|
|
503
607
|
this.dialogRef = dialogRef;
|
|
608
|
+
this.isValid = false;
|
|
504
609
|
this.policy = flowDialogData.policy;
|
|
505
610
|
this.step = flowDialogData.step;
|
|
506
611
|
}
|
|
507
612
|
onSave() {
|
|
508
|
-
this.dialogRef.close();
|
|
613
|
+
this.dialogRef.close(Object.assign({}, this.step));
|
|
509
614
|
}
|
|
510
615
|
}
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type:
|
|
616
|
+
GioPolicyStudioStepEditDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioStepEditDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
617
|
+
GioPolicyStudioStepEditDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioStepEditDialogComponent, selector: "gio-ps-step-edit-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n <mat-icon class=\"title__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"title__name\">{{ step.name }}</span>\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n\n <div class=\"title__description\">\n {{ policy.description }}\n </div>\n</h2>\n\n<mat-dialog-content class=\"content\">\n <gio-ps-step-form [policy]=\"policy\" [(step)]=\"step\" (isValid)=\"isValid = $event\"></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSave()\" [disabled]=\"!isValid\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__icon{margin-right:8px}.title__closeBtn{top:-20px;right:-20px;float:right}.title__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"], components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: ["step", "policy"], outputs: ["stepChange", "isValid"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
618
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioStepEditDialogComponent, decorators: [{
|
|
514
619
|
type: Component,
|
|
515
|
-
args: [{ selector: 'gio-ps-
|
|
620
|
+
args: [{ selector: 'gio-ps-step-edit-dialog', template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n <mat-icon class=\"title__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"title__name\">{{ step.name }}</span>\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n\n <div class=\"title__description\">\n {{ policy.description }}\n </div>\n</h2>\n\n<mat-dialog-content class=\"content\">\n <gio-ps-step-form [policy]=\"policy\" [(step)]=\"step\" (isValid)=\"isValid = $event\"></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSave()\" [disabled]=\"!isValid\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__icon{margin-right:8px}.title__closeBtn{top:-20px;right:-20px;float:right}.title__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"] }]
|
|
516
621
|
}], ctorParameters: function () {
|
|
517
622
|
return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
518
623
|
type: Inject,
|
|
@@ -520,161 +625,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
520
625
|
}] }];
|
|
521
626
|
} });
|
|
522
627
|
|
|
523
|
-
/*
|
|
524
|
-
* Copyright (C) 2023 The Gravitee team (http://gravitee.io)
|
|
525
|
-
*
|
|
526
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
527
|
-
* you may not use this file except in compliance with the License.
|
|
528
|
-
* You may obtain a copy of the License at
|
|
529
|
-
*
|
|
530
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
531
|
-
*
|
|
532
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
533
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
534
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
535
|
-
* See the License for the specific language governing permissions and
|
|
536
|
-
* limitations under the License.
|
|
537
|
-
*/
|
|
538
|
-
function fakeChannelFlow(modifier) {
|
|
539
|
-
const channelSelector = {
|
|
540
|
-
type: 'CHANNEL',
|
|
541
|
-
channel: 'channel',
|
|
542
|
-
channelOperator: 'EQUALS',
|
|
543
|
-
entrypoints: ['webhook'],
|
|
544
|
-
operations: ['PUBLISH'],
|
|
545
|
-
};
|
|
546
|
-
const base = {
|
|
547
|
-
name: 'Flow name',
|
|
548
|
-
selectors: [channelSelector],
|
|
549
|
-
request: [],
|
|
550
|
-
response: [],
|
|
551
|
-
subscribe: [],
|
|
552
|
-
publish: [],
|
|
553
|
-
enabled: true,
|
|
554
|
-
};
|
|
555
|
-
if (isFunction(modifier)) {
|
|
556
|
-
return modifier(base);
|
|
557
|
-
}
|
|
558
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
559
|
-
}
|
|
560
|
-
function fakeHttpFlow(modifier) {
|
|
561
|
-
const httpSelector = {
|
|
562
|
-
type: 'HTTP',
|
|
563
|
-
path: '/path',
|
|
564
|
-
pathOperator: 'EQUALS',
|
|
565
|
-
methods: ['GET'],
|
|
566
|
-
};
|
|
567
|
-
const base = {
|
|
568
|
-
name: 'Flow name',
|
|
569
|
-
selectors: [httpSelector],
|
|
570
|
-
request: [],
|
|
571
|
-
response: [],
|
|
572
|
-
subscribe: [],
|
|
573
|
-
publish: [],
|
|
574
|
-
enabled: true,
|
|
575
|
-
};
|
|
576
|
-
if (isFunction(modifier)) {
|
|
577
|
-
return modifier(base);
|
|
578
|
-
}
|
|
579
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
/*
|
|
583
|
-
* Copyright (C) 2023 The Gravitee team (http://gravitee.io)
|
|
584
|
-
*
|
|
585
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
586
|
-
* you may not use this file except in compliance with the License.
|
|
587
|
-
* You may obtain a copy of the License at
|
|
588
|
-
*
|
|
589
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
590
|
-
*
|
|
591
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
592
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
593
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
594
|
-
* See the License for the specific language governing permissions and
|
|
595
|
-
* limitations under the License.
|
|
596
|
-
*/
|
|
597
|
-
function fakeBestMatchFlowExecution(modifier) {
|
|
598
|
-
const base = {
|
|
599
|
-
mode: 'BEST_MATCH',
|
|
600
|
-
matchRequired: false,
|
|
601
|
-
};
|
|
602
|
-
if (isFunction(modifier)) {
|
|
603
|
-
return modifier(base);
|
|
604
|
-
}
|
|
605
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
606
|
-
}
|
|
607
|
-
function fakeDefaultFlowExecution(modifier) {
|
|
608
|
-
const base = {
|
|
609
|
-
mode: 'DEFAULT',
|
|
610
|
-
matchRequired: false,
|
|
611
|
-
};
|
|
612
|
-
if (isFunction(modifier)) {
|
|
613
|
-
return modifier(base);
|
|
614
|
-
}
|
|
615
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
/*
|
|
619
|
-
* Copyright (C) 2023 The Gravitee team (http://gravitee.io)
|
|
620
|
-
*
|
|
621
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
622
|
-
* you may not use this file except in compliance with the License.
|
|
623
|
-
* You may obtain a copy of the License at
|
|
624
|
-
*
|
|
625
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
626
|
-
*
|
|
627
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
628
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
629
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
630
|
-
* See the License for the specific language governing permissions and
|
|
631
|
-
* limitations under the License.
|
|
632
|
-
*/
|
|
633
|
-
function fakeMockPolicyStep(modifier) {
|
|
634
|
-
const base = {
|
|
635
|
-
name: 'Mock Policy',
|
|
636
|
-
description: 'Mock Policy description',
|
|
637
|
-
enabled: true,
|
|
638
|
-
policy: 'mock',
|
|
639
|
-
};
|
|
640
|
-
if (isFunction(modifier)) {
|
|
641
|
-
return modifier(base);
|
|
642
|
-
}
|
|
643
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
644
|
-
}
|
|
645
|
-
function fakeRateLimitStep(modifier) {
|
|
646
|
-
const base = {
|
|
647
|
-
name: 'Rate Limit',
|
|
648
|
-
description: 'Step description',
|
|
649
|
-
enabled: true,
|
|
650
|
-
policy: 'rate-limit',
|
|
651
|
-
configuration: {
|
|
652
|
-
rate: {
|
|
653
|
-
limit: 10,
|
|
654
|
-
periodTime: 1,
|
|
655
|
-
periodTimeUnit: 'MINUTES',
|
|
656
|
-
},
|
|
657
|
-
},
|
|
658
|
-
};
|
|
659
|
-
if (isFunction(modifier)) {
|
|
660
|
-
return modifier(base);
|
|
661
|
-
}
|
|
662
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
663
|
-
}
|
|
664
|
-
function fakeXmlToJsonStep(modifier) {
|
|
665
|
-
const base = {
|
|
666
|
-
name: 'XML to JSON',
|
|
667
|
-
description: 'XML to JSON',
|
|
668
|
-
enabled: true,
|
|
669
|
-
policy: 'xml-json',
|
|
670
|
-
configuration: {},
|
|
671
|
-
};
|
|
672
|
-
if (isFunction(modifier)) {
|
|
673
|
-
return modifier(base);
|
|
674
|
-
}
|
|
675
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
676
|
-
}
|
|
677
|
-
|
|
678
628
|
/*
|
|
679
629
|
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
680
630
|
*
|
|
@@ -690,355 +640,26 @@ function fakeXmlToJsonStep(modifier) {
|
|
|
690
640
|
* See the License for the specific language governing permissions and
|
|
691
641
|
* limitations under the License.
|
|
692
642
|
*/
|
|
693
|
-
|
|
694
|
-
/*
|
|
695
|
-
* Copyright (C) 2023 The Gravitee team (http://gravitee.io)
|
|
696
|
-
*
|
|
697
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
698
|
-
* you may not use this file except in compliance with the License.
|
|
699
|
-
* You may obtain a copy of the License at
|
|
700
|
-
*
|
|
701
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
702
|
-
*
|
|
703
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
704
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
705
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
706
|
-
* See the License for the specific language governing permissions and
|
|
707
|
-
* limitations under the License.
|
|
708
|
-
*/
|
|
709
|
-
function fakePlan(modifier) {
|
|
710
|
-
const base = {
|
|
711
|
-
id: 'plan-id',
|
|
712
|
-
name: 'Keyless plan',
|
|
713
|
-
flows: [],
|
|
714
|
-
};
|
|
715
|
-
if (isFunction(modifier)) {
|
|
716
|
-
return modifier(base);
|
|
717
|
-
}
|
|
718
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
719
|
-
}
|
|
720
|
-
|
|
721
|
-
/*
|
|
722
|
-
* Copyright (C) 2023 The Gravitee team (http://gravitee.io)
|
|
723
|
-
*
|
|
724
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
725
|
-
* you may not use this file except in compliance with the License.
|
|
726
|
-
* You may obtain a copy of the License at
|
|
727
|
-
*
|
|
728
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
729
|
-
*
|
|
730
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
731
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
732
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
733
|
-
* See the License for the specific language governing permissions and
|
|
734
|
-
* limitations under the License.
|
|
735
|
-
*/
|
|
736
|
-
|
|
737
|
-
/*
|
|
738
|
-
* Copyright (C) 2023 The Gravitee team (http://gravitee.io)
|
|
739
|
-
*
|
|
740
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
741
|
-
* you may not use this file except in compliance with the License.
|
|
742
|
-
* You may obtain a copy of the License at
|
|
743
|
-
*
|
|
744
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
745
|
-
*
|
|
746
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
747
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
748
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
749
|
-
* See the License for the specific language governing permissions and
|
|
750
|
-
* limitations under the License.
|
|
751
|
-
*/
|
|
752
|
-
// 09/06/2023 - All API V4 available policies.
|
|
753
|
-
const POLICIES_V4_UNREGISTERED_ICON = [
|
|
754
|
-
{
|
|
755
|
-
id: 'message-filtering',
|
|
756
|
-
name: 'Message Filtering',
|
|
757
|
-
description: 'Message Filtering Gravitee Policy',
|
|
758
|
-
category: 'others',
|
|
759
|
-
version: '1.1.1',
|
|
760
|
-
proxy: [],
|
|
761
|
-
message: ['MESSAGE_RESPONSE', 'MESSAGE_REQUEST'],
|
|
762
|
-
},
|
|
763
|
-
{
|
|
764
|
-
id: 'json-xml',
|
|
765
|
-
name: 'JSON to XML',
|
|
766
|
-
description: 'Description of the JSON to XML Transformation Gravitee Policy',
|
|
767
|
-
icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUxLjUsNjQuOTJBNi41Myw2LjUzLDAsMSwxLDU4LDU4LjM5LDYuNTMsNi41MywwLDAsMSw1MS41LDY0LjkyWm0wLTExLjM0YTQuODEsNC44MSwwLDEsMCw0LjgxLDQuODFBNC44MSw0LjgxLDAsMCwwLDUxLjUsNTMuNThaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjMuOCw3Ny4wOWE0LjgzLDQuODMsMCwxLDEsMy42OS03LjkyLDQuNzQsNC43NCwwLDAsMSwxLjEzLDMuMDlBNC44Myw0LjgzLDAsMCwxLDYzLjgsNzcuMDlabTAtNy45M2EzLjExLDMuMTEsMCwxLDAsMi4zOCwxLjEyQTMuMSwzLjEsMCwwLDAsNjMuOCw2OS4xNloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MS41LDQzLjY4YTQuODUsNC44NSwwLDAsMS00Ljc3LTQuMTQsNSw1LDAsMCwxLDAtLjY5LDQuODMsNC44MywwLDAsMSw5LjY1LDAsMy40NSwzLjQ1LDAsMCwxLS4wNy43NEE0LjgxLDQuODEsMCwwLDEsNTEuNSw0My42OFptMC03LjkzYTMuMSwzLjEsMCwwLDAtMy4xLDMuMSwzLjI1LDMuMjUsMCwwLDAsMCwuNDQsMy4xLDMuMSwwLDAsMCw2LjE0LDAsMi42NiwyLjY2LDAsMCwwLDAtLjQ1QTMuMTEsMy4xMSwwLDAsMCw1MS41LDM1Ljc1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTMzLjY0LDcwLjE1YTQuODMsNC44MywwLDAsMS0xLjM3LTkuNDYsNSw1LDAsMCwxLDEuMzctLjE5LDQuODIsNC44MiwwLDAsMSw0LjgyLDQuODIsNC44Nyw0Ljg3LDAsMCwxLTIuNzEsNC4zNUE0LjczLDQuNzMsMCwwLDEsMzMuNjQsNzAuMTVabTAtNy45M2EzLDMsMCwwLDAtLjg5LjEzLDMuMSwzLjEsMCwwLDAsLjg5LDYuMDhBMywzLDAsMCwwLDM1LDY4LjEyYTMuMTEsMy4xMSwwLDAsMC0xLjM1LTUuOVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zMi4xOCw1Ni4zNWgtLjEyYS44Ny44NywwLDAsMS0uNzMtMUEyMC40NywyMC40NywwLDAsMSw0Miw0MC4zM2EuODYuODYsMCwxLDEsLjgsMS41MkExOC43NywxOC43NywwLDAsMCwzMyw1NS42MS44Ni44NiwwLDAsMSwzMi4xOCw1Ni4zNVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MS41LDc4Ljc5YTIwLjE3LDIwLjE3LDAsMCwxLTEyLjI3LTQuMTEuODYuODYsMCwwLDEtLjE3LTEuMjEuODUuODUsMCwwLDEsMS4yLS4xNkExOC41MiwxOC41MiwwLDAsMCw1MS41LDc3LjA3LDE4LjIzLDE4LjIzLDAsMCwwLDU1LDc2LjczYS44Ny44NywwLDAsMSwuMzMsMS43QTIwLjg3LDIwLjg3LDAsMCwxLDUxLjUsNzguNzlaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNzAsNjUuNDJhLjg0Ljg0LDAsMCwxLS4yNywwLC44Ni44NiwwLDAsMS0uNTQtMS4wOSwxOC43MSwxOC43MSwwLDAsMC04LjU1LTIyLjE3Ljg2Ljg2LDAsMSwxLC44NS0xLjUsMjAuNDIsMjAuNDIsMCwwLDEsOS4zMywyNC4yMUEuODcuODcsMCwwLDEsNzAsNjUuNDJaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjkzIC00Ljk4KSI+WE1MIDx0c3BhbiBjbGFzcz0iY2xzLTQiIHg9IjI0LjcxIiB5PSIwIj50PC90c3Bhbj48dHNwYW4geD0iMjguNjEiIHk9IjAiPm8gSlNPTjwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=',
|
|
768
|
-
category: 'transformation',
|
|
769
|
-
version: '2.1.4',
|
|
770
|
-
proxy: ['REQUEST', 'RESPONSE'],
|
|
771
|
-
message: ['MESSAGE_RESPONSE', 'MESSAGE_REQUEST'],
|
|
772
|
-
},
|
|
773
|
-
{
|
|
774
|
-
id: 'avro-json',
|
|
775
|
-
name: 'Avro JSON Transformation',
|
|
776
|
-
description: 'Policy used to transform Avro to JSON',
|
|
777
|
-
icon: 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48cGF0aCBkPSJNMTcwLjkxNjY3MTgsMzAzLjU3MTYyNDhoLTYuMzQzNDE0M2wzLjY1OTI4NjUtMTUuNDk2MzM3OUwxNzAuOTE2NjcxOCwzMDMuNTcxNjI0OHogTTIxOC44NDU1ODExLDIxMy41OTI4ODAybC0zMy45MTM1NTksMjMuNTE3MjExOWMtMzEuMTk2MDQ0OS0zMC44NDg4NjE3LTgxLjI2NzUzMjMtMy4xMDUzNDY3LTE0NS4yNzcwNjkxLTMxLjk1NDgwMzVDOTMuMzc1MjM2NSwyMTcuOTY2ODQyNywxNjUuMjA1MDE3MSwxOTAuNDQzNjQ5MywyMTguODQ1NTgxMSwyMTMuNTkyODgwMnogTTQxLjUwNzQxMiwyMTYuMjQ4NTA0NmMzMS4zNTk3NTI3LDExLjY5MzY5NTEsNjEuODQwMjc0OCwxNi4xMzY4NDA4LDk0LjIyNzMyNTQsMTQuNjM3MDg1YzMuNTMyOTU5LDEuNTc2MjAyNCw2LjMzODQyNDcsNS4wMjUxMTYsNy45NDYzMDQzLDguMzEwNzc1OEM4My4yODA4MDc1LDI0NS4xMzg1MTkzLDU2LjEwNzQ5ODIsMjI3LjAzOTMzNzIsNDEuNTA3NDEyLDIxNi4yNDg1MDQ2eiBNNTUuMDY1NzczLDIzNS4wMzQ3MTM3YzI4Ljc4NDI0ODQsMTEuMDQ3NTc2OSw1NC44ODU4MDMyLDE3LjU3MjQ3OTIsOTIuMDUzNjQyMywxMS4wNTU2OTQ2YzAsMCw1LjUwOTgxMTQsNC40MzA5OTk4LDUuNjYxNjk3NCw2LjczMzYyNzNDMTAyLjgyODg1NzQsMjYyLjEzMjMyNDIsODMuMzU2MDU2MiwyNTQuMDE2NjkzMSw1NS4wNjU3NzMsMjM1LjAzNDcxMzd6IE0xNTQuNTg0ODU0MSwyNjAuNDQyOTYyNmMtMjcuMDAxNTMzNSwxNC40NTA5Mjc3LTYyLjQ3NzgxMzcsMTAuNTAxMDA3MS03MC42MjIxMDA4LTAuMzQ2MjUyNEMxMTMuMjc0MzQ1NCwyNjUuODk4Mjg0OSwxMzIuNDMzMDEzOSwyNjQuODczMzUyMSwxNTQuNTg0ODU0MSwyNjAuNDQyOTYyNnogTTQ3Mi4zNDUwMzE3LDIwNS4xNTUyODg3Yy02NC4wMDk1MjE1LDI4Ljg0OTQ1NjgtMTE0LjA4MDk5MzcsMS4xMDU5NDE4LTE0NS4yNzcwNjkxLDMxLjk1NDgwMzVsLTMzLjkxMzU0MzctMjMuNTE3MjExOUMzNDYuNzk0OTgyOSwxOTAuNDQzNjQ5Myw0MTguNjI0NzU1OSwyMTcuOTY2ODQyNyw0NzIuMzQ1MDMxNywyMDUuMTU1Mjg4N3ogTTM2OC4zMTg5Njk3LDIzOS4xOTYzNjU0YzEuNjA3ODQ5MS0zLjI4NTY1OTgsNC40MTMzMzAxLTYuNzM0NTczNCw3Ljk0NjI4OTEtOC4zMTA3NzU4YzMyLjM4NzA1NDQsMS40OTk3NTU5LDYyLjg2NzU4NDItMi45NDMzODk5LDk0LjIyNzMyNTQtMTQuNjM3MDg1QzQ1NS44OTI0ODY2LDIyNy4wMzkzMzcyLDQyOC43MTkxNzcyLDI0NS4xMzg1MTkzLDM2OC4zMTg5Njk3LDIzOS4xOTYzNjU0eiBNMzU5LjIxODkwMjYsMjUyLjgyNDAzNTZjMC4xNTE4NTU1LTIuMzAyNjI3Niw1LjY2MTY4MjEtNi43MzM2MjczLDUuNjYxNjgyMS02LjczMzYyNzNjMzcuMTY3ODQ2Nyw2LjUxNjc4NDcsNjMuMjY5NDA5Mi0wLjAwODExNzcsOTIuMDUzNjQ5OS0xMS4wNTU2OTQ2QzQyOC42NDM5NTE0LDI1NC4wMTY2OTMxLDQwOS4xNzExNDI2LDI2Mi4xMzIzMjQyLDM1OS4yMTg5MDI2LDI1Mi44MjQwMzU2eiBNNDI4LjAzNzIzMTQsMjYwLjA5NjcxMDJjLTguMTQ0MjU2NiwxMC44NDcyNTk1LTQzLjYyMDU0NDQsMTQuNzk3MTgwMi03MC42MjIwNzAzLDAuMzQ2MjUyNEMzNzkuNTY2OTg2MSwyNjQuODczMzUyMSwzOTguNzI1NjQ3LDI2NS44OTgyODQ5LDQyOC4wMzcyMzE0LDI2MC4wOTY3MTAyeiBNMTQ3LjIwMDUzMSwzMTguNDk3MjgzOUg5OC41OTU4NjMzbDYwLjEwMzI5NDQtNDAuMjE5MDI0N0wxNDcuMjAwNTMxLDMxOC40OTcyODM5eiBNMTYwLjQxNzU1NjgsMzE4LjY2MDQwMDRsMS4xMjUwNDU4LTQuOTUzMzY5MWgxMS45OTE0MjQ2bDAuOTgxMjE2NCw0Ljk1MzM2OTFIMTYwLjQxNzU1Njh6IE0xODguMzEzODU4LDMxOC43NzAxMTExbC0xNC40NjAwMjItNTAuNTgyNzYzN2wxOS4xNjM4NjQxLTEzLjIzNTI5MDVsMTkuNDQ1MDUzMSw2My44MTgwNTQySDE4OC4zMTM4NTh6IE0yMDQuNjQ3ODI3MSwyNDcuMjI4NDg1MWwzMC40NDY1NDg1LTIwLjYyOTgzN2wtMTYuNDUyNjY3Miw2Ny43NjY3MDg0TDIwNC42NDc4MjcxLDI0Ny4yMjg0ODUxeiBNMjUzLjc1OTAxNzksMzE4LjQ0MTA3MDZoLTI4LjU1NDUxOTdsMjUuMTYzNDIxNi0xMDEuOTY5OTcwN2wzLjM5MTA5OC0xLjg2NDYwODhWMzE4LjQ0MTA3MDZ6IE0yNjUuOTcwNTUwNSwyMzEuMjY5MzYzNGMyNi4xNTI5NTQxLDI0Ljg1Nzk1NTksMjkuMDIxODgxMSwzNi4yNTI5NzU1LDAsMzcuNDExNTc1M1YyMzEuMjY5MzYzNHogTTI2Ni4xMzUwNzA4LDMxOC42NjA0MDA0bDAuMDQ1NzE1My0zMi44NTA0NjM5bDIyLjc2ODY0NjIsMzIuODUwNDYzOUgyNjYuMTM1MDcwOHogTTMwMy4zNTQ2MTQzLDMxOC42NjA0NjE0bC0yNS44ODU0OTgtMzguNTU0MTM4MmMyNC44ODgwOTItNS43ODE1ODU3LDI5LjAzMjE5Ni0yMi4yNjQ4NjIxLDguMDk4Mjk3MS00Ny40MjAxODEzYzE1LjQyODk4NTYsMTAuNzMwODA0NCwzMS4yNjAxMzE4LDIwLjYwMjM3MTIsNDYuNTA2MjI1NiwzMS41NzA4NDY2Yy0yMS40MjgyMjI3LDguMjUxNzctMjguMzY2MDg4OSwzOS40MDI0MzUzLTIuOTI0ODk2Miw1NC40MDM0NzI5SDMwMy4zNTQ2MTQzeiBNMzI3LjU4Mzg2MjMsMjk5LjgyNDY0NmMtOS42NDE4MTUyLTE4Ljc4MDI0MjksMTYuNTM3MjkyNS0zNy4yMzYyNjcxLDIyLjQ3ODAyNzMtMTAuMzk1MDgwNkMzNTIuMDAyNTk0LDMwNS44NzY5MjI2LDMzNS41MjY3NjM5LDMxNS4xODQxNzM2LDMyNy41ODM4NjIzLDI5OS44MjQ2NDZ6IE00MTMuMjAzNjQzOCwzMTguMzg2MjMwNWgtNjcuNjM4NzMyOWMxMy4xMjM4NDAzLTYuMDkzNTk3NCwxOS45MjA3NzY0LTIwLjc5NjE3MzEsMTYuMDMyMTY1NS0zNC43MzM0MjlMNDEzLjIwMzY0MzgsMzE4LjM4NjIzMDV6IE0yMjguODQyMzYxNSwyMDcuNDAzODU0NGMtODIuMjkwMTE1NC0zOC4wNzIwNjczLTE3MC45NzQ3MTYyLDI0LjgzMTgzMjktMjI4LjgxMzU5ODYtMzEuMjg0NzljLTEuMDczMDQ5NywyMC41NTQ5NjIyLDI4LjE1MzU2NDUsMzkuOTczMjIwOCw0MC44NjkyNDc0LDU4LjI4NTQxNTZjNy4yNTAyNDAzLDEzLjEwNTU0NSwyMS43OTM3MzkzLDI1LjE5NTA5ODksMzQuNjYwMzI3OSwzMS4xMzIxMTA2YzguMTc5NjQ5NCwxNC4zNjc5NTA0LDE3LjczMDE4NjUsMTMuMDAwNzAxOSw0NS44NDgxMTQsMTMuNjc0MDExMmwtODMuMTc3MzY4Miw1Ni42NzAzMTg2aDQzNS44ODU5MjUzbC04My41MjE0ODQ0LTU2LjY3MDMxODZjMjguMTE3OTUwNC0wLjY3MzMwOTMsMzcuNjY4NDg3NSwwLjY5MzkzOTIsNDUuODQ4MTE0LTEzLjY3NDAxMTJjMTIuODY2NjA3Ny01LjkzNzAxMTcsMjcuNDEwMDk1Mi0xOC4wMjY1NjU2LDM0LjY2MDMzOTQtMzEuMTMyMTEwNmMxMi43MTU2Njc3LTE4LjMxMjE5NDgsNDEuOTQyMzIxOC0zNy43MzA0NTM1LDQwLjg2OTIzMjItNTguMjg1NDE1NmMtNTcuODM4ODY3Miw1Ni4xMTY2MjI5LTE0Ni40OTc2NTAxLTYuNzg3Mjc3Mi0yMjguNzg3NzgwOCwzMS4yODQ3OWwtMjcuMTc1OTMzOC0xOC4wNzk2NTA5TDIyOC44NDIzNjE1LDIwNy40MDM4NTQ0eiIvPjwvc3ZnPg==',
|
|
778
|
-
category: 'transformation',
|
|
779
|
-
version: '1.2.0-alpha.2',
|
|
780
|
-
proxy: ['REQUEST', 'RESPONSE'],
|
|
781
|
-
message: ['MESSAGE_RESPONSE', 'MESSAGE_REQUEST'],
|
|
782
|
-
},
|
|
783
|
-
{
|
|
784
|
-
id: 'jwt',
|
|
785
|
-
name: 'JSON Web Tokens',
|
|
786
|
-
description: 'Description of the JWT Gravitee Policy',
|
|
787
|
-
icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjAuMDNlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDEuNzksNjEuNjdhMTMuODIsMTMuODIsMCwxLDEsMTIuNTctOCwuODcuODcsMCwwLDEtMS4xNS40Mi44Ni44NiwwLDAsMS0uNDItMS4xNCwxMi4xMiwxMi4xMiwwLDEsMC0yLjQ0LDMuNDkuODYuODYsMCwxLDEsMS4yMiwxLjIyQTEzLjgsMTMuOCwwLDAsMSw0MS43OSw2MS42N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02OC4zMSw3OC44YTQuNCw0LjQsMCwwLDEtMy4xNC0xLjNMNTUuNiw2Ny45M2EuODYuODYsMCwxLDEsMS4yMi0xLjIybDkuNTcsOS41N2EyLjc3LDIuNzcsMCwwLDAsMy44NCwwLDIuNzIsMi43MiwwLDAsMCwwLTMuODNsLTkuNTctOS41OGEyLjc5LDIuNzksMCwwLDAtMy44NCwwLC44OC44OCwwLDAsMS0xLjIyLDBsLTUuMjUtNS4yNGEuODguODgsMCwwLDEsMC0xLjIyLjg2Ljg2LDAsMCwxLDEuMjIsMGw0LjcsNC43YTQuNDMsNC40MywwLDAsMSw1LjYuNTVsOS41OCw5LjU3YTQuNDQsNC40NCwwLDAsMS0zLjE0LDcuNTdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDYuMzYsNTMuMjdhLjg1Ljg1LDAsMCwxLS42MS0uMjVsLTkuMTQtOS4xM2EuODguODgsMCwwLDEsMC0xLjIyLjg2Ljg2LDAsMCwxLDEuMjIsMEw0Nyw1MS44QS44OC44OCwwLDAsMSw0Nyw1MywuODUuODUsMCwwLDEsNDYuMzYsNTMuMjdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzcuMjIsNTMuMjdhLjg1Ljg1LDAsMCwxLS42MS0uMjUuODguODgsMCwwLDEsMC0xLjIybDkuMTQtOS4xM2EuODYuODYsMCwwLDEsMS4yMiwwLC44OC44OCwwLDAsMSwwLDEuMjJMMzcuODMsNTNBLjg1Ljg1LDAsMCwxLDM3LjIyLDUzLjI3WiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPko8dHNwYW4gY2xhc3M9ImNscy00IiB4PSI0LjQ0IiB5PSIwIj5XPC90c3Bhbj48dHNwYW4geD0iMTQuOTkiIHk9IjAiPlQ8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+',
|
|
788
|
-
category: 'security',
|
|
789
|
-
version: '3.2.0',
|
|
790
|
-
proxy: ['REQUEST'],
|
|
791
|
-
message: ['REQUEST'],
|
|
792
|
-
},
|
|
793
|
-
{
|
|
794
|
-
id: 'key-less',
|
|
795
|
-
name: 'Keyless',
|
|
796
|
-
description: 'Description of the Keyless Security Gravitee Policy',
|
|
797
|
-
icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZpbGw6bm9uZTtzdHJva2U6I2ZmZjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MnB4O308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxNC4yNGE0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxNC4yNFoiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU3LjU2LDg4LjYzSDQzLjE1YTIuOSwyLjksMCwwLDEtMi45LTIuOVY3Ni42MmEyLjg5LDIuODksMCwwLDEsMi45LTIuODlINTcuNTZhMi44OSwyLjg5LDAsMCwxLDIuOSwyLjg5djkuMTFBMi45LDIuOSwwLDAsMSw1Ny41Niw4OC42M1pNNDMuMTUsNzYuMTRhLjQ4LjQ4LDAsMCwwLS40OS40OHY5LjExYS40OS40OSwwLDAsMCwuNDkuNDlINTcuNTZhLjQ5LjQ5LDAsMCwwLC40OS0uNDlWNzYuNjJhLjQ4LjQ4LDAsMCwwLS40OS0uNDhaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTAuMzUsNjMuNjJBNy41OCw3LjU4LDAsMCwwLDQyLjg5LDcwaDIuNDdhNS4xNSw1LjE1LDAsMCwxLDEwLjE1LDEuMjN2My43NGExLjIxLDEuMjEsMCwxLDAsMi40MSwwVjcxLjE5QTcuNTgsNy41OCwwLDAsMCw1MC4zNSw2My42MloiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yNi4xNiw0Ny40M2EyNS4yMiwyNS4yMiwwLDAsMSw0OC4zOS0uMzEiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0zMi4xMiw1Mi44YTE5LDE5LDAsMCwxLDM2LjQ3LS4yMyIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTM5LjM0LDU2LjY1YTExLDExLDAsMCwxLDIxLjE3LS4xNCIvPjwvZz48L3N2Zz4=',
|
|
798
|
-
category: 'security',
|
|
799
|
-
version: '2.2.0',
|
|
800
|
-
proxy: ['REQUEST'],
|
|
801
|
-
message: ['REQUEST'],
|
|
802
|
-
},
|
|
803
|
-
{
|
|
804
|
-
id: 'api-key',
|
|
805
|
-
name: 'Api Key',
|
|
806
|
-
description: 'Description of the ApiKey Gravitee Policy',
|
|
807
|
-
icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjBlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjcuMzMsNzguNjVIMzkuNzhBMi42MSwyLjYxLDAsMCwxLDM3LjE3LDc2VjcxLjg4YS44NC44NCwwLDAsMSwuMzYtLjcsNy4wNiw3LjA2LDAsMCwwLDItMi4yMS44NS44NSwwLDAsMSwuNzUtLjQzSDQyLjZMNDUsNjYuNzlhLjg2Ljg2LDAsMCwxLDEtLjA1bDIuNzIsMS42NCwyLjUzLTEuNjJhLjg2Ljg2LDAsMCwxLDEsMGwuNDkuMzhWNjIuNDZINDAuMjhhLjg2Ljg2LDAsMCwxLS43NS0uNDQsNi43Niw2Ljc2LDAsMCwwLTItMi4xOS44OC44OCwwLDAsMS0uMzYtLjcxVjU1YTIuNjIsMi42MiwwLDAsMSwyLjYxLTIuNjJINjcuMzNBMi42MywyLjYzLDAsMCwxLDcwLDU1Vjc2QTIuNjIsMi42MiwwLDAsMSw2Ny4zMyw3OC42NVpNMzguOSw3Mi4zMlY3NmEuODkuODksMCwwLDAsLjg4Ljg4SDY3LjMzYS44Ny44NywwLDAsMCwuODgtLjg4VjU1YS44OC44OCwwLDAsMC0uODgtLjg4SDM5Ljc4YS44OS44OSwwLDAsMC0uODguODh2My43MmE4LjYyLDguNjIsMCwwLDEsMS44NywySDUzLjU1YS44Ny44NywwLDAsMSwuODcuODdWNjlhLjg3Ljg3LDAsMCwxLS40OS43OC44Ni44NiwwLDAsMS0uOTEtLjFsLTEuNDEtMS4xMS0yLjQ2LDEuNTlhLjg3Ljg3LDAsMCwxLS45MiwwbC0yLjY5LTEuNjJMNDMuNCw3MC4xMWEuOTQuOTQsMCwwLDEtLjUyLjE2SDQwLjc3QTguNjksOC42OSwwLDAsMSwzOC45LDcyLjMyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTY1Ljg0LDU0LjA4SDYxLjQ3YS44Ny44NywwLDAsMS0uODctLjg3di01LjlhNyw3LDAsMCwwLTE0LjA4LDB2NS45YS44Ny44NywwLDAsMS0uODcuODdINDEuMjhhLjg3Ljg3LDAsMCwxLS44Ny0uODd2LTUuOWExMy4xNSwxMy4xNSwwLDEsMSwyNi4zLDB2NS45QS44Ny44NywwLDAsMSw2NS44NCw1NC4wOFptLTMuNS0xLjc0SDY1di01YTExLjQxLDExLjQxLDAsMSwwLTIyLjgyLDB2NWgyLjYzdi01YTguNzgsOC43OCwwLDAsMSwxNy41NiwwWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTMxLjcxLDY5YTMuNTEsMy41MSwwLDEsMSwzLjUxLTMuNTFBMy41MSwzLjUxLDAsMCwxLDMxLjcxLDY5Wm0wLTUuMjlhMS43OCwxLjc4LDAsMSwwLDEuNzcsMS43OEExLjc4LDEuNzgsMCwwLDAsMzEuNzEsNjMuNzJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzMuNDgsNzQuMjJhOC43Miw4LjcyLDAsMSwxLDUuMDYtMTUuODEsOC41OSw4LjU5LDAsMCwxLDIuMjMsMi4zMUg1My41NWEuODcuODcsMCwwLDEsLjg3Ljg3VjY5YS44Ny44NywwLDAsMS0uNDkuNzguODYuODYsMCwwLDEtLjkxLS4xbC0xLjQxLTEuMTEtMi40NiwxLjU5YS44Ny44NywwLDAsMS0uOTIsMGwtMi42OS0xLjYyTDQzLjQsNzAuMTFhLjk0Ljk0LDAsMCwxLS41Mi4xNkg0MC43N2E4Ljc1LDguNzUsMCwwLDEtNy4yOSw0Wm0wLTE1LjY5YTcsNywwLDEsMCw0LjA1LDEyLjY1LDcuMDYsNy4wNiwwLDAsMCwyLTIuMjEuODUuODUsMCwwLDEsLjc1LS40M0g0Mi42TDQ1LDY2Ljc5YS44Ni44NiwwLDAsMSwxLS4wNWwyLjcyLDEuNjQsMi41My0xLjYyYS44Ni44NiwwLDAsMSwxLDBsLjQ5LjM4VjYyLjQ2SDQwLjI4YS44Ni44NiwwLDAsMS0uNzUtLjQ0LDYuNzYsNi43NiwwLDAsMC0yLTIuMTlBNi45Myw2LjkzLDAsMCwwLDMzLjQ4LDU4LjUzWk0zMS43MSw2OWEzLjUxLDMuNTEsMCwxLDEsMy41MS0zLjUxQTMuNTEsMy41MSwwLDAsMSwzMS43MSw2OVptMC01LjI5YTEuNzgsMS43OCwwLDEsMCwxLjc3LDEuNzhBMS43OCwxLjc4LDAsMCwwLDMxLjcxLDYzLjcyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTMxLjcxLDY5YTMuNTEsMy41MSwwLDEsMSwzLjUxLTMuNTFBMy41MSwzLjUxLDAsMCwxLDMxLjcxLDY5Wm0wLTUuMjlhMS43OCwxLjc4LDAsMSwwLDEuNzcsMS43OEExLjc4LDEuNzgsMCwwLDAsMzEuNzEsNjMuNzJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTMuNTYsNzMuNjlhLjg3Ljg3LDAsMCwxLS44Ny0uODdWNjlhLjg3Ljg3LDAsMCwxLDEuNzQsMHYzLjg1QS44Ny44NywwLDAsMSw1My41Niw3My42OVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01My41Niw2Mi4zN2EuODcuODcsMCwwLDEtLjg3LS44N1Y1Ny42NWEuODcuODcsMCwwLDEsMS43NCwwVjYxLjVBLjg3Ljg3LDAsMCwxLDUzLjU2LDYyLjM3WiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPjx0c3BhbiBjbGFzcz0iY2xzLTQiPkE8L3RzcGFuPjx0c3BhbiB4PSI3LjMxIiB5PSIwIj5waSBLZXk8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+',
|
|
808
|
-
category: 'security',
|
|
809
|
-
version: '3.2.1',
|
|
810
|
-
proxy: ['REQUEST'],
|
|
811
|
-
message: ['REQUEST'],
|
|
812
|
-
},
|
|
813
|
-
{
|
|
814
|
-
id: 'oauth2',
|
|
815
|
-
name: 'OAuth2',
|
|
816
|
-
description: 'Description of the OAuth2 Gravitee Policy',
|
|
817
|
-
icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzowLjAxZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtN3tsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6MC4wMWVtO30uY2xzLTl7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMHtsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTExe2xldHRlci1zcGFjaW5nOi0wLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjE5LDMzLjc1YzUuOCwwLDYuNTUuNTMsOC4zNiw2UTYzLjg5LDU1Ljg4LDY5LjIxLDcyYy45MywyLjgxLjA3LDUuMjUtMi4wOCw2LjM4LTIuODgsMS41MS01Ljg3LjMxLTcuMDgtMi45NC0uNzktMi4xMi0xLjMxLTQuMzUtMi4yMy02LjQxYTMuMjksMy4yOSwwLDAsMC0yLjI0LTEuNzcsOTIuMyw5Mi4zLDAsMCwwLTEwLjUyLDAsMy4yNywzLjI3LDAsMCwwLTIuMTksMS44Yy0uODUsMi0xLjMyLDQuMTMtMiw2LjE4LTEuMDYsMy0zLjQ3LDQuMzItNi4xNywzLjQ5LTIuODctLjg4LTQuMTktMy4zNy0zLjIyLTYuNXE1LTE2LjExLDEwLjEyLTMyLjE3QzQzLjQsMzQuMjcsNDQuMTIsMzMuNzUsNTAuMTksMzMuNzVaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkyLjQ1IC00Ljk4KSI+T3BlbklEIDx0c3BhbiBjbGFzcz0iY2xzLTQiIHg9IjQxLjE3IiB5PSIwIj5DPC90c3Bhbj48dHNwYW4geD0iNDgiIHk9IjAiPm9ubmU8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjczLjkyIiB5PSIwIj5jPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSI3OS40NSIgeT0iMCI+dCAtIDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iOTIuMTkiIHk9IjAiPlU8L3RzcGFuPjx0c3BhbiB4PSI5OS44OSIgeT0iMCI+c2VyPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy04IiB4PSIxMTQuNTciIHk9IjAiPkk8L3RzcGFuPjx0c3BhbiB4PSIxMTcuNTYiIHk9IjAiPm48L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTkiIHg9IjEyNC4yMiIgeT0iMCI+ZjwvdHNwYW4+PHRzcGFuIHg9IjEyNy41NyIgeT0iMCI+bzwvdHNwYW4+PC90ZXh0Pjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy0xMCI+TzwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTEiIHg9IjguMSIgeT0iMCI+QTwvdHNwYW4+PHRzcGFuIHg9IjE1LjMiIHk9IjAiPnV0aDI8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+',
|
|
818
|
-
category: 'security',
|
|
819
|
-
version: '2.2.0',
|
|
820
|
-
proxy: ['REQUEST'],
|
|
821
|
-
message: ['REQUEST'],
|
|
822
|
-
},
|
|
823
|
-
{
|
|
824
|
-
id: 'json-to-json',
|
|
825
|
-
name: 'JSON to JSON Transformation',
|
|
826
|
-
description: 'Description of the JSON to JSON Transformation Gravitee Policy',
|
|
827
|
-
icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYzLjgsNzcuMDlhNC44Myw0LjgzLDAsMSwxLDMuNjktNy45Miw0Ljc0LDQuNzQsMCwwLDEsMS4xMywzLjA5QTQuODMsNC44MywwLDAsMSw2My44LDc3LjA5Wm0wLTcuOTNhMy4xMSwzLjExLDAsMSwwLDIuMzgsMS4xMkEzLjEsMy4xLDAsMCwwLDYzLjgsNjkuMTZaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTEuNSw0My42OGE0Ljg1LDQuODUsMCwwLDEtNC43Ny00LjE0LDUsNSwwLDAsMSwwLS42OSw0LjgzLDQuODMsMCwwLDEsOS42NSwwLDMuNDUsMy40NSwwLDAsMS0uMDcuNzRBNC44MSw0LjgxLDAsMCwxLDUxLjUsNDMuNjhabTAtNy45M2EzLjEsMy4xLDAsMCwwLTMuMSwzLjEsMy4yNSwzLjI1LDAsMCwwLDAsLjQ0LDMuMSwzLjEsMCwwLDAsNi4xNCwwLDIuNjYsMi42NiwwLDAsMCwwLS40NUEzLjExLDMuMTEsMCwwLDAsNTEuNSwzNS43NVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zMy42NCw3MC4xNWE0LjgzLDQuODMsMCwwLDEtMS4zNy05LjQ2LDUsNSwwLDAsMSwxLjM3LS4xOSw0LjgyLDQuODIsMCwwLDEsNC44Miw0LjgyLDQuODcsNC44NywwLDAsMS0yLjcxLDQuMzVBNC43Myw0LjczLDAsMCwxLDMzLjY0LDcwLjE1Wm0wLTcuOTNhMywzLDAsMCwwLS44OS4xMywzLjEsMy4xLDAsMCwwLC44OSw2LjA4QTMsMywwLDAsMCwzNSw2OC4xMmEzLjExLDMuMTEsMCwwLDAtMS4zNS01LjlaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzIuMTgsNTYuMzVoLS4xMmEuODcuODcsMCwwLDEtLjczLTFBMjAuNDcsMjAuNDcsMCwwLDEsNDIsNDAuMzNhLjg2Ljg2LDAsMSwxLC44LDEuNTJBMTguNzcsMTguNzcsMCwwLDAsMzMsNTUuNjEuODYuODYsMCwwLDEsMzIuMTgsNTYuMzVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTEuNSw3OC43OWEyMC4xNywyMC4xNywwLDAsMS0xMi4yNy00LjExLjg2Ljg2LDAsMCwxLS4xNy0xLjIxLjg1Ljg1LDAsMCwxLDEuMi0uMTZBMTguNTIsMTguNTIsMCwwLDAsNTEuNSw3Ny4wNywxOC4yMywxOC4yMywwLDAsMCw1NSw3Ni43M2EuODcuODcsMCwwLDEsLjMzLDEuN0EyMC44NywyMC44NywwLDAsMSw1MS41LDc4Ljc5WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTcwLDY1LjQyYS44NC44NCwwLDAsMS0uMjcsMCwuODYuODYsMCwwLDEtLjU0LTEuMDksMTguNzEsMTguNzEsMCwwLDAtOC41NS0yMi4xNy44Ni44NiwwLDEsMSwuODUtMS41LDIwLjQyLDIwLjQyLDAsMCwxLDkuMzMsMjQuMjFBLjg3Ljg3LDAsMCwxLDcwLDY1LjQyWiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPkpTT04gPHRzcGFuIGNsYXNzPSJjbHMtNCIgeD0iMjkuMDYiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiB4PSIzMi45NiIgeT0iMCI+byBKU09OPC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==',
|
|
828
|
-
category: 'transformation',
|
|
829
|
-
version: '2.1.0',
|
|
830
|
-
proxy: ['REQUEST', 'RESPONSE'],
|
|
831
|
-
message: ['MESSAGE_RESPONSE', 'MESSAGE_REQUEST'],
|
|
832
|
-
},
|
|
833
|
-
];
|
|
834
|
-
function fakeTestPolicy(modifier) {
|
|
835
|
-
const base = {
|
|
836
|
-
id: 'test-policy',
|
|
837
|
-
name: 'Policy to test UI',
|
|
838
|
-
icon: 'gio:gift',
|
|
839
|
-
proxy: ['REQUEST', 'RESPONSE'],
|
|
840
|
-
message: ['REQUEST', 'RESPONSE', 'MESSAGE_RESPONSE', 'MESSAGE_REQUEST'],
|
|
841
|
-
};
|
|
842
|
-
if (isFunction(modifier)) {
|
|
843
|
-
return modifier(base);
|
|
844
|
-
}
|
|
845
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
846
|
-
}
|
|
847
|
-
function fakeAllPolicies() {
|
|
848
|
-
return [
|
|
849
|
-
fakeTestPolicy(),
|
|
850
|
-
fakeTestPolicy({
|
|
851
|
-
name: 'Test policy - Witout icon',
|
|
852
|
-
icon: undefined,
|
|
853
|
-
}),
|
|
854
|
-
fakeTestPolicy({
|
|
855
|
-
name: 'Test policy - With very long name to test overflow. Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
|
|
856
|
-
description: 'Test policy description - With very long name to test overflow. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis sem at nibh elementum imperdiet.',
|
|
857
|
-
}),
|
|
858
|
-
...POLICIES_V4_UNREGISTERED_ICON.map(policy => (Object.assign(Object.assign({}, policy), (policy.icon ? { icon: `gio-literal:${policy.id}` } : {})))),
|
|
859
|
-
];
|
|
860
|
-
}
|
|
861
|
-
|
|
862
|
-
/*
|
|
863
|
-
* Copyright (C) 2023 The Gravitee team (http://gravitee.io)
|
|
864
|
-
*
|
|
865
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
866
|
-
* you may not use this file except in compliance with the License.
|
|
867
|
-
* You may obtain a copy of the License at
|
|
868
|
-
*
|
|
869
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
870
|
-
*
|
|
871
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
872
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
873
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
874
|
-
* See the License for the specific language governing permissions and
|
|
875
|
-
* limitations under the License.
|
|
876
|
-
*/
|
|
877
|
-
|
|
878
|
-
/*
|
|
879
|
-
* Copyright (C) 2023 The Gravitee team (http://gravitee.io)
|
|
880
|
-
*
|
|
881
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
882
|
-
* you may not use this file except in compliance with the License.
|
|
883
|
-
* You may obtain a copy of the License at
|
|
884
|
-
*
|
|
885
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
886
|
-
*
|
|
887
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
888
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
889
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
890
|
-
* See the License for the specific language governing permissions and
|
|
891
|
-
* limitations under the License.
|
|
892
|
-
*/
|
|
893
|
-
function fakeSSEMessageEntrypoint(modifier) {
|
|
894
|
-
const base = {
|
|
895
|
-
type: 'sse',
|
|
896
|
-
name: 'Server-Sent Events',
|
|
897
|
-
supportedModes: ['SUBSCRIBE'],
|
|
898
|
-
icon: 'gio:sse',
|
|
899
|
-
};
|
|
900
|
-
if (isFunction(modifier)) {
|
|
901
|
-
return modifier(base);
|
|
902
|
-
}
|
|
903
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
904
|
-
}
|
|
905
|
-
function fakeWebsocketMessageEntrypoint(modifier) {
|
|
906
|
-
const base = {
|
|
907
|
-
type: 'websocket',
|
|
908
|
-
name: 'Websocket',
|
|
909
|
-
supportedModes: ['PUBLISH', 'SUBSCRIBE'],
|
|
910
|
-
icon: 'gio:websocket',
|
|
911
|
-
};
|
|
912
|
-
if (isFunction(modifier)) {
|
|
913
|
-
return modifier(base);
|
|
914
|
-
}
|
|
915
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
916
|
-
}
|
|
917
|
-
function fakeHTTPPostMessageEntrypoint(modifier) {
|
|
918
|
-
const base = {
|
|
919
|
-
type: 'http-post',
|
|
920
|
-
name: 'HTTP POST',
|
|
921
|
-
supportedModes: ['PUBLISH'],
|
|
922
|
-
icon: 'gio:language',
|
|
923
|
-
};
|
|
924
|
-
if (isFunction(modifier)) {
|
|
925
|
-
return modifier(base);
|
|
926
|
-
}
|
|
927
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
928
|
-
}
|
|
929
|
-
function fakeHTTPGetMessageEntrypoint(modifier) {
|
|
930
|
-
const base = {
|
|
931
|
-
type: 'http-get',
|
|
932
|
-
name: 'HTTP Get',
|
|
933
|
-
supportedModes: ['SUBSCRIBE'],
|
|
934
|
-
icon: 'gio:language',
|
|
935
|
-
};
|
|
936
|
-
if (isFunction(modifier)) {
|
|
937
|
-
return modifier(base);
|
|
938
|
-
}
|
|
939
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
940
|
-
}
|
|
941
|
-
function fakeWebhookMessageEntrypoint(modifier) {
|
|
942
|
-
const base = {
|
|
943
|
-
type: 'webhook',
|
|
944
|
-
name: 'Webhook',
|
|
945
|
-
supportedModes: ['SUBSCRIBE'],
|
|
946
|
-
icon: 'gio:webhook',
|
|
947
|
-
};
|
|
948
|
-
if (isFunction(modifier)) {
|
|
949
|
-
return modifier(base);
|
|
950
|
-
}
|
|
951
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
952
|
-
}
|
|
953
|
-
function fakeHTTPProxyEntrypoint(modifier) {
|
|
954
|
-
const base = {
|
|
955
|
-
type: 'http-proxy',
|
|
956
|
-
name: 'HTTP Proxy',
|
|
957
|
-
supportedModes: ['REQUEST_RESPONSE'],
|
|
958
|
-
icon: 'gio:language',
|
|
959
|
-
};
|
|
960
|
-
if (isFunction(modifier)) {
|
|
961
|
-
return modifier(base);
|
|
962
|
-
}
|
|
963
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
964
|
-
}
|
|
965
|
-
function fakeMockMessageEndpoint(modifier) {
|
|
966
|
-
const base = {
|
|
967
|
-
type: 'mock',
|
|
968
|
-
name: 'Mock',
|
|
969
|
-
supportedModes: ['PUBLISH', 'SUBSCRIBE'],
|
|
970
|
-
icon: 'gio:language',
|
|
971
|
-
};
|
|
972
|
-
if (isFunction(modifier)) {
|
|
973
|
-
return modifier(base);
|
|
974
|
-
}
|
|
975
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
976
|
-
}
|
|
977
|
-
function fakeKafkaMessageEndpoint(modifier) {
|
|
978
|
-
const base = {
|
|
979
|
-
type: 'kafka',
|
|
980
|
-
name: 'Kafka',
|
|
981
|
-
supportedModes: ['PUBLISH', 'SUBSCRIBE'],
|
|
982
|
-
icon: 'gio:kafka',
|
|
983
|
-
};
|
|
984
|
-
if (isFunction(modifier)) {
|
|
985
|
-
return modifier(base);
|
|
986
|
-
}
|
|
987
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
988
|
-
}
|
|
989
|
-
function fakeHTTPProxyEndpoint(modifier) {
|
|
990
|
-
const base = {
|
|
991
|
-
type: 'http-proxy',
|
|
992
|
-
name: 'HTTP Proxy',
|
|
993
|
-
supportedModes: ['REQUEST_RESPONSE'],
|
|
994
|
-
icon: 'gio:language',
|
|
995
|
-
};
|
|
996
|
-
if (isFunction(modifier)) {
|
|
997
|
-
return modifier(base);
|
|
998
|
-
}
|
|
999
|
-
return Object.assign(Object.assign({}, base), modifier);
|
|
1000
|
-
}
|
|
1001
|
-
|
|
1002
|
-
/*
|
|
1003
|
-
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
1004
|
-
*
|
|
1005
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
1006
|
-
* you may not use this file except in compliance with the License.
|
|
1007
|
-
* You may obtain a copy of the License at
|
|
1008
|
-
*
|
|
1009
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
1010
|
-
*
|
|
1011
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
1012
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
1013
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1014
|
-
* See the License for the specific language governing permissions and
|
|
1015
|
-
* limitations under the License.
|
|
1016
|
-
*/
|
|
1017
|
-
|
|
1018
|
-
/*
|
|
1019
|
-
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
1020
|
-
*
|
|
1021
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
1022
|
-
* you may not use this file except in compliance with the License.
|
|
1023
|
-
* You may obtain a copy of the License at
|
|
1024
|
-
*
|
|
1025
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
1026
|
-
*
|
|
1027
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
1028
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
1029
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1030
|
-
* See the License for the specific language governing permissions and
|
|
1031
|
-
* limitations under the License.
|
|
1032
|
-
*/
|
|
1033
|
-
class GioPolicyStudioDetailsPhasePolicyComponent {
|
|
643
|
+
class GioPolicyStudioDetailsPhaseStepComponent {
|
|
1034
644
|
constructor(matDialog) {
|
|
1035
645
|
this.matDialog = matDialog;
|
|
646
|
+
this.policies = [];
|
|
647
|
+
this.stepChange = new EventEmitter();
|
|
648
|
+
}
|
|
649
|
+
ngOnChanges(changes) {
|
|
650
|
+
if (changes.policies || changes.step) {
|
|
651
|
+
this.policy = this.policies.find(policy => policy.id === this.step.policy);
|
|
652
|
+
}
|
|
1036
653
|
}
|
|
1037
654
|
onEdit() {
|
|
655
|
+
if (!this.policy) {
|
|
656
|
+
// TODO: Handle UseCase when policy is not found. (Like if the plugin is removed from the BackEnd)
|
|
657
|
+
return;
|
|
658
|
+
}
|
|
1038
659
|
this.matDialog
|
|
1039
|
-
.open(
|
|
660
|
+
.open(GioPolicyStudioStepEditDialogComponent, {
|
|
1040
661
|
data: {
|
|
1041
|
-
policy:
|
|
662
|
+
policy: this.policy,
|
|
1042
663
|
step: this.step,
|
|
1043
664
|
},
|
|
1044
665
|
role: 'alertdialog',
|
|
@@ -1046,7 +667,12 @@ class GioPolicyStudioDetailsPhasePolicyComponent {
|
|
|
1046
667
|
width: '1000px',
|
|
1047
668
|
})
|
|
1048
669
|
.afterClosed()
|
|
1049
|
-
.subscribe(
|
|
670
|
+
.subscribe(stepToEdit => {
|
|
671
|
+
if (!stepToEdit) {
|
|
672
|
+
return;
|
|
673
|
+
}
|
|
674
|
+
this.stepChange.emit(stepToEdit);
|
|
675
|
+
});
|
|
1050
676
|
}
|
|
1051
677
|
onDisable() {
|
|
1052
678
|
throw new Error('Wip');
|
|
@@ -1055,13 +681,17 @@ class GioPolicyStudioDetailsPhasePolicyComponent {
|
|
|
1055
681
|
throw new Error('Wip');
|
|
1056
682
|
}
|
|
1057
683
|
}
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type:
|
|
684
|
+
GioPolicyStudioDetailsPhaseStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsPhaseStepComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
685
|
+
GioPolicyStudioDetailsPhaseStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: { step: "step", policies: "policies" }, outputs: { stepChange: "stepChange" }, 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=\"info\">\n <div class=\"info__head\">\n <mat-icon class=\"info__head__icon\" [svgIcon]=\"policy?.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__head__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__description\">{{ step.description }}</div>\n</div>\n\n<button class=\"menuBtn\" mat-icon-button [matMenuTriggerFor]=\"policyMenu\"><mat-icon svgIcon=\"gio:more-vertical\"></mat-icon></button>\n\n<mat-menu #policyMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onEdit()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n <span>Edit</span>\n </button>\n\n <button disabled mat-menu-item (click)=\"onDisable()\">\n <mat-icon svgIcon=\"gio:prohibition\"></mat-icon>\n <span>Disable \uD83D\uDEA7</span>\n </button>\n\n <button disabled mat-menu-item (click)=\"onDelete()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n <span>Delete \uD83D\uDEA7</span>\n </button>\n</mat-menu>\n", styles: [":host{display:flex;align-items:center;padding:8px;border:1px solid #d3d5dc;border-radius:8px}.info{display:flex;max-width:300px;flex-direction:column;margin-left:4px;gap:4px}.info__head{display:flex;align-items:center}.info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.info__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.info__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.info__description:empty{display:none}\n"], components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i4$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }] });
|
|
686
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsPhaseStepComponent, decorators: [{
|
|
1061
687
|
type: Component,
|
|
1062
|
-
args: [{ selector: 'gio-ps-flow-details-phase-
|
|
688
|
+
args: [{ selector: 'gio-ps-flow-details-phase-step', 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=\"info\">\n <div class=\"info__head\">\n <mat-icon class=\"info__head__icon\" [svgIcon]=\"policy?.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__head__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__description\">{{ step.description }}</div>\n</div>\n\n<button class=\"menuBtn\" mat-icon-button [matMenuTriggerFor]=\"policyMenu\"><mat-icon svgIcon=\"gio:more-vertical\"></mat-icon></button>\n\n<mat-menu #policyMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onEdit()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n <span>Edit</span>\n </button>\n\n <button disabled mat-menu-item (click)=\"onDisable()\">\n <mat-icon svgIcon=\"gio:prohibition\"></mat-icon>\n <span>Disable \uD83D\uDEA7</span>\n </button>\n\n <button disabled mat-menu-item (click)=\"onDelete()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n <span>Delete \uD83D\uDEA7</span>\n </button>\n</mat-menu>\n", styles: [":host{display:flex;align-items:center;padding:8px;border:1px solid #d3d5dc;border-radius:8px}.info{display:flex;max-width:300px;flex-direction:column;margin-left:4px;gap:4px}.info__head{display:flex;align-items:center}.info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.info__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.info__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.info__description:empty{display:none}\n"] }]
|
|
1063
689
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { step: [{
|
|
1064
690
|
type: Input
|
|
691
|
+
}], policies: [{
|
|
692
|
+
type: Input
|
|
693
|
+
}], stepChange: [{
|
|
694
|
+
type: Output
|
|
1065
695
|
}] } });
|
|
1066
696
|
|
|
1067
697
|
/*
|
|
@@ -1082,7 +712,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1082
712
|
class GioPolicyStudioDetailsPhaseComponent {
|
|
1083
713
|
constructor(matDialog) {
|
|
1084
714
|
this.matDialog = matDialog;
|
|
1085
|
-
this.steps =
|
|
715
|
+
this.steps = [];
|
|
1086
716
|
this.startConnector = [];
|
|
1087
717
|
this.endConnector = [];
|
|
1088
718
|
this.policies = [];
|
|
@@ -1101,9 +731,10 @@ class GioPolicyStudioDetailsPhaseComponent {
|
|
|
1101
731
|
icon: connector.icon,
|
|
1102
732
|
})),
|
|
1103
733
|
},
|
|
1104
|
-
...((_a = this.steps) !== null && _a !== void 0 ? _a : []).map(step => ({
|
|
1105
|
-
type: '
|
|
734
|
+
...((_a = this.steps) !== null && _a !== void 0 ? _a : []).map((step, index) => ({
|
|
735
|
+
type: 'step',
|
|
1106
736
|
step: step,
|
|
737
|
+
index,
|
|
1107
738
|
})),
|
|
1108
739
|
{
|
|
1109
740
|
type: 'connectors',
|
|
@@ -1130,28 +761,27 @@ class GioPolicyStudioDetailsPhaseComponent {
|
|
|
1130
761
|
width: '1000px',
|
|
1131
762
|
})
|
|
1132
763
|
.afterClosed()
|
|
1133
|
-
.subscribe(
|
|
1134
|
-
if (!this.steps || !
|
|
764
|
+
.subscribe(stepToAdd => {
|
|
765
|
+
if (!this.steps || !stepToAdd) {
|
|
1135
766
|
return;
|
|
1136
767
|
}
|
|
1137
|
-
//
|
|
1138
|
-
this.stepsChange.emit([
|
|
1139
|
-
...this.steps.slice(0, index),
|
|
1140
|
-
{
|
|
1141
|
-
name: 'Step name',
|
|
1142
|
-
enabled: true,
|
|
1143
|
-
policy: result.id,
|
|
1144
|
-
},
|
|
1145
|
-
...this.steps.slice(index),
|
|
1146
|
-
]);
|
|
768
|
+
// Add Step after the given index
|
|
769
|
+
this.stepsChange.emit([...this.steps.slice(0, index + 1), stepToAdd, ...this.steps.slice(index + 1)]);
|
|
1147
770
|
});
|
|
1148
771
|
}
|
|
772
|
+
onStepChange(index, stepToEdit) {
|
|
773
|
+
if (!this.steps) {
|
|
774
|
+
return;
|
|
775
|
+
}
|
|
776
|
+
// Replace the step at the given index
|
|
777
|
+
this.stepsChange.emit([...this.steps.slice(0, index), stepToEdit, ...this.steps.slice(index + 1)]);
|
|
778
|
+
}
|
|
1149
779
|
}
|
|
1150
780
|
GioPolicyStudioDetailsPhaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsPhaseComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
1151
|
-
GioPolicyStudioDetailsPhaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: { steps: "steps", name: "name", description: "description", startConnector: "startConnector", endConnector: "endConnector", apiType: "apiType", policies: "policies", policyExecutionPhase: "policyExecutionPhase" }, 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 <div *ngFor=\"let stepVM of stepsVM; first as isFirst
|
|
781
|
+
GioPolicyStudioDetailsPhaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: { steps: "steps", name: "name", description: "description", startConnector: "startConnector", endConnector: "endConnector", apiType: "apiType", policies: "policies", policyExecutionPhase: "policyExecutionPhase" }, 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 <div *ngFor=\"let stepVM of stepsVM; first as isFirst\" 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 class=\"content__step__addBtn\" mat-icon-button (click)=\"onAddPolicy(-1)\"><mat-icon svgIcon=\"gio:plus\"></mat-icon></button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </ng-container>\n\n <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'step'\">\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [policies]=\"policies\"\n [step]=\"stepVM.step\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n ></gio-ps-flow-details-phase-step>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-icon-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 </ng-container>\n </div>\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> Your API entrypoints don't apply on this phase. To enable them, add an entrypoint supporting this phase. </span>\n </gio-banner-warning>\n </div>\n</ng-template>\n", styles: [":host{display:flex;overflow:hidden;min-height:199px;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:1 1 auto;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font:400 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.wrapper{position:relative;flex:1 1 auto;padding:0 16px;overflow-y:auto}.content{position:absolute;display:flex;width:max-content;height:100%;align-items:center}.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}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"], components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: ["step", "policies"], outputs: ["stepChange"] }, { type: i4$1.GioBannerWarningComponent, selector: "gio-banner-warning" }], directives: [{ type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.GioBannerBodyDirective, selector: "[gioBannerBody]" }] });
|
|
1152
782
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsPhaseComponent, decorators: [{
|
|
1153
783
|
type: Component,
|
|
1154
|
-
args: [{ 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 <div *ngFor=\"let stepVM of stepsVM; first as isFirst
|
|
784
|
+
args: [{ 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 <div *ngFor=\"let stepVM of stepsVM; first as isFirst\" 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 class=\"content__step__addBtn\" mat-icon-button (click)=\"onAddPolicy(-1)\"><mat-icon svgIcon=\"gio:plus\"></mat-icon></button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </ng-container>\n\n <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'step'\">\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [policies]=\"policies\"\n [step]=\"stepVM.step\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n ></gio-ps-flow-details-phase-step>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-icon-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 </ng-container>\n </div>\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> Your API entrypoints don't apply on this phase. To enable them, add an entrypoint supporting this phase. </span>\n </gio-banner-warning>\n </div>\n</ng-template>\n", styles: [":host{display:flex;overflow:hidden;min-height:199px;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:1 1 auto;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font:400 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.wrapper{position:relative;flex:1 1 auto;padding:0 16px;overflow-y:auto}.content{position:absolute;display:flex;width:max-content;height:100%;align-items:center}.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}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"] }]
|
|
1155
785
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { steps: [{
|
|
1156
786
|
type: Input
|
|
1157
787
|
}], name: [{
|
|
@@ -1272,14 +902,14 @@ class GioPolicyStudioDetailsComponent {
|
|
|
1272
902
|
if (!this.flow) {
|
|
1273
903
|
return;
|
|
1274
904
|
}
|
|
1275
|
-
this.flowChange.emit(Object.assign(Object.assign({}, this.flow), { [flowPhase]: steps }));
|
|
905
|
+
this.flowChange.emit(Object.assign(Object.assign({}, this.flow), { [flowPhase]: steps, _hasChanged: true }));
|
|
1276
906
|
}
|
|
1277
907
|
}
|
|
1278
908
|
GioPolicyStudioDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
1279
|
-
GioPolicyStudioDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: { apiType: "apiType", flow: "flow", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", policies: "policies" }, outputs: { flowChange: "flowChange", deleteFlow: "deleteFlow" }, 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<ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar\" [flow]=\"flow\" [entrypointsInfo]=\"entrypointsInfo\"></gio-ps-flow-details-info-bar>\n\n <div class=\"content\">\n <gio-banner-warning>\uD83D\uDEA7 Work in progress \uD83D\uDEA7</gio-banner-warning>\n\n <mat-tab-group *ngIf=\"apiType === 'MESSAGE'\" class=\"content__tabs\">\n <mat-tab label=\"Initial connection\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"entrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"entrypointsInfo\"\n [steps]=\"flow.response\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n <mat-tab label=\"Event messages\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Publish phase\"\n description=\"Policies will be applied on messages sent to the endpoint\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [steps]=\"flow.publish\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"MESSAGE_RESPONSE\"\n (stepsChange)=\"onStepsChange('publish', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Subscribe phase\"\n description=\"Policies will be applied on messages received by the entrypoint\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"MESSAGE_REQUEST\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\n\n <div *ngIf=\"apiType === 'PROXY'\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </div>\n </div>\n</ng-container>\n\n<ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n</ng-template>\n", styles: [":host{display:flex;height:100%;flex-direction:column}.emptyFlows{display:flex;width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}.header{display:flex;align-items:center;padding:16px;border-bottom:1px solid #d3d5dc}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{display:flex;align-items:center;margin-left:8px;gap:8px}.infoBar{border-bottom:1px solid #d3d5dc}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: GioPolicyStudioDetailsInfoBarComponent, selector: "gio-ps-flow-details-info-bar", inputs: ["flow", "entrypointsInfo"] }, { type: i4$1.GioBannerWarningComponent, selector: "gio-banner-warning" }, { type: i6$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i6$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["steps", "name", "description", "startConnector", "endConnector", "apiType", "policies", "policyExecutionPhase"], outputs: ["stepsChange"] }], directives: [{ type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "gioFilterConnectorsByMode": GioFilterConnectorsByModePipe } });
|
|
909
|
+
GioPolicyStudioDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: { apiType: "apiType", flow: "flow", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", policies: "policies" }, outputs: { flowChange: "flowChange", deleteFlow: "deleteFlow" }, 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<ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar\" [flow]=\"flow\" [entrypointsInfo]=\"entrypointsInfo\"></gio-ps-flow-details-info-bar>\n\n <div class=\"content\">\n <gio-banner-warning>\uD83D\uDEA7 Work in progress \uD83D\uDEA7</gio-banner-warning>\n\n <mat-tab-group *ngIf=\"apiType === 'MESSAGE'\" class=\"content__tabs\">\n <mat-tab label=\"Initial connection\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"entrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"entrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n <mat-tab label=\"Event messages\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Publish phase\"\n description=\"Policies will be applied on messages sent to the endpoint\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"MESSAGE_RESPONSE\"\n (stepsChange)=\"onStepsChange('publish', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Subscribe phase\"\n description=\"Policies will be applied on messages received by the entrypoint\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"MESSAGE_REQUEST\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\n\n <div *ngIf=\"apiType === 'PROXY'\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </div>\n </div>\n</ng-container>\n\n<ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n</ng-template>\n", styles: [":host{display:flex;height:100%;flex-direction:column}.emptyFlows{display:flex;max-width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}.header{display:flex;align-items:center;padding:16px;border-bottom:1px solid #d3d5dc}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{display:flex;align-items:center;margin-left:8px;gap:8px}.infoBar{border-bottom:1px solid #d3d5dc}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: GioPolicyStudioDetailsInfoBarComponent, selector: "gio-ps-flow-details-info-bar", inputs: ["flow", "entrypointsInfo"] }, { type: i4$1.GioBannerWarningComponent, selector: "gio-banner-warning" }, { type: i6$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i6$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["steps", "name", "description", "startConnector", "endConnector", "apiType", "policies", "policyExecutionPhase"], outputs: ["stepsChange"] }], directives: [{ type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "gioFilterConnectorsByMode": GioFilterConnectorsByModePipe } });
|
|
1280
910
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsComponent, decorators: [{
|
|
1281
911
|
type: Component,
|
|
1282
|
-
args: [{ selector: 'gio-ps-flow-details', 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<ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar\" [flow]=\"flow\" [entrypointsInfo]=\"entrypointsInfo\"></gio-ps-flow-details-info-bar>\n\n <div class=\"content\">\n <gio-banner-warning>\uD83D\uDEA7 Work in progress \uD83D\uDEA7</gio-banner-warning>\n\n <mat-tab-group *ngIf=\"apiType === 'MESSAGE'\" class=\"content__tabs\">\n <mat-tab label=\"Initial connection\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"entrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"entrypointsInfo\"\n [steps]=\"flow.response\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n <mat-tab label=\"Event messages\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Publish phase\"\n description=\"Policies will be applied on messages sent to the endpoint\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [steps]=\"flow.publish\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"MESSAGE_RESPONSE\"\n (stepsChange)=\"onStepsChange('publish', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Subscribe phase\"\n description=\"Policies will be applied on messages received by the entrypoint\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"MESSAGE_REQUEST\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\n\n <div *ngIf=\"apiType === 'PROXY'\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </div>\n </div>\n</ng-container>\n\n<ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n</ng-template>\n", styles: [":host{display:flex;height:100%;flex-direction:column}.emptyFlows{display:flex;width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}.header{display:flex;align-items:center;padding:16px;border-bottom:1px solid #d3d5dc}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{display:flex;align-items:center;margin-left:8px;gap:8px}.infoBar{border-bottom:1px solid #d3d5dc}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}\n"] }]
|
|
912
|
+
args: [{ selector: 'gio-ps-flow-details', 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<ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar\" [flow]=\"flow\" [entrypointsInfo]=\"entrypointsInfo\"></gio-ps-flow-details-info-bar>\n\n <div class=\"content\">\n <gio-banner-warning>\uD83D\uDEA7 Work in progress \uD83D\uDEA7</gio-banner-warning>\n\n <mat-tab-group *ngIf=\"apiType === 'MESSAGE'\" class=\"content__tabs\">\n <mat-tab label=\"Initial connection\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"entrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"entrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n <mat-tab label=\"Event messages\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Publish phase\"\n description=\"Policies will be applied on messages sent to the endpoint\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"MESSAGE_RESPONSE\"\n (stepsChange)=\"onStepsChange('publish', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Subscribe phase\"\n description=\"Policies will be applied on messages received by the entrypoint\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"MESSAGE_REQUEST\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\n\n <div *ngIf=\"apiType === 'PROXY'\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </div>\n </div>\n</ng-container>\n\n<ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n</ng-template>\n", styles: [":host{display:flex;height:100%;flex-direction:column}.emptyFlows{display:flex;max-width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}.header{display:flex;align-items:center;padding:16px;border-bottom:1px solid #d3d5dc}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{display:flex;align-items:center;margin-left:8px;gap:8px}.infoBar{border-bottom:1px solid #d3d5dc}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}\n"] }]
|
|
1283
913
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { apiType: [{
|
|
1284
914
|
type: Input
|
|
1285
915
|
}], flow: [{
|
|
@@ -1517,7 +1147,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1517
1147
|
* limitations under the License.
|
|
1518
1148
|
*/
|
|
1519
1149
|
class GioPolicyStudioComponent {
|
|
1520
|
-
constructor() {
|
|
1150
|
+
constructor(policyStudioService) {
|
|
1151
|
+
this.policyStudioService = policyStudioService;
|
|
1521
1152
|
/**
|
|
1522
1153
|
* List of entrypoints to display
|
|
1523
1154
|
*/
|
|
@@ -1526,9 +1157,28 @@ class GioPolicyStudioComponent {
|
|
|
1526
1157
|
* List of endpoints to display
|
|
1527
1158
|
*/
|
|
1528
1159
|
this.endpointsInfo = [];
|
|
1160
|
+
/**
|
|
1161
|
+
* List of common flows to add to common flows group
|
|
1162
|
+
*/
|
|
1529
1163
|
this.commonFlows = [];
|
|
1164
|
+
/**
|
|
1165
|
+
* List of plans with their flows
|
|
1166
|
+
*/
|
|
1530
1167
|
this.plans = [];
|
|
1168
|
+
/**
|
|
1169
|
+
* List of policies usable in the policy studio
|
|
1170
|
+
*/
|
|
1531
1171
|
this.policies = [];
|
|
1172
|
+
/**
|
|
1173
|
+
* Called when Policy Studio needs to fetch the policy schema
|
|
1174
|
+
* @returns Observable of the policy schema
|
|
1175
|
+
*/
|
|
1176
|
+
this.policySchemaFetcher = () => EMPTY;
|
|
1177
|
+
/**
|
|
1178
|
+
* Called when Policy Studio needs to fetch the policy documentation
|
|
1179
|
+
* @returns Observable of the policy documentation
|
|
1180
|
+
*/
|
|
1181
|
+
this.policyDocumentationFetcher = () => EMPTY;
|
|
1532
1182
|
/**
|
|
1533
1183
|
* Return what is needed to save.
|
|
1534
1184
|
**/
|
|
@@ -1542,7 +1192,7 @@ class GioPolicyStudioComponent {
|
|
|
1542
1192
|
this.hasFlowExecutionChanged = false;
|
|
1543
1193
|
}
|
|
1544
1194
|
ngOnChanges(changes) {
|
|
1545
|
-
var _a, _b
|
|
1195
|
+
var _a, _b;
|
|
1546
1196
|
if (changes.entrypointsInfo || changes.endpointsInfo) {
|
|
1547
1197
|
this.connectorsTooltip = `Entrypoints: ${((_a = this.entrypointsInfo) !== null && _a !== void 0 ? _a : []).map(e => e.name).join(', ')}\nEndpoints: ${((_b = this.endpointsInfo) !== null && _b !== void 0 ? _b : [])
|
|
1548
1198
|
.map(e => e.name)
|
|
@@ -1553,9 +1203,13 @@ class GioPolicyStudioComponent {
|
|
|
1553
1203
|
this.flowsGroups = getFlowsGroups(this.commonFlows, this.plans);
|
|
1554
1204
|
this.initialFlowsGroups = cloneDeep(this.flowsGroups);
|
|
1555
1205
|
// Select first flow by default on first load
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1206
|
+
this.selectedFlow = this.flowsGroups[0].flows[0];
|
|
1207
|
+
}
|
|
1208
|
+
if (changes.policySchemaFetcher) {
|
|
1209
|
+
this.policyStudioService.setPolicySchemaFetcher(this.policySchemaFetcher);
|
|
1210
|
+
}
|
|
1211
|
+
if (changes.policyDocumentationFetcher) {
|
|
1212
|
+
this.policyStudioService.setPolicyDocumentationFetcher(this.policyDocumentationFetcher);
|
|
1559
1213
|
}
|
|
1560
1214
|
}
|
|
1561
1215
|
onFlowExecutionChange(flowExecution) {
|
|
@@ -1592,12 +1246,12 @@ class GioPolicyStudioComponent {
|
|
|
1592
1246
|
this.save.emit(Object.assign(Object.assign(Object.assign({}, (commonFlows ? { commonFlows } : {})), (plansToUpdate ? { plansToUpdate } : {})), (this.hasFlowExecutionChanged ? { flowExecution: this.flowExecution } : {})));
|
|
1593
1247
|
}
|
|
1594
1248
|
}
|
|
1595
|
-
GioPolicyStudioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1596
|
-
GioPolicyStudioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioComponent, selector: "gio-policy-studio", inputs: { apiType: "apiType", flowExecution: "flowExecution", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", commonFlows: "commonFlows", plans: "plans", policies: "policies" }, outputs: { save: "save" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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 <div class=\"header__apiInfo\">\n <span class=\"gio-badge-primary\">\n {{ apiType | titlecase }}\n </span>\n <span\n class=\"gio-badge-neutral\"\n [matTooltip]=\"connectorsTooltip\"\n matTooltipPosition=\"right\"\n matTooltipClass=\"gio-policy-studio__tooltip-line-break\"\n >\n <mat-icon *ngFor=\"let entrypoint of entrypointsInfo\" class=\"gio-left\" [svgIcon]=\"entrypoint.icon\"></mat-icon>\n <mat-icon *ngFor=\"let endpoint of endpointsInfo\" class=\"gio-left\" [svgIcon]=\"endpoint.icon\"></mat-icon>\n </span>\n </div>\n\n <div class=\"header__btn\">\n <button mat-stroked-button color=\"primary\" [disabled]=\"disableSaveButton\" (click)=\"onSave()\">Save</button>\n </div>\n</div>\n\n<div class=\"wrapper\">\n <div class=\"wrapper__flowsMenu\">\n <gio-ps-flows-menu\n [apiType]=\"apiType\"\n [flowExecution]=\"flowExecution\"\n [flowsGroups]=\"flowsGroups\"\n [entrypoints]=\"entrypointsInfo\"\n (flowsGroupsChange)=\"onFlowsGroupsChange($event)\"\n (flowExecutionChange)=\"onFlowExecutionChange($event)\"\n [(selectedFlow)]=\"selectedFlow\"\n ></gio-ps-flows-menu>\n </div>\n\n <div class=\"wrapper__flowDetails\">\n <gio-ps-flow-details\n [apiType]=\"apiType\"\n [flow]=\"selectedFlow\"\n [entrypointsInfo]=\"entrypointsInfo\"\n [endpointsInfo]=\"endpointsInfo\"\n [policies]=\"policies\"\n (flowChange)=\"onSelectedFlowChange($event)\"\n (deleteFlow)=\"onDeleteSelectedFlow($event)\"\n ></gio-ps-flow-details>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column;padding:16px;background-color:#fff}::ng-deep .gio-policy-studio__tooltip-line-break{white-space:pre-line}.header{display:flex;align-items:center;padding-bottom:16px}.header__apiInfo{flex:1 1 auto}.wrapper{display:flex;min-height:0;flex:1 1 auto;flex-direction:row;gap:16px}.wrapper__flowsMenu{overflow:hidden;max-width:400px;flex:1 1 33%;border:1px solid #d3d5dc;border-radius:8px}.wrapper__flowDetails{overflow:hidden;flex:1 1 66%;border:1px solid #d3d5dc;border-radius:8px}\n"], components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: GioPolicyStudioFlowsMenuComponent, selector: "gio-ps-flows-menu", inputs: ["apiType", "flowExecution", "flowsGroups", "selectedFlow", "entrypoints"], outputs: ["selectedFlowChange", "flowsGroupsChange", "flowExecutionChange"] }, { type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: ["apiType", "flow", "entrypointsInfo", "endpointsInfo", "policies"], outputs: ["flowChange", "deleteFlow"] }], directives: [{ type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "titlecase": i5$1.TitleCasePipe } });
|
|
1249
|
+
GioPolicyStudioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioComponent, deps: [{ token: GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1250
|
+
GioPolicyStudioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioComponent, selector: "gio-policy-studio", inputs: { apiType: "apiType", flowExecution: "flowExecution", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", commonFlows: "commonFlows", plans: "plans", policies: "policies", policySchemaFetcher: "policySchemaFetcher", policyDocumentationFetcher: "policyDocumentationFetcher" }, outputs: { save: "save" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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 <div class=\"header__apiInfo\">\n <span class=\"gio-badge-primary\">\n {{ apiType | titlecase }}\n </span>\n <span\n class=\"gio-badge-neutral\"\n [matTooltip]=\"connectorsTooltip\"\n matTooltipPosition=\"right\"\n matTooltipClass=\"gio-policy-studio__tooltip-line-break\"\n >\n <mat-icon *ngFor=\"let entrypoint of entrypointsInfo\" class=\"gio-left\" [svgIcon]=\"entrypoint.icon\"></mat-icon>\n <mat-icon *ngFor=\"let endpoint of endpointsInfo\" class=\"gio-left\" [svgIcon]=\"endpoint.icon\"></mat-icon>\n </span>\n </div>\n\n <div class=\"header__btn\">\n <button mat-stroked-button color=\"primary\" [disabled]=\"disableSaveButton\" (click)=\"onSave()\">Save</button>\n </div>\n</div>\n\n<div class=\"wrapper\">\n <div class=\"wrapper__flowsMenu\">\n <gio-ps-flows-menu\n [apiType]=\"apiType\"\n [flowExecution]=\"flowExecution\"\n [flowsGroups]=\"flowsGroups\"\n [entrypoints]=\"entrypointsInfo\"\n (flowsGroupsChange)=\"onFlowsGroupsChange($event)\"\n (flowExecutionChange)=\"onFlowExecutionChange($event)\"\n [(selectedFlow)]=\"selectedFlow\"\n ></gio-ps-flows-menu>\n </div>\n\n <div class=\"wrapper__flowDetails\">\n <gio-ps-flow-details\n [apiType]=\"apiType\"\n [flow]=\"selectedFlow\"\n [entrypointsInfo]=\"entrypointsInfo\"\n [endpointsInfo]=\"endpointsInfo\"\n [policies]=\"policies\"\n (flowChange)=\"onSelectedFlowChange($event)\"\n (deleteFlow)=\"onDeleteSelectedFlow($event)\"\n ></gio-ps-flow-details>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column;padding:16px;background-color:#fff}::ng-deep .gio-policy-studio__tooltip-line-break{white-space:pre-line}.header{display:flex;align-items:center;padding-bottom:16px}.header__apiInfo{flex:1 1 auto}.wrapper{display:flex;min-height:0;flex:1 1 auto;flex-direction:row;gap:16px}.wrapper__flowsMenu{overflow:hidden;max-width:400px;flex:1 1 33%;border:1px solid #d3d5dc;border-radius:8px}.wrapper__flowDetails{overflow:hidden;flex:1 1 66%;border:1px solid #d3d5dc;border-radius:8px}\n"], components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: GioPolicyStudioFlowsMenuComponent, selector: "gio-ps-flows-menu", inputs: ["apiType", "flowExecution", "flowsGroups", "selectedFlow", "entrypoints"], outputs: ["selectedFlowChange", "flowsGroupsChange", "flowExecutionChange"] }, { type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: ["apiType", "flow", "entrypointsInfo", "endpointsInfo", "policies"], outputs: ["flowChange", "deleteFlow"] }], directives: [{ type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "titlecase": i5$1.TitleCasePipe } });
|
|
1597
1251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioComponent, decorators: [{
|
|
1598
1252
|
type: Component,
|
|
1599
1253
|
args: [{ selector: 'gio-policy-studio', template: "<!--\n\n Copyright (C) 2015 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 <div class=\"header__apiInfo\">\n <span class=\"gio-badge-primary\">\n {{ apiType | titlecase }}\n </span>\n <span\n class=\"gio-badge-neutral\"\n [matTooltip]=\"connectorsTooltip\"\n matTooltipPosition=\"right\"\n matTooltipClass=\"gio-policy-studio__tooltip-line-break\"\n >\n <mat-icon *ngFor=\"let entrypoint of entrypointsInfo\" class=\"gio-left\" [svgIcon]=\"entrypoint.icon\"></mat-icon>\n <mat-icon *ngFor=\"let endpoint of endpointsInfo\" class=\"gio-left\" [svgIcon]=\"endpoint.icon\"></mat-icon>\n </span>\n </div>\n\n <div class=\"header__btn\">\n <button mat-stroked-button color=\"primary\" [disabled]=\"disableSaveButton\" (click)=\"onSave()\">Save</button>\n </div>\n</div>\n\n<div class=\"wrapper\">\n <div class=\"wrapper__flowsMenu\">\n <gio-ps-flows-menu\n [apiType]=\"apiType\"\n [flowExecution]=\"flowExecution\"\n [flowsGroups]=\"flowsGroups\"\n [entrypoints]=\"entrypointsInfo\"\n (flowsGroupsChange)=\"onFlowsGroupsChange($event)\"\n (flowExecutionChange)=\"onFlowExecutionChange($event)\"\n [(selectedFlow)]=\"selectedFlow\"\n ></gio-ps-flows-menu>\n </div>\n\n <div class=\"wrapper__flowDetails\">\n <gio-ps-flow-details\n [apiType]=\"apiType\"\n [flow]=\"selectedFlow\"\n [entrypointsInfo]=\"entrypointsInfo\"\n [endpointsInfo]=\"endpointsInfo\"\n [policies]=\"policies\"\n (flowChange)=\"onSelectedFlowChange($event)\"\n (deleteFlow)=\"onDeleteSelectedFlow($event)\"\n ></gio-ps-flow-details>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column;padding:16px;background-color:#fff}::ng-deep .gio-policy-studio__tooltip-line-break{white-space:pre-line}.header{display:flex;align-items:center;padding-bottom:16px}.header__apiInfo{flex:1 1 auto}.wrapper{display:flex;min-height:0;flex:1 1 auto;flex-direction:row;gap:16px}.wrapper__flowsMenu{overflow:hidden;max-width:400px;flex:1 1 33%;border:1px solid #d3d5dc;border-radius:8px}.wrapper__flowDetails{overflow:hidden;flex:1 1 66%;border:1px solid #d3d5dc;border-radius:8px}\n"] }]
|
|
1600
|
-
}], propDecorators: { apiType: [{
|
|
1254
|
+
}], ctorParameters: function () { return [{ type: GioPolicyStudioService }]; }, propDecorators: { apiType: [{
|
|
1601
1255
|
type: Input
|
|
1602
1256
|
}], flowExecution: [{
|
|
1603
1257
|
type: Input
|
|
@@ -1611,6 +1265,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1611
1265
|
type: Input
|
|
1612
1266
|
}], policies: [{
|
|
1613
1267
|
type: Input
|
|
1268
|
+
}], policySchemaFetcher: [{
|
|
1269
|
+
type: Input
|
|
1270
|
+
}], policyDocumentationFetcher: [{
|
|
1271
|
+
type: Input
|
|
1614
1272
|
}], save: [{
|
|
1615
1273
|
type: Output
|
|
1616
1274
|
}] } });
|
|
@@ -1690,11 +1348,11 @@ GioPolicyStudioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", v
|
|
|
1690
1348
|
GioPolicyStudioFlowProxyFormDialogComponent,
|
|
1691
1349
|
GioPolicyStudioDetailsInfoBarComponent,
|
|
1692
1350
|
GioPolicyStudioDetailsPhaseComponent,
|
|
1693
|
-
|
|
1351
|
+
GioPolicyStudioDetailsPhaseStepComponent,
|
|
1694
1352
|
GioFilterConnectorsByModePipe,
|
|
1695
1353
|
GioPolicyStudioPoliciesCatalogDialogComponent,
|
|
1696
|
-
|
|
1697
|
-
|
|
1354
|
+
GioPolicyStudioStepEditDialogComponent,
|
|
1355
|
+
GioPolicyStudioStepFormComponent], imports: [CommonModule,
|
|
1698
1356
|
ReactiveFormsModule,
|
|
1699
1357
|
MatButtonModule,
|
|
1700
1358
|
MatTooltipModule,
|
|
@@ -1709,7 +1367,7 @@ GioPolicyStudioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", v
|
|
|
1709
1367
|
GioFormSlideToggleModule,
|
|
1710
1368
|
GioFormTagsInputModule,
|
|
1711
1369
|
GioBannerModule], exports: [GioPolicyStudioComponent] });
|
|
1712
|
-
GioPolicyStudioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioModule, imports: [[
|
|
1370
|
+
GioPolicyStudioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioModule, providers: [GioPolicyStudioService], imports: [[
|
|
1713
1371
|
CommonModule,
|
|
1714
1372
|
ReactiveFormsModule,
|
|
1715
1373
|
MatButtonModule,
|
|
@@ -1738,11 +1396,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1738
1396
|
GioPolicyStudioFlowProxyFormDialogComponent,
|
|
1739
1397
|
GioPolicyStudioDetailsInfoBarComponent,
|
|
1740
1398
|
GioPolicyStudioDetailsPhaseComponent,
|
|
1741
|
-
|
|
1399
|
+
GioPolicyStudioDetailsPhaseStepComponent,
|
|
1742
1400
|
GioFilterConnectorsByModePipe,
|
|
1743
1401
|
GioPolicyStudioPoliciesCatalogDialogComponent,
|
|
1744
|
-
|
|
1745
|
-
|
|
1402
|
+
GioPolicyStudioStepEditDialogComponent,
|
|
1403
|
+
GioPolicyStudioStepFormComponent,
|
|
1746
1404
|
],
|
|
1747
1405
|
imports: [
|
|
1748
1406
|
CommonModule,
|
|
@@ -1762,6 +1420,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1762
1420
|
GioBannerModule,
|
|
1763
1421
|
],
|
|
1764
1422
|
exports: [GioPolicyStudioComponent],
|
|
1423
|
+
providers: [GioPolicyStudioService],
|
|
1765
1424
|
}]
|
|
1766
1425
|
}] });
|
|
1767
1426
|
|