@decaf-ts/for-angular 0.0.10 → 0.0.12

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 (163) hide show
  1. package/dist/for-angular/cli/cli-module.d.ts +22 -0
  2. package/dist/for-angular/cli/cli-module.d.ts.map +1 -0
  3. package/dist/for-angular/cli/cli-module.js +131 -0
  4. package/dist/for-angular/cli/cli-module.js.map +1 -0
  5. package/dist/{components → lib/components}/component-renderer/component-renderer.component.d.ts +1 -0
  6. package/dist/lib/components/component-renderer/component-renderer.component.d.ts.map +1 -0
  7. package/dist/{components → lib/components}/crud-field/crud-field.component.d.ts +1 -0
  8. package/dist/lib/components/crud-field/crud-field.component.d.ts.map +1 -0
  9. package/dist/{components → lib/components}/crud-form/constants.d.ts +1 -0
  10. package/dist/lib/components/crud-form/constants.d.ts.map +1 -0
  11. package/dist/{components → lib/components}/crud-form/crud-form.component.d.ts +1 -0
  12. package/dist/lib/components/crud-form/crud-form.component.d.ts.map +1 -0
  13. package/dist/{components → lib/components}/crud-form/types.d.ts +1 -0
  14. package/dist/lib/components/crud-form/types.d.ts.map +1 -0
  15. package/dist/{components → lib/components}/empty-state/empty-state.component.d.ts +1 -0
  16. package/dist/lib/components/empty-state/empty-state.component.d.ts.map +1 -0
  17. package/dist/{components → lib/components}/fieldset/fieldset.component.d.ts +1 -0
  18. package/dist/lib/components/fieldset/fieldset.component.d.ts.map +1 -0
  19. package/dist/{components → lib/components}/filter/filter.component.d.ts +1 -0
  20. package/dist/lib/components/filter/filter.component.d.ts.map +1 -0
  21. package/dist/{components → lib/components}/for-angular-components.module.d.ts +1 -0
  22. package/dist/lib/components/for-angular-components.module.d.ts.map +1 -0
  23. package/dist/{components → lib/components}/index.d.ts +1 -0
  24. package/dist/lib/components/index.d.ts.map +1 -0
  25. package/dist/{components → lib/components}/layout/layout.component.d.ts +1 -0
  26. package/dist/lib/components/layout/layout.component.d.ts.map +1 -0
  27. package/dist/{components → lib/components}/list/constants.d.ts +1 -0
  28. package/dist/lib/components/list/constants.d.ts.map +1 -0
  29. package/dist/{components → lib/components}/list/list.component.d.ts +1 -0
  30. package/dist/lib/components/list/list.component.d.ts.map +1 -0
  31. package/dist/{components → lib/components}/list-item/list-item.component.d.ts +1 -0
  32. package/dist/lib/components/list-item/list-item.component.d.ts.map +1 -0
  33. package/dist/{components → lib/components}/model-renderer/model-renderer.component.d.ts +1 -0
  34. package/dist/lib/components/model-renderer/model-renderer.component.d.ts.map +1 -0
  35. package/dist/{components → lib/components}/pagination/constants.d.ts +1 -0
  36. package/dist/lib/components/pagination/constants.d.ts.map +1 -0
  37. package/dist/{components → lib/components}/pagination/pagination.component.d.ts +1 -0
  38. package/dist/lib/components/pagination/pagination.component.d.ts.map +1 -0
  39. package/dist/{components → lib/components}/searchbar/searchbar.component.d.ts +1 -0
  40. package/dist/lib/components/searchbar/searchbar.component.d.ts.map +1 -0
  41. package/dist/lib/decaf-ts-for-angular.d.ts.map +1 -0
  42. package/dist/{directives → lib/directives}/collapsable.directive.d.ts +1 -0
  43. package/dist/lib/directives/collapsable.directive.d.ts.map +1 -0
  44. package/dist/{directives → lib/directives}/index.d.ts +1 -0
  45. package/dist/lib/directives/index.d.ts.map +1 -0
  46. package/dist/{engine → lib/engine}/DynamicModule.d.ts +1 -0
  47. package/dist/lib/engine/DynamicModule.d.ts.map +1 -0
  48. package/dist/{engine → lib/engine}/NgxBaseComponent.d.ts +1 -0
  49. package/dist/lib/engine/NgxBaseComponent.d.ts.map +1 -0
  50. package/dist/{engine → lib/engine}/NgxCrudFormField.d.ts +1 -0
  51. package/dist/lib/engine/NgxCrudFormField.d.ts.map +1 -0
  52. package/dist/{engine → lib/engine}/NgxFormService.d.ts +1 -0
  53. package/dist/lib/engine/NgxFormService.d.ts.map +1 -0
  54. package/dist/{engine → lib/engine}/NgxRenderingEngine.d.ts +1 -0
  55. package/dist/lib/engine/NgxRenderingEngine.d.ts.map +1 -0
  56. package/dist/{engine → lib/engine}/NgxRenderingEngine2.d.ts +1 -0
  57. package/dist/lib/engine/NgxRenderingEngine2.d.ts.map +1 -0
  58. package/dist/{engine → lib/engine}/ValidatorFactory.d.ts +1 -0
  59. package/dist/lib/engine/ValidatorFactory.d.ts.map +1 -0
  60. package/dist/{engine → lib/engine}/constants.d.ts +1 -0
  61. package/dist/lib/engine/constants.d.ts.map +1 -0
  62. package/dist/{engine → lib/engine}/decorators.d.ts +1 -0
  63. package/dist/lib/engine/decorators.d.ts.map +1 -0
  64. package/dist/{engine → lib/engine}/index.d.ts +1 -0
  65. package/dist/lib/engine/index.d.ts.map +1 -0
  66. package/dist/{engine → lib/engine}/types.d.ts +1 -0
  67. package/dist/lib/engine/types.d.ts.map +1 -0
  68. package/dist/lib/esm2022/components/component-renderer/component-renderer.component.mjs +359 -0
  69. package/dist/lib/esm2022/components/crud-field/crud-field.component.mjs +456 -0
  70. package/dist/lib/esm2022/components/crud-form/constants.mjs +14 -0
  71. package/dist/lib/esm2022/components/crud-form/crud-form.component.mjs +272 -0
  72. package/dist/lib/esm2022/components/crud-form/types.mjs +2 -0
  73. package/dist/lib/esm2022/components/empty-state/empty-state.component.mjs +410 -0
  74. package/dist/lib/esm2022/components/fieldset/fieldset.component.mjs +250 -0
  75. package/dist/lib/esm2022/components/filter/filter.component.mjs +906 -0
  76. package/dist/lib/esm2022/components/for-angular-components.module.mjs +72 -0
  77. package/dist/lib/esm2022/components/index.mjs +20 -0
  78. package/dist/lib/esm2022/components/layout/layout.component.mjs +245 -0
  79. package/dist/lib/esm2022/components/list/constants.mjs +6 -0
  80. package/dist/lib/esm2022/components/list/list.component.mjs +1405 -0
  81. package/dist/lib/esm2022/components/list-item/list-item.component.mjs +612 -0
  82. package/dist/lib/esm2022/components/model-renderer/model-renderer.component.mjs +182 -0
  83. package/dist/lib/esm2022/components/pagination/constants.mjs +2 -0
  84. package/dist/lib/esm2022/components/pagination/pagination.component.mjs +364 -0
  85. package/dist/lib/esm2022/components/searchbar/searchbar.component.mjs +503 -0
  86. package/dist/lib/esm2022/decaf-ts-for-angular.mjs +5 -0
  87. package/dist/lib/esm2022/directives/collapsable.directive.mjs +28 -0
  88. package/dist/lib/esm2022/directives/index.mjs +2 -0
  89. package/dist/lib/esm2022/engine/DynamicModule.mjs +18 -0
  90. package/dist/lib/esm2022/engine/NgxBaseComponent.mjs +546 -0
  91. package/dist/lib/esm2022/engine/NgxCrudFormField.mjs +125 -0
  92. package/dist/lib/esm2022/engine/NgxFormService.mjs +315 -0
  93. package/dist/lib/esm2022/engine/NgxRenderingEngine.mjs +192 -0
  94. package/dist/lib/esm2022/engine/NgxRenderingEngine2.mjs +332 -0
  95. package/dist/lib/esm2022/engine/ValidatorFactory.mjs +102 -0
  96. package/dist/lib/esm2022/engine/constants.mjs +160 -0
  97. package/dist/lib/esm2022/engine/decorators.mjs +38 -0
  98. package/dist/lib/esm2022/engine/index.mjs +17 -0
  99. package/dist/lib/esm2022/engine/types.mjs +4 -0
  100. package/dist/lib/esm2022/for-angular.module.mjs +119 -0
  101. package/dist/lib/esm2022/helpers/index.mjs +13 -0
  102. package/dist/lib/esm2022/helpers/utils.mjs +415 -0
  103. package/dist/lib/esm2022/interfaces.mjs +2 -0
  104. package/dist/lib/esm2022/public-apis.mjs +14 -0
  105. package/dist/{fesm2022 → lib/fesm2022}/decaf-ts-for-angular.mjs +1805 -621
  106. package/dist/lib/fesm2022/decaf-ts-for-angular.mjs.map +1 -0
  107. package/dist/{for-angular.module.d.ts → lib/for-angular.module.d.ts} +1 -0
  108. package/dist/lib/for-angular.module.d.ts.map +1 -0
  109. package/dist/{helpers → lib/helpers}/index.d.ts +1 -0
  110. package/dist/lib/helpers/index.d.ts.map +1 -0
  111. package/dist/{helpers → lib/helpers}/utils.d.ts +1 -0
  112. package/dist/lib/helpers/utils.d.ts.map +1 -0
  113. package/dist/{index.d.ts → lib/index.d.ts} +1 -0
  114. package/dist/{interfaces.d.ts → lib/interfaces.d.ts} +1 -0
  115. package/dist/lib/interfaces.d.ts.map +1 -0
  116. package/dist/{public-apis.d.ts → lib/public-apis.d.ts} +1 -0
  117. package/dist/lib/public-apis.d.ts.map +1 -0
  118. package/package.json +3 -2
  119. package/dist/esm2022/components/component-renderer/component-renderer.component.mjs +0 -313
  120. package/dist/esm2022/components/crud-field/crud-field.component.mjs +0 -301
  121. package/dist/esm2022/components/crud-form/constants.mjs +0 -14
  122. package/dist/esm2022/components/crud-form/crud-form.component.mjs +0 -139
  123. package/dist/esm2022/components/crud-form/types.mjs +0 -2
  124. package/dist/esm2022/components/empty-state/empty-state.component.mjs +0 -348
  125. package/dist/esm2022/components/fieldset/fieldset.component.mjs +0 -225
  126. package/dist/esm2022/components/filter/filter.component.mjs +0 -689
  127. package/dist/esm2022/components/for-angular-components.module.mjs +0 -71
  128. package/dist/esm2022/components/index.mjs +0 -20
  129. package/dist/esm2022/components/layout/layout.component.mjs +0 -176
  130. package/dist/esm2022/components/list/constants.mjs +0 -6
  131. package/dist/esm2022/components/list/list.component.mjs +0 -1236
  132. package/dist/esm2022/components/list-item/list-item.component.mjs +0 -408
  133. package/dist/esm2022/components/model-renderer/model-renderer.component.mjs +0 -138
  134. package/dist/esm2022/components/pagination/constants.mjs +0 -2
  135. package/dist/esm2022/components/pagination/pagination.component.mjs +0 -323
  136. package/dist/esm2022/components/searchbar/searchbar.component.mjs +0 -493
  137. package/dist/esm2022/decaf-ts-for-angular.mjs +0 -5
  138. package/dist/esm2022/directives/collapsable.directive.mjs +0 -28
  139. package/dist/esm2022/directives/index.mjs +0 -2
  140. package/dist/esm2022/engine/DynamicModule.mjs +0 -18
  141. package/dist/esm2022/engine/NgxBaseComponent.mjs +0 -539
  142. package/dist/esm2022/engine/NgxCrudFormField.mjs +0 -125
  143. package/dist/esm2022/engine/NgxFormService.mjs +0 -315
  144. package/dist/esm2022/engine/NgxRenderingEngine.mjs +0 -192
  145. package/dist/esm2022/engine/NgxRenderingEngine2.mjs +0 -332
  146. package/dist/esm2022/engine/ValidatorFactory.mjs +0 -102
  147. package/dist/esm2022/engine/constants.mjs +0 -160
  148. package/dist/esm2022/engine/decorators.mjs +0 -38
  149. package/dist/esm2022/engine/index.mjs +0 -17
  150. package/dist/esm2022/engine/types.mjs +0 -4
  151. package/dist/esm2022/for-angular.module.mjs +0 -118
  152. package/dist/esm2022/helpers/index.mjs +0 -13
  153. package/dist/esm2022/helpers/utils.mjs +0 -415
  154. package/dist/esm2022/interfaces.mjs +0 -2
  155. package/dist/esm2022/public-apis.mjs +0 -14
  156. package/dist/fesm2022/decaf-ts-for-angular.mjs.map +0 -1
  157. /package/dist/{README.md → lib/README.md} +0 -0
  158. /package/dist/{assets → lib/assets}/i18n/en.json +0 -0
  159. /package/dist/{assets → lib/assets}/images/angular-logo.svg +0 -0
  160. /package/dist/{assets → lib/assets}/images/decaf-logo-black.svg +0 -0
  161. /package/dist/{assets → lib/assets}/images/decaf-logo-lw.svg +0 -0
  162. /package/dist/{assets → lib/assets}/images/decaf-logo-white.svg +0 -0
  163. /package/dist/{assets → lib/assets}/images/decaf-logo.svg +0 -0
@@ -1,102 +0,0 @@
1
- import { FormControl, FormGroup } from '@angular/forms';
2
- import { ComparisonValidationKeys, DEFAULT_PATTERNS, PathProxyEngine, Validation, ValidationKeys, } from '@decaf-ts/decorator-validation';
3
- import { HTML5InputTypes, parseValueByType } from '@decaf-ts/ui-decorators';
4
- import { AngularEngineKeys } from './constants';
5
- /**
6
- *
7
- * Resolves the correct validator key and its associated properties based on the input key and type.
8
- *
9
- * When the validation key is TYPE, it's necessary to resolve the actual validator based on the
10
- * field's type (e.g., 'password', 'email', 'url') instead of using the generic getValidator("type") logic.
11
- * This allows directly invoking specific validators like getValidator('password'), ensuring the correct
12
- * behavior for type-based validation.
13
- *
14
- * @param key - The validation key (e.g., 'type', 'required', etc.).
15
- * @param value - The value that needs be provided to the validator.
16
- * @param type - The field's declared type.
17
- * @returns An object containing the resolved validator key and its corresponding props.
18
- */
19
- const resolveValidatorKeyProps = (key, value, type) => {
20
- const patternValidators = {
21
- [ValidationKeys.PASSWORD]: DEFAULT_PATTERNS.PASSWORD.CHAR8_ONE_OF_EACH,
22
- [ValidationKeys.EMAIL]: DEFAULT_PATTERNS.EMAIL,
23
- [ValidationKeys.URL]: DEFAULT_PATTERNS.URL,
24
- };
25
- const isTypeBased = key === ValidationKeys.TYPE && Object.keys(patternValidators).includes(type);
26
- const validatorKey = isTypeBased ? type : key;
27
- const props = {
28
- [validatorKey]: value,
29
- // Email, Password, and URL are validated using the "pattern" key
30
- ...(isTypeBased && { [ValidationKeys.PATTERN]: patternValidators[type] }),
31
- };
32
- return { validatorKey, props };
33
- };
34
- export class ValidatorFactory {
35
- static spawn(fieldProps, key) {
36
- if (!Validation.keys().includes(key))
37
- throw new Error('Unsupported custom validation');
38
- const validatorFn = (control) => {
39
- const { name, type } = fieldProps;
40
- const { validatorKey, props } = resolveValidatorKeyProps(key, fieldProps[key], type);
41
- const validator = Validation.get(validatorKey);
42
- // parseValueByType does not support undefined values
43
- const value = typeof control.value !== 'undefined'
44
- ? parseValueByType(type, type === HTML5InputTypes.CHECKBOX ? name : control.value, fieldProps)
45
- : undefined;
46
- // Create a proxy to enable access to parent and child values
47
- let proxy = ValidatorFactory.createProxy({});
48
- if (Object.values(ComparisonValidationKeys).includes(key)) {
49
- const parent = control instanceof FormGroup ? control : control[AngularEngineKeys.PARENT];
50
- proxy = ValidatorFactory.createProxy(parent);
51
- }
52
- let errs;
53
- try {
54
- errs = validator.hasErrors(value, props, proxy);
55
- }
56
- catch (e) {
57
- errs = `${key} validator failed to validate: ${e}`;
58
- console.warn(errs);
59
- }
60
- return errs ? { [validatorKey]: true } : null;
61
- };
62
- Object.defineProperty(validatorFn, 'name', {
63
- value: `${key}Validator`,
64
- });
65
- return validatorFn;
66
- }
67
- /**
68
- * @summary Creates a proxy wrapper for an Angular AbstractControl to assist with custom validation logic.
69
- * @description Returns a structured proxy object that simulates a hierarchical tree of form values.
70
- * Enables Validators handling method to access parent and child properties using consistent dot-notation in Angular forms.
71
- *
72
- * @param {AbstractControl} control - The control to wrap in a proxy.
73
- * @returns {PathProxy<unknown>} A proxy object exposing form values and enabling recursive parent access.
74
- */
75
- static createProxy(control) {
76
- return PathProxyEngine.create(control, {
77
- getValue(target, prop) {
78
- if (target instanceof FormControl)
79
- return target.value;
80
- if (target instanceof FormGroup) {
81
- const control = target.controls[prop];
82
- return control instanceof FormControl ? control.value : control;
83
- }
84
- // const value = target[prop];
85
- // if (value instanceof FormControl)
86
- // return value.value;
87
- //
88
- // if (value instanceof FormGroup) {
89
- // const control = value.controls[prop];
90
- // return control instanceof FormControl ? control.value : control;
91
- // }
92
- return target?.[prop];
93
- },
94
- getParent: function (target) {
95
- return target?.['_parent'];
96
- },
97
- ignoreUndefined: true,
98
- ignoreNull: true,
99
- });
100
- }
101
- }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdG9yRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZW5naW5lL1ZhbGlkYXRvckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFpQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBRWhCLGVBQWUsRUFDZixVQUFVLEVBQ1YsY0FBYyxHQUVmLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFtQixlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFLaEQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBYyxFQUFFLElBQVksRUFHekUsRUFBRTtJQUNGLE1BQU0saUJBQWlCLEdBQTRCO1FBQ2pELENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7UUFDdEUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsS0FBSztRQUM5QyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHO0tBQzNDLENBQUM7SUFFRixNQUFNLFdBQVcsR0FBRyxHQUFHLEtBQUssY0FBYyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pHLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDOUMsTUFBTSxLQUFLLEdBQTRCO1FBQ3JDLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSztRQUNyQixpRUFBaUU7UUFDakUsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7S0FDMUUsQ0FBQztJQUVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBR0YsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLFVBQTJCLEVBQUUsR0FBVztRQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sV0FBVyxHQUFnQixDQUFDLE9BQXdCLEVBQTJCLEVBQUU7WUFDckYsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDbEMsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQTRCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5RyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBYyxDQUFDO1lBRTVELHFEQUFxRDtZQUNyRCxNQUFNLEtBQUssR0FBRyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssV0FBVztnQkFDaEQsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztnQkFDOUYsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVkLDZEQUE2RDtZQUM3RCxJQUFJLEtBQUssR0FBdUIsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQXFCLENBQUMsQ0FBQztZQUNwRixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBOEIsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JGLE1BQU0sTUFBTSxHQUFjLE9BQU8sWUFBWSxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUUsT0FBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkgsS0FBSyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQXVCLENBQUM7WUFDckUsQ0FBQztZQUVELElBQUksSUFBd0IsQ0FBQztZQUM3QixJQUFJLENBQUM7Z0JBQ0gsSUFBSSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxHQUFHLEdBQUcsR0FBRyxrQ0FBa0MsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNoRCxDQUFDLENBQUM7UUFFRixNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUU7WUFDekMsS0FBSyxFQUFFLEdBQUcsR0FBRyxXQUFXO1NBQ3pCLENBQUMsQ0FBQztRQUVILE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUF3QjtRQUN6QyxPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3JDLFFBQVEsQ0FBQyxNQUF1QixFQUFFLElBQVk7Z0JBQzVDLElBQUksTUFBTSxZQUFZLFdBQVc7b0JBQy9CLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFFdEIsSUFBSSxNQUFNLFlBQVksU0FBUyxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3RDLE9BQU8sT0FBTyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUNsRSxDQUFDO2dCQUVELDhCQUE4QjtnQkFDOUIsb0NBQW9DO2dCQUNwQyx3QkFBd0I7Z0JBQ3hCLEVBQUU7Z0JBQ0Ysb0NBQW9DO2dCQUNwQywwQ0FBMEM7Z0JBQzFDLHFFQUFxRTtnQkFDckUsSUFBSTtnQkFFSixPQUFRLE1BQW1CLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxDQUFDO1lBQ0QsU0FBUyxFQUFFLFVBQVMsTUFBdUI7Z0JBQ3pDLE9BQU8sTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUNELGVBQWUsRUFBRSxJQUFJO1lBQ3JCLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBDb21wYXJpc29uVmFsaWRhdGlvbktleXMsXG4gIERFRkFVTFRfUEFUVEVSTlMsXG4gIFBhdGhQcm94eSxcbiAgUGF0aFByb3h5RW5naW5lLFxuICBWYWxpZGF0aW9uLFxuICBWYWxpZGF0aW9uS2V5cyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb24nO1xuaW1wb3J0IHsgRmllbGRQcm9wZXJ0aWVzLCBIVE1MNUlucHV0VHlwZXMsIHBhcnNlVmFsdWVCeVR5cGUgfSBmcm9tICdAZGVjYWYtdHMvdWktZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBbmd1bGFyRW5naW5lS2V5cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEtleVZhbHVlIH0gZnJvbSAnLi90eXBlcyc7XG5cbnR5cGUgQ29tcGFyaXNvblZhbGlkYXRpb25LZXkgPSB0eXBlb2YgQ29tcGFyaXNvblZhbGlkYXRpb25LZXlzW2tleW9mIHR5cGVvZiBDb21wYXJpc29uVmFsaWRhdGlvbktleXNdO1xuXG4vKipcbiAqXG4gKiBSZXNvbHZlcyB0aGUgY29ycmVjdCB2YWxpZGF0b3Iga2V5IGFuZCBpdHMgYXNzb2NpYXRlZCBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBpbnB1dCBrZXkgYW5kIHR5cGUuXG4gKlxuICogV2hlbiB0aGUgdmFsaWRhdGlvbiBrZXkgaXMgVFlQRSwgaXQncyBuZWNlc3NhcnkgdG8gcmVzb2x2ZSB0aGUgYWN0dWFsIHZhbGlkYXRvciBiYXNlZCBvbiB0aGVcbiAqIGZpZWxkJ3MgdHlwZSAoZS5nLiwgJ3Bhc3N3b3JkJywgJ2VtYWlsJywgJ3VybCcpIGluc3RlYWQgb2YgdXNpbmcgdGhlIGdlbmVyaWMgZ2V0VmFsaWRhdG9yKFwidHlwZVwiKSBsb2dpYy5cbiAqIFRoaXMgYWxsb3dzIGRpcmVjdGx5IGludm9raW5nIHNwZWNpZmljIHZhbGlkYXRvcnMgbGlrZSBnZXRWYWxpZGF0b3IoJ3Bhc3N3b3JkJyksIGVuc3VyaW5nIHRoZSBjb3JyZWN0XG4gKiBiZWhhdmlvciBmb3IgdHlwZS1iYXNlZCB2YWxpZGF0aW9uLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBUaGUgdmFsaWRhdGlvbiBrZXkgKGUuZy4sICd0eXBlJywgJ3JlcXVpcmVkJywgZXRjLikuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdGhhdCBuZWVkcyBiZSBwcm92aWRlZCB0byB0aGUgdmFsaWRhdG9yLlxuICogQHBhcmFtIHR5cGUgLSBUaGUgZmllbGQncyBkZWNsYXJlZCB0eXBlLlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc29sdmVkIHZhbGlkYXRvciBrZXkgYW5kIGl0cyBjb3JyZXNwb25kaW5nIHByb3BzLlxuICovXG5jb25zdCByZXNvbHZlVmFsaWRhdG9yS2V5UHJvcHMgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCB0eXBlOiBzdHJpbmcpOiB7XG4gIHZhbGlkYXRvcktleTogc3RyaW5nO1xuICBwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59ID0+IHtcbiAgY29uc3QgcGF0dGVyblZhbGlkYXRvcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIFtWYWxpZGF0aW9uS2V5cy5QQVNTV09SRF06IERFRkFVTFRfUEFUVEVSTlMuUEFTU1dPUkQuQ0hBUjhfT05FX09GX0VBQ0gsXG4gICAgW1ZhbGlkYXRpb25LZXlzLkVNQUlMXTogREVGQVVMVF9QQVRURVJOUy5FTUFJTCxcbiAgICBbVmFsaWRhdGlvbktleXMuVVJMXTogREVGQVVMVF9QQVRURVJOUy5VUkwsXG4gIH07XG5cbiAgY29uc3QgaXNUeXBlQmFzZWQgPSBrZXkgPT09IFZhbGlkYXRpb25LZXlzLlRZUEUgJiYgT2JqZWN0LmtleXMocGF0dGVyblZhbGlkYXRvcnMpLmluY2x1ZGVzKHR5cGUpO1xuICBjb25zdCB2YWxpZGF0b3JLZXkgPSBpc1R5cGVCYXNlZCA/IHR5cGUgOiBrZXk7XG4gIGNvbnN0IHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICBbdmFsaWRhdG9yS2V5XTogdmFsdWUsXG4gICAgLy8gRW1haWwsIFBhc3N3b3JkLCBhbmQgVVJMIGFyZSB2YWxpZGF0ZWQgdXNpbmcgdGhlIFwicGF0dGVyblwiIGtleVxuICAgIC4uLihpc1R5cGVCYXNlZCAmJiB7IFtWYWxpZGF0aW9uS2V5cy5QQVRURVJOXTogcGF0dGVyblZhbGlkYXRvcnNbdHlwZV0gfSksXG4gIH07XG5cbiAgcmV0dXJuIHsgdmFsaWRhdG9yS2V5LCBwcm9wcyB9O1xufTtcblxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdG9yRmFjdG9yeSB7XG4gIHN0YXRpYyBzcGF3bihmaWVsZFByb3BzOiBGaWVsZFByb3BlcnRpZXMsIGtleTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIGlmICghVmFsaWRhdGlvbi5rZXlzKCkuaW5jbHVkZXMoa2V5KSlcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgY3VzdG9tIHZhbGlkYXRpb24nKTtcblxuICAgIGNvbnN0IHZhbGlkYXRvckZuOiBWYWxpZGF0b3JGbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCB7IG5hbWUsIHR5cGUgfSA9IGZpZWxkUHJvcHM7XG4gICAgICBjb25zdCB7IHZhbGlkYXRvcktleSwgcHJvcHMgfSA9IHJlc29sdmVWYWxpZGF0b3JLZXlQcm9wcyhrZXksIGZpZWxkUHJvcHNba2V5IGFzIGtleW9mIEZpZWxkUHJvcGVydGllc10sIHR5cGUpO1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gVmFsaWRhdGlvbi5nZXQodmFsaWRhdG9yS2V5KSBhcyBWYWxpZGF0b3I7XG5cbiAgICAgIC8vIHBhcnNlVmFsdWVCeVR5cGUgZG9lcyBub3Qgc3VwcG9ydCB1bmRlZmluZWQgdmFsdWVzXG4gICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiBjb250cm9sLnZhbHVlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IHBhcnNlVmFsdWVCeVR5cGUodHlwZSwgdHlwZSA9PT0gSFRNTDVJbnB1dFR5cGVzLkNIRUNLQk9YID8gbmFtZSA6IGNvbnRyb2wudmFsdWUsIGZpZWxkUHJvcHMpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAvLyBDcmVhdGUgYSBwcm94eSB0byBlbmFibGUgYWNjZXNzIHRvIHBhcmVudCBhbmQgY2hpbGQgdmFsdWVzXG4gICAgICBsZXQgcHJveHk6IFBhdGhQcm94eTx1bmtub3duPiA9IFZhbGlkYXRvckZhY3RvcnkuY3JlYXRlUHJveHkoe30gYXMgQWJzdHJhY3RDb250cm9sKTtcbiAgICAgIGlmIChPYmplY3QudmFsdWVzKENvbXBhcmlzb25WYWxpZGF0aW9uS2V5cykuaW5jbHVkZXMoa2V5IGFzIENvbXBhcmlzb25WYWxpZGF0aW9uS2V5KSkge1xuICAgICAgICBjb25zdCBwYXJlbnQ6IEZvcm1Hcm91cCA9IGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXAgPyBjb250cm9sIDogKGNvbnRyb2wgYXMgS2V5VmFsdWUpW0FuZ3VsYXJFbmdpbmVLZXlzLlBBUkVOVF07XG4gICAgICAgIHByb3h5ID0gVmFsaWRhdG9yRmFjdG9yeS5jcmVhdGVQcm94eShwYXJlbnQpIGFzIFBhdGhQcm94eTx1bmtub3duPjtcbiAgICAgIH1cblxuICAgICAgbGV0IGVycnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGVycnMgPSB2YWxpZGF0b3IuaGFzRXJyb3JzKHZhbHVlLCBwcm9wcywgcHJveHkpO1xuICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICBlcnJzID0gYCR7a2V5fSB2YWxpZGF0b3IgZmFpbGVkIHRvIHZhbGlkYXRlOiAke2V9YDtcbiAgICAgICAgY29uc29sZS53YXJuKGVycnMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXJycyA/IHsgW3ZhbGlkYXRvcktleV06IHRydWUgfSA6IG51bGw7XG4gICAgfTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWxpZGF0b3JGbiwgJ25hbWUnLCB7XG4gICAgICB2YWx1ZTogYCR7a2V5fVZhbGlkYXRvcmAsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdG9yRm47XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIHByb3h5IHdyYXBwZXIgZm9yIGFuIEFuZ3VsYXIgQWJzdHJhY3RDb250cm9sIHRvIGFzc2lzdCB3aXRoIGN1c3RvbSB2YWxpZGF0aW9uIGxvZ2ljLlxuICAgKiBAZGVzY3JpcHRpb24gUmV0dXJucyBhIHN0cnVjdHVyZWQgcHJveHkgb2JqZWN0IHRoYXQgc2ltdWxhdGVzIGEgaGllcmFyY2hpY2FsIHRyZWUgb2YgZm9ybSB2YWx1ZXMuXG4gICAqIEVuYWJsZXMgVmFsaWRhdG9ycyBoYW5kbGluZyBtZXRob2QgdG8gYWNjZXNzIHBhcmVudCBhbmQgY2hpbGQgcHJvcGVydGllcyB1c2luZyBjb25zaXN0ZW50IGRvdC1ub3RhdGlvbiBpbiBBbmd1bGFyIGZvcm1zLlxuICAgKlxuICAgKiBAcGFyYW0ge0Fic3RyYWN0Q29udHJvbH0gY29udHJvbCAtIFRoZSBjb250cm9sIHRvIHdyYXAgaW4gYSBwcm94eS5cbiAgICogQHJldHVybnMge1BhdGhQcm94eTx1bmtub3duPn0gQSBwcm94eSBvYmplY3QgZXhwb3NpbmcgZm9ybSB2YWx1ZXMgYW5kIGVuYWJsaW5nIHJlY3Vyc2l2ZSBwYXJlbnQgYWNjZXNzLlxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVByb3h5KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFBhdGhQcm94eTx1bmtub3duPiB7XG4gICAgcmV0dXJuIFBhdGhQcm94eUVuZ2luZS5jcmVhdGUoY29udHJvbCwge1xuICAgICAgZ2V0VmFsdWUodGFyZ2V0OiBBYnN0cmFjdENvbnRyb2wsIHByb3A6IHN0cmluZyk6IHVua25vd24ge1xuICAgICAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpXG4gICAgICAgICAgcmV0dXJuIHRhcmdldC52YWx1ZTtcblxuICAgICAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IHRhcmdldC5jb250cm9sc1twcm9wXTtcbiAgICAgICAgICByZXR1cm4gY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sID8gY29udHJvbC52YWx1ZSA6IGNvbnRyb2w7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25zdCB2YWx1ZSA9IHRhcmdldFtwcm9wXTtcbiAgICAgICAgLy8gaWYgKHZhbHVlIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpXG4gICAgICAgIC8vICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xuICAgICAgICAvL1xuICAgICAgICAvLyBpZiAodmFsdWUgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgLy8gICBjb25zdCBjb250cm9sID0gdmFsdWUuY29udHJvbHNbcHJvcF07XG4gICAgICAgIC8vICAgcmV0dXJuIGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCA/IGNvbnRyb2wudmFsdWUgOiBjb250cm9sO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgcmV0dXJuICh0YXJnZXQgYXMgS2V5VmFsdWUpPy5bcHJvcF07XG4gICAgICB9LFxuICAgICAgZ2V0UGFyZW50OiBmdW5jdGlvbih0YXJnZXQ6IEFic3RyYWN0Q29udHJvbCkgIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldD8uWydfcGFyZW50J107XG4gICAgICB9LFxuICAgICAgaWdub3JlVW5kZWZpbmVkOiB0cnVlLFxuICAgICAgaWdub3JlTnVsbDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,160 +0,0 @@
1
- import { UIKeys } from '@decaf-ts/ui-decorators';
2
- import { VALIDATION_PARENT_KEY } from '@decaf-ts/decorator-validation';
3
- /**
4
- * @description Angular engine key constants
5
- * @summary Contains key strings used by the Angular rendering engine for reflection,
6
- * dynamic component creation, and other engine operations.
7
- * @typedef {Object} AngularEngineKeys
8
- * @property {string} REFLECT - Prefix for reflection metadata keys
9
- * @property {string} DYNAMIC - Key for dynamic component identification
10
- * @property {string} ANNOTATIONS - Key for component annotations
11
- * @property {string} ECMP - Key for embedded components
12
- * @property {string} NG_REFLECT - Prefix for Angular reflection attributes
13
- * @property {string} RENDERED - Prefix for rendered component markers
14
- * @property {string} MAPPER - Key for property mappers
15
- * @property {string} CHILDREN - Key for child components
16
- * @property {string} LISTABLE - Key for listable components
17
- * @property {string} RENDER - Key for renderable components
18
- * @property {string} RENDERED_ID - Template for rendered component IDs
19
- * @property {string} PARENT - Key for comparison decorators and validators
20
- * @const AngularEngineKeys
21
- * @memberOf module:engine
22
- */
23
- export const AngularEngineKeys = {
24
- REFLECT: `${UIKeys.REFLECT}.angular.`,
25
- DYNAMIC: 'dynamic-component',
26
- ANNOTATIONS: '__annotations__',
27
- ECMP: 'ecmp',
28
- NG_REFLECT: 'ng-reflect-',
29
- RENDERED: 'rendered-as-',
30
- MAPPER: 'mapper',
31
- CHILDREN: 'children',
32
- LISTABLE: 'listable',
33
- RENDER: 'render',
34
- RENDERED_ID: 'rendered-as-{0}',
35
- PARENT: '_parent',
36
- VALIDATION_PARENT_KEY: VALIDATION_PARENT_KEY
37
- };
38
- /**
39
- * @description Form validation state constants
40
- * @summary Contains constants representing the possible validation states of a form.
41
- * These are used to check and handle form validation throughout the application.
42
- * @typedef {Object} FormConstants
43
- * @property {string} VALID - Constant representing a valid form state
44
- * @property {string} INVALID - Constant representing an invalid form state
45
- * @const FormConstants
46
- * @memberOf module:engine
47
- */
48
- export const FormConstants = {
49
- VALID: 'VALID',
50
- INVALID: 'INVALID',
51
- };
52
- /**
53
- * @description Event name constants
54
- * @summary Enum containing constants for event names used throughout the application.
55
- * These are used to standardize event naming and handling.
56
- * @enum {string}
57
- * @readonly
58
- * @property {string} BACK_BUTTON_NAVIGATION - Event fired when back button navigation ends
59
- * @property {string} REFRESH_EVENT - Event fired when a refresh action occurs
60
- * @property {string} CLICK_EVENT - Event fired when a click action occurs
61
- * @property {string} SUBMIT_EVENT - Event fired when a form submission occurs
62
- * @memberOf module:engine
63
- */
64
- export var EventConstants;
65
- (function (EventConstants) {
66
- EventConstants["BACK_BUTTON_NAVIGATION"] = "backButtonNavigationEndEvent";
67
- EventConstants["REFRESH_EVENT"] = "RefreshEvent";
68
- EventConstants["CLICK_EVENT"] = "ClickEvent";
69
- EventConstants["SUBMIT_EVENT"] = "SubmitEvent";
70
- })(EventConstants || (EventConstants = {}));
71
- /**
72
- * @description Logger level constants
73
- * @summary Enum defining the logging levels used in the application's logging system.
74
- * Lower values represent more verbose logging, while higher values represent more critical logs.
75
- * @enum {number}
76
- * @readonly
77
- * @property {number} ALL - Log everything (most verbose)
78
- * @property {number} DEBUG - Log debug information
79
- * @property {number} INFO - Log informational messages
80
- * @property {number} WARN - Log warnings
81
- * @property {number} ERROR - Log errors
82
- * @property {number} CRITICAL - Log critical errors (least verbose)
83
- * @memberOf module:engine
84
- */
85
- export var LoggerLevels;
86
- (function (LoggerLevels) {
87
- LoggerLevels[LoggerLevels["ALL"] = 0] = "ALL";
88
- LoggerLevels[LoggerLevels["DEBUG"] = 1] = "DEBUG";
89
- LoggerLevels[LoggerLevels["INFO"] = 2] = "INFO";
90
- LoggerLevels[LoggerLevels["WARN"] = 3] = "WARN";
91
- LoggerLevels[LoggerLevels["ERROR"] = 4] = "ERROR";
92
- LoggerLevels[LoggerLevels["CRITICAL"] = 5] = "CRITICAL";
93
- })(LoggerLevels || (LoggerLevels = {}));
94
- ;
95
- /**
96
- * @description Route direction constants
97
- * @summary Enum defining the possible navigation directions in the application.
98
- * Used for controlling navigation flow and animation directions.
99
- * @enum {string}
100
- * @readonly
101
- * @property {string} BACK - Navigate back to the previous page
102
- * @property {string} FORWARD - Navigate forward to the next page
103
- * @property {string} ROOT - Navigate to the root/home page
104
- * @memberOf module:engine
105
- */
106
- export var RouteDirections;
107
- (function (RouteDirections) {
108
- RouteDirections["BACK"] = "back";
109
- RouteDirections["FORWARD"] = "forward";
110
- RouteDirections["ROOT"] = "root";
111
- })(RouteDirections || (RouteDirections = {}));
112
- /**
113
- * @description Component tag name constants
114
- * @summary Enum defining the tag names for custom components used in the application.
115
- * These tag names are used for component registration and rendering.
116
- * @enum {string}
117
- * @readonly
118
- * @property {string} LIST_ITEM - Tag name for list item component
119
- * @property {string} LIST_INFINITE - Tag name for infinite scrolling list component
120
- * @property {string} LIST_PAGINATED - Tag name for paginated list component
121
- * @memberOf module:engine
122
- */
123
- export var ComponentsTagNames;
124
- (function (ComponentsTagNames) {
125
- ComponentsTagNames["LIST_ITEM"] = "ngx-decaf-list-item";
126
- ComponentsTagNames["LIST_INFINITE"] = "ngx-decaf-list-infinite";
127
- ComponentsTagNames["LIST_PAGINATED"] = "ngx-decaf-list-paginated";
128
- })(ComponentsTagNames || (ComponentsTagNames = {}));
129
- /**
130
- * @description Base component property name constants
131
- * @summary Enum defining the standard property names used by base components in the application.
132
- * These property names are used for consistent property access across components.
133
- * @enum {string}
134
- * @readonly
135
- * @property {string} MODEL - Property name for the component's data model
136
- * @property {string} LOCALE - Property name for localization settings
137
- * @property {string} PK - Property name for primary key
138
- * @property {string} ITEMS - Property name for collection items
139
- * @property {string} ROUTE - Property name for routing information
140
- * @property {string} OPERATIONS - Property name for available operations
141
- * @property {string} UID - Property name for unique identifier
142
- * @property {string} TRANSLATABLE - Property name for translation flag
143
- * @property {string} MAPPER - Property name for property mapper
144
- * @property {string} INITIALIZED - Property name for initialization state
145
- * @memberOf module:engine
146
- */
147
- export var BaseComponentProps;
148
- (function (BaseComponentProps) {
149
- BaseComponentProps["MODEL"] = "model";
150
- BaseComponentProps["LOCALE"] = "locale";
151
- BaseComponentProps["PK"] = "pk";
152
- BaseComponentProps["ITEMS"] = "items";
153
- BaseComponentProps["ROUTE"] = "route";
154
- BaseComponentProps["OPERATIONS"] = "operations";
155
- BaseComponentProps["UID"] = "uid";
156
- BaseComponentProps["TRANSLATABLE"] = "translatable";
157
- BaseComponentProps["MAPPER"] = "mapper";
158
- BaseComponentProps["INITIALIZED"] = "initialized";
159
- })(BaseComponentProps || (BaseComponentProps = {}));
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLFdBQVc7SUFDckMsT0FBTyxFQUFFLG1CQUFtQjtJQUM1QixXQUFXLEVBQUUsaUJBQWlCO0lBQzlCLElBQUksRUFBRSxNQUFNO0lBQ1osVUFBVSxFQUFFLGFBQWE7SUFDekIsUUFBUSxFQUFFLGNBQWM7SUFDeEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsV0FBVyxFQUFFLGlCQUFpQjtJQUM5QixNQUFNLEVBQUUsU0FBUztJQUNqQixxQkFBcUIsRUFBRSxxQkFBcUI7Q0FDN0MsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUMzQixLQUFLLEVBQUUsT0FBTztJQUNkLE9BQU8sRUFBRSxTQUFTO0NBQ25CLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBTixJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDeEIseUVBQXVELENBQUE7SUFDdkQsZ0RBQThCLENBQUE7SUFDOUIsNENBQTBCLENBQUE7SUFDMUIsOENBQTRCLENBQUE7QUFDOUIsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sQ0FBTixJQUFZLFlBT1g7QUFQRCxXQUFZLFlBQVk7SUFDdEIsNkNBQU8sQ0FBQTtJQUNQLGlEQUFTLENBQUE7SUFDVCwrQ0FBUSxDQUFBO0lBQ1IsK0NBQVEsQ0FBQTtJQUNSLGlEQUFTLENBQUE7SUFDVCx1REFBWSxDQUFBO0FBQ2QsQ0FBQyxFQVBXLFlBQVksS0FBWixZQUFZLFFBT3ZCO0FBQUEsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3pCLGdDQUFhLENBQUE7SUFDYixzQ0FBbUIsQ0FBQTtJQUNuQixnQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCO0FBR0Q7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBTixJQUFZLGtCQUlYO0FBSkQsV0FBWSxrQkFBa0I7SUFDNUIsdURBQWlDLENBQUE7SUFDakMsK0RBQXlDLENBQUE7SUFDekMsaUVBQTJDLENBQUE7QUFDN0MsQ0FBQyxFQUpXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFJN0I7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLENBQU4sSUFBWSxrQkFXWDtBQVhELFdBQVksa0JBQWtCO0lBQzVCLHFDQUFlLENBQUE7SUFDZix1Q0FBaUIsQ0FBQTtJQUNqQiwrQkFBUyxDQUFBO0lBQ1QscUNBQWUsQ0FBQTtJQUNmLHFDQUFlLENBQUE7SUFDZiwrQ0FBeUIsQ0FBQTtJQUN6QixpQ0FBVyxDQUFBO0lBQ1gsbURBQTZCLENBQUE7SUFDN0IsdUNBQWlCLENBQUE7SUFDakIsaURBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQVhXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFXN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVSUtleXMgfSBmcm9tICdAZGVjYWYtdHMvdWktZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBWQUxJREFUSU9OX1BBUkVOVF9LRVkgfSBmcm9tICdAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb24nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBbmd1bGFyIGVuZ2luZSBrZXkgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBDb250YWlucyBrZXkgc3RyaW5ncyB1c2VkIGJ5IHRoZSBBbmd1bGFyIHJlbmRlcmluZyBlbmdpbmUgZm9yIHJlZmxlY3Rpb24sXG4gKiBkeW5hbWljIGNvbXBvbmVudCBjcmVhdGlvbiwgYW5kIG90aGVyIGVuZ2luZSBvcGVyYXRpb25zLlxuICogQHR5cGVkZWYge09iamVjdH0gQW5ndWxhckVuZ2luZUtleXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRUZMRUNUIC0gUHJlZml4IGZvciByZWZsZWN0aW9uIG1ldGFkYXRhIGtleXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBEWU5BTUlDIC0gS2V5IGZvciBkeW5hbWljIGNvbXBvbmVudCBpZGVudGlmaWNhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IEFOTk9UQVRJT05TIC0gS2V5IGZvciBjb21wb25lbnQgYW5ub3RhdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBFQ01QIC0gS2V5IGZvciBlbWJlZGRlZCBjb21wb25lbnRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTkdfUkVGTEVDVCAtIFByZWZpeCBmb3IgQW5ndWxhciByZWZsZWN0aW9uIGF0dHJpYnV0ZXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRU5ERVJFRCAtIFByZWZpeCBmb3IgcmVuZGVyZWQgY29tcG9uZW50IG1hcmtlcnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNQVBQRVIgLSBLZXkgZm9yIHByb3BlcnR5IG1hcHBlcnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBDSElMRFJFTiAtIEtleSBmb3IgY2hpbGQgY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IExJU1RBQkxFIC0gS2V5IGZvciBsaXN0YWJsZSBjb21wb25lbnRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVOREVSIC0gS2V5IGZvciByZW5kZXJhYmxlIGNvbXBvbmVudHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRU5ERVJFRF9JRCAtIFRlbXBsYXRlIGZvciByZW5kZXJlZCBjb21wb25lbnQgSURzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUEFSRU5UIC0gS2V5IGZvciBjb21wYXJpc29uIGRlY29yYXRvcnMgYW5kIHZhbGlkYXRvcnNcbiAqIEBjb25zdCBBbmd1bGFyRW5naW5lS2V5c1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGNvbnN0IEFuZ3VsYXJFbmdpbmVLZXlzID0ge1xuICBSRUZMRUNUOiBgJHtVSUtleXMuUkVGTEVDVH0uYW5ndWxhci5gLFxuICBEWU5BTUlDOiAnZHluYW1pYy1jb21wb25lbnQnLFxuICBBTk5PVEFUSU9OUzogJ19fYW5ub3RhdGlvbnNfXycsXG4gIEVDTVA6ICdlY21wJyxcbiAgTkdfUkVGTEVDVDogJ25nLXJlZmxlY3QtJyxcbiAgUkVOREVSRUQ6ICdyZW5kZXJlZC1hcy0nLFxuICBNQVBQRVI6ICdtYXBwZXInLFxuICBDSElMRFJFTjogJ2NoaWxkcmVuJyxcbiAgTElTVEFCTEU6ICdsaXN0YWJsZScsXG4gIFJFTkRFUjogJ3JlbmRlcicsXG4gIFJFTkRFUkVEX0lEOiAncmVuZGVyZWQtYXMtezB9JyxcbiAgUEFSRU5UOiAnX3BhcmVudCcsXG4gIFZBTElEQVRJT05fUEFSRU5UX0tFWTogVkFMSURBVElPTl9QQVJFTlRfS0VZXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGb3JtIHZhbGlkYXRpb24gc3RhdGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBDb250YWlucyBjb25zdGFudHMgcmVwcmVzZW50aW5nIHRoZSBwb3NzaWJsZSB2YWxpZGF0aW9uIHN0YXRlcyBvZiBhIGZvcm0uXG4gKiBUaGVzZSBhcmUgdXNlZCB0byBjaGVjayBhbmQgaGFuZGxlIGZvcm0gdmFsaWRhdGlvbiB0aHJvdWdob3V0IHRoZSBhcHBsaWNhdGlvbi5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IEZvcm1Db25zdGFudHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBWQUxJRCAtIENvbnN0YW50IHJlcHJlc2VudGluZyBhIHZhbGlkIGZvcm0gc3RhdGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJTlZBTElEIC0gQ29uc3RhbnQgcmVwcmVzZW50aW5nIGFuIGludmFsaWQgZm9ybSBzdGF0ZVxuICogQGNvbnN0IEZvcm1Db25zdGFudHNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBjb25zdCBGb3JtQ29uc3RhbnRzID0ge1xuICBWQUxJRDogJ1ZBTElEJyxcbiAgSU5WQUxJRDogJ0lOVkFMSUQnLFxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXZlbnQgbmFtZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IEVudW0gY29udGFpbmluZyBjb25zdGFudHMgZm9yIGV2ZW50IG5hbWVzIHVzZWQgdGhyb3VnaG91dCB0aGUgYXBwbGljYXRpb24uXG4gKiBUaGVzZSBhcmUgdXNlZCB0byBzdGFuZGFyZGl6ZSBldmVudCBuYW1pbmcgYW5kIGhhbmRsaW5nLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJBQ0tfQlVUVE9OX05BVklHQVRJT04gLSBFdmVudCBmaXJlZCB3aGVuIGJhY2sgYnV0dG9uIG5hdmlnYXRpb24gZW5kc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFRlJFU0hfRVZFTlQgLSBFdmVudCBmaXJlZCB3aGVuIGEgcmVmcmVzaCBhY3Rpb24gb2NjdXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQ0xJQ0tfRVZFTlQgLSBFdmVudCBmaXJlZCB3aGVuIGEgY2xpY2sgYWN0aW9uIG9jY3Vyc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFNVQk1JVF9FVkVOVCAtIEV2ZW50IGZpcmVkIHdoZW4gYSBmb3JtIHN1Ym1pc3Npb24gb2NjdXJzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgZW51bSBFdmVudENvbnN0YW50cyB7XG4gIEJBQ0tfQlVUVE9OX05BVklHQVRJT04gPSAnYmFja0J1dHRvbk5hdmlnYXRpb25FbmRFdmVudCcsXG4gIFJFRlJFU0hfRVZFTlQgPSAnUmVmcmVzaEV2ZW50JyxcbiAgQ0xJQ0tfRVZFTlQgPSAnQ2xpY2tFdmVudCcsXG4gIFNVQk1JVF9FVkVOVCA9ICdTdWJtaXRFdmVudCcsXG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExvZ2dlciBsZXZlbCBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IEVudW0gZGVmaW5pbmcgdGhlIGxvZ2dpbmcgbGV2ZWxzIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uJ3MgbG9nZ2luZyBzeXN0ZW0uXG4gKiBMb3dlciB2YWx1ZXMgcmVwcmVzZW50IG1vcmUgdmVyYm9zZSBsb2dnaW5nLCB3aGlsZSBoaWdoZXIgdmFsdWVzIHJlcHJlc2VudCBtb3JlIGNyaXRpY2FsIGxvZ3MuXG4gKiBAZW51bSB7bnVtYmVyfVxuICogQHJlYWRvbmx5XG4gKiBAcHJvcGVydHkge251bWJlcn0gQUxMIC0gTG9nIGV2ZXJ5dGhpbmcgKG1vc3QgdmVyYm9zZSlcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBERUJVRyAtIExvZyBkZWJ1ZyBpbmZvcm1hdGlvblxuICogQHByb3BlcnR5IHtudW1iZXJ9IElORk8gLSBMb2cgaW5mb3JtYXRpb25hbCBtZXNzYWdlc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFdBUk4gLSBMb2cgd2FybmluZ3NcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBFUlJPUiAtIExvZyBlcnJvcnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBDUklUSUNBTCAtIExvZyBjcml0aWNhbCBlcnJvcnMgKGxlYXN0IHZlcmJvc2UpXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgZW51bSBMb2dnZXJMZXZlbHMge1xuICBBTEwgPSAwLFxuICBERUJVRyA9IDEsXG4gIElORk8gPSAyLFxuICBXQVJOID0gMyxcbiAgRVJST1IgPSA0LFxuICBDUklUSUNBTCA9IDVcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJvdXRlIGRpcmVjdGlvbiBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IEVudW0gZGVmaW5pbmcgdGhlIHBvc3NpYmxlIG5hdmlnYXRpb24gZGlyZWN0aW9ucyBpbiB0aGUgYXBwbGljYXRpb24uXG4gKiBVc2VkIGZvciBjb250cm9sbGluZyBuYXZpZ2F0aW9uIGZsb3cgYW5kIGFuaW1hdGlvbiBkaXJlY3Rpb25zLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJBQ0sgLSBOYXZpZ2F0ZSBiYWNrIHRvIHRoZSBwcmV2aW91cyBwYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRk9SV0FSRCAtIE5hdmlnYXRlIGZvcndhcmQgdG8gdGhlIG5leHQgcGFnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFJPT1QgLSBOYXZpZ2F0ZSB0byB0aGUgcm9vdC9ob21lIHBhZ2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBlbnVtIFJvdXRlRGlyZWN0aW9ucyB7XG4gIEJBQ0sgPSAnYmFjaycsXG4gIEZPUldBUkQgPSAnZm9yd2FyZCcsXG4gIFJPT1QgPSAncm9vdCcsXG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IHRhZyBuYW1lIGNvbnN0YW50c1xuICogQHN1bW1hcnkgRW51bSBkZWZpbmluZyB0aGUgdGFnIG5hbWVzIGZvciBjdXN0b20gY29tcG9uZW50cyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqIFRoZXNlIHRhZyBuYW1lcyBhcmUgdXNlZCBmb3IgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhbmQgcmVuZGVyaW5nLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQHByb3BlcnR5IHtzdHJpbmd9IExJU1RfSVRFTSAtIFRhZyBuYW1lIGZvciBsaXN0IGl0ZW0gY29tcG9uZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gTElTVF9JTkZJTklURSAtIFRhZyBuYW1lIGZvciBpbmZpbml0ZSBzY3JvbGxpbmcgbGlzdCBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBMSVNUX1BBR0lOQVRFRCAtIFRhZyBuYW1lIGZvciBwYWdpbmF0ZWQgbGlzdCBjb21wb25lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBlbnVtIENvbXBvbmVudHNUYWdOYW1lcyB7XG4gIExJU1RfSVRFTSA9ICduZ3gtZGVjYWYtbGlzdC1pdGVtJyxcbiAgTElTVF9JTkZJTklURSA9ICduZ3gtZGVjYWYtbGlzdC1pbmZpbml0ZScsXG4gIExJU1RfUEFHSU5BVEVEID0gJ25neC1kZWNhZi1saXN0LXBhZ2luYXRlZCcsXG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2UgY29tcG9uZW50IHByb3BlcnR5IG5hbWUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBFbnVtIGRlZmluaW5nIHRoZSBzdGFuZGFyZCBwcm9wZXJ0eSBuYW1lcyB1c2VkIGJ5IGJhc2UgY29tcG9uZW50cyBpbiB0aGUgYXBwbGljYXRpb24uXG4gKiBUaGVzZSBwcm9wZXJ0eSBuYW1lcyBhcmUgdXNlZCBmb3IgY29uc2lzdGVudCBwcm9wZXJ0eSBhY2Nlc3MgYWNyb3NzIGNvbXBvbmVudHMuXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gTU9ERUwgLSBQcm9wZXJ0eSBuYW1lIGZvciB0aGUgY29tcG9uZW50J3MgZGF0YSBtb2RlbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IExPQ0FMRSAtIFByb3BlcnR5IG5hbWUgZm9yIGxvY2FsaXphdGlvbiBzZXR0aW5nc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFBLIC0gUHJvcGVydHkgbmFtZSBmb3IgcHJpbWFyeSBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJVEVNUyAtIFByb3BlcnR5IG5hbWUgZm9yIGNvbGxlY3Rpb24gaXRlbXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBST1VURSAtIFByb3BlcnR5IG5hbWUgZm9yIHJvdXRpbmcgaW5mb3JtYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBPUEVSQVRJT05TIC0gUHJvcGVydHkgbmFtZSBmb3IgYXZhaWxhYmxlIG9wZXJhdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBVSUQgLSBQcm9wZXJ0eSBuYW1lIGZvciB1bmlxdWUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtzdHJpbmd9IFRSQU5TTEFUQUJMRSAtIFByb3BlcnR5IG5hbWUgZm9yIHRyYW5zbGF0aW9uIGZsYWdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNQVBQRVIgLSBQcm9wZXJ0eSBuYW1lIGZvciBwcm9wZXJ0eSBtYXBwZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJTklUSUFMSVpFRCAtIFByb3BlcnR5IG5hbWUgZm9yIGluaXRpYWxpemF0aW9uIHN0YXRlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgZW51bSBCYXNlQ29tcG9uZW50UHJvcHMge1xuICBNT0RFTCA9ICdtb2RlbCcsXG4gIExPQ0FMRSA9ICdsb2NhbGUnLFxuICBQSyA9ICdwaycsXG4gIElURU1TID0gJ2l0ZW1zJyxcbiAgUk9VVEUgPSAncm91dGUnLFxuICBPUEVSQVRJT05TID0gJ29wZXJhdGlvbnMnLFxuICBVSUQgPSAndWlkJyxcbiAgVFJBTlNMQVRBQkxFID0gJ3RyYW5zbGF0YWJsZScsXG4gIE1BUFBFUiA9ICdtYXBwZXInLFxuICBJTklUSUFMSVpFRCA9ICdpbml0aWFsaXplZCcsXG59XG5cblxuIl19
@@ -1,38 +0,0 @@
1
- import { apply, metadata } from '@decaf-ts/reflection';
2
- import { NgxRenderingEngine2 } from './NgxRenderingEngine2';
3
- import { AngularEngineKeys } from './constants';
4
- import { InternalError } from '@decaf-ts/db-decorators';
5
- import { reflectComponentType } from '@angular/core';
6
- /**
7
- * @description Marks an Angular component as dynamically loadable
8
- * @summary Decorator that registers an Angular component with the NgxRenderingEngine2 for dynamic loading.
9
- * This decorator must be applied before the @Component decorator to properly extract component metadata.
10
- * It adds metadata to the component class and registers it with the rendering engine using its selector.
11
- * @function Dynamic
12
- * @return {Function} A decorator function that can be applied to Angular component classes
13
- * @mermaid
14
- * sequenceDiagram
15
- * participant C as Component Class
16
- * participant D as Dynamic Decorator
17
- * participant R as NgxRenderingEngine2
18
- * participant M as Angular Metadata
19
- * C->>D: Apply decorator
20
- * D->>M: reflectComponentType()
21
- * M-->>D: Return component metadata
22
- * alt No metadata found
23
- * D->>D: Throw InternalError
24
- * else Metadata found
25
- * D->>R: registerComponent(selector, constructor)
26
- * D->>C: Apply metadata
27
- * end
28
- * @category Decorators
29
- */
30
- export function Dynamic() {
31
- return apply((original) => {
32
- const metadata = reflectComponentType(original);
33
- if (!metadata)
34
- throw new InternalError(`Could not find Component metadata. @Dynamic decorator must come above @Component`);
35
- NgxRenderingEngine2.registerComponent(metadata.selector, original);
36
- }, metadata(NgxRenderingEngine2.key(AngularEngineKeys.DYNAMIC), true));
37
- }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZW5naW5lL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUUzRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLEtBQUssQ0FDVixDQUFDLFFBQWdCLEVBQUUsRUFBRTtRQUNuQixNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxRQUF5QixDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLFFBQVE7WUFDWCxNQUFNLElBQUksYUFBYSxDQUNyQixrRkFBa0YsQ0FDbkYsQ0FBQztRQUVKLG1CQUFtQixDQUFDLGlCQUFpQixDQUNuQyxRQUFRLENBQUMsUUFBUSxFQUNqQixRQUEyQyxDQUM1QyxDQUFDO0lBQ0osQ0FBQyxFQUNELFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQ25FLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXBwbHksIG1ldGFkYXRhIH0gZnJvbSAnQGRlY2FmLXRzL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHsgTmd4UmVuZGVyaW5nRW5naW5lMiB9IGZyb20gJy4vTmd4UmVuZGVyaW5nRW5naW5lMic7XG5pbXBvcnQgeyBBbmd1bGFyRW5naW5lS2V5cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSAnQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uJztcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tICdAZGVjYWYtdHMvZGItZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyByZWZsZWN0Q29tcG9uZW50VHlwZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNYXJrcyBhbiBBbmd1bGFyIGNvbXBvbmVudCBhcyBkeW5hbWljYWxseSBsb2FkYWJsZVxuICogQHN1bW1hcnkgRGVjb3JhdG9yIHRoYXQgcmVnaXN0ZXJzIGFuIEFuZ3VsYXIgY29tcG9uZW50IHdpdGggdGhlIE5neFJlbmRlcmluZ0VuZ2luZTIgZm9yIGR5bmFtaWMgbG9hZGluZy5cbiAqIFRoaXMgZGVjb3JhdG9yIG11c3QgYmUgYXBwbGllZCBiZWZvcmUgdGhlIEBDb21wb25lbnQgZGVjb3JhdG9yIHRvIHByb3Blcmx5IGV4dHJhY3QgY29tcG9uZW50IG1ldGFkYXRhLlxuICogSXQgYWRkcyBtZXRhZGF0YSB0byB0aGUgY29tcG9uZW50IGNsYXNzIGFuZCByZWdpc3RlcnMgaXQgd2l0aCB0aGUgcmVuZGVyaW5nIGVuZ2luZSB1c2luZyBpdHMgc2VsZWN0b3IuXG4gKiBAZnVuY3Rpb24gRHluYW1pY1xuICogQHJldHVybiB7RnVuY3Rpb259IEEgZGVjb3JhdG9yIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gQW5ndWxhciBjb21wb25lbnQgY2xhc3Nlc1xuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDIGFzIENvbXBvbmVudCBDbGFzc1xuICogICBwYXJ0aWNpcGFudCBEIGFzIER5bmFtaWMgRGVjb3JhdG9yXG4gKiAgIHBhcnRpY2lwYW50IFIgYXMgTmd4UmVuZGVyaW5nRW5naW5lMlxuICogICBwYXJ0aWNpcGFudCBNIGFzIEFuZ3VsYXIgTWV0YWRhdGFcbiAqICAgQy0+PkQ6IEFwcGx5IGRlY29yYXRvclxuICogICBELT4+TTogcmVmbGVjdENvbXBvbmVudFR5cGUoKVxuICogICBNLS0+PkQ6IFJldHVybiBjb21wb25lbnQgbWV0YWRhdGFcbiAqICAgYWx0IE5vIG1ldGFkYXRhIGZvdW5kXG4gKiAgICAgRC0+PkQ6IFRocm93IEludGVybmFsRXJyb3JcbiAqICAgZWxzZSBNZXRhZGF0YSBmb3VuZFxuICogICAgIEQtPj5SOiByZWdpc3RlckNvbXBvbmVudChzZWxlY3RvciwgY29uc3RydWN0b3IpXG4gKiAgICAgRC0+PkM6IEFwcGx5IG1ldGFkYXRhXG4gKiAgIGVuZFxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIER5bmFtaWMoKSB7XG4gIHJldHVybiBhcHBseShcbiAgICAob3JpZ2luYWw6IG9iamVjdCkgPT4ge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSByZWZsZWN0Q29tcG9uZW50VHlwZShvcmlnaW5hbCBhcyBUeXBlPHVua25vd24+KTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgYENvdWxkIG5vdCBmaW5kIENvbXBvbmVudCBtZXRhZGF0YS4gQER5bmFtaWMgZGVjb3JhdG9yIG11c3QgY29tZSBhYm92ZSBAQ29tcG9uZW50YFxuICAgICAgICApO1xuXG4gICAgICBOZ3hSZW5kZXJpbmdFbmdpbmUyLnJlZ2lzdGVyQ29tcG9uZW50KFxuICAgICAgICBtZXRhZGF0YS5zZWxlY3RvcixcbiAgICAgICAgb3JpZ2luYWwgYXMgdW5rbm93biBhcyBDb25zdHJ1Y3Rvcjx1bmtub3duPlxuICAgICAgKTtcbiAgICB9LFxuICAgIG1ldGFkYXRhKE5neFJlbmRlcmluZ0VuZ2luZTIua2V5KEFuZ3VsYXJFbmdpbmVLZXlzLkRZTkFNSUMpLCB0cnVlKVxuICApO1xufVxuIl19
@@ -1,17 +0,0 @@
1
- /**
2
- * @module engine
3
- * @description Angular rendering engine for Decaf applications
4
- * @summary The engine module provides core functionality for rendering Angular components
5
- * in Decaf applications. It includes constants, decorators, rendering engines, and utility types
6
- * that enable dynamic component creation, property mapping, and component lifecycle management.
7
- * Key exports include {@link NgxRenderingEngine}, {@link DynamicModule}, and various decorators
8
- * for component configuration.
9
- */
10
- export * from './constants';
11
- export * from './decorators';
12
- export * from './DynamicModule';
13
- export * from './NgxRenderingEngine';
14
- export * from './NgxRenderingEngine2';
15
- export * from './types';
16
- export * from './NgxBaseComponent';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgZW5naW5lXG4gKiBAZGVzY3JpcHRpb24gQW5ndWxhciByZW5kZXJpbmcgZW5naW5lIGZvciBEZWNhZiBhcHBsaWNhdGlvbnNcbiAqIEBzdW1tYXJ5IFRoZSBlbmdpbmUgbW9kdWxlIHByb3ZpZGVzIGNvcmUgZnVuY3Rpb25hbGl0eSBmb3IgcmVuZGVyaW5nIEFuZ3VsYXIgY29tcG9uZW50c1xuICogaW4gRGVjYWYgYXBwbGljYXRpb25zLiBJdCBpbmNsdWRlcyBjb25zdGFudHMsIGRlY29yYXRvcnMsIHJlbmRlcmluZyBlbmdpbmVzLCBhbmQgdXRpbGl0eSB0eXBlc1xuICogdGhhdCBlbmFibGUgZHluYW1pYyBjb21wb25lbnQgY3JlYXRpb24sIHByb3BlcnR5IG1hcHBpbmcsIGFuZCBjb21wb25lbnQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQuXG4gKiBLZXkgZXhwb3J0cyBpbmNsdWRlIHtAbGluayBOZ3hSZW5kZXJpbmdFbmdpbmV9LCB7QGxpbmsgRHluYW1pY01vZHVsZX0sIGFuZCB2YXJpb3VzIGRlY29yYXRvcnNcbiAqIGZvciBjb21wb25lbnQgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vRHluYW1pY01vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL05neFJlbmRlcmluZ0VuZ2luZSc7XG5leHBvcnQgKiBmcm9tICcuL05neFJlbmRlcmluZ0VuZ2luZTInO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL05neEJhc2VDb21wb25lbnQnO1xuIl19
@@ -1,4 +0,0 @@
1
- ;
2
- ;
3
- export {};
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErYUMsQ0FBQztBQWNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJb25DaGVja2JveCwgSW9uSW5wdXQsIElvblNlbGVjdCwgSW9uVGV4dGFyZWEgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBUZXh0RmllbGRUeXBlcyB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IEVudmlyb25tZW50SW5qZWN0b3IsIEluamVjdG9yLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRQcm9wZXJ0aWVzIH0gZnJvbSAnQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgT3JkZXJEaXJlY3Rpb24gfSBmcm9tICdAZGVjYWYtdHMvY29yZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdlbmVyaWMga2V5LXZhbHVlIHBhaXIgdHlwZVxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIGdlbmVyaWMgb2JqZWN0IHdpdGggc3RyaW5nIGtleXMgYW5kIGFueSB0eXBlIG9mIHZhbHVlcy5cbiAqIFRoaXMgaXMgY29tbW9ubHkgdXNlZCBmb3IgZHluYW1pYyBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdGhlIHByb3BlcnRpZXMgYXJlIG5vdCBrbm93biBhdCBjb21waWxlIHRpbWUuXG4gKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgYW55Pn0gS2V5VmFsdWVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBLZXlWYWx1ZSA9IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdlbmVyaWMgZnVuY3Rpb24gdHlwZVxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhbnkgbnVtYmVyIG9mIGFyZ3VtZW50cyBvZiBhbnkgdHlwZVxuICogYW5kIHJldHVybnMgYW55IHR5cGUuIFRoaXMgaXMgdXNlZnVsIGZvciBkZWZpbmluZyBmdW5jdGlvbiBwYXJhbWV0ZXJzIG9yIHZhcmlhYmxlc1xuICogd2hlcmUgdGhlIGV4YWN0IGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBub3Qga25vd24gYXQgY29tcGlsZSB0aW1lLlxuICogQHR5cGVkZWYgRnVuY3Rpb25MaWtlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgRnVuY3Rpb25MaWtlID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVsZW1lbnQgc2l6ZSBvcHRpb25zIGZvciBVSSBjb21wb25lbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwb3NzaWJsZSBzaXplIHZhbHVlcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIFVJIGVsZW1lbnRzLlxuICogVGhlc2Ugc2l6ZXMgY29udHJvbCB0aGUgZGltZW5zaW9ucyBhbmQgbGF5b3V0IGJlaGF2aW9yIG9mIGNvbXBvbmVudHMuXG4gKiBAdHlwZWRlZiB7KCdzbWFsbCd8J21lZGl1bSd8J2xhcmdlJ3wneGxhcmdlJ3wnMnhsYXJnZSd8J2F1dG8nfCdleHBhbmQnfCdibG9jaycpfSBFbGVtZW50U2l6ZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEVsZW1lbnRTaXplcyA9XG4gIHwgJ3NtYWxsJ1xuICB8ICdtZWRpdW0nXG4gIHwgJ2xhcmdlJ1xuICB8ICd4bGFyZ2UnXG4gIHwgJzJ4bGFyZ2UnXG4gIHwgJ2F1dG8nXG4gIHwgJ2V4cGFuZCdcbiAgfCAnYmxvY2snO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNpYyBwb3NpdGlvbiBvcHRpb25zIGZvciBVSSBlbGVtZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcG9zc2libGUgcG9zaXRpb24gdmFsdWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gVUkgZWxlbWVudHMuXG4gKiBUaGVzZSBwb3NpdGlvbnMgY29udHJvbCB0aGUgYWxpZ25tZW50IGFuZCBwbGFjZW1lbnQgb2YgY29tcG9uZW50cy5cbiAqIEB0eXBlZGVmIHsoJ2xlZnQnfCdjZW50ZXInfCdyaWdodCd8J3RvcCd8J2JvdHRvbScpfSBFbGVtZW50UG9zaXRpb25zXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBFbGVtZW50UG9zaXRpb25zID0gJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXh0ZW5kZWQgcG9zaXRpb24gb3B0aW9ucyBmb3IgZmxleCBsYXlvdXRzXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBiYXNpYyBFbGVtZW50UG9zaXRpb25zIHdpdGggYWRkaXRpb25hbCBmbGV4LXNwZWNpZmljIHBvc2l0aW9uIHZhbHVlcy5cbiAqIFRoZXNlIHBvc2l0aW9ucyBhcmUgdXNlZCBmb3IgY29udHJvbGxpbmcgYWxpZ25tZW50IGFuZCBkaXN0cmlidXRpb24gaW4gZmxleCBjb250YWluZXJzLlxuICogQHR5cGVkZWYgeyhFbGVtZW50UG9zaXRpb25zfCdzdHJldGNoJ3wnbWlkZGxlJ3wnYXJvdW5kJ3wnYmV0d2VlbicpfSBGbGV4UG9zaXRpb25zXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBGbGV4UG9zaXRpb25zID1cbiAgfCBFbGVtZW50UG9zaXRpb25zXG4gIHwgJ3N0cmV0Y2gnXG4gIHwgJ21pZGRsZSdcbiAgfCAnYXJvdW5kJ1xuICB8ICdiZXR3ZWVuJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVXBkYXRlIG1vZGUgb3B0aW9ucyBmb3IgZm9ybSBmaWVsZHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgd2hlbiBmb3JtIGZpZWxkIHZhbHVlcyBzaG91bGQgYmUgdXBkYXRlZCBpbiB0aGUgbW9kZWwuXG4gKiAtICdjaGFuZ2UnOiBVcGRhdGUgb24gZXZlcnkgY2hhbmdlIGV2ZW50XG4gKiAtICdibHVyJzogVXBkYXRlIHdoZW4gdGhlIGZpZWxkIGxvc2VzIGZvY3VzXG4gKiAtICdzdWJtaXQnOiBVcGRhdGUgb25seSB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZFxuICogQHR5cGVkZWYgeygnY2hhbmdlJ3wnYmx1cid8J3N1Ym1pdCcpfSBGaWVsZFVwZGF0ZU1vZGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEZpZWxkVXBkYXRlTW9kZSA9ICdjaGFuZ2UnIHwgJ2JsdXInIHwgJ3N1Ym1pdCc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1ldGFkYXRhIHN0cnVjdHVyZSBmb3IgQW5ndWxhciBjb21wb25lbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbWV0YWRhdGEgZm9yIEFuZ3VsYXIgY29tcG9uZW50cywgaW5jbHVkaW5nXG4gKiBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5LCBzZWxlY3Rvciwgc3RhbmRhbG9uZSBzdGF0dXMsIGltcG9ydHMsIHRlbXBsYXRlLCBhbmQgc3R5bGVzLlxuICogVGhpcyBpcyB1c2VkIGZvciByZWZsZWN0aW9uIGFuZCBkeW5hbWljIGNvbXBvbmVudCBjcmVhdGlvbi5cbiAqIEBpbnRlcmZhY2UgQ29tcG9uZW50TWV0YWRhdGFcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjaGFuZ2VEZXRlY3Rpb24gLSBUaGUgY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneSBudW1iZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZWxlY3RvciAtIFRoZSBDU1Mgc2VsZWN0b3IgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc3RhbmRhbG9uZSAtIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBzdGFuZGFsb25lXG4gKiBAcHJvcGVydHkgaW1wb3J0cyAtIEFycmF5IG9mIGltcG9ydGVkIG1vZHVsZXMvY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHRlbXBsYXRlIC0gVGhlIEhUTUwgdGVtcGxhdGUgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHN0eWxlcyAtIEFycmF5IG9mIENTUyBzdHlsZXMgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TWV0YWRhdGEge1xuICBjaGFuZ2VEZXRlY3Rpb246IG51bWJlcjtcbiAgc2VsZWN0b3I6IHN0cmluZztcbiAgc3RhbmRhbG9uZTogYm9vbGVhbjtcbiAgaW1wb3J0czogKG5ldyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duKVtdO1xuICB0ZW1wbGF0ZTogc3RyaW5nO1xuICBzdHlsZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPdXRwdXQgc3RydWN0dXJlIGZyb20gdGhlIEFuZ3VsYXIgcmVuZGVyaW5nIGVuZ2luZVxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBvdXRwdXQgcHJvZHVjZWQgYnkgdGhlIE5neFJlbmRlcmluZ0VuZ2luZVxuICogd2hlbiByZW5kZXJpbmcgYSBjb21wb25lbnQuIENvbnRhaW5zIHRoZSBjb21wb25lbnQgdHlwZSwgaW5wdXRzLCBpbmplY3RvcixcbiAqIGNvbnRlbnQgbm9kZXMsIGFuZCBjaGlsZCBjb21wb25lbnRzLlxuICogQHR5cGVkZWYge09iamVjdH0gQW5ndWxhckR5bmFtaWNPdXRwdXRcbiAqIEBwcm9wZXJ0eSB7VHlwZTx1bmtub3duPn0gY29tcG9uZW50IC0gVGhlIEFuZ3VsYXIgY29tcG9uZW50IHR5cGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcmVuZGVyZXJJZF0gLSBPcHRpb25hbCB1bmlxdWUgSUQgZm9yIHRoZSByZW5kZXJlZCBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IFtpbnB1dHNdIC0gT3B0aW9uYWwgaW5wdXQgcHJvcGVydGllcyBmb3IgdGhlIGNvbXBvbmVudFxuICogQHByb3BlcnR5IHtJbmplY3Rvcn0gW2luamVjdG9yXSAtIE9wdGlvbmFsIEFuZ3VsYXIgaW5qZWN0b3IgZm9yIGRlcGVuZGVuY3kgaW5qZWN0aW9uXG4gKiBAcHJvcGVydHkge05vZGVbXVtdfSBbY29udGVudF0gLSBPcHRpb25hbCBjb250ZW50IG5vZGVzIGZvciBwcm9qZWN0aW9uXG4gKiBAcHJvcGVydHkge0FuZ3VsYXJEeW5hbWljT3V0cHV0W119IFtjaGlsZHJlbl0gLSBPcHRpb25hbCBjaGlsZCBjb21wb25lbnRzXG4gKiBAcHJvcGVydHkge1R5cGU8dW5rbm93bj59IFtpbnN0YW5jZV0gLSBPcHRpb25hbCBjb21wb25lbnQgaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSB7Rm9ybUdyb3VwfSBbZm9ybUdyb3VwXSAtIE9wdGlvbmFsIGNvbXBvbmVudCBGb3JtR3JvdXBcbiAqIEBwcm9wZXJ0eSB7Rm9ybUNvbnRyb2x9IFtmb3JtQ29udHJvbF0gLSBPcHRpb25hbCBjb21wb25lbnQgRm9ybUNvbnRyb2xcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhckR5bmFtaWNPdXRwdXQge1xuICBjb21wb25lbnQ6IFR5cGU8dW5rbm93bj47XG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG4gIGlucHV0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xuICBjb250ZW50PzogTm9kZVtdW107XG4gIGNoaWxkcmVuPzogQW5ndWxhckR5bmFtaWNPdXRwdXRbXTtcbiAgaW5zdGFuY2U/OiBUeXBlPHVua25vd24+O1xuICBmb3JtR3JvdXA/OiBGb3JtR3JvdXA7XG4gIGZvcm1Db250cm9sPzogRm9ybUNvbnRyb2w7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgbW9kZWxzIHRoYXQgY2FuIGJlIHJlbmRlcmVkXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgZm9yIG1vZGVscyB0aGF0IGNhbiBiZSByZW5kZXJlZCBieSB0aGUgZW5naW5lLlxuICogQ29udGFpbnMgYW4gb3B0aW9uYWwgcmVuZGVyZXJJZCB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHJlbmRlcmVkIGluc3RhbmNlLlxuICogQGludGVyZmFjZSBSZW5kZXJlZE1vZGVsXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3JlbmRlcmVySWRdIC0gT3B0aW9uYWwgdW5pcXVlIElEIGZvciB0aGUgcmVuZGVyZWQgbW9kZWwgaW5zdGFuY2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZWRNb2RlbCB7XG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBvc3NpYmxlIGlucHV0IHR5cGVzIGZvciBmb3JtIGZpZWxkc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcG9zc2libGUgaW5wdXQgdHlwZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiBmb3JtIGZpZWxkcy5cbiAqIEluY2x1ZGVzIHN0YW5kYXJkIEhUTUwgaW5wdXQgdHlwZXMgbGlrZSBjaGVja2JveCwgcmFkaW8sIGFuZCBzZWxlY3QsXG4gKiBhcyB3ZWxsIGFzIElvbmljJ3MgVGV4dEZpZWxkVHlwZXMgYW5kIHRleHRhcmVhLlxuICogQHR5cGVkZWYgeygnY2hlY2tib3gnfCdyYWRpbyd8J3NlbGVjdCd8VGV4dEZpZWxkVHlwZXN8J3RleHRhcmVhJyl9IFBvc3NpYmxlSW5wdXRUeXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgUG9zc2libGVJbnB1dFR5cGVzID1cbiAgfCAnY2hlY2tib3gnXG4gIHwgJ3JhZGlvJ1xuICB8ICdzZWxlY3QnXG4gIHwgVGV4dEZpZWxkVHlwZXNcbiAgfCAndGV4dGFyZWEnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGaWVsZCBkZWZpbml0aW9uIGZvciBBbmd1bGFyIGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IEEgY29tcHJlaGVuc2l2ZSB0eXBlIHRoYXQgY29tYmluZXMgcHJvcGVydGllcyBmcm9tIHZhcmlvdXMgSW9uaWMgY29tcG9uZW50c1xuICogdG8gZGVmaW5lIHRoZSBzdHJ1Y3R1cmUgb2YgYSBmaWVsZCBpbiBhbiBBbmd1bGFyIGZvcm0uIEl0IG9taXRzIGNlcnRhaW4gcHJvcGVydGllc1xuICogZnJvbSBJb25JbnB1dCwgcGlja3Mgc3BlY2lmaWMgcHJvcGVydGllcyBmcm9tIElvblNlbGVjdCwgSW9uVGV4dGFyZWEsIGFuZCBJb25DaGVja2JveCxcbiAqIGFuZCBhZGRzIGN1c3RvbSBwcm9wZXJ0aWVzIGxpa2UgdHlwZSBhbmQgY2xhc3NOYW1lLlxuICogQHR5cGVkZWYge09iamVjdH0gQW5ndWxhckZpZWxkRGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtQb3NzaWJsZUlucHV0VHlwZXN9IHR5cGUgLSBUaGUgdHlwZSBvZiBpbnB1dCBmaWVsZFxuICogQHByb3BlcnR5IHtzdHJpbmd8c3RyaW5nW119IGNsYXNzTmFtZSAtIENTUyBjbGFzcyBuYW1lKHMpIGZvciB0aGUgZmllbGRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2FuY2VsVGV4dF0gLSBUZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvbiAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ludGVyZmFjZV0gLSBJbnRlcmZhY2Ugc3R5bGUgZm9yIHNlbGVjdCAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3NlbGVjdGVkVGV4dF0gLSBUZXh0IGZvciBzZWxlY3RlZCBvcHRpb24gKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtPYmplY3R9IFtpbnRlcmZhY2VPcHRpb25zXSAtIE9wdGlvbnMgZm9yIHRoZSBpbnRlcmZhY2UgKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtyb3dzXSAtIE51bWJlciBvZiByb3dzIGZvciB0ZXh0YXJlYSAoZnJvbSBJb25UZXh0YXJlYSlcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbY29sc10gLSBOdW1iZXIgb2YgY29sdW1ucyBmb3IgdGV4dGFyZWEgKGZyb20gSW9uVGV4dGFyZWEpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FsaWdubWVudF0gLSBBbGlnbm1lbnQgb2YgY2hlY2tib3ggKGZyb20gSW9uQ2hlY2tib3gpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2p1c3RpZnldIC0gSnVzdGlmaWNhdGlvbiBvZiBjaGVja2JveCAoZnJvbSBJb25DaGVja2JveClcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2NoZWNrZWRdIC0gV2hldGhlciBjaGVja2JveCBpcyBjaGVja2VkIChmcm9tIElvbkNoZWNrYm94KVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQW5ndWxhckZpZWxkRGVmaW5pdGlvbiA9IE9taXQ8XG4gIElvbklucHV0LFxuICB8ICdpb25JbnB1dCdcbiAgfCAnaW9uRm9jdXMnXG4gIHwgJ2lvbkNoYW5nZSdcbiAgfCAnaW9uQmx1cidcbiAgfCAnZ2V0SW5wdXRFbGVtZW50J1xuICB8ICdzZXRGb2N1cydcbiAgfCAnbGFiZWwnXG4gIHwgJ2VsJ1xuICB8ICd6J1xuICB8ICd0eXBlJ1xuPiAmXG4gIFBpY2s8XG4gICAgSW9uU2VsZWN0LFxuICAgICdjYW5jZWxUZXh0JyB8ICdpbnRlcmZhY2UnIHwgJ3NlbGVjdGVkVGV4dCcgfCAnaW50ZXJmYWNlT3B0aW9ucydcbiAgPiAmXG4gIFBpY2s8SW9uVGV4dGFyZWEsICdyb3dzJyB8ICdjb2xzJz4gJlxuICBQaWNrPElvbkNoZWNrYm94LCAnYWxpZ25tZW50JyB8ICdqdXN0aWZ5JyB8ICdjaGVja2VkJz4gJiB7XG4gIHR5cGU6IFBvc3NpYmxlSW5wdXRUeXBlcztcbiAgY2xhc3NOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXTtcbn0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU3RyaW5nIG9yIGJvb2xlYW4gcmVwcmVzZW50YXRpb24gb2YgYSBib29sZWFuIHZhbHVlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgdmFsdWUgdGhhdCBjYW4gYmUgZWl0aGVyIGEgYm9vbGVhbiBvciBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGJvb2xlYW4uXG4gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgaGFuZGxpbmcgYXR0cmlidXRlIHZhbHVlcyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0cmluZ3Mgb3IgYm9vbGVhbnMuXG4gKiBAdHlwZWRlZiB7KCd0cnVlJ3wnZmFsc2UnfGJvb2xlYW4pfSBTdHJpbmdPckJvb2xlYW5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFN0cmluZ09yQm9vbGVhbiA9ICd0cnVlJyB8ICdmYWxzZScgfCBib29sZWFuO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPcHRpb24gdHlwZSBmb3Igc2VsZWN0IGlucHV0c1xuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgSW5wdXRPcHRpb24gaW50ZXJmYWNlIHdpdGggYSBzZWxlY3RlZCBwcm9wZXJ0eSB0byBpbmRpY2F0ZVxuICogd2hldGhlciB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkIGJ5IGRlZmF1bHQuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBTZWxlY3RPcHRpb24gPSBJbnB1dE9wdGlvbiAmIHsgc2VsZWN0ZWQ/OiBib29sZWFuIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wdGlvbiB0eXBlIGZvciByYWRpbyBpbnB1dHNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIElucHV0T3B0aW9uIGludGVyZmFjZSB3aXRoIGEgY2hlY2tlZCBwcm9wZXJ0eSB0byBpbmRpY2F0ZVxuICogd2hldGhlciB0aGUgb3B0aW9uIGlzIGNoZWNrZWQgYnkgZGVmYXVsdC5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFJhZGlvT3B0aW9uID0gSW5wdXRPcHRpb24gJiB7IGNoZWNrZWQ/OiBib29sZWFuIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wdGlvbiB0eXBlIGZvciBjaGVja2JveCBpbnB1dHNcbiAqIEBzdW1tYXJ5IEFsaWFzIGZvciBSYWRpb09wdGlvbiwgYXMgY2hlY2tib3ggb3B0aW9ucyBoYXZlIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyByYWRpbyBvcHRpb25zLlxuICogQHR5cGVkZWYge1JhZGlvT3B0aW9ufSBDaGVja2JveE9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQ2hlY2tib3hPcHRpb24gPSBSYWRpb09wdGlvbjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBvcHRpb24gdHlwZSBmb3IgaW5wdXQgY29tcG9uZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgY29tbW9uIHN0cnVjdHVyZSBmb3Igb3B0aW9ucyB1c2VkIGluIHNlbGVjdCwgcmFkaW8sIGFuZCBjaGVja2JveCBpbnB1dHMuXG4gKiBDb250YWlucyBwcm9wZXJ0aWVzIGZvciB0aGUgZGlzcGxheSB0ZXh0LCB2YWx1ZSwgZGlzYWJsZWQgc3RhdGUsIENTUyBjbGFzcywgYW5kIGljb24uXG4gKiBAaW50ZXJmYWNlIElucHV0T3B0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGV4dCAtIFRoZSBkaXNwbGF5IHRleHQgZm9yIHRoZSBvcHRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfG51bWJlcn0gdmFsdWUgLSBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBvcHRpb25cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nT3JCb29sZWFufSBbZGlzYWJsZWRdIC0gV2hldGhlciB0aGUgb3B0aW9uIGlzIGRpc2FibGVkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NsYXNzTmFtZV0gLSBDU1MgY2xhc3MgbmFtZSBmb3Igc3R5bGluZyB0aGUgb3B0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ljb25dIC0gSWNvbiB0byBkaXNwbGF5IHdpdGggdGhlIG9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dE9wdGlvbiB7XG4gIHRleHQ6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgZGlzYWJsZWQ/OiBTdHJpbmdPckJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGFyZ2V0IG9wdGlvbnMgZm9yIEhUTUwgZm9ybXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIHRhcmdldCB2YWx1ZXMgZm9yIEhUTUwgZm9ybXMsIGluY2x1ZGluZyBzdGFuZGFyZCB0YXJnZXRzXG4gKiBsaWtlICdfYmxhbmsnLCAnX3NlbGYnLCAnX3BhcmVudCcsIGFuZCAnX3RvcCcsIGFzIHdlbGwgYXMgY3VzdG9tIHN0cmluZyB2YWx1ZXMuXG4gKiBAdHlwZWRlZiB7KCdfYmxhbmsnfCdfc2VsZid8J19wYXJlbnQnfCdfdG9wJ3xzdHJpbmcpfSBIVE1MRm9ybVRhcmdldFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgSFRNTEZvcm1UYXJnZXQgPSAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCcgfCBzdHJpbmc7XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUxpc3RJdGVtUHJvcCB7XG4vLyAgIHJlbmRlcj86IHN0cmluZyB8IGJvb2xlYW47XG4vLyAgIHRyYW5zbGF0ZVByb3BzPzogc3RyaW5nIHwgc3RyaW5nW107XG4vLyAgIGJ1dHRvbj86IFN0cmluZ09yQm9vbGVhbjtcbi8vICAgaWNvbj86IHN0cmluZztcbi8vICAgaWNvblNsb3Q/OiAnc3RhcnQnIHwgJ2VuZCc7XG4vLyAgIHRpdGxlPzogc3RyaW5nO1xuLy8gICBkZXNjcml0cGlvbj86IHN0cmluZztcbi8vICAgaW5mbz86IHN0cmluZztcbi8vICAgc3ViaW5mbz86IHN0cmluZztcbi8vIH1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBsaXN0IGNvbXBvbmVudCByZWZyZXNoIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGEgcmVmcmVzaCBldmVudCBmb3IgbGlzdCBjb21wb25lbnRzLlxuICogQ29udGFpbnMgYW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHJlcHJlc2VudGluZyB0aGUgbmV3IGRhdGEgZm9yIHRoZSBsaXN0LlxuICogQGludGVyZmFjZSBJTGlzdENvbXBvbmVudFJlZnJlc2hFdmVudFxuICogQHByb3BlcnR5IHtLZXlWYWx1ZVtdfSBkYXRhIC0gQXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHJlcHJlc2VudGluZyB0aGUgbmV3IGRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RDb21wb25lbnRSZWZyZXNoRXZlbnQge1xuICBkYXRhOiBLZXlWYWx1ZVtdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGb3JtIHNlcnZpY2UgY29udHJvbCBzdHJ1Y3R1cmVcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3IgYSBmb3JtIGNvbnRyb2wgbWFuYWdlZCBieSB0aGUgZm9ybSBzZXJ2aWNlLlxuICogQ29udGFpbnMgdGhlIEZvcm1Hcm91cCBjb250cm9sIGFuZCB0aGUgYXNzb2NpYXRlZCBmaWVsZCBwcm9wZXJ0aWVzIGZvciByZW5kZXJpbmcuXG4gKiBAaW50ZXJmYWNlIEZvcm1TZXJ2aWNlQ29udHJvbFxuICogQHByb3BlcnR5IHtGb3JtR3JvdXB9IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtR3JvdXAgZm9yIHRoZSBjb250cm9sXG4gKiBAcHJvcGVydHkge0FuZ3VsYXJGaWVsZERlZmluaXRpb259IHByb3BzIC0gVGhlIGZpZWxkIHByb3BlcnRpZXMgZm9yIHJlbmRlcmluZyB0aGUgY29udHJvbFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtU2VydmljZUNvbnRyb2wge1xuICBjb250cm9sOiBGb3JtR3JvdXA7XG4gIHByb3BzOiBBbmd1bGFyRmllbGREZWZpbml0aW9uO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGZvciBmb3JtIHNlcnZpY2UgY29udHJvbHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBmb3JtIGNvbnRyb2xzIG1hbmFnZWQgYnkgdGhlIGZvcm0gc2VydmljZS5cbiAqIEl0J3MgYSBuZXN0ZWQgcmVjb3JkIHdoZXJlIHRoZSBvdXRlciBrZXkgaXMgdGhlIGZvcm0gZ3JvdXAgbmFtZSwgdGhlIGlubmVyIGtleVxuICogaXMgdGhlIGNvbnRyb2wgbmFtZSwgYW5kIHRoZSB2YWx1ZSBjb250YWlucyB0aGUgZm9ybSBncm91cCBhbmQgZmllbGQgcHJvcGVydGllcy5cbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB7IGNvbnRyb2w6IEZvcm1Hcm91cDsgcHJvcHM6IEFuZ3VsYXJGaWVsZERlZmluaXRpb24gfT4+fSBGb3JtU2VydmljZUNvbnRyb2xzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBGb3JtU2VydmljZUNvbnRyb2xzID0gUmVjb3JkPFxuICBzdHJpbmcsXG4gIFJlY29yZDxzdHJpbmcsIEZvcm1TZXJ2aWNlQ29udHJvbD5cbj47XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlbmRlcmVyIGN1c3RvbSBldmVudCB0eXBlXG4gKiBAc3VtbWFyeSBDb21iaW5lcyBCYXNlQ3VzdG9tRXZlbnQgd2l0aCBLZXlWYWx1ZSBwcm9wZXJ0aWVzIHRvIGNyZWF0ZSBhIGZsZXhpYmxlXG4gKiBjdXN0b20gZXZlbnQgdHlwZSBmb3IgcmVuZGVyZXIgY29tcG9uZW50cy4gVGhpcyBhbGxvd3MgZXZlbnRzIHRvIGNhcnJ5IGJvdGhcbiAqIHN0YW5kYXJkIGV2ZW50IHByb3BlcnRpZXMgYW5kIGFkZGl0aW9uYWwgY3VzdG9tIGRhdGEuXG4gKiBAdHlwZWRlZiBSZW5kZXJlckN1c3RvbUV2ZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBSZW5kZXJlckN1c3RvbUV2ZW50ID0gQmFzZUN1c3RvbUV2ZW50ICYgS2V5VmFsdWU7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgbGlzdCBpdGVtIGN1c3RvbSBldmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBjdXN0b20gZXZlbnRzIHRyaWdnZXJlZCBieSBsaXN0IGl0ZW1zLlxuICogRXh0ZW5kcyBCYXNlQ3VzdG9tRXZlbnQgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIHRoZSBhY3Rpb24gYW5kIHByaW1hcnkga2V5LlxuICogQGludGVyZmFjZSBMaXN0SXRlbUN1c3RvbUV2ZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gYWN0aW9uIC0gVGhlIGFjdGlvbiBwZXJmb3JtZWQgb24gdGhlIGxpc3QgaXRlbVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwa10gLSBPcHRpb25hbCBwcmltYXJ5IGtleSBvZiB0aGUgYWZmZWN0ZWQgaXRlbVxuICogQHByb3BlcnR5IHthbnl9IGRhdGEgLSBUaGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAcHJvcGVydHkge0hUTUxFbGVtZW50fSBbdGFyZ2V0XSAtIFRoZSB0YXJnZXQgZWxlbWVudCAoaW5oZXJpdGVkIGZyb20gQmFzZUN1c3RvbUV2ZW50KVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtuYW1lXSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCAoaW5oZXJpdGVkIGZyb20gQmFzZUN1c3RvbUV2ZW50KVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RJdGVtQ3VzdG9tRXZlbnQgZXh0ZW5kcyBCYXNlQ3VzdG9tRXZlbnQge1xuICBhY3Rpb246IHN0cmluZztcbiAgcGs/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2UgaW50ZXJmYWNlIGZvciBjdXN0b20gZXZlbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBiYXNlIHN0cnVjdHVyZSBmb3IgY3VzdG9tIGV2ZW50cyBpbiB0aGUgYXBwbGljYXRpb24uXG4gKiBDb250YWlucyBwcm9wZXJ0aWVzIGZvciB0aGUgZXZlbnQgZGF0YSwgdGFyZ2V0IGVsZW1lbnQsIG5hbWUsIGFuZCBjb21wb25lbnQuXG4gKiBAaW50ZXJmYWNlIEJhc2VDdXN0b21FdmVudFxuICogQHByb3BlcnR5IHthbnl9IGRhdGEgLSBUaGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50XG4gKiBAcHJvcGVydHkge0hUTUxFbGVtZW50fSBbdGFyZ2V0XSAtIFRoZSB0YXJnZXQgZWxlbWVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbbmFtZV0gLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlQ3VzdG9tRXZlbnQge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbXBvbmVudDogc3RyaW5nO1xuICBkYXRhPzogdW5rbm93bjtcbiAgdGFyZ2V0PzogSFRNTEVsZW1lbnQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENSVUQgZm9ybSBldmVudCB0eXBlXG4gKiBAc3VtbWFyeSBFeHRlbmRzIEJhc2VDdXN0b21FdmVudCB0byBpbmNsdWRlIG9wdGlvbmFsIGhhbmRsZXJzIGZvciBDUlVEIGZvcm0gb3BlcmF0aW9ucy5cbiAqIFRoaXMgZXZlbnQgdHlwZSBpcyB1c2VkIGZvciBmb3JtLXJlbGF0ZWQgYWN0aW9ucyBsaWtlIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIG9wZXJhdGlvbnMuXG4gKiBAdHlwZWRlZiBDcnVkRm9ybUV2ZW50XG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIGFueT59IFtoYW5kbGVyc10gLSBPcHRpb25hbCBoYW5kbGVycyBmb3IgZm9ybSBvcGVyYXRpb25zXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBDcnVkRm9ybUV2ZW50ID0gQmFzZUN1c3RvbUV2ZW50ICYge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBoYW5kbGVycz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnQgaW5wdXQgcHJvcGVydGllc1xuICogQHN1bW1hcnkgRXh0ZW5kcyBGaWVsZFByb3BlcnRpZXMgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gQW5ndWxhciBjb21wb25lbnRzLlxuICogSW5jbHVkZXMgdXBkYXRlIG1vZGUgZm9yIGZvcm0gY29udHJvbHMgYW5kIG9wdGlvbmFsIEZvcm1Hcm91cCBhbmQgRm9ybUNvbnRyb2wgcmVmZXJlbmNlcy5cbiAqIEBpbnRlcmZhY2UgQ29tcG9uZW50SW5wdXRcbiAqIEBwcm9wZXJ0eSB7RmllbGRVcGRhdGVNb2RlfSBbdXBkYXRlTW9kZV0gLSBXaGVuIHRoZSBmaWVsZCB2YWx1ZSBzaG91bGQgYmUgdXBkYXRlZFxuICogQHByb3BlcnR5IHtGb3JtR3JvdXB9IFtmb3JtR3JvdXBdIC0gT3B0aW9uYWwgRm9ybUdyb3VwIHJlZmVyZW5jZVxuICogQHByb3BlcnR5IHtGb3JtQ29udHJvbH0gW2Zvcm1Db250cm9sXSAtIE9wdGlvbmFsIEZvcm1Db250cm9sIHJlZmVyZW5jZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRJbnB1dCBleHRlbmRzIEZpZWxkUHJvcGVydGllcyB7XG4gIHVwZGF0ZU1vZGU/OiBGaWVsZFVwZGF0ZU1vZGU7XG4gIGZvcm1Hcm91cD86IEZvcm1Hcm91cDtcbiAgZm9ybUNvbnRyb2w/OiBGb3JtQ29udHJvbDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBkeW5hbWljYWxseSBjcmVhdGluZyBBbmd1bGFyIGNvbXBvbmVudHMuXG4gKiBDb250YWlucyB0aGUgY29tcG9uZW50IG5hbWUsIGlucHV0IHByb3BlcnRpZXMsIGluamVjdG9yLCBhbmQgb3B0aW9uYWwgY2hpbGQgY29tcG9uZW50cy5cbiAqIEBpbnRlcmZhY2UgQ29tcG9uZW50Q29uZmlnXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudCB0byByZW5kZXJcbiAqIEBwcm9wZXJ0eSB7Q29tcG9uZW50SW5wdXR9IGlucHV0cyAtIFRoZSBpbnB1dCBwcm9wZXJ0aWVzIGZvciB0aGUgY29tcG9uZW50XG4gKiBAcHJvcGVydHkge0Vudmlyb25tZW50SW5qZWN0b3IgfCBJbmplY3Rvcn0gaW5qZWN0b3IgLSBUaGUgQW5ndWxhciBpbmplY3RvciBmb3IgZGVwZW5kZW5jeSBpbmplY3Rpb25cbiAqIEBwcm9wZXJ0eSB7Q29tcG9uZW50Q29uZmlnW119IFtjaGlsZHJlbl0gLSBPcHRpb25hbCBjaGlsZCBjb21wb25lbnQgY29uZmlndXJhdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50Q29uZmlnIHtcbiAgY29tcG9uZW50OiBzdHJpbmc7XG4gIGlucHV0czogQ29tcG9uZW50SW5wdXQ7XG4gIGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yIHwgSW5qZWN0b3I7XG4gIGNoaWxkcmVuPzogQ29tcG9uZW50Q29uZmlnW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZvcm0gcGFyZW50IGdyb3VwIHR1cGxlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgdHVwbGUgY29udGFpbmluZyBhIEZvcm1Hcm91cCBhbmQgaXRzIGFzc29jaWF0ZWQgc3RyaW5nIGlkZW50aWZpZXIuXG4gKiBUaGlzIGlzIHVzZWQgZm9yIG1hbmFnaW5nIGhpZXJhcmNoaWNhbCBmb3JtIHN0cnVjdHVyZXMgYW5kIHBhcmVudC1jaGlsZCByZWxhdGlvbnNoaXBzLlxuICogQHR5cGVkZWYge1tGb3JtR3JvdXAsIHN0cmluZ119IEZvcm1QYXJlbnRHcm91cFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRm9ybVBhcmVudEdyb3VwID0gW0Zvcm1Hcm91cCwgIHN0cmluZ107XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgaW5kaXZpZHVhbCBmaWx0ZXIgcXVlcnkgaXRlbXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBhIHNpbmdsZSBmaWx0ZXIgY3JpdGVyaW9uIGluIGEgZmlsdGVyIHF1ZXJ5LlxuICogRWFjaCBpdGVtIHJlcHJlc2VudHMgb25lIGNvbmRpdGlvbiB0byBiZSBhcHBsaWVkIHRvIHRoZSBkYXRhLCBjb25zaXN0aW5nIG9mXG4gKiBhbiBpbmRleCAoZmllbGQgbmFtZSksIGEgY29uZGl0aW9uIChjb21wYXJpc29uIG9wZXJhdG9yKSwgYW5kIGEgdmFsdWUgdG8gY29tcGFyZSBhZ2FpbnN0LlxuICogQGludGVyZmFjZSBJRmlsdGVyUXVlcnlJdGVtXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2luZGV4XSAtIE9wdGlvbmFsIGZpZWxkIG5hbWUgb3IgaW5kZXggdG8gZmlsdGVyIG9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NvbmRpdGlvbl0gLSBPcHRpb25hbCBjb21wYXJpc29uIGNvbmRpdGlvbiAoZS5nLiwgJ0VxdWFsJywgJ0NvbnRhaW5zJywgJ0dyZWF0ZXIgVGhhbicpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3ZhbHVlXSAtIE9wdGlvbmFsIHZhbHVlIHRvIGNvbXBhcmUgdGhlIGZpZWxkIGFnYWluc3RcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpbHRlclF1ZXJ5SXRlbSB7XG4gIGluZGV4Pzogc3RyaW5nLFxuICBjb25kaXRpb24/OiBzdHJpbmcsXG4gIHZhbHVlPzogc3RyaW5nXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHNvcnRpbmcgY29uZmlndXJhdGlvbiBvYmplY3RzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgZm9yIHNwZWNpZnlpbmcgc29ydCBjcml0ZXJpYSBpbmNsdWRpbmcgdGhlIGZpZWxkXG4gKiB0byBzb3J0IGJ5IGFuZCB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzb3J0IChhc2NlbmRpbmcgb3IgZGVzY2VuZGluZykuXG4gKiBAaW50ZXJmYWNlIElTb3J0T2JqZWN0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gdmFsdWUgLSBUaGUgZmllbGQgbmFtZSBvciBwcm9wZXJ0eSB0byBzb3J0IGJ5XG4gKiBAcHJvcGVydHkge09yZGVyRGlyZWN0aW9ufSBkaXJlY3Rpb24gLSBUaGUgc29ydCBkaXJlY3Rpb24gKEFTQyBvciBEU0MpXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTb3J0T2JqZWN0IHtcbiAgdmFsdWU6IHN0cmluZyxcbiAgZGlyZWN0aW9uOiBPcmRlckRpcmVjdGlvblxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBjb21wbGV0ZSBmaWx0ZXIgcXVlcnkgY29uZmlndXJhdGlvblxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgY29tcGxldGUgc3RydWN0dXJlIGZvciBmaWx0ZXIgYW5kIHNvcnQgb3BlcmF0aW9ucy5cbiAqIENvbWJpbmVzIG11bHRpcGxlIGZpbHRlciBjcml0ZXJpYSB3aXRoIHNvcnRpbmcgY29uZmlndXJhdGlvbiB0byBwcm92aWRlXG4gKiBjb21wcmVoZW5zaXZlIGRhdGEgZmlsdGVyaW5nIGFuZCBvcmRlcmluZyBjYXBhYmlsaXRpZXMuXG4gKiBAaW50ZXJmYWNlIElGaWx0ZXJRdWVyeVxuICogQHByb3BlcnR5IHtJRmlsdGVyUXVlcnlJdGVtW10gfCB1bmRlZmluZWR9IHF1ZXJ5IC0gQXJyYXkgb2YgZmlsdGVyIGNyaXRlcmlhIG9yIHVuZGVmaW5lZCBmb3Igbm8gZmlsdGVyaW5nXG4gKiBAcHJvcGVydHkge0lTb3J0T2JqZWN0fSBzb3J0IC0gU29ydGluZyBjb25maWd1cmF0aW9uIHNwZWNpZnlpbmcgZmllbGQgYW5kIGRpcmVjdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmlsdGVyUXVlcnkge1xuICBxdWVyeTogSUZpbHRlclF1ZXJ5SXRlbVtdIHwgdW5kZWZpbmVkLFxuICBzb3J0OiBJU29ydE9iamVjdFxufVxuIl19
@@ -1,118 +0,0 @@
1
- import { NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { IonApp, IonRouterOutlet, IonSplitPane, IonImg, IonContent, IonText, IonButton, IonRouterLink, IonTitle } from '@ionic/angular/standalone';
4
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
- import { TranslateModule, TranslatePipe } from '@ngx-translate/core';
6
- import { Logging } from '@decaf-ts/logging';
7
- import * as i0 from "@angular/core";
8
- const ComponentsAndModules = [
9
- IonApp,
10
- IonRouterOutlet,
11
- IonSplitPane,
12
- IonImg,
13
- IonText,
14
- IonTitle,
15
- IonButton,
16
- IonRouterLink,
17
- IonContent,
18
- CommonModule,
19
- FormsModule,
20
- ReactiveFormsModule,
21
- TranslateModule,
22
- TranslatePipe,
23
- ];
24
- const log = Logging.for("for-angular");
25
- export function getLogger(instance) {
26
- return log.for(instance);
27
- }
28
- /**
29
- * @description Main Angular module for the Decaf framework
30
- * @summary The ForAngularModule provides the core functionality for integrating Decaf with Angular applications.
31
- * It imports and exports common Angular and Ionic components and modules needed for Decaf applications,
32
- * including form handling, translation support, and Ionic UI components. This module can be imported
33
- * directly or via the forRoot() method for proper initialization in the application's root module.
34
- *
35
- * @class ForAngularModule
36
- * @example
37
- * ```typescript
38
- * // In your app module:
39
- * @NgModule({
40
- * imports: [
41
- * ForAngularModule.forRoot(),
42
- * // other imports
43
- * ],
44
- * // ...
45
- * })
46
- * export class AppModule {}
47
- * ```
48
- */
49
- export class ForAngularModule {
50
- /**
51
- * @description Creates a module with providers for root module import
52
- * @summary This static method provides the proper way to import the ForAngularModule in the application's
53
- * root module. It returns a ModuleWithProviders object that includes the ForAngularModule itself.
54
- * Using forRoot() ensures that the module and its providers are properly initialized and only
55
- * instantiated once in the application.
56
- *
57
- * @return {ModuleWithProviders<ForAngularModule>} The module with its providers
58
- */
59
- static forRoot() {
60
- return {
61
- ngModule: ForAngularModule,
62
- };
63
- }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
65
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ForAngularModule, imports: [IonApp,
66
- IonRouterOutlet,
67
- IonSplitPane,
68
- IonImg,
69
- IonText,
70
- IonTitle,
71
- IonButton,
72
- IonRouterLink,
73
- IonContent,
74
- CommonModule,
75
- FormsModule,
76
- ReactiveFormsModule,
77
- TranslateModule,
78
- TranslatePipe], exports: [IonApp,
79
- IonRouterOutlet,
80
- IonSplitPane,
81
- IonImg,
82
- IonText,
83
- IonTitle,
84
- IonButton,
85
- IonRouterLink,
86
- IonContent,
87
- CommonModule,
88
- FormsModule,
89
- ReactiveFormsModule,
90
- TranslateModule,
91
- TranslatePipe] }); }
92
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForAngularModule, imports: [IonApp,
93
- IonRouterOutlet,
94
- IonSplitPane,
95
- IonImg,
96
- IonText,
97
- IonTitle,
98
- IonButton,
99
- IonContent,
100
- CommonModule,
101
- FormsModule,
102
- ReactiveFormsModule,
103
- TranslateModule,
104
- CommonModule,
105
- FormsModule,
106
- ReactiveFormsModule,
107
- TranslateModule] }); }
108
- }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForAngularModule, decorators: [{
110
- type: NgModule,
111
- args: [{
112
- imports: ComponentsAndModules,
113
- declarations: [],
114
- exports: ComponentsAndModules,
115
- schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
116
- }]
117
- }] });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLWFuZ3VsYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9mb3ItYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBdUIsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxNQUFNLEVBQ04sZUFBZSxFQUNmLFlBQVksRUFDWixNQUFNLEVBQ04sVUFBVSxFQUNWLE9BQU8sRUFDUCxTQUFTLEVBQ1QsYUFBYSxFQUNiLFFBQVEsRUFDVCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JFLE9BQU8sRUFBVSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFHcEQsTUFBTSxvQkFBb0IsR0FBRztJQUMzQixNQUFNO0lBQ04sZUFBZTtJQUNmLFlBQVk7SUFDWixNQUFNO0lBQ04sT0FBTztJQUNQLFFBQVE7SUFDUixTQUFTO0lBQ1QsYUFBYTtJQUNiLFVBQVU7SUFDVixZQUFZO0lBQ1osV0FBVztJQUNYLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsYUFBYTtDQUNkLENBQUM7QUFFRixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sVUFBVSxTQUFTLENBQUMsUUFBeUM7SUFDakUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQWlDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBT0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQjs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxnQkFBZ0I7U0FDM0IsQ0FBQztJQUNKLENBQUM7K0dBZFUsZ0JBQWdCO2dIQUFoQixnQkFBZ0IsWUFoRDNCLE1BQU07WUFDTixlQUFlO1lBQ2YsWUFBWTtZQUNaLE1BQU07WUFDTixPQUFPO1lBQ1AsUUFBUTtZQUNSLFNBQVM7WUFDVCxhQUFhO1lBQ2IsVUFBVTtZQUNWLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixhQUFhLGFBYmIsTUFBTTtZQUNOLGVBQWU7WUFDZixZQUFZO1lBQ1osTUFBTTtZQUNOLE9BQU87WUFDUCxRQUFRO1lBQ1IsU0FBUztZQUNULGFBQWE7WUFDYixVQUFVO1lBQ1YsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGFBQWE7Z0hBbUNGLGdCQUFnQixZQWhEM0IsTUFBTTtZQUNOLGVBQWU7WUFDZixZQUFZO1lBQ1osTUFBTTtZQUNOLE9BQU87WUFDUCxRQUFRO1lBQ1IsU0FBUztZQUVULFVBQVU7WUFDVixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlO1lBSGYsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTs7NEZBb0NKLGdCQUFnQjtrQkFONUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsb0JBQW9CO29CQUM3QixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLG9CQUFvQjtvQkFDN0IsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUM7aUJBQ3BEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5PX0VSUk9SU19TQ0hFTUF9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIElvbkFwcCxcbiAgSW9uUm91dGVyT3V0bGV0LFxuICBJb25TcGxpdFBhbmUsXG4gIElvbkltZyxcbiAgSW9uQ29udGVudCxcbiAgSW9uVGV4dCxcbiAgSW9uQnV0dG9uLFxuICBJb25Sb3V0ZXJMaW5rLFxuICBJb25UaXRsZVxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dpbmcgfSBmcm9tICdAZGVjYWYtdHMvbG9nZ2luZyc7XG5pbXBvcnQgeyBGdW5jdGlvbkxpa2UgfSBmcm9tICcuL2VuZ2luZSc7XG5cbmNvbnN0IENvbXBvbmVudHNBbmRNb2R1bGVzID0gW1xuICBJb25BcHAsXG4gIElvblJvdXRlck91dGxldCxcbiAgSW9uU3BsaXRQYW5lLFxuICBJb25JbWcsXG4gIElvblRleHQsXG4gIElvblRpdGxlLFxuICBJb25CdXR0b24sXG4gIElvblJvdXRlckxpbmssXG4gIElvbkNvbnRlbnQsXG4gIENvbW1vbk1vZHVsZSxcbiAgRm9ybXNNb2R1bGUsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFRyYW5zbGF0ZU1vZHVsZSxcbiAgVHJhbnNsYXRlUGlwZSxcbl07XG5cbmNvbnN0IGxvZyA9IExvZ2dpbmcuZm9yKFwiZm9yLWFuZ3VsYXJcIik7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VyKGluc3RhbmNlOiBzdHJpbmcgfCBGdW5jdGlvbkxpa2UgfCB1bmtub3duKTogTG9nZ2VyIHtcbiAgcmV0dXJuIGxvZy5mb3IoaW5zdGFuY2UgYXMgc3RyaW5nIHwgRnVuY3Rpb25MaWtlKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWFpbiBBbmd1bGFyIG1vZHVsZSBmb3IgdGhlIERlY2FmIGZyYW1ld29ya1xuICogQHN1bW1hcnkgVGhlIEZvckFuZ3VsYXJNb2R1bGUgcHJvdmlkZXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBmb3IgaW50ZWdyYXRpbmcgRGVjYWYgd2l0aCBBbmd1bGFyIGFwcGxpY2F0aW9ucy5cbiAqIEl0IGltcG9ydHMgYW5kIGV4cG9ydHMgY29tbW9uIEFuZ3VsYXIgYW5kIElvbmljIGNvbXBvbmVudHMgYW5kIG1vZHVsZXMgbmVlZGVkIGZvciBEZWNhZiBhcHBsaWNhdGlvbnMsXG4gKiBpbmNsdWRpbmcgZm9ybSBoYW5kbGluZywgdHJhbnNsYXRpb24gc3VwcG9ydCwgYW5kIElvbmljIFVJIGNvbXBvbmVudHMuIFRoaXMgbW9kdWxlIGNhbiBiZSBpbXBvcnRlZFxuICogZGlyZWN0bHkgb3IgdmlhIHRoZSBmb3JSb290KCkgbWV0aG9kIGZvciBwcm9wZXIgaW5pdGlhbGl6YXRpb24gaW4gdGhlIGFwcGxpY2F0aW9uJ3Mgcm9vdCBtb2R1bGUuXG4gKlxuICogQGNsYXNzIEZvckFuZ3VsYXJNb2R1bGVcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBJbiB5b3VyIGFwcCBtb2R1bGU6XG4gKiBATmdNb2R1bGUoe1xuICogICBpbXBvcnRzOiBbXG4gKiAgICAgRm9yQW5ndWxhck1vZHVsZS5mb3JSb290KCksXG4gKiAgICAgLy8gb3RoZXIgaW1wb3J0c1xuICogICBdLFxuICogICAvLyAuLi5cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogQ29tcG9uZW50c0FuZE1vZHVsZXMsXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IENvbXBvbmVudHNBbmRNb2R1bGVzLFxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTk9fRVJST1JTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIEZvckFuZ3VsYXJNb2R1bGUge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBtb2R1bGUgd2l0aCBwcm92aWRlcnMgZm9yIHJvb3QgbW9kdWxlIGltcG9ydFxuICAgKiBAc3VtbWFyeSBUaGlzIHN0YXRpYyBtZXRob2QgcHJvdmlkZXMgdGhlIHByb3BlciB3YXkgdG8gaW1wb3J0IHRoZSBGb3JBbmd1bGFyTW9kdWxlIGluIHRoZSBhcHBsaWNhdGlvbidzXG4gICAqIHJvb3QgbW9kdWxlLiBJdCByZXR1cm5zIGEgTW9kdWxlV2l0aFByb3ZpZGVycyBvYmplY3QgdGhhdCBpbmNsdWRlcyB0aGUgRm9yQW5ndWxhck1vZHVsZSBpdHNlbGYuXG4gICAqIFVzaW5nIGZvclJvb3QoKSBlbnN1cmVzIHRoYXQgdGhlIG1vZHVsZSBhbmQgaXRzIHByb3ZpZGVycyBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYW5kIG9ubHlcbiAgICogaW5zdGFudGlhdGVkIG9uY2UgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJuIHtNb2R1bGVXaXRoUHJvdmlkZXJzPEZvckFuZ3VsYXJNb2R1bGU+fSBUaGUgbW9kdWxlIHdpdGggaXRzIHByb3ZpZGVyc1xuICAgKi9cbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGb3JBbmd1bGFyTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBGb3JBbmd1bGFyTW9kdWxlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,13 +0,0 @@
1
- /**
2
- * @module helpers
3
- * @description Utility helpers for Angular Decaf applications
4
- * @summary The helpers module provides a collection of utility functions and types
5
- * that assist with common tasks in Decaf Angular applications. It includes functions
6
- * for array manipulation, date formatting, logging, string operations, and various
7
- * utility functions for working with Angular components and services. These helpers
8
- * simplify common operations and promote code reuse across the application.
9
- * Key exports include logging utilities, string manipulation functions, and component
10
- * utility functions.
11
- */
12
- export * from './utils';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2hlbHBlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUNILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGhlbHBlcnNcbiAqIEBkZXNjcmlwdGlvbiBVdGlsaXR5IGhlbHBlcnMgZm9yIEFuZ3VsYXIgRGVjYWYgYXBwbGljYXRpb25zXG4gKiBAc3VtbWFyeSBUaGUgaGVscGVycyBtb2R1bGUgcHJvdmlkZXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdHkgZnVuY3Rpb25zIGFuZCB0eXBlc1xuICogdGhhdCBhc3Npc3Qgd2l0aCBjb21tb24gdGFza3MgaW4gRGVjYWYgQW5ndWxhciBhcHBsaWNhdGlvbnMuIEl0IGluY2x1ZGVzIGZ1bmN0aW9uc1xuICogZm9yIGFycmF5IG1hbmlwdWxhdGlvbiwgZGF0ZSBmb3JtYXR0aW5nLCBsb2dnaW5nLCBzdHJpbmcgb3BlcmF0aW9ucywgYW5kIHZhcmlvdXNcbiAqIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggQW5ndWxhciBjb21wb25lbnRzIGFuZCBzZXJ2aWNlcy4gVGhlc2UgaGVscGVyc1xuICogc2ltcGxpZnkgY29tbW9uIG9wZXJhdGlvbnMgYW5kIHByb21vdGUgY29kZSByZXVzZSBhY3Jvc3MgdGhlIGFwcGxpY2F0aW9uLlxuICogS2V5IGV4cG9ydHMgaW5jbHVkZSBsb2dnaW5nIHV0aWxpdGllcywgc3RyaW5nIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMsIGFuZCBjb21wb25lbnRcbiAqIHV0aWxpdHkgZnVuY3Rpb25zLlxuICovXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbiJdfQ==