@acorex/platform 21.0.0-next.5 → 21.0.0-next.51
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 +281 -23
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs +163 -0
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +1047 -263
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +1138 -510
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +557 -826
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +804 -186
- 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 +6208 -2344
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +456 -204
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +18632 -10286
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +538 -168
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +720 -456
- 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-CDYAGBku.mjs +103 -0
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.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-BGO75IMz.mjs +116 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.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 +8728 -4269
- 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 +391 -166
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs +160 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs +120 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.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-BfCeUU5F.mjs} +19 -26
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.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 +1836 -67
- 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 → acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs} +24 -25
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +94 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs +86 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +674 -573
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +1715 -535
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/fesm2022/acorex-platform.mjs.map +1 -1
- package/package.json +37 -37
- package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +241 -4
- package/{common/index.d.ts → types/acorex-platform-common.d.ts} +598 -80
- package/{core/index.d.ts → types/acorex-platform-core.d.ts} +595 -132
- package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +744 -412
- package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +193 -48
- package/types/acorex-platform-layout-components.d.ts +2979 -0
- package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +96 -18
- package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +1601 -261
- package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +116 -55
- package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +272 -124
- package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +1055 -157
- package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
- package/types/acorex-platform-runtime.d.ts +571 -0
- package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +122 -5
- package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +1 -1
- package/types/acorex-platform-workflow.d.ts +1884 -0
- package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs +0 -71
- 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 +0 -135
- 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-settings.provider-DSs1o1M6.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs +0 -65
- 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 +0 -64
- 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/runtime/index.d.ts +0 -307
- package/workflow/index.d.ts +0 -1808
- /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
|
@@ -1,38 +1,20 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken,
|
|
2
|
+
import { InjectionToken, Type, EnvironmentProviders } from '@angular/core';
|
|
3
|
+
import { AXPExpression, AXPMetaData, AXPDataType, AXPOptionsData, AXPDefinitionCategory, AXPValidationRules } from '@acorex/platform/core';
|
|
3
4
|
import * as i1 from '@acorex/platform/runtime';
|
|
4
|
-
import { AXPExpression, AXPValidationRules, AXPOptionsData, AXPMetaData } from '@acorex/platform/core';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Token for entity CRUD setup. Consumed by AXPDomainModule.
|
|
8
|
+
* The actual provider is provideEntity() from @acorex/platform/layout/entity
|
|
9
|
+
* to avoid circular dependency (domain must not depend on layout/entity).
|
|
10
|
+
*/
|
|
6
11
|
declare const AXP_ENTITY_CRUD_SETUP: InjectionToken<void>;
|
|
7
|
-
declare function provideEntity(entityKeys: string[]): EnvironmentProviders;
|
|
8
12
|
|
|
9
|
-
declare
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
*
|
|
14
|
-
* Used during application bootstrap to register global middleware
|
|
15
|
-
* that applies to all schema resolutions. This enables centralized
|
|
16
|
-
* schema processing logic.
|
|
17
|
-
*/
|
|
18
|
-
private _schemaSetup;
|
|
19
|
-
private _schemaMiddlewareSetup;
|
|
20
|
-
private _schemaLoaderSetup;
|
|
21
|
-
/**
|
|
22
|
-
* Injection token for domain loader setup initialization.
|
|
23
|
-
*
|
|
24
|
-
* Used during application bootstrap to register domain loaders
|
|
25
|
-
* that can provide domain definitions on-demand when they're not found in
|
|
26
|
-
* the registry.
|
|
27
|
-
*/
|
|
28
|
-
private _domainLoaderSetup;
|
|
29
|
-
private _domainMiddlewareSetup;
|
|
30
|
-
private _domainSetup;
|
|
31
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AXPDomainModule, never>;
|
|
32
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<AXPDomainModule, never, [typeof i1.AXPRuntimeModule], never>;
|
|
33
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<AXPDomainModule>;
|
|
13
|
+
declare enum AXPDomainActionSide {
|
|
14
|
+
Client = "client",
|
|
15
|
+
Server = "server",
|
|
16
|
+
Both = "both"
|
|
34
17
|
}
|
|
35
|
-
|
|
36
18
|
/**
|
|
37
19
|
* Interface for defining actions
|
|
38
20
|
*/
|
|
@@ -48,31 +30,124 @@ declare enum AXPEntityCommandScope {
|
|
|
48
30
|
Individual = "individual",
|
|
49
31
|
Section = "section"
|
|
50
32
|
}
|
|
33
|
+
interface AXPDomainRealtedModuleEntity {
|
|
34
|
+
moduleId?: string;
|
|
35
|
+
module?: {
|
|
36
|
+
id?: string;
|
|
37
|
+
name?: string;
|
|
38
|
+
title?: string;
|
|
39
|
+
};
|
|
40
|
+
entityId?: string;
|
|
41
|
+
entity?: {
|
|
42
|
+
id?: string;
|
|
43
|
+
name?: string;
|
|
44
|
+
title?: string;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
51
47
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Where the validation rule runs: client-side only, server-side only, or both.
|
|
50
|
+
*/
|
|
51
|
+
type AXPValidationRunAt = 'client' | 'server' | 'both';
|
|
52
|
+
/**
|
|
53
|
+
* Validation rule definition (catalog model): metadata for available validation rules.
|
|
54
|
+
* Used in UI to list validation rules: name (rule key), title, description, and runAt.
|
|
55
|
+
* The actual rule usage on properties uses AXPValidationRule from @acorex/platform/core.
|
|
56
|
+
*/
|
|
57
|
+
interface AXPValidationRuleDefinition extends AXPDomainRealtedModuleEntity {
|
|
58
|
+
rule: string;
|
|
59
|
+
title: string;
|
|
60
|
+
description?: string;
|
|
61
|
+
icon?: string;
|
|
62
|
+
/** Where the validation runs: client-side, server-side, or both. Default: 'client' */
|
|
63
|
+
runAt?: AXPValidationRunAt;
|
|
64
|
+
message?: string;
|
|
65
|
+
options?: AXPPropertyDefinition[];
|
|
56
66
|
}
|
|
57
|
-
interface
|
|
67
|
+
interface AXPValidationRuleValue {
|
|
68
|
+
rule: string;
|
|
69
|
+
title?: string;
|
|
70
|
+
message?: string;
|
|
71
|
+
options?: AXPMetaData;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
interface AXPPropertyFeatures {
|
|
75
|
+
searchable?: {
|
|
76
|
+
enabled: boolean;
|
|
77
|
+
fullText: boolean;
|
|
78
|
+
};
|
|
79
|
+
filterable?: {
|
|
80
|
+
enabled: boolean;
|
|
81
|
+
inline: boolean;
|
|
82
|
+
};
|
|
83
|
+
sortable?: {
|
|
84
|
+
enabled: boolean;
|
|
85
|
+
};
|
|
86
|
+
auditable?: {
|
|
87
|
+
enabled: boolean;
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
interface AXPPropertyDefinition {
|
|
58
91
|
name: string;
|
|
59
92
|
title: string;
|
|
60
|
-
|
|
61
|
-
|
|
93
|
+
description?: string;
|
|
94
|
+
icon?: string;
|
|
95
|
+
defaultValue?: unknown;
|
|
96
|
+
disabled?: boolean;
|
|
97
|
+
dataType?: AXPDataType;
|
|
98
|
+
interface: AXPInterfaceDefinitionValue;
|
|
99
|
+
validations?: AXPValidationRuleValue[];
|
|
100
|
+
features?: AXPPropertyFeatures;
|
|
101
|
+
metadata?: AXPMetaData;
|
|
62
102
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
103
|
+
|
|
104
|
+
/** Widget category for interface grouping (e.g. Editors, Layout, Action). */
|
|
105
|
+
interface AXPInterfaceCategory {
|
|
106
|
+
name: string;
|
|
107
|
+
title: string;
|
|
108
|
+
order?: number;
|
|
109
|
+
}
|
|
110
|
+
/** Widget interface definition stored in DB (display metadata + option definitions). Values are stored in schema. */
|
|
111
|
+
interface AXPInterfaceDefinition {
|
|
112
|
+
name: string;
|
|
113
|
+
title?: string;
|
|
114
|
+
description?: string;
|
|
115
|
+
icon?: string;
|
|
116
|
+
dataType?: AXPDataType;
|
|
117
|
+
/** Widget categories (e.g. Editors, Layout). */
|
|
118
|
+
categories?: AXPInterfaceCategory | AXPInterfaceCategory[];
|
|
119
|
+
/** Widget groups (e.g. form-element, entity-widget). */
|
|
120
|
+
groups?: string[];
|
|
121
|
+
/** Widget type: editor, view, filter, container, action, etc. */
|
|
122
|
+
type?: string;
|
|
123
|
+
/** Default filter widget name when used as filter (e.g. string-filter, number-filter). */
|
|
124
|
+
defaultFilterWidgetName?: string;
|
|
125
|
+
optionDefinitions?: AXPPropertyDefinition[];
|
|
66
126
|
}
|
|
67
|
-
interface
|
|
127
|
+
interface AXPInterfaceDefinitionValue {
|
|
128
|
+
name: string;
|
|
129
|
+
title: string;
|
|
130
|
+
options?: AXPOptionsData;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Plugin definition (catalog model): metadata for available plugins.
|
|
135
|
+
* Used in UI to list plugins: name, title, optional icon, description, and options schema.
|
|
136
|
+
*/
|
|
137
|
+
interface AXPPluginDefinition extends AXPDomainRealtedModuleEntity {
|
|
68
138
|
name: string;
|
|
69
139
|
title: string;
|
|
70
140
|
description?: string;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
141
|
+
icon?: string;
|
|
142
|
+
options?: AXPPropertyDefinition[];
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Plugin value in entity: name + optional options (key-value).
|
|
146
|
+
* Fills the definition when used on an entity.
|
|
147
|
+
*/
|
|
148
|
+
interface AXPPluginDefinitionValue {
|
|
149
|
+
name: string;
|
|
150
|
+
options?: AXPMetaData;
|
|
76
151
|
}
|
|
77
152
|
|
|
78
153
|
declare enum AXPRelationshipKind {
|
|
@@ -86,188 +161,409 @@ declare enum AXPRelationshipCardinality {
|
|
|
86
161
|
ManyToMany = 2
|
|
87
162
|
}
|
|
88
163
|
/**
|
|
89
|
-
*
|
|
164
|
+
* Standalone relation definition with full source and target.
|
|
165
|
+
* Relations live in their own collection, independent of aggregates.
|
|
90
166
|
*/
|
|
91
|
-
interface
|
|
167
|
+
interface AXPRelationDefinition {
|
|
168
|
+
id?: string;
|
|
92
169
|
type: AXPRelationshipCardinality;
|
|
93
170
|
kind: AXPRelationshipKind;
|
|
94
|
-
|
|
171
|
+
source: {
|
|
95
172
|
aggregate: string;
|
|
96
173
|
entity: string;
|
|
97
174
|
key: string;
|
|
98
175
|
};
|
|
99
|
-
|
|
176
|
+
target: {
|
|
177
|
+
aggregate: string;
|
|
100
178
|
entity: string;
|
|
101
179
|
key: string;
|
|
102
180
|
};
|
|
103
181
|
isRequired: boolean;
|
|
104
182
|
}
|
|
105
183
|
|
|
106
|
-
|
|
107
|
-
|
|
184
|
+
/**
|
|
185
|
+
* Discriminated JSON for `AXPMenuDefinitionRecord.command`.
|
|
186
|
+
* Modal navigation is omitted (Angular `Type` is not JSON-serializable).
|
|
187
|
+
*/
|
|
188
|
+
type AXPMenuDefinitionStoredCommand = {
|
|
189
|
+
kind: 'navigate';
|
|
190
|
+
navigateType: 'router';
|
|
191
|
+
path: string;
|
|
192
|
+
extras?: Record<string, unknown>;
|
|
193
|
+
} | {
|
|
194
|
+
kind: 'execute';
|
|
195
|
+
name: string;
|
|
196
|
+
options?: Record<string, unknown>;
|
|
108
197
|
};
|
|
109
|
-
|
|
198
|
+
/**
|
|
199
|
+
* Optional reference to an entity list route: resolved at runtime via `AXPEntityService.createPath`.
|
|
200
|
+
*/
|
|
201
|
+
interface AXPMenuDefinitionEntityListRef {
|
|
202
|
+
module: string;
|
|
203
|
+
entity: string;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Serializable menu definition for definition stores (Dexie/Firestore in mock today).
|
|
207
|
+
* Mirrors persisted shape for `AXPEntityDefinitionCrudService` menu APIs — not identical to shell `AXPMenuItem`.
|
|
208
|
+
*/
|
|
209
|
+
interface AXPMenuDefinitionRecord {
|
|
210
|
+
/** Same as `AXPMenuItem.name` (unique key). */
|
|
110
211
|
name: string;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
212
|
+
text: string;
|
|
213
|
+
description?: string;
|
|
214
|
+
icon?: string;
|
|
215
|
+
priority?: number;
|
|
216
|
+
type?: 'menu' | 'group' | 'break';
|
|
217
|
+
/**
|
|
218
|
+
* Parent menu `name` for `context.find(attachParentName).addItems(...)`.
|
|
219
|
+
* Empty omits attachment (provider may add to root — see implementation).
|
|
220
|
+
*/
|
|
221
|
+
attachParentName?: string;
|
|
222
|
+
/** Literal router path; if both this and `entityListRef` are set, implementations may prefer this. */
|
|
223
|
+
path?: string;
|
|
224
|
+
entityListRef?: AXPMenuDefinitionEntityListRef;
|
|
225
|
+
policyFeatures?: string[];
|
|
226
|
+
policyPermissions?: string[];
|
|
227
|
+
badgeKey?: string;
|
|
228
|
+
command?: AXPMenuDefinitionStoredCommand;
|
|
229
|
+
/**
|
|
230
|
+
* Optional module classification (references `PlatformManagement.ModuleDefinitions` when using the category plugin).
|
|
231
|
+
*/
|
|
232
|
+
categoryIds?: string[];
|
|
233
|
+
/** Denormalized labels for list/display (mirrors product category pattern). */
|
|
234
|
+
categories?: Array<{
|
|
235
|
+
id: string;
|
|
236
|
+
title?: string;
|
|
237
|
+
}>;
|
|
238
|
+
meta?: Record<string, unknown>;
|
|
116
239
|
}
|
|
117
240
|
|
|
118
|
-
|
|
241
|
+
/**
|
|
242
|
+
* One level of child permissions under a root permission (fluent `addChild` only).
|
|
243
|
+
* Nested `children` under leaves are not part of the storage contract.
|
|
244
|
+
*/
|
|
245
|
+
interface AXPPermissionLeafRecord {
|
|
119
246
|
name: string;
|
|
120
247
|
title: string;
|
|
121
|
-
|
|
248
|
+
description?: string;
|
|
249
|
+
requiredFeatures?: string[];
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Root permission row: one `addPermission` … `endPermission` chain, with optional sibling `addChild` entries.
|
|
253
|
+
*/
|
|
254
|
+
interface AXPPermissionDefinitionRecord {
|
|
255
|
+
name: string;
|
|
256
|
+
title: string;
|
|
257
|
+
description?: string;
|
|
258
|
+
requiredFeatures?: string[];
|
|
259
|
+
/** At most one level — matches `AXPPermissionDefinitionProviderContext` fluent API. */
|
|
260
|
+
children?: AXPPermissionLeafRecord[];
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Serializable permission group for definition stores (Dexie/Firestore).
|
|
264
|
+
* Aligns with `AXPPermissionGroupDefinition` / fluent providers; one row per group.
|
|
265
|
+
*/
|
|
266
|
+
interface AXPPermissionGroupDefinitionRecord {
|
|
267
|
+
name: string;
|
|
268
|
+
title: string;
|
|
269
|
+
description?: string;
|
|
270
|
+
permissions: AXPPermissionDefinitionRecord[];
|
|
271
|
+
/**
|
|
272
|
+
* Optional module classification (references `PlatformManagement.ModuleDefinitions` when using the category plugin).
|
|
273
|
+
*/
|
|
274
|
+
categoryIds?: string[];
|
|
275
|
+
/** Denormalized labels for list/display (mirrors product category pattern). */
|
|
276
|
+
categories?: Array<{
|
|
277
|
+
id: string;
|
|
278
|
+
title?: string;
|
|
279
|
+
}>;
|
|
122
280
|
}
|
|
123
281
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
282
|
+
/** Surfaces where a command may be exposed (tooling / automation). Build-time: optional on `defineCommand`. */
|
|
283
|
+
type AXPCommandCapability = 'ai' | 'workflow';
|
|
284
|
+
/**
|
|
285
|
+
* Persisted command registry row (e.g. Dexie/Firestore via AXPEntityDefinitionCrudService).
|
|
286
|
+
* `name` is the runtime command key; `active` is the toggle stored for mock/admin UIs.
|
|
287
|
+
*/
|
|
288
|
+
interface AXPCommandRegistryRecord {
|
|
289
|
+
name: string;
|
|
290
|
+
active: boolean;
|
|
291
|
+
/** Human / AI-oriented description of what the command does. */
|
|
292
|
+
description?: string;
|
|
293
|
+
/** Input parameters as schema rows (same shape as interface `optionDefinitions`). */
|
|
294
|
+
inputOptionDefinitions?: AXPPropertyDefinition[];
|
|
295
|
+
/** Output shape as schema rows (same shape as interface `optionDefinitions`). */
|
|
296
|
+
outputOptionDefinitions?: AXPPropertyDefinition[];
|
|
297
|
+
/** Display title from build-time command metadata (`*.definition.ts`). */
|
|
298
|
+
catalogTitle?: string;
|
|
299
|
+
/** Where the command runs (metadata). */
|
|
300
|
+
executionMode?: 'frontend' | 'backend' | 'both';
|
|
301
|
+
/** Pretty-printed JSON of the outcomes definition from metadata (readonly display). */
|
|
302
|
+
outcomesDefinitionJson?: string;
|
|
303
|
+
/** Pretty-printed JSON of AI hints from metadata (readonly display). */
|
|
304
|
+
aiMetadataJson?: string;
|
|
305
|
+
/**
|
|
306
|
+
* Optional capability flags (from build-time `capabilities` on command metadata).
|
|
307
|
+
* Omitted or empty means no declared surface; consumers may still apply legacy rules (e.g. AI `ai-tool` tag).
|
|
308
|
+
*/
|
|
309
|
+
capabilities?: AXPCommandCapability[];
|
|
310
|
+
/** Optional grouping from build-time command metadata (`categories` on `defineCommand`). */
|
|
311
|
+
categories?: AXPDefinitionCategory[];
|
|
129
312
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Persisted query registry row (e.g. Dexie/Firestore via AXPEntityDefinitionCrudService).
|
|
316
|
+
* `name` is the runtime query key; `active` is the toggle stored for mock/admin UIs.
|
|
317
|
+
* Queries expose `fetch(input)` only — no command outcomes.
|
|
318
|
+
*/
|
|
319
|
+
interface AXPQueryRegistryRecord {
|
|
320
|
+
name: string;
|
|
321
|
+
active: boolean;
|
|
322
|
+
/** Human / AI-oriented description of what the query returns. */
|
|
323
|
+
description?: string;
|
|
324
|
+
/** Input parameters (filter / criteria) as property definition rows. */
|
|
325
|
+
inputOptionDefinitions?: AXPPropertyDefinition[];
|
|
326
|
+
/** Result shape as property definition rows (documentation / tooling). */
|
|
327
|
+
outputOptionDefinitions?: AXPPropertyDefinition[];
|
|
328
|
+
/** Display title from build-time query metadata (`*.query.definition.ts`). */
|
|
329
|
+
catalogTitle?: string;
|
|
330
|
+
/** Where the query runs (metadata). */
|
|
331
|
+
executionMode?: 'frontend' | 'backend' | 'both';
|
|
332
|
+
/** Pretty-printed JSON of AI hints from metadata (readonly display). */
|
|
333
|
+
aiMetadataJson?: string;
|
|
334
|
+
/**
|
|
335
|
+
* Optional capability flags (from build-time `capabilities` on query metadata).
|
|
336
|
+
* Omitted or empty means no declared surface; consumers may still apply legacy rules (e.g. AI `ai-tool` tag).
|
|
337
|
+
*/
|
|
338
|
+
capabilities?: AXPCommandCapability[];
|
|
339
|
+
/** Optional grouping from build-time query metadata (`categories` on `defineQuery`). */
|
|
340
|
+
categories?: AXPDefinitionCategory[];
|
|
145
341
|
}
|
|
146
|
-
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Persisted layout-widget catalog row (Dexie/Firestore via AXPEntityDefinitionCrudService).
|
|
345
|
+
* `name` is the widget registry name from build-time `defineWidget` metadata; `metadataJson` holds the full payload.
|
|
346
|
+
*/
|
|
347
|
+
interface AXPWidgetCatalogRecord {
|
|
147
348
|
name: string;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
metadata
|
|
349
|
+
active: boolean;
|
|
350
|
+
description?: string;
|
|
351
|
+
/** Localized / catalog title from metadata `title`. */
|
|
352
|
+
catalogTitle?: string;
|
|
353
|
+
/** Pretty-printed JSON of full widget metadata (`defineWidget` sidecar). */
|
|
354
|
+
metadataJson?: string;
|
|
153
355
|
}
|
|
154
356
|
|
|
155
357
|
/**
|
|
156
|
-
*
|
|
358
|
+
* Service interface for CRUD operations on entity and related definition records stored in Dexie/Firestore.
|
|
359
|
+
* Provided by connectivity mock when using Dexie or Firestore as entity definition source.
|
|
360
|
+
* Use this service from anywhere in the app (not just mock).
|
|
157
361
|
*/
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
362
|
+
interface AXPEntityDefinitionCrudService {
|
|
363
|
+
list(): Promise<{
|
|
364
|
+
name: string;
|
|
365
|
+
module: string;
|
|
366
|
+
entityName?: string;
|
|
367
|
+
}[]>;
|
|
368
|
+
getRaw(moduleName: string, entityName: string): Promise<Record<string, unknown> | null>;
|
|
369
|
+
create(entityName: string, definition: Record<string, unknown>): Promise<void>;
|
|
370
|
+
update(entityName: string, definition: Record<string, unknown>): Promise<void>;
|
|
371
|
+
delete(entityName: string): Promise<void>;
|
|
372
|
+
listInterfaces(): Promise<AXPInterfaceDefinition[]>;
|
|
373
|
+
listInterfacesByCategory(categoryName: string): Promise<AXPInterfaceDefinition[]>;
|
|
374
|
+
getInterface(name: string): Promise<AXPInterfaceDefinition | null>;
|
|
375
|
+
createInterface(name: string, definition: AXPInterfaceDefinition): Promise<void>;
|
|
376
|
+
updateInterface(name: string, definition: AXPInterfaceDefinition): Promise<void>;
|
|
377
|
+
deleteInterface(name: string): Promise<void>;
|
|
378
|
+
listPlugins(): Promise<AXPPluginDefinition[]>;
|
|
379
|
+
getPlugin(name: string): Promise<AXPPluginDefinition | null>;
|
|
380
|
+
createPlugin(name: string, definition: AXPPluginDefinition): Promise<void>;
|
|
381
|
+
updatePlugin(name: string, definition: AXPPluginDefinition): Promise<void>;
|
|
382
|
+
deletePlugin(name: string): Promise<void>;
|
|
383
|
+
listValidations(): Promise<AXPValidationRuleDefinition[]>;
|
|
384
|
+
getValidation(name: string): Promise<AXPValidationRuleDefinition | null>;
|
|
385
|
+
createValidation(name: string, definition: AXPValidationRuleDefinition): Promise<void>;
|
|
386
|
+
updateValidation(name: string, definition: AXPValidationRuleDefinition): Promise<void>;
|
|
387
|
+
deleteValidation(name: string): Promise<void>;
|
|
388
|
+
listRelations(): Promise<Array<AXPRelationDefinition & {
|
|
389
|
+
id: string;
|
|
390
|
+
}>>;
|
|
391
|
+
getRelation(id: string): Promise<AXPRelationDefinition | null>;
|
|
392
|
+
createRelation(id: string, definition: AXPRelationDefinition): Promise<void>;
|
|
393
|
+
updateRelation(id: string, definition: AXPRelationDefinition): Promise<void>;
|
|
394
|
+
deleteRelation(id: string): Promise<void>;
|
|
395
|
+
listModules(): Promise<Array<{
|
|
396
|
+
name: string;
|
|
397
|
+
title?: string;
|
|
398
|
+
icon?: string;
|
|
399
|
+
}>>;
|
|
400
|
+
getModule(name: string): Promise<{
|
|
401
|
+
name: string;
|
|
402
|
+
title?: string;
|
|
403
|
+
icon?: string;
|
|
404
|
+
} | null>;
|
|
405
|
+
createModule(name: string, definition: {
|
|
406
|
+
name: string;
|
|
407
|
+
title?: string;
|
|
408
|
+
icon?: string;
|
|
409
|
+
}): Promise<void>;
|
|
410
|
+
updateModule(name: string, definition: {
|
|
411
|
+
name: string;
|
|
412
|
+
title?: string;
|
|
413
|
+
icon?: string;
|
|
414
|
+
}): Promise<void>;
|
|
415
|
+
deleteModule(name: string): Promise<void>;
|
|
416
|
+
listAggregates(filter?: {
|
|
417
|
+
module?: string;
|
|
418
|
+
}): Promise<Array<{
|
|
419
|
+
id: string;
|
|
420
|
+
definition: Record<string, unknown>;
|
|
421
|
+
}>>;
|
|
422
|
+
getAggregate(id: string): Promise<Record<string, unknown> | null>;
|
|
423
|
+
createAggregate(id: string, definition: Record<string, unknown>): Promise<void>;
|
|
424
|
+
updateAggregate(id: string, definition: Record<string, unknown>): Promise<void>;
|
|
425
|
+
deleteAggregate(id: string): Promise<void>;
|
|
426
|
+
listMenus(): Promise<Array<{
|
|
427
|
+
id: string;
|
|
428
|
+
definition: AXPMenuDefinitionRecord;
|
|
429
|
+
}>>;
|
|
430
|
+
getMenu(id: string): Promise<AXPMenuDefinitionRecord | null>;
|
|
431
|
+
createMenu(id: string, definition: AXPMenuDefinitionRecord): Promise<void>;
|
|
432
|
+
updateMenu(id: string, definition: AXPMenuDefinitionRecord): Promise<void>;
|
|
433
|
+
deleteMenu(id: string): Promise<void>;
|
|
434
|
+
listPermissionGroups(): Promise<Array<{
|
|
435
|
+
id: string;
|
|
436
|
+
definition: AXPPermissionGroupDefinitionRecord;
|
|
437
|
+
}>>;
|
|
438
|
+
getPermissionGroup(id: string): Promise<AXPPermissionGroupDefinitionRecord | null>;
|
|
439
|
+
createPermissionGroup(id: string, definition: AXPPermissionGroupDefinitionRecord): Promise<void>;
|
|
440
|
+
updatePermissionGroup(id: string, definition: AXPPermissionGroupDefinitionRecord): Promise<void>;
|
|
441
|
+
deletePermissionGroup(id: string): Promise<void>;
|
|
442
|
+
listCommands(): Promise<Array<{
|
|
443
|
+
id: string;
|
|
444
|
+
definition: AXPCommandRegistryRecord;
|
|
445
|
+
}>>;
|
|
446
|
+
getCommand(id: string): Promise<AXPCommandRegistryRecord | null>;
|
|
447
|
+
createCommand(id: string, definition: AXPCommandRegistryRecord): Promise<void>;
|
|
448
|
+
updateCommand(id: string, definition: AXPCommandRegistryRecord): Promise<void>;
|
|
449
|
+
deleteCommand(id: string): Promise<void>;
|
|
450
|
+
listQueries(): Promise<Array<{
|
|
451
|
+
id: string;
|
|
452
|
+
definition: AXPQueryRegistryRecord;
|
|
453
|
+
}>>;
|
|
454
|
+
getQuery(id: string): Promise<AXPQueryRegistryRecord | null>;
|
|
455
|
+
createQuery(id: string, definition: AXPQueryRegistryRecord): Promise<void>;
|
|
456
|
+
updateQuery(id: string, definition: AXPQueryRegistryRecord): Promise<void>;
|
|
457
|
+
deleteQuery(id: string): Promise<void>;
|
|
458
|
+
listWidgets(): Promise<Array<{
|
|
459
|
+
id: string;
|
|
460
|
+
definition: AXPWidgetCatalogRecord;
|
|
461
|
+
}>>;
|
|
462
|
+
getWidget(id: string): Promise<AXPWidgetCatalogRecord | null>;
|
|
463
|
+
createWidget(id: string, definition: AXPWidgetCatalogRecord): Promise<void>;
|
|
464
|
+
updateWidget(id: string, definition: AXPWidgetCatalogRecord): Promise<void>;
|
|
465
|
+
deleteWidget(id: string): Promise<void>;
|
|
466
|
+
}
|
|
467
|
+
declare const AXP_ENTITY_DEFINITION_CRUD_SERVICE: InjectionToken<AXPEntityDefinitionCrudService | null>;
|
|
468
|
+
|
|
469
|
+
declare class AXPDomainModule {
|
|
470
|
+
private _commandSetup;
|
|
225
471
|
/**
|
|
226
|
-
*
|
|
472
|
+
* Optional bootstrap hooks for registered property definitions (see {@link AXP_PROPERTY_SETUP} and related tokens).
|
|
227
473
|
*/
|
|
228
|
-
|
|
474
|
+
private _propertySetup;
|
|
475
|
+
private _propertyMiddlewareSetup;
|
|
476
|
+
private _propertyLoaderSetup;
|
|
229
477
|
/**
|
|
230
|
-
*
|
|
478
|
+
* Injection token for domain loader setup initialization.
|
|
479
|
+
*
|
|
480
|
+
* Used during application bootstrap to register domain loaders
|
|
481
|
+
* that can provide domain definitions on-demand when they're not found in
|
|
482
|
+
* the registry.
|
|
231
483
|
*/
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
484
|
+
private _domainLoaderSetup;
|
|
485
|
+
private _domainMiddlewareSetup;
|
|
486
|
+
private _domainSetup;
|
|
487
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPDomainModule, never>;
|
|
488
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXPDomainModule, never, [typeof i1.AXPRuntimeModule], never>;
|
|
489
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AXPDomainModule>;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
declare enum AXPEntityType {
|
|
493
|
+
Entity = 0,
|
|
494
|
+
AggregateRoot = 1,
|
|
495
|
+
ValueObject = 2
|
|
496
|
+
}
|
|
497
|
+
interface AXPEntityDefinition {
|
|
498
|
+
name: string;
|
|
499
|
+
title: string;
|
|
500
|
+
fields: AXPEntityPropertyDefinition[];
|
|
501
|
+
type: AXPEntityType;
|
|
502
|
+
/** Entity plugins (e.g. common.history, common.lock). Name + optional options only. */
|
|
503
|
+
plugins?: AXPPluginDefinitionValue[];
|
|
504
|
+
/** Property groups for layout */
|
|
505
|
+
groups?: Array<{
|
|
506
|
+
id: string;
|
|
507
|
+
title: string;
|
|
508
|
+
}>;
|
|
509
|
+
/** List/table columns */
|
|
510
|
+
columns?: Array<{
|
|
511
|
+
name: string;
|
|
512
|
+
}>;
|
|
513
|
+
/** Display formats */
|
|
514
|
+
formats?: {
|
|
515
|
+
individual?: string;
|
|
516
|
+
plural?: string;
|
|
238
517
|
};
|
|
239
|
-
/**
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
518
|
+
/** Layout interfaces (master create/update/single/list). Pass-through for converter. */
|
|
519
|
+
interfaces?: Record<string, unknown>;
|
|
520
|
+
/** Module name (e.g. ContentManagement). Derived from path or explicit. */
|
|
521
|
+
module?: string;
|
|
522
|
+
/** Entity icon. */
|
|
523
|
+
icon?: string;
|
|
524
|
+
}
|
|
525
|
+
interface AXPEntityPropertyFeatures {
|
|
526
|
+
nullable: boolean;
|
|
527
|
+
readOnly: boolean;
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Entity field: flattened embedded property definition (interface, validations, features) plus entity-only metadata.
|
|
531
|
+
* Top-level name/title are the entity property name/title.
|
|
532
|
+
*/
|
|
533
|
+
interface AXPEntityPropertyDefinition extends AXPPropertyDefinition {
|
|
534
|
+
actions?: AXPDomainAction[];
|
|
535
|
+
/** Nullable/readOnly for entity binding; distinct from property.features (searchable, filterable, etc.). */
|
|
536
|
+
fieldFeatures?: AXPEntityPropertyFeatures;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
type AXPAggregateEntityList = {
|
|
540
|
+
[key: string]: () => Promise<AXPEntityDefinition>;
|
|
541
|
+
};
|
|
542
|
+
/**
|
|
543
|
+
* Aggregate definition. Relations are stored in a separate collection (like MySQL join table).
|
|
544
|
+
* Join when needed via relations collection.
|
|
545
|
+
*/
|
|
546
|
+
interface AXPAggregateDefinition {
|
|
547
|
+
name: string;
|
|
548
|
+
title: string;
|
|
549
|
+
entities: AXPEntityDefinition[] | AXPAggregateEntityList | Record<string, string>;
|
|
550
|
+
validations: AXPValidationRules;
|
|
551
|
+
actions: AXPDomainAction[];
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
interface AXPModuleDefinition {
|
|
555
|
+
name: string;
|
|
556
|
+
title: string;
|
|
557
|
+
aggregates: AXPAggregateDefinition[];
|
|
255
558
|
}
|
|
256
559
|
|
|
257
560
|
/**
|
|
258
561
|
* Simple runtime model for aggregate definitions with parent references and navigation helpers.
|
|
259
|
-
*
|
|
260
|
-
* This model is a pure data structure that provides:
|
|
261
|
-
* - Access to aggregate properties and metadata
|
|
262
|
-
* - Navigation helpers for finding relations and entity references
|
|
263
|
-
* - Parent module reference for hierarchy navigation
|
|
264
|
-
*
|
|
265
|
-
* All loading and resolution logic has been moved to AXPDomainRegistry.
|
|
562
|
+
* Relations are stored in a separate collection; join when needed.
|
|
266
563
|
*/
|
|
267
564
|
declare class AXPAggregateModel {
|
|
268
565
|
readonly name: string;
|
|
269
566
|
readonly title: string;
|
|
270
|
-
readonly relations: AXPRelationModel[];
|
|
271
567
|
readonly validations: AXPValidationRules;
|
|
272
568
|
readonly actions: AXPDomainAction[];
|
|
273
569
|
readonly parent: any;
|
|
@@ -305,21 +601,6 @@ declare class AXPAggregateModel {
|
|
|
305
601
|
* @returns True if entity exists
|
|
306
602
|
*/
|
|
307
603
|
hasEntity(entityName: string): boolean;
|
|
308
|
-
/**
|
|
309
|
-
* Find relation by source and target entities
|
|
310
|
-
*
|
|
311
|
-
* @param sourceEntity Source entity name
|
|
312
|
-
* @param targetEntity Target entity name
|
|
313
|
-
* @returns Relation model or undefined if not found
|
|
314
|
-
*/
|
|
315
|
-
findRelation(sourceEntity: string, targetEntity: string): AXPRelationModel | undefined;
|
|
316
|
-
/**
|
|
317
|
-
* Get all relations for a specific entity
|
|
318
|
-
*
|
|
319
|
-
* @param entityName Entity name
|
|
320
|
-
* @returns Array of relations involving the entity
|
|
321
|
-
*/
|
|
322
|
-
getEntityRelations(entityName: string): AXPRelationModel[];
|
|
323
604
|
/**
|
|
324
605
|
* Get parent module
|
|
325
606
|
*
|
|
@@ -339,7 +620,6 @@ declare class AXPAggregateModel {
|
|
|
339
620
|
*/
|
|
340
621
|
getStatistics(): {
|
|
341
622
|
entityCount: number;
|
|
342
|
-
relationCount: number;
|
|
343
623
|
actionCount: number;
|
|
344
624
|
validationCount: number;
|
|
345
625
|
};
|
|
@@ -430,9 +710,8 @@ declare class AXPModuleModel {
|
|
|
430
710
|
*/
|
|
431
711
|
getAllEntityReferences(): Record<string, string>;
|
|
432
712
|
/**
|
|
433
|
-
*
|
|
434
|
-
*
|
|
435
|
-
* @returns Array of all relation models
|
|
713
|
+
* Relations are stored in a separate collection. Use relation queries for join when needed.
|
|
714
|
+
* @deprecated Relations are no longer nested in aggregates.
|
|
436
715
|
*/
|
|
437
716
|
getAllRelations(): Array<{
|
|
438
717
|
aggregate: AXPAggregateModel;
|
|
@@ -452,7 +731,6 @@ declare class AXPModuleModel {
|
|
|
452
731
|
getStatistics(): {
|
|
453
732
|
aggregateCount: number;
|
|
454
733
|
entityCount: number;
|
|
455
|
-
relationCount: number;
|
|
456
734
|
actionCount: number;
|
|
457
735
|
validationCount: number;
|
|
458
736
|
};
|
|
@@ -465,54 +743,27 @@ declare class AXPModuleModel {
|
|
|
465
743
|
}
|
|
466
744
|
|
|
467
745
|
/**
|
|
468
|
-
* Runtime model for
|
|
746
|
+
* Runtime model for a {@link AXPPropertyDefinition} with helper methods.
|
|
469
747
|
*/
|
|
470
|
-
declare class
|
|
748
|
+
declare class AXPPropertyModel {
|
|
471
749
|
readonly name: string;
|
|
472
|
-
readonly
|
|
473
|
-
readonly interface:
|
|
750
|
+
readonly title: string;
|
|
751
|
+
readonly interface: AXPInterfaceDefinitionValue;
|
|
474
752
|
readonly validations: AXPValidationRules;
|
|
475
|
-
readonly features:
|
|
753
|
+
readonly features: AXPPropertyFeatures;
|
|
476
754
|
readonly metadata?: AXPMetaData;
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
* Check if schema is for number data
|
|
484
|
-
*/
|
|
485
|
-
isNumber(): boolean;
|
|
486
|
-
/**
|
|
487
|
-
* Check if schema is for boolean data
|
|
488
|
-
*/
|
|
489
|
-
isBoolean(): boolean;
|
|
490
|
-
/**
|
|
491
|
-
* Check if schema is for date data
|
|
492
|
-
*/
|
|
493
|
-
isDate(): boolean;
|
|
494
|
-
/**
|
|
495
|
-
* Check if schema is for object data
|
|
496
|
-
*/
|
|
497
|
-
isObject(): boolean;
|
|
498
|
-
/**
|
|
499
|
-
* Check if schema is for array data
|
|
500
|
-
*/
|
|
501
|
-
isArray(): boolean;
|
|
502
|
-
/**
|
|
503
|
-
* Check if schema is for blob data
|
|
504
|
-
*/
|
|
505
|
-
isBlob(): boolean;
|
|
506
|
-
/**
|
|
507
|
-
* Get widget type
|
|
508
|
-
*/
|
|
509
|
-
getWidgetType(): string;
|
|
755
|
+
readonly description?: string;
|
|
756
|
+
readonly icon?: string;
|
|
757
|
+
readonly defaultValue?: unknown;
|
|
758
|
+
readonly disabled?: boolean;
|
|
759
|
+
readonly dataType: AXPDataType;
|
|
760
|
+
constructor(definition: AXPPropertyDefinition);
|
|
510
761
|
/**
|
|
511
762
|
* Get widget options
|
|
512
763
|
*/
|
|
513
764
|
getWidgetOptions(): AXPOptionsData | undefined;
|
|
514
765
|
/**
|
|
515
|
-
* Check if
|
|
766
|
+
* Check if the property is disabled
|
|
516
767
|
*/
|
|
517
768
|
isDisabled(): boolean;
|
|
518
769
|
/**
|
|
@@ -540,11 +791,11 @@ declare class AXPSchemaModel {
|
|
|
540
791
|
*/
|
|
541
792
|
isAuditable(): boolean;
|
|
542
793
|
/**
|
|
543
|
-
* Validate the
|
|
794
|
+
* Validate the property definition structure
|
|
544
795
|
*/
|
|
545
796
|
validate(): Promise<string[]>;
|
|
546
797
|
/**
|
|
547
|
-
* Get
|
|
798
|
+
* Get property capabilities
|
|
548
799
|
*/
|
|
549
800
|
getCapabilities(): {
|
|
550
801
|
searchable: boolean;
|
|
@@ -556,10 +807,9 @@ declare class AXPSchemaModel {
|
|
|
556
807
|
disabled: boolean;
|
|
557
808
|
};
|
|
558
809
|
/**
|
|
559
|
-
* Get
|
|
810
|
+
* Get property summary
|
|
560
811
|
*/
|
|
561
812
|
getSummary(): {
|
|
562
|
-
dataType: AXPSchemaDataType;
|
|
563
813
|
widget: string;
|
|
564
814
|
hasOptions: boolean;
|
|
565
815
|
hasMetadata: boolean;
|
|
@@ -569,30 +819,26 @@ declare class AXPSchemaModel {
|
|
|
569
819
|
/**
|
|
570
820
|
* Convert back to interface definition
|
|
571
821
|
*/
|
|
572
|
-
toDefinition():
|
|
822
|
+
toDefinition(): AXPPropertyDefinition;
|
|
573
823
|
}
|
|
574
824
|
|
|
575
825
|
/**
|
|
576
|
-
*
|
|
826
|
+
* Loads {@link AXPPropertyDefinition} instances on demand when not registered in {@link AXPPropertyRegistry}.
|
|
577
827
|
*/
|
|
578
|
-
interface
|
|
828
|
+
interface AXPPropertyLoader {
|
|
579
829
|
/**
|
|
580
830
|
* Optional priority for loader ordering. Higher numbers = higher priority.
|
|
581
831
|
* If not specified, uses registration order.
|
|
582
832
|
*/
|
|
583
833
|
readonly priority?: number;
|
|
584
834
|
/**
|
|
585
|
-
* Determines if this loader can handle the given
|
|
586
|
-
* @param schemaName The name of the schema to load
|
|
587
|
-
* @returns true if this loader can load the schema
|
|
835
|
+
* Determines if this loader can handle the given registered property name.
|
|
588
836
|
*/
|
|
589
|
-
canLoad(
|
|
837
|
+
canLoad(propertyName: string): boolean;
|
|
590
838
|
/**
|
|
591
|
-
* Loads the
|
|
592
|
-
* @param schemaName The name of the schema to load
|
|
593
|
-
* @returns Promise that resolves to the schema definition or null if not found
|
|
839
|
+
* Loads the property definition for the given name, or null if not found.
|
|
594
840
|
*/
|
|
595
|
-
load(
|
|
841
|
+
load(propertyName: string): Promise<AXPPropertyDefinition | null>;
|
|
596
842
|
}
|
|
597
843
|
|
|
598
844
|
/**
|
|
@@ -620,13 +866,13 @@ interface AXPSchemaLoader {
|
|
|
620
866
|
* }
|
|
621
867
|
* ```
|
|
622
868
|
*/
|
|
623
|
-
declare class
|
|
624
|
-
private
|
|
625
|
-
constructor(
|
|
869
|
+
declare class AXPPropertyMiddlewareContext {
|
|
870
|
+
private _definition;
|
|
871
|
+
constructor(definition: AXPPropertyDefinition);
|
|
626
872
|
/**
|
|
627
873
|
* Get the current schema definition (readonly access)
|
|
628
874
|
*/
|
|
629
|
-
get
|
|
875
|
+
get definition(): Readonly<AXPPropertyDefinition>;
|
|
630
876
|
/**
|
|
631
877
|
* Get the schema name for conditional logic
|
|
632
878
|
*/
|
|
@@ -635,7 +881,7 @@ declare class AXPSchemaMiddlewareContext {
|
|
|
635
881
|
* Set a default value for the widget
|
|
636
882
|
* @param defaultValue The default value to set
|
|
637
883
|
*/
|
|
638
|
-
withDefaultValue(defaultValue:
|
|
884
|
+
withDefaultValue(defaultValue: unknown): this;
|
|
639
885
|
/**
|
|
640
886
|
* Remove the default value from the widget
|
|
641
887
|
*/
|
|
@@ -668,7 +914,7 @@ declare class AXPSchemaMiddlewareContext {
|
|
|
668
914
|
* Set or merge widget options
|
|
669
915
|
* @param options Object containing widget-specific options to merge
|
|
670
916
|
*/
|
|
671
|
-
withWidgetOptions(options:
|
|
917
|
+
withWidgetOptions(options: Record<string, unknown>): this;
|
|
672
918
|
/**
|
|
673
919
|
* Remove a specific widget option by key
|
|
674
920
|
* @param optionKey The key of the option to remove
|
|
@@ -711,11 +957,6 @@ declare class AXPSchemaMiddlewareContext {
|
|
|
711
957
|
* @param key The metadata key to remove
|
|
712
958
|
*/
|
|
713
959
|
removeMetadata(key: string): this;
|
|
714
|
-
/**
|
|
715
|
-
* Set the data type for this schema
|
|
716
|
-
* @param dataType The new data type (string, number, boolean, etc.)
|
|
717
|
-
*/
|
|
718
|
-
withDataType(dataType: AXPSchemaDataType): this;
|
|
719
960
|
/**
|
|
720
961
|
* Set the disabled state of the widget
|
|
721
962
|
* @param isDisabled Whether the widget should be disabled
|
|
@@ -734,15 +975,16 @@ declare class AXPSchemaMiddlewareContext {
|
|
|
734
975
|
}
|
|
735
976
|
|
|
736
977
|
/**
|
|
737
|
-
* Middleware
|
|
738
|
-
*
|
|
978
|
+
* Middleware that can transform a property definition during resolution.
|
|
979
|
+
*
|
|
980
|
+
* @param context - Mutable {@link AXPPropertyMiddlewareContext} wrapping a cloned {@link AXPPropertyDefinition}.
|
|
739
981
|
*/
|
|
740
|
-
type
|
|
982
|
+
type AXPPropertyMiddleware = (context: AXPPropertyMiddlewareContext) => void | Promise<void>;
|
|
741
983
|
|
|
742
984
|
/**
|
|
743
985
|
* Options for registering a schema with additional metadata and middleware
|
|
744
986
|
*/
|
|
745
|
-
interface
|
|
987
|
+
interface AXPPropertyRegistrationOptions {
|
|
746
988
|
/** Optional description for documentation purposes */
|
|
747
989
|
description?: string;
|
|
748
990
|
/** Tags for categorizing and finding schemas */
|
|
@@ -750,18 +992,18 @@ interface AXPSchemaRegistrationOptions {
|
|
|
750
992
|
/** Version information for schema evolution */
|
|
751
993
|
version?: string;
|
|
752
994
|
/** Schema-specific middleware that applies only to this schema */
|
|
753
|
-
middleware?:
|
|
995
|
+
middleware?: AXPPropertyMiddleware[];
|
|
754
996
|
}
|
|
755
997
|
/**
|
|
756
998
|
* Internal representation of a registered schema with metadata
|
|
757
999
|
*/
|
|
758
|
-
interface
|
|
1000
|
+
interface AXPRegisteredProperty {
|
|
759
1001
|
/** Unique identifier for the schema */
|
|
760
1002
|
name: string;
|
|
761
1003
|
/** The actual schema definition */
|
|
762
|
-
definition:
|
|
1004
|
+
definition: AXPPropertyDefinition;
|
|
763
1005
|
/** Registration options and metadata */
|
|
764
|
-
options:
|
|
1006
|
+
options: AXPPropertyRegistrationOptions;
|
|
765
1007
|
/** Timestamp when the schema was registered */
|
|
766
1008
|
registeredAt: Date;
|
|
767
1009
|
}
|
|
@@ -774,8 +1016,8 @@ interface AXPRegisteredSchema {
|
|
|
774
1016
|
* - On-demand schema loading
|
|
775
1017
|
* - Caching and performance optimization
|
|
776
1018
|
*/
|
|
777
|
-
declare class
|
|
778
|
-
private readonly
|
|
1019
|
+
declare class AXPPropertyRegistry {
|
|
1020
|
+
private readonly _registrations;
|
|
779
1021
|
private readonly _globalMiddleware;
|
|
780
1022
|
private readonly _modelCache;
|
|
781
1023
|
private _loaders;
|
|
@@ -783,14 +1025,14 @@ declare class AXPSchemaRegistry {
|
|
|
783
1025
|
/**
|
|
784
1026
|
* Register a schema definition with optional metadata and middleware
|
|
785
1027
|
*/
|
|
786
|
-
register(definition:
|
|
1028
|
+
register(definition: AXPPropertyDefinition, options?: AXPPropertyRegistrationOptions): void;
|
|
787
1029
|
/**
|
|
788
1030
|
* Register multiple schemas at once for batch operations
|
|
789
1031
|
*/
|
|
790
|
-
registerBatch(
|
|
1032
|
+
registerBatch(entries: {
|
|
791
1033
|
name: string;
|
|
792
|
-
definition:
|
|
793
|
-
options?:
|
|
1034
|
+
definition: AXPPropertyDefinition;
|
|
1035
|
+
options?: AXPPropertyRegistrationOptions;
|
|
794
1036
|
}[]): void;
|
|
795
1037
|
/**
|
|
796
1038
|
* Remove a schema from the registry
|
|
@@ -804,20 +1046,20 @@ declare class AXPSchemaRegistry {
|
|
|
804
1046
|
* Resolve a schema by name with full middleware processing and caching.
|
|
805
1047
|
* Supports on-demand loading if schema is not registered.
|
|
806
1048
|
*/
|
|
807
|
-
resolve(name: string): Promise<
|
|
1049
|
+
resolve(name: string): Promise<AXPPropertyModel>;
|
|
808
1050
|
/**
|
|
809
1051
|
* Synchronous resolution without middleware processing.
|
|
810
1052
|
* Use only when middleware is not needed for performance.
|
|
811
1053
|
*/
|
|
812
|
-
resolveSync(name: string):
|
|
1054
|
+
resolveSync(name: string): AXPPropertyModel;
|
|
813
1055
|
/**
|
|
814
1056
|
* Add global middleware that applies to all schema resolutions
|
|
815
1057
|
*/
|
|
816
|
-
addGlobalMiddleware(middleware:
|
|
1058
|
+
addGlobalMiddleware(middleware: AXPPropertyMiddleware): void;
|
|
817
1059
|
/**
|
|
818
1060
|
* Remove specific global middleware
|
|
819
1061
|
*/
|
|
820
|
-
removeGlobalMiddleware(middleware:
|
|
1062
|
+
removeGlobalMiddleware(middleware: AXPPropertyMiddleware): boolean;
|
|
821
1063
|
/**
|
|
822
1064
|
* Clear all global middleware
|
|
823
1065
|
*/
|
|
@@ -825,7 +1067,7 @@ declare class AXPSchemaRegistry {
|
|
|
825
1067
|
/**
|
|
826
1068
|
* Add a schema loader for on-demand loading
|
|
827
1069
|
*/
|
|
828
|
-
addLoader(loader: Type<
|
|
1070
|
+
addLoader(loader: Type<AXPPropertyLoader>): void;
|
|
829
1071
|
/**
|
|
830
1072
|
* Get all registered schema names
|
|
831
1073
|
*/
|
|
@@ -833,29 +1075,29 @@ declare class AXPSchemaRegistry {
|
|
|
833
1075
|
/**
|
|
834
1076
|
* Get detailed registration information for a schema
|
|
835
1077
|
*/
|
|
836
|
-
|
|
1078
|
+
getRegisteredProperty(name: string): AXPRegisteredProperty | undefined;
|
|
837
1079
|
/**
|
|
838
|
-
* Get all registered
|
|
1080
|
+
* Get all registered properties with their metadata
|
|
839
1081
|
*/
|
|
840
|
-
|
|
1082
|
+
getAllRegisteredProperties(): AXPRegisteredProperty[];
|
|
841
1083
|
/**
|
|
842
|
-
* Find
|
|
1084
|
+
* Find registered properties by tag for categorization
|
|
843
1085
|
*/
|
|
844
|
-
findByTag(tag: string):
|
|
1086
|
+
findByTag(tag: string): AXPRegisteredProperty[];
|
|
845
1087
|
/**
|
|
846
|
-
* Find
|
|
1088
|
+
* Find registered properties by widget type for widget-specific operations
|
|
847
1089
|
*/
|
|
848
|
-
findByWidget(widgetType: string):
|
|
1090
|
+
findByWidget(widgetType: string): AXPRegisteredProperty[];
|
|
849
1091
|
/**
|
|
850
1092
|
* Get comprehensive registry statistics
|
|
851
1093
|
*/
|
|
852
1094
|
getStatistics(): {
|
|
853
|
-
|
|
1095
|
+
propertyCount: number;
|
|
854
1096
|
globalMiddlewareCount: number;
|
|
855
|
-
|
|
1097
|
+
propertiesByWidget: {
|
|
856
1098
|
[widget: string]: number;
|
|
857
1099
|
};
|
|
858
|
-
|
|
1100
|
+
propertiesByTag: {
|
|
859
1101
|
[tag: string]: number;
|
|
860
1102
|
};
|
|
861
1103
|
};
|
|
@@ -883,124 +1125,123 @@ declare class AXPSchemaRegistry {
|
|
|
883
1125
|
* Create a deep clone of a schema definition to prevent mutations
|
|
884
1126
|
*/
|
|
885
1127
|
private cloneDefinition;
|
|
886
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
887
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<
|
|
1128
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPPropertyRegistry, never>;
|
|
1129
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPPropertyRegistry>;
|
|
888
1130
|
}
|
|
889
1131
|
|
|
890
1132
|
/**
|
|
891
|
-
* High-level facade
|
|
1133
|
+
* High-level facade for registered property definitions ({@link AXPPropertyDefinition}).
|
|
892
1134
|
*
|
|
893
|
-
*
|
|
894
|
-
* business logic and convenience methods for common operations.
|
|
1135
|
+
* Wraps {@link AXPPropertyRegistry} with convenience methods for resolution and discovery.
|
|
895
1136
|
*/
|
|
896
|
-
declare class
|
|
1137
|
+
declare class AXPPropertyService {
|
|
897
1138
|
private readonly registry;
|
|
898
1139
|
/**
|
|
899
|
-
* Register a
|
|
1140
|
+
* Register a property definition with optional configuration
|
|
900
1141
|
*/
|
|
901
|
-
register(definition:
|
|
1142
|
+
register(definition: AXPPropertyDefinition, options?: AXPPropertyRegistrationOptions): void;
|
|
902
1143
|
/**
|
|
903
|
-
* Register multiple
|
|
1144
|
+
* Register multiple property definitions at once
|
|
904
1145
|
*/
|
|
905
|
-
registerBatch(
|
|
1146
|
+
registerBatch(entries: {
|
|
906
1147
|
name: string;
|
|
907
|
-
definition:
|
|
908
|
-
options?:
|
|
1148
|
+
definition: AXPPropertyDefinition;
|
|
1149
|
+
options?: AXPPropertyRegistrationOptions;
|
|
909
1150
|
}[]): void;
|
|
910
1151
|
/**
|
|
911
|
-
* Remove a
|
|
1152
|
+
* Remove a property definition from the registry
|
|
912
1153
|
*/
|
|
913
1154
|
unregister(name: string): boolean;
|
|
914
1155
|
/**
|
|
915
|
-
* Check if a
|
|
1156
|
+
* Check if a property definition is registered by name
|
|
916
1157
|
*/
|
|
917
1158
|
isRegistered(name: string): boolean;
|
|
918
1159
|
/**
|
|
919
|
-
* Get all registered
|
|
1160
|
+
* Get all registered property names
|
|
920
1161
|
*/
|
|
921
1162
|
getRegisteredNames(): string[];
|
|
922
1163
|
/**
|
|
923
|
-
* Clear all
|
|
1164
|
+
* Clear all registrations and reset the registry
|
|
924
1165
|
*/
|
|
925
1166
|
clear(): void;
|
|
926
1167
|
/**
|
|
927
|
-
* Resolve a
|
|
1168
|
+
* Resolve a registered property by name with full middleware processing
|
|
928
1169
|
*/
|
|
929
|
-
resolve(name: string): Promise<
|
|
1170
|
+
resolve(name: string): Promise<AXPPropertyModel>;
|
|
930
1171
|
/**
|
|
931
|
-
* Resolve
|
|
1172
|
+
* Resolve synchronously without middleware (for performance)
|
|
932
1173
|
*/
|
|
933
|
-
resolveSync(name: string):
|
|
1174
|
+
resolveSync(name: string): AXPPropertyModel;
|
|
934
1175
|
/**
|
|
935
|
-
* Resolve multiple
|
|
1176
|
+
* Resolve multiple registered properties for form building and batch operations
|
|
936
1177
|
*/
|
|
937
1178
|
resolveMultiple(fieldConfigs: {
|
|
938
1179
|
name: string;
|
|
939
|
-
|
|
1180
|
+
propertyName: string;
|
|
940
1181
|
}[]): Promise<{
|
|
941
1182
|
name: string;
|
|
942
|
-
|
|
1183
|
+
property: AXPPropertyModel;
|
|
943
1184
|
}[]>;
|
|
944
1185
|
/**
|
|
945
|
-
* Add global middleware that applies to all
|
|
1186
|
+
* Add global middleware that applies to all property resolutions
|
|
946
1187
|
*/
|
|
947
|
-
addGlobalMiddleware(middleware:
|
|
1188
|
+
addGlobalMiddleware(middleware: AXPPropertyMiddleware): void;
|
|
948
1189
|
/**
|
|
949
1190
|
* Remove specific global middleware
|
|
950
1191
|
*/
|
|
951
|
-
removeGlobalMiddleware(middleware:
|
|
1192
|
+
removeGlobalMiddleware(middleware: AXPPropertyMiddleware): boolean;
|
|
952
1193
|
/**
|
|
953
1194
|
* Clear all global middleware
|
|
954
1195
|
*/
|
|
955
1196
|
clearGlobalMiddleware(): void;
|
|
956
1197
|
/**
|
|
957
|
-
* Get detailed information about a registered
|
|
1198
|
+
* Get detailed information about a registered property definition
|
|
958
1199
|
*/
|
|
959
|
-
|
|
1200
|
+
getRegisteredProperty(name: string): AXPRegisteredProperty | undefined;
|
|
960
1201
|
/**
|
|
961
|
-
* Get all registered
|
|
1202
|
+
* Get all registered property definitions with their metadata
|
|
962
1203
|
*/
|
|
963
|
-
|
|
1204
|
+
getAllRegisteredProperties(): AXPRegisteredProperty[];
|
|
964
1205
|
/**
|
|
965
|
-
* Find
|
|
1206
|
+
* Find registered properties by tag for categorization and grouping
|
|
966
1207
|
*/
|
|
967
|
-
findByTag(tag: string):
|
|
1208
|
+
findByTag(tag: string): AXPRegisteredProperty[];
|
|
968
1209
|
/**
|
|
969
|
-
* Find
|
|
1210
|
+
* Find registered properties by widget type for widget-specific operations
|
|
970
1211
|
*/
|
|
971
|
-
findByWidget(widgetType: string):
|
|
1212
|
+
findByWidget(widgetType: string): AXPRegisteredProperty[];
|
|
972
1213
|
/**
|
|
973
1214
|
* Get comprehensive registry statistics and analytics
|
|
974
1215
|
*/
|
|
975
1216
|
getStatistics(): {
|
|
976
1217
|
mostUsedWidgets: string[];
|
|
977
1218
|
mostUsedTags: string[];
|
|
978
|
-
|
|
1219
|
+
propertyCount: number;
|
|
979
1220
|
globalMiddlewareCount: number;
|
|
980
|
-
|
|
1221
|
+
propertiesByWidget: {
|
|
981
1222
|
[widget: string]: number;
|
|
982
1223
|
};
|
|
983
|
-
|
|
1224
|
+
propertiesByTag: {
|
|
984
1225
|
[tag: string]: number;
|
|
985
1226
|
};
|
|
986
1227
|
};
|
|
987
1228
|
/**
|
|
988
|
-
* Validate that all referenced
|
|
1229
|
+
* Validate that all referenced property names exist in the registry
|
|
989
1230
|
*/
|
|
990
|
-
|
|
1231
|
+
validatePropertyReferences(propertyNames: string[]): {
|
|
991
1232
|
valid: boolean;
|
|
992
|
-
|
|
1233
|
+
missingPropertyNames: string[];
|
|
993
1234
|
};
|
|
994
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
995
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<
|
|
1235
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPPropertyService, never>;
|
|
1236
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPPropertyService>;
|
|
996
1237
|
}
|
|
997
1238
|
|
|
998
1239
|
/**
|
|
999
1240
|
* Configuration for a schema loader with optional priority setting
|
|
1000
1241
|
*/
|
|
1001
|
-
interface
|
|
1242
|
+
interface AXPPropertyLoaderConfig {
|
|
1002
1243
|
/** The loader class to instantiate */
|
|
1003
|
-
loader: Type<
|
|
1244
|
+
loader: Type<AXPPropertyLoader>;
|
|
1004
1245
|
/** Optional priority for loader ordering (higher = higher priority) */
|
|
1005
1246
|
priority?: number;
|
|
1006
1247
|
}
|
|
@@ -1020,28 +1261,28 @@ interface AXPSchemaLoaderConfig {
|
|
|
1020
1261
|
* @example
|
|
1021
1262
|
* ```typescript
|
|
1022
1263
|
* // Simple loader registration
|
|
1023
|
-
*
|
|
1264
|
+
* providePropertyLoaders([
|
|
1024
1265
|
* HttpSchemaLoader,
|
|
1025
1266
|
* FileSystemSchemaLoader
|
|
1026
1267
|
* ])
|
|
1027
1268
|
*
|
|
1028
1269
|
* // With priority configuration
|
|
1029
|
-
*
|
|
1270
|
+
* providePropertyLoaders([
|
|
1030
1271
|
* { loader: HttpSchemaLoader, priority: 10 },
|
|
1031
1272
|
* { loader: FileSystemSchemaLoader, priority: 5 }
|
|
1032
1273
|
* ])
|
|
1033
1274
|
* ```
|
|
1034
1275
|
*/
|
|
1035
|
-
declare function
|
|
1276
|
+
declare function providePropertyLoaders(loaders: Array<Type<AXPPropertyLoader> | AXPPropertyLoaderConfig>): EnvironmentProviders;
|
|
1036
1277
|
|
|
1037
1278
|
/**
|
|
1038
1279
|
* Schema entry for registration containing definition and optional metadata
|
|
1039
1280
|
*/
|
|
1040
|
-
interface
|
|
1281
|
+
interface AXPPropertyEntry {
|
|
1041
1282
|
/** The schema definition to register */
|
|
1042
|
-
definition:
|
|
1283
|
+
definition: AXPPropertyDefinition;
|
|
1043
1284
|
/** Optional registration options and metadata */
|
|
1044
|
-
options?:
|
|
1285
|
+
options?: AXPPropertyRegistrationOptions;
|
|
1045
1286
|
}
|
|
1046
1287
|
/**
|
|
1047
1288
|
* Provide schema setups for registration during application bootstrap.
|
|
@@ -1054,7 +1295,7 @@ interface AXPSchemaEntry {
|
|
|
1054
1295
|
*
|
|
1055
1296
|
* @example
|
|
1056
1297
|
* ```typescript
|
|
1057
|
-
*
|
|
1298
|
+
* providePropertySetups([
|
|
1058
1299
|
* {
|
|
1059
1300
|
* definition: emailSchema,
|
|
1060
1301
|
* options: {
|
|
@@ -1069,7 +1310,7 @@ interface AXPSchemaEntry {
|
|
|
1069
1310
|
* ])
|
|
1070
1311
|
* ```
|
|
1071
1312
|
*/
|
|
1072
|
-
declare function
|
|
1313
|
+
declare function providePropertySetups(entries: AXPPropertyEntry[]): EnvironmentProviders;
|
|
1073
1314
|
/**
|
|
1074
1315
|
* Convenience function to provide a single schema setup.
|
|
1075
1316
|
*
|
|
@@ -1082,13 +1323,13 @@ declare function provideSchemaSetups(schemas: AXPSchemaEntry[]): EnvironmentProv
|
|
|
1082
1323
|
*
|
|
1083
1324
|
* @example
|
|
1084
1325
|
* ```typescript
|
|
1085
|
-
*
|
|
1326
|
+
* provideProperty(emailSchema, {
|
|
1086
1327
|
* tags: ['user', 'contact'],
|
|
1087
1328
|
* description: 'User email field'
|
|
1088
1329
|
* })
|
|
1089
1330
|
* ```
|
|
1090
1331
|
*/
|
|
1091
|
-
declare function
|
|
1332
|
+
declare function provideProperty(definition: AXPPropertyDefinition, options?: AXPPropertyRegistrationOptions): EnvironmentProviders;
|
|
1092
1333
|
/**
|
|
1093
1334
|
* Provide schema setups from a factory function for dynamic registration.
|
|
1094
1335
|
*
|
|
@@ -1100,7 +1341,7 @@ declare function provideSchema(definition: AXPSchemaDefinition, options?: AXPSch
|
|
|
1100
1341
|
*
|
|
1101
1342
|
* @example
|
|
1102
1343
|
* ```typescript
|
|
1103
|
-
*
|
|
1344
|
+
* providePropertiesFromFactory(async () => {
|
|
1104
1345
|
* const config = await loadConfiguration();
|
|
1105
1346
|
* return config.schemas.map(schema => ({
|
|
1106
1347
|
* definition: schema,
|
|
@@ -1109,14 +1350,14 @@ declare function provideSchema(definition: AXPSchemaDefinition, options?: AXPSch
|
|
|
1109
1350
|
* })
|
|
1110
1351
|
* ```
|
|
1111
1352
|
*/
|
|
1112
|
-
declare function
|
|
1353
|
+
declare function providePropertiesFromFactory(factory: () => AXPPropertyEntry[] | Promise<AXPPropertyEntry[]>): EnvironmentProviders;
|
|
1113
1354
|
|
|
1114
1355
|
/**
|
|
1115
1356
|
* Middleware entry for registration - can be either a simple function or targeted middleware
|
|
1116
1357
|
*/
|
|
1117
|
-
type
|
|
1358
|
+
type AXPPropertyMiddlewareEntry = AXPPropertyMiddleware | {
|
|
1118
1359
|
target: string | RegExp;
|
|
1119
|
-
middleware:
|
|
1360
|
+
middleware: AXPPropertyMiddleware;
|
|
1120
1361
|
};
|
|
1121
1362
|
/**
|
|
1122
1363
|
* Provide schema middleware for registration in the application.
|
|
@@ -1130,16 +1371,16 @@ type AXPSchemaMiddlewareEntry = AXPSchemaMiddleware | {
|
|
|
1130
1371
|
* @example
|
|
1131
1372
|
* ```typescript
|
|
1132
1373
|
* // Global middleware
|
|
1133
|
-
*
|
|
1374
|
+
* providePropertyMiddleware([
|
|
1134
1375
|
* (context) => {
|
|
1135
|
-
* if (context.
|
|
1376
|
+
* if (context.definition.dataType === 'string') {
|
|
1136
1377
|
* context.searchable(true);
|
|
1137
1378
|
* }
|
|
1138
1379
|
* }
|
|
1139
1380
|
* ])
|
|
1140
1381
|
*
|
|
1141
1382
|
* // Targeted middleware
|
|
1142
|
-
*
|
|
1383
|
+
* providePropertyMiddleware([
|
|
1143
1384
|
* {
|
|
1144
1385
|
* target: /^user_/,
|
|
1145
1386
|
* middleware: (context) => context.withMetadata({ category: 'user' })
|
|
@@ -1147,44 +1388,32 @@ type AXPSchemaMiddlewareEntry = AXPSchemaMiddleware | {
|
|
|
1147
1388
|
* ])
|
|
1148
1389
|
* ```
|
|
1149
1390
|
*/
|
|
1150
|
-
declare function
|
|
1391
|
+
declare function providePropertyMiddleware(middleware: AXPPropertyMiddlewareEntry[]): EnvironmentProviders;
|
|
1151
1392
|
|
|
1152
1393
|
/**
|
|
1153
|
-
*
|
|
1154
|
-
*
|
|
1155
|
-
* Used for targeted middleware that applies only to schemas matching
|
|
1156
|
-
* specific patterns (name or regex). This enables fine-grained control
|
|
1157
|
-
* over which schemas receive which middleware.
|
|
1394
|
+
* Targeted middleware extension (name or regex) for property resolution.
|
|
1158
1395
|
*/
|
|
1159
|
-
declare const
|
|
1396
|
+
declare const AXP_PROPERTY_EXTENSION: InjectionToken<{
|
|
1160
1397
|
target: string | RegExp;
|
|
1161
|
-
middleware:
|
|
1398
|
+
middleware: AXPPropertyMiddleware;
|
|
1162
1399
|
}>;
|
|
1163
1400
|
/**
|
|
1164
|
-
*
|
|
1165
|
-
*
|
|
1166
|
-
* Used during application bootstrap to register schemas that are
|
|
1167
|
-
* known at build time. Multiple providers can use this token to
|
|
1168
|
-
* contribute schemas to the registry.
|
|
1401
|
+
* Bootstrap hook: register property definitions known at build time.
|
|
1169
1402
|
*/
|
|
1170
|
-
declare const
|
|
1403
|
+
declare const AXP_PROPERTY_SETUP: InjectionToken<void>;
|
|
1171
1404
|
/**
|
|
1172
|
-
*
|
|
1173
|
-
*
|
|
1174
|
-
* Used during application bootstrap to register global middleware
|
|
1175
|
-
* that applies to all schema resolutions. This enables centralized
|
|
1176
|
-
* schema processing logic.
|
|
1405
|
+
* Bootstrap hook: register global middleware for every property resolution.
|
|
1177
1406
|
*/
|
|
1178
|
-
declare const
|
|
1407
|
+
declare const AXP_PROPERTY_MIDDLEWARE_SETUP: InjectionToken<void>;
|
|
1179
1408
|
/**
|
|
1180
|
-
*
|
|
1181
|
-
*
|
|
1182
|
-
* Used during application bootstrap to register schema loaders
|
|
1183
|
-
* that can provide schemas on-demand when they're not found in
|
|
1184
|
-
* the registry.
|
|
1409
|
+
* Bootstrap hook: register on-demand property loaders.
|
|
1185
1410
|
*/
|
|
1186
|
-
declare const
|
|
1411
|
+
declare const AXP_PROPERTY_LOADER_SETUP: InjectionToken<void>;
|
|
1187
1412
|
|
|
1413
|
+
/**
|
|
1414
|
+
* Strips entity-only fields so the payload matches {@link AXPPropertyDefinition}.
|
|
1415
|
+
*/
|
|
1416
|
+
declare function toPropertyDefinition(def: AXPEntityPropertyDefinition): AXPPropertyDefinition;
|
|
1188
1417
|
/**
|
|
1189
1418
|
* Runtime model for entity field definitions with parent references and helper methods
|
|
1190
1419
|
*/
|
|
@@ -1194,13 +1423,16 @@ declare class AXPEntityFieldModel {
|
|
|
1194
1423
|
readonly description?: string;
|
|
1195
1424
|
readonly validations?: AXPValidationRules;
|
|
1196
1425
|
readonly actions?: AXPDomainAction[];
|
|
1197
|
-
readonly
|
|
1198
|
-
readonly defaultValue?:
|
|
1199
|
-
|
|
1200
|
-
readonly
|
|
1426
|
+
readonly fieldFeatures?: AXPEntityPropertyFeatures;
|
|
1427
|
+
readonly defaultValue?: unknown;
|
|
1428
|
+
/** Resolved property definition model (interface, validations, features). */
|
|
1429
|
+
readonly property: AXPPropertyModel;
|
|
1430
|
+
/** Same as entity field name; aligns with registered property definition name when applicable. */
|
|
1431
|
+
readonly propertyName: string;
|
|
1201
1432
|
readonly parent: any;
|
|
1202
|
-
readonly
|
|
1203
|
-
|
|
1433
|
+
readonly propertyService: AXPPropertyService;
|
|
1434
|
+
private readonly entityPropertyDefinition;
|
|
1435
|
+
constructor(definition: AXPEntityPropertyDefinition, parent: any, propertyService: AXPPropertyService);
|
|
1204
1436
|
/**
|
|
1205
1437
|
* Check if field is nullable
|
|
1206
1438
|
*/
|
|
@@ -1238,17 +1470,17 @@ declare class AXPEntityFieldModel {
|
|
|
1238
1470
|
*/
|
|
1239
1471
|
isAuditable(): boolean;
|
|
1240
1472
|
/**
|
|
1241
|
-
*
|
|
1473
|
+
* Registered property name (same as entity field name in the embedded model).
|
|
1242
1474
|
*/
|
|
1243
|
-
|
|
1475
|
+
getPropertyName(): string;
|
|
1244
1476
|
/**
|
|
1245
|
-
*
|
|
1477
|
+
* Registration metadata when this field's definition name is registered; otherwise embedded summary.
|
|
1246
1478
|
*/
|
|
1247
|
-
|
|
1479
|
+
getPropertyInfo(): unknown;
|
|
1248
1480
|
/**
|
|
1249
|
-
*
|
|
1481
|
+
* Rebuild the property model from embedded definition (e.g. after definition updates).
|
|
1250
1482
|
*/
|
|
1251
|
-
|
|
1483
|
+
refreshProperty(): void;
|
|
1252
1484
|
/**
|
|
1253
1485
|
* Get parent entity
|
|
1254
1486
|
*/
|
|
@@ -1275,7 +1507,7 @@ declare class AXPEntityFieldModel {
|
|
|
1275
1507
|
getStatistics(): {
|
|
1276
1508
|
hasValidations: boolean;
|
|
1277
1509
|
hasActions: boolean;
|
|
1278
|
-
|
|
1510
|
+
hasFieldFeatures: boolean;
|
|
1279
1511
|
hasDefaultValue: boolean;
|
|
1280
1512
|
validationCount: number;
|
|
1281
1513
|
actionCount: number;
|
|
@@ -1295,7 +1527,7 @@ declare class AXPEntityFieldModel {
|
|
|
1295
1527
|
/**
|
|
1296
1528
|
* Convert back to interface definition
|
|
1297
1529
|
*/
|
|
1298
|
-
toDefinition():
|
|
1530
|
+
toDefinition(): AXPEntityPropertyDefinition;
|
|
1299
1531
|
}
|
|
1300
1532
|
|
|
1301
1533
|
/**
|
|
@@ -1307,8 +1539,8 @@ declare class AXPEntityModel {
|
|
|
1307
1539
|
readonly fields: AXPEntityFieldModel[];
|
|
1308
1540
|
readonly type: AXPEntityType;
|
|
1309
1541
|
readonly parent: any;
|
|
1310
|
-
readonly
|
|
1311
|
-
constructor(definition: AXPEntityDefinition, parent: any,
|
|
1542
|
+
readonly propertyService: AXPPropertyService;
|
|
1543
|
+
constructor(definition: AXPEntityDefinition, parent: any, propertyService: AXPPropertyService);
|
|
1312
1544
|
/**
|
|
1313
1545
|
* Find field by name
|
|
1314
1546
|
*/
|
|
@@ -1317,10 +1549,6 @@ declare class AXPEntityModel {
|
|
|
1317
1549
|
* Get all fields
|
|
1318
1550
|
*/
|
|
1319
1551
|
getAllFields(): AXPEntityFieldModel[];
|
|
1320
|
-
/**
|
|
1321
|
-
* Get fields by data type
|
|
1322
|
-
*/
|
|
1323
|
-
getFieldsByType(dataType: string): AXPEntityFieldModel[];
|
|
1324
1552
|
/**
|
|
1325
1553
|
* Get required fields
|
|
1326
1554
|
*/
|
|
@@ -1386,6 +1614,110 @@ declare class AXPEntityModel {
|
|
|
1386
1614
|
toDefinition(): AXPEntityDefinition;
|
|
1387
1615
|
}
|
|
1388
1616
|
|
|
1617
|
+
/**
|
|
1618
|
+
* Runtime model for standalone relation definitions.
|
|
1619
|
+
* Relations live in their own collection; join when needed.
|
|
1620
|
+
*/
|
|
1621
|
+
declare class AXPRelationModel {
|
|
1622
|
+
readonly type: AXPRelationshipCardinality;
|
|
1623
|
+
readonly kind: AXPRelationshipKind;
|
|
1624
|
+
readonly target: {
|
|
1625
|
+
aggregate: string;
|
|
1626
|
+
entity: string;
|
|
1627
|
+
key: string;
|
|
1628
|
+
};
|
|
1629
|
+
readonly source: {
|
|
1630
|
+
aggregate: string;
|
|
1631
|
+
entity: string;
|
|
1632
|
+
key: string;
|
|
1633
|
+
};
|
|
1634
|
+
readonly isRequired: boolean;
|
|
1635
|
+
readonly parent: any;
|
|
1636
|
+
constructor(definition: AXPRelationDefinition, parent: any);
|
|
1637
|
+
/**
|
|
1638
|
+
* Check if relation is one-to-one
|
|
1639
|
+
*/
|
|
1640
|
+
isOneToOne(): boolean;
|
|
1641
|
+
/**
|
|
1642
|
+
* Check if relation is one-to-many
|
|
1643
|
+
*/
|
|
1644
|
+
isOneToMany(): boolean;
|
|
1645
|
+
/**
|
|
1646
|
+
* Check if relation is many-to-many
|
|
1647
|
+
*/
|
|
1648
|
+
isManyToMany(): boolean;
|
|
1649
|
+
/**
|
|
1650
|
+
* Check if relation is association
|
|
1651
|
+
*/
|
|
1652
|
+
isAssociation(): boolean;
|
|
1653
|
+
/**
|
|
1654
|
+
* Check if relation is composition
|
|
1655
|
+
*/
|
|
1656
|
+
isComposition(): boolean;
|
|
1657
|
+
/**
|
|
1658
|
+
* Check if relation is aggregation
|
|
1659
|
+
*/
|
|
1660
|
+
isAggregation(): boolean;
|
|
1661
|
+
/**
|
|
1662
|
+
* Get parent aggregate
|
|
1663
|
+
*/
|
|
1664
|
+
getAggregate(): any;
|
|
1665
|
+
/**
|
|
1666
|
+
* Get parent module
|
|
1667
|
+
*/
|
|
1668
|
+
getModule(): any;
|
|
1669
|
+
/**
|
|
1670
|
+
* Get full path (module.aggregate.relation)
|
|
1671
|
+
*/
|
|
1672
|
+
getPath(): string;
|
|
1673
|
+
/**
|
|
1674
|
+
* Get relation description
|
|
1675
|
+
*/
|
|
1676
|
+
getDescription(): string;
|
|
1677
|
+
/**
|
|
1678
|
+
* Get cardinality description
|
|
1679
|
+
*/
|
|
1680
|
+
getCardinalityDescription(): string;
|
|
1681
|
+
/**
|
|
1682
|
+
* Get kind description
|
|
1683
|
+
*/
|
|
1684
|
+
getKindDescription(): string;
|
|
1685
|
+
/**
|
|
1686
|
+
* Get relation summary
|
|
1687
|
+
*/
|
|
1688
|
+
getSummary(): string;
|
|
1689
|
+
/**
|
|
1690
|
+
* Validate the relation structure
|
|
1691
|
+
*/
|
|
1692
|
+
validate(): string[];
|
|
1693
|
+
/**
|
|
1694
|
+
* Get relation characteristics
|
|
1695
|
+
*/
|
|
1696
|
+
getCharacteristics(): {
|
|
1697
|
+
type: string;
|
|
1698
|
+
kind: string;
|
|
1699
|
+
required: boolean;
|
|
1700
|
+
isOwning: boolean;
|
|
1701
|
+
isNavigable: boolean;
|
|
1702
|
+
};
|
|
1703
|
+
/**
|
|
1704
|
+
* Check if relation involves entity
|
|
1705
|
+
*/
|
|
1706
|
+
involvesEntity(entityName: string): boolean;
|
|
1707
|
+
/**
|
|
1708
|
+
* Check if relation targets aggregate
|
|
1709
|
+
*/
|
|
1710
|
+
targetsAggregate(aggregateName: string): boolean;
|
|
1711
|
+
/**
|
|
1712
|
+
* Get the other entity in the relation
|
|
1713
|
+
*/
|
|
1714
|
+
getOtherEntity(entityName: string): string | null;
|
|
1715
|
+
/**
|
|
1716
|
+
* Convert back to interface definition (AXPRelationDefinition with full source/target)
|
|
1717
|
+
*/
|
|
1718
|
+
toDefinition(): AXPRelationDefinition;
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1389
1721
|
/**
|
|
1390
1722
|
* Helper utility class for working with module models
|
|
1391
1723
|
*
|
|
@@ -1428,9 +1760,9 @@ declare class AXPModuleHelper {
|
|
|
1428
1760
|
*/
|
|
1429
1761
|
static findFieldsWithDefaultValues(module: AXPModuleModel): AXPEntityFieldModel[];
|
|
1430
1762
|
/**
|
|
1431
|
-
* @deprecated Use AXPDomainService with
|
|
1763
|
+
* @deprecated Use AXPDomainService with registered property name queries instead
|
|
1432
1764
|
*/
|
|
1433
|
-
static
|
|
1765
|
+
static findFieldsByRegisteredPropertyName(module: AXPModuleModel, propertyName: string): AXPEntityFieldModel[];
|
|
1434
1766
|
/**
|
|
1435
1767
|
* @deprecated Use module.validate() method instead
|
|
1436
1768
|
*/
|
|
@@ -1575,7 +1907,7 @@ declare class AXPDomainRegistry {
|
|
|
1575
1907
|
private readonly _aggregateMiddleware;
|
|
1576
1908
|
private readonly _entityMiddleware;
|
|
1577
1909
|
private _loaders;
|
|
1578
|
-
private readonly
|
|
1910
|
+
private readonly propertyService;
|
|
1579
1911
|
/**
|
|
1580
1912
|
* Resolve a domain object by path with full middleware processing.
|
|
1581
1913
|
* Supports definition-level caching with fresh model creation.
|
|
@@ -2043,5 +2375,5 @@ declare function provideDomainMiddleware(config: {
|
|
|
2043
2375
|
entities?: AXPDomainMiddleware[];
|
|
2044
2376
|
}): EnvironmentProviders;
|
|
2045
2377
|
|
|
2046
|
-
export { AXPAggregateModel, AXPDomainMiddlewareContext, AXPDomainModule, AXPDomainRegistry, AXPDomainService, AXPEntityCommandScope, AXPEntityFieldModel, AXPEntityModel, AXPEntityType, AXPModuleHelper, AXPModuleModel,
|
|
2047
|
-
export type { AXPAggregateDefinition, AXPAggregateEntityList,
|
|
2378
|
+
export { AXPAggregateModel, AXPDomainActionSide, AXPDomainMiddlewareContext, AXPDomainModule, AXPDomainRegistry, AXPDomainService, AXPEntityCommandScope, AXPEntityFieldModel, AXPEntityModel, AXPEntityType, AXPModuleHelper, AXPModuleModel, AXPPropertyMiddlewareContext, AXPPropertyModel, AXPPropertyRegistry, AXPPropertyService, AXPRelationModel, AXPRelationshipCardinality, AXPRelationshipKind, AXP_AGGREGATE_MIDDLEWARE_SETUP, AXP_ENTITY_CRUD_SETUP, AXP_ENTITY_DEFINITION_CRUD_SERVICE, AXP_ENTITY_MIDDLEWARE_SETUP, AXP_MODULE_MIDDLEWARE_SETUP, AXP_PROPERTY_EXTENSION, AXP_PROPERTY_LOADER_SETUP, AXP_PROPERTY_MIDDLEWARE_SETUP, AXP_PROPERTY_SETUP, provideAggregateMiddleware, provideDomainLoader, provideDomainLoaders, provideDomainMiddleware, provideEntityMiddleware, provideModuleMiddleware, providePropertiesFromFactory, provideProperty, providePropertyLoaders, providePropertyMiddleware, providePropertySetups, toPropertyDefinition };
|
|
2379
|
+
export type { AXPAggregateDefinition, AXPAggregateEntityList, AXPCommandCapability, AXPCommandRegistryRecord, AXPDomainAction, AXPDomainDefinition, AXPDomainLoader, AXPDomainLoaderConfig, AXPDomainMiddleware, AXPDomainPathInfo, AXPDomainRealtedModuleEntity, AXPEntityDefinition, AXPEntityDefinitionCrudService, AXPEntityPropertyDefinition, AXPEntityPropertyFeatures, AXPInterfaceCategory, AXPInterfaceDefinition, AXPInterfaceDefinitionValue, AXPMenuDefinitionEntityListRef, AXPMenuDefinitionRecord, AXPMenuDefinitionStoredCommand, AXPModuleDefinition, AXPPermissionDefinitionRecord, AXPPermissionGroupDefinitionRecord, AXPPermissionLeafRecord, AXPPluginDefinition, AXPPluginDefinitionValue, AXPPropertyDefinition, AXPPropertyEntry, AXPPropertyFeatures, AXPPropertyLoader, AXPPropertyLoaderConfig, AXPPropertyMiddleware, AXPPropertyMiddlewareEntry, AXPPropertyRegistrationOptions, AXPQueryRegistryRecord, AXPRegisteredProperty, AXPRelationDefinition, AXPValidationRuleDefinition, AXPValidationRuleValue, AXPValidationRunAt, AXPWidgetCatalogRecord };
|