@gravitee/ui-policy-studio-angular 7.11.0 → 7.12.0-policy-studio-step-7-33cd621

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/esm2020/lib/components/flow-details/gio-ps-flow-details.component.mjs +16 -3
  2. package/esm2020/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +58 -16
  3. package/esm2020/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.mjs +77 -0
  4. package/esm2020/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.mjs +67 -0
  5. package/esm2020/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.mjs +46 -0
  6. package/esm2020/lib/components/step-form/gio-ps-step-form.component.mjs +78 -0
  7. package/esm2020/lib/gio-policy-studio.component.mjs +47 -12
  8. package/esm2020/lib/gio-policy-studio.module.mjs +17 -6
  9. package/esm2020/lib/gio-policy-studio.service.mjs +66 -0
  10. package/esm2020/lib/models/PolicySchemaFetcher.mjs +2 -0
  11. package/esm2020/lib/models/index.mjs +3 -1
  12. package/esm2020/lib/models/policy/Policy.mjs +2 -0
  13. package/esm2020/lib/models/policy/index.mjs +17 -0
  14. package/esm2020/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.mjs +19 -5
  15. package/esm2020/testing/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.harness.mjs +38 -0
  16. package/esm2020/testing/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.harness.mjs +55 -0
  17. package/esm2020/testing/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.harness.mjs +30 -0
  18. package/esm2020/testing/lib/components/step-form/gio-ps-step-form.harness.mjs +37 -0
  19. package/esm2020/testing/lib/gio-policy-studio.harness.mjs +43 -5
  20. package/esm2020/testing/lib/models/PolicySchemaFetcher.mjs +2 -0
  21. package/esm2020/testing/lib/models/flow/Step.fixture.mjs +10 -9
  22. package/esm2020/testing/lib/models/index-testing.mjs +2 -1
  23. package/esm2020/testing/lib/models/index.mjs +3 -1
  24. package/esm2020/testing/lib/models/policy/Policy.fixture.mjs +133 -0
  25. package/esm2020/testing/lib/models/policy/Policy.mjs +2 -0
  26. package/esm2020/testing/lib/models/policy/index-testing.mjs +17 -0
  27. package/esm2020/testing/lib/models/policy/index.mjs +17 -0
  28. package/fesm2015/gravitee-ui-policy-studio-angular-testing.mjs +316 -20
  29. package/fesm2015/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
  30. package/fesm2015/gravitee-ui-policy-studio-angular.mjs +397 -32
  31. package/fesm2015/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  32. package/fesm2020/gravitee-ui-policy-studio-angular-testing.mjs +336 -20
  33. package/fesm2020/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
  34. package/fesm2020/gravitee-ui-policy-studio-angular.mjs +403 -32
  35. package/fesm2020/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  36. package/lib/components/flow-details/gio-ps-flow-details.component.d.ts +4 -2
  37. package/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.d.ts +15 -5
  38. package/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.d.ts +18 -0
  39. package/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.d.ts +23 -0
  40. package/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.d.ts +18 -0
  41. package/lib/components/step-form/gio-ps-step-form.component.d.ts +23 -0
  42. package/lib/gio-policy-studio.component.d.ts +31 -2
  43. package/lib/gio-policy-studio.module.d.ts +17 -14
  44. package/lib/gio-policy-studio.service.d.ts +26 -0
  45. package/lib/models/PolicySchemaFetcher.d.ts +4 -0
  46. package/lib/models/index.d.ts +2 -0
  47. package/lib/models/policy/Policy.d.ts +11 -0
  48. package/lib/models/policy/index.d.ts +1 -0
  49. package/package.json +1 -1
  50. package/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.d.ts +11 -4
  51. package/testing/lib/components/{flow-details-phase-policy/gio-ps-flow-details-phase-policy.harness.d.ts → flow-details-phase-step/gio-ps-flow-details-phase-step.harness.d.ts} +4 -3
  52. package/testing/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.harness.d.ts +12 -0
  53. package/testing/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.harness.d.ts +8 -0
  54. package/testing/lib/components/step-form/gio-ps-step-form.harness.d.ts +11 -0
  55. package/testing/lib/gio-policy-studio.harness.d.ts +22 -6
  56. package/testing/lib/models/PolicySchemaFetcher.d.ts +4 -0
  57. package/testing/lib/models/flow/Step.fixture.d.ts +2 -2
  58. package/testing/lib/models/index-testing.d.ts +1 -0
  59. package/testing/lib/models/index.d.ts +2 -0
  60. package/testing/lib/models/policy/Policy.d.ts +11 -0
  61. package/testing/lib/models/policy/Policy.fixture.d.ts +4 -0
  62. package/testing/lib/models/policy/index-testing.d.ts +1 -0
  63. package/testing/lib/models/policy/index.d.ts +1 -0
  64. package/esm2020/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.component.mjs +0 -41
  65. package/esm2020/testing/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.harness.mjs +0 -33
  66. package/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.component.d.ts +0 -10
@@ -8,6 +8,7 @@ import { MatInputHarness } from '@angular/material/input/testing';
8
8
  import { MatSelectHarness } from '@angular/material/select/testing';
9
9
  import { GioFormTagsInputHarness } from '@gravitee/ui-particles-angular';
10
10
  import { MatSlideToggleHarness } from '@angular/material/slide-toggle/testing';
11
+ import { MatMenuHarness } from '@angular/material/menu/testing';
11
12
 
12
13
  /*
13
14
  * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
@@ -119,12 +120,12 @@ function fakeDefaultFlowExecution(modifier) {
119
120
  * See the License for the specific language governing permissions and
120
121
  * limitations under the License.
121
122
  */
122
- function fakeMockPolicyStep(modifier) {
123
+ function fakeTestPolicyStep(modifier) {
123
124
  const base = {
124
- name: 'Mock Policy',
125
- description: 'Mock Policy description',
125
+ name: fakeTestPolicy().name,
126
+ description: 'Test Policy description',
126
127
  enabled: true,
127
- policy: 'mock',
128
+ policy: 'test-policy',
128
129
  };
129
130
  if (isFunction(modifier)) {
130
131
  return modifier(base);
@@ -150,12 +151,12 @@ function fakeRateLimitStep(modifier) {
150
151
  }
151
152
  return Object.assign(Object.assign({}, base), modifier);
152
153
  }
153
- function fakeXmlToJsonStep(modifier) {
154
+ function fakeJsonToXmlStep(modifier) {
154
155
  const base = {
155
- name: 'XML to JSON',
156
- description: 'XML to JSON',
156
+ name: 'JSON to XML',
157
+ description: 'JSON to XML',
157
158
  enabled: true,
158
- policy: 'xml-json',
159
+ policy: 'json-xml',
159
160
  configuration: {},
160
161
  };
161
162
  if (isFunction(modifier)) {
@@ -207,6 +208,147 @@ function fakePlan(modifier) {
207
208
  return Object.assign(Object.assign({}, base), modifier);
208
209
  }
209
210
 
211
+ /*
212
+ * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
213
+ *
214
+ * Licensed under the Apache License, Version 2.0 (the "License");
215
+ * you may not use this file except in compliance with the License.
216
+ * You may obtain a copy of the License at
217
+ *
218
+ * http://www.apache.org/licenses/LICENSE-2.0
219
+ *
220
+ * Unless required by applicable law or agreed to in writing, software
221
+ * distributed under the License is distributed on an "AS IS" BASIS,
222
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
223
+ * See the License for the specific language governing permissions and
224
+ * limitations under the License.
225
+ */
226
+
227
+ /*
228
+ * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
229
+ *
230
+ * Licensed under the Apache License, Version 2.0 (the "License");
231
+ * you may not use this file except in compliance with the License.
232
+ * You may obtain a copy of the License at
233
+ *
234
+ * http://www.apache.org/licenses/LICENSE-2.0
235
+ *
236
+ * Unless required by applicable law or agreed to in writing, software
237
+ * distributed under the License is distributed on an "AS IS" BASIS,
238
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
239
+ * See the License for the specific language governing permissions and
240
+ * limitations under the License.
241
+ */
242
+ // 09/06/2023 - All API V4 available policies.
243
+ const POLICIES_V4_UNREGISTERED_ICON = [
244
+ {
245
+ id: 'message-filtering',
246
+ name: 'Message Filtering',
247
+ description: 'Message Filtering Gravitee Policy',
248
+ category: 'others',
249
+ version: '1.1.1',
250
+ proxy: [],
251
+ message: ['MESSAGE_RESPONSE', 'MESSAGE_REQUEST'],
252
+ },
253
+ {
254
+ id: 'json-xml',
255
+ name: 'JSON to XML',
256
+ description: 'Description of the JSON to XML Transformation Gravitee Policy',
257
+ icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUxLjUsNjQuOTJBNi41Myw2LjUzLDAsMSwxLDU4LDU4LjM5LDYuNTMsNi41MywwLDAsMSw1MS41LDY0LjkyWm0wLTExLjM0YTQuODEsNC44MSwwLDEsMCw0LjgxLDQuODFBNC44MSw0LjgxLDAsMCwwLDUxLjUsNTMuNThaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjMuOCw3Ny4wOWE0LjgzLDQuODMsMCwxLDEsMy42OS03LjkyLDQuNzQsNC43NCwwLDAsMSwxLjEzLDMuMDlBNC44Myw0LjgzLDAsMCwxLDYzLjgsNzcuMDlabTAtNy45M2EzLjExLDMuMTEsMCwxLDAsMi4zOCwxLjEyQTMuMSwzLjEsMCwwLDAsNjMuOCw2OS4xNloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MS41LDQzLjY4YTQuODUsNC44NSwwLDAsMS00Ljc3LTQuMTQsNSw1LDAsMCwxLDAtLjY5LDQuODMsNC44MywwLDAsMSw5LjY1LDAsMy40NSwzLjQ1LDAsMCwxLS4wNy43NEE0LjgxLDQuODEsMCwwLDEsNTEuNSw0My42OFptMC03LjkzYTMuMSwzLjEsMCwwLDAtMy4xLDMuMSwzLjI1LDMuMjUsMCwwLDAsMCwuNDQsMy4xLDMuMSwwLDAsMCw2LjE0LDAsMi42NiwyLjY2LDAsMCwwLDAtLjQ1QTMuMTEsMy4xMSwwLDAsMCw1MS41LDM1Ljc1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTMzLjY0LDcwLjE1YTQuODMsNC44MywwLDAsMS0xLjM3LTkuNDYsNSw1LDAsMCwxLDEuMzctLjE5LDQuODIsNC44MiwwLDAsMSw0LjgyLDQuODIsNC44Nyw0Ljg3LDAsMCwxLTIuNzEsNC4zNUE0LjczLDQuNzMsMCwwLDEsMzMuNjQsNzAuMTVabTAtNy45M2EzLDMsMCwwLDAtLjg5LjEzLDMuMSwzLjEsMCwwLDAsLjg5LDYuMDhBMywzLDAsMCwwLDM1LDY4LjEyYTMuMTEsMy4xMSwwLDAsMC0xLjM1LTUuOVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zMi4xOCw1Ni4zNWgtLjEyYS44Ny44NywwLDAsMS0uNzMtMUEyMC40NywyMC40NywwLDAsMSw0Miw0MC4zM2EuODYuODYsMCwxLDEsLjgsMS41MkExOC43NywxOC43NywwLDAsMCwzMyw1NS42MS44Ni44NiwwLDAsMSwzMi4xOCw1Ni4zNVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MS41LDc4Ljc5YTIwLjE3LDIwLjE3LDAsMCwxLTEyLjI3LTQuMTEuODYuODYsMCwwLDEtLjE3LTEuMjEuODUuODUsMCwwLDEsMS4yLS4xNkExOC41MiwxOC41MiwwLDAsMCw1MS41LDc3LjA3LDE4LjIzLDE4LjIzLDAsMCwwLDU1LDc2LjczYS44Ny44NywwLDAsMSwuMzMsMS43QTIwLjg3LDIwLjg3LDAsMCwxLDUxLjUsNzguNzlaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNzAsNjUuNDJhLjg0Ljg0LDAsMCwxLS4yNywwLC44Ni44NiwwLDAsMS0uNTQtMS4wOSwxOC43MSwxOC43MSwwLDAsMC04LjU1LTIyLjE3Ljg2Ljg2LDAsMSwxLC44NS0xLjUsMjAuNDIsMjAuNDIsMCwwLDEsOS4zMywyNC4yMUEuODcuODcsMCwwLDEsNzAsNjUuNDJaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjkzIC00Ljk4KSI+WE1MIDx0c3BhbiBjbGFzcz0iY2xzLTQiIHg9IjI0LjcxIiB5PSIwIj50PC90c3Bhbj48dHNwYW4geD0iMjguNjEiIHk9IjAiPm8gSlNPTjwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=',
258
+ category: 'transformation',
259
+ version: '2.1.4',
260
+ proxy: ['REQUEST', 'RESPONSE'],
261
+ message: ['MESSAGE_RESPONSE', 'MESSAGE_REQUEST'],
262
+ },
263
+ {
264
+ id: 'avro-json',
265
+ name: 'Avro JSON Transformation',
266
+ description: 'Policy used to transform Avro to JSON',
267
+ icon: 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48cGF0aCBkPSJNMTcwLjkxNjY3MTgsMzAzLjU3MTYyNDhoLTYuMzQzNDE0M2wzLjY1OTI4NjUtMTUuNDk2MzM3OUwxNzAuOTE2NjcxOCwzMDMuNTcxNjI0OHogTTIxOC44NDU1ODExLDIxMy41OTI4ODAybC0zMy45MTM1NTksMjMuNTE3MjExOWMtMzEuMTk2MDQ0OS0zMC44NDg4NjE3LTgxLjI2NzUzMjMtMy4xMDUzNDY3LTE0NS4yNzcwNjkxLTMxLjk1NDgwMzVDOTMuMzc1MjM2NSwyMTcuOTY2ODQyNywxNjUuMjA1MDE3MSwxOTAuNDQzNjQ5MywyMTguODQ1NTgxMSwyMTMuNTkyODgwMnogTTQxLjUwNzQxMiwyMTYuMjQ4NTA0NmMzMS4zNTk3NTI3LDExLjY5MzY5NTEsNjEuODQwMjc0OCwxNi4xMzY4NDA4LDk0LjIyNzMyNTQsMTQuNjM3MDg1YzMuNTMyOTU5LDEuNTc2MjAyNCw2LjMzODQyNDcsNS4wMjUxMTYsNy45NDYzMDQzLDguMzEwNzc1OEM4My4yODA4MDc1LDI0NS4xMzg1MTkzLDU2LjEwNzQ5ODIsMjI3LjAzOTMzNzIsNDEuNTA3NDEyLDIxNi4yNDg1MDQ2eiBNNTUuMDY1NzczLDIzNS4wMzQ3MTM3YzI4Ljc4NDI0ODQsMTEuMDQ3NTc2OSw1NC44ODU4MDMyLDE3LjU3MjQ3OTIsOTIuMDUzNjQyMywxMS4wNTU2OTQ2YzAsMCw1LjUwOTgxMTQsNC40MzA5OTk4LDUuNjYxNjk3NCw2LjczMzYyNzNDMTAyLjgyODg1NzQsMjYyLjEzMjMyNDIsODMuMzU2MDU2MiwyNTQuMDE2NjkzMSw1NS4wNjU3NzMsMjM1LjAzNDcxMzd6IE0xNTQuNTg0ODU0MSwyNjAuNDQyOTYyNmMtMjcuMDAxNTMzNSwxNC40NTA5Mjc3LTYyLjQ3NzgxMzcsMTAuNTAxMDA3MS03MC42MjIxMDA4LTAuMzQ2MjUyNEMxMTMuMjc0MzQ1NCwyNjUuODk4Mjg0OSwxMzIuNDMzMDEzOSwyNjQuODczMzUyMSwxNTQuNTg0ODU0MSwyNjAuNDQyOTYyNnogTTQ3Mi4zNDUwMzE3LDIwNS4xNTUyODg3Yy02NC4wMDk1MjE1LDI4Ljg0OTQ1NjgtMTE0LjA4MDk5MzcsMS4xMDU5NDE4LTE0NS4yNzcwNjkxLDMxLjk1NDgwMzVsLTMzLjkxMzU0MzctMjMuNTE3MjExOUMzNDYuNzk0OTgyOSwxOTAuNDQzNjQ5Myw0MTguNjI0NzU1OSwyMTcuOTY2ODQyNyw0NzIuMzQ1MDMxNywyMDUuMTU1Mjg4N3ogTTM2OC4zMTg5Njk3LDIzOS4xOTYzNjU0YzEuNjA3ODQ5MS0zLjI4NTY1OTgsNC40MTMzMzAxLTYuNzM0NTczNCw3Ljk0NjI4OTEtOC4zMTA3NzU4YzMyLjM4NzA1NDQsMS40OTk3NTU5LDYyLjg2NzU4NDItMi45NDMzODk5LDk0LjIyNzMyNTQtMTQuNjM3MDg1QzQ1NS44OTI0ODY2LDIyNy4wMzkzMzcyLDQyOC43MTkxNzcyLDI0NS4xMzg1MTkzLDM2OC4zMTg5Njk3LDIzOS4xOTYzNjU0eiBNMzU5LjIxODkwMjYsMjUyLjgyNDAzNTZjMC4xNTE4NTU1LTIuMzAyNjI3Niw1LjY2MTY4MjEtNi43MzM2MjczLDUuNjYxNjgyMS02LjczMzYyNzNjMzcuMTY3ODQ2Nyw2LjUxNjc4NDcsNjMuMjY5NDA5Mi0wLjAwODExNzcsOTIuMDUzNjQ5OS0xMS4wNTU2OTQ2QzQyOC42NDM5NTE0LDI1NC4wMTY2OTMxLDQwOS4xNzExNDI2LDI2Mi4xMzIzMjQyLDM1OS4yMTg5MDI2LDI1Mi44MjQwMzU2eiBNNDI4LjAzNzIzMTQsMjYwLjA5NjcxMDJjLTguMTQ0MjU2NiwxMC44NDcyNTk1LTQzLjYyMDU0NDQsMTQuNzk3MTgwMi03MC42MjIwNzAzLDAuMzQ2MjUyNEMzNzkuNTY2OTg2MSwyNjQuODczMzUyMSwzOTguNzI1NjQ3LDI2NS44OTgyODQ5LDQyOC4wMzcyMzE0LDI2MC4wOTY3MTAyeiBNMTQ3LjIwMDUzMSwzMTguNDk3MjgzOUg5OC41OTU4NjMzbDYwLjEwMzI5NDQtNDAuMjE5MDI0N0wxNDcuMjAwNTMxLDMxOC40OTcyODM5eiBNMTYwLjQxNzU1NjgsMzE4LjY2MDQwMDRsMS4xMjUwNDU4LTQuOTUzMzY5MWgxMS45OTE0MjQ2bDAuOTgxMjE2NCw0Ljk1MzM2OTFIMTYwLjQxNzU1Njh6IE0xODguMzEzODU4LDMxOC43NzAxMTExbC0xNC40NjAwMjItNTAuNTgyNzYzN2wxOS4xNjM4NjQxLTEzLjIzNTI5MDVsMTkuNDQ1MDUzMSw2My44MTgwNTQySDE4OC4zMTM4NTh6IE0yMDQuNjQ3ODI3MSwyNDcuMjI4NDg1MWwzMC40NDY1NDg1LTIwLjYyOTgzN2wtMTYuNDUyNjY3Miw2Ny43NjY3MDg0TDIwNC42NDc4MjcxLDI0Ny4yMjg0ODUxeiBNMjUzLjc1OTAxNzksMzE4LjQ0MTA3MDZoLTI4LjU1NDUxOTdsMjUuMTYzNDIxNi0xMDEuOTY5OTcwN2wzLjM5MTA5OC0xLjg2NDYwODhWMzE4LjQ0MTA3MDZ6IE0yNjUuOTcwNTUwNSwyMzEuMjY5MzYzNGMyNi4xNTI5NTQxLDI0Ljg1Nzk1NTksMjkuMDIxODgxMSwzNi4yNTI5NzU1LDAsMzcuNDExNTc1M1YyMzEuMjY5MzYzNHogTTI2Ni4xMzUwNzA4LDMxOC42NjA0MDA0bDAuMDQ1NzE1My0zMi44NTA0NjM5bDIyLjc2ODY0NjIsMzIuODUwNDYzOUgyNjYuMTM1MDcwOHogTTMwMy4zNTQ2MTQzLDMxOC42NjA0NjE0bC0yNS44ODU0OTgtMzguNTU0MTM4MmMyNC44ODgwOTItNS43ODE1ODU3LDI5LjAzMjE5Ni0yMi4yNjQ4NjIxLDguMDk4Mjk3MS00Ny40MjAxODEzYzE1LjQyODk4NTYsMTAuNzMwODA0NCwzMS4yNjAxMzE4LDIwLjYwMjM3MTIsNDYuNTA2MjI1NiwzMS41NzA4NDY2Yy0yMS40MjgyMjI3LDguMjUxNzctMjguMzY2MDg4OSwzOS40MDI0MzUzLTIuOTI0ODk2Miw1NC40MDM0NzI5SDMwMy4zNTQ2MTQzeiBNMzI3LjU4Mzg2MjMsMjk5LjgyNDY0NmMtOS42NDE4MTUyLTE4Ljc4MDI0MjksMTYuNTM3MjkyNS0zNy4yMzYyNjcxLDIyLjQ3ODAyNzMtMTAuMzk1MDgwNkMzNTIuMDAyNTk0LDMwNS44NzY5MjI2LDMzNS41MjY3NjM5LDMxNS4xODQxNzM2LDMyNy41ODM4NjIzLDI5OS44MjQ2NDZ6IE00MTMuMjAzNjQzOCwzMTguMzg2MjMwNWgtNjcuNjM4NzMyOWMxMy4xMjM4NDAzLTYuMDkzNTk3NCwxOS45MjA3NzY0LTIwLjc5NjE3MzEsMTYuMDMyMTY1NS0zNC43MzM0MjlMNDEzLjIwMzY0MzgsMzE4LjM4NjIzMDV6IE0yMjguODQyMzYxNSwyMDcuNDAzODU0NGMtODIuMjkwMTE1NC0zOC4wNzIwNjczLTE3MC45NzQ3MTYyLDI0LjgzMTgzMjktMjI4LjgxMzU5ODYtMzEuMjg0NzljLTEuMDczMDQ5NywyMC41NTQ5NjIyLDI4LjE1MzU2NDUsMzkuOTczMjIwOCw0MC44NjkyNDc0LDU4LjI4NTQxNTZjNy4yNTAyNDAzLDEzLjEwNTU0NSwyMS43OTM3MzkzLDI1LjE5NTA5ODksMzQuNjYwMzI3OSwzMS4xMzIxMTA2YzguMTc5NjQ5NCwxNC4zNjc5NTA0LDE3LjczMDE4NjUsMTMuMDAwNzAxOSw0NS44NDgxMTQsMTMuNjc0MDExMmwtODMuMTc3MzY4Miw1Ni42NzAzMTg2aDQzNS44ODU5MjUzbC04My41MjE0ODQ0LTU2LjY3MDMxODZjMjguMTE3OTUwNC0wLjY3MzMwOTMsMzcuNjY4NDg3NSwwLjY5MzkzOTIsNDUuODQ4MTE0LTEzLjY3NDAxMTJjMTIuODY2NjA3Ny01LjkzNzAxMTcsMjcuNDEwMDk1Mi0xOC4wMjY1NjU2LDM0LjY2MDMzOTQtMzEuMTMyMTEwNmMxMi43MTU2Njc3LTE4LjMxMjE5NDgsNDEuOTQyMzIxOC0zNy43MzA0NTM1LDQwLjg2OTIzMjItNTguMjg1NDE1NmMtNTcuODM4ODY3Miw1Ni4xMTY2MjI5LTE0Ni40OTc2NTAxLTYuNzg3Mjc3Mi0yMjguNzg3NzgwOCwzMS4yODQ3OWwtMjcuMTc1OTMzOC0xOC4wNzk2NTA5TDIyOC44NDIzNjE1LDIwNy40MDM4NTQ0eiIvPjwvc3ZnPg==',
268
+ category: 'transformation',
269
+ version: '1.2.0-alpha.2',
270
+ proxy: ['REQUEST', 'RESPONSE'],
271
+ message: ['MESSAGE_RESPONSE', 'MESSAGE_REQUEST'],
272
+ },
273
+ {
274
+ id: 'jwt',
275
+ name: 'JSON Web Tokens',
276
+ description: 'Description of the JWT Gravitee Policy',
277
+ icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjAuMDNlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDEuNzksNjEuNjdhMTMuODIsMTMuODIsMCwxLDEsMTIuNTctOCwuODcuODcsMCwwLDEtMS4xNS40Mi44Ni44NiwwLDAsMS0uNDItMS4xNCwxMi4xMiwxMi4xMiwwLDEsMC0yLjQ0LDMuNDkuODYuODYsMCwxLDEsMS4yMiwxLjIyQTEzLjgsMTMuOCwwLDAsMSw0MS43OSw2MS42N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02OC4zMSw3OC44YTQuNCw0LjQsMCwwLDEtMy4xNC0xLjNMNTUuNiw2Ny45M2EuODYuODYsMCwxLDEsMS4yMi0xLjIybDkuNTcsOS41N2EyLjc3LDIuNzcsMCwwLDAsMy44NCwwLDIuNzIsMi43MiwwLDAsMCwwLTMuODNsLTkuNTctOS41OGEyLjc5LDIuNzksMCwwLDAtMy44NCwwLC44OC44OCwwLDAsMS0xLjIyLDBsLTUuMjUtNS4yNGEuODguODgsMCwwLDEsMC0xLjIyLjg2Ljg2LDAsMCwxLDEuMjIsMGw0LjcsNC43YTQuNDMsNC40MywwLDAsMSw1LjYuNTVsOS41OCw5LjU3YTQuNDQsNC40NCwwLDAsMS0zLjE0LDcuNTdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDYuMzYsNTMuMjdhLjg1Ljg1LDAsMCwxLS42MS0uMjVsLTkuMTQtOS4xM2EuODguODgsMCwwLDEsMC0xLjIyLjg2Ljg2LDAsMCwxLDEuMjIsMEw0Nyw1MS44QS44OC44OCwwLDAsMSw0Nyw1MywuODUuODUsMCwwLDEsNDYuMzYsNTMuMjdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzcuMjIsNTMuMjdhLjg1Ljg1LDAsMCwxLS42MS0uMjUuODguODgsMCwwLDEsMC0xLjIybDkuMTQtOS4xM2EuODYuODYsMCwwLDEsMS4yMiwwLC44OC44OCwwLDAsMSwwLDEuMjJMMzcuODMsNTNBLjg1Ljg1LDAsMCwxLDM3LjIyLDUzLjI3WiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPko8dHNwYW4gY2xhc3M9ImNscy00IiB4PSI0LjQ0IiB5PSIwIj5XPC90c3Bhbj48dHNwYW4geD0iMTQuOTkiIHk9IjAiPlQ8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+',
278
+ category: 'security',
279
+ version: '3.2.0',
280
+ proxy: ['REQUEST'],
281
+ message: ['REQUEST'],
282
+ },
283
+ {
284
+ id: 'key-less',
285
+ name: 'Keyless',
286
+ description: 'Description of the Keyless Security Gravitee Policy',
287
+ icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZpbGw6bm9uZTtzdHJva2U6I2ZmZjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MnB4O308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxNC4yNGE0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxNC4yNFoiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU3LjU2LDg4LjYzSDQzLjE1YTIuOSwyLjksMCwwLDEtMi45LTIuOVY3Ni42MmEyLjg5LDIuODksMCwwLDEsMi45LTIuODlINTcuNTZhMi44OSwyLjg5LDAsMCwxLDIuOSwyLjg5djkuMTFBMi45LDIuOSwwLDAsMSw1Ny41Niw4OC42M1pNNDMuMTUsNzYuMTRhLjQ4LjQ4LDAsMCwwLS40OS40OHY5LjExYS40OS40OSwwLDAsMCwuNDkuNDlINTcuNTZhLjQ5LjQ5LDAsMCwwLC40OS0uNDlWNzYuNjJhLjQ4LjQ4LDAsMCwwLS40OS0uNDhaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTAuMzUsNjMuNjJBNy41OCw3LjU4LDAsMCwwLDQyLjg5LDcwaDIuNDdhNS4xNSw1LjE1LDAsMCwxLDEwLjE1LDEuMjN2My43NGExLjIxLDEuMjEsMCwxLDAsMi40MSwwVjcxLjE5QTcuNTgsNy41OCwwLDAsMCw1MC4zNSw2My42MloiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yNi4xNiw0Ny40M2EyNS4yMiwyNS4yMiwwLDAsMSw0OC4zOS0uMzEiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0zMi4xMiw1Mi44YTE5LDE5LDAsMCwxLDM2LjQ3LS4yMyIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTM5LjM0LDU2LjY1YTExLDExLDAsMCwxLDIxLjE3LS4xNCIvPjwvZz48L3N2Zz4=',
288
+ category: 'security',
289
+ version: '2.2.0',
290
+ proxy: ['REQUEST'],
291
+ message: ['REQUEST'],
292
+ },
293
+ {
294
+ id: 'api-key',
295
+ name: 'Api Key',
296
+ description: 'Description of the ApiKey Gravitee Policy',
297
+ icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjBlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjcuMzMsNzguNjVIMzkuNzhBMi42MSwyLjYxLDAsMCwxLDM3LjE3LDc2VjcxLjg4YS44NC44NCwwLDAsMSwuMzYtLjcsNy4wNiw3LjA2LDAsMCwwLDItMi4yMS44NS44NSwwLDAsMSwuNzUtLjQzSDQyLjZMNDUsNjYuNzlhLjg2Ljg2LDAsMCwxLDEtLjA1bDIuNzIsMS42NCwyLjUzLTEuNjJhLjg2Ljg2LDAsMCwxLDEsMGwuNDkuMzhWNjIuNDZINDAuMjhhLjg2Ljg2LDAsMCwxLS43NS0uNDQsNi43Niw2Ljc2LDAsMCwwLTItMi4xOS44OC44OCwwLDAsMS0uMzYtLjcxVjU1YTIuNjIsMi42MiwwLDAsMSwyLjYxLTIuNjJINjcuMzNBMi42MywyLjYzLDAsMCwxLDcwLDU1Vjc2QTIuNjIsMi42MiwwLDAsMSw2Ny4zMyw3OC42NVpNMzguOSw3Mi4zMlY3NmEuODkuODksMCwwLDAsLjg4Ljg4SDY3LjMzYS44Ny44NywwLDAsMCwuODgtLjg4VjU1YS44OC44OCwwLDAsMC0uODgtLjg4SDM5Ljc4YS44OS44OSwwLDAsMC0uODguODh2My43MmE4LjYyLDguNjIsMCwwLDEsMS44NywySDUzLjU1YS44Ny44NywwLDAsMSwuODcuODdWNjlhLjg3Ljg3LDAsMCwxLS40OS43OC44Ni44NiwwLDAsMS0uOTEtLjFsLTEuNDEtMS4xMS0yLjQ2LDEuNTlhLjg3Ljg3LDAsMCwxLS45MiwwbC0yLjY5LTEuNjJMNDMuNCw3MC4xMWEuOTQuOTQsMCwwLDEtLjUyLjE2SDQwLjc3QTguNjksOC42OSwwLDAsMSwzOC45LDcyLjMyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTY1Ljg0LDU0LjA4SDYxLjQ3YS44Ny44NywwLDAsMS0uODctLjg3di01LjlhNyw3LDAsMCwwLTE0LjA4LDB2NS45YS44Ny44NywwLDAsMS0uODcuODdINDEuMjhhLjg3Ljg3LDAsMCwxLS44Ny0uODd2LTUuOWExMy4xNSwxMy4xNSwwLDEsMSwyNi4zLDB2NS45QS44Ny44NywwLDAsMSw2NS44NCw1NC4wOFptLTMuNS0xLjc0SDY1di01YTExLjQxLDExLjQxLDAsMSwwLTIyLjgyLDB2NWgyLjYzdi01YTguNzgsOC43OCwwLDAsMSwxNy41NiwwWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTMxLjcxLDY5YTMuNTEsMy41MSwwLDEsMSwzLjUxLTMuNTFBMy41MSwzLjUxLDAsMCwxLDMxLjcxLDY5Wm0wLTUuMjlhMS43OCwxLjc4LDAsMSwwLDEuNzcsMS43OEExLjc4LDEuNzgsMCwwLDAsMzEuNzEsNjMuNzJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzMuNDgsNzQuMjJhOC43Miw4LjcyLDAsMSwxLDUuMDYtMTUuODEsOC41OSw4LjU5LDAsMCwxLDIuMjMsMi4zMUg1My41NWEuODcuODcsMCwwLDEsLjg3Ljg3VjY5YS44Ny44NywwLDAsMS0uNDkuNzguODYuODYsMCwwLDEtLjkxLS4xbC0xLjQxLTEuMTEtMi40NiwxLjU5YS44Ny44NywwLDAsMS0uOTIsMGwtMi42OS0xLjYyTDQzLjQsNzAuMTFhLjk0Ljk0LDAsMCwxLS41Mi4xNkg0MC43N2E4Ljc1LDguNzUsMCwwLDEtNy4yOSw0Wm0wLTE1LjY5YTcsNywwLDEsMCw0LjA1LDEyLjY1LDcuMDYsNy4wNiwwLDAsMCwyLTIuMjEuODUuODUsMCwwLDEsLjc1LS40M0g0Mi42TDQ1LDY2Ljc5YS44Ni44NiwwLDAsMSwxLS4wNWwyLjcyLDEuNjQsMi41My0xLjYyYS44Ni44NiwwLDAsMSwxLDBsLjQ5LjM4VjYyLjQ2SDQwLjI4YS44Ni44NiwwLDAsMS0uNzUtLjQ0LDYuNzYsNi43NiwwLDAsMC0yLTIuMTlBNi45Myw2LjkzLDAsMCwwLDMzLjQ4LDU4LjUzWk0zMS43MSw2OWEzLjUxLDMuNTEsMCwxLDEsMy41MS0zLjUxQTMuNTEsMy41MSwwLDAsMSwzMS43MSw2OVptMC01LjI5YTEuNzgsMS43OCwwLDEsMCwxLjc3LDEuNzhBMS43OCwxLjc4LDAsMCwwLDMxLjcxLDYzLjcyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTMxLjcxLDY5YTMuNTEsMy41MSwwLDEsMSwzLjUxLTMuNTFBMy41MSwzLjUxLDAsMCwxLDMxLjcxLDY5Wm0wLTUuMjlhMS43OCwxLjc4LDAsMSwwLDEuNzcsMS43OEExLjc4LDEuNzgsMCwwLDAsMzEuNzEsNjMuNzJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTMuNTYsNzMuNjlhLjg3Ljg3LDAsMCwxLS44Ny0uODdWNjlhLjg3Ljg3LDAsMCwxLDEuNzQsMHYzLjg1QS44Ny44NywwLDAsMSw1My41Niw3My42OVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01My41Niw2Mi4zN2EuODcuODcsMCwwLDEtLjg3LS44N1Y1Ny42NWEuODcuODcsMCwwLDEsMS43NCwwVjYxLjVBLjg3Ljg3LDAsMCwxLDUzLjU2LDYyLjM3WiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPjx0c3BhbiBjbGFzcz0iY2xzLTQiPkE8L3RzcGFuPjx0c3BhbiB4PSI3LjMxIiB5PSIwIj5waSBLZXk8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+',
298
+ category: 'security',
299
+ version: '3.2.1',
300
+ proxy: ['REQUEST'],
301
+ message: ['REQUEST'],
302
+ },
303
+ {
304
+ id: 'oauth2',
305
+ name: 'OAuth2',
306
+ description: 'Description of the OAuth2 Gravitee Policy',
307
+ icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzowLjAxZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtN3tsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6MC4wMWVtO30uY2xzLTl7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMHtsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTExe2xldHRlci1zcGFjaW5nOi0wLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjE5LDMzLjc1YzUuOCwwLDYuNTUuNTMsOC4zNiw2UTYzLjg5LDU1Ljg4LDY5LjIxLDcyYy45MywyLjgxLjA3LDUuMjUtMi4wOCw2LjM4LTIuODgsMS41MS01Ljg3LjMxLTcuMDgtMi45NC0uNzktMi4xMi0xLjMxLTQuMzUtMi4yMy02LjQxYTMuMjksMy4yOSwwLDAsMC0yLjI0LTEuNzcsOTIuMyw5Mi4zLDAsMCwwLTEwLjUyLDAsMy4yNywzLjI3LDAsMCwwLTIuMTksMS44Yy0uODUsMi0xLjMyLDQuMTMtMiw2LjE4LTEuMDYsMy0zLjQ3LDQuMzItNi4xNywzLjQ5LTIuODctLjg4LTQuMTktMy4zNy0zLjIyLTYuNXE1LTE2LjExLDEwLjEyLTMyLjE3QzQzLjQsMzQuMjcsNDQuMTIsMzMuNzUsNTAuMTksMzMuNzVaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkyLjQ1IC00Ljk4KSI+T3BlbklEIDx0c3BhbiBjbGFzcz0iY2xzLTQiIHg9IjQxLjE3IiB5PSIwIj5DPC90c3Bhbj48dHNwYW4geD0iNDgiIHk9IjAiPm9ubmU8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjczLjkyIiB5PSIwIj5jPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSI3OS40NSIgeT0iMCI+dCAtIDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iOTIuMTkiIHk9IjAiPlU8L3RzcGFuPjx0c3BhbiB4PSI5OS44OSIgeT0iMCI+c2VyPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy04IiB4PSIxMTQuNTciIHk9IjAiPkk8L3RzcGFuPjx0c3BhbiB4PSIxMTcuNTYiIHk9IjAiPm48L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTkiIHg9IjEyNC4yMiIgeT0iMCI+ZjwvdHNwYW4+PHRzcGFuIHg9IjEyNy41NyIgeT0iMCI+bzwvdHNwYW4+PC90ZXh0Pjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy0xMCI+TzwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTEiIHg9IjguMSIgeT0iMCI+QTwvdHNwYW4+PHRzcGFuIHg9IjE1LjMiIHk9IjAiPnV0aDI8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+',
308
+ category: 'security',
309
+ version: '2.2.0',
310
+ proxy: ['REQUEST'],
311
+ message: ['REQUEST'],
312
+ },
313
+ {
314
+ id: 'json-to-json',
315
+ name: 'JSON to JSON Transformation',
316
+ description: 'Description of the JSON to JSON Transformation Gravitee Policy',
317
+ icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYzLjgsNzcuMDlhNC44Myw0LjgzLDAsMSwxLDMuNjktNy45Miw0Ljc0LDQuNzQsMCwwLDEsMS4xMywzLjA5QTQuODMsNC44MywwLDAsMSw2My44LDc3LjA5Wm0wLTcuOTNhMy4xMSwzLjExLDAsMSwwLDIuMzgsMS4xMkEzLjEsMy4xLDAsMCwwLDYzLjgsNjkuMTZaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTEuNSw0My42OGE0Ljg1LDQuODUsMCwwLDEtNC43Ny00LjE0LDUsNSwwLDAsMSwwLS42OSw0LjgzLDQuODMsMCwwLDEsOS42NSwwLDMuNDUsMy40NSwwLDAsMS0uMDcuNzRBNC44MSw0LjgxLDAsMCwxLDUxLjUsNDMuNjhabTAtNy45M2EzLjEsMy4xLDAsMCwwLTMuMSwzLjEsMy4yNSwzLjI1LDAsMCwwLDAsLjQ0LDMuMSwzLjEsMCwwLDAsNi4xNCwwLDIuNjYsMi42NiwwLDAsMCwwLS40NUEzLjExLDMuMTEsMCwwLDAsNTEuNSwzNS43NVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zMy42NCw3MC4xNWE0LjgzLDQuODMsMCwwLDEtMS4zNy05LjQ2LDUsNSwwLDAsMSwxLjM3LS4xOSw0LjgyLDQuODIsMCwwLDEsNC44Miw0LjgyLDQuODcsNC44NywwLDAsMS0yLjcxLDQuMzVBNC43Myw0LjczLDAsMCwxLDMzLjY0LDcwLjE1Wm0wLTcuOTNhMywzLDAsMCwwLS44OS4xMywzLjEsMy4xLDAsMCwwLC44OSw2LjA4QTMsMywwLDAsMCwzNSw2OC4xMmEzLjExLDMuMTEsMCwwLDAtMS4zNS01LjlaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzIuMTgsNTYuMzVoLS4xMmEuODcuODcsMCwwLDEtLjczLTFBMjAuNDcsMjAuNDcsMCwwLDEsNDIsNDAuMzNhLjg2Ljg2LDAsMSwxLC44LDEuNTJBMTguNzcsMTguNzcsMCwwLDAsMzMsNTUuNjEuODYuODYsMCwwLDEsMzIuMTgsNTYuMzVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTEuNSw3OC43OWEyMC4xNywyMC4xNywwLDAsMS0xMi4yNy00LjExLjg2Ljg2LDAsMCwxLS4xNy0xLjIxLjg1Ljg1LDAsMCwxLDEuMi0uMTZBMTguNTIsMTguNTIsMCwwLDAsNTEuNSw3Ny4wNywxOC4yMywxOC4yMywwLDAsMCw1NSw3Ni43M2EuODcuODcsMCwwLDEsLjMzLDEuN0EyMC44NywyMC44NywwLDAsMSw1MS41LDc4Ljc5WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTcwLDY1LjQyYS44NC44NCwwLDAsMS0uMjcsMCwuODYuODYsMCwwLDEtLjU0LTEuMDksMTguNzEsMTguNzEsMCwwLDAtOC41NS0yMi4xNy44Ni44NiwwLDEsMSwuODUtMS41LDIwLjQyLDIwLjQyLDAsMCwxLDkuMzMsMjQuMjFBLjg3Ljg3LDAsMCwxLDcwLDY1LjQyWiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPkpTT04gPHRzcGFuIGNsYXNzPSJjbHMtNCIgeD0iMjkuMDYiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiB4PSIzMi45NiIgeT0iMCI+byBKU09OPC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==',
318
+ category: 'transformation',
319
+ version: '2.1.0',
320
+ proxy: ['REQUEST', 'RESPONSE'],
321
+ message: ['MESSAGE_RESPONSE', 'MESSAGE_REQUEST'],
322
+ },
323
+ ];
324
+ function fakeTestPolicy(modifier) {
325
+ const base = {
326
+ id: 'test-policy',
327
+ name: 'Policy to test UI',
328
+ icon: 'gio:gift',
329
+ proxy: ['REQUEST', 'RESPONSE'],
330
+ message: ['REQUEST', 'RESPONSE', 'MESSAGE_RESPONSE', 'MESSAGE_REQUEST'],
331
+ };
332
+ if (isFunction(modifier)) {
333
+ return modifier(base);
334
+ }
335
+ return Object.assign(Object.assign({}, base), modifier);
336
+ }
337
+ function fakeAllPolicies() {
338
+ return [
339
+ fakeTestPolicy(),
340
+ fakeTestPolicy({
341
+ name: 'Test policy - Witout icon',
342
+ icon: undefined,
343
+ }),
344
+ fakeTestPolicy({
345
+ name: 'Test policy - With very long name to test overflow. Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
346
+ 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.',
347
+ }),
348
+ ...POLICIES_V4_UNREGISTERED_ICON.map(policy => (Object.assign(Object.assign({}, policy), (policy.icon ? { icon: `gio-literal:${policy.id}` } : {})))),
349
+ ];
350
+ }
351
+
210
352
  /*
211
353
  * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
212
354
  *
@@ -767,7 +909,7 @@ class GioPolicyStudioFlowExecutionFormDialogHarness extends ComponentHarness {
767
909
  }
768
910
  GioPolicyStudioFlowExecutionFormDialogHarness.hostSelector = 'gio-ps-flow-execution-form-dialog';
769
911
 
770
- class GioPolicyStudioDetailsPhasePolicyHarness extends ComponentHarness {
912
+ class GioPolicyStudioDetailsPhaseStepHarness extends ComponentHarness {
771
913
  /**
772
914
  * Get Harness with the given filter.
773
915
  *
@@ -775,16 +917,22 @@ class GioPolicyStudioDetailsPhasePolicyHarness extends ComponentHarness {
775
917
  * @return a `HarnessPredicate` configured with the given options.
776
918
  */
777
919
  static with(options = {}) {
778
- return new HarnessPredicate(GioPolicyStudioDetailsPhasePolicyHarness, options);
920
+ return new HarnessPredicate(GioPolicyStudioDetailsPhaseStepHarness, options);
779
921
  }
780
922
  getName() {
781
923
  var _a;
782
924
  return __awaiter(this, void 0, void 0, function* () {
783
- return (_a = (yield (yield this.locatorFor(SpanHarness.with({ selector: '.info__primary__name' }))()).getText())) !== null && _a !== void 0 ? _a : '';
925
+ return (_a = (yield (yield this.locatorFor(SpanHarness.with({ selector: '.info__head__name' }))()).getText())) !== null && _a !== void 0 ? _a : '';
926
+ });
927
+ }
928
+ clickOnEdit() {
929
+ return __awaiter(this, void 0, void 0, function* () {
930
+ const matMenu = yield this.locatorFor(MatMenuHarness)();
931
+ yield matMenu.clickItem({ text: 'Edit' });
784
932
  });
785
933
  }
786
934
  }
787
- GioPolicyStudioDetailsPhasePolicyHarness.hostSelector = 'gio-ps-flow-details-phase-policy';
935
+ GioPolicyStudioDetailsPhaseStepHarness.hostSelector = 'gio-ps-flow-details-phase-step';
788
936
 
789
937
  const TYPE_TO_TEXT = {
790
938
  REQUEST: 'Request phase',
@@ -815,7 +963,7 @@ class GioPolicyStudioDetailsPhaseHarness extends ComponentHarness {
815
963
  }
816
964
  return yield parallel(() => stepsDiv.map((stepDiv) => __awaiter(this, void 0, void 0, function* () {
817
965
  var _a;
818
- const idConnector = !!(yield stepDiv.getText({ childSelector: '.content__step__connectorBadge' }));
966
+ const idConnector = !!(yield stepDiv.getText({ childSelector: '.content__step__connector__badge' }));
819
967
  if (idConnector) {
820
968
  return {
821
969
  text: (_a = (yield stepDiv.getText())) !== null && _a !== void 0 ? _a : '',
@@ -823,15 +971,123 @@ class GioPolicyStudioDetailsPhaseHarness extends ComponentHarness {
823
971
  };
824
972
  }
825
973
  return {
826
- text: yield (yield stepDiv.childLocatorFor(GioPolicyStudioDetailsPhasePolicyHarness)()).getName(),
827
- type: idConnector ? 'connector' : 'policy',
974
+ text: yield (yield stepDiv.childLocatorFor(GioPolicyStudioDetailsPhaseStepHarness)()).getName(),
975
+ type: 'step',
828
976
  };
829
977
  })));
830
978
  });
831
979
  }
980
+ getStep(index) {
981
+ return __awaiter(this, void 0, void 0, function* () {
982
+ const steps = yield this.locatorForAll(GioPolicyStudioDetailsPhaseStepHarness)();
983
+ if (!steps[index]) {
984
+ throw new Error(`Step ${index} not found`);
985
+ }
986
+ return steps[index];
987
+ });
988
+ }
989
+ clickAddStep(index) {
990
+ return __awaiter(this, void 0, void 0, function* () {
991
+ const addStepBtn = yield this.locatorForAll(DivHarness.with({ selector: '.content__step' }))().then(divs => divs[index]);
992
+ yield addStepBtn
993
+ .childLocatorFor(MatButtonHarness.with({ selector: '.content__step__addBtn' }))()
994
+ .then(btn => btn.click());
995
+ });
996
+ }
832
997
  }
833
998
  GioPolicyStudioDetailsPhaseHarness.hostSelector = 'gio-ps-flow-details-phase';
834
999
 
1000
+ class GioPolicyStudioStepFormHarness extends ComponentHarness {
1001
+ constructor() {
1002
+ super(...arguments);
1003
+ this.getDescriptionInput = this.locatorFor(MatInputHarness.with({ selector: '[formControlName="description"]' }));
1004
+ }
1005
+ setStepForm(stepForm) {
1006
+ return __awaiter(this, void 0, void 0, function* () {
1007
+ if (stepForm.description) {
1008
+ const descriptionInput = yield this.getDescriptionInput();
1009
+ yield descriptionInput.setValue(stepForm.description);
1010
+ }
1011
+ });
1012
+ }
1013
+ getStepFormValue() {
1014
+ return __awaiter(this, void 0, void 0, function* () {
1015
+ const descriptionInput = yield this.getDescriptionInput();
1016
+ return {
1017
+ description: yield descriptionInput.getValue(),
1018
+ };
1019
+ });
1020
+ }
1021
+ }
1022
+ GioPolicyStudioStepFormHarness.hostSelector = 'gio-ps-step-form';
1023
+
1024
+ class GioPolicyStudioPoliciesCatalogDialogHarness extends ComponentHarness {
1025
+ constructor() {
1026
+ super(...arguments);
1027
+ this.policiesLocator = this.locatorForAll(DivHarness.with({ selector: '.policiesCatalog__policy' }));
1028
+ }
1029
+ getPhase() {
1030
+ return __awaiter(this, void 0, void 0, function* () {
1031
+ const phase = yield this.locatorFor('.title__phase')();
1032
+ return phase.text();
1033
+ });
1034
+ }
1035
+ getPoliciesName() {
1036
+ return __awaiter(this, void 0, void 0, function* () {
1037
+ const policies = yield this.locatorForAll('.policiesCatalog__policy__head__name')();
1038
+ return parallel(() => policies.map(policy => policy.text()));
1039
+ });
1040
+ }
1041
+ selectPolicy(policyName) {
1042
+ return __awaiter(this, void 0, void 0, function* () {
1043
+ const policies = yield this.policiesLocator();
1044
+ const policy = policies.find((p) => __awaiter(this, void 0, void 0, function* () { return (yield p.getText({ childSelector: '.policiesCatalog__policy__head__name' })) === policyName; }));
1045
+ if (!policy) {
1046
+ throw new Error(`Policy ${policyName} not found`);
1047
+ }
1048
+ const selectBtn = yield policy.childLocatorFor(MatButtonHarness.with({ selector: '.policiesCatalog__policy__selectBtn' }))();
1049
+ yield selectBtn.click();
1050
+ });
1051
+ }
1052
+ getSelectedPolicyName() {
1053
+ return __awaiter(this, void 0, void 0, function* () {
1054
+ const policy = yield this.locatorFor('.policyForm__info__head__name')();
1055
+ return policy.text();
1056
+ });
1057
+ }
1058
+ clickAddPolicyButton() {
1059
+ return __awaiter(this, void 0, void 0, function* () {
1060
+ const addBtn = yield this.locatorFor(MatButtonHarness.with({ selector: '.actions__addBtn' }))();
1061
+ yield addBtn.click();
1062
+ });
1063
+ }
1064
+ getStepForm() {
1065
+ return __awaiter(this, void 0, void 0, function* () {
1066
+ return yield this.locatorFor(GioPolicyStudioStepFormHarness)();
1067
+ });
1068
+ }
1069
+ }
1070
+ GioPolicyStudioPoliciesCatalogDialogHarness.hostSelector = 'gio-ps-policies-catalog-dialog';
1071
+
1072
+ class GioPolicyStudioStepEditDialogHarness extends ComponentHarness {
1073
+ getPolicyName() {
1074
+ return __awaiter(this, void 0, void 0, function* () {
1075
+ return (yield this.locatorFor('.title__name')()).text();
1076
+ });
1077
+ }
1078
+ getStepForm() {
1079
+ return __awaiter(this, void 0, void 0, function* () {
1080
+ return yield this.locatorFor(GioPolicyStudioStepFormHarness)();
1081
+ });
1082
+ }
1083
+ save() {
1084
+ return __awaiter(this, void 0, void 0, function* () {
1085
+ return (yield this.locatorFor('.actions__saveBtn')()).click();
1086
+ });
1087
+ }
1088
+ }
1089
+ GioPolicyStudioStepEditDialogHarness.hostSelector = 'gio-ps-step-edit-dialog';
1090
+
835
1091
  class GioPolicyStudioHarness extends ComponentHarness {
836
1092
  constructor() {
837
1093
  super(...arguments);
@@ -902,17 +1158,17 @@ class GioPolicyStudioHarness extends ComponentHarness {
902
1158
  });
903
1159
  }
904
1160
  /**
905
- * Get selected flow steps phase
1161
+ * Get selected flow phase harness
906
1162
  * @param tabLabel Select tabs before try to find phase. Useful to find Event phases for Message API
907
1163
  */
908
- getSelectedFlowSteps(phaseType, tabLabel) {
1164
+ getSelectedFlowPhase(phaseType, tabLabel) {
909
1165
  return __awaiter(this, void 0, void 0, function* () {
910
1166
  if (tabLabel) {
911
1167
  const matTabsHarness = yield this.locatorFor(MatTabGroupHarness.with({ selector: '.content__tabs' }))();
912
1168
  yield matTabsHarness.selectTab({ label: tabLabel });
913
1169
  }
914
- const steps = yield (yield this.phaseHarness(phaseType)).getSteps();
915
- return steps ? steps : 'DISABLED';
1170
+ const steps = yield yield this.phaseHarness(phaseType);
1171
+ return steps ? steps : undefined;
916
1172
  });
917
1173
  }
918
1174
  /**
@@ -923,6 +1179,46 @@ class GioPolicyStudioHarness extends ComponentHarness {
923
1179
  yield (yield this.locatorFor(MatButtonHarness.with({ text: /Save/ }))()).click();
924
1180
  });
925
1181
  }
1182
+ /**
1183
+ * Add a step to a phase
1184
+ * @param phaseType Phase type where to add the step
1185
+ * @param index Index where to add the step. (Add button index)
1186
+ * @param stepConfig Step to add
1187
+ */
1188
+ addStepToPhase(phaseType, index, stepConfig) {
1189
+ return __awaiter(this, void 0, void 0, function* () {
1190
+ const tabLabel = phaseType === 'PUBLISH' || phaseType === 'SUBSCRIBE' ? 'Event messages' : undefined;
1191
+ const phase = yield this.getSelectedFlowPhase(phaseType, tabLabel);
1192
+ if (!phase) {
1193
+ throw new Error(`No phase found for type ${phaseType}`);
1194
+ }
1195
+ yield phase.clickAddStep(index);
1196
+ const catalogDialog = yield this.documentRootLocatorFactory().locatorFor(GioPolicyStudioPoliciesCatalogDialogHarness)();
1197
+ yield catalogDialog.selectPolicy(stepConfig.policyName);
1198
+ yield (yield catalogDialog.getStepForm()).setStepForm(stepConfig);
1199
+ yield catalogDialog.clickAddPolicyButton();
1200
+ });
1201
+ }
1202
+ /**
1203
+ * Edit a step configuration
1204
+ * @param phaseType Phase type where to edit the step
1205
+ * @param index Index of the policy step to edit
1206
+ * @param stepConfig Step configuration
1207
+ */
1208
+ editStepConfig(phaseType, index, stepConfig) {
1209
+ return __awaiter(this, void 0, void 0, function* () {
1210
+ const tabLabel = phaseType === 'PUBLISH' || phaseType === 'SUBSCRIBE' ? 'Event messages' : undefined;
1211
+ const phase = yield this.getSelectedFlowPhase(phaseType, tabLabel);
1212
+ if (!phase) {
1213
+ throw new Error(`No phase found for type ${phaseType}`);
1214
+ }
1215
+ const step = yield phase.getStep(index);
1216
+ yield step.clickOnEdit();
1217
+ const stepEditDialog = yield this.documentRootLocatorFactory().locatorFor(GioPolicyStudioStepEditDialogHarness)();
1218
+ yield (yield stepEditDialog.getStepForm()).setStepForm(stepConfig);
1219
+ yield stepEditDialog.save();
1220
+ });
1221
+ }
926
1222
  setFlowFormDialog(flow) {
927
1223
  var _a, _b, _c;
928
1224
  return __awaiter(this, void 0, void 0, function* () {
@@ -995,5 +1291,5 @@ GioPolicyStudioHarness.hostSelector = 'gio-policy-studio';
995
1291
  * Generated bundle index. Do not edit.
996
1292
  */
997
1293
 
998
- export { GioPolicyStudioHarness, fakeBestMatchFlowExecution, fakeChannelFlow, fakeDefaultFlowExecution, fakeHTTPGetMessageEntrypoint, fakeHTTPPostMessageEntrypoint, fakeHTTPProxyEndpoint, fakeHTTPProxyEntrypoint, fakeHttpFlow, fakeKafkaMessageEndpoint, fakeMockMessageEndpoint, fakeMockPolicyStep, fakePlan, fakeRateLimitStep, fakeSSEMessageEntrypoint, fakeWebhookMessageEntrypoint, fakeWebsocketMessageEntrypoint, fakeXmlToJsonStep };
1294
+ export { GioPolicyStudioHarness, POLICIES_V4_UNREGISTERED_ICON, fakeAllPolicies, fakeBestMatchFlowExecution, fakeChannelFlow, fakeDefaultFlowExecution, fakeHTTPGetMessageEntrypoint, fakeHTTPPostMessageEntrypoint, fakeHTTPProxyEndpoint, fakeHTTPProxyEntrypoint, fakeHttpFlow, fakeJsonToXmlStep, fakeKafkaMessageEndpoint, fakeMockMessageEndpoint, fakePlan, fakeRateLimitStep, fakeSSEMessageEntrypoint, fakeTestPolicy, fakeTestPolicyStep, fakeWebhookMessageEntrypoint, fakeWebsocketMessageEntrypoint };
999
1295
  //# sourceMappingURL=gravitee-ui-policy-studio-angular-testing.mjs.map