@acorex/platform 21.0.0-next.3 → 21.0.0-next.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-platform-auth.mjs +295 -45
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-common-settings.provider-zhqNP3xb.mjs → acorex-platform-common-common-settings.provider-G9XcXXOG.mjs} +60 -4
- package/fesm2022/acorex-platform-common-common-settings.provider-G9XcXXOG.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +960 -319
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +1352 -832
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +554 -826
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +530 -154
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs +121 -0
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-components.mjs +5969 -2347
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +169 -154
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +15380 -9274
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +393 -110
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +511 -450
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- 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
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs → acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs} +39 -16
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs → acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs} +6 -7
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs → acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs} +12 -12
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs +111 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs.map +1 -0
- 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
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs.map +1 -0
- 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
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs.map +1 -0
- 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
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +7865 -4026
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs +8 -7
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +220 -169
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs +160 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs +120 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs.map +1 -0
- 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
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-cfREo88K.mjs → acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs → acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +1717 -66
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs → acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +1 -1
- 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
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs.map +1 -0
- 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
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +563 -561
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +1735 -1750
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/fesm2022/acorex-platform.mjs.map +1 -1
- package/package.json +31 -31
- package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +247 -10
- package/{common/index.d.ts → types/acorex-platform-common.d.ts} +492 -31
- package/{core/index.d.ts → types/acorex-platform-core.d.ts} +606 -392
- package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +719 -413
- package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +128 -56
- package/types/acorex-platform-layout-components.d.ts +2927 -0
- package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +9 -3
- package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +1133 -237
- package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +90 -31
- package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +206 -102
- package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +942 -137
- package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
- package/{runtime/index.d.ts → types/acorex-platform-runtime.d.ts} +237 -74
- package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +113 -5
- package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +1 -1
- package/types/acorex-platform-workflow.d.ts +1806 -0
- package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs +0 -157
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs +0 -1542
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +0 -101
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-cfREo88K.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs +0 -19
- package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs.map +0 -1
- package/layout/components/index.d.ts +0 -1669
- package/workflow/index.d.ts +0 -2443
- /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform.mjs","sources":["
|
|
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
|
+
"version": "21.0.0-next.33",
|
|
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": "
|
|
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": "./
|
|
26
|
+
"types": "./types/acorex-platform.d.ts",
|
|
28
27
|
"default": "./fesm2022/acorex-platform.mjs"
|
|
29
28
|
},
|
|
30
29
|
"./auth": {
|
|
31
|
-
"types": "./auth
|
|
30
|
+
"types": "./types/acorex-platform-auth.d.ts",
|
|
32
31
|
"default": "./fesm2022/acorex-platform-auth.mjs"
|
|
33
32
|
},
|
|
34
33
|
"./common": {
|
|
35
|
-
"types": "./common
|
|
34
|
+
"types": "./types/acorex-platform-common.d.ts",
|
|
36
35
|
"default": "./fesm2022/acorex-platform-common.mjs"
|
|
37
36
|
},
|
|
38
37
|
"./core": {
|
|
39
|
-
"types": "./core
|
|
38
|
+
"types": "./types/acorex-platform-core.d.ts",
|
|
40
39
|
"default": "./fesm2022/acorex-platform-core.mjs"
|
|
41
40
|
},
|
|
42
41
|
"./domain": {
|
|
43
|
-
"types": "./domain
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
443
|
-
|
|
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 };
|