@acorex/platform 20.8.13 → 20.8.15
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/{types/acorex-platform-auth.d.ts → auth/index.d.ts} +2 -14
- package/{types/acorex-platform-common.d.ts → common/index.d.ts} +30 -302
- package/{types/acorex-platform-core.d.ts → core/index.d.ts} +44 -188
- package/{types/acorex-platform-domain.d.ts → domain/index.d.ts} +412 -744
- package/fesm2022/acorex-platform-auth.mjs +27 -125
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-common-settings.provider-Bi1RYif5.mjs → acorex-platform-common-common-settings.provider-DVvuLUfF.mjs} +32 -30
- package/fesm2022/acorex-platform-common-common-settings.provider-DVvuLUfF.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +205 -711
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +127 -420
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +830 -561
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +114 -634
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs → acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs} +9 -9
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-components.mjs +877 -3362
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +204 -456
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +10062 -14672
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +171 -413
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +441 -507
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs → acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs} +10 -10
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs → acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs} +76 -21
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs → acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs} +7 -6
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs → acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs} +12 -12
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs +111 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs} +4 -4
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs} +6 -6
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +3429 -5632
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs +7 -8
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +166 -391
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs +160 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D2CtNrSn.mjs +1716 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D2CtNrSn.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs +120 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs → acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs} +23 -16
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs → acorex-platform-themes-default-error-401.component-53VB-PS_.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-401.component-53VB-PS_.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs → acorex-platform-themes-default-error-404.component-DVF9soT5.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs +19 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +61 -1784
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs → acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs → acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs} +25 -24
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs +65 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs +64 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +305 -408
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +100 -359
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/fesm2022/acorex-platform.mjs.map +1 -1
- package/{types/acorex-platform-layout-builder.d.ts → layout/builder/index.d.ts} +38 -160
- package/{types/acorex-platform-layout-components.d.ts → layout/components/index.d.ts} +125 -854
- package/{types/acorex-platform-layout-designer.d.ts → layout/designer/index.d.ts} +18 -96
- package/{types/acorex-platform-layout-entity.d.ts → layout/entity/index.d.ts} +65 -848
- package/{types/acorex-platform-layout-views.d.ts → layout/views/index.d.ts} +47 -80
- package/{types/acorex-platform-layout-widget-core.d.ts → layout/widget-core/index.d.ts} +197 -274
- package/{types/acorex-platform-layout-widgets.d.ts → layout/widgets/index.d.ts} +124 -608
- package/{types/acorex-platform-native.d.ts → native/index.d.ts} +7 -0
- package/package.json +33 -33
- package/runtime/index.d.ts +307 -0
- package/{types/acorex-platform-themes-default.d.ts → themes/default/index.d.ts} +4 -113
- package/{types/acorex-platform-themes-shared.d.ts → themes/shared/index.d.ts} +4 -5
- package/{types/acorex-platform-workflow.d.ts → workflow/index.d.ts} +81 -162
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs +0 -116
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs +0 -160
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs +0 -120
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +0 -19
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +0 -94
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs +0 -86
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +0 -1
- package/types/acorex-platform-runtime.d.ts +0 -571
- /package/{types/acorex-platform.d.ts → index.d.ts} +0 -0
|
@@ -1,20 +1,38 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken,
|
|
3
|
-
import { AXPExpression, AXPMetaData, AXPDataType, AXPOptionsData, AXPDefinitionCategory, AXPValidationRules } from '@acorex/platform/core';
|
|
2
|
+
import { InjectionToken, EnvironmentProviders, Type } from '@angular/core';
|
|
4
3
|
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
|
-
*/
|
|
11
6
|
declare const AXP_ENTITY_CRUD_SETUP: InjectionToken<void>;
|
|
7
|
+
declare function provideEntity(entityKeys: string[]): EnvironmentProviders;
|
|
12
8
|
|
|
13
|
-
declare
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
declare class AXPDomainModule {
|
|
10
|
+
private _commandSetup;
|
|
11
|
+
/**
|
|
12
|
+
* Injection token for schema setup initialization.
|
|
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>;
|
|
17
34
|
}
|
|
35
|
+
|
|
18
36
|
/**
|
|
19
37
|
* Interface for defining actions
|
|
20
38
|
*/
|
|
@@ -30,124 +48,31 @@ declare enum AXPEntityCommandScope {
|
|
|
30
48
|
Individual = "individual",
|
|
31
49
|
Section = "section"
|
|
32
50
|
}
|
|
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
|
-
}
|
|
47
|
-
|
|
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[];
|
|
66
|
-
}
|
|
67
|
-
interface AXPValidationRuleValue {
|
|
68
|
-
rule: string;
|
|
69
|
-
title?: string;
|
|
70
|
-
message?: string;
|
|
71
|
-
options?: AXPMetaData;
|
|
72
|
-
}
|
|
73
51
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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 {
|
|
91
|
-
name: string;
|
|
92
|
-
title: string;
|
|
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;
|
|
52
|
+
declare enum AXPEntityType {
|
|
53
|
+
Entity = 0,
|
|
54
|
+
AggregateRoot = 1,
|
|
55
|
+
ValueObject = 2
|
|
102
56
|
}
|
|
103
|
-
|
|
104
|
-
/** Widget category for interface grouping (e.g. Editors, Layout, Action). */
|
|
105
|
-
interface AXPInterfaceCategory {
|
|
57
|
+
interface AXPEntityDefinition {
|
|
106
58
|
name: string;
|
|
107
59
|
title: string;
|
|
108
|
-
|
|
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[];
|
|
60
|
+
fields: AXPEntityFieldDefinition[];
|
|
61
|
+
type: AXPEntityType;
|
|
126
62
|
}
|
|
127
|
-
interface
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
options?: AXPOptionsData;
|
|
63
|
+
interface AXPEntityFieldFeatures {
|
|
64
|
+
nullable: boolean;
|
|
65
|
+
readOnly: boolean;
|
|
131
66
|
}
|
|
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 {
|
|
67
|
+
interface AXPEntityFieldDefinition {
|
|
138
68
|
name: string;
|
|
139
69
|
title: string;
|
|
140
70
|
description?: string;
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
* Fills the definition when used on an entity.
|
|
147
|
-
*/
|
|
148
|
-
interface AXPPluginDefinitionValue {
|
|
149
|
-
name: string;
|
|
150
|
-
options?: AXPMetaData;
|
|
71
|
+
validations?: AXPValidationRules;
|
|
72
|
+
actions?: AXPDomainAction[];
|
|
73
|
+
features?: AXPEntityFieldFeatures;
|
|
74
|
+
defaultValue?: any;
|
|
75
|
+
schema: string;
|
|
151
76
|
}
|
|
152
77
|
|
|
153
78
|
declare enum AXPRelationshipKind {
|
|
@@ -161,409 +86,188 @@ declare enum AXPRelationshipCardinality {
|
|
|
161
86
|
ManyToMany = 2
|
|
162
87
|
}
|
|
163
88
|
/**
|
|
164
|
-
*
|
|
165
|
-
* Relations live in their own collection, independent of aggregates.
|
|
89
|
+
* Interface for defining relationships between aggregates
|
|
166
90
|
*/
|
|
167
|
-
interface
|
|
168
|
-
id?: string;
|
|
91
|
+
interface AXPAggregateRelationDefinition {
|
|
169
92
|
type: AXPRelationshipCardinality;
|
|
170
93
|
kind: AXPRelationshipKind;
|
|
171
|
-
|
|
94
|
+
target: {
|
|
172
95
|
aggregate: string;
|
|
173
96
|
entity: string;
|
|
174
97
|
key: string;
|
|
175
98
|
};
|
|
176
|
-
|
|
177
|
-
aggregate: string;
|
|
99
|
+
source: {
|
|
178
100
|
entity: string;
|
|
179
101
|
key: string;
|
|
180
102
|
};
|
|
181
103
|
isRequired: boolean;
|
|
182
104
|
}
|
|
183
105
|
|
|
184
|
-
|
|
185
|
-
|
|
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>;
|
|
106
|
+
type AXPAggregateEntityList = {
|
|
107
|
+
[key: string]: () => Promise<AXPEntityDefinition>;
|
|
197
108
|
};
|
|
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). */
|
|
211
|
-
name: string;
|
|
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>;
|
|
239
|
-
}
|
|
240
|
-
|
|
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 {
|
|
246
|
-
name: string;
|
|
247
|
-
title: string;
|
|
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 {
|
|
109
|
+
interface AXPAggregateDefinition {
|
|
255
110
|
name: string;
|
|
256
111
|
title: string;
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
112
|
+
entities: AXPEntityDefinition[] | AXPAggregateEntityList | Record<string, string>;
|
|
113
|
+
relations: AXPAggregateRelationDefinition[];
|
|
114
|
+
validations: AXPValidationRules;
|
|
115
|
+
actions: AXPDomainAction[];
|
|
261
116
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
* Aligns with `AXPPermissionGroupDefinition` / fluent providers; one row per group.
|
|
265
|
-
*/
|
|
266
|
-
interface AXPPermissionGroupDefinitionRecord {
|
|
117
|
+
|
|
118
|
+
interface AXPModuleDefinition {
|
|
267
119
|
name: string;
|
|
268
120
|
title: string;
|
|
269
|
-
|
|
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
|
-
}>;
|
|
121
|
+
aggregates: AXPAggregateDefinition[];
|
|
280
122
|
}
|
|
281
123
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
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[];
|
|
124
|
+
type AXPSchemaDataType = 'string' | 'number' | 'boolean' | 'date' | 'object' | 'array' | 'blob';
|
|
125
|
+
interface AXPSchemaInterface {
|
|
126
|
+
widget: string;
|
|
127
|
+
options?: AXPOptionsData;
|
|
128
|
+
disabled?: boolean;
|
|
312
129
|
}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
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[];
|
|
130
|
+
interface AXPSchemaFeatures {
|
|
131
|
+
searchable?: {
|
|
132
|
+
enabled: boolean;
|
|
133
|
+
fullText: boolean;
|
|
134
|
+
};
|
|
135
|
+
filterable?: {
|
|
136
|
+
enabled: boolean;
|
|
137
|
+
inline: boolean;
|
|
138
|
+
};
|
|
139
|
+
sortable?: {
|
|
140
|
+
enabled: boolean;
|
|
141
|
+
};
|
|
142
|
+
auditable?: {
|
|
143
|
+
enabled: boolean;
|
|
144
|
+
};
|
|
341
145
|
}
|
|
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 {
|
|
146
|
+
interface AXPSchemaDefinition {
|
|
348
147
|
name: string;
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
metadataJson?: string;
|
|
148
|
+
dataType: AXPSchemaDataType;
|
|
149
|
+
interface: AXPSchemaInterface;
|
|
150
|
+
validations?: AXPValidationRules;
|
|
151
|
+
features?: AXPSchemaFeatures;
|
|
152
|
+
metadata?: AXPMetaData;
|
|
355
153
|
}
|
|
356
154
|
|
|
357
155
|
/**
|
|
358
|
-
*
|
|
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).
|
|
156
|
+
* Runtime model for relation definitions with parent references and helper methods
|
|
361
157
|
*/
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
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;
|
|
158
|
+
declare class AXPRelationModel {
|
|
159
|
+
readonly type: AXPRelationshipCardinality;
|
|
160
|
+
readonly kind: AXPRelationshipKind;
|
|
161
|
+
readonly target: {
|
|
162
|
+
aggregate: string;
|
|
163
|
+
entity: string;
|
|
164
|
+
key: string;
|
|
165
|
+
};
|
|
166
|
+
readonly source: {
|
|
167
|
+
entity: string;
|
|
168
|
+
key: string;
|
|
169
|
+
};
|
|
170
|
+
readonly isRequired: boolean;
|
|
171
|
+
readonly parent: any;
|
|
172
|
+
constructor(definition: AXPAggregateRelationDefinition, parent: any);
|
|
471
173
|
/**
|
|
472
|
-
*
|
|
174
|
+
* Check if relation is one-to-one
|
|
473
175
|
*/
|
|
474
|
-
|
|
475
|
-
private _propertyMiddlewareSetup;
|
|
476
|
-
private _propertyLoaderSetup;
|
|
176
|
+
isOneToOne(): boolean;
|
|
477
177
|
/**
|
|
478
|
-
*
|
|
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.
|
|
178
|
+
* Check if relation is one-to-many
|
|
483
179
|
*/
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
/**
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
/**
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
180
|
+
isOneToMany(): boolean;
|
|
181
|
+
/**
|
|
182
|
+
* Check if relation is many-to-many
|
|
183
|
+
*/
|
|
184
|
+
isManyToMany(): boolean;
|
|
185
|
+
/**
|
|
186
|
+
* Check if relation is association
|
|
187
|
+
*/
|
|
188
|
+
isAssociation(): boolean;
|
|
189
|
+
/**
|
|
190
|
+
* Check if relation is composition
|
|
191
|
+
*/
|
|
192
|
+
isComposition(): boolean;
|
|
193
|
+
/**
|
|
194
|
+
* Check if relation is aggregation
|
|
195
|
+
*/
|
|
196
|
+
isAggregation(): boolean;
|
|
197
|
+
/**
|
|
198
|
+
* Get parent aggregate
|
|
199
|
+
*/
|
|
200
|
+
getAggregate(): any;
|
|
201
|
+
/**
|
|
202
|
+
* Get parent module
|
|
203
|
+
*/
|
|
204
|
+
getModule(): any;
|
|
205
|
+
/**
|
|
206
|
+
* Get full path (module.aggregate.relation)
|
|
207
|
+
*/
|
|
208
|
+
getPath(): string;
|
|
209
|
+
/**
|
|
210
|
+
* Get relation description
|
|
211
|
+
*/
|
|
212
|
+
getDescription(): string;
|
|
213
|
+
/**
|
|
214
|
+
* Get cardinality description
|
|
215
|
+
*/
|
|
216
|
+
getCardinalityDescription(): string;
|
|
217
|
+
/**
|
|
218
|
+
* Get kind description
|
|
219
|
+
*/
|
|
220
|
+
getKindDescription(): string;
|
|
221
|
+
/**
|
|
222
|
+
* Get relation summary
|
|
223
|
+
*/
|
|
224
|
+
getSummary(): string;
|
|
225
|
+
/**
|
|
226
|
+
* Validate the relation structure
|
|
227
|
+
*/
|
|
228
|
+
validate(): string[];
|
|
229
|
+
/**
|
|
230
|
+
* Get relation characteristics
|
|
231
|
+
*/
|
|
232
|
+
getCharacteristics(): {
|
|
233
|
+
type: string;
|
|
234
|
+
kind: string;
|
|
235
|
+
required: boolean;
|
|
236
|
+
isOwning: boolean;
|
|
237
|
+
isNavigable: boolean;
|
|
517
238
|
};
|
|
518
|
-
/**
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
/**
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
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[];
|
|
239
|
+
/**
|
|
240
|
+
* Check if relation involves entity
|
|
241
|
+
*/
|
|
242
|
+
involvesEntity(entityName: string): boolean;
|
|
243
|
+
/**
|
|
244
|
+
* Check if relation targets aggregate
|
|
245
|
+
*/
|
|
246
|
+
targetsAggregate(aggregateName: string): boolean;
|
|
247
|
+
/**
|
|
248
|
+
* Get the other entity in the relation
|
|
249
|
+
*/
|
|
250
|
+
getOtherEntity(entityName: string): string | null;
|
|
251
|
+
/**
|
|
252
|
+
* Convert back to interface definition
|
|
253
|
+
*/
|
|
254
|
+
toDefinition(): AXPAggregateRelationDefinition;
|
|
558
255
|
}
|
|
559
256
|
|
|
560
257
|
/**
|
|
561
258
|
* Simple runtime model for aggregate definitions with parent references and navigation helpers.
|
|
562
|
-
*
|
|
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.
|
|
563
266
|
*/
|
|
564
267
|
declare class AXPAggregateModel {
|
|
565
268
|
readonly name: string;
|
|
566
269
|
readonly title: string;
|
|
270
|
+
readonly relations: AXPRelationModel[];
|
|
567
271
|
readonly validations: AXPValidationRules;
|
|
568
272
|
readonly actions: AXPDomainAction[];
|
|
569
273
|
readonly parent: any;
|
|
@@ -601,6 +305,21 @@ declare class AXPAggregateModel {
|
|
|
601
305
|
* @returns True if entity exists
|
|
602
306
|
*/
|
|
603
307
|
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[];
|
|
604
323
|
/**
|
|
605
324
|
* Get parent module
|
|
606
325
|
*
|
|
@@ -620,6 +339,7 @@ declare class AXPAggregateModel {
|
|
|
620
339
|
*/
|
|
621
340
|
getStatistics(): {
|
|
622
341
|
entityCount: number;
|
|
342
|
+
relationCount: number;
|
|
623
343
|
actionCount: number;
|
|
624
344
|
validationCount: number;
|
|
625
345
|
};
|
|
@@ -710,8 +430,9 @@ declare class AXPModuleModel {
|
|
|
710
430
|
*/
|
|
711
431
|
getAllEntityReferences(): Record<string, string>;
|
|
712
432
|
/**
|
|
713
|
-
*
|
|
714
|
-
*
|
|
433
|
+
* Get all relations across all aggregates
|
|
434
|
+
*
|
|
435
|
+
* @returns Array of all relation models
|
|
715
436
|
*/
|
|
716
437
|
getAllRelations(): Array<{
|
|
717
438
|
aggregate: AXPAggregateModel;
|
|
@@ -731,6 +452,7 @@ declare class AXPModuleModel {
|
|
|
731
452
|
getStatistics(): {
|
|
732
453
|
aggregateCount: number;
|
|
733
454
|
entityCount: number;
|
|
455
|
+
relationCount: number;
|
|
734
456
|
actionCount: number;
|
|
735
457
|
validationCount: number;
|
|
736
458
|
};
|
|
@@ -743,27 +465,54 @@ declare class AXPModuleModel {
|
|
|
743
465
|
}
|
|
744
466
|
|
|
745
467
|
/**
|
|
746
|
-
* Runtime model for
|
|
468
|
+
* Runtime model for schema definitions with helper methods
|
|
747
469
|
*/
|
|
748
|
-
declare class
|
|
470
|
+
declare class AXPSchemaModel {
|
|
749
471
|
readonly name: string;
|
|
750
|
-
readonly
|
|
751
|
-
readonly interface:
|
|
472
|
+
readonly dataType: AXPSchemaDataType;
|
|
473
|
+
readonly interface: AXPSchemaInterface;
|
|
752
474
|
readonly validations: AXPValidationRules;
|
|
753
|
-
readonly features:
|
|
475
|
+
readonly features: AXPSchemaFeatures;
|
|
754
476
|
readonly metadata?: AXPMetaData;
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
477
|
+
constructor(definition: AXPSchemaDefinition);
|
|
478
|
+
/**
|
|
479
|
+
* Check if schema is for string data
|
|
480
|
+
*/
|
|
481
|
+
isString(): boolean;
|
|
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;
|
|
761
510
|
/**
|
|
762
511
|
* Get widget options
|
|
763
512
|
*/
|
|
764
513
|
getWidgetOptions(): AXPOptionsData | undefined;
|
|
765
514
|
/**
|
|
766
|
-
* Check if
|
|
515
|
+
* Check if interface is disabled
|
|
767
516
|
*/
|
|
768
517
|
isDisabled(): boolean;
|
|
769
518
|
/**
|
|
@@ -791,11 +540,11 @@ declare class AXPPropertyModel {
|
|
|
791
540
|
*/
|
|
792
541
|
isAuditable(): boolean;
|
|
793
542
|
/**
|
|
794
|
-
* Validate the
|
|
543
|
+
* Validate the schema structure
|
|
795
544
|
*/
|
|
796
545
|
validate(): Promise<string[]>;
|
|
797
546
|
/**
|
|
798
|
-
* Get
|
|
547
|
+
* Get schema capabilities
|
|
799
548
|
*/
|
|
800
549
|
getCapabilities(): {
|
|
801
550
|
searchable: boolean;
|
|
@@ -807,9 +556,10 @@ declare class AXPPropertyModel {
|
|
|
807
556
|
disabled: boolean;
|
|
808
557
|
};
|
|
809
558
|
/**
|
|
810
|
-
* Get
|
|
559
|
+
* Get schema summary
|
|
811
560
|
*/
|
|
812
561
|
getSummary(): {
|
|
562
|
+
dataType: AXPSchemaDataType;
|
|
813
563
|
widget: string;
|
|
814
564
|
hasOptions: boolean;
|
|
815
565
|
hasMetadata: boolean;
|
|
@@ -819,26 +569,30 @@ declare class AXPPropertyModel {
|
|
|
819
569
|
/**
|
|
820
570
|
* Convert back to interface definition
|
|
821
571
|
*/
|
|
822
|
-
toDefinition():
|
|
572
|
+
toDefinition(): AXPSchemaDefinition;
|
|
823
573
|
}
|
|
824
574
|
|
|
825
575
|
/**
|
|
826
|
-
*
|
|
576
|
+
* Interface for schema loaders that can provide schemas on-demand
|
|
827
577
|
*/
|
|
828
|
-
interface
|
|
578
|
+
interface AXPSchemaLoader {
|
|
829
579
|
/**
|
|
830
580
|
* Optional priority for loader ordering. Higher numbers = higher priority.
|
|
831
581
|
* If not specified, uses registration order.
|
|
832
582
|
*/
|
|
833
583
|
readonly priority?: number;
|
|
834
584
|
/**
|
|
835
|
-
* Determines if this loader can handle the given
|
|
585
|
+
* Determines if this loader can handle the given schema name
|
|
586
|
+
* @param schemaName The name of the schema to load
|
|
587
|
+
* @returns true if this loader can load the schema
|
|
836
588
|
*/
|
|
837
|
-
canLoad(
|
|
589
|
+
canLoad(schemaName: string): boolean;
|
|
838
590
|
/**
|
|
839
|
-
* Loads the
|
|
591
|
+
* Loads the schema definition for the given name
|
|
592
|
+
* @param schemaName The name of the schema to load
|
|
593
|
+
* @returns Promise that resolves to the schema definition or null if not found
|
|
840
594
|
*/
|
|
841
|
-
load(
|
|
595
|
+
load(schemaName: string): Promise<AXPSchemaDefinition | null>;
|
|
842
596
|
}
|
|
843
597
|
|
|
844
598
|
/**
|
|
@@ -866,13 +620,13 @@ interface AXPPropertyLoader {
|
|
|
866
620
|
* }
|
|
867
621
|
* ```
|
|
868
622
|
*/
|
|
869
|
-
declare class
|
|
870
|
-
private
|
|
871
|
-
constructor(
|
|
623
|
+
declare class AXPSchemaMiddlewareContext {
|
|
624
|
+
private _schema;
|
|
625
|
+
constructor(schema: AXPSchemaDefinition);
|
|
872
626
|
/**
|
|
873
627
|
* Get the current schema definition (readonly access)
|
|
874
628
|
*/
|
|
875
|
-
get
|
|
629
|
+
get schema(): Readonly<AXPSchemaDefinition>;
|
|
876
630
|
/**
|
|
877
631
|
* Get the schema name for conditional logic
|
|
878
632
|
*/
|
|
@@ -881,7 +635,7 @@ declare class AXPPropertyMiddlewareContext {
|
|
|
881
635
|
* Set a default value for the widget
|
|
882
636
|
* @param defaultValue The default value to set
|
|
883
637
|
*/
|
|
884
|
-
withDefaultValue(defaultValue:
|
|
638
|
+
withDefaultValue(defaultValue: any): this;
|
|
885
639
|
/**
|
|
886
640
|
* Remove the default value from the widget
|
|
887
641
|
*/
|
|
@@ -914,7 +668,7 @@ declare class AXPPropertyMiddlewareContext {
|
|
|
914
668
|
* Set or merge widget options
|
|
915
669
|
* @param options Object containing widget-specific options to merge
|
|
916
670
|
*/
|
|
917
|
-
withWidgetOptions(options:
|
|
671
|
+
withWidgetOptions(options: any): this;
|
|
918
672
|
/**
|
|
919
673
|
* Remove a specific widget option by key
|
|
920
674
|
* @param optionKey The key of the option to remove
|
|
@@ -957,6 +711,11 @@ declare class AXPPropertyMiddlewareContext {
|
|
|
957
711
|
* @param key The metadata key to remove
|
|
958
712
|
*/
|
|
959
713
|
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;
|
|
960
719
|
/**
|
|
961
720
|
* Set the disabled state of the widget
|
|
962
721
|
* @param isDisabled Whether the widget should be disabled
|
|
@@ -975,16 +734,15 @@ declare class AXPPropertyMiddlewareContext {
|
|
|
975
734
|
}
|
|
976
735
|
|
|
977
736
|
/**
|
|
978
|
-
* Middleware that can transform
|
|
979
|
-
*
|
|
980
|
-
* @param context - Mutable {@link AXPPropertyMiddlewareContext} wrapping a cloned {@link AXPPropertyDefinition}.
|
|
737
|
+
* Middleware function that can transform schema definitions
|
|
738
|
+
* @param context - Schema middleware context providing schema info and configuration methods
|
|
981
739
|
*/
|
|
982
|
-
type
|
|
740
|
+
type AXPSchemaMiddleware = (context: AXPSchemaMiddlewareContext) => void | Promise<void>;
|
|
983
741
|
|
|
984
742
|
/**
|
|
985
743
|
* Options for registering a schema with additional metadata and middleware
|
|
986
744
|
*/
|
|
987
|
-
interface
|
|
745
|
+
interface AXPSchemaRegistrationOptions {
|
|
988
746
|
/** Optional description for documentation purposes */
|
|
989
747
|
description?: string;
|
|
990
748
|
/** Tags for categorizing and finding schemas */
|
|
@@ -992,18 +750,18 @@ interface AXPPropertyRegistrationOptions {
|
|
|
992
750
|
/** Version information for schema evolution */
|
|
993
751
|
version?: string;
|
|
994
752
|
/** Schema-specific middleware that applies only to this schema */
|
|
995
|
-
middleware?:
|
|
753
|
+
middleware?: AXPSchemaMiddleware[];
|
|
996
754
|
}
|
|
997
755
|
/**
|
|
998
756
|
* Internal representation of a registered schema with metadata
|
|
999
757
|
*/
|
|
1000
|
-
interface
|
|
758
|
+
interface AXPRegisteredSchema {
|
|
1001
759
|
/** Unique identifier for the schema */
|
|
1002
760
|
name: string;
|
|
1003
761
|
/** The actual schema definition */
|
|
1004
|
-
definition:
|
|
762
|
+
definition: AXPSchemaDefinition;
|
|
1005
763
|
/** Registration options and metadata */
|
|
1006
|
-
options:
|
|
764
|
+
options: AXPSchemaRegistrationOptions;
|
|
1007
765
|
/** Timestamp when the schema was registered */
|
|
1008
766
|
registeredAt: Date;
|
|
1009
767
|
}
|
|
@@ -1016,8 +774,8 @@ interface AXPRegisteredProperty {
|
|
|
1016
774
|
* - On-demand schema loading
|
|
1017
775
|
* - Caching and performance optimization
|
|
1018
776
|
*/
|
|
1019
|
-
declare class
|
|
1020
|
-
private readonly
|
|
777
|
+
declare class AXPSchemaRegistry {
|
|
778
|
+
private readonly _schemas;
|
|
1021
779
|
private readonly _globalMiddleware;
|
|
1022
780
|
private readonly _modelCache;
|
|
1023
781
|
private _loaders;
|
|
@@ -1025,14 +783,14 @@ declare class AXPPropertyRegistry {
|
|
|
1025
783
|
/**
|
|
1026
784
|
* Register a schema definition with optional metadata and middleware
|
|
1027
785
|
*/
|
|
1028
|
-
register(definition:
|
|
786
|
+
register(definition: AXPSchemaDefinition, options?: AXPSchemaRegistrationOptions): void;
|
|
1029
787
|
/**
|
|
1030
788
|
* Register multiple schemas at once for batch operations
|
|
1031
789
|
*/
|
|
1032
|
-
registerBatch(
|
|
790
|
+
registerBatch(schemas: {
|
|
1033
791
|
name: string;
|
|
1034
|
-
definition:
|
|
1035
|
-
options?:
|
|
792
|
+
definition: AXPSchemaDefinition;
|
|
793
|
+
options?: AXPSchemaRegistrationOptions;
|
|
1036
794
|
}[]): void;
|
|
1037
795
|
/**
|
|
1038
796
|
* Remove a schema from the registry
|
|
@@ -1046,20 +804,20 @@ declare class AXPPropertyRegistry {
|
|
|
1046
804
|
* Resolve a schema by name with full middleware processing and caching.
|
|
1047
805
|
* Supports on-demand loading if schema is not registered.
|
|
1048
806
|
*/
|
|
1049
|
-
resolve(name: string): Promise<
|
|
807
|
+
resolve(name: string): Promise<AXPSchemaModel>;
|
|
1050
808
|
/**
|
|
1051
809
|
* Synchronous resolution without middleware processing.
|
|
1052
810
|
* Use only when middleware is not needed for performance.
|
|
1053
811
|
*/
|
|
1054
|
-
resolveSync(name: string):
|
|
812
|
+
resolveSync(name: string): AXPSchemaModel;
|
|
1055
813
|
/**
|
|
1056
814
|
* Add global middleware that applies to all schema resolutions
|
|
1057
815
|
*/
|
|
1058
|
-
addGlobalMiddleware(middleware:
|
|
816
|
+
addGlobalMiddleware(middleware: AXPSchemaMiddleware): void;
|
|
1059
817
|
/**
|
|
1060
818
|
* Remove specific global middleware
|
|
1061
819
|
*/
|
|
1062
|
-
removeGlobalMiddleware(middleware:
|
|
820
|
+
removeGlobalMiddleware(middleware: AXPSchemaMiddleware): boolean;
|
|
1063
821
|
/**
|
|
1064
822
|
* Clear all global middleware
|
|
1065
823
|
*/
|
|
@@ -1067,7 +825,7 @@ declare class AXPPropertyRegistry {
|
|
|
1067
825
|
/**
|
|
1068
826
|
* Add a schema loader for on-demand loading
|
|
1069
827
|
*/
|
|
1070
|
-
addLoader(loader: Type<
|
|
828
|
+
addLoader(loader: Type<AXPSchemaLoader>): void;
|
|
1071
829
|
/**
|
|
1072
830
|
* Get all registered schema names
|
|
1073
831
|
*/
|
|
@@ -1075,29 +833,29 @@ declare class AXPPropertyRegistry {
|
|
|
1075
833
|
/**
|
|
1076
834
|
* Get detailed registration information for a schema
|
|
1077
835
|
*/
|
|
1078
|
-
|
|
836
|
+
getSchemaInfo(name: string): AXPRegisteredSchema | undefined;
|
|
1079
837
|
/**
|
|
1080
|
-
* Get all registered
|
|
838
|
+
* Get all registered schemas with their metadata
|
|
1081
839
|
*/
|
|
1082
|
-
|
|
840
|
+
getAllSchemas(): AXPRegisteredSchema[];
|
|
1083
841
|
/**
|
|
1084
|
-
* Find
|
|
842
|
+
* Find schemas by tag for categorization
|
|
1085
843
|
*/
|
|
1086
|
-
findByTag(tag: string):
|
|
844
|
+
findByTag(tag: string): AXPRegisteredSchema[];
|
|
1087
845
|
/**
|
|
1088
|
-
* Find
|
|
846
|
+
* Find schemas by widget type for widget-specific operations
|
|
1089
847
|
*/
|
|
1090
|
-
findByWidget(widgetType: string):
|
|
848
|
+
findByWidget(widgetType: string): AXPRegisteredSchema[];
|
|
1091
849
|
/**
|
|
1092
850
|
* Get comprehensive registry statistics
|
|
1093
851
|
*/
|
|
1094
852
|
getStatistics(): {
|
|
1095
|
-
|
|
853
|
+
schemaCount: number;
|
|
1096
854
|
globalMiddlewareCount: number;
|
|
1097
|
-
|
|
855
|
+
schemasByWidget: {
|
|
1098
856
|
[widget: string]: number;
|
|
1099
857
|
};
|
|
1100
|
-
|
|
858
|
+
schemasByTag: {
|
|
1101
859
|
[tag: string]: number;
|
|
1102
860
|
};
|
|
1103
861
|
};
|
|
@@ -1125,123 +883,124 @@ declare class AXPPropertyRegistry {
|
|
|
1125
883
|
* Create a deep clone of a schema definition to prevent mutations
|
|
1126
884
|
*/
|
|
1127
885
|
private cloneDefinition;
|
|
1128
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
1129
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<
|
|
886
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPSchemaRegistry, never>;
|
|
887
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPSchemaRegistry>;
|
|
1130
888
|
}
|
|
1131
889
|
|
|
1132
890
|
/**
|
|
1133
|
-
* High-level facade for
|
|
891
|
+
* High-level facade service for schema operations.
|
|
1134
892
|
*
|
|
1135
|
-
*
|
|
893
|
+
* Provides a simplified interface to the schema registry with additional
|
|
894
|
+
* business logic and convenience methods for common operations.
|
|
1136
895
|
*/
|
|
1137
|
-
declare class
|
|
896
|
+
declare class AXPSchemaService {
|
|
1138
897
|
private readonly registry;
|
|
1139
898
|
/**
|
|
1140
|
-
* Register a
|
|
899
|
+
* Register a schema with optional configuration
|
|
1141
900
|
*/
|
|
1142
|
-
register(definition:
|
|
901
|
+
register(definition: AXPSchemaDefinition, options?: AXPSchemaRegistrationOptions): void;
|
|
1143
902
|
/**
|
|
1144
|
-
* Register multiple
|
|
903
|
+
* Register multiple schemas at once
|
|
1145
904
|
*/
|
|
1146
|
-
registerBatch(
|
|
905
|
+
registerBatch(schemas: {
|
|
1147
906
|
name: string;
|
|
1148
|
-
definition:
|
|
1149
|
-
options?:
|
|
907
|
+
definition: AXPSchemaDefinition;
|
|
908
|
+
options?: AXPSchemaRegistrationOptions;
|
|
1150
909
|
}[]): void;
|
|
1151
910
|
/**
|
|
1152
|
-
* Remove a
|
|
911
|
+
* Remove a schema from the registry
|
|
1153
912
|
*/
|
|
1154
913
|
unregister(name: string): boolean;
|
|
1155
914
|
/**
|
|
1156
|
-
* Check if a
|
|
915
|
+
* Check if a schema is registered
|
|
1157
916
|
*/
|
|
1158
917
|
isRegistered(name: string): boolean;
|
|
1159
918
|
/**
|
|
1160
|
-
* Get all registered
|
|
919
|
+
* Get all registered schema names
|
|
1161
920
|
*/
|
|
1162
921
|
getRegisteredNames(): string[];
|
|
1163
922
|
/**
|
|
1164
|
-
* Clear all
|
|
923
|
+
* Clear all schemas and reset the registry
|
|
1165
924
|
*/
|
|
1166
925
|
clear(): void;
|
|
1167
926
|
/**
|
|
1168
|
-
* Resolve a
|
|
927
|
+
* Resolve a schema with full middleware processing
|
|
1169
928
|
*/
|
|
1170
|
-
resolve(name: string): Promise<
|
|
929
|
+
resolve(name: string): Promise<AXPSchemaModel>;
|
|
1171
930
|
/**
|
|
1172
|
-
* Resolve synchronously without middleware (for performance)
|
|
931
|
+
* Resolve schema synchronously without middleware (for performance)
|
|
1173
932
|
*/
|
|
1174
|
-
resolveSync(name: string):
|
|
933
|
+
resolveSync(name: string): AXPSchemaModel;
|
|
1175
934
|
/**
|
|
1176
|
-
* Resolve multiple
|
|
935
|
+
* Resolve multiple schemas for form building and batch operations
|
|
1177
936
|
*/
|
|
1178
937
|
resolveMultiple(fieldConfigs: {
|
|
1179
938
|
name: string;
|
|
1180
|
-
|
|
939
|
+
schemaName: string;
|
|
1181
940
|
}[]): Promise<{
|
|
1182
941
|
name: string;
|
|
1183
|
-
|
|
942
|
+
schema: AXPSchemaModel;
|
|
1184
943
|
}[]>;
|
|
1185
944
|
/**
|
|
1186
|
-
* Add global middleware that applies to all
|
|
945
|
+
* Add global middleware that applies to all schema resolutions
|
|
1187
946
|
*/
|
|
1188
|
-
addGlobalMiddleware(middleware:
|
|
947
|
+
addGlobalMiddleware(middleware: AXPSchemaMiddleware): void;
|
|
1189
948
|
/**
|
|
1190
949
|
* Remove specific global middleware
|
|
1191
950
|
*/
|
|
1192
|
-
removeGlobalMiddleware(middleware:
|
|
951
|
+
removeGlobalMiddleware(middleware: AXPSchemaMiddleware): boolean;
|
|
1193
952
|
/**
|
|
1194
953
|
* Clear all global middleware
|
|
1195
954
|
*/
|
|
1196
955
|
clearGlobalMiddleware(): void;
|
|
1197
956
|
/**
|
|
1198
|
-
* Get detailed information about a registered
|
|
957
|
+
* Get detailed information about a registered schema
|
|
1199
958
|
*/
|
|
1200
|
-
|
|
959
|
+
getSchemaInfo(name: string): AXPRegisteredSchema | undefined;
|
|
1201
960
|
/**
|
|
1202
|
-
* Get all registered
|
|
961
|
+
* Get all registered schemas with their metadata
|
|
1203
962
|
*/
|
|
1204
|
-
|
|
963
|
+
getAllSchemas(): AXPRegisteredSchema[];
|
|
1205
964
|
/**
|
|
1206
|
-
* Find
|
|
965
|
+
* Find schemas by tag for categorization and grouping
|
|
1207
966
|
*/
|
|
1208
|
-
findByTag(tag: string):
|
|
967
|
+
findByTag(tag: string): AXPRegisteredSchema[];
|
|
1209
968
|
/**
|
|
1210
|
-
* Find
|
|
969
|
+
* Find schemas by widget type for widget-specific operations
|
|
1211
970
|
*/
|
|
1212
|
-
findByWidget(widgetType: string):
|
|
971
|
+
findByWidget(widgetType: string): AXPRegisteredSchema[];
|
|
1213
972
|
/**
|
|
1214
973
|
* Get comprehensive registry statistics and analytics
|
|
1215
974
|
*/
|
|
1216
975
|
getStatistics(): {
|
|
1217
976
|
mostUsedWidgets: string[];
|
|
1218
977
|
mostUsedTags: string[];
|
|
1219
|
-
|
|
978
|
+
schemaCount: number;
|
|
1220
979
|
globalMiddlewareCount: number;
|
|
1221
|
-
|
|
980
|
+
schemasByWidget: {
|
|
1222
981
|
[widget: string]: number;
|
|
1223
982
|
};
|
|
1224
|
-
|
|
983
|
+
schemasByTag: {
|
|
1225
984
|
[tag: string]: number;
|
|
1226
985
|
};
|
|
1227
986
|
};
|
|
1228
987
|
/**
|
|
1229
|
-
* Validate that all referenced
|
|
988
|
+
* Validate that all referenced schemas exist in the registry
|
|
1230
989
|
*/
|
|
1231
|
-
|
|
990
|
+
validateSchemaReferences(schemaNames: string[]): {
|
|
1232
991
|
valid: boolean;
|
|
1233
|
-
|
|
992
|
+
missingSchemas: string[];
|
|
1234
993
|
};
|
|
1235
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
1236
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<
|
|
994
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPSchemaService, never>;
|
|
995
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPSchemaService>;
|
|
1237
996
|
}
|
|
1238
997
|
|
|
1239
998
|
/**
|
|
1240
999
|
* Configuration for a schema loader with optional priority setting
|
|
1241
1000
|
*/
|
|
1242
|
-
interface
|
|
1001
|
+
interface AXPSchemaLoaderConfig {
|
|
1243
1002
|
/** The loader class to instantiate */
|
|
1244
|
-
loader: Type<
|
|
1003
|
+
loader: Type<AXPSchemaLoader>;
|
|
1245
1004
|
/** Optional priority for loader ordering (higher = higher priority) */
|
|
1246
1005
|
priority?: number;
|
|
1247
1006
|
}
|
|
@@ -1261,28 +1020,28 @@ interface AXPPropertyLoaderConfig {
|
|
|
1261
1020
|
* @example
|
|
1262
1021
|
* ```typescript
|
|
1263
1022
|
* // Simple loader registration
|
|
1264
|
-
*
|
|
1023
|
+
* provideSchemaLoaders([
|
|
1265
1024
|
* HttpSchemaLoader,
|
|
1266
1025
|
* FileSystemSchemaLoader
|
|
1267
1026
|
* ])
|
|
1268
1027
|
*
|
|
1269
1028
|
* // With priority configuration
|
|
1270
|
-
*
|
|
1029
|
+
* provideSchemaLoaders([
|
|
1271
1030
|
* { loader: HttpSchemaLoader, priority: 10 },
|
|
1272
1031
|
* { loader: FileSystemSchemaLoader, priority: 5 }
|
|
1273
1032
|
* ])
|
|
1274
1033
|
* ```
|
|
1275
1034
|
*/
|
|
1276
|
-
declare function
|
|
1035
|
+
declare function provideSchemaLoaders(loaders: Array<Type<AXPSchemaLoader> | AXPSchemaLoaderConfig>): EnvironmentProviders;
|
|
1277
1036
|
|
|
1278
1037
|
/**
|
|
1279
1038
|
* Schema entry for registration containing definition and optional metadata
|
|
1280
1039
|
*/
|
|
1281
|
-
interface
|
|
1040
|
+
interface AXPSchemaEntry {
|
|
1282
1041
|
/** The schema definition to register */
|
|
1283
|
-
definition:
|
|
1042
|
+
definition: AXPSchemaDefinition;
|
|
1284
1043
|
/** Optional registration options and metadata */
|
|
1285
|
-
options?:
|
|
1044
|
+
options?: AXPSchemaRegistrationOptions;
|
|
1286
1045
|
}
|
|
1287
1046
|
/**
|
|
1288
1047
|
* Provide schema setups for registration during application bootstrap.
|
|
@@ -1295,7 +1054,7 @@ interface AXPPropertyEntry {
|
|
|
1295
1054
|
*
|
|
1296
1055
|
* @example
|
|
1297
1056
|
* ```typescript
|
|
1298
|
-
*
|
|
1057
|
+
* provideSchemaSetups([
|
|
1299
1058
|
* {
|
|
1300
1059
|
* definition: emailSchema,
|
|
1301
1060
|
* options: {
|
|
@@ -1310,7 +1069,7 @@ interface AXPPropertyEntry {
|
|
|
1310
1069
|
* ])
|
|
1311
1070
|
* ```
|
|
1312
1071
|
*/
|
|
1313
|
-
declare function
|
|
1072
|
+
declare function provideSchemaSetups(schemas: AXPSchemaEntry[]): EnvironmentProviders;
|
|
1314
1073
|
/**
|
|
1315
1074
|
* Convenience function to provide a single schema setup.
|
|
1316
1075
|
*
|
|
@@ -1323,13 +1082,13 @@ declare function providePropertySetups(entries: AXPPropertyEntry[]): Environment
|
|
|
1323
1082
|
*
|
|
1324
1083
|
* @example
|
|
1325
1084
|
* ```typescript
|
|
1326
|
-
*
|
|
1085
|
+
* provideSchema(emailSchema, {
|
|
1327
1086
|
* tags: ['user', 'contact'],
|
|
1328
1087
|
* description: 'User email field'
|
|
1329
1088
|
* })
|
|
1330
1089
|
* ```
|
|
1331
1090
|
*/
|
|
1332
|
-
declare function
|
|
1091
|
+
declare function provideSchema(definition: AXPSchemaDefinition, options?: AXPSchemaRegistrationOptions): EnvironmentProviders;
|
|
1333
1092
|
/**
|
|
1334
1093
|
* Provide schema setups from a factory function for dynamic registration.
|
|
1335
1094
|
*
|
|
@@ -1341,7 +1100,7 @@ declare function provideProperty(definition: AXPPropertyDefinition, options?: AX
|
|
|
1341
1100
|
*
|
|
1342
1101
|
* @example
|
|
1343
1102
|
* ```typescript
|
|
1344
|
-
*
|
|
1103
|
+
* provideSchemasFromFactory(async () => {
|
|
1345
1104
|
* const config = await loadConfiguration();
|
|
1346
1105
|
* return config.schemas.map(schema => ({
|
|
1347
1106
|
* definition: schema,
|
|
@@ -1350,14 +1109,14 @@ declare function provideProperty(definition: AXPPropertyDefinition, options?: AX
|
|
|
1350
1109
|
* })
|
|
1351
1110
|
* ```
|
|
1352
1111
|
*/
|
|
1353
|
-
declare function
|
|
1112
|
+
declare function provideSchemasFromFactory(schemaFactory: () => AXPSchemaEntry[] | Promise<AXPSchemaEntry[]>): EnvironmentProviders;
|
|
1354
1113
|
|
|
1355
1114
|
/**
|
|
1356
1115
|
* Middleware entry for registration - can be either a simple function or targeted middleware
|
|
1357
1116
|
*/
|
|
1358
|
-
type
|
|
1117
|
+
type AXPSchemaMiddlewareEntry = AXPSchemaMiddleware | {
|
|
1359
1118
|
target: string | RegExp;
|
|
1360
|
-
middleware:
|
|
1119
|
+
middleware: AXPSchemaMiddleware;
|
|
1361
1120
|
};
|
|
1362
1121
|
/**
|
|
1363
1122
|
* Provide schema middleware for registration in the application.
|
|
@@ -1371,16 +1130,16 @@ type AXPPropertyMiddlewareEntry = AXPPropertyMiddleware | {
|
|
|
1371
1130
|
* @example
|
|
1372
1131
|
* ```typescript
|
|
1373
1132
|
* // Global middleware
|
|
1374
|
-
*
|
|
1133
|
+
* provideSchemaMiddleware([
|
|
1375
1134
|
* (context) => {
|
|
1376
|
-
* if (context.
|
|
1135
|
+
* if (context.schema.dataType === 'string') {
|
|
1377
1136
|
* context.searchable(true);
|
|
1378
1137
|
* }
|
|
1379
1138
|
* }
|
|
1380
1139
|
* ])
|
|
1381
1140
|
*
|
|
1382
1141
|
* // Targeted middleware
|
|
1383
|
-
*
|
|
1142
|
+
* provideSchemaMiddleware([
|
|
1384
1143
|
* {
|
|
1385
1144
|
* target: /^user_/,
|
|
1386
1145
|
* middleware: (context) => context.withMetadata({ category: 'user' })
|
|
@@ -1388,32 +1147,44 @@ type AXPPropertyMiddlewareEntry = AXPPropertyMiddleware | {
|
|
|
1388
1147
|
* ])
|
|
1389
1148
|
* ```
|
|
1390
1149
|
*/
|
|
1391
|
-
declare function
|
|
1150
|
+
declare function provideSchemaMiddleware(middleware: AXPSchemaMiddlewareEntry[]): EnvironmentProviders;
|
|
1392
1151
|
|
|
1393
1152
|
/**
|
|
1394
|
-
*
|
|
1153
|
+
* Injection token for schema-specific middleware extensions.
|
|
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.
|
|
1395
1158
|
*/
|
|
1396
|
-
declare const
|
|
1159
|
+
declare const AXP_SCHEMA_EXTENSION: InjectionToken<{
|
|
1397
1160
|
target: string | RegExp;
|
|
1398
|
-
middleware:
|
|
1161
|
+
middleware: AXPSchemaMiddleware;
|
|
1399
1162
|
}>;
|
|
1400
1163
|
/**
|
|
1401
|
-
*
|
|
1164
|
+
* Injection token for schema setup initialization.
|
|
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.
|
|
1402
1169
|
*/
|
|
1403
|
-
declare const
|
|
1170
|
+
declare const AXP_SCHEMA_SETUP: InjectionToken<void>;
|
|
1404
1171
|
/**
|
|
1405
|
-
*
|
|
1172
|
+
* Injection token for schema middleware setup initialization.
|
|
1173
|
+
*
|
|
1174
|
+
* Used during application bootstrap to register global middleware
|
|
1175
|
+
* that applies to all schema resolutions. This enables centralized
|
|
1176
|
+
* schema processing logic.
|
|
1406
1177
|
*/
|
|
1407
|
-
declare const
|
|
1178
|
+
declare const AXP_SCHEMA_MIDDLEWARE_SETUP: InjectionToken<void>;
|
|
1408
1179
|
/**
|
|
1409
|
-
*
|
|
1180
|
+
* Injection token for schema loader setup initialization.
|
|
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.
|
|
1410
1185
|
*/
|
|
1411
|
-
declare const
|
|
1186
|
+
declare const AXP_SCHEMA_LOADER_SETUP: InjectionToken<void>;
|
|
1412
1187
|
|
|
1413
|
-
/**
|
|
1414
|
-
* Strips entity-only fields so the payload matches {@link AXPPropertyDefinition}.
|
|
1415
|
-
*/
|
|
1416
|
-
declare function toPropertyDefinition(def: AXPEntityPropertyDefinition): AXPPropertyDefinition;
|
|
1417
1188
|
/**
|
|
1418
1189
|
* Runtime model for entity field definitions with parent references and helper methods
|
|
1419
1190
|
*/
|
|
@@ -1423,16 +1194,13 @@ declare class AXPEntityFieldModel {
|
|
|
1423
1194
|
readonly description?: string;
|
|
1424
1195
|
readonly validations?: AXPValidationRules;
|
|
1425
1196
|
readonly actions?: AXPDomainAction[];
|
|
1426
|
-
readonly
|
|
1427
|
-
readonly defaultValue?:
|
|
1428
|
-
|
|
1429
|
-
readonly
|
|
1430
|
-
/** Same as entity field name; aligns with registered property definition name when applicable. */
|
|
1431
|
-
readonly propertyName: string;
|
|
1197
|
+
readonly features?: AXPEntityFieldFeatures;
|
|
1198
|
+
readonly defaultValue?: any;
|
|
1199
|
+
readonly schema: AXPSchemaModel;
|
|
1200
|
+
readonly schemaName: string;
|
|
1432
1201
|
readonly parent: any;
|
|
1433
|
-
readonly
|
|
1434
|
-
|
|
1435
|
-
constructor(definition: AXPEntityPropertyDefinition, parent: any, propertyService: AXPPropertyService);
|
|
1202
|
+
readonly schemaService: AXPSchemaService;
|
|
1203
|
+
constructor(definition: AXPEntityFieldDefinition, parent: any, schemaService: AXPSchemaService);
|
|
1436
1204
|
/**
|
|
1437
1205
|
* Check if field is nullable
|
|
1438
1206
|
*/
|
|
@@ -1470,17 +1238,17 @@ declare class AXPEntityFieldModel {
|
|
|
1470
1238
|
*/
|
|
1471
1239
|
isAuditable(): boolean;
|
|
1472
1240
|
/**
|
|
1473
|
-
*
|
|
1241
|
+
* Get the schema name
|
|
1474
1242
|
*/
|
|
1475
|
-
|
|
1243
|
+
getSchemaName(): string;
|
|
1476
1244
|
/**
|
|
1477
|
-
*
|
|
1245
|
+
* Get schema info from registry
|
|
1478
1246
|
*/
|
|
1479
|
-
|
|
1247
|
+
getSchemaInfo(): any;
|
|
1480
1248
|
/**
|
|
1481
|
-
*
|
|
1249
|
+
* Re-resolve schema from registry (useful after schema updates)
|
|
1482
1250
|
*/
|
|
1483
|
-
|
|
1251
|
+
refreshSchema(): void;
|
|
1484
1252
|
/**
|
|
1485
1253
|
* Get parent entity
|
|
1486
1254
|
*/
|
|
@@ -1507,7 +1275,7 @@ declare class AXPEntityFieldModel {
|
|
|
1507
1275
|
getStatistics(): {
|
|
1508
1276
|
hasValidations: boolean;
|
|
1509
1277
|
hasActions: boolean;
|
|
1510
|
-
|
|
1278
|
+
hasFeatures: boolean;
|
|
1511
1279
|
hasDefaultValue: boolean;
|
|
1512
1280
|
validationCount: number;
|
|
1513
1281
|
actionCount: number;
|
|
@@ -1527,7 +1295,7 @@ declare class AXPEntityFieldModel {
|
|
|
1527
1295
|
/**
|
|
1528
1296
|
* Convert back to interface definition
|
|
1529
1297
|
*/
|
|
1530
|
-
toDefinition():
|
|
1298
|
+
toDefinition(): AXPEntityFieldDefinition;
|
|
1531
1299
|
}
|
|
1532
1300
|
|
|
1533
1301
|
/**
|
|
@@ -1539,8 +1307,8 @@ declare class AXPEntityModel {
|
|
|
1539
1307
|
readonly fields: AXPEntityFieldModel[];
|
|
1540
1308
|
readonly type: AXPEntityType;
|
|
1541
1309
|
readonly parent: any;
|
|
1542
|
-
readonly
|
|
1543
|
-
constructor(definition: AXPEntityDefinition, parent: any,
|
|
1310
|
+
readonly schemaService: AXPSchemaService;
|
|
1311
|
+
constructor(definition: AXPEntityDefinition, parent: any, schemaService: AXPSchemaService);
|
|
1544
1312
|
/**
|
|
1545
1313
|
* Find field by name
|
|
1546
1314
|
*/
|
|
@@ -1549,6 +1317,10 @@ declare class AXPEntityModel {
|
|
|
1549
1317
|
* Get all fields
|
|
1550
1318
|
*/
|
|
1551
1319
|
getAllFields(): AXPEntityFieldModel[];
|
|
1320
|
+
/**
|
|
1321
|
+
* Get fields by data type
|
|
1322
|
+
*/
|
|
1323
|
+
getFieldsByType(dataType: string): AXPEntityFieldModel[];
|
|
1552
1324
|
/**
|
|
1553
1325
|
* Get required fields
|
|
1554
1326
|
*/
|
|
@@ -1614,110 +1386,6 @@ declare class AXPEntityModel {
|
|
|
1614
1386
|
toDefinition(): AXPEntityDefinition;
|
|
1615
1387
|
}
|
|
1616
1388
|
|
|
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
|
-
|
|
1721
1389
|
/**
|
|
1722
1390
|
* Helper utility class for working with module models
|
|
1723
1391
|
*
|
|
@@ -1760,9 +1428,9 @@ declare class AXPModuleHelper {
|
|
|
1760
1428
|
*/
|
|
1761
1429
|
static findFieldsWithDefaultValues(module: AXPModuleModel): AXPEntityFieldModel[];
|
|
1762
1430
|
/**
|
|
1763
|
-
* @deprecated Use AXPDomainService with
|
|
1431
|
+
* @deprecated Use AXPDomainService with field schema queries instead
|
|
1764
1432
|
*/
|
|
1765
|
-
static
|
|
1433
|
+
static findFieldsBySchema(module: AXPModuleModel, schemaName: string): AXPEntityFieldModel[];
|
|
1766
1434
|
/**
|
|
1767
1435
|
* @deprecated Use module.validate() method instead
|
|
1768
1436
|
*/
|
|
@@ -1907,7 +1575,7 @@ declare class AXPDomainRegistry {
|
|
|
1907
1575
|
private readonly _aggregateMiddleware;
|
|
1908
1576
|
private readonly _entityMiddleware;
|
|
1909
1577
|
private _loaders;
|
|
1910
|
-
private readonly
|
|
1578
|
+
private readonly schemaService;
|
|
1911
1579
|
/**
|
|
1912
1580
|
* Resolve a domain object by path with full middleware processing.
|
|
1913
1581
|
* Supports definition-level caching with fresh model creation.
|
|
@@ -2375,5 +2043,5 @@ declare function provideDomainMiddleware(config: {
|
|
|
2375
2043
|
entities?: AXPDomainMiddleware[];
|
|
2376
2044
|
}): EnvironmentProviders;
|
|
2377
2045
|
|
|
2378
|
-
export { AXPAggregateModel,
|
|
2379
|
-
export type { AXPAggregateDefinition, AXPAggregateEntityList,
|
|
2046
|
+
export { AXPAggregateModel, AXPDomainMiddlewareContext, AXPDomainModule, AXPDomainRegistry, AXPDomainService, AXPEntityCommandScope, AXPEntityFieldModel, AXPEntityModel, AXPEntityType, AXPModuleHelper, AXPModuleModel, AXPRelationModel, AXPRelationshipCardinality, AXPRelationshipKind, AXPSchemaMiddlewareContext, AXPSchemaModel, AXPSchemaRegistry, AXPSchemaService, AXP_AGGREGATE_MIDDLEWARE_SETUP, AXP_ENTITY_CRUD_SETUP, AXP_ENTITY_MIDDLEWARE_SETUP, AXP_MODULE_MIDDLEWARE_SETUP, AXP_SCHEMA_EXTENSION, AXP_SCHEMA_LOADER_SETUP, AXP_SCHEMA_MIDDLEWARE_SETUP, AXP_SCHEMA_SETUP, provideAggregateMiddleware, provideDomainLoader, provideDomainLoaders, provideDomainMiddleware, provideEntity, provideEntityMiddleware, provideModuleMiddleware, provideSchema, provideSchemaLoaders, provideSchemaMiddleware, provideSchemaSetups, provideSchemasFromFactory };
|
|
2047
|
+
export type { AXPAggregateDefinition, AXPAggregateEntityList, AXPAggregateRelationDefinition, AXPDomainAction, AXPDomainDefinition, AXPDomainLoader, AXPDomainLoaderConfig, AXPDomainMiddleware, AXPDomainPathInfo, AXPEntityDefinition, AXPEntityFieldDefinition, AXPEntityFieldFeatures, AXPModuleDefinition, AXPRegisteredSchema, AXPSchemaDataType, AXPSchemaDefinition, AXPSchemaEntry, AXPSchemaFeatures, AXPSchemaInterface, AXPSchemaLoader, AXPSchemaLoaderConfig, AXPSchemaMiddleware, AXPSchemaMiddlewareEntry, AXPSchemaRegistrationOptions };
|