@acorex/platform 21.0.0-next.3 → 21.0.0-next.34

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 (117) hide show
  1. package/fesm2022/acorex-platform-auth.mjs +295 -45
  2. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-common-common-settings.provider-zhqNP3xb.mjs → acorex-platform-common-common-settings.provider-G9XcXXOG.mjs} +60 -4
  4. package/fesm2022/acorex-platform-common-common-settings.provider-G9XcXXOG.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-common.mjs +960 -319
  6. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +1352 -832
  8. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-domain.mjs +554 -826
  10. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-builder.mjs +530 -154
  12. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs +121 -0
  14. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-layout-components.mjs +5969 -2347
  16. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-designer.mjs +169 -154
  18. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-entity.mjs +15380 -9274
  20. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-views.mjs +393 -110
  22. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs +511 -450
  24. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs → acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs} +10 -10
  26. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs → acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs} +39 -16
  28. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs → acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs} +6 -7
  30. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs → acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs} +12 -12
  32. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs +111 -0
  34. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs} +6 -6
  36. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs.map +1 -0
  37. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs} +5 -5
  38. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs} +6 -6
  40. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-layout-widgets.mjs +7865 -4026
  42. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  43. package/fesm2022/acorex-platform-native.mjs +8 -7
  44. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  45. package/fesm2022/acorex-platform-runtime.mjs +220 -169
  46. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  47. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs +160 -0
  48. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs +120 -0
  50. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs.map +1 -0
  51. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs → acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs} +18 -25
  52. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs.map +1 -0
  53. package/fesm2022/{acorex-platform-themes-default-error-401.component-cfREo88K.mjs → acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs} +4 -4
  54. package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +1 -0
  55. package/fesm2022/{acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs → acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs} +4 -4
  56. package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +1 -0
  57. package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
  58. package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
  59. package/fesm2022/acorex-platform-themes-default.mjs +1717 -66
  60. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  61. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs → acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs} +6 -6
  62. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs.map +1 -0
  63. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs} +6 -6
  64. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +1 -0
  65. package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +1 -1
  66. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs} +11 -11
  67. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs.map +1 -0
  68. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs} +9 -9
  69. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs.map +1 -0
  70. package/fesm2022/acorex-platform-themes-shared.mjs +563 -561
  71. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  72. package/fesm2022/acorex-platform-workflow.mjs +1735 -1750
  73. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  74. package/fesm2022/acorex-platform.mjs.map +1 -1
  75. package/package.json +31 -31
  76. package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +247 -10
  77. package/{common/index.d.ts → types/acorex-platform-common.d.ts} +492 -31
  78. package/{core/index.d.ts → types/acorex-platform-core.d.ts} +606 -392
  79. package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +719 -413
  80. package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +128 -56
  81. package/types/acorex-platform-layout-components.d.ts +2927 -0
  82. package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +9 -3
  83. package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +1133 -237
  84. package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +90 -31
  85. package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +206 -102
  86. package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +942 -137
  87. package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
  88. package/{runtime/index.d.ts → types/acorex-platform-runtime.d.ts} +237 -74
  89. package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +113 -5
  90. package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +1 -1
  91. package/types/acorex-platform-workflow.d.ts +1806 -0
  92. package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs.map +0 -1
  93. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs.map +0 -1
  94. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +0 -1
  95. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs.map +0 -1
  97. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +0 -1
  98. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs.map +0 -1
  100. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs +0 -157
  101. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
  102. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs +0 -1542
  103. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +0 -101
  105. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
  106. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +0 -1
  107. package/fesm2022/acorex-platform-themes-default-error-401.component-cfREo88K.mjs.map +0 -1
  108. package/fesm2022/acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs.map +0 -1
  109. package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs +0 -19
  110. package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs.map +0 -1
  111. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs.map +0 -1
  112. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs.map +0 -1
  113. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs.map +0 -1
  114. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs.map +0 -1
  115. package/layout/components/index.d.ts +0 -1669
  116. package/workflow/index.d.ts +0 -2443
  117. /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform.mjs","sources":["../tmp-esm2022/index.js","../tmp-esm2022/acorex-platform.js"],"sourcesContent":["export default {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge307XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hY29yZXgtcGxhdGZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"AAAA,YAAe,EAAE;;ACAjB;AACA;AACA"}
1
+ {"version":3,"file":"acorex-platform.mjs","sources":["../../../../libs/platform/index.ts","../../../../libs/platform/acorex-platform.ts"],"sourcesContent":["export default {};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA,YAAe,EAAE;;ACAjB;;AAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/platform",
3
- "version": "21.0.0-next.3",
3
+ "version": "21.0.0-next.34",
4
4
  "peerDependencies": {
5
5
  "@acorex/cdk": "^19.0.0 || ^20.0.0 || ^21.0.0-next.0",
6
6
  "@acorex/core": "^19.0.0 || ^20.0.0 || ^21.0.0-next.0",
@@ -10,86 +10,86 @@
10
10
  "@angular/animations": "^20.0.0",
11
11
  "@ngrx/signals": "^20.0.0",
12
12
  "tailwindcss-animate": "^1.0.0",
13
- "dom-to-image": "^2.6.0",
14
- "signature_pad": "^4.1.7"
13
+ "dom-to-image": "^2.6.0"
15
14
  },
16
15
  "dependencies": {
17
16
  "tslib": "^2.3.0"
18
17
  },
19
18
  "sideEffects": false,
20
19
  "module": "fesm2022/acorex-platform.mjs",
21
- "typings": "index.d.ts",
20
+ "typings": "types/acorex-platform.d.ts",
22
21
  "exports": {
23
22
  "./package.json": {
24
23
  "default": "./package.json"
25
24
  },
26
25
  ".": {
27
- "types": "./index.d.ts",
26
+ "types": "./types/acorex-platform.d.ts",
28
27
  "default": "./fesm2022/acorex-platform.mjs"
29
28
  },
30
29
  "./auth": {
31
- "types": "./auth/index.d.ts",
30
+ "types": "./types/acorex-platform-auth.d.ts",
32
31
  "default": "./fesm2022/acorex-platform-auth.mjs"
33
32
  },
34
33
  "./common": {
35
- "types": "./common/index.d.ts",
34
+ "types": "./types/acorex-platform-common.d.ts",
36
35
  "default": "./fesm2022/acorex-platform-common.mjs"
37
36
  },
38
37
  "./core": {
39
- "types": "./core/index.d.ts",
38
+ "types": "./types/acorex-platform-core.d.ts",
40
39
  "default": "./fesm2022/acorex-platform-core.mjs"
41
40
  },
42
41
  "./domain": {
43
- "types": "./domain/index.d.ts",
42
+ "types": "./types/acorex-platform-domain.d.ts",
44
43
  "default": "./fesm2022/acorex-platform-domain.mjs"
45
44
  },
46
- "./native": {
47
- "types": "./native/index.d.ts",
48
- "default": "./fesm2022/acorex-platform-native.mjs"
49
- },
50
- "./runtime": {
51
- "types": "./runtime/index.d.ts",
52
- "default": "./fesm2022/acorex-platform-runtime.mjs"
53
- },
54
- "./workflow": {
55
- "types": "./workflow/index.d.ts",
56
- "default": "./fesm2022/acorex-platform-workflow.mjs"
57
- },
58
45
  "./layout/builder": {
59
- "types": "./layout/builder/index.d.ts",
46
+ "types": "./types/acorex-platform-layout-builder.d.ts",
60
47
  "default": "./fesm2022/acorex-platform-layout-builder.mjs"
61
48
  },
62
49
  "./layout/components": {
63
- "types": "./layout/components/index.d.ts",
50
+ "types": "./types/acorex-platform-layout-components.d.ts",
64
51
  "default": "./fesm2022/acorex-platform-layout-components.mjs"
65
52
  },
66
53
  "./layout/designer": {
67
- "types": "./layout/designer/index.d.ts",
54
+ "types": "./types/acorex-platform-layout-designer.d.ts",
68
55
  "default": "./fesm2022/acorex-platform-layout-designer.mjs"
69
56
  },
70
57
  "./layout/entity": {
71
- "types": "./layout/entity/index.d.ts",
58
+ "types": "./types/acorex-platform-layout-entity.d.ts",
72
59
  "default": "./fesm2022/acorex-platform-layout-entity.mjs"
73
60
  },
74
61
  "./layout/views": {
75
- "types": "./layout/views/index.d.ts",
62
+ "types": "./types/acorex-platform-layout-views.d.ts",
76
63
  "default": "./fesm2022/acorex-platform-layout-views.mjs"
77
64
  },
78
65
  "./layout/widget-core": {
79
- "types": "./layout/widget-core/index.d.ts",
66
+ "types": "./types/acorex-platform-layout-widget-core.d.ts",
80
67
  "default": "./fesm2022/acorex-platform-layout-widget-core.mjs"
81
68
  },
82
69
  "./layout/widgets": {
83
- "types": "./layout/widgets/index.d.ts",
70
+ "types": "./types/acorex-platform-layout-widgets.d.ts",
84
71
  "default": "./fesm2022/acorex-platform-layout-widgets.mjs"
85
72
  },
73
+ "./native": {
74
+ "types": "./types/acorex-platform-native.d.ts",
75
+ "default": "./fesm2022/acorex-platform-native.mjs"
76
+ },
77
+ "./runtime": {
78
+ "types": "./types/acorex-platform-runtime.d.ts",
79
+ "default": "./fesm2022/acorex-platform-runtime.mjs"
80
+ },
86
81
  "./themes/default": {
87
- "types": "./themes/default/index.d.ts",
82
+ "types": "./types/acorex-platform-themes-default.d.ts",
88
83
  "default": "./fesm2022/acorex-platform-themes-default.mjs"
89
84
  },
90
85
  "./themes/shared": {
91
- "types": "./themes/shared/index.d.ts",
86
+ "types": "./types/acorex-platform-themes-shared.d.ts",
92
87
  "default": "./fesm2022/acorex-platform-themes-shared.mjs"
88
+ },
89
+ "./workflow": {
90
+ "types": "./types/acorex-platform-workflow.d.ts",
91
+ "default": "./fesm2022/acorex-platform-workflow.mjs"
93
92
  }
94
- }
93
+ },
94
+ "type": "module"
95
95
  }
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, TemplateRef, ViewContainerRef, ModuleWithProviders, Injector } from '@angular/core';
3
- import { AXPLogoConfig, AXPOptionsData, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex/platform/core';
2
+ import { InjectionToken, TemplateRef, ViewContainerRef, ModuleWithProviders, Injector, Type } from '@angular/core';
3
+ import { AXPLogoConfig, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPOptionsData, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex/platform/core';
4
4
  import { CanActivateFn } from '@angular/router';
5
5
  import { Observable } from 'rxjs';
6
6
 
@@ -107,6 +107,18 @@ interface AXPPermissionLoader {
107
107
  }
108
108
  declare const AXP_PERMISSION_LOADER: InjectionToken<AXPPermissionLoader>;
109
109
 
110
+ /**
111
+ * Registered permission definitions for select widgets via dataSource name {@link PERMISSION_DEFINITIONS_DATASOURCE_NAME}.
112
+ */
113
+ declare const PERMISSION_DEFINITIONS_DATASOURCE_NAME = "platform-permission-definitions";
114
+ /**
115
+ * Data source definition for leaf permissions from {@link AXPPermissionDefinitionService#getGroups}.
116
+ */
117
+ declare class AXPPermissionDefinitionsDataSourceDefinition implements AXPDataSourceDefinitionProvider {
118
+ private readonly permissionDefinitionService;
119
+ items(): Promise<AXPDataSourceDefinition[]>;
120
+ }
121
+
110
122
  declare class AXPPermissionDefinitionProviderContext {
111
123
  private builders;
112
124
  addGroup(name: string, title: string, description?: string): AXPPermissionDefinitionGroupBuilder;
@@ -143,7 +155,6 @@ interface AXPPermissionDefinitionProvider {
143
155
  declare const AXP_PERMISSION_DEFINITION_PROVIDER: InjectionToken<AXPPermissionDefinitionProvider[]>;
144
156
  declare class AXPPermissionDefinitionService {
145
157
  private providers;
146
- private providerRegistry;
147
158
  private sessionService;
148
159
  private cache;
149
160
  private load;
@@ -275,11 +286,6 @@ declare class AXPSessionService {
275
286
  private readonly applicationLoader;
276
287
  private readonly permissionChecker;
277
288
  private readonly featureChecker;
278
- /**
279
- * Get module provider loader lazily to avoid circular dependency.
280
- * ModuleProviderLoader depends on AXPSessionService, which is this service.
281
- */
282
- private getModuleProviderLoader;
283
289
  private status;
284
290
  readonly status$: Observable<AXPSessionStatus>;
285
291
  private isLoading;
@@ -320,6 +326,12 @@ declare class AXPSessionService {
320
326
  private clearSession;
321
327
  authorize(...keys: string[]): boolean;
322
328
  isFeatureEnabled(...keys: string[]): boolean;
329
+ /**
330
+ * Checks if a module is enabled for the current tenant/application.
331
+ * Module names are stored as features with value: true when enabled.
332
+ * Module names can be provided in PascalCase (e.g., 'SecurityManagement') or kebab-case (e.g., 'security-management').
333
+ */
334
+ isModuleEnabled(moduleName: string): boolean;
323
335
  getToken(): string | undefined;
324
336
  getContext(): AXPSessionContext;
325
337
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPSessionService, never>;
@@ -439,5 +451,230 @@ declare class AXPUnauthenticatedError extends Error {
439
451
  } | undefined);
440
452
  }
441
453
 
442
- export { AXPAuthGuard, AXPAuthModule, AXPAuthStrategy, AXPAuthStrategyRegistryService, AXPFeatureDirective, AXPFeatureGuard, AXPPermissionDefinitionBuilder, AXPPermissionDefinitionGroupBuilder, AXPPermissionDefinitionProviderContext, AXPPermissionDefinitionService, AXPPermissionDirective, AXPPermissionEvaluatorScopeProvider, AXPPermissionGuard, AXPSessionContext, AXPSessionService, AXPSessionStatus, AXPUnauthenticatedError, AXPUnauthorizedError, AXP_APPLICATION_LOADER, AXP_FEATURE_CHECKER, AXP_FEATURE_LOADER, AXP_PERMISSION_CHECKER, AXP_PERMISSION_DEFINITION_PROVIDER, AXP_PERMISSION_LOADER, AXP_TENANT_LOADER, JwtUtil, PkceUtil, TimeUtil, initializeAppState };
443
- export type { AXPApplication, AXPApplicationLoader, AXPAuthModuleConfigs, AXPBaseCredentials, AXPEdition, AXPFeature, AXPFeatureChecker, AXPFeatureLoader, AXPPermission, AXPPermissionChecker, AXPPermissionDefinition, AXPPermissionDefinitionProvider, AXPPermissionGroupDefinition, AXPPermissionLoader, AXPSessionData, AXPSignInResult, AXPTenant, AXPTenantLoader, AXPTokenResult, AXPUser };
454
+ /**
455
+ * Supported content types for challenge display
456
+ */
457
+ type AXPChallengeContentType = 'image-url' | 'image-base64' | 'text' | 'audio-url';
458
+ /**
459
+ * Challenge data returned from the server
460
+ * Contains all information needed to display and submit a challenge
461
+ */
462
+ interface AXPLoginChallengeData {
463
+ /**
464
+ * Unique identifier for this challenge
465
+ * Must be sent back with credentials when submitting login
466
+ */
467
+ id: string;
468
+ /**
469
+ * The challenge content to display
470
+ * Could be an image URL, base64 encoded image, text, or audio URL
471
+ */
472
+ content: string;
473
+ /**
474
+ * Type of content for proper rendering
475
+ */
476
+ contentType: AXPChallengeContentType;
477
+ /**
478
+ * When this challenge expires (optional)
479
+ * After expiration, a new challenge should be fetched
480
+ */
481
+ expiresAt?: Date;
482
+ /**
483
+ * Additional metadata from server (optional)
484
+ */
485
+ metadata?: Record<string, unknown>;
486
+ }
487
+ /**
488
+ * Result of checking a login error response
489
+ * Determines if a challenge should be displayed
490
+ */
491
+ interface AXPChallengeCheckResult {
492
+ /**
493
+ * Whether a challenge is required
494
+ */
495
+ required: boolean;
496
+ /**
497
+ * Optional message to display to the user
498
+ */
499
+ message?: string;
500
+ /**
501
+ * Additional data from server that may be needed for getChallenge()
502
+ * For example: sessionId, attemptId, etc.
503
+ */
504
+ serverData?: Record<string, unknown>;
505
+ }
506
+
507
+ /**
508
+ * Base class for login challenge UI components
509
+ *
510
+ * Providers can extend this class to create custom challenge UIs.
511
+ * The login component will render this component and listen to its outputs.
512
+ *
513
+ * @example
514
+ * ```typescript
515
+ * @Component({
516
+ * selector: 'my-captcha-challenge',
517
+ * template: `
518
+ * <div class="captcha-container">
519
+ * <img [src]="'data:image/png;base64,' + challengeData().content" />
520
+ * <input
521
+ * type="text"
522
+ * [value]="response()"
523
+ * (input)="onResponseChange($event)"
524
+ * />
525
+ * <button (click)="onRefreshClick()">Refresh</button>
526
+ * </div>
527
+ * `
528
+ * })
529
+ * export class MyCaptchaChallengeComponent extends AXPLoginChallengeComponentBase {
530
+ * response = signal('');
531
+ *
532
+ * onResponseChange(event: Event) {
533
+ * const value = (event.target as HTMLInputElement).value;
534
+ * this.response.set(value);
535
+ * this.responseChange.emit(value);
536
+ * }
537
+ *
538
+ * onRefreshClick() {
539
+ * this.refreshRequest.emit();
540
+ * }
541
+ * }
542
+ * ```
543
+ */
544
+ declare abstract class AXPLoginChallengeComponentBase {
545
+ /**
546
+ * Challenge data to display
547
+ * Contains the image/content and metadata from the server
548
+ */
549
+ challengeData: i0.InputSignal<AXPLoginChallengeData>;
550
+ /**
551
+ * Whether the challenge is currently loading (e.g., refreshing)
552
+ */
553
+ isLoading: i0.InputSignal<boolean>;
554
+ /**
555
+ * Emits when the user enters or changes their response
556
+ * The login component will capture this value and include it in credentials
557
+ */
558
+ responseChange: i0.OutputEmitterRef<string>;
559
+ /**
560
+ * Emits when the user requests a new challenge (e.g., clicks refresh button)
561
+ * The login component will call provider.refreshChallenge()
562
+ */
563
+ refreshRequest: i0.OutputEmitterRef<void>;
564
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPLoginChallengeComponentBase, never>;
565
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPLoginChallengeComponentBase, "ng-component", never, { "challengeData": { "alias": "challengeData"; "required": true; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; }, { "responseChange": "responseChange"; "refreshRequest": "refreshRequest"; }, never, never, true, never>;
566
+ }
567
+
568
+ /**
569
+ * Abstract base class for login challenge providers
570
+ *
571
+ * Implement this class to create custom challenge mechanisms like:
572
+ * - Image CAPTCHA
573
+ * - reCAPTCHA
574
+ * - SMS verification
575
+ * - Email verification
576
+ *
577
+ * @example
578
+ * ```typescript
579
+ * @Injectable()
580
+ * export class MyImageCaptchaProvider extends AXPLoginChallengeProvider {
581
+ * readonly name = 'image-captcha';
582
+ *
583
+ * checkResponse(error: unknown): AXPChallengeCheckResult | null {
584
+ * if (error instanceof HttpErrorResponse) {
585
+ * if (error.error?.requiresCaptcha) {
586
+ * return { required: true };
587
+ * }
588
+ * }
589
+ * return null;
590
+ * }
591
+ *
592
+ * async getChallenge(): Promise<AXPLoginChallengeData> {
593
+ * const response = await this.http.get('/api/captcha').toPromise();
594
+ * return {
595
+ * id: response.id,
596
+ * content: response.image,
597
+ * contentType: 'image-base64'
598
+ * };
599
+ * }
600
+ *
601
+ * async refreshChallenge(): Promise<AXPLoginChallengeData> {
602
+ * return this.getChallenge();
603
+ * }
604
+ *
605
+ * getChallengeComponent(): Type<AXPLoginChallengeComponentBase> {
606
+ * return MyCaptchaChallengeComponent;
607
+ * }
608
+ * }
609
+ * ```
610
+ */
611
+ declare abstract class AXPLoginChallengeProvider {
612
+ /**
613
+ * Unique name identifier for this provider
614
+ */
615
+ abstract readonly name: string;
616
+ /**
617
+ * Checks the login error response to determine if a challenge is required
618
+ *
619
+ * This method is called after a failed login attempt. The implementation
620
+ * should inspect the error and return a result indicating whether a
621
+ * challenge should be displayed.
622
+ *
623
+ * @param error - The error from the failed login attempt (type varies by implementation)
624
+ * @returns Challenge check result, or null if this provider doesn't handle this error
625
+ */
626
+ abstract checkResponse(error: unknown): AXPChallengeCheckResult | null;
627
+ /**
628
+ * Fetches a new challenge from the server
629
+ *
630
+ * Called when checkResponse indicates a challenge is required.
631
+ * Should make an API call to get challenge data (e.g., CAPTCHA image).
632
+ *
633
+ * @param serverData - Optional data from checkResponse result that may be needed
634
+ * @returns Promise resolving to challenge data for display
635
+ */
636
+ abstract getChallenge(serverData?: Record<string, unknown>): Promise<AXPLoginChallengeData>;
637
+ /**
638
+ * Fetches a fresh challenge, replacing the current one
639
+ *
640
+ * Called when user requests a new challenge (e.g., clicks "new image" button).
641
+ * Typically delegates to getChallenge() but may have different behavior.
642
+ *
643
+ * @returns Promise resolving to new challenge data
644
+ */
645
+ abstract refreshChallenge(): Promise<AXPLoginChallengeData>;
646
+ /**
647
+ * Returns the component type for rendering the challenge UI
648
+ *
649
+ * Override this method to provide a custom challenge UI component.
650
+ * If not overridden (returns null), the login component will use
651
+ * a default built-in UI.
652
+ *
653
+ * @returns Component type extending AXPLoginChallengeComponentBase, or null for default UI
654
+ */
655
+ getChallengeComponent(): Type<AXPLoginChallengeComponentBase> | null;
656
+ }
657
+
658
+ /**
659
+ * Injection token for the login challenge provider
660
+ *
661
+ * This token is optional - if not provided, no challenge mechanism will be used.
662
+ *
663
+ * @example
664
+ * ```typescript
665
+ * // In your app module or provider configuration:
666
+ * providers: [
667
+ * {
668
+ * provide: AXP_LOGIN_CHALLENGE_PROVIDER,
669
+ * useClass: MyImageCaptchaProvider
670
+ * }
671
+ * ]
672
+ *
673
+ * // In a component:
674
+ * private challengeProvider = inject(AXP_LOGIN_CHALLENGE_PROVIDER, { optional: true });
675
+ * ```
676
+ */
677
+ declare const AXP_LOGIN_CHALLENGE_PROVIDER: InjectionToken<AXPLoginChallengeProvider>;
678
+
679
+ export { AXPAuthGuard, AXPAuthModule, AXPAuthStrategy, AXPAuthStrategyRegistryService, AXPFeatureDirective, AXPFeatureGuard, AXPLoginChallengeComponentBase, AXPLoginChallengeProvider, AXPPermissionDefinitionBuilder, AXPPermissionDefinitionGroupBuilder, AXPPermissionDefinitionProviderContext, AXPPermissionDefinitionService, AXPPermissionDefinitionsDataSourceDefinition, AXPPermissionDirective, AXPPermissionEvaluatorScopeProvider, AXPPermissionGuard, AXPSessionContext, AXPSessionService, AXPSessionStatus, AXPUnauthenticatedError, AXPUnauthorizedError, AXP_APPLICATION_LOADER, AXP_FEATURE_CHECKER, AXP_FEATURE_LOADER, AXP_LOGIN_CHALLENGE_PROVIDER, AXP_PERMISSION_CHECKER, AXP_PERMISSION_DEFINITION_PROVIDER, AXP_PERMISSION_LOADER, AXP_TENANT_LOADER, JwtUtil, PERMISSION_DEFINITIONS_DATASOURCE_NAME, PkceUtil, TimeUtil, initializeAppState };
680
+ export type { AXPApplication, AXPApplicationLoader, AXPAuthModuleConfigs, AXPBaseCredentials, AXPChallengeCheckResult, AXPChallengeContentType, AXPEdition, AXPFeature, AXPFeatureChecker, AXPFeatureLoader, AXPLoginChallengeData, AXPPermission, AXPPermissionChecker, AXPPermissionDefinition, AXPPermissionDefinitionProvider, AXPPermissionGroupDefinition, AXPPermissionLoader, AXPSessionData, AXPSignInResult, AXPTenant, AXPTenantLoader, AXPTokenResult, AXPUser };