@acorex/platform 21.0.0-next.5 → 21.0.0-next.50

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