kwikid-forms 0.1.5 → 0.1.8

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 (70) hide show
  1. package/README.md +43 -43
  2. package/bundles/kwikid-forms.umd.js +4435 -4229
  3. package/bundles/kwikid-forms.umd.js.map +1 -1
  4. package/esm2015/kwikid-forms.js +4 -4
  5. package/esm2015/lib/builder/builder.component.js +138 -138
  6. package/esm2015/lib/builder/builder.module.js +21 -21
  7. package/esm2015/lib/kwikid-forms.module.js +38 -38
  8. package/esm2015/lib/renderer/form-view/definitions/actions/form-view.actions.enum.definitions.js +21 -20
  9. package/esm2015/lib/renderer/form-view/definitions/actions/form-view.actions.type.definitions.js +2 -2
  10. package/esm2015/lib/renderer/form-view/definitions/apis/form-view.apis.enum.definitions.js +8 -8
  11. package/esm2015/lib/renderer/form-view/definitions/apis/form-view.apis.type.definitions.js +2 -2
  12. package/esm2015/lib/renderer/form-view/definitions/common/form-view.common.enum.definitions.js +101 -101
  13. package/esm2015/lib/renderer/form-view/definitions/common/form-view.common.type.definitions.js +2 -2
  14. package/esm2015/lib/renderer/form-view/definitions/fields/form-view.fields.enum.definitions.js +16 -15
  15. package/esm2015/lib/renderer/form-view/definitions/fields/form-view.fields.type.definitions.js +2 -2
  16. package/esm2015/lib/renderer/form-view/definitions/sources/form-view.sources.type.definitions.js +2 -2
  17. package/esm2015/lib/renderer/form-view/definitions/triggers/form-view.triggers.type.definitions.js +2 -2
  18. package/esm2015/lib/renderer/form-view/definitions/validations/form-view.validations.type.definitions.js +2 -2
  19. package/esm2015/lib/renderer/form-view/form-view.component.js +809 -814
  20. package/esm2015/lib/renderer/form-view/form-view.module.js +45 -44
  21. package/esm2015/lib/renderer/form-view/form-view.service.js +29 -29
  22. package/esm2015/lib/renderer/form-view/helpers/form-view.apis.helper.js +146 -137
  23. package/esm2015/lib/renderer/form-view/helpers/form-view.common.helper.js +136 -136
  24. package/esm2015/lib/renderer/form-view/helpers/form-view.defaults.helper.js +94 -63
  25. package/esm2015/lib/renderer/form-view/helpers/form-view.fields.helper.js +203 -203
  26. package/esm2015/lib/renderer/form-view/helpers/form-view.validations.helper.js +170 -161
  27. package/esm2015/lib/renderer/form-view/pipes/safe-html.pipe.js +25 -0
  28. package/esm2015/lib/renderer/forms-list/forms-list.component.js +89 -89
  29. package/esm2015/lib/renderer/forms-list/forms-list.module.js +37 -37
  30. package/esm2015/lib/renderer/renderer.component.js +282 -278
  31. package/esm2015/lib/renderer/renderer.config-converter.helper.js +641 -586
  32. package/esm2015/lib/renderer/renderer.helper.js +50 -50
  33. package/esm2015/lib/renderer/renderer.module.js +50 -50
  34. package/esm2015/lib/renderer/renderer.service.js +172 -172
  35. package/esm2015/public_api.js +17 -17
  36. package/fesm2015/kwikid-forms.js +3156 -3030
  37. package/fesm2015/kwikid-forms.js.map +1 -1
  38. package/kwikid-forms.d.ts +5 -5
  39. package/lib/builder/builder.component.d.ts +68 -68
  40. package/lib/builder/builder.module.d.ts +10 -10
  41. package/lib/kwikid-forms.module.d.ts +10 -10
  42. package/lib/renderer/form-view/definitions/actions/form-view.actions.enum.definitions.d.ts +19 -18
  43. package/lib/renderer/form-view/definitions/actions/form-view.actions.type.definitions.d.ts +91 -91
  44. package/lib/renderer/form-view/definitions/apis/form-view.apis.enum.definitions.d.ts +6 -6
  45. package/lib/renderer/form-view/definitions/apis/form-view.apis.type.definitions.d.ts +40 -40
  46. package/lib/renderer/form-view/definitions/common/form-view.common.enum.definitions.d.ts +97 -97
  47. package/lib/renderer/form-view/definitions/common/form-view.common.type.definitions.d.ts +7 -7
  48. package/lib/renderer/form-view/definitions/fields/form-view.fields.enum.definitions.d.ts +14 -13
  49. package/lib/renderer/form-view/definitions/fields/form-view.fields.type.definitions.d.ts +144 -136
  50. package/lib/renderer/form-view/definitions/sources/form-view.sources.type.definitions.d.ts +16 -16
  51. package/lib/renderer/form-view/definitions/triggers/form-view.triggers.type.definitions.d.ts +1 -1
  52. package/lib/renderer/form-view/definitions/validations/form-view.validations.type.definitions.d.ts +16 -16
  53. package/lib/renderer/form-view/form-view.component.d.ts +80 -80
  54. package/lib/renderer/form-view/form-view.module.d.ts +13 -12
  55. package/lib/renderer/form-view/form-view.service.d.ts +5 -5
  56. package/lib/renderer/form-view/helpers/form-view.apis.helper.d.ts +18 -17
  57. package/lib/renderer/form-view/helpers/form-view.common.helper.d.ts +19 -19
  58. package/lib/renderer/form-view/helpers/form-view.defaults.helper.d.ts +12 -10
  59. package/lib/renderer/form-view/helpers/form-view.fields.helper.d.ts +24 -24
  60. package/lib/renderer/form-view/helpers/form-view.validations.helper.d.ts +28 -25
  61. package/lib/renderer/form-view/pipes/safe-html.pipe.d.ts +15 -0
  62. package/lib/renderer/forms-list/forms-list.component.d.ts +22 -22
  63. package/lib/renderer/forms-list/forms-list.module.d.ts +11 -11
  64. package/lib/renderer/renderer.component.d.ts +36 -36
  65. package/lib/renderer/renderer.config-converter.helper.d.ts +7 -7
  66. package/lib/renderer/renderer.helper.d.ts +6 -6
  67. package/lib/renderer/renderer.module.d.ts +14 -14
  68. package/lib/renderer/renderer.service.d.ts +28 -28
  69. package/package.json +3 -3
  70. package/public_api.d.ts +9 -9
@@ -1,44 +1,45 @@
1
- import { CommonModule } from "@angular/common";
2
- import { NgModule } from "@angular/core";
3
- import { FormsModule, ReactiveFormsModule } from "@angular/forms";
4
- import { TuiLabelModule, TuiSvgModule } from "@taiga-ui/core";
5
- import { TuiPushModule } from "@taiga-ui/kit";
6
- import { KwikUIModule } from "kwikui";
7
- import { KwikIDFormViewComponent } from "./form-view.component";
8
- import * as i0 from "@angular/core";
9
- export class KwikIDFormViewModule {
10
- }
11
- /** @nocollapse */ KwikIDFormViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- /** @nocollapse */ KwikIDFormViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormViewModule, declarations: [KwikIDFormViewComponent], imports: [CommonModule,
13
- FormsModule,
14
- ReactiveFormsModule,
15
- TuiLabelModule,
16
- TuiPushModule,
17
- TuiSvgModule,
18
- KwikUIModule], exports: [KwikIDFormViewComponent] });
19
- /** @nocollapse */ KwikIDFormViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormViewModule, imports: [[
20
- CommonModule,
21
- FormsModule,
22
- ReactiveFormsModule,
23
- TuiLabelModule,
24
- TuiPushModule,
25
- TuiSvgModule,
26
- KwikUIModule
27
- ]] });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormViewModule, decorators: [{
29
- type: NgModule,
30
- args: [{
31
- declarations: [KwikIDFormViewComponent],
32
- imports: [
33
- CommonModule,
34
- FormsModule,
35
- ReactiveFormsModule,
36
- TuiLabelModule,
37
- TuiPushModule,
38
- TuiSvgModule,
39
- KwikUIModule
40
- ],
41
- exports: [KwikIDFormViewComponent]
42
- }]
43
- }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9mb3JtLXZpZXcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFlaEUsTUFBTSxPQUFPLG9CQUFvQjs7cUlBQXBCLG9CQUFvQjtzSUFBcEIsb0JBQW9CLGlCQVpoQix1QkFBdUIsYUFFcEMsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsY0FBYztRQUNkLGFBQWE7UUFDYixZQUFZO1FBQ1osWUFBWSxhQUVKLHVCQUF1QjtzSUFFdEIsb0JBQW9CLFlBWHRCO1lBQ1AsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsY0FBYztZQUNkLGFBQWE7WUFDYixZQUFZO1lBQ1osWUFBWTtTQUNiOzRGQUdVLG9CQUFvQjtrQkFiaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDdkMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixZQUFZO3dCQUNaLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFR1aUxhYmVsTW9kdWxlLCBUdWlTdmdNb2R1bGUgfSBmcm9tIFwiQHRhaWdhLXVpL2NvcmVcIjtcclxuaW1wb3J0IHsgVHVpUHVzaE1vZHVsZSB9IGZyb20gXCJAdGFpZ2EtdWkva2l0XCI7XHJcbmltcG9ydCB7IEt3aWtVSU1vZHVsZSB9IGZyb20gXCJrd2lrdWlcIjtcclxuaW1wb3J0IHsgS3dpa0lERm9ybVZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi9mb3JtLXZpZXcuY29tcG9uZW50XCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0t3aWtJREZvcm1WaWV3Q29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBUdWlMYWJlbE1vZHVsZSxcclxuICAgIFR1aVB1c2hNb2R1bGUsXHJcbiAgICBUdWlTdmdNb2R1bGUsXHJcbiAgICBLd2lrVUlNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtLd2lrSURGb3JtVmlld0NvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEt3aWtJREZvcm1WaWV3TW9kdWxlIHt9XHJcbiJdfQ==
1
+ import { CommonModule } from "@angular/common";
2
+ import { NgModule } from "@angular/core";
3
+ import { FormsModule, ReactiveFormsModule } from "@angular/forms";
4
+ import { TuiLabelModule, TuiSvgModule } from "@taiga-ui/core";
5
+ import { TuiPushModule } from "@taiga-ui/kit";
6
+ import { KwikUIModule } from "kwikui";
7
+ import { KwikIDFormViewComponent } from "./form-view.component";
8
+ import { SafeHtmlPipe } from "./pipes/safe-html.pipe";
9
+ import * as i0 from "@angular/core";
10
+ export class KwikIDFormViewModule {
11
+ }
12
+ /** @nocollapse */ KwikIDFormViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ /** @nocollapse */ KwikIDFormViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, declarations: [KwikIDFormViewComponent, SafeHtmlPipe], imports: [CommonModule,
14
+ FormsModule,
15
+ ReactiveFormsModule,
16
+ TuiLabelModule,
17
+ TuiPushModule,
18
+ TuiSvgModule,
19
+ KwikUIModule], exports: [KwikIDFormViewComponent] });
20
+ /** @nocollapse */ KwikIDFormViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, imports: [[
21
+ CommonModule,
22
+ FormsModule,
23
+ ReactiveFormsModule,
24
+ TuiLabelModule,
25
+ TuiPushModule,
26
+ TuiSvgModule,
27
+ KwikUIModule
28
+ ]] });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, decorators: [{
30
+ type: NgModule,
31
+ args: [{
32
+ declarations: [KwikIDFormViewComponent, SafeHtmlPipe],
33
+ imports: [
34
+ CommonModule,
35
+ FormsModule,
36
+ ReactiveFormsModule,
37
+ TuiLabelModule,
38
+ TuiPushModule,
39
+ TuiSvgModule,
40
+ KwikUIModule
41
+ ],
42
+ exports: [KwikIDFormViewComponent]
43
+ }]
44
+ }] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9mb3JtLXZpZXcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBZXRELE1BQU0sT0FBTyxvQkFBb0I7O3FJQUFwQixvQkFBb0I7c0lBQXBCLG9CQUFvQixpQkFaaEIsdUJBQXVCLEVBQUUsWUFBWSxhQUVsRCxZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsYUFBYTtRQUNiLFlBQVk7UUFDWixZQUFZLGFBRUosdUJBQXVCO3NJQUV0QixvQkFBb0IsWUFYdEI7WUFDUCxZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsYUFBYTtZQUNiLFlBQVk7WUFDWixZQUFZO1NBQ2I7NEZBR1Usb0JBQW9CO2tCQWJoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHVCQUF1QixFQUFFLFlBQVksQ0FBQztvQkFDckQsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixZQUFZO3dCQUNaLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IFR1aUxhYmVsTW9kdWxlLCBUdWlTdmdNb2R1bGUgfSBmcm9tIFwiQHRhaWdhLXVpL2NvcmVcIjtcbmltcG9ydCB7IFR1aVB1c2hNb2R1bGUgfSBmcm9tIFwiQHRhaWdhLXVpL2tpdFwiO1xuaW1wb3J0IHsgS3dpa1VJTW9kdWxlIH0gZnJvbSBcImt3aWt1aVwiO1xuaW1wb3J0IHsgS3dpa0lERm9ybVZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi9mb3JtLXZpZXcuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUgfSBmcm9tIFwiLi9waXBlcy9zYWZlLWh0bWwucGlwZVwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtLd2lrSURGb3JtVmlld0NvbXBvbmVudCwgU2FmZUh0bWxQaXBlXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFR1aUxhYmVsTW9kdWxlLFxuICAgIFR1aVB1c2hNb2R1bGUsXG4gICAgVHVpU3ZnTW9kdWxlLFxuICAgIEt3aWtVSU1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbS3dpa0lERm9ybVZpZXdDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEt3aWtJREZvcm1WaWV3TW9kdWxlIHt9XG4iXX0=
@@ -1,29 +1,29 @@
1
- import { __awaiter, __decorate } from "tslib";
2
- import { FormControl, FormGroup } from "@angular/forms";
3
- import { logMethod } from "kwikid-toolkit";
4
- import { Defaults } from "./helpers/form-view.defaults.helper";
5
- import { convertValueFromBasicFormatToKwikUIFormat } from "./helpers/form-view.fields.helper";
6
- import { Validations } from "./helpers/form-view.validations.helper";
7
- export class KwikIDFormViewService {
8
- constructor() { }
9
- // 'init' stage of the form
10
- createFormGroup(fields, formData, previousFormData, allFormsData, takeAction) {
11
- return __awaiter(this, void 0, void 0, function* () {
12
- let formGroup = new FormGroup({});
13
- for (let field of fields) {
14
- if (field.type !== "title") {
15
- const defaults = new Defaults(field, allFormsData, formData, previousFormData, takeAction);
16
- let value = yield defaults.getDefaultValue();
17
- value = convertValueFromBasicFormatToKwikUIFormat(field, value);
18
- const validators = new Validations(field, formData, previousFormData, allFormsData, takeAction).getFieldValidators(field);
19
- formGroup.addControl(field.key, new FormControl({ value: value, disabled: field.disabled }, { validators: validators }));
20
- }
21
- }
22
- return formGroup;
23
- });
24
- }
25
- }
26
- __decorate([
27
- logMethod
28
- ], KwikIDFormViewService.prototype, "createFormGroup", null);
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3JtLXZpZXcvZm9ybS12aWV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFckUsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxnQkFBZSxDQUFDO0lBRWhCLDJCQUEyQjtJQUVyQixlQUFlLENBQ25CLE1BQVcsRUFDWCxRQUFhLEVBQ2IsZ0JBQXFCLEVBQ3JCLFlBQWlCLEVBQ2pCLFVBQW9COztZQUVwQixJQUFJLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVsQyxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRTtnQkFDeEIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtvQkFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQzNCLEtBQUssRUFDTCxZQUFZLEVBQ1osUUFBUSxFQUNSLGdCQUFnQixFQUNoQixVQUFVLENBQ1gsQ0FBQztvQkFDRixJQUFJLEtBQUssR0FBRyxNQUFNLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDN0MsS0FBSyxHQUFHLHlDQUF5QyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFFaEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxXQUFXLENBQ2hDLEtBQUssRUFDTCxRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixVQUFVLENBQ1gsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFFNUIsU0FBUyxDQUFDLFVBQVUsQ0FDbEIsS0FBSyxDQUFDLEdBQUcsRUFDVCxJQUFJLFdBQVcsQ0FDYixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFDMUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQzNCLENBQ0YsQ0FBQztpQkFDSDthQUNGO1lBRUQsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztLQUFBO0NBQ0Y7QUF6Q0M7SUFEQyxTQUFTOzREQXlDVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgbG9nTWV0aG9kIH0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XHJcbmltcG9ydCB7IERlZmF1bHRzIH0gZnJvbSBcIi4vaGVscGVycy9mb3JtLXZpZXcuZGVmYXVsdHMuaGVscGVyXCI7XHJcbmltcG9ydCB7IGNvbnZlcnRWYWx1ZUZyb21CYXNpY0Zvcm1hdFRvS3dpa1VJRm9ybWF0IH0gZnJvbSBcIi4vaGVscGVycy9mb3JtLXZpZXcuZmllbGRzLmhlbHBlclwiO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9ucyB9IGZyb20gXCIuL2hlbHBlcnMvZm9ybS12aWV3LnZhbGlkYXRpb25zLmhlbHBlclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEt3aWtJREZvcm1WaWV3U2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICAvLyAnaW5pdCcgc3RhZ2Ugb2YgdGhlIGZvcm1cclxuICBAbG9nTWV0aG9kXHJcbiAgYXN5bmMgY3JlYXRlRm9ybUdyb3VwKFxyXG4gICAgZmllbGRzOiBhbnksXHJcbiAgICBmb3JtRGF0YTogYW55LFxyXG4gICAgcHJldmlvdXNGb3JtRGF0YTogYW55LFxyXG4gICAgYWxsRm9ybXNEYXRhOiBhbnksXHJcbiAgICB0YWtlQWN0aW9uOiBGdW5jdGlvblxyXG4gICkge1xyXG4gICAgbGV0IGZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cclxuICAgIGZvciAobGV0IGZpZWxkIG9mIGZpZWxkcykge1xyXG4gICAgICBpZiAoZmllbGQudHlwZSAhPT0gXCJ0aXRsZVwiKSB7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdHMgPSBuZXcgRGVmYXVsdHMoXHJcbiAgICAgICAgICBmaWVsZCxcclxuICAgICAgICAgIGFsbEZvcm1zRGF0YSxcclxuICAgICAgICAgIGZvcm1EYXRhLFxyXG4gICAgICAgICAgcHJldmlvdXNGb3JtRGF0YSxcclxuICAgICAgICAgIHRha2VBY3Rpb25cclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IGF3YWl0IGRlZmF1bHRzLmdldERlZmF1bHRWYWx1ZSgpO1xyXG4gICAgICAgIHZhbHVlID0gY29udmVydFZhbHVlRnJvbUJhc2ljRm9ybWF0VG9Ld2lrVUlGb3JtYXQoZmllbGQsIHZhbHVlKTtcclxuXHJcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IG5ldyBWYWxpZGF0aW9ucyhcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgZm9ybURhdGEsXHJcbiAgICAgICAgICBwcmV2aW91c0Zvcm1EYXRhLFxyXG4gICAgICAgICAgYWxsRm9ybXNEYXRhLFxyXG4gICAgICAgICAgdGFrZUFjdGlvblxyXG4gICAgICAgICkuZ2V0RmllbGRWYWxpZGF0b3JzKGZpZWxkKTtcclxuXHJcbiAgICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBmaWVsZC5rZXksXHJcbiAgICAgICAgICBuZXcgRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IHZhbHVlLCBkaXNhYmxlZDogZmllbGQuZGlzYWJsZWQgfSxcclxuICAgICAgICAgICAgeyB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzIH1cclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvcm1Hcm91cDtcclxuICB9XHJcbn1cclxuIl19
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { FormControl, FormGroup } from "@angular/forms";
3
+ import { logMethod } from "kwikid-toolkit";
4
+ import { Defaults } from "./helpers/form-view.defaults.helper";
5
+ import { convertValueFromBasicFormatToKwikUIFormat } from "./helpers/form-view.fields.helper";
6
+ import { Validations } from "./helpers/form-view.validations.helper";
7
+ export class KwikIDFormViewService {
8
+ constructor() { }
9
+ // 'init' stage of the form
10
+ createFormGroup(fields, formData, previousFormData, allFormsData, takeAction) {
11
+ return __awaiter(this, void 0, void 0, function* () {
12
+ let formGroup = new FormGroup({});
13
+ for (let field of fields) {
14
+ if (field.isFormElement) {
15
+ const defaults = new Defaults(field, fields, allFormsData, formData, previousFormData, takeAction);
16
+ let value = yield defaults.getDefaultValue();
17
+ value = convertValueFromBasicFormatToKwikUIFormat(field, value);
18
+ const validators = new Validations(field, fields, formData, previousFormData, allFormsData, takeAction).getFieldValidators(field);
19
+ formGroup.addControl(field.key, new FormControl({ value: value, disabled: field.disabled }, { validators: validators }));
20
+ }
21
+ }
22
+ return formGroup;
23
+ });
24
+ }
25
+ }
26
+ __decorate([
27
+ logMethod
28
+ ], KwikIDFormViewService.prototype, "createFormGroup", null);
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3JtLXZpZXcvZm9ybS12aWV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFckUsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxnQkFBZSxDQUFDO0lBRWhCLDJCQUEyQjtJQUVyQixlQUFlLENBQ25CLE1BQVcsRUFDWCxRQUFhLEVBQ2IsZ0JBQXFCLEVBQ3JCLFlBQWlCLEVBQ2pCLFVBQW9COztZQUVwQixJQUFJLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVsQyxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRTtnQkFDeEIsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO29CQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FDM0IsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osUUFBUSxFQUNSLGdCQUFnQixFQUNoQixVQUFVLENBQ1gsQ0FBQztvQkFDRixJQUFJLEtBQUssR0FBRyxNQUFNLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDN0MsS0FBSyxHQUFHLHlDQUF5QyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFFaEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxXQUFXLENBQ2hDLEtBQUssRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osVUFBVSxDQUNYLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBRTVCLFNBQVMsQ0FBQyxVQUFVLENBQ2xCLEtBQUssQ0FBQyxHQUFHLEVBQ1QsSUFBSSxXQUFXLENBQ2IsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQzFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUMzQixDQUNGLENBQUM7aUJBQ0g7YUFDRjtZQUVELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7S0FBQTtDQUNGO0FBM0NDO0lBREMsU0FBUzs0REEyQ1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBsb2dNZXRob2QgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IERlZmF1bHRzIH0gZnJvbSBcIi4vaGVscGVycy9mb3JtLXZpZXcuZGVmYXVsdHMuaGVscGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VmFsdWVGcm9tQmFzaWNGb3JtYXRUb0t3aWtVSUZvcm1hdCB9IGZyb20gXCIuL2hlbHBlcnMvZm9ybS12aWV3LmZpZWxkcy5oZWxwZXJcIjtcbmltcG9ydCB7IFZhbGlkYXRpb25zIH0gZnJvbSBcIi4vaGVscGVycy9mb3JtLXZpZXcudmFsaWRhdGlvbnMuaGVscGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBLd2lrSURGb3JtVmlld1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLy8gJ2luaXQnIHN0YWdlIG9mIHRoZSBmb3JtXG4gIEBsb2dNZXRob2RcbiAgYXN5bmMgY3JlYXRlRm9ybUdyb3VwKFxuICAgIGZpZWxkczogYW55LFxuICAgIGZvcm1EYXRhOiBhbnksXG4gICAgcHJldmlvdXNGb3JtRGF0YTogYW55LFxuICAgIGFsbEZvcm1zRGF0YTogYW55LFxuICAgIHRha2VBY3Rpb246IEZ1bmN0aW9uXG4gICkge1xuICAgIGxldCBmb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICAgIGZvciAobGV0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgaWYgKGZpZWxkLmlzRm9ybUVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdHMgPSBuZXcgRGVmYXVsdHMoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgZmllbGRzLFxuICAgICAgICAgIGFsbEZvcm1zRGF0YSxcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICBwcmV2aW91c0Zvcm1EYXRhLFxuICAgICAgICAgIHRha2VBY3Rpb25cbiAgICAgICAgKTtcbiAgICAgICAgbGV0IHZhbHVlID0gYXdhaXQgZGVmYXVsdHMuZ2V0RGVmYXVsdFZhbHVlKCk7XG4gICAgICAgIHZhbHVlID0gY29udmVydFZhbHVlRnJvbUJhc2ljRm9ybWF0VG9Ld2lrVUlGb3JtYXQoZmllbGQsIHZhbHVlKTtcblxuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gbmV3IFZhbGlkYXRpb25zKFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICBwcmV2aW91c0Zvcm1EYXRhLFxuICAgICAgICAgIGFsbEZvcm1zRGF0YSxcbiAgICAgICAgICB0YWtlQWN0aW9uXG4gICAgICAgICkuZ2V0RmllbGRWYWxpZGF0b3JzKGZpZWxkKTtcblxuICAgICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICBmaWVsZC5rZXksXG4gICAgICAgICAgbmV3IEZvcm1Db250cm9sKFxuICAgICAgICAgICAgeyB2YWx1ZTogdmFsdWUsIGRpc2FibGVkOiBmaWVsZC5kaXNhYmxlZCB9LFxuICAgICAgICAgICAgeyB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzIH1cbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1Hcm91cDtcbiAgfVxufVxuIl19
@@ -1,137 +1,146 @@
1
- import { __awaiter, __decorate } from "tslib";
2
- import { Actions, Condition, logMethod, Rules, Sources } from "kwikid-toolkit";
3
- import { setValueToObject } from "./form-view.common.helper";
4
- export class Apis {
5
- constructor(field, formData, previousFormData, allFormsData, takeAction) {
6
- this._field = field;
7
- this._formData = formData;
8
- this._previousFormData = previousFormData;
9
- this._allFormsData = allFormsData;
10
- this._takeAction = takeAction;
11
- this._api = field.api;
12
- this._request = field.api.request;
13
- this._response = field.api.response;
14
- this._status = field.api.status;
15
- }
16
- setRequestBodyParams() {
17
- var _a, _b, _c, _d;
18
- return __awaiter(this, void 0, void 0, function* () {
19
- let params = this._request.body.params;
20
- let paramIndex = 0;
21
- for (let param of params) {
22
- let sources = param.sources;
23
- let sourceIndex = 0;
24
- for (let source of sources) {
25
- const sources = new Sources({
26
- FIELD_CONFIG: this._field,
27
- FORM_DATA: this._formData,
28
- PREVIOUS_FORM_DATA: this._previousFormData,
29
- ALL_FORMS_DATA: this._allFormsData
30
- });
31
- const value = sources.getValueFromSource(source);
32
- // Set the Value of current source.
33
- this._field = setValueToObject(this._field, `api.request.body.params[${paramIndex}].sources[${sourceIndex}].value`, value);
34
- const validation = source.validation;
35
- const triggers = (_a = validation === null || validation === void 0 ? void 0 : validation.triggers) !== null && _a !== void 0 ? _a : [];
36
- const rules = (_b = validation === null || validation === void 0 ? void 0 : validation.rules) !== null && _b !== void 0 ? _b : [];
37
- const actions = (_d = (_c = validation) === null || _c === void 0 ? void 0 : _c.actions) !== null && _d !== void 0 ? _d : [];
38
- const rulesMapping = new Rules(rules, {
39
- FIELD_CONFIG: this._field,
40
- FORM_DATA: this._formData,
41
- PREVIOUS_FORM_DATA: this._previousFormData,
42
- ALL_FORMS_DATA: this._allFormsData
43
- }).mapping();
44
- for (let action of actions) {
45
- const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
46
- if (conditionEvaluation) {
47
- const actions = new Actions(action, rulesMapping, {
48
- FIELD_CONFIG: this._field,
49
- FORM_DATA: this._formData,
50
- PREVIOUS_FORM_DATA: this._previousFormData,
51
- ALL_FORMS_DATA: this._allFormsData
52
- }, this._takeAction);
53
- yield actions.execute();
54
- }
55
- }
56
- sourceIndex++;
57
- }
58
- paramIndex++;
59
- }
60
- return this._field;
61
- });
62
- }
63
- validateRequestBody() {
64
- var _a;
65
- return __awaiter(this, void 0, void 0, function* () {
66
- const body = this._request.body;
67
- const validation = body.validation;
68
- const triggers = validation.triggers;
69
- const rules = validation.rules;
70
- const actions = (_a = validation) === null || _a === void 0 ? void 0 : _a.actions;
71
- const rulesMapping = new Rules(rules, {
72
- FIELD_CONFIG: this._field,
73
- FORM_DATA: this._formData,
74
- PREVIOUS_FORM_DATA: this._previousFormData,
75
- ALL_FORMS_DATA: this._allFormsData
76
- }).mapping();
77
- for (let action of actions) {
78
- const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
79
- if (conditionSuccess) {
80
- const actions = new Actions(action, rulesMapping, {
81
- FIELD_CONFIG: this._field,
82
- FORM_DATA: this._formData,
83
- PREVIOUS_FORM_DATA: this._previousFormData,
84
- ALL_FORMS_DATA: this._allFormsData
85
- }, this._takeAction);
86
- yield actions.execute();
87
- }
88
- }
89
- return this._field;
90
- });
91
- }
92
- validateApiCallResponse() {
93
- return __awaiter(this, void 0, void 0, function* () {
94
- const validation = this._response.validation;
95
- const triggers = validation.triggers;
96
- const rules = validation.rules;
97
- const actions = validation.actions;
98
- const rulesMapping = new Rules(rules, {
99
- FIELD_CONFIG: this._field,
100
- FORM_DATA: this._formData,
101
- PREVIOUS_FORM_DATA: this._previousFormData,
102
- ALL_FORMS_DATA: this._allFormsData
103
- }).mapping();
104
- for (let action of actions) {
105
- const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
106
- if (conditionSuccess) {
107
- const actions = new Actions(action, rulesMapping, {
108
- FIELD_CONFIG: this._field,
109
- FORM_DATA: this._formData,
110
- PREVIOUS_FORM_DATA: this._previousFormData,
111
- ALL_FORMS_DATA: this._allFormsData
112
- }, this._takeAction);
113
- yield actions.execute();
114
- }
115
- }
116
- return this._field;
117
- });
118
- }
119
- getPropsValues() {
120
- return {
121
- field: this._field,
122
- formData: this._formData,
123
- previousFormData: this._previousFormData,
124
- allFormsData: this._allFormsData
125
- };
126
- }
127
- }
128
- __decorate([
129
- logMethod
130
- ], Apis.prototype, "setRequestBodyParams", null);
131
- __decorate([
132
- logMethod
133
- ], Apis.prototype, "validateRequestBody", null);
134
- __decorate([
135
- logMethod
136
- ], Apis.prototype, "validateApiCallResponse", null);
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmFwaXMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybS12aWV3L2hlbHBlcnMvZm9ybS12aWV3LmFwaXMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE9BQU8sRUFHUixNQUFNLGdCQUFnQixDQUFDO0FBYXhCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE1BQU0sT0FBTyxJQUFJO0lBWWYsWUFDRSxLQUFvQixFQUNwQixRQUFhLEVBQ2IsZ0JBQXFCLEVBQ3JCLFlBQWlCLEVBQ2pCLFVBQW9CO1FBRXBCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUU5QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUdZLG9CQUFvQjs7O1lBQy9CLElBQUksTUFBTSxHQUFnQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7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b25zLFxyXG4gIENvbmRpdGlvbixcclxuICBsb2dNZXRob2QsXHJcbiAgUnVsZXMsXHJcbiAgU291cmNlcyxcclxuICBUUnVsZSxcclxuICBUU291cmNlXHJcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XHJcbmltcG9ydCB7IFRBY3Rpb24gfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvYWN0aW9ucy9mb3JtLXZpZXcuYWN0aW9ucy50eXBlLmRlZmluaXRpb25zXCI7XHJcbmltcG9ydCB7XHJcbiAgVEFwaSxcclxuICBUQXBpUmVxdWVzdCxcclxuICBUQXBpUmVxdWVzdEJvZHksXHJcbiAgVEFwaVJlcXVlc3RCb2R5UGFyYW0sXHJcbiAgVEFwaVJlc3BvbnNlLFxyXG4gIFRBcGlTdGF0dXNcclxufSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvYXBpcy9mb3JtLXZpZXcuYXBpcy50eXBlLmRlZmluaXRpb25zXCI7XHJcbmltcG9ydCB7IFRGaWVsZEFwaUNhbGwgfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvZmllbGRzL2Zvcm0tdmlldy5maWVsZHMudHlwZS5kZWZpbml0aW9uc1wiO1xyXG5pbXBvcnQgeyBUVHJpZ2dlciB9IGZyb20gXCIuLi9kZWZpbml0aW9ucy90cmlnZ2Vycy9mb3JtLXZpZXcudHJpZ2dlcnMudHlwZS5kZWZpbml0aW9uc1wiO1xyXG5pbXBvcnQgeyBUVmFsaWRhdGlvbiB9IGZyb20gXCIuLi9kZWZpbml0aW9ucy92YWxpZGF0aW9ucy9mb3JtLXZpZXcudmFsaWRhdGlvbnMudHlwZS5kZWZpbml0aW9uc1wiO1xyXG5pbXBvcnQgeyBzZXRWYWx1ZVRvT2JqZWN0IH0gZnJvbSBcIi4vZm9ybS12aWV3LmNvbW1vbi5oZWxwZXJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBBcGlzIHtcclxuICBwcml2YXRlIF9mb3JtRGF0YTogYW55O1xyXG4gIHByaXZhdGUgX3ByZXZpb3VzRm9ybURhdGE6IGFueTtcclxuICBwcml2YXRlIF9hbGxGb3Jtc0RhdGE6IGFueTtcclxuICBwcml2YXRlIF9maWVsZDogVEZpZWxkQXBpQ2FsbDtcclxuICBwcml2YXRlIF90YWtlQWN0aW9uOiBGdW5jdGlvbjtcclxuXHJcbiAgcHJpdmF0ZSBfYXBpOiBUQXBpO1xyXG4gIHByaXZhdGUgX3JlcXVlc3Q6IFRBcGlSZXF1ZXN0O1xyXG4gIHByaXZhdGUgX3Jlc3BvbnNlOiBUQXBpUmVzcG9uc2U7XHJcbiAgcHJpdmF0ZSBfc3RhdHVzOiBUQXBpU3RhdHVzO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGZpZWxkOiBURmllbGRBcGlDYWxsLFxyXG4gICAgZm9ybURhdGE6IGFueSxcclxuICAgIHByZXZpb3VzRm9ybURhdGE6IGFueSxcclxuICAgIGFsbEZvcm1zRGF0YTogYW55LFxyXG4gICAgdGFrZUFjdGlvbjogRnVuY3Rpb25cclxuICApIHtcclxuICAgIHRoaXMuX2ZpZWxkID0gZmllbGQ7XHJcbiAgICB0aGlzLl9mb3JtRGF0YSA9IGZvcm1EYXRhO1xyXG4gICAgdGhpcy5fcHJldmlvdXNGb3JtRGF0YSA9IHByZXZpb3VzRm9ybURhdGE7XHJcbiAgICB0aGlzLl9hbGxGb3Jtc0RhdGEgPSBhbGxGb3Jtc0RhdGE7XHJcbiAgICB0aGlzLl90YWtlQWN0aW9uID0gdGFrZUFjdGlvbjtcclxuXHJcbiAgICB0aGlzLl9hcGkgPSBmaWVsZC5hcGk7XHJcbiAgICB0aGlzLl9yZXF1ZXN0ID0gZmllbGQuYXBpLnJlcXVlc3Q7XHJcbiAgICB0aGlzLl9yZXNwb25zZSA9IGZpZWxkLmFwaS5yZXNwb25zZTtcclxuICAgIHRoaXMuX3N0YXR1cyA9IGZpZWxkLmFwaS5zdGF0dXM7XHJcbiAgfVxyXG5cclxuICBAbG9nTWV0aG9kXHJcbiAgcHVibGljIGFzeW5jIHNldFJlcXVlc3RCb2R5UGFyYW1zKCk6IFByb21pc2U8VEZpZWxkQXBpQ2FsbD4ge1xyXG4gICAgbGV0IHBhcmFtczogQXJyYXk8VEFwaVJlcXVlc3RCb2R5UGFyYW0+ID0gdGhpcy5fcmVxdWVzdC5ib2R5LnBhcmFtcztcclxuXHJcbiAgICBsZXQgcGFyYW1JbmRleCA9IDA7XHJcbiAgICBmb3IgKGxldCBwYXJhbSBvZiBwYXJhbXMpIHtcclxuICAgICAgbGV0IHNvdXJjZXM6IEFycmF5PFRTb3VyY2U+ID0gcGFyYW0uc291cmNlcztcclxuXHJcbiAgICAgIGxldCBzb3VyY2VJbmRleCA9IDA7XHJcbiAgICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XHJcbiAgICAgICAgY29uc3Qgc291cmNlcyA9IG5ldyBTb3VyY2VzKHtcclxuICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXHJcbiAgICAgICAgICBGT1JNX0RBVEE6IHRoaXMuX2Zvcm1EYXRhLFxyXG4gICAgICAgICAgUFJFVklPVVNfRk9STV9EQVRBOiB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhLFxyXG4gICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHNvdXJjZXMuZ2V0VmFsdWVGcm9tU291cmNlKHNvdXJjZSk7XHJcbiAgICAgICAgLy8gU2V0IHRoZSBWYWx1ZSBvZiBjdXJyZW50IHNvdXJjZS5cclxuICAgICAgICB0aGlzLl9maWVsZCA9IHNldFZhbHVlVG9PYmplY3QoXHJcbiAgICAgICAgICB0aGlzLl9maWVsZCxcclxuICAgICAgICAgIGBhcGkucmVxdWVzdC5ib2R5LnBhcmFtc1ske3BhcmFtSW5kZXh9XS5zb3VyY2VzWyR7c291cmNlSW5kZXh9XS52YWx1ZWAsXHJcbiAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb246IFRWYWxpZGF0aW9uID0gKHNvdXJjZSBhcyBhbnkpLnZhbGlkYXRpb247XHJcblxyXG4gICAgICAgIGNvbnN0IHRyaWdnZXJzOiBBcnJheTxUVHJpZ2dlcj4gPSB2YWxpZGF0aW9uPy50cmlnZ2VycyA/PyBbXTtcclxuICAgICAgICBjb25zdCBydWxlczogQXJyYXk8VFJ1bGU+ID0gdmFsaWRhdGlvbj8ucnVsZXMgPz8gW107XHJcbiAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xyXG5cclxuICAgICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZXMocnVsZXMsIHtcclxuICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXHJcbiAgICAgICAgICBGT1JNX0RBVEE6IHRoaXMuX2Zvcm1EYXRhLFxyXG4gICAgICAgICAgUFJFVklPVVNfRk9STV9EQVRBOiB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhLFxyXG4gICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YVxyXG4gICAgICAgIH0pLm1hcHBpbmcoKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgYWN0aW9uIG9mIGFjdGlvbnMpIHtcclxuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbkV2YWx1YXRpb24gPSBuZXcgQ29uZGl0aW9uKFxyXG4gICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxyXG4gICAgICAgICAgICBydWxlc01hcHBpbmdcclxuICAgICAgICAgICkuZXZhbHVhdGUoKTtcclxuXHJcbiAgICAgICAgICBpZiAoY29uZGl0aW9uRXZhbHVhdGlvbikge1xyXG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbnMoXHJcbiAgICAgICAgICAgICAgYWN0aW9uLFxyXG4gICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBGSUVMRF9DT05GSUc6IHRoaXMuX2ZpZWxkLFxyXG4gICAgICAgICAgICAgICAgRk9STV9EQVRBOiB0aGlzLl9mb3JtRGF0YSxcclxuICAgICAgICAgICAgICAgIFBSRVZJT1VTX0ZPUk1fREFUQTogdGhpcy5fcHJldmlvdXNGb3JtRGF0YSxcclxuICAgICAgICAgICAgICAgIEFMTF9GT1JNU19EQVRBOiB0aGlzLl9hbGxGb3Jtc0RhdGFcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRoaXMuX3Rha2VBY3Rpb25cclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc291cmNlSW5kZXgrKztcclxuICAgICAgfVxyXG5cclxuICAgICAgcGFyYW1JbmRleCsrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9maWVsZDtcclxuICB9XHJcblxyXG4gIEBsb2dNZXRob2RcclxuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGVSZXF1ZXN0Qm9keSgpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcclxuICAgIGNvbnN0IGJvZHk6IFRBcGlSZXF1ZXN0Qm9keSA9IHRoaXMuX3JlcXVlc3QuYm9keTtcclxuXHJcbiAgICBjb25zdCB2YWxpZGF0aW9uOiBUVmFsaWRhdGlvbiA9IGJvZHkudmFsaWRhdGlvbjtcclxuXHJcbiAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbi50cmlnZ2VycztcclxuICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uLnJ1bGVzO1xyXG4gICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zO1xyXG5cclxuICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlcyhydWxlcywge1xyXG4gICAgICBGSUVMRF9DT05GSUc6IHRoaXMuX2ZpZWxkLFxyXG4gICAgICBGT1JNX0RBVEE6IHRoaXMuX2Zvcm1EYXRhLFxyXG4gICAgICBQUkVWSU9VU19GT1JNX0RBVEE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXHJcbiAgICAgIEFMTF9GT1JNU19EQVRBOiB0aGlzLl9hbGxGb3Jtc0RhdGFcclxuICAgIH0pLm1hcHBpbmcoKTtcclxuXHJcbiAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xyXG4gICAgICBjb25zdCBjb25kaXRpb25TdWNjZXNzID0gbmV3IENvbmRpdGlvbihcclxuICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxyXG4gICAgICAgIHJ1bGVzTWFwcGluZ1xyXG4gICAgICApLmV2YWx1YXRlKCk7XHJcblxyXG4gICAgICBpZiAoY29uZGl0aW9uU3VjY2Vzcykge1xyXG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9ucyhcclxuICAgICAgICAgIGFjdGlvbixcclxuICAgICAgICAgIHJ1bGVzTWFwcGluZyxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgRklFTERfQ09ORklHOiB0aGlzLl9maWVsZCxcclxuICAgICAgICAgICAgRk9STV9EQVRBOiB0aGlzLl9mb3JtRGF0YSxcclxuICAgICAgICAgICAgUFJFVklPVVNfRk9STV9EQVRBOiB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhLFxyXG4gICAgICAgICAgICBBTExfRk9STVNfREFUQTogdGhpcy5fYWxsRm9ybXNEYXRhXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkO1xyXG4gIH1cclxuXHJcbiAgQGxvZ01ldGhvZFxyXG4gIHB1YmxpYyBhc3luYyB2YWxpZGF0ZUFwaUNhbGxSZXNwb25zZSgpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcclxuICAgIGNvbnN0IHZhbGlkYXRpb246IFRWYWxpZGF0aW9uID0gdGhpcy5fcmVzcG9uc2UudmFsaWRhdGlvbjtcclxuXHJcbiAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbi50cmlnZ2VycztcclxuICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uLnJ1bGVzO1xyXG4gICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpLmFjdGlvbnM7XHJcblxyXG4gICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGVzKHJ1bGVzLCB7XHJcbiAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXHJcbiAgICAgIEZPUk1fREFUQTogdGhpcy5fZm9ybURhdGEsXHJcbiAgICAgIFBSRVZJT1VTX0ZPUk1fREFUQTogdGhpcy5fcHJldmlvdXNGb3JtRGF0YSxcclxuICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YVxyXG4gICAgfSkubWFwcGluZygpO1xyXG5cclxuICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XHJcbiAgICAgIGNvbnN0IGNvbmRpdGlvblN1Y2Nlc3MgPSBuZXcgQ29uZGl0aW9uKFxyXG4gICAgICAgIGFjdGlvbi5jb25kaXRpb24sXHJcbiAgICAgICAgcnVsZXNNYXBwaW5nXHJcbiAgICAgICkuZXZhbHVhdGUoKTtcclxuXHJcbiAgICAgIGlmIChjb25kaXRpb25TdWNjZXNzKSB7XHJcbiAgICAgICAgY29uc3QgYWN0aW9ucyA9IG5ldyBBY3Rpb25zKFxyXG4gICAgICAgICAgYWN0aW9uLFxyXG4gICAgICAgICAgcnVsZXNNYXBwaW5nLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBGSUVMRF9DT05GSUc6IHRoaXMuX2ZpZWxkLFxyXG4gICAgICAgICAgICBGT1JNX0RBVEE6IHRoaXMuX2Zvcm1EYXRhLFxyXG4gICAgICAgICAgICBQUkVWSU9VU19GT1JNX0RBVEE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXHJcbiAgICAgICAgICAgIEFMTF9GT1JNU19EQVRBOiB0aGlzLl9hbGxGb3Jtc0RhdGFcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9wc1ZhbHVlcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZmllbGQ6IHRoaXMuX2ZpZWxkLFxyXG4gICAgICBmb3JtRGF0YTogdGhpcy5fZm9ybURhdGEsXHJcbiAgICAgIHByZXZpb3VzRm9ybURhdGE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXHJcbiAgICAgIGFsbEZvcm1zRGF0YTogdGhpcy5fYWxsRm9ybXNEYXRhXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { Actions, Condition, logMethod, Rules, Sources } from "kwikid-toolkit";
3
+ import { setValueToObject } from "./form-view.common.helper";
4
+ export class Apis {
5
+ constructor(field, formFields, formData, previousFormData, allFormsData, takeAction) {
6
+ this._field = field;
7
+ this._formFields = formFields;
8
+ this._formData = formData;
9
+ this._previousFormData = previousFormData;
10
+ this._allFormsData = allFormsData;
11
+ this._takeAction = takeAction;
12
+ this._api = field.api;
13
+ this._request = field.api.request;
14
+ this._response = field.api.response;
15
+ this._status = field.api.status;
16
+ }
17
+ setRequestBodyParams() {
18
+ var _a, _b, _c, _d;
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ let params = this._request.body.params;
21
+ let paramIndex = 0;
22
+ for (let param of params) {
23
+ let sources = param.sources;
24
+ let sourceIndex = 0;
25
+ for (let source of sources) {
26
+ const sources = new Sources({
27
+ FIELD_CONFIG: this._field,
28
+ FORM_FIELDS: this._formFields,
29
+ FORM_DATA: this._formData,
30
+ PREVIOUS_FORM_DATA: this._previousFormData,
31
+ ALL_FORMS_DATA: this._allFormsData
32
+ });
33
+ const value = sources.getValueFromSource(source);
34
+ // Set the Value of current source.
35
+ this._field = setValueToObject(this._field, `api.request.body.params[${paramIndex}].sources[${sourceIndex}].value`, value);
36
+ const validation = source.validation;
37
+ const triggers = (_a = validation === null || validation === void 0 ? void 0 : validation.triggers) !== null && _a !== void 0 ? _a : [];
38
+ const rules = (_b = validation === null || validation === void 0 ? void 0 : validation.rules) !== null && _b !== void 0 ? _b : [];
39
+ const actions = (_d = (_c = validation) === null || _c === void 0 ? void 0 : _c.actions) !== null && _d !== void 0 ? _d : [];
40
+ const rulesMapping = new Rules(rules, {
41
+ FIELD_CONFIG: this._field,
42
+ FORM_FIELDS: this._formFields,
43
+ FORM_DATA: this._formData,
44
+ PREVIOUS_FORM_DATA: this._previousFormData,
45
+ ALL_FORMS_DATA: this._allFormsData
46
+ }).mapping();
47
+ for (let action of actions) {
48
+ const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
49
+ if (conditionEvaluation) {
50
+ const actions = new Actions(action, rulesMapping, {
51
+ FIELD_CONFIG: this._field,
52
+ FORM_FIELDS: this._formFields,
53
+ FORM_DATA: this._formData,
54
+ PREVIOUS_FORM_DATA: this._previousFormData,
55
+ ALL_FORMS_DATA: this._allFormsData
56
+ }, this._takeAction);
57
+ yield actions.execute();
58
+ }
59
+ }
60
+ sourceIndex++;
61
+ }
62
+ paramIndex++;
63
+ }
64
+ return this._field;
65
+ });
66
+ }
67
+ validateRequestBody() {
68
+ var _a;
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const body = this._request.body;
71
+ const validation = body.validation;
72
+ const triggers = validation.triggers;
73
+ const rules = validation.rules;
74
+ const actions = (_a = validation) === null || _a === void 0 ? void 0 : _a.actions;
75
+ const rulesMapping = new Rules(rules, {
76
+ FIELD_CONFIG: this._field,
77
+ FORM_FIELDS: this._formFields,
78
+ FORM_DATA: this._formData,
79
+ PREVIOUS_FORM_DATA: this._previousFormData,
80
+ ALL_FORMS_DATA: this._allFormsData
81
+ }).mapping();
82
+ for (let action of actions) {
83
+ const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
84
+ if (conditionSuccess) {
85
+ const actions = new Actions(action, rulesMapping, {
86
+ FIELD_CONFIG: this._field,
87
+ FORM_FIELDS: this._formFields,
88
+ FORM_DATA: this._formData,
89
+ PREVIOUS_FORM_DATA: this._previousFormData,
90
+ ALL_FORMS_DATA: this._allFormsData
91
+ }, this._takeAction);
92
+ yield actions.execute();
93
+ }
94
+ }
95
+ return this._field;
96
+ });
97
+ }
98
+ validateApiCallResponse() {
99
+ return __awaiter(this, void 0, void 0, function* () {
100
+ const validation = this._response.validation;
101
+ const triggers = validation.triggers;
102
+ const rules = validation.rules;
103
+ const actions = validation.actions;
104
+ const rulesMapping = new Rules(rules, {
105
+ FIELD_CONFIG: this._field,
106
+ FORM_FIELDS: this._formFields,
107
+ FORM_DATA: this._formData,
108
+ PREVIOUS_FORM_DATA: this._previousFormData,
109
+ ALL_FORMS_DATA: this._allFormsData
110
+ }).mapping();
111
+ for (let action of actions) {
112
+ const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
113
+ if (conditionSuccess) {
114
+ const actions = new Actions(action, rulesMapping, {
115
+ FIELD_CONFIG: this._field,
116
+ FORM_FIELDS: this._formFields,
117
+ FORM_DATA: this._formData,
118
+ PREVIOUS_FORM_DATA: this._previousFormData,
119
+ ALL_FORMS_DATA: this._allFormsData
120
+ }, this._takeAction);
121
+ yield actions.execute();
122
+ }
123
+ }
124
+ return this._field;
125
+ });
126
+ }
127
+ getPropsValues() {
128
+ return {
129
+ field: this._field,
130
+ formFields: this._formFields,
131
+ formData: this._formData,
132
+ previousFormData: this._previousFormData,
133
+ allFormsData: this._allFormsData
134
+ };
135
+ }
136
+ }
137
+ __decorate([
138
+ logMethod
139
+ ], Apis.prototype, "setRequestBodyParams", null);
140
+ __decorate([
141
+ logMethod
142
+ ], Apis.prototype, "validateRequestBody", null);
143
+ __decorate([
144
+ logMethod
145
+ ], Apis.prototype, "validateApiCallResponse", null);
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmFwaXMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybS12aWV3L2hlbHBlcnMvZm9ybS12aWV3LmFwaXMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE9BQU8sRUFHUixNQUFNLGdCQUFnQixDQUFDO0FBYXhCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE1BQU0sT0FBTyxJQUFJO0lBYWYsWUFDRSxLQUFvQixFQUNwQixVQUFpQixFQUNqQixRQUFhLEVBQ2IsZ0JBQXFCLEVBQ3JCLFlBQWlCLEVBQ2pCLFVBQW9CO1FBRXBCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUU5QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUdZLG9CQUFvQjs7O1lBQy9CLElBQUksTUFB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QUFjO1FBQ1osT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNsQixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDNUIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDeEMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ2pDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF6S0M7SUFEQyxTQUFTO2dEQXVFVDtBQUdEO0lBREMsU0FBUzsrQ0EyQ1Q7QUFHRDtJQURDLFNBQVM7bURBeUNUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWN0aW9ucyxcbiAgQ29uZGl0aW9uLFxuICBsb2dNZXRob2QsXG4gIFJ1bGVzLFxuICBTb3VyY2VzLFxuICBUUnVsZSxcbiAgVFNvdXJjZVxufSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IFRBY3Rpb24gfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvYWN0aW9ucy9mb3JtLXZpZXcuYWN0aW9ucy50eXBlLmRlZmluaXRpb25zXCI7XG5pbXBvcnQge1xuICBUQXBpLFxuICBUQXBpUmVxdWVzdCxcbiAgVEFwaVJlcXVlc3RCb2R5LFxuICBUQXBpUmVxdWVzdEJvZHlQYXJhbSxcbiAgVEFwaVJlc3BvbnNlLFxuICBUQXBpU3RhdHVzXG59IGZyb20gXCIuLi9kZWZpbml0aW9ucy9hcGlzL2Zvcm0tdmlldy5hcGlzLnR5cGUuZGVmaW5pdGlvbnNcIjtcbmltcG9ydCB7IFRGaWVsZEFwaUNhbGwgfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvZmllbGRzL2Zvcm0tdmlldy5maWVsZHMudHlwZS5kZWZpbml0aW9uc1wiO1xuaW1wb3J0IHsgVFRyaWdnZXIgfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvdHJpZ2dlcnMvZm9ybS12aWV3LnRyaWdnZXJzLnR5cGUuZGVmaW5pdGlvbnNcIjtcbmltcG9ydCB7IFRWYWxpZGF0aW9uIH0gZnJvbSBcIi4uL2RlZmluaXRpb25zL3ZhbGlkYXRpb25zL2Zvcm0tdmlldy52YWxpZGF0aW9ucy50eXBlLmRlZmluaXRpb25zXCI7XG5pbXBvcnQgeyBzZXRWYWx1ZVRvT2JqZWN0IH0gZnJvbSBcIi4vZm9ybS12aWV3LmNvbW1vbi5oZWxwZXJcIjtcblxuZXhwb3J0IGNsYXNzIEFwaXMge1xuICBwcml2YXRlIF9mb3JtRGF0YTogYW55O1xuICBwcml2YXRlIF9mb3JtRmllbGRzOiBhbnlbXTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNGb3JtRGF0YTogYW55O1xuICBwcml2YXRlIF9hbGxGb3Jtc0RhdGE6IGFueTtcbiAgcHJpdmF0ZSBfZmllbGQ6IFRGaWVsZEFwaUNhbGw7XG4gIHByaXZhdGUgX3Rha2VBY3Rpb246IEZ1bmN0aW9uO1xuXG4gIHByaXZhdGUgX2FwaTogVEFwaTtcbiAgcHJpdmF0ZSBfcmVxdWVzdDogVEFwaVJlcXVlc3Q7XG4gIHByaXZhdGUgX3Jlc3BvbnNlOiBUQXBpUmVzcG9uc2U7XG4gIHByaXZhdGUgX3N0YXR1czogVEFwaVN0YXR1cztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBmaWVsZDogVEZpZWxkQXBpQ2FsbCxcbiAgICBmb3JtRmllbGRzOiBhbnlbXSxcbiAgICBmb3JtRGF0YTogYW55LFxuICAgIHByZXZpb3VzRm9ybURhdGE6IGFueSxcbiAgICBhbGxGb3Jtc0RhdGE6IGFueSxcbiAgICB0YWtlQWN0aW9uOiBGdW5jdGlvblxuICApIHtcbiAgICB0aGlzLl9maWVsZCA9IGZpZWxkO1xuICAgIHRoaXMuX2Zvcm1GaWVsZHMgPSBmb3JtRmllbGRzO1xuICAgIHRoaXMuX2Zvcm1EYXRhID0gZm9ybURhdGE7XG4gICAgdGhpcy5fcHJldmlvdXNGb3JtRGF0YSA9IHByZXZpb3VzRm9ybURhdGE7XG4gICAgdGhpcy5fYWxsRm9ybXNEYXRhID0gYWxsRm9ybXNEYXRhO1xuICAgIHRoaXMuX3Rha2VBY3Rpb24gPSB0YWtlQWN0aW9uO1xuXG4gICAgdGhpcy5fYXBpID0gZmllbGQuYXBpO1xuICAgIHRoaXMuX3JlcXVlc3QgPSBmaWVsZC5hcGkucmVxdWVzdDtcbiAgICB0aGlzLl9yZXNwb25zZSA9IGZpZWxkLmFwaS5yZXNwb25zZTtcbiAgICB0aGlzLl9zdGF0dXMgPSBmaWVsZC5hcGkuc3RhdHVzO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBwdWJsaWMgYXN5bmMgc2V0UmVxdWVzdEJvZHlQYXJhbXMoKTogUHJvbWlzZTxURmllbGRBcGlDYWxsPiB7XG4gICAgbGV0IHBhcmFtczogQXJyYXk8VEFwaVJlcXVlc3RCb2R5UGFyYW0+ID0gdGhpcy5fcmVxdWVzdC5ib2R5LnBhcmFtcztcblxuICAgIGxldCBwYXJhbUluZGV4ID0gMDtcbiAgICBmb3IgKGxldCBwYXJhbSBvZiBwYXJhbXMpIHtcbiAgICAgIGxldCBzb3VyY2VzOiBBcnJheTxUU291cmNlPiA9IHBhcmFtLnNvdXJjZXM7XG5cbiAgICAgIGxldCBzb3VyY2VJbmRleCA9IDA7XG4gICAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgICBjb25zdCBzb3VyY2VzID0gbmV3IFNvdXJjZXMoe1xuICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXG4gICAgICAgICAgRk9STV9GSUVMRFM6IHRoaXMuX2Zvcm1GaWVsZHMsXG4gICAgICAgICAgRk9STV9EQVRBOiB0aGlzLl9mb3JtRGF0YSxcbiAgICAgICAgICBQUkVWSU9VU19GT1JNX0RBVEE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXG4gICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB2YWx1ZSA9IHNvdXJjZXMuZ2V0VmFsdWVGcm9tU291cmNlKHNvdXJjZSk7XG4gICAgICAgIC8vIFNldCB0aGUgVmFsdWUgb2YgY3VycmVudCBzb3VyY2UuXG4gICAgICAgIHRoaXMuX2ZpZWxkID0gc2V0VmFsdWVUb09iamVjdChcbiAgICAgICAgICB0aGlzLl9maWVsZCxcbiAgICAgICAgICBgYXBpLnJlcXVlc3QuYm9keS5wYXJhbXNbJHtwYXJhbUluZGV4fV0uc291cmNlc1ske3NvdXJjZUluZGV4fV0udmFsdWVgLFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbjogVFZhbGlkYXRpb24gPSAoc291cmNlIGFzIGFueSkudmFsaWRhdGlvbjtcblxuICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbj8udHJpZ2dlcnMgPz8gW107XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uPy5ydWxlcyA/PyBbXTtcbiAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlcyhydWxlcywge1xuICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXG4gICAgICAgICAgRk9STV9GSUVMRFM6IHRoaXMuX2Zvcm1GaWVsZHMsXG4gICAgICAgICAgRk9STV9EQVRBOiB0aGlzLl9mb3JtRGF0YSxcbiAgICAgICAgICBQUkVWSU9VU19GT1JNX0RBVEE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXG4gICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YVxuICAgICAgICB9KS5tYXBwaW5nKCk7XG5cbiAgICAgICAgZm9yIChsZXQgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBjb25kaXRpb25FdmFsdWF0aW9uID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgICAgICBydWxlc01hcHBpbmdcbiAgICAgICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgICAgICBpZiAoY29uZGl0aW9uRXZhbHVhdGlvbikge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IG5ldyBBY3Rpb25zKFxuICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXG4gICAgICAgICAgICAgICAgRk9STV9GSUVMRFM6IHRoaXMuX2Zvcm1GaWVsZHMsXG4gICAgICAgICAgICAgICAgRk9STV9EQVRBOiB0aGlzLl9mb3JtRGF0YSxcbiAgICAgICAgICAgICAgICBQUkVWSU9VU19GT1JNX0RBVEE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXG4gICAgICAgICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzb3VyY2VJbmRleCsrO1xuICAgICAgfVxuXG4gICAgICBwYXJhbUluZGV4Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGVSZXF1ZXN0Qm9keSgpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcbiAgICBjb25zdCBib2R5OiBUQXBpUmVxdWVzdEJvZHkgPSB0aGlzLl9yZXF1ZXN0LmJvZHk7XG5cbiAgICBjb25zdCB2YWxpZGF0aW9uOiBUVmFsaWRhdGlvbiA9IGJvZHkudmFsaWRhdGlvbjtcblxuICAgIGNvbnN0IHRyaWdnZXJzOiBBcnJheTxUVHJpZ2dlcj4gPSB2YWxpZGF0aW9uLnRyaWdnZXJzO1xuICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uLnJ1bGVzO1xuICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID0gKHZhbGlkYXRpb24gYXMgYW55KT8uYWN0aW9ucztcblxuICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlcyhydWxlcywge1xuICAgICAgRklFTERfQ09ORklHOiB0aGlzLl9maWVsZCxcbiAgICAgIEZPUk1fRklFTERTOiB0aGlzLl9mb3JtRmllbGRzLFxuICAgICAgRk9STV9EQVRBOiB0aGlzLl9mb3JtRGF0YSxcbiAgICAgIFBSRVZJT1VTX0ZPUk1fREFUQTogdGhpcy5fcHJldmlvdXNGb3JtRGF0YSxcbiAgICAgIEFMTF9GT1JNU19EQVRBOiB0aGlzLl9hbGxGb3Jtc0RhdGFcbiAgICB9KS5tYXBwaW5nKCk7XG5cbiAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgY29uZGl0aW9uU3VjY2VzcyA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICBpZiAoY29uZGl0aW9uU3VjY2Vzcykge1xuICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbnMoXG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBGSUVMRF9DT05GSUc6IHRoaXMuX2ZpZWxkLFxuICAgICAgICAgICAgRk9STV9GSUVMRFM6IHRoaXMuX2Zvcm1GaWVsZHMsXG4gICAgICAgICAgICBGT1JNX0RBVEE6IHRoaXMuX2Zvcm1EYXRhLFxuICAgICAgICAgICAgUFJFVklPVVNfRk9STV9EQVRBOiB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhLFxuICAgICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICApO1xuXG4gICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9maWVsZDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIHZhbGlkYXRlQXBpQ2FsbFJlc3BvbnNlKCk6IFByb21pc2U8VEZpZWxkQXBpQ2FsbD4ge1xuICAgIGNvbnN0IHZhbGlkYXRpb246IFRWYWxpZGF0aW9uID0gdGhpcy5fcmVzcG9uc2UudmFsaWRhdGlvbjtcblxuICAgIGNvbnN0IHRyaWdnZXJzOiBBcnJheTxUVHJpZ2dlcj4gPSB2YWxpZGF0aW9uLnRyaWdnZXJzO1xuICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uLnJ1bGVzO1xuICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID0gKHZhbGlkYXRpb24gYXMgYW55KS5hY3Rpb25zO1xuXG4gICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGVzKHJ1bGVzLCB7XG4gICAgICBGSUVMRF9DT05GSUc6IHRoaXMuX2ZpZWxkLFxuICAgICAgRk9STV9GSUVMRFM6IHRoaXMuX2Zvcm1GaWVsZHMsXG4gICAgICBGT1JNX0RBVEE6IHRoaXMuX2Zvcm1EYXRhLFxuICAgICAgUFJFVklPVVNfRk9STV9EQVRBOiB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhLFxuICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuX2FsbEZvcm1zRGF0YVxuICAgIH0pLm1hcHBpbmcoKTtcblxuICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICBjb25zdCBjb25kaXRpb25TdWNjZXNzID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgIGlmIChjb25kaXRpb25TdWNjZXNzKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9ucyhcbiAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgcnVsZXNNYXBwaW5nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIEZJRUxEX0NPTkZJRzogdGhpcy5fZmllbGQsXG4gICAgICAgICAgICBGT1JNX0ZJRUxEUzogdGhpcy5fZm9ybUZpZWxkcyxcbiAgICAgICAgICAgIEZPUk1fREFUQTogdGhpcy5fZm9ybURhdGEsXG4gICAgICAgICAgICBQUkVWSU9VU19GT1JNX0RBVEE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXG4gICAgICAgICAgICBBTExfRk9STVNfREFUQTogdGhpcy5fYWxsRm9ybXNEYXRhXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkO1xuICB9XG5cbiAgZ2V0UHJvcHNWYWx1ZXMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGQ6IHRoaXMuX2ZpZWxkLFxuICAgICAgZm9ybUZpZWxkczogdGhpcy5fZm9ybUZpZWxkcyxcbiAgICAgIGZvcm1EYXRhOiB0aGlzLl9mb3JtRGF0YSxcbiAgICAgIHByZXZpb3VzRm9ybURhdGE6IHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXG4gICAgICBhbGxGb3Jtc0RhdGE6IHRoaXMuX2FsbEZvcm1zRGF0YVxuICAgIH07XG4gIH1cbn1cbiJdfQ==