@acorex/platform 20.8.12 → 20.8.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/{types/acorex-platform-auth.d.ts → auth/index.d.ts} +2 -14
  2. package/{types/acorex-platform-common.d.ts → common/index.d.ts} +30 -302
  3. package/{types/acorex-platform-core.d.ts → core/index.d.ts} +44 -188
  4. package/{types/acorex-platform-domain.d.ts → domain/index.d.ts} +412 -744
  5. package/fesm2022/acorex-platform-auth.mjs +27 -125
  6. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  7. package/fesm2022/{acorex-platform-common-common-settings.provider-Bi1RYif5.mjs → acorex-platform-common-common-settings.provider-DVvuLUfF.mjs} +32 -30
  8. package/fesm2022/acorex-platform-common-common-settings.provider-DVvuLUfF.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-common.mjs +205 -711
  10. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-core.mjs +127 -420
  12. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-domain.mjs +830 -561
  14. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-layout-builder.mjs +114 -634
  16. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  17. 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
  18. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-layout-components.mjs +877 -3362
  20. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-designer.mjs +204 -456
  22. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-entity.mjs +10062 -14672
  24. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  25. package/fesm2022/acorex-platform-layout-views.mjs +171 -413
  26. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  27. package/fesm2022/acorex-platform-layout-widget-core.mjs +441 -507
  28. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  29. 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
  30. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs → acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs} +76 -21
  32. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs.map +1 -0
  33. package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs → acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs} +7 -6
  34. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs → acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs} +12 -12
  36. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs +111 -0
  38. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs.map +1 -0
  39. 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
  40. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs.map +1 -0
  41. 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
  42. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs.map +1 -0
  43. 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
  44. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs.map +1 -0
  45. package/fesm2022/acorex-platform-layout-widgets.mjs +3408 -5611
  46. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  47. package/fesm2022/acorex-platform-native.mjs +7 -8
  48. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  49. package/fesm2022/acorex-platform-runtime.mjs +166 -391
  50. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  51. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs +160 -0
  52. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs.map +1 -0
  53. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D2CtNrSn.mjs +1716 -0
  54. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D2CtNrSn.mjs.map +1 -0
  55. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs +120 -0
  56. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs.map +1 -0
  57. 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
  58. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs.map +1 -0
  59. package/fesm2022/{acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs → acorex-platform-themes-default-error-401.component-53VB-PS_.mjs} +4 -4
  60. package/fesm2022/acorex-platform-themes-default-error-401.component-53VB-PS_.mjs.map +1 -0
  61. package/fesm2022/{acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs → acorex-platform-themes-default-error-404.component-DVF9soT5.mjs} +4 -4
  62. package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs.map +1 -0
  63. package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs +19 -0
  64. package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs.map +1 -0
  65. package/fesm2022/acorex-platform-themes-default.mjs +61 -1784
  66. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  67. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs → acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs} +6 -6
  68. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs.map +1 -0
  69. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs} +6 -6
  70. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs.map +1 -0
  71. package/fesm2022/{acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs → acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs} +25 -24
  72. package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +1 -0
  73. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs +65 -0
  74. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs.map +1 -0
  75. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs +64 -0
  76. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs.map +1 -0
  77. package/fesm2022/acorex-platform-themes-shared.mjs +305 -408
  78. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  79. package/fesm2022/acorex-platform-workflow.mjs +100 -359
  80. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  81. package/fesm2022/acorex-platform.mjs.map +1 -1
  82. package/{types/acorex-platform-layout-builder.d.ts → layout/builder/index.d.ts} +38 -160
  83. package/{types/acorex-platform-layout-components.d.ts → layout/components/index.d.ts} +125 -854
  84. package/{types/acorex-platform-layout-designer.d.ts → layout/designer/index.d.ts} +18 -96
  85. package/{types/acorex-platform-layout-entity.d.ts → layout/entity/index.d.ts} +65 -848
  86. package/{types/acorex-platform-layout-views.d.ts → layout/views/index.d.ts} +47 -80
  87. package/{types/acorex-platform-layout-widget-core.d.ts → layout/widget-core/index.d.ts} +197 -274
  88. package/{types/acorex-platform-layout-widgets.d.ts → layout/widgets/index.d.ts} +124 -608
  89. package/{types/acorex-platform-native.d.ts → native/index.d.ts} +7 -0
  90. package/package.json +36 -36
  91. package/runtime/index.d.ts +307 -0
  92. package/{types/acorex-platform-themes-default.d.ts → themes/default/index.d.ts} +4 -113
  93. package/{types/acorex-platform-themes-shared.d.ts → themes/shared/index.d.ts} +4 -5
  94. package/{types/acorex-platform-workflow.d.ts → workflow/index.d.ts} +81 -162
  95. package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +0 -1
  97. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs.map +0 -1
  98. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +0 -1
  100. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs +0 -116
  102. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs.map +0 -1
  105. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +0 -1
  106. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs +0 -160
  107. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map +0 -1
  108. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs +0 -120
  109. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs.map +0 -1
  110. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs.map +0 -1
  111. package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +0 -1
  112. package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +0 -1
  113. package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +0 -19
  114. package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +0 -1
  115. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs.map +0 -1
  116. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +0 -1
  117. package/fesm2022/acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs.map +0 -1
  118. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +0 -94
  119. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +0 -1
  120. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs +0 -86
  121. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +0 -1
  122. package/types/acorex-platform-runtime.d.ts +0 -571
  123. /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, Type, EnvironmentProviders } from '@angular/core';
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 enum AXPDomainActionSide {
14
- Client = "client",
15
- Server = "server",
16
- Both = "both"
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
- 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 {
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
- 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[];
60
+ fields: AXPEntityFieldDefinition[];
61
+ type: AXPEntityType;
126
62
  }
127
- interface AXPInterfaceDefinitionValue {
128
- name: string;
129
- title: string;
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
- 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;
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
- * Standalone relation definition with full source and target.
165
- * Relations live in their own collection, independent of aggregates.
89
+ * Interface for defining relationships between aggregates
166
90
  */
167
- interface AXPRelationDefinition {
168
- id?: string;
91
+ interface AXPAggregateRelationDefinition {
169
92
  type: AXPRelationshipCardinality;
170
93
  kind: AXPRelationshipKind;
171
- source: {
94
+ target: {
172
95
  aggregate: string;
173
96
  entity: string;
174
97
  key: string;
175
98
  };
176
- target: {
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
- * 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>;
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
- description?: string;
258
- requiredFeatures?: string[];
259
- /** At most one level — matches `AXPPermissionDefinitionProviderContext` fluent API. */
260
- children?: AXPPermissionLeafRecord[];
112
+ entities: AXPEntityDefinition[] | AXPAggregateEntityList | Record<string, string>;
113
+ relations: AXPAggregateRelationDefinition[];
114
+ validations: AXPValidationRules;
115
+ actions: AXPDomainAction[];
261
116
  }
262
- /**
263
- * Serializable permission group for definition stores (Dexie/Firestore).
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
- 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
- }>;
121
+ aggregates: AXPAggregateDefinition[];
280
122
  }
281
123
 
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[];
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
- * 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[];
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
- 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;
148
+ dataType: AXPSchemaDataType;
149
+ interface: AXPSchemaInterface;
150
+ validations?: AXPValidationRules;
151
+ features?: AXPSchemaFeatures;
152
+ metadata?: AXPMetaData;
355
153
  }
356
154
 
357
155
  /**
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).
156
+ * Runtime model for relation definitions with parent references and helper methods
361
157
  */
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;
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
- * Optional bootstrap hooks for registered property definitions (see {@link AXP_PROPERTY_SETUP} and related tokens).
174
+ * Check if relation is one-to-one
473
175
  */
474
- private _propertySetup;
475
- private _propertyMiddlewareSetup;
476
- private _propertyLoaderSetup;
176
+ isOneToOne(): boolean;
477
177
  /**
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.
178
+ * Check if relation is one-to-many
483
179
  */
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;
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
- /** 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[];
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
- * Relations are stored in a separate collection; join when needed.
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
- * Relations are stored in a separate collection. Use relation queries for join when needed.
714
- * @deprecated Relations are no longer nested in aggregates.
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 a {@link AXPPropertyDefinition} with helper methods.
468
+ * Runtime model for schema definitions with helper methods
747
469
  */
748
- declare class AXPPropertyModel {
470
+ declare class AXPSchemaModel {
749
471
  readonly name: string;
750
- readonly title: string;
751
- readonly interface: AXPInterfaceDefinitionValue;
472
+ readonly dataType: AXPSchemaDataType;
473
+ readonly interface: AXPSchemaInterface;
752
474
  readonly validations: AXPValidationRules;
753
- readonly features: AXPPropertyFeatures;
475
+ readonly features: AXPSchemaFeatures;
754
476
  readonly metadata?: AXPMetaData;
755
- readonly description?: string;
756
- readonly icon?: string;
757
- readonly defaultValue?: unknown;
758
- readonly disabled?: boolean;
759
- readonly dataType: AXPDataType;
760
- constructor(definition: AXPPropertyDefinition);
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 the property is disabled
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 property definition structure
543
+ * Validate the schema structure
795
544
  */
796
545
  validate(): Promise<string[]>;
797
546
  /**
798
- * Get property capabilities
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 property summary
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(): AXPPropertyDefinition;
572
+ toDefinition(): AXPSchemaDefinition;
823
573
  }
824
574
 
825
575
  /**
826
- * Loads {@link AXPPropertyDefinition} instances on demand when not registered in {@link AXPPropertyRegistry}.
576
+ * Interface for schema loaders that can provide schemas on-demand
827
577
  */
828
- interface AXPPropertyLoader {
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 registered property name.
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(propertyName: string): boolean;
589
+ canLoad(schemaName: string): boolean;
838
590
  /**
839
- * Loads the property definition for the given name, or null if not found.
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(propertyName: string): Promise<AXPPropertyDefinition | null>;
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 AXPPropertyMiddlewareContext {
870
- private _definition;
871
- constructor(definition: AXPPropertyDefinition);
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 definition(): Readonly<AXPPropertyDefinition>;
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: unknown): this;
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: Record<string, unknown>): this;
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 a property definition during resolution.
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 AXPPropertyMiddleware = (context: AXPPropertyMiddlewareContext) => void | Promise<void>;
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 AXPPropertyRegistrationOptions {
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?: AXPPropertyMiddleware[];
753
+ middleware?: AXPSchemaMiddleware[];
996
754
  }
997
755
  /**
998
756
  * Internal representation of a registered schema with metadata
999
757
  */
1000
- interface AXPRegisteredProperty {
758
+ interface AXPRegisteredSchema {
1001
759
  /** Unique identifier for the schema */
1002
760
  name: string;
1003
761
  /** The actual schema definition */
1004
- definition: AXPPropertyDefinition;
762
+ definition: AXPSchemaDefinition;
1005
763
  /** Registration options and metadata */
1006
- options: AXPPropertyRegistrationOptions;
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 AXPPropertyRegistry {
1020
- private readonly _registrations;
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: AXPPropertyDefinition, options?: AXPPropertyRegistrationOptions): void;
786
+ register(definition: AXPSchemaDefinition, options?: AXPSchemaRegistrationOptions): void;
1029
787
  /**
1030
788
  * Register multiple schemas at once for batch operations
1031
789
  */
1032
- registerBatch(entries: {
790
+ registerBatch(schemas: {
1033
791
  name: string;
1034
- definition: AXPPropertyDefinition;
1035
- options?: AXPPropertyRegistrationOptions;
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<AXPPropertyModel>;
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): AXPPropertyModel;
812
+ resolveSync(name: string): AXPSchemaModel;
1055
813
  /**
1056
814
  * Add global middleware that applies to all schema resolutions
1057
815
  */
1058
- addGlobalMiddleware(middleware: AXPPropertyMiddleware): void;
816
+ addGlobalMiddleware(middleware: AXPSchemaMiddleware): void;
1059
817
  /**
1060
818
  * Remove specific global middleware
1061
819
  */
1062
- removeGlobalMiddleware(middleware: AXPPropertyMiddleware): boolean;
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<AXPPropertyLoader>): void;
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
- getRegisteredProperty(name: string): AXPRegisteredProperty | undefined;
836
+ getSchemaInfo(name: string): AXPRegisteredSchema | undefined;
1079
837
  /**
1080
- * Get all registered properties with their metadata
838
+ * Get all registered schemas with their metadata
1081
839
  */
1082
- getAllRegisteredProperties(): AXPRegisteredProperty[];
840
+ getAllSchemas(): AXPRegisteredSchema[];
1083
841
  /**
1084
- * Find registered properties by tag for categorization
842
+ * Find schemas by tag for categorization
1085
843
  */
1086
- findByTag(tag: string): AXPRegisteredProperty[];
844
+ findByTag(tag: string): AXPRegisteredSchema[];
1087
845
  /**
1088
- * Find registered properties by widget type for widget-specific operations
846
+ * Find schemas by widget type for widget-specific operations
1089
847
  */
1090
- findByWidget(widgetType: string): AXPRegisteredProperty[];
848
+ findByWidget(widgetType: string): AXPRegisteredSchema[];
1091
849
  /**
1092
850
  * Get comprehensive registry statistics
1093
851
  */
1094
852
  getStatistics(): {
1095
- propertyCount: number;
853
+ schemaCount: number;
1096
854
  globalMiddlewareCount: number;
1097
- propertiesByWidget: {
855
+ schemasByWidget: {
1098
856
  [widget: string]: number;
1099
857
  };
1100
- propertiesByTag: {
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<AXPPropertyRegistry, never>;
1129
- static ɵprov: i0.ɵɵInjectableDeclaration<AXPPropertyRegistry>;
886
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPSchemaRegistry, never>;
887
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPSchemaRegistry>;
1130
888
  }
1131
889
 
1132
890
  /**
1133
- * High-level facade for registered property definitions ({@link AXPPropertyDefinition}).
891
+ * High-level facade service for schema operations.
1134
892
  *
1135
- * Wraps {@link AXPPropertyRegistry} with convenience methods for resolution and discovery.
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 AXPPropertyService {
896
+ declare class AXPSchemaService {
1138
897
  private readonly registry;
1139
898
  /**
1140
- * Register a property definition with optional configuration
899
+ * Register a schema with optional configuration
1141
900
  */
1142
- register(definition: AXPPropertyDefinition, options?: AXPPropertyRegistrationOptions): void;
901
+ register(definition: AXPSchemaDefinition, options?: AXPSchemaRegistrationOptions): void;
1143
902
  /**
1144
- * Register multiple property definitions at once
903
+ * Register multiple schemas at once
1145
904
  */
1146
- registerBatch(entries: {
905
+ registerBatch(schemas: {
1147
906
  name: string;
1148
- definition: AXPPropertyDefinition;
1149
- options?: AXPPropertyRegistrationOptions;
907
+ definition: AXPSchemaDefinition;
908
+ options?: AXPSchemaRegistrationOptions;
1150
909
  }[]): void;
1151
910
  /**
1152
- * Remove a property definition from the registry
911
+ * Remove a schema from the registry
1153
912
  */
1154
913
  unregister(name: string): boolean;
1155
914
  /**
1156
- * Check if a property definition is registered by name
915
+ * Check if a schema is registered
1157
916
  */
1158
917
  isRegistered(name: string): boolean;
1159
918
  /**
1160
- * Get all registered property names
919
+ * Get all registered schema names
1161
920
  */
1162
921
  getRegisteredNames(): string[];
1163
922
  /**
1164
- * Clear all registrations and reset the registry
923
+ * Clear all schemas and reset the registry
1165
924
  */
1166
925
  clear(): void;
1167
926
  /**
1168
- * Resolve a registered property by name with full middleware processing
927
+ * Resolve a schema with full middleware processing
1169
928
  */
1170
- resolve(name: string): Promise<AXPPropertyModel>;
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): AXPPropertyModel;
933
+ resolveSync(name: string): AXPSchemaModel;
1175
934
  /**
1176
- * Resolve multiple registered properties for form building and batch operations
935
+ * Resolve multiple schemas for form building and batch operations
1177
936
  */
1178
937
  resolveMultiple(fieldConfigs: {
1179
938
  name: string;
1180
- propertyName: string;
939
+ schemaName: string;
1181
940
  }[]): Promise<{
1182
941
  name: string;
1183
- property: AXPPropertyModel;
942
+ schema: AXPSchemaModel;
1184
943
  }[]>;
1185
944
  /**
1186
- * Add global middleware that applies to all property resolutions
945
+ * Add global middleware that applies to all schema resolutions
1187
946
  */
1188
- addGlobalMiddleware(middleware: AXPPropertyMiddleware): void;
947
+ addGlobalMiddleware(middleware: AXPSchemaMiddleware): void;
1189
948
  /**
1190
949
  * Remove specific global middleware
1191
950
  */
1192
- removeGlobalMiddleware(middleware: AXPPropertyMiddleware): boolean;
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 property definition
957
+ * Get detailed information about a registered schema
1199
958
  */
1200
- getRegisteredProperty(name: string): AXPRegisteredProperty | undefined;
959
+ getSchemaInfo(name: string): AXPRegisteredSchema | undefined;
1201
960
  /**
1202
- * Get all registered property definitions with their metadata
961
+ * Get all registered schemas with their metadata
1203
962
  */
1204
- getAllRegisteredProperties(): AXPRegisteredProperty[];
963
+ getAllSchemas(): AXPRegisteredSchema[];
1205
964
  /**
1206
- * Find registered properties by tag for categorization and grouping
965
+ * Find schemas by tag for categorization and grouping
1207
966
  */
1208
- findByTag(tag: string): AXPRegisteredProperty[];
967
+ findByTag(tag: string): AXPRegisteredSchema[];
1209
968
  /**
1210
- * Find registered properties by widget type for widget-specific operations
969
+ * Find schemas by widget type for widget-specific operations
1211
970
  */
1212
- findByWidget(widgetType: string): AXPRegisteredProperty[];
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
- propertyCount: number;
978
+ schemaCount: number;
1220
979
  globalMiddlewareCount: number;
1221
- propertiesByWidget: {
980
+ schemasByWidget: {
1222
981
  [widget: string]: number;
1223
982
  };
1224
- propertiesByTag: {
983
+ schemasByTag: {
1225
984
  [tag: string]: number;
1226
985
  };
1227
986
  };
1228
987
  /**
1229
- * Validate that all referenced property names exist in the registry
988
+ * Validate that all referenced schemas exist in the registry
1230
989
  */
1231
- validatePropertyReferences(propertyNames: string[]): {
990
+ validateSchemaReferences(schemaNames: string[]): {
1232
991
  valid: boolean;
1233
- missingPropertyNames: string[];
992
+ missingSchemas: string[];
1234
993
  };
1235
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPPropertyService, never>;
1236
- static ɵprov: i0.ɵɵInjectableDeclaration<AXPPropertyService>;
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 AXPPropertyLoaderConfig {
1001
+ interface AXPSchemaLoaderConfig {
1243
1002
  /** The loader class to instantiate */
1244
- loader: Type<AXPPropertyLoader>;
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
- * providePropertyLoaders([
1023
+ * provideSchemaLoaders([
1265
1024
  * HttpSchemaLoader,
1266
1025
  * FileSystemSchemaLoader
1267
1026
  * ])
1268
1027
  *
1269
1028
  * // With priority configuration
1270
- * providePropertyLoaders([
1029
+ * provideSchemaLoaders([
1271
1030
  * { loader: HttpSchemaLoader, priority: 10 },
1272
1031
  * { loader: FileSystemSchemaLoader, priority: 5 }
1273
1032
  * ])
1274
1033
  * ```
1275
1034
  */
1276
- declare function providePropertyLoaders(loaders: Array<Type<AXPPropertyLoader> | AXPPropertyLoaderConfig>): EnvironmentProviders;
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 AXPPropertyEntry {
1040
+ interface AXPSchemaEntry {
1282
1041
  /** The schema definition to register */
1283
- definition: AXPPropertyDefinition;
1042
+ definition: AXPSchemaDefinition;
1284
1043
  /** Optional registration options and metadata */
1285
- options?: AXPPropertyRegistrationOptions;
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
- * providePropertySetups([
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 providePropertySetups(entries: AXPPropertyEntry[]): EnvironmentProviders;
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
- * provideProperty(emailSchema, {
1085
+ * provideSchema(emailSchema, {
1327
1086
  * tags: ['user', 'contact'],
1328
1087
  * description: 'User email field'
1329
1088
  * })
1330
1089
  * ```
1331
1090
  */
1332
- declare function provideProperty(definition: AXPPropertyDefinition, options?: AXPPropertyRegistrationOptions): EnvironmentProviders;
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
- * providePropertiesFromFactory(async () => {
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 providePropertiesFromFactory(factory: () => AXPPropertyEntry[] | Promise<AXPPropertyEntry[]>): EnvironmentProviders;
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 AXPPropertyMiddlewareEntry = AXPPropertyMiddleware | {
1117
+ type AXPSchemaMiddlewareEntry = AXPSchemaMiddleware | {
1359
1118
  target: string | RegExp;
1360
- middleware: AXPPropertyMiddleware;
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
- * providePropertyMiddleware([
1133
+ * provideSchemaMiddleware([
1375
1134
  * (context) => {
1376
- * if (context.definition.dataType === 'string') {
1135
+ * if (context.schema.dataType === 'string') {
1377
1136
  * context.searchable(true);
1378
1137
  * }
1379
1138
  * }
1380
1139
  * ])
1381
1140
  *
1382
1141
  * // Targeted middleware
1383
- * providePropertyMiddleware([
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 providePropertyMiddleware(middleware: AXPPropertyMiddlewareEntry[]): EnvironmentProviders;
1150
+ declare function provideSchemaMiddleware(middleware: AXPSchemaMiddlewareEntry[]): EnvironmentProviders;
1392
1151
 
1393
1152
  /**
1394
- * Targeted middleware extension (name or regex) for property resolution.
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 AXP_PROPERTY_EXTENSION: InjectionToken<{
1159
+ declare const AXP_SCHEMA_EXTENSION: InjectionToken<{
1397
1160
  target: string | RegExp;
1398
- middleware: AXPPropertyMiddleware;
1161
+ middleware: AXPSchemaMiddleware;
1399
1162
  }>;
1400
1163
  /**
1401
- * Bootstrap hook: register property definitions known at build time.
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 AXP_PROPERTY_SETUP: InjectionToken<void>;
1170
+ declare const AXP_SCHEMA_SETUP: InjectionToken<void>;
1404
1171
  /**
1405
- * Bootstrap hook: register global middleware for every property resolution.
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 AXP_PROPERTY_MIDDLEWARE_SETUP: InjectionToken<void>;
1178
+ declare const AXP_SCHEMA_MIDDLEWARE_SETUP: InjectionToken<void>;
1408
1179
  /**
1409
- * Bootstrap hook: register on-demand property loaders.
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 AXP_PROPERTY_LOADER_SETUP: InjectionToken<void>;
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 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;
1197
+ readonly features?: AXPEntityFieldFeatures;
1198
+ readonly defaultValue?: any;
1199
+ readonly schema: AXPSchemaModel;
1200
+ readonly schemaName: string;
1432
1201
  readonly parent: any;
1433
- readonly propertyService: AXPPropertyService;
1434
- private readonly entityPropertyDefinition;
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
- * Registered property name (same as entity field name in the embedded model).
1241
+ * Get the schema name
1474
1242
  */
1475
- getPropertyName(): string;
1243
+ getSchemaName(): string;
1476
1244
  /**
1477
- * Registration metadata when this field's definition name is registered; otherwise embedded summary.
1245
+ * Get schema info from registry
1478
1246
  */
1479
- getPropertyInfo(): unknown;
1247
+ getSchemaInfo(): any;
1480
1248
  /**
1481
- * Rebuild the property model from embedded definition (e.g. after definition updates).
1249
+ * Re-resolve schema from registry (useful after schema updates)
1482
1250
  */
1483
- refreshProperty(): void;
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
- hasFieldFeatures: boolean;
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(): AXPEntityPropertyDefinition;
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 propertyService: AXPPropertyService;
1543
- constructor(definition: AXPEntityDefinition, parent: any, propertyService: AXPPropertyService);
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 registered property name queries instead
1431
+ * @deprecated Use AXPDomainService with field schema queries instead
1764
1432
  */
1765
- static findFieldsByRegisteredPropertyName(module: AXPModuleModel, propertyName: string): AXPEntityFieldModel[];
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 propertyService;
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, 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 };
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 };