@gravitee/ui-policy-studio-angular 7.11.0-renovate-angular-ade6562 → 7.12.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/filter-pipe/gio-flter-connectors-by-mode.pipe.mjs +4 -4
- package/esm2020/lib/components/flow-details/gio-ps-flow-details.component.mjs +17 -5
- package/esm2020/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.mjs +4 -4
- package/esm2020/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +56 -14
- package/esm2020/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.component.mjs +28 -11
- package/esm2020/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.mjs +4 -4
- package/esm2020/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.mjs +4 -4
- package/esm2020/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.mjs +4 -4
- package/esm2020/lib/components/flows-menu/gio-ps-flows-menu.component.mjs +4 -4
- package/esm2020/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.mjs +61 -0
- package/esm2020/lib/components/policy-form/gio-ps-policy-form.component.mjs +30 -0
- package/esm2020/lib/components/policy-form-dialog/gio-ps-policy-form-dialog.component.mjs +43 -0
- package/esm2020/lib/gio-policy-studio.component.mjs +8 -5
- package/esm2020/lib/gio-policy-studio.module.mjs +15 -6
- package/esm2020/lib/models/ConnectorsInfo.fixture.mjs +152 -0
- package/esm2020/lib/models/flow/Flow.fixture.mjs +66 -0
- package/esm2020/lib/models/flow/FlowExecution.fixture.mjs +43 -0
- package/esm2020/lib/models/flow/Step.fixture.mjs +70 -0
- package/esm2020/lib/models/flow/index-testing.mjs +19 -0
- package/esm2020/lib/models/index-testing.mjs +20 -0
- package/esm2020/lib/models/index.mjs +2 -1
- package/esm2020/lib/models/plan/Plan.fixture.mjs +31 -0
- package/esm2020/lib/models/plan/index-testing.mjs +17 -0
- package/esm2020/lib/models/policy/Policy.fixture.mjs +133 -0
- package/esm2020/lib/models/policy/Policy.mjs +2 -0
- package/esm2020/lib/models/policy/index-testing.mjs +17 -0
- package/esm2020/lib/models/policy/index.mjs +17 -0
- package/esm2020/testing/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.harness.mjs +6 -1
- package/esm2020/testing/lib/models/index-testing.mjs +2 -1
- package/esm2020/testing/lib/models/index.mjs +2 -1
- package/esm2020/testing/lib/models/policy/Policy.fixture.mjs +133 -0
- package/esm2020/testing/lib/models/policy/Policy.mjs +2 -0
- package/esm2020/testing/lib/models/policy/index-testing.mjs +17 -0
- package/esm2020/testing/lib/models/policy/index.mjs +17 -0
- package/fesm2015/gravitee-ui-policy-studio-angular-testing.mjs +149 -1
- package/fesm2015/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
- package/fesm2015/gravitee-ui-policy-studio-angular.mjs +752 -48
- package/fesm2015/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/fesm2020/gravitee-ui-policy-studio-angular-testing.mjs +154 -1
- package/fesm2020/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
- package/fesm2020/gravitee-ui-policy-studio-angular.mjs +808 -48
- package/fesm2020/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/lib/components/flow-details/gio-ps-flow-details.component.d.ts +4 -2
- package/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.d.ts +11 -3
- package/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.component.d.ts +3 -0
- package/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.d.ts +21 -0
- package/lib/components/policy-form/gio-ps-policy-form.component.d.ts +8 -0
- package/lib/components/policy-form-dialog/gio-ps-policy-form-dialog.component.d.ts +17 -0
- package/lib/gio-policy-studio.component.d.ts +3 -2
- package/lib/gio-policy-studio.module.d.ts +16 -13
- package/lib/models/ConnectorsInfo.fixture.d.ts +10 -0
- package/lib/models/flow/Flow.fixture.d.ts +3 -0
- package/lib/models/flow/FlowExecution.fixture.d.ts +3 -0
- package/lib/models/flow/Step.fixture.d.ts +4 -0
- package/lib/models/flow/index-testing.d.ts +3 -0
- package/lib/models/index-testing.d.ts +4 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/models/plan/Plan.fixture.d.ts +2 -0
- package/lib/models/plan/index-testing.d.ts +1 -0
- package/lib/models/policy/Policy.d.ts +11 -0
- package/lib/models/policy/Policy.fixture.d.ts +4 -0
- package/lib/models/policy/index-testing.d.ts +1 -0
- package/lib/models/policy/index.d.ts +1 -0
- package/package.json +1 -1
- package/testing/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.harness.d.ts +1 -0
- package/testing/lib/models/index-testing.d.ts +1 -0
- package/testing/lib/models/index.d.ts +1 -0
- package/testing/lib/models/policy/Policy.d.ts +11 -0
- package/testing/lib/models/policy/Policy.fixture.d.ts +4 -0
- package/testing/lib/models/policy/index-testing.d.ts +1 -0
- package/testing/lib/models/policy/index.d.ts +1 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Inject, Input,
|
|
2
|
+
import { Component, Inject, Input, EventEmitter, Output, Pipe, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/material/button';
|
|
4
4
|
import { MatButtonModule } from '@angular/material/button';
|
|
5
5
|
import * as i4$1 from '@gravitee/ui-particles-angular';
|
|
6
6
|
import { GioIconsModule, GioFormSlideToggleModule, GioFormTagsInputModule, GioBannerModule } from '@gravitee/ui-particles-angular';
|
|
7
7
|
import * as i5$1 from '@angular/common';
|
|
8
8
|
import { CommonModule } from '@angular/common';
|
|
9
|
-
import * as
|
|
9
|
+
import * as i7 from '@angular/material/tooltip';
|
|
10
10
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
11
11
|
import * as i1 from '@angular/material/dialog';
|
|
12
12
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
@@ -18,13 +18,13 @@ import * as i5 from '@angular/material/select';
|
|
|
18
18
|
import { MatSelectModule } from '@angular/material/select';
|
|
19
19
|
import * as i8 from '@angular/forms';
|
|
20
20
|
import { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
21
|
-
import * as i6$
|
|
21
|
+
import * as i6$1 from '@angular/material/tabs';
|
|
22
22
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
23
23
|
import * as i8$1 from '@angular/material/slide-toggle';
|
|
24
24
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
25
|
-
import * as
|
|
25
|
+
import * as i4$2 from '@angular/material/menu';
|
|
26
26
|
import { MatMenuModule } from '@angular/material/menu';
|
|
27
|
-
import { cloneDeep, uniqueId, isEmpty, filter, isEqual, flatten, differenceBy, omit, unionBy } from 'lodash';
|
|
27
|
+
import { cloneDeep, uniqueId, isFunction, 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
30
|
import { tap } from 'rxjs/operators';
|
|
@@ -104,6 +104,22 @@ const toHttpMethod = (value) => {
|
|
|
104
104
|
* limitations under the License.
|
|
105
105
|
*/
|
|
106
106
|
|
|
107
|
+
/*
|
|
108
|
+
* Copyright (C) 2023 The Gravitee team (http://gravitee.io)
|
|
109
|
+
*
|
|
110
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
111
|
+
* you may not use this file except in compliance with the License.
|
|
112
|
+
* You may obtain a copy of the License at
|
|
113
|
+
*
|
|
114
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
115
|
+
*
|
|
116
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
117
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
118
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
119
|
+
* See the License for the specific language governing permissions and
|
|
120
|
+
* limitations under the License.
|
|
121
|
+
*/
|
|
122
|
+
|
|
107
123
|
/*
|
|
108
124
|
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
109
125
|
*
|
|
@@ -181,9 +197,9 @@ class GioPolicyStudioFlowMessageFormDialogComponent {
|
|
|
181
197
|
this.dialogRef.close(Object.assign({}, flowToSave));
|
|
182
198
|
}
|
|
183
199
|
}
|
|
184
|
-
GioPolicyStudioFlowMessageFormDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
185
|
-
GioPolicyStudioFlowMessageFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
186
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
200
|
+
GioPolicyStudioFlowMessageFormDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowMessageFormDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
201
|
+
GioPolicyStudioFlowMessageFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowMessageFormDialogComponent, selector: "gio-ps-flow-message-form-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 {{ mode === 'create' ? 'Create a new flow' : 'Edit flow' }}\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>Flows allow you to apply different policies per event phases. For example you can reroute calls based on the URL specified.</p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with channel and operation if left blank</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"channelOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Channel operator</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Channel</mat-label>\n <input matInput formControlName=\"channel\" />\n <mat-hint>Publish or Subscribe channel. This is the path of your request.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints</mat-label>\n <mat-select multiple formControlName=\"entrypoints\">\n <mat-option *ngFor=\"let entrypoint of entrypoints\" [value]=\"entrypoint.type\">{{ entrypoint.name }}</mat-option>\n </mat-select>\n <mat-hint>Entrypoints where your flow will be executed</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints supported operations</mat-label>\n <mat-select multiple formControlName=\"operations\">\n <mat-option value=\"PUBLISH\">Publish</mat-option>\n <mat-option value=\"SUBSCRIBE\">Subscribe</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language</mat-hint>\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\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: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], 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: 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"] }, { type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
202
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowMessageFormDialogComponent, decorators: [{
|
|
187
203
|
type: Component,
|
|
188
204
|
args: [{ selector: 'gio-ps-flow-message-form-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 {{ mode === 'create' ? 'Create a new flow' : 'Edit flow' }}\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>Flows allow you to apply different policies per event phases. For example you can reroute calls based on the URL specified.</p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with channel and operation if left blank</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"channelOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Channel operator</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Channel</mat-label>\n <input matInput formControlName=\"channel\" />\n <mat-hint>Publish or Subscribe channel. This is the path of your request.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints</mat-label>\n <mat-select multiple formControlName=\"entrypoints\">\n <mat-option *ngFor=\"let entrypoint of entrypoints\" [value]=\"entrypoint.type\">{{ entrypoint.name }}</mat-option>\n </mat-select>\n <mat-hint>Entrypoints where your flow will be executed</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints supported operations</mat-label>\n <mat-select multiple formControlName=\"operations\">\n <mat-option value=\"PUBLISH\">Publish</mat-option>\n <mat-option value=\"SUBSCRIBE\">Subscribe</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language</mat-hint>\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
189
205
|
}], ctorParameters: function () {
|
|
@@ -255,9 +271,9 @@ class GioPolicyStudioFlowProxyFormDialogComponent {
|
|
|
255
271
|
validationCb(METHODS_AUTOCOMPLETE.map(m => `${m}`).includes(tag.toUpperCase()));
|
|
256
272
|
}
|
|
257
273
|
}
|
|
258
|
-
GioPolicyStudioFlowProxyFormDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
259
|
-
GioPolicyStudioFlowProxyFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
260
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
274
|
+
GioPolicyStudioFlowProxyFormDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowProxyFormDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
275
|
+
GioPolicyStudioFlowProxyFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowProxyFormDialogComponent, selector: "gio-ps-flow-proxy-form-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 {{ mode === 'create' ? 'Create a new flow' : 'Edit flow' }}\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>\n Flows allow you to apply different policies per HTTP path and/or method. For example you can reroute calls based on the URL specified.\n </p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with path and method if left blank</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"pathOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Path operator</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Path</mat-label>\n <span matPrefix>/</span>\n <input matInput formControlName=\"path\" />\n <mat-hint>Path</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Methods for your flow</mat-label>\n <gio-form-tags-input\n formControlName=\"methods\"\n [autocompleteOptions]=\"methods\"\n [tagValidationHook]=\"tagValidationHook\"\n ></gio-form-tags-input>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language</mat-hint>\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\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: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4$1.GioFormTagsInputComponent, selector: "gio-form-tags-input", inputs: ["aria-label", "addOnBlur", "tagValidationHook", "autocompleteOptions", "placeholder", "required", "disabled"] }], 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: 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"] }, { type: i4.MatPrefix, selector: "[matPrefix]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
276
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowProxyFormDialogComponent, decorators: [{
|
|
261
277
|
type: Component,
|
|
262
278
|
args: [{ selector: 'gio-ps-flow-proxy-form-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 {{ mode === 'create' ? 'Create a new flow' : 'Edit flow' }}\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>\n Flows allow you to apply different policies per HTTP path and/or method. For example you can reroute calls based on the URL specified.\n </p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with path and method if left blank</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"pathOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Path operator</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Path</mat-label>\n <span matPrefix>/</span>\n <input matInput formControlName=\"path\" />\n <mat-hint>Path</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Methods for your flow</mat-label>\n <gio-form-tags-input\n formControlName=\"methods\"\n [autocompleteOptions]=\"methods\"\n [tagValidationHook]=\"tagValidationHook\"\n ></gio-form-tags-input>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language</mat-hint>\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
263
279
|
}], ctorParameters: function () {
|
|
@@ -372,9 +388,9 @@ class GioPolicyStudioDetailsInfoBarComponent {
|
|
|
372
388
|
return ((_c = httpSelector === null || httpSelector === void 0 ? void 0 : httpSelector.methods) === null || _c === void 0 ? void 0 : _c.length) ? httpSelector === null || httpSelector === void 0 ? void 0 : httpSelector.methods : ['ALL'];
|
|
373
389
|
}
|
|
374
390
|
}
|
|
375
|
-
GioPolicyStudioDetailsInfoBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
376
|
-
GioPolicyStudioDetailsInfoBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
377
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
391
|
+
GioPolicyStudioDetailsInfoBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsInfoBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
392
|
+
GioPolicyStudioDetailsInfoBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsInfoBarComponent, selector: "gio-ps-flow-details-info-bar", inputs: { flow: "flow", entrypointsInfo: "entrypointsInfo" }, 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<div *ngIf=\"flow?.name\" class=\"info\">\n <span class=\"info__label\">Name</span>\n <span class=\"info__value strong\">{{ flow?.name }}</span>\n</div>\n\n<div *ngIf=\"entrypointsInfo\" class=\"info\">\n <span class=\"info__label\">Entrypoints</span>\n <span *ngFor=\"let entrypoint of entrypointsInfo\" class=\"info__value gio-badge-neutral\">\n <mat-icon [svgIcon]=\"entrypoint.icon\"></mat-icon>\n {{ entrypoint.name }}</span\n >\n</div>\n\n<!-- MESSAGE API type -->\n\n<div *ngIf=\"operations\" class=\"info\">\n <span class=\"info__label\">Operations</span>\n <span *ngFor=\"let operation of operations\" class=\"info__value gio-badge-neutral\"> {{ operation }}</span>\n</div>\n\n<div *ngIf=\"channel\" class=\"info\">\n <span class=\"info__label\">Channel</span>\n <span class=\"info__value strong\">{{ channel }}</span>\n</div>\n\n<div *ngIf=\"channelOperator\" class=\"info\">\n <span class=\"info__label\">Channel Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ channelOperator }}</span>\n</div>\n\n<!-- PROXY API type -->\n\n<div *ngIf=\"path\" class=\"info\">\n <span class=\"info__label\">Path</span>\n <span class=\"info__value strong\">{{ path }}</span>\n</div>\n\n<div *ngIf=\"pathOperator\" class=\"info\">\n <span class=\"info__label\">Path Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ pathOperator }}</span>\n</div>\n\n<div *ngIf=\"methods\" class=\"info\">\n <span class=\"info__label\">HTTP methods</span>\n <span *ngFor=\"let method of methods\" class=\"info__value gio-badge-neutral\"> {{ method }}</span>\n</div>\n\n<!-- Condition -->\n\n<div *ngIf=\"condition\" class=\"info\">\n <span class=\"info__label\">Condition</span>\n <span class=\"info__value gio-badge-neutral\">{{ condition }}</span>\n</div>\n", styles: [":host{display:flex;flex-flow:row wrap;padding:16px;gap:12px}.info__label{font:400 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.info__value.strong{padding-left:8px;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}\n"], components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
393
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsInfoBarComponent, decorators: [{
|
|
378
394
|
type: Component,
|
|
379
395
|
args: [{ selector: 'gio-ps-flow-details-info-bar', 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<div *ngIf=\"flow?.name\" class=\"info\">\n <span class=\"info__label\">Name</span>\n <span class=\"info__value strong\">{{ flow?.name }}</span>\n</div>\n\n<div *ngIf=\"entrypointsInfo\" class=\"info\">\n <span class=\"info__label\">Entrypoints</span>\n <span *ngFor=\"let entrypoint of entrypointsInfo\" class=\"info__value gio-badge-neutral\">\n <mat-icon [svgIcon]=\"entrypoint.icon\"></mat-icon>\n {{ entrypoint.name }}</span\n >\n</div>\n\n<!-- MESSAGE API type -->\n\n<div *ngIf=\"operations\" class=\"info\">\n <span class=\"info__label\">Operations</span>\n <span *ngFor=\"let operation of operations\" class=\"info__value gio-badge-neutral\"> {{ operation }}</span>\n</div>\n\n<div *ngIf=\"channel\" class=\"info\">\n <span class=\"info__label\">Channel</span>\n <span class=\"info__value strong\">{{ channel }}</span>\n</div>\n\n<div *ngIf=\"channelOperator\" class=\"info\">\n <span class=\"info__label\">Channel Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ channelOperator }}</span>\n</div>\n\n<!-- PROXY API type -->\n\n<div *ngIf=\"path\" class=\"info\">\n <span class=\"info__label\">Path</span>\n <span class=\"info__value strong\">{{ path }}</span>\n</div>\n\n<div *ngIf=\"pathOperator\" class=\"info\">\n <span class=\"info__label\">Path Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ pathOperator }}</span>\n</div>\n\n<div *ngIf=\"methods\" class=\"info\">\n <span class=\"info__label\">HTTP methods</span>\n <span *ngFor=\"let method of methods\" class=\"info__value gio-badge-neutral\"> {{ method }}</span>\n</div>\n\n<!-- Condition -->\n\n<div *ngIf=\"condition\" class=\"info\">\n <span class=\"info__label\">Condition</span>\n <span class=\"info__value gio-badge-neutral\">{{ condition }}</span>\n</div>\n", styles: [":host{display:flex;flex-flow:row wrap;padding:16px;gap:12px}.info__label{font:400 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.info__value.strong{padding-left:8px;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}\n"] }]
|
|
380
396
|
}], propDecorators: { flow: [{
|
|
@@ -383,6 +399,622 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
383
399
|
type: Input
|
|
384
400
|
}] } });
|
|
385
401
|
|
|
402
|
+
/*
|
|
403
|
+
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
404
|
+
*
|
|
405
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
406
|
+
* you may not use this file except in compliance with the License.
|
|
407
|
+
* You may obtain a copy of the License at
|
|
408
|
+
*
|
|
409
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
410
|
+
*
|
|
411
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
412
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
413
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
414
|
+
* See the License for the specific language governing permissions and
|
|
415
|
+
* limitations under the License.
|
|
416
|
+
*/
|
|
417
|
+
class GioPolicyStudioPolicyFormComponent {
|
|
418
|
+
}
|
|
419
|
+
GioPolicyStudioPolicyFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioPolicyFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
420
|
+
GioPolicyStudioPolicyFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioPolicyFormComponent, selector: "gio-ps-policy-form", inputs: { step: "step", policy: "policy" }, 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 class=\"settings__content\">\uD83D\uDEA7 WIP \uD83D\uDEA7</div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\uD83D\uDEA7 WIP \uD83D\uDEA7</div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;border:1px solid #d3d5dc;border-radius:8px}.settings{display:flex;flex:1 1 auto;flex-direction:column}.settings__header{border-right:1px solid #d3d5dc}.settings__content{padding:16px;border-right:1px solid #d3d5dc}.documentation{display:flex;flex:1 1 auto;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"] });
|
|
421
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioPolicyFormComponent, decorators: [{
|
|
422
|
+
type: Component,
|
|
423
|
+
args: [{ selector: 'gio-ps-policy-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 class=\"settings__content\">\uD83D\uDEA7 WIP \uD83D\uDEA7</div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\uD83D\uDEA7 WIP \uD83D\uDEA7</div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;border:1px solid #d3d5dc;border-radius:8px}.settings{display:flex;flex:1 1 auto;flex-direction:column}.settings__header{border-right:1px solid #d3d5dc}.settings__content{padding:16px;border-right:1px solid #d3d5dc}.documentation{display:flex;flex:1 1 auto;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"] }]
|
|
424
|
+
}], propDecorators: { step: [{
|
|
425
|
+
type: Input
|
|
426
|
+
}], policy: [{
|
|
427
|
+
type: Input
|
|
428
|
+
}] } });
|
|
429
|
+
|
|
430
|
+
/*
|
|
431
|
+
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
|
|
432
|
+
*
|
|
433
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
434
|
+
* you may not use this file except in compliance with the License.
|
|
435
|
+
* You may obtain a copy of the License at
|
|
436
|
+
*
|
|
437
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
438
|
+
*
|
|
439
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
440
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
441
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
442
|
+
* See the License for the specific language governing permissions and
|
|
443
|
+
* limitations under the License.
|
|
444
|
+
*/
|
|
445
|
+
const executionPhaseLabels = {
|
|
446
|
+
REQUEST: 'Request',
|
|
447
|
+
RESPONSE: 'Response',
|
|
448
|
+
MESSAGE_REQUEST: 'Publish',
|
|
449
|
+
MESSAGE_RESPONSE: 'Subscribe',
|
|
450
|
+
};
|
|
451
|
+
class GioPolicyStudioPoliciesCatalogDialogComponent {
|
|
452
|
+
constructor(dialogRef, flowDialogData) {
|
|
453
|
+
this.dialogRef = dialogRef;
|
|
454
|
+
this.policies = [];
|
|
455
|
+
this.policies = flowDialogData.policies.filter(policy => {
|
|
456
|
+
var _a, _b;
|
|
457
|
+
if (flowDialogData.apiType === 'PROXY') {
|
|
458
|
+
return (_a = policy.proxy) === null || _a === void 0 ? void 0 : _a.includes(flowDialogData.executionPhase);
|
|
459
|
+
}
|
|
460
|
+
return (_b = policy.message) === null || _b === void 0 ? void 0 : _b.includes(flowDialogData.executionPhase);
|
|
461
|
+
});
|
|
462
|
+
this.executionPhaseLabel = executionPhaseLabels[flowDialogData.executionPhase];
|
|
463
|
+
}
|
|
464
|
+
onSelectPolicy(policy) {
|
|
465
|
+
this.selectedPolicy = policy;
|
|
466
|
+
}
|
|
467
|
+
onAddPolicy() {
|
|
468
|
+
this.dialogRef.close(this.selectedPolicy);
|
|
469
|
+
}
|
|
470
|
+
onGoBack() {
|
|
471
|
+
this.selectedPolicy = undefined;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
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-policy-form [policy]=\"selectedPolicy\"></gio-ps-policy-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 *ngIf=\"selectedPolicy\" class=\"actions__addBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onAddPolicy()\">\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;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.policyForm__info__description:empty{display:none}\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: GioPolicyStudioPolicyFormComponent, selector: "gio-ps-policy-form", inputs: ["step", "policy"] }], 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
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, decorators: [{
|
|
477
|
+
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-policy-form [policy]=\"selectedPolicy\"></gio-ps-policy-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 *ngIf=\"selectedPolicy\" class=\"actions__addBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onAddPolicy()\">\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;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.policyForm__info__description:empty{display:none}\n"] }]
|
|
479
|
+
}], ctorParameters: function () {
|
|
480
|
+
return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
481
|
+
type: Inject,
|
|
482
|
+
args: [MAT_DIALOG_DATA]
|
|
483
|
+
}] }];
|
|
484
|
+
} });
|
|
485
|
+
|
|
486
|
+
/*
|
|
487
|
+
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
|
|
488
|
+
*
|
|
489
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
490
|
+
* you may not use this file except in compliance with the License.
|
|
491
|
+
* You may obtain a copy of the License at
|
|
492
|
+
*
|
|
493
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
494
|
+
*
|
|
495
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
496
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
497
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
498
|
+
* See the License for the specific language governing permissions and
|
|
499
|
+
* limitations under the License.
|
|
500
|
+
*/
|
|
501
|
+
class GioPolicyStudioPolicyFormDialogComponent {
|
|
502
|
+
constructor(dialogRef, flowDialogData) {
|
|
503
|
+
this.dialogRef = dialogRef;
|
|
504
|
+
this.policy = flowDialogData.policy;
|
|
505
|
+
this.step = flowDialogData.step;
|
|
506
|
+
}
|
|
507
|
+
onSave() {
|
|
508
|
+
this.dialogRef.close();
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
GioPolicyStudioPolicyFormDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioPolicyFormDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
512
|
+
GioPolicyStudioPolicyFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioPolicyFormDialogComponent, selector: "gio-ps-policy-form-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=\"policy.name\" class=\"title__name\">{{ policy.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</h2>\n\n<mat-dialog-content class=\"content\">\n <gio-ps-policy-form [policy]=\"policy\" [step]=\"step\"></gio-ps-policy-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()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}\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: GioPolicyStudioPolicyFormComponent, selector: "gio-ps-policy-form", inputs: ["step", "policy"] }], 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]" }] });
|
|
513
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioPolicyFormDialogComponent, decorators: [{
|
|
514
|
+
type: Component,
|
|
515
|
+
args: [{ selector: 'gio-ps-policy-form-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=\"policy.name\" class=\"title__name\">{{ policy.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</h2>\n\n<mat-dialog-content class=\"content\">\n <gio-ps-policy-form [policy]=\"policy\" [step]=\"step\"></gio-ps-policy-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()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}\n"] }]
|
|
516
|
+
}], ctorParameters: function () {
|
|
517
|
+
return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
518
|
+
type: Inject,
|
|
519
|
+
args: [MAT_DIALOG_DATA]
|
|
520
|
+
}] }];
|
|
521
|
+
} });
|
|
522
|
+
|
|
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
|
+
/*
|
|
679
|
+
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
680
|
+
*
|
|
681
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
682
|
+
* you may not use this file except in compliance with the License.
|
|
683
|
+
* You may obtain a copy of the License at
|
|
684
|
+
*
|
|
685
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
686
|
+
*
|
|
687
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
688
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
689
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
690
|
+
* See the License for the specific language governing permissions and
|
|
691
|
+
* limitations under the License.
|
|
692
|
+
*/
|
|
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
|
+
|
|
386
1018
|
/*
|
|
387
1019
|
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
388
1020
|
*
|
|
@@ -399,8 +1031,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
399
1031
|
* limitations under the License.
|
|
400
1032
|
*/
|
|
401
1033
|
class GioPolicyStudioDetailsPhasePolicyComponent {
|
|
1034
|
+
constructor(matDialog) {
|
|
1035
|
+
this.matDialog = matDialog;
|
|
1036
|
+
}
|
|
402
1037
|
onEdit() {
|
|
403
|
-
|
|
1038
|
+
this.matDialog
|
|
1039
|
+
.open(GioPolicyStudioPolicyFormDialogComponent, {
|
|
1040
|
+
data: {
|
|
1041
|
+
policy: fakeTestPolicy(),
|
|
1042
|
+
step: this.step,
|
|
1043
|
+
},
|
|
1044
|
+
role: 'alertdialog',
|
|
1045
|
+
id: 'gioPolicyStudioPolicyFormDialog',
|
|
1046
|
+
width: '1000px',
|
|
1047
|
+
})
|
|
1048
|
+
.afterClosed()
|
|
1049
|
+
.subscribe();
|
|
404
1050
|
}
|
|
405
1051
|
onDisable() {
|
|
406
1052
|
throw new Error('Wip');
|
|
@@ -409,12 +1055,12 @@ class GioPolicyStudioDetailsPhasePolicyComponent {
|
|
|
409
1055
|
throw new Error('Wip');
|
|
410
1056
|
}
|
|
411
1057
|
}
|
|
412
|
-
GioPolicyStudioDetailsPhasePolicyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
413
|
-
GioPolicyStudioDetailsPhasePolicyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
414
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
1058
|
+
GioPolicyStudioDetailsPhasePolicyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsPhasePolicyComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
1059
|
+
GioPolicyStudioDetailsPhasePolicyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsPhasePolicyComponent, selector: "gio-ps-flow-details-phase-policy", inputs: { step: "step" }, 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__primary\">\n <mat-icon class=\"info__primary__icon\" svgIcon=\"gio:gift\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__primary__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__secondary\">{{ 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__primary{display:flex;align-items:center}.info__primary__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.info__primary__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.info__secondary{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__secondary: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"] }] });
|
|
1060
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsPhasePolicyComponent, decorators: [{
|
|
415
1061
|
type: Component,
|
|
416
|
-
args: [{ selector: 'gio-ps-flow-details-phase-policy', 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__primary\">\n <mat-icon class=\"info__primary__icon\" svgIcon=\"gio:gift\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__primary__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__secondary\">{{ 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
|
|
417
|
-
}], propDecorators: { step: [{
|
|
1062
|
+
args: [{ selector: 'gio-ps-flow-details-phase-policy', 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__primary\">\n <mat-icon class=\"info__primary__icon\" svgIcon=\"gio:gift\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__primary__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__secondary\">{{ 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__primary{display:flex;align-items:center}.info__primary__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.info__primary__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.info__secondary{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__secondary:empty{display:none}\n"] }]
|
|
1063
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { step: [{
|
|
418
1064
|
type: Input
|
|
419
1065
|
}] } });
|
|
420
1066
|
|
|
@@ -434,10 +1080,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
434
1080
|
* limitations under the License.
|
|
435
1081
|
*/
|
|
436
1082
|
class GioPolicyStudioDetailsPhaseComponent {
|
|
437
|
-
constructor() {
|
|
1083
|
+
constructor(matDialog) {
|
|
1084
|
+
this.matDialog = matDialog;
|
|
438
1085
|
this.steps = undefined;
|
|
439
1086
|
this.startConnector = [];
|
|
440
1087
|
this.endConnector = [];
|
|
1088
|
+
this.policies = [];
|
|
1089
|
+
this.stepsChange = new EventEmitter();
|
|
441
1090
|
this.stepsVM = [];
|
|
442
1091
|
this.isDisabled = false;
|
|
443
1092
|
}
|
|
@@ -468,13 +1117,42 @@ class GioPolicyStudioDetailsPhaseComponent {
|
|
|
468
1117
|
this.isDisabled = this.stepsVM.filter(step => step.type === 'connectors' && !isEmpty(step.connectors)).length < 2;
|
|
469
1118
|
}
|
|
470
1119
|
}
|
|
1120
|
+
onAddPolicy(index) {
|
|
1121
|
+
this.matDialog
|
|
1122
|
+
.open(GioPolicyStudioPoliciesCatalogDialogComponent, {
|
|
1123
|
+
data: {
|
|
1124
|
+
policies: this.policies,
|
|
1125
|
+
executionPhase: this.policyExecutionPhase,
|
|
1126
|
+
apiType: this.apiType,
|
|
1127
|
+
},
|
|
1128
|
+
role: 'alertdialog',
|
|
1129
|
+
id: 'gioPolicyStudioPoliciesCatalogDialog',
|
|
1130
|
+
width: '1000px',
|
|
1131
|
+
})
|
|
1132
|
+
.afterClosed()
|
|
1133
|
+
.subscribe(result => {
|
|
1134
|
+
if (!this.steps || !result) {
|
|
1135
|
+
return;
|
|
1136
|
+
}
|
|
1137
|
+
//Emit change wit new step
|
|
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
|
+
]);
|
|
1147
|
+
});
|
|
1148
|
+
}
|
|
471
1149
|
}
|
|
472
|
-
GioPolicyStudioDetailsPhaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
473
|
-
GioPolicyStudioDetailsPhaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
474
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
1150
|
+
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; index as index\" class=\"content__step\">\n <!-- Connector -->\n <ng-container *ngIf=\"stepVM.type === 'connectors'\">\n <span class=\"gio-badge-white content__step__connectorBadge\">\n <ng-container *ngFor=\"let connector of stepVM.connectors\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connectorBadge__icon\"></mat-icon>\n {{ connector.name }}\n </ng-container>\n </span>\n\n <!-- Add policy button before last connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button mat-icon-button (click)=\"onAddPolicy(index)\"><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 <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'policy'\">\n <gio-ps-flow-details-phase-policy class=\"content__step__policy\" [step]=\"stepVM.step\"></gio-ps-flow-details-phase-policy>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button mat-icon-button (click)=\"onAddPolicy(index)\"><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 </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{display:flex;flex:1 1 auto;padding:0 16px;overflow-y:auto}.content{display:flex;align-items:center}.content__step{display:flex;width:max-content;align-items:center}.content__step__connectorBadge{border:1px solid #876fec;border-radius:16px}.content__step__connectorBadge__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: GioPolicyStudioDetailsPhasePolicyComponent, selector: "gio-ps-flow-details-phase-policy", inputs: ["step"] }, { 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
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsPhaseComponent, decorators: [{
|
|
475
1153
|
type: Component,
|
|
476
|
-
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 <span class=\"gio-badge-white content__step__connectorBadge\">\n <ng-container *ngFor=\"let connector of stepVM.connectors\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connectorBadge__icon\"></mat-icon>\n {{ connector.name }}\n </ng-container>\n </span>\n\n <!-- Add policy button before last connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button mat-icon-button><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 <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'policy'\">\n <gio-ps-flow-details-phase-policy class=\"content__step__policy\" [step]=\"stepVM.step\"></gio-ps-flow-details-phase-policy>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button mat-icon-button><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 </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{display:flex;flex:1 1 auto;padding:0 16px;overflow-y:auto}.content{display:flex;align-items:center}.content__step{display:flex;width:max-content;align-items:center}.content__step__connectorBadge{border:1px solid #876fec;border-radius:16px}.content__step__connectorBadge__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"] }]
|
|
477
|
-
}], propDecorators: { steps: [{
|
|
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; index as index\" class=\"content__step\">\n <!-- Connector -->\n <ng-container *ngIf=\"stepVM.type === 'connectors'\">\n <span class=\"gio-badge-white content__step__connectorBadge\">\n <ng-container *ngFor=\"let connector of stepVM.connectors\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connectorBadge__icon\"></mat-icon>\n {{ connector.name }}\n </ng-container>\n </span>\n\n <!-- Add policy button before last connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button mat-icon-button (click)=\"onAddPolicy(index)\"><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 <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'policy'\">\n <gio-ps-flow-details-phase-policy class=\"content__step__policy\" [step]=\"stepVM.step\"></gio-ps-flow-details-phase-policy>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button mat-icon-button (click)=\"onAddPolicy(index)\"><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 </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{display:flex;flex:1 1 auto;padding:0 16px;overflow-y:auto}.content{display:flex;align-items:center}.content__step{display:flex;width:max-content;align-items:center}.content__step__connectorBadge{border:1px solid #876fec;border-radius:16px}.content__step__connectorBadge__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
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { steps: [{
|
|
478
1156
|
type: Input
|
|
479
1157
|
}], name: [{
|
|
480
1158
|
type: Input
|
|
@@ -484,6 +1162,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
484
1162
|
type: Input
|
|
485
1163
|
}], endConnector: [{
|
|
486
1164
|
type: Input
|
|
1165
|
+
}], apiType: [{
|
|
1166
|
+
type: Input
|
|
1167
|
+
}], policies: [{
|
|
1168
|
+
type: Input
|
|
1169
|
+
}], policyExecutionPhase: [{
|
|
1170
|
+
type: Input
|
|
1171
|
+
}], stepsChange: [{
|
|
1172
|
+
type: Output
|
|
487
1173
|
}] } });
|
|
488
1174
|
|
|
489
1175
|
/*
|
|
@@ -514,9 +1200,9 @@ class GioFilterConnectorsByModePipe {
|
|
|
514
1200
|
});
|
|
515
1201
|
}
|
|
516
1202
|
}
|
|
517
|
-
GioFilterConnectorsByModePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
518
|
-
GioFilterConnectorsByModePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.
|
|
519
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
1203
|
+
GioFilterConnectorsByModePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFilterConnectorsByModePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1204
|
+
GioFilterConnectorsByModePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFilterConnectorsByModePipe, name: "gioFilterConnectorsByMode" });
|
|
1205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFilterConnectorsByModePipe, decorators: [{
|
|
520
1206
|
type: Pipe,
|
|
521
1207
|
args: [{
|
|
522
1208
|
name: 'gioFilterConnectorsByMode',
|
|
@@ -544,6 +1230,7 @@ class GioPolicyStudioDetailsComponent {
|
|
|
544
1230
|
this.flow = undefined;
|
|
545
1231
|
this.entrypointsInfo = [];
|
|
546
1232
|
this.endpointsInfo = [];
|
|
1233
|
+
this.policies = [];
|
|
547
1234
|
this.flowChange = new EventEmitter();
|
|
548
1235
|
this.deleteFlow = new EventEmitter();
|
|
549
1236
|
}
|
|
@@ -581,12 +1268,18 @@ class GioPolicyStudioDetailsComponent {
|
|
|
581
1268
|
onDeleteFlow() {
|
|
582
1269
|
this.deleteFlow.emit(this.flow);
|
|
583
1270
|
}
|
|
1271
|
+
onStepsChange(flowPhase, steps) {
|
|
1272
|
+
if (!this.flow) {
|
|
1273
|
+
return;
|
|
1274
|
+
}
|
|
1275
|
+
this.flowChange.emit(Object.assign(Object.assign({}, this.flow), { [flowPhase]: steps }));
|
|
1276
|
+
}
|
|
584
1277
|
}
|
|
585
|
-
GioPolicyStudioDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
586
|
-
GioPolicyStudioDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
587
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
1278
|
+
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 } });
|
|
1280
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsComponent, decorators: [{
|
|
588
1281
|
type: Component,
|
|
589
|
-
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.
|
|
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"] }]
|
|
590
1283
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { apiType: [{
|
|
591
1284
|
type: Input
|
|
592
1285
|
}], flow: [{
|
|
@@ -595,6 +1288,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
595
1288
|
type: Input
|
|
596
1289
|
}], endpointsInfo: [{
|
|
597
1290
|
type: Input
|
|
1291
|
+
}], policies: [{
|
|
1292
|
+
type: Input
|
|
598
1293
|
}], flowChange: [{
|
|
599
1294
|
type: Output
|
|
600
1295
|
}], deleteFlow: [{
|
|
@@ -632,9 +1327,9 @@ class GioPolicyStudioFlowExecutionFormDialogComponent {
|
|
|
632
1327
|
this.dialogRef.close(Object.assign({}, flowExecutionToSave));
|
|
633
1328
|
}
|
|
634
1329
|
}
|
|
635
|
-
GioPolicyStudioFlowExecutionFormDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
636
|
-
GioPolicyStudioFlowExecutionFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
637
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
1330
|
+
GioPolicyStudioFlowExecutionFormDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowExecutionFormDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
1331
|
+
GioPolicyStudioFlowExecutionFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowExecutionFormDialogComponent, selector: "gio-ps-flow-execution-form-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 Flow execution\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=\"flowExecutionFormGroup\" class=\"content\" [formGroup]=\"flowExecutionFormGroup\">\n <div class=\"content__row\">\n <gio-banner-info>\n By default, flow selection is based on the operators defined in your flows, either when it \u201Cmatches with\u201D or \u201Cstarts with\u201D a path. You\n can choose the \"Best match\" option to select a flow from the closest path.\n </gio-banner-info>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Default flow mode</mat-label>\n <mat-select formControlName=\"mode\">\n <mat-option value=\"BEST_MATCH\">Best Match</mat-option>\n <mat-option value=\"DEFAULT\">Default</mat-option>\n </mat-select>\n <mat-hint>Change how the flow selection is made</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <gio-form-slide-toggle>\n <gio-form-label>Fail on flow mismatch</gio-form-label>\n Respond with an error when requests don\u2019t match any defined flow\n <mat-slide-toggle gioFormSlideToggle formControlName=\"matchRequired\"></mat-slide-toggle>\n </gio-form-slide-toggle>\n </div>\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)=\"onSubmit()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\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: i4$1.GioBannerInfoComponent, selector: "gio-banner-info" }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4$1.GioFormSlideToggleComponent, selector: "gio-form-slide-toggle", inputs: ["appearance"] }, { type: i4$1.GioFormLabelComponent, selector: "gio-form-label" }, { type: i8$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }], 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: 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: 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"] }, { type: i4$1.GioFormSlideToggleDirective, selector: "[gioFormSlideToggle]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
1332
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowExecutionFormDialogComponent, decorators: [{
|
|
638
1333
|
type: Component,
|
|
639
1334
|
args: [{ selector: 'gio-ps-flow-execution-form-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 Flow execution\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=\"flowExecutionFormGroup\" class=\"content\" [formGroup]=\"flowExecutionFormGroup\">\n <div class=\"content__row\">\n <gio-banner-info>\n By default, flow selection is based on the operators defined in your flows, either when it \u201Cmatches with\u201D or \u201Cstarts with\u201D a path. You\n can choose the \"Best match\" option to select a flow from the closest path.\n </gio-banner-info>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Default flow mode</mat-label>\n <mat-select formControlName=\"mode\">\n <mat-option value=\"BEST_MATCH\">Best Match</mat-option>\n <mat-option value=\"DEFAULT\">Default</mat-option>\n </mat-select>\n <mat-hint>Change how the flow selection is made</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <gio-form-slide-toggle>\n <gio-form-label>Fail on flow mismatch</gio-form-label>\n Respond with an error when requests don\u2019t match any defined flow\n <mat-slide-toggle gioFormSlideToggle formControlName=\"matchRequired\"></mat-slide-toggle>\n </gio-form-slide-toggle>\n </div>\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)=\"onSubmit()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
640
1335
|
}], ctorParameters: function () {
|
|
@@ -783,9 +1478,9 @@ class GioPolicyStudioFlowsMenuComponent {
|
|
|
783
1478
|
.subscribe();
|
|
784
1479
|
}
|
|
785
1480
|
}
|
|
786
|
-
GioPolicyStudioFlowsMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
787
|
-
GioPolicyStudioFlowsMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
788
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
1481
|
+
GioPolicyStudioFlowsMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowsMenuComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
1482
|
+
GioPolicyStudioFlowsMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowsMenuComponent, selector: "gio-ps-flows-menu", inputs: { apiType: "apiType", flowExecution: "flowExecution", flowsGroups: "flowsGroups", selectedFlow: "selectedFlow", entrypoints: "entrypoints" }, outputs: { selectedFlowChange: "selectedFlowChange", flowsGroupsChange: "flowsGroupsChange", flowExecutionChange: "flowExecutionChange" }, 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 <div class=\"header__label\">\n Flows <mat-icon svgIcon=\"gio:info\" matTooltip=\"Flows allow you to apply different policies on your API event phases\"></mat-icon>\n </div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn_edit\" mat-stroked-button mat-icon-button (click)=\"onConfigureExecution(flowExecution)\">\n <mat-icon svgIcon=\"gio:settings\"></mat-icon>\n </button>\n </div>\n</div>\n\n<div class=\"list\">\n <div *ngFor=\"let flowsGroup of flowsGroupsVMSelected\" class=\"list__flowsGroup\">\n <div class=\"list__flowsGroup__header\">\n <div class=\"list__flowsGroup__header__label\">\n <mat-icon *ngIf=\"flowsGroup._icon\" [svgIcon]=\"flowsGroup._icon\"></mat-icon>\n <span>{{ flowsGroup.name }}</span>\n </div>\n <div class=\"list__flowsGroup__header__addBtn\">\n <button mat-icon-button (click)=\"onAddFlow(flowsGroup)\"><mat-icon svgIcon=\"gio:plus\" matTooltip=\"New flow\"></mat-icon></button>\n </div>\n </div>\n\n <div\n *ngFor=\"let flow of flowsGroup.flows\"\n class=\"list__flowsGroup__flow\"\n [class.selected]=\"flow.selected\"\n (click)=\"selectFlow(flowsGroup._id, flow._id)\"\n (mouseout)=\"flow.mouseOver = false\"\n (mouseover)=\"flow.mouseOver = true\"\n >\n <div *ngIf=\"flow.name\" class=\"list__flowsGroup__flow__name\" [attr.title]=\"flow.name\">\n {{ flow.name }}\n </div>\n <div class=\"list__flowsGroup__flow__infos\">\n <div class=\"list__flowsGroup__flow__infos__badges\">\n <span *ngFor=\"let badge of flow.badges\" class=\"list__flowsGroup__flow__infos__badges__badge\" [ngClass]=\"badge.class\">{{\n badge.label\n }}</span>\n </div>\n <div class=\"list__flowsGroup__flow__infos__pathOrChannelLabel\">{{ flow.pathOrChannelLabel }}</div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;max-height:100%;flex-direction:column;padding-top:16px}.header{display:flex;align-items:center;padding:0 16px;margin-bottom:16px}.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{margin-left:8px}.list{padding:0 16px;overflow-y:overlay}.list__flowsGroup{display:flex;flex-direction:column;padding-bottom:8px;gap:8px}.list__flowsGroup__header{display:flex;align-items:center;padding:8px 8px 8px 10px;border-radius:8px;background-color:#cdc5f7}.list__flowsGroup__header__label{font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;gap:8px}.list__flowsGroup__header__label>mat-icon{width:22px;height:22px;flex:0 0 auto}.list__flowsGroup__header__label>span{display:-webkit-box;overflow:hidden;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-line-clamp:2}.list__flowsGroup__header__addBtn{margin-left:8px}.list__flowsGroup__flow{display:flex;height:68px;flex-direction:column;justify-content:center;padding:7px;border:1px solid #d3d5dc;border-radius:8px;gap:8px}.list__flowsGroup__flow:hover,.list__flowsGroup__flow.selected{padding:6px;border:2px solid #876fec;cursor:pointer}.list__flowsGroup__flow__name{overflow:hidden;padding-left:4px;text-overflow:ellipsis;white-space:nowrap}.list__flowsGroup__flow__infos{display:flex;align-items:center}.list__flowsGroup__flow__infos__badges{flex:0 0 auto}.list__flowsGroup__flow__infos__badges__badge{width:auto}.list__flowsGroup__flow__infos__pathOrChannelLabel{flex:1 1 auto}\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"] }], directives: [{ type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
1483
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowsMenuComponent, decorators: [{
|
|
789
1484
|
type: Component,
|
|
790
1485
|
args: [{ selector: 'gio-ps-flows-menu', 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 <div class=\"header__label\">\n Flows <mat-icon svgIcon=\"gio:info\" matTooltip=\"Flows allow you to apply different policies on your API event phases\"></mat-icon>\n </div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn_edit\" mat-stroked-button mat-icon-button (click)=\"onConfigureExecution(flowExecution)\">\n <mat-icon svgIcon=\"gio:settings\"></mat-icon>\n </button>\n </div>\n</div>\n\n<div class=\"list\">\n <div *ngFor=\"let flowsGroup of flowsGroupsVMSelected\" class=\"list__flowsGroup\">\n <div class=\"list__flowsGroup__header\">\n <div class=\"list__flowsGroup__header__label\">\n <mat-icon *ngIf=\"flowsGroup._icon\" [svgIcon]=\"flowsGroup._icon\"></mat-icon>\n <span>{{ flowsGroup.name }}</span>\n </div>\n <div class=\"list__flowsGroup__header__addBtn\">\n <button mat-icon-button (click)=\"onAddFlow(flowsGroup)\"><mat-icon svgIcon=\"gio:plus\" matTooltip=\"New flow\"></mat-icon></button>\n </div>\n </div>\n\n <div\n *ngFor=\"let flow of flowsGroup.flows\"\n class=\"list__flowsGroup__flow\"\n [class.selected]=\"flow.selected\"\n (click)=\"selectFlow(flowsGroup._id, flow._id)\"\n (mouseout)=\"flow.mouseOver = false\"\n (mouseover)=\"flow.mouseOver = true\"\n >\n <div *ngIf=\"flow.name\" class=\"list__flowsGroup__flow__name\" [attr.title]=\"flow.name\">\n {{ flow.name }}\n </div>\n <div class=\"list__flowsGroup__flow__infos\">\n <div class=\"list__flowsGroup__flow__infos__badges\">\n <span *ngFor=\"let badge of flow.badges\" class=\"list__flowsGroup__flow__infos__badges__badge\" [ngClass]=\"badge.class\">{{\n badge.label\n }}</span>\n </div>\n <div class=\"list__flowsGroup__flow__infos__pathOrChannelLabel\">{{ flow.pathOrChannelLabel }}</div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;max-height:100%;flex-direction:column;padding-top:16px}.header{display:flex;align-items:center;padding:0 16px;margin-bottom:16px}.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{margin-left:8px}.list{padding:0 16px;overflow-y:overlay}.list__flowsGroup{display:flex;flex-direction:column;padding-bottom:8px;gap:8px}.list__flowsGroup__header{display:flex;align-items:center;padding:8px 8px 8px 10px;border-radius:8px;background-color:#cdc5f7}.list__flowsGroup__header__label{font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;gap:8px}.list__flowsGroup__header__label>mat-icon{width:22px;height:22px;flex:0 0 auto}.list__flowsGroup__header__label>span{display:-webkit-box;overflow:hidden;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-line-clamp:2}.list__flowsGroup__header__addBtn{margin-left:8px}.list__flowsGroup__flow{display:flex;height:68px;flex-direction:column;justify-content:center;padding:7px;border:1px solid #d3d5dc;border-radius:8px;gap:8px}.list__flowsGroup__flow:hover,.list__flowsGroup__flow.selected{padding:6px;border:2px solid #876fec;cursor:pointer}.list__flowsGroup__flow__name{overflow:hidden;padding-left:4px;text-overflow:ellipsis;white-space:nowrap}.list__flowsGroup__flow__infos{display:flex;align-items:center}.list__flowsGroup__flow__infos__badges{flex:0 0 auto}.list__flowsGroup__flow__infos__badges__badge{width:auto}.list__flowsGroup__flow__infos__pathOrChannelLabel{flex:1 1 auto}\n"] }]
|
|
791
1486
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { apiType: [{
|
|
@@ -833,6 +1528,7 @@ class GioPolicyStudioComponent {
|
|
|
833
1528
|
this.endpointsInfo = [];
|
|
834
1529
|
this.commonFlows = [];
|
|
835
1530
|
this.plans = [];
|
|
1531
|
+
this.policies = [];
|
|
836
1532
|
/**
|
|
837
1533
|
* Return what is needed to save.
|
|
838
1534
|
**/
|
|
@@ -896,11 +1592,11 @@ class GioPolicyStudioComponent {
|
|
|
896
1592
|
this.save.emit(Object.assign(Object.assign(Object.assign({}, (commonFlows ? { commonFlows } : {})), (plansToUpdate ? { plansToUpdate } : {})), (this.hasFlowExecutionChanged ? { flowExecution: this.flowExecution } : {})));
|
|
897
1593
|
}
|
|
898
1594
|
}
|
|
899
|
-
GioPolicyStudioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
900
|
-
GioPolicyStudioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
901
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
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 } });
|
|
1597
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioComponent, decorators: [{
|
|
902
1598
|
type: Component,
|
|
903
|
-
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 (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"] }]
|
|
1599
|
+
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"] }]
|
|
904
1600
|
}], propDecorators: { apiType: [{
|
|
905
1601
|
type: Input
|
|
906
1602
|
}], flowExecution: [{
|
|
@@ -913,6 +1609,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
913
1609
|
type: Input
|
|
914
1610
|
}], plans: [{
|
|
915
1611
|
type: Input
|
|
1612
|
+
}], policies: [{
|
|
1613
|
+
type: Input
|
|
916
1614
|
}], save: [{
|
|
917
1615
|
type: Output
|
|
918
1616
|
}] } });
|
|
@@ -983,8 +1681,8 @@ const getPlansChangeOutput = (flowsGroups, initialFlowsGroups) => {
|
|
|
983
1681
|
*/
|
|
984
1682
|
class GioPolicyStudioModule {
|
|
985
1683
|
}
|
|
986
|
-
GioPolicyStudioModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
987
|
-
GioPolicyStudioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.
|
|
1684
|
+
GioPolicyStudioModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1685
|
+
GioPolicyStudioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioModule, declarations: [GioPolicyStudioComponent,
|
|
988
1686
|
GioPolicyStudioFlowsMenuComponent,
|
|
989
1687
|
GioPolicyStudioDetailsComponent,
|
|
990
1688
|
GioPolicyStudioFlowExecutionFormDialogComponent,
|
|
@@ -993,7 +1691,10 @@ GioPolicyStudioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", v
|
|
|
993
1691
|
GioPolicyStudioDetailsInfoBarComponent,
|
|
994
1692
|
GioPolicyStudioDetailsPhaseComponent,
|
|
995
1693
|
GioPolicyStudioDetailsPhasePolicyComponent,
|
|
996
|
-
GioFilterConnectorsByModePipe
|
|
1694
|
+
GioFilterConnectorsByModePipe,
|
|
1695
|
+
GioPolicyStudioPoliciesCatalogDialogComponent,
|
|
1696
|
+
GioPolicyStudioPolicyFormDialogComponent,
|
|
1697
|
+
GioPolicyStudioPolicyFormComponent], imports: [CommonModule,
|
|
997
1698
|
ReactiveFormsModule,
|
|
998
1699
|
MatButtonModule,
|
|
999
1700
|
MatTooltipModule,
|
|
@@ -1008,7 +1709,7 @@ GioPolicyStudioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", v
|
|
|
1008
1709
|
GioFormSlideToggleModule,
|
|
1009
1710
|
GioFormTagsInputModule,
|
|
1010
1711
|
GioBannerModule], exports: [GioPolicyStudioComponent] });
|
|
1011
|
-
GioPolicyStudioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.
|
|
1712
|
+
GioPolicyStudioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioModule, imports: [[
|
|
1012
1713
|
CommonModule,
|
|
1013
1714
|
ReactiveFormsModule,
|
|
1014
1715
|
MatButtonModule,
|
|
@@ -1025,7 +1726,7 @@ GioPolicyStudioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
|
|
|
1025
1726
|
GioFormTagsInputModule,
|
|
1026
1727
|
GioBannerModule,
|
|
1027
1728
|
]] });
|
|
1028
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
1729
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioModule, decorators: [{
|
|
1029
1730
|
type: NgModule,
|
|
1030
1731
|
args: [{
|
|
1031
1732
|
declarations: [
|
|
@@ -1039,6 +1740,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
1039
1740
|
GioPolicyStudioDetailsPhaseComponent,
|
|
1040
1741
|
GioPolicyStudioDetailsPhasePolicyComponent,
|
|
1041
1742
|
GioFilterConnectorsByModePipe,
|
|
1743
|
+
GioPolicyStudioPoliciesCatalogDialogComponent,
|
|
1744
|
+
GioPolicyStudioPolicyFormDialogComponent,
|
|
1745
|
+
GioPolicyStudioPolicyFormComponent,
|
|
1042
1746
|
],
|
|
1043
1747
|
imports: [
|
|
1044
1748
|
CommonModule,
|