@acorex/platform 21.0.0-next.39 → 21.0.0-next.41

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 (59) hide show
  1. package/fesm2022/acorex-platform-common.mjs +6 -2
  2. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-core.mjs +8 -1
  4. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-domain.mjs +3 -0
  6. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-layout-builder.mjs +137 -34
  8. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-components.mjs +25 -13
  10. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-designer.mjs +261 -58
  12. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-entity.mjs +1583 -632
  14. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-layout-widget-core.mjs +169 -85
  16. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  17. package/fesm2022/{acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs → acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs} +9 -4
  18. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-layout-widgets.mjs +1053 -409
  20. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-runtime.mjs +120 -9
  22. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  23. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs → acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs} +3 -3
  24. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map +1 -0
  25. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs → acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs} +3 -3
  26. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs → acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs} +3 -3
  28. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-themes-default.mjs +10 -10
  30. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  31. package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs} +2 -2
  32. package/fesm2022/acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +94 -0
  34. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs} +38 -16
  36. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-themes-shared.mjs +183 -84
  38. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  39. package/fesm2022/acorex-platform-workflow.mjs +52 -11
  40. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  41. package/package.json +1 -1
  42. package/types/acorex-platform-common.d.ts +14 -10
  43. package/types/acorex-platform-core.d.ts +13 -2
  44. package/types/acorex-platform-domain.d.ts +28 -2
  45. package/types/acorex-platform-layout-builder.d.ts +61 -29
  46. package/types/acorex-platform-layout-designer.d.ts +88 -16
  47. package/types/acorex-platform-layout-entity.d.ts +190 -15
  48. package/types/acorex-platform-layout-widget-core.d.ts +81 -71
  49. package/types/acorex-platform-layout-widgets.d.ts +131 -54
  50. package/types/acorex-platform-runtime.d.ts +156 -61
  51. package/types/acorex-platform-workflow.d.ts +37 -2
  52. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs.map +0 -1
  53. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs.map +0 -1
  54. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs.map +0 -1
  55. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs.map +0 -1
  56. package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
  57. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs +0 -65
  58. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs.map +0 -1
  59. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs.map +0 -1
@@ -12,14 +12,98 @@ function defineCommand(definition) {
12
12
  }
13
13
  //#endregion
14
14
 
15
- /**
16
- * Build-time command metadata only. Safe under Node (e.g. generate-runtime-catalog) without loading the command executor stack.
17
- * Sidecars should import `defineCommand` from here or from `@acorex/platform/runtime/catalog-command-definition`.
18
- */
15
+ //#region ---- Shared catalog categories (queries & commands) ----
16
+ const AXP_CATALOG_DEFINITION_CATEGORY_PLATFORM = {
17
+ name: 'platform',
18
+ order: 1,
19
+ title: 'Platform',
20
+ };
21
+ const AXP_CATALOG_DEFINITION_CATEGORY_ENTITY = {
22
+ name: 'entity',
23
+ order: 2,
24
+ title: 'Entity',
25
+ };
26
+ const AXP_CATALOG_DEFINITION_CATEGORY_STORAGE = {
27
+ name: 'storage',
28
+ order: 3,
29
+ title: 'Storage',
30
+ };
31
+ const AXP_CATALOG_DEFINITION_CATEGORY_WIDGETS = {
32
+ name: 'widgets',
33
+ order: 4,
34
+ title: 'Widgets',
35
+ };
36
+ const AXP_CATALOG_DEFINITION_CATEGORY_WORKFLOW = {
37
+ name: 'workflow',
38
+ order: 5,
39
+ title: 'Workflow',
40
+ };
41
+ const AXP_CATALOG_DEFINITION_CATEGORY_UTILITY = {
42
+ name: 'utility',
43
+ order: 6,
44
+ title: 'Utility',
45
+ };
46
+ const AXP_CATALOG_DEFINITION_CATEGORY_SETTINGS = {
47
+ name: 'settings',
48
+ order: 7,
49
+ title: 'Settings',
50
+ };
51
+ const AXP_CATALOG_DEFINITION_CATEGORY_AI_TOOLS = {
52
+ name: 'ai-tools',
53
+ order: 8,
54
+ title: 'AI tools',
55
+ };
56
+ const AXP_CATALOG_DEFINITION_CATEGORY_SECURITY = {
57
+ name: 'security',
58
+ order: 9,
59
+ title: 'Security',
60
+ };
61
+ const AXP_CATALOG_DEFINITION_CATEGORY_DATA_MANAGEMENT = {
62
+ name: 'data-management',
63
+ order: 10,
64
+ title: 'Data management',
65
+ };
66
+ const AXP_CATALOG_DEFINITION_CATEGORY_ASSESSMENT = {
67
+ name: 'assessment',
68
+ order: 11,
69
+ title: 'Assessment',
70
+ };
71
+ const AXP_CATALOG_DEFINITION_CATEGORY_REPORT = {
72
+ name: 'report',
73
+ order: 12,
74
+ title: 'Report',
75
+ };
76
+ const AXP_CATALOG_DEFINITION_CATEGORY_ORGANIZATION = {
77
+ name: 'organization',
78
+ order: 13,
79
+ title: 'Organization',
80
+ };
81
+ const AXP_CATALOG_DEFINITION_CATEGORY_TENANT = {
82
+ name: 'tenant',
83
+ order: 14,
84
+ title: 'Tenant',
85
+ };
86
+ const AXP_CATALOG_DEFINITION_CATEGORY_HUMAN_CAPITAL = {
87
+ name: 'human-capital',
88
+ order: 15,
89
+ title: 'Human capital',
90
+ };
91
+ const AXP_CATALOG_DEFINITION_CATEGORY_PRODUCT = {
92
+ name: 'product',
93
+ order: 16,
94
+ title: 'Product',
95
+ };
96
+ const AXP_CATALOG_DEFINITION_CATEGORY_FILE_WIDGET = {
97
+ name: 'file-widget',
98
+ order: 17,
99
+ title: 'File widget',
100
+ };
101
+ //#endregion
19
102
 
20
103
  /**
21
- * Shared build-time metadata shapes for command and query catalog definitions.
22
- * Lives under `shared/` so secondary ng-packagr entries under `commands/` or `queries/` share a common `src/lib` compilation root.
104
+ * Shared build-time catalog metadata for command, query, and widget definition sidecars
105
+ * (`defineCommand`, `defineQuery`, `defineWidget`).
106
+ * Lives under `shared/` so consumers import one module without a "command" prefix on generic shapes.
23
107
  */
24
108
  //#endregion
25
109
 
@@ -30,9 +114,15 @@ function defineCommand(definition) {
30
114
  * Do not import from Angular templates; sidecars may import `defineCommand` from `@acorex/platform/runtime`.
31
115
  *
32
116
  * Query metadata (fetch-only, no outcomes) is defined in `../queries/query-definition.types.ts` with `defineQuery`.
117
+ * Widget metadata sidecars use `../widgets/widget-definition.types.ts` with `defineWidget`.
33
118
  */
34
119
  //#endregion
35
120
 
121
+ /**
122
+ * Build-time command metadata only. Safe under Node (e.g. generate-runtime-catalog) without loading the command executor stack.
123
+ * Sidecars should import `defineCommand` from `@acorex/platform/runtime` (or this module for deep imports).
124
+ */
125
+
36
126
  //#region ---- Imports ----
37
127
  //#endregion
38
128
  const COMMAND_EXECUTION_EVENT_KEY = '@commands:execution';
@@ -303,7 +393,7 @@ function defineQuery(definition) {
303
393
 
304
394
  /**
305
395
  * Build-time query metadata only. Safe under Node (e.g. generate-runtime-catalog) without loading the query executor stack.
306
- * Sidecars should import `defineQuery` from here or from `@acorex/platform/runtime/catalog-query-definition`.
396
+ * Sidecars should import `defineQuery` from `@acorex/platform/runtime` (or this module for deep imports).
307
397
  */
308
398
 
309
399
  // queries/query.registry.ts
@@ -405,7 +495,7 @@ function provideQuerySetups(entries) {
405
495
  /**
406
496
  * Build-time query metadata for AXPQuery implementations.
407
497
  * Mirrors command metadata shape except there are no `outcomes` (queries only `fetch`).
408
- * `inputs` / `outputs` are schema rows (same family as entity optionDefinitions).
498
+ * Shares {@link AXPCatalogMetadataDefinitionBase} with commands and widgets; `inputs` / `outputs` live on the base.
409
499
  */
410
500
  //#endregion
411
501
 
@@ -491,6 +581,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
491
581
  args: [{ providedIn: 'root' }]
492
582
  }] });
493
583
 
584
+ //#region ---- defineWidget ----
585
+ /**
586
+ * Typed identity helper for widget metadata sidecars.
587
+ */
588
+ function defineWidget(definition) {
589
+ return definition;
590
+ }
591
+ //#endregion
592
+
593
+ /**
594
+ * Build-time widget metadata only. Safe for tooling without loading layout widget components.
595
+ * Sidecars should import `defineWidget` from `@acorex/platform/runtime` (or this module for deep imports).
596
+ */
597
+
598
+ /**
599
+ * Build-time widget metadata sidecars (parallel to {@link AXPWidgetConfig} in layout/widget-core).
600
+ * Extends {@link AXPCatalogMetadataDefinitionBase}; `inputs` / `outputs` use the same schema rows as commands/queries.
601
+ * Sidecars may import `defineWidget` from `@acorex/platform/runtime`.
602
+ */
603
+ //#endregion
604
+
494
605
  function composeViewMiddlewares(middlewares) {
495
606
  return (handler) => {
496
607
  let composed = handler;
@@ -895,5 +1006,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
895
1006
  * Generated bundle index. Do not edit.
896
1007
  */
897
1008
 
898
- export { AXPCommandEventsService, AXPCommandExecutor, AXPCommandRegistry, AXPCommandService, AXPPolicyEngineContext, AXPPolicyEngineDirective, AXPPolicyEngineRegistry, AXPPolicyEngineService, AXPQueryExecutor, AXPQueryRegistry, AXPQueryService, AXPRuntimeModule, AXPViewExecutor, AXPViewRegistry, AXPViewService, AXP_COMMAND_EXTENSION, AXP_COMMAND_MIDDLEWARE_SETUP, AXP_COMMAND_SETUP, AXP_POLICY_ENGINE_MIDDLEWARE_SETUP, AXP_POLICY_EXTENSION, AXP_QUERY_EXTENSION, AXP_QUERY_MIDDLEWARE_SETUP, AXP_QUERY_SETUP, AXP_VIEW_EXTENSION, AXP_VIEW_SETUP, composeCommandMiddlewares, composePolicyEngineMiddlewares, composeQueryMiddlewares, composeViewMiddlewares, defineCommand, defineQuery, provideCommand, provideCommandMiddleware, provideCommandSetups, providePolicySetups, provideQueryMiddleware, provideQuerySetups, provideViewSetup, provideViewSetups };
1009
+ export { AXPCommandEventsService, AXPCommandExecutor, AXPCommandRegistry, AXPCommandService, AXPPolicyEngineContext, AXPPolicyEngineDirective, AXPPolicyEngineRegistry, AXPPolicyEngineService, AXPQueryExecutor, AXPQueryRegistry, AXPQueryService, AXPRuntimeModule, AXPViewExecutor, AXPViewRegistry, AXPViewService, AXP_CATALOG_DEFINITION_CATEGORY_AI_TOOLS as AXP_COMMAND_DEFINITION_CATEGORY_AI_TOOLS, AXP_CATALOG_DEFINITION_CATEGORY_ASSESSMENT as AXP_COMMAND_DEFINITION_CATEGORY_ASSESSMENT, AXP_CATALOG_DEFINITION_CATEGORY_DATA_MANAGEMENT as AXP_COMMAND_DEFINITION_CATEGORY_DATA_MANAGEMENT, AXP_CATALOG_DEFINITION_CATEGORY_ENTITY as AXP_COMMAND_DEFINITION_CATEGORY_ENTITY, AXP_CATALOG_DEFINITION_CATEGORY_FILE_WIDGET as AXP_COMMAND_DEFINITION_CATEGORY_FILE_WIDGET, AXP_CATALOG_DEFINITION_CATEGORY_HUMAN_CAPITAL as AXP_COMMAND_DEFINITION_CATEGORY_HUMAN_CAPITAL, AXP_CATALOG_DEFINITION_CATEGORY_ORGANIZATION as AXP_COMMAND_DEFINITION_CATEGORY_ORGANIZATION, AXP_CATALOG_DEFINITION_CATEGORY_PLATFORM as AXP_COMMAND_DEFINITION_CATEGORY_PLATFORM, AXP_CATALOG_DEFINITION_CATEGORY_PRODUCT as AXP_COMMAND_DEFINITION_CATEGORY_PRODUCT, AXP_CATALOG_DEFINITION_CATEGORY_REPORT as AXP_COMMAND_DEFINITION_CATEGORY_REPORT, AXP_CATALOG_DEFINITION_CATEGORY_SECURITY as AXP_COMMAND_DEFINITION_CATEGORY_SECURITY, AXP_CATALOG_DEFINITION_CATEGORY_SETTINGS as AXP_COMMAND_DEFINITION_CATEGORY_SETTINGS, AXP_CATALOG_DEFINITION_CATEGORY_STORAGE as AXP_COMMAND_DEFINITION_CATEGORY_STORAGE, AXP_CATALOG_DEFINITION_CATEGORY_TENANT as AXP_COMMAND_DEFINITION_CATEGORY_TENANT, AXP_CATALOG_DEFINITION_CATEGORY_UTILITY as AXP_COMMAND_DEFINITION_CATEGORY_UTILITY, AXP_CATALOG_DEFINITION_CATEGORY_WORKFLOW as AXP_COMMAND_DEFINITION_CATEGORY_WORKFLOW, AXP_COMMAND_EXTENSION, AXP_COMMAND_MIDDLEWARE_SETUP, AXP_COMMAND_SETUP, AXP_POLICY_ENGINE_MIDDLEWARE_SETUP, AXP_POLICY_EXTENSION, AXP_CATALOG_DEFINITION_CATEGORY_ENTITY as AXP_QUERY_DEFINITION_CATEGORY_ENTITY, AXP_CATALOG_DEFINITION_CATEGORY_PLATFORM as AXP_QUERY_DEFINITION_CATEGORY_PLATFORM, AXP_CATALOG_DEFINITION_CATEGORY_STORAGE as AXP_QUERY_DEFINITION_CATEGORY_STORAGE, AXP_CATALOG_DEFINITION_CATEGORY_WIDGETS as AXP_QUERY_DEFINITION_CATEGORY_WIDGETS, AXP_QUERY_EXTENSION, AXP_QUERY_MIDDLEWARE_SETUP, AXP_QUERY_SETUP, AXP_VIEW_EXTENSION, AXP_VIEW_SETUP, composeCommandMiddlewares, composePolicyEngineMiddlewares, composeQueryMiddlewares, composeViewMiddlewares, defineCommand, defineQuery, defineWidget, provideCommand, provideCommandMiddleware, provideCommandSetups, providePolicySetups, provideQueryMiddleware, provideQuerySetups, provideViewSetup, provideViewSetups };
899
1010
  //# sourceMappingURL=acorex-platform-runtime.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-runtime.mjs","sources":["../../../../libs/platform/runtime/src/lib/commands/define-command.ts","../../../../libs/platform/runtime/src/lib/commands/catalog-command-definition.ts","../../../../libs/platform/runtime/src/lib/shared/catalog-metadata.types.ts","../../../../libs/platform/runtime/src/lib/commands/command-definition.types.ts","../../../../libs/platform/runtime/src/lib/commands/command-events.service.ts","../../../../libs/platform/runtime/src/lib/commands/command.middleware.ts","../../../../libs/platform/runtime/src/lib/commands/command.registry.ts","../../../../libs/platform/runtime/src/lib/commands/command.extension.token.ts","../../../../libs/platform/runtime/src/lib/commands/command.executor.ts","../../../../libs/platform/runtime/src/lib/commands/command.service.ts","../../../../libs/platform/runtime/src/lib/commands/provide-command-middleware.ts","../../../../libs/platform/runtime/src/lib/commands/provide-command-setups.ts","../../../../libs/platform/runtime/src/lib/queries/define-query.ts","../../../../libs/platform/runtime/src/lib/queries/catalog-query-definition.ts","../../../../libs/platform/runtime/src/lib/queries/query.registry.ts","../../../../libs/platform/runtime/src/lib/queries/query.extension.token.ts","../../../../libs/platform/runtime/src/lib/queries/provide-query-middleware.ts","../../../../libs/platform/runtime/src/lib/queries/provide-query-setups.ts","../../../../libs/platform/runtime/src/lib/queries/query-definition.types.ts","../../../../libs/platform/runtime/src/lib/queries/query.middleware.ts","../../../../libs/platform/runtime/src/lib/queries/query.executor.ts","../../../../libs/platform/runtime/src/lib/queries/query.service.ts","../../../../libs/platform/runtime/src/lib/views/view.middleware.ts","../../../../libs/platform/runtime/src/lib/views/view.registry.ts","../../../../libs/platform/runtime/src/lib/views/view.extension.token.ts","../../../../libs/platform/runtime/src/lib/views/view.executor.ts","../../../../libs/platform/runtime/src/lib/views/view.service.ts","../../../../libs/platform/runtime/src/lib/views/provide-view-setups.ts","../../../../libs/platform/runtime/src/lib/policy/policy.middleware.ts","../../../../libs/platform/runtime/src/lib/policy/policy.interface.ts","../../../../libs/platform/runtime/src/lib/policy/policy.extension.token.ts","../../../../libs/platform/runtime/src/lib/policy/policy.registry.ts","../../../../libs/platform/runtime/src/lib/policy/policy.service.ts","../../../../libs/platform/runtime/src/lib/policy/policy.directive.ts","../../../../libs/platform/runtime/src/lib/policy/policy-middleware-provider.ts","../../../../libs/platform/runtime/src/lib/views/provide-view-middleware.ts","../../../../libs/platform/runtime/src/lib/runtime.module.ts","../../../../libs/platform/runtime/src/index.ts","../../../../libs/platform/runtime/src/acorex-platform-runtime.ts"],"sourcesContent":["import type { AXPCommandMetadataDefinition } from './command-definition.types';\n\n//#region ---- defineCommand ----\n\n/**\n * Typed identity helper for command metadata sidecars.\n */\nexport function defineCommand<T extends AXPCommandMetadataDefinition>(definition: T): T {\n return definition;\n}\n\n//#endregion\n","/**\n * Build-time command metadata only. Safe under Node (e.g. generate-runtime-catalog) without loading the command executor stack.\n * Sidecars should import `defineCommand` from here or from `@acorex/platform/runtime/catalog-command-definition`.\n */\nexport { defineCommand } from './define-command';\nexport type {\n AXPCommandAiContractsMetadata,\n AXPCommandAiMetadata,\n AXPCommandAiNextStepMetadata,\n AXPCommandAiPerformanceCost,\n AXPCommandAiPerformanceMetadata,\n AXPCommandAiResultSemanticsMetadata,\n AXPCommandAiSafetyKind,\n AXPCommandAiSafetyMetadata,\n AXPCommandAiUsageMetadata,\n AXPCommandCapability,\n AXPCommandExecutionMode,\n AXPCommandInterfaceDefinitionValue,\n AXPCommandMetadataDefinition,\n AXPCommandOutcomeDefinition,\n AXPCommandSchemaPropertyDefinition,\n AXPCommandValidationRuleValue,\n} from './command-definition.types';\n","/**\n * Shared build-time metadata shapes for command and query catalog definitions.\n * Lives under `shared/` so secondary ng-packagr entries under `commands/` or `queries/` share a common `src/lib` compilation root.\n */\n\n//#region ---- Schema row ----\n\n/** Command metadata validation: rule key + optional rule options only. */\nexport interface AXPCommandValidationRuleValue {\n rule: string;\n options?: Record<string, unknown>;\n}\n\n/**\n * Widget/interface reference for a schema property (name + optional widget options).\n */\nexport interface AXPCommandInterfaceDefinitionValue {\n name: string;\n options?: Record<string, unknown>;\n}\n\n/**\n * One input/output property description (same structural role as AXPPropertyDefinition).\n */\nexport interface AXPCommandSchemaPropertyDefinition {\n name: string;\n title: string;\n description?: string;\n icon?: string;\n defaultValue?: unknown;\n disabled?: boolean;\n interface: AXPCommandInterfaceDefinitionValue;\n validations?: AXPCommandValidationRuleValue[];\n}\n\n//#endregion\n\n//#region ---- AI ----\n\n/** Structured usage hints for planners and assistants (prefer over duplicating rules only in `description`). */\nexport interface AXPCommandAiUsageMetadata {\n whenToUse?: string[];\n avoidWhen?: string[];\n /** Registry keys or tool names that commonly follow this command/query. */\n followUpTools?: string[];\n}\n\n/** Declarative contracts: what the tool provides, who depends on it, and guarantees (not workflow `outcomes`). */\nexport interface AXPCommandAiContractsMetadata {\n provides?: string[];\n requiredBy?: string[];\n guarantees?: string[];\n}\n\nexport type AXPCommandAiSafetyKind = 'read-only' | 'mutating';\n\nexport interface AXPCommandAiSafetyMetadata {\n kind?: AXPCommandAiSafetyKind;\n sideEffects?: boolean;\n requiresConfirmation?: boolean;\n}\n\nexport type AXPCommandAiPerformanceCost = 'low' | 'medium' | 'high';\n\nexport interface AXPCommandAiPerformanceMetadata {\n cost?: AXPCommandAiPerformanceCost;\n cacheable?: boolean;\n}\n\nexport interface AXPCommandAiNextStepMetadata {\n when: string;\n action: string;\n}\n\n/**\n * How to interpret a successful payload for agents (documentation only; not command workflow outcomes).\n */\nexport interface AXPCommandAiResultSemanticsMetadata {\n noMatch?: string;\n exactMatch?: string;\n multipleMatches?: string;\n failed?: string;\n /** Full catalog listing (e.g. no entity filter). */\n catalog?: string;\n}\n\nexport interface AXPCommandAiMetadata {\n shortDescription?: string;\n tags?: string[];\n usage?: AXPCommandAiUsageMetadata;\n contracts?: AXPCommandAiContractsMetadata;\n safety?: AXPCommandAiSafetyMetadata;\n performance?: AXPCommandAiPerformanceMetadata;\n nextSteps?: AXPCommandAiNextStepMetadata[];\n resultSemantics?: AXPCommandAiResultSemanticsMetadata;\n /**\n * Default input fragment merged for AI/tool invocations (catalog & tooling).\n * Runtime merge for a given command is applied in the AI module (not the generic command executor).\n */\n toolInputDefaults?: Record<string, unknown>;\n /**\n * Optional JSON Schema fragment for LLM tool `parameters` (OpenAI-style function calling).\n * Merged over the auto-generated schema from catalog `inputs` (`properties` / `required` deep-merged).\n * Use when widget-to-type inference is insufficient (e.g. `object`, `array`, `enum`, `format`).\n */\n toolParametersSchema?: Record<string, unknown>;\n}\n\n//#endregion\n\n//#region ---- Execution / capabilities ----\n\nexport type AXPCommandExecutionMode = 'frontend' | 'backend' | 'both';\n\n/**\n * Where this command is intended to appear in product tooling (AI agents, workflow automation pickers, etc.).\n * Omitted = not declared here; runtimes may fall back to other metadata (e.g. `ai.tags`).\n */\nexport type AXPCommandCapability = 'ai' | 'workflow';\n\n//#endregion\n","/**\n * Build-time command metadata for AXPCommand implementations.\n * `inputs` / `outputs` are schema rows (same family as entity optionDefinitions).\n * Validation entries: only `rule` name and optional `options` (no title/message on rules).\n * Do not import from Angular templates; sidecars may import `defineCommand` from `@acorex/platform/runtime`.\n *\n * Query metadata (fetch-only, no outcomes) is defined in `../queries/query-definition.types.ts` with `defineQuery`.\n */\n\nimport type {\n AXPCommandAiMetadata,\n AXPCommandCapability,\n AXPCommandExecutionMode,\n AXPCommandSchemaPropertyDefinition,\n} from '../shared/catalog-metadata.types';\n\nexport * from '../shared/catalog-metadata.types';\n\n//#region ---- Outcomes ----\n\nexport type AXPCommandOutcomeDefinition =\n | {\n mode: 'static';\n values: string[];\n }\n | {\n mode: 'dynamic';\n summary: string;\n derivesFrom: string;\n examples?: string[];\n };\n\n//#endregion\n\n//#region ---- Root ----\n\nexport interface AXPCommandMetadataDefinition {\n /** Runtime registration key (provideCommand / provideCommandSetups). */\n key: string;\n title: string;\n description: string;\n executionMode: AXPCommandExecutionMode;\n /** Input parameters as schema rows. */\n inputs?: AXPCommandSchemaPropertyDefinition[];\n /** Output shape as schema rows. */\n outputs?: AXPCommandSchemaPropertyDefinition[];\n outcomes: AXPCommandOutcomeDefinition;\n ai?: AXPCommandAiMetadata;\n /** Optional list of surfaces that may list or invoke this command as a tool/activity. */\n capabilities?: AXPCommandCapability[];\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPBroadcastEventService } from '@acorex/platform/core';\nimport { AXPDistributedEventListenerService } from '@acorex/platform/core';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport type AXPCommandExecutionStage = 'before' | 'after';\n\nexport interface AXPCommandExecutionEvent<TInput = unknown, TResult = unknown> {\n stage: AXPCommandExecutionStage;\n key: string;\n input: TInput;\n success?: boolean;\n result?: AXPExecuteCommandResult<TResult> | null;\n error?: unknown;\n}\n\ntype CommandExecutionHandler<TInput, TResult> = (event: AXPCommandExecutionEvent<TInput, TResult>) => void;\n\n//#endregion\n\nconst COMMAND_EXECUTION_EVENT_KEY = '@commands:execution';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCommandEventsService {\n //#region ---- Services & Dependencies ----\n\n private readonly broadcast = inject(AXPBroadcastEventService);\n private readonly distributedEvents = inject(AXPDistributedEventListenerService, { optional: true });\n\n //#endregion\n\n //#region ---- Public API ----\n\n listen<TInput = unknown, TResult = unknown>(\n handler: CommandExecutionHandler<TInput, TResult>,\n ): () => void {\n const subscription = this.broadcast\n .listen<AXPCommandExecutionEvent<TInput, TResult>>(COMMAND_EXECUTION_EVENT_KEY)\n .subscribe(({ data }) => handler(data));\n\n return () => subscription.unsubscribe();\n }\n\n async emit<TInput = unknown, TResult = unknown>(\n event: AXPCommandExecutionEvent<TInput, TResult>,\n ): Promise<void> {\n this.broadcast.publish(COMMAND_EXECUTION_EVENT_KEY, event);\n await this.distributedEvents?.dispatch(COMMAND_EXECUTION_EVENT_KEY, event);\n }\n\n //#endregion\n}\n\n//#endregion\n\n","import { AXPExecuteCommandResult } from '@acorex/platform/core';\n\n//#region ---- Middleware Types ----\n\n/**\n * Represents a middleware function in the command execution pipeline.\n */\nexport type AXPCommandMiddleware<TInput = any, TResult = any> = (\n input: TInput,\n next: (input: TInput) => Promise<AXPExecuteCommandResult<TResult>>\n) => Promise<AXPExecuteCommandResult<TResult>>;\n\n//#endregion\n\n//#region ---- Middleware Composition ----\n\n/**\n * Creates a composed handler by chaining the provided command middlewares.\n */\nexport function composeCommandMiddlewares<TInput, TResult>(\n middlewares: AXPCommandMiddleware<TInput, TResult>[]\n): (\n handler: (input: TInput) => Promise<AXPExecuteCommandResult<TResult>>\n) => (input: TInput) => Promise<AXPExecuteCommandResult<TResult>> {\n return (\n handler: (input: TInput) => Promise<AXPExecuteCommandResult<TResult>>\n ) => {\n let composed = handler;\n\n for (let i = middlewares.length - 1; i >= 0; i--) {\n const mw = middlewares[i];\n const next = composed;\n\n composed = (input: TInput) => mw(input, next);\n }\n\n return composed;\n };\n}\n\n//#endregion\n","import { Injectable } from '@angular/core';\nimport { AXPCommand } from './command.interface';\nimport { AXPCommandMiddleware } from './command.middleware';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCommandRegistry {\n private registry = new Map<string, () => Promise<AXPCommand>>();\n private middlewares: AXPCommandMiddleware[] = [];\n\n register(key: string, loader: () => Promise<AXPCommand>): void {\n this.registry.set(key, loader);\n }\n\n unregister(key: string): boolean {\n return this.registry.delete(key);\n }\n\n use(middleware: AXPCommandMiddleware): void {\n this.middlewares.push(middleware);\n }\n\n exists(key: string): boolean {\n return this.registry.has(key);\n }\n\n getLoader(key: string): (() => Promise<AXPCommand>) | undefined {\n return this.registry.get(key);\n }\n\n getMiddlewares(): readonly AXPCommandMiddleware[] {\n return [...this.middlewares];\n }\n\n getRegisteredKeys(): string[] {\n return Array.from(this.registry.keys());\n }\n\n clear(): void {\n this.registry.clear();\n this.middlewares.length = 0;\n }\n}\n","// plugins/command.extension.token.ts\nimport { InjectionToken } from '@angular/core';\nimport { AXPCommandMiddleware } from './command.middleware';\n\nexport interface AXPCommandExtension {\n target: string | RegExp;\n middleware: AXPCommandMiddleware;\n}\n\nexport const AXP_COMMAND_EXTENSION = new InjectionToken<AXPCommandExtension[]>('AXP_COMMAND_EXTENSION');\n","import { EnvironmentInjector, Injectable, inject, runInInjectionContext } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommandMiddleware, composeCommandMiddlewares } from './command.middleware';\nimport { AXPCommandRegistry } from './command.registry';\nimport { AXP_COMMAND_EXTENSION } from './command.extension.token';\nimport { AXPCommandEventsService, AXPCommandExecutionEvent } from './command-events.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCommandExecutor {\n private readonly injector = inject(EnvironmentInjector);\n private readonly registry = inject(AXPCommandRegistry);\n private readonly extensions = inject(AXP_COMMAND_EXTENSION, { optional: true });\n private readonly commandEvents = inject(AXPCommandEventsService);\n\n async execute<TInput = any, TResult = any>(\n key: string,\n input: TInput\n ): Promise<AXPExecuteCommandResult<TResult> | null> {\n const loader = this.registry.getLoader(key);\n if (!loader) {\n throw new Error(`Command '${key}' is not registered`);\n }\n\n const command = await loader();\n const handler = (i: TInput) => command.execute(i) as Promise<AXPExecuteCommandResult<TResult>>;\n\n const pluginMiddlewares = this.getPluginMiddlewares(key);\n const globalMiddlewares = this.registry.getMiddlewares();\n\n const wrappedMiddlewares: AXPCommandMiddleware<TInput, TResult>[] = [\n ...globalMiddlewares,\n ...pluginMiddlewares,\n ].map(middleware => {\n return (input: TInput, next: (input: TInput) => Promise<AXPExecuteCommandResult<TResult>>) =>\n runInInjectionContext(this.injector, () => middleware(input, next));\n });\n\n const composed = composeCommandMiddlewares<TInput, TResult>(wrappedMiddlewares)(handler);\n\n const beforeEvent = {\n stage: 'before' as const,\n key,\n input,\n } satisfies AXPCommandExecutionEvent<TInput>;\n\n await this.commandEvents.emit(beforeEvent);\n\n try {\n const result = await composed(input);\n\n const afterEvent = {\n stage: 'after' as const,\n key,\n input,\n success: true,\n result,\n } satisfies AXPCommandExecutionEvent<TInput, TResult>;\n\n await this.commandEvents.emit(afterEvent);\n\n return result;\n } catch (error) {\n const afterEvent = {\n stage: 'after' as const,\n key,\n input,\n success: false,\n error,\n } satisfies AXPCommandExecutionEvent<TInput, TResult>;\n\n await this.commandEvents.emit(afterEvent);\n\n throw error;\n }\n }\n\n private getPluginMiddlewares(key: string): AXPCommandMiddleware[] {\n return this.extensions\n ?.filter(ext => ext.target instanceof RegExp ? ext.target.test(key) : ext.target === key)\n .map(ext => ext.middleware) ?? [];\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommand } from './command.interface';\nimport { AXPCommandMiddleware } from './command.middleware';\nimport { AXPCommandRegistry } from './command.registry';\nimport { AXPCommandExecutor } from './command.executor';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCommandService {\n private readonly registry = inject(AXPCommandRegistry);\n private readonly executor = inject(AXPCommandExecutor);\n\n // Registry methods\n register(key: string, loader: () => Promise<AXPCommand>): void {\n this.registry.register(key, loader);\n }\n\n unregister(key: string): boolean {\n return this.registry.unregister(key);\n }\n\n use(middleware: AXPCommandMiddleware): void {\n this.registry.use(middleware);\n }\n\n exists(key: string): boolean {\n return this.registry.exists(key);\n }\n\n getRegisteredKeys(): string[] {\n return this.registry.getRegisteredKeys();\n }\n\n clear(): void {\n this.registry.clear();\n }\n\n // Executor methods\n async execute<TInput = any, TResult = any>(\n key: string,\n input: TInput\n ): Promise<AXPExecuteCommandResult<TResult> | null> {\n return this.executor.execute<TInput, TResult>(key, input);\n }\n} ","import {\n EnvironmentProviders,\n inject,\n InjectionToken,\n makeEnvironmentProviders\n} from '@angular/core';\nimport { AXPCommandRegistry } from './command.registry';\nimport { AXPCommandMiddleware } from './command.middleware';\nimport { AXP_COMMAND_EXTENSION } from './command.extension.token';\n\nexport const AXP_COMMAND_MIDDLEWARE_SETUP = new InjectionToken<void>('AXP_COMMAND_MIDDLEWARE_SETUP');\n\ntype AXPCommandMiddlewareEntry =\n (AXPCommandMiddleware | { target: string | RegExp; middleware: AXPCommandMiddleware })[];\n\nexport function provideCommandMiddleware(\n entries: AXPCommandMiddlewareEntry\n): EnvironmentProviders {\n const global: AXPCommandMiddleware[] = [];\n const extensions: { target: string | RegExp; middleware: AXPCommandMiddleware }[] = [];\n\n for (const entry of entries) {\n if (typeof entry === 'function') {\n global.push(entry);\n } else {\n extensions.push(entry);\n }\n }\n\n return makeEnvironmentProviders([\n // Plugin middleware entries\n ...extensions.map(ext => ({\n provide: AXP_COMMAND_EXTENSION,\n useValue: ext,\n multi: true\n })),\n\n // Global middleware setup (triggered via this token)\n {\n provide: AXP_COMMAND_MIDDLEWARE_SETUP,\n useFactory: () => {\n const registry = inject(AXPCommandRegistry);\n for (const mw of global) {\n registry.use(mw);\n }\n return true;\n }\n }\n ]);\n}","import { EnvironmentInjector, EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, runInInjectionContext, Type } from '@angular/core';\nimport { AXPCommandRegistry } from './command.registry';\nimport { AXPCommand } from './command.interface';\n\n\nexport const AXP_COMMAND_SETUP = new InjectionToken<void>('AXP_COMMAND_SETUP');\n\n\ntype AXPCommandLoader = {\n key: string;\n command: () => Type<AXPCommand> | Promise<Type<AXPCommand>>;\n};\n\n\nexport function provideCommandSetups(entries: AXPCommandLoader[]): EnvironmentProviders {\n\n return makeEnvironmentProviders([\n {\n provide: AXP_COMMAND_SETUP,\n useFactory: () => {\n const registry = inject(AXPCommandRegistry);\n const injector = inject(EnvironmentInjector);\n\n for (const entry of entries) {\n registry.register(entry.key, async () => {\n const CommandType = await entry.command();\n // Try to get from DI first, if fails create new instance\n try {\n return injector.get(CommandType);\n } catch (e) {\n // If not in DI (e.g., for activities), create new instance\n return runInInjectionContext(injector, () => new CommandType());\n }\n });\n }\n\n return true;\n },\n multi: true\n }\n ]);\n}\n\n\nexport function provideCommand(\n key: string,\n loader: () => Type<AXPCommand> | Promise<Type<AXPCommand>>\n): EnvironmentProviders {\n return provideCommandSetups([\n {\n key,\n command: loader\n }\n ]);\n}\n\n\n","import type { AXPQueryMetadataDefinition } from './query-definition.types';\n\n//#region ---- defineQuery ----\n\n/**\n * Typed identity helper for query metadata sidecars.\n */\nexport function defineQuery<T extends AXPQueryMetadataDefinition>(definition: T): T {\n return definition;\n}\n\n//#endregion\n","/**\n * Build-time query metadata only. Safe under Node (e.g. generate-runtime-catalog) without loading the query executor stack.\n * Sidecars should import `defineQuery` from here or from `@acorex/platform/runtime/catalog-query-definition`.\n */\nexport { defineQuery } from './define-query';\n","// queries/query.registry.ts\nimport { Injectable } from '@angular/core';\nimport { AXPQuery } from './query.interface';\nimport { AXPQueryMiddleware } from './query.middleware';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPQueryRegistry {\n private registry = new Map<string, () => Promise<AXPQuery>>();\n private middlewares: AXPQueryMiddleware[] = [];\n\n register(key: string, loader: () => Promise<AXPQuery>): void {\n this.registry.set(key, loader);\n }\n\n unregister(key: string): boolean {\n return this.registry.delete(key);\n }\n\n use(middleware: AXPQueryMiddleware): void {\n this.middlewares.push(middleware);\n }\n\n exists(key: string): boolean {\n return this.registry.has(key);\n }\n\n getLoader(key: string): (() => Promise<AXPQuery>) | undefined {\n return this.registry.get(key);\n }\n\n getMiddlewares(): readonly AXPQueryMiddleware[] {\n return [...this.middlewares];\n }\n\n getRegisteredKeys(): string[] {\n return Array.from(this.registry.keys());\n }\n\n clear(): void {\n this.registry.clear();\n this.middlewares.length = 0;\n }\n}\n","// plugins/query.extension.token.ts\nimport { InjectionToken } from '@angular/core';\nimport { AXPQueryMiddleware } from './query.middleware';\n\nexport interface AXPQueryExtension {\n target: string | RegExp;\n middleware: AXPQueryMiddleware;\n}\n\nexport const AXP_QUERY_EXTENSION = new InjectionToken<AXPQueryExtension[]>('AXP_QUERY_EXTENSION');\n","import {\n EnvironmentProviders,\n inject,\n InjectionToken,\n makeEnvironmentProviders\n} from '@angular/core';\nimport { AXPQueryRegistry } from './query.registry';\nimport { AXPQueryMiddleware } from './query.middleware';\nimport { AXP_QUERY_EXTENSION } from './query.extension.token';\n\nexport const AXP_QUERY_MIDDLEWARE_SETUP = new InjectionToken<void>('AXP_QUERY_MIDDLEWARE_SETUP');\n\ntype AXPQueryMiddlewareEntry =\n (AXPQueryMiddleware | { key: string; middleware: AXPQueryMiddleware })[];\n\nexport function provideQueryMiddleware(\n entries: AXPQueryMiddlewareEntry\n): EnvironmentProviders {\n const global: AXPQueryMiddleware[] = [];\n const extensions: { key: string; middleware: AXPQueryMiddleware }[] = [];\n\n for (const entry of entries) {\n if (typeof entry === 'function') {\n global.push(entry);\n } else {\n extensions.push(entry);\n }\n }\n\n return makeEnvironmentProviders([\n // Plugin middleware entries\n ...extensions.map(ext => ({\n provide: AXP_QUERY_EXTENSION,\n useValue: ext,\n multi: true\n })),\n\n // Global middleware setup (triggered via this token)\n {\n provide: AXP_QUERY_MIDDLEWARE_SETUP,\n useFactory: () => {\n const registry = inject(AXPQueryRegistry);\n for (const mw of global) {\n registry.use(mw);\n }\n return true;\n }\n }\n ]);\n} ","import { EnvironmentInjector, EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider, Type } from '@angular/core';\nimport { AXPQueryRegistry } from './query.registry';\nimport { AXPQuery } from './query.interface';\n\nexport const AXP_QUERY_SETUP = new InjectionToken<void>('AXP_QUERY_SETUP');\n\ntype AXPQueryLoaderEntry = {\n key: string,\n loader: () => Type<AXPQuery> | Promise<Type<AXPQuery>>;\n};\n\nexport function provideQuerySetups(\n entries: AXPQueryLoaderEntry[]\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: AXP_QUERY_SETUP,\n useFactory: () => {\n const registry = inject(AXPQueryRegistry);\n const injector = inject(EnvironmentInjector);\n\n for (const entry of entries) {\n registry.register(entry.key, async () => {\n const CommandType = await entry.loader();\n return injector.get(CommandType);\n });\n }\n\n return true;\n },\n multi: true\n }\n ]);\n} ","/**\n * Build-time query metadata for AXPQuery implementations.\n * Mirrors command metadata shape except there are no `outcomes` (queries only `fetch`).\n * `inputs` / `outputs` are schema rows (same family as entity optionDefinitions).\n */\n\nimport type {\n AXPCommandAiMetadata,\n AXPCommandCapability,\n AXPCommandExecutionMode,\n AXPCommandSchemaPropertyDefinition,\n} from '../shared/catalog-metadata.types';\n\n//#region ---- Root ----\n\n/** One input/output property description for query definitions (same as command schema rows). */\nexport type AXPQuerySchemaPropertyDefinition = AXPCommandSchemaPropertyDefinition;\n\nexport interface AXPQueryMetadataDefinition {\n /** Runtime registration key (provideQuerySetups). */\n key: string;\n title: string;\n description: string;\n executionMode: AXPCommandExecutionMode;\n /** Query input / filter parameters as schema rows. */\n inputs?: AXPQuerySchemaPropertyDefinition[];\n /** Documented result shape as schema rows. */\n outputs?: AXPQuerySchemaPropertyDefinition[];\n ai?: AXPCommandAiMetadata;\n /** Optional list of surfaces that may list or invoke this query as a tool (e.g. AI assistants). */\n capabilities?: AXPCommandCapability[];\n}\n\n//#endregion\n","// queries/query.middleware.ts\nexport type AXPQueryMiddleware<TInput = any, TResult = any> = (\n input: TInput,\n next: (input: TInput) => Promise<TResult>\n) => Promise<TResult>;\n\nexport function composeQueryMiddlewares<TInput, TResult>(\n middlewares: AXPQueryMiddleware<TInput, TResult>[]\n): (handler: (input: TInput) => Promise<TResult>) => (input: TInput) => Promise<TResult> {\n return (handler: (input: TInput) => Promise<TResult>) => {\n let composed = handler;\n\n for (let i = middlewares.length - 1; i >= 0; i--) {\n const mw = middlewares[i];\n const next = composed;\n\n composed = (input: TInput) => mw(input, next);\n }\n\n return composed;\n };\n}\n","import { Injectable, EnvironmentInjector, inject, runInInjectionContext } from '@angular/core';\nimport { AXPQueryMiddleware, composeQueryMiddlewares } from './query.middleware';\nimport { AXPQueryRegistry } from './query.registry';\nimport { AXP_QUERY_EXTENSION } from './query.extension.token';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPQueryExecutor {\n private readonly injector = inject(EnvironmentInjector);\n private readonly registry = inject(AXPQueryRegistry);\n private readonly extensions = inject(AXP_QUERY_EXTENSION, { optional: true });\n\n async fetch<TInput = any, TResult = any>(\n key: string,\n input: TInput\n ): Promise<TResult | null> {\n const loader = this.registry.getLoader(key);\n if (!loader) {\n return null;\n }\n\n const query = await loader();\n const handler = (i: TInput) => query.fetch(i);\n\n const pluginMiddlewares = this.getPluginMiddlewares(key);\n const globalMiddlewares = this.registry.getMiddlewares();\n\n const wrappedMiddlewares = [...globalMiddlewares, ...pluginMiddlewares].map(middleware => {\n return (input: TInput, next: (input: TInput) => Promise<TResult>) =>\n runInInjectionContext(this.injector, () => middleware(input, next));\n });\n\n const composed = composeQueryMiddlewares(wrappedMiddlewares)(handler);\n return composed(input);\n }\n\n private getPluginMiddlewares(key: string): AXPQueryMiddleware[] {\n return this.extensions\n ?.filter(ext => ext.target instanceof RegExp ? ext.target.test(key) : ext.target === key)\n .map(ext => ext.middleware) ?? [];\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { AXPQuery } from './query.interface';\nimport { AXPQueryMiddleware } from './query.middleware';\nimport { AXPQueryRegistry } from './query.registry';\nimport { AXPQueryExecutor } from './query.executor';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPQueryService {\n private readonly registry = inject(AXPQueryRegistry);\n private readonly executor = inject(AXPQueryExecutor);\n\n // Registry methods\n register(key: string, loader: () => Promise<AXPQuery>): void {\n this.registry.register(key, loader);\n }\n\n unregister(key: string): boolean {\n return this.registry.unregister(key);\n }\n\n use(middleware: AXPQueryMiddleware): void {\n this.registry.use(middleware);\n }\n\n exists(key: string): boolean {\n return this.registry.exists(key);\n }\n\n getRegisteredKeys(): string[] {\n return this.registry.getRegisteredKeys();\n }\n\n clear(): void {\n this.registry.clear();\n }\n\n // Executor methods\n async fetch<TInput = any, TResult = any>(\n key: string,\n input: TInput\n ): Promise<TResult | null> {\n return this.executor.fetch<TInput, TResult>(key, input);\n }\n} ","import { AXPViewDefinition } from \"@acorex/platform/core\";\n\nexport type AXPViewMiddleware<TInput = any> = (\n input: TInput,\n next: (input: TInput) => Promise<AXPViewDefinition>\n) => Promise<AXPViewDefinition>;\n\nexport function composeViewMiddlewares<TInput>(\n middlewares: AXPViewMiddleware<TInput>[]\n): (handler: (input: TInput) => Promise<AXPViewDefinition>) => (input: TInput) => Promise<AXPViewDefinition> {\n return (handler: (input: TInput) => Promise<AXPViewDefinition>) => {\n let composed = handler;\n\n for (let i = middlewares.length - 1; i >= 0; i--) {\n const mw = middlewares[i];\n const next = composed;\n\n composed = (input: TInput) => mw(input, next);\n }\n\n return composed;\n };\n} ","import { Injectable } from '@angular/core';\nimport { AXPViewProvider } from './view.interface';\nimport { AXPViewMiddleware } from './view.middleware';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPViewRegistry {\n private registry = new Map<string, () => Promise<AXPViewProvider>>();\n private middlewares: AXPViewMiddleware[] = [];\n\n register(key: string, loader: () => Promise<AXPViewProvider>): void {\n this.registry.set(key, loader);\n }\n\n unregister(key: string): boolean {\n return this.registry.delete(key);\n }\n\n use(middleware: AXPViewMiddleware): void {\n this.middlewares.push(middleware);\n }\n\n exists(key: string): boolean {\n return this.registry.has(key);\n }\n\n getLoader(key: string): (() => Promise<AXPViewProvider>) | undefined {\n return this.registry.get(key);\n }\n\n getMiddlewares(): readonly AXPViewMiddleware[] {\n return [...this.middlewares];\n }\n\n getRegisteredKeys(): string[] {\n return Array.from(this.registry.keys());\n }\n\n clear(): void {\n this.registry.clear();\n this.middlewares.length = 0;\n }\n} ","import { InjectionToken } from '@angular/core';\nimport { AXPViewMiddleware } from './view.middleware';\n\nexport interface AXPViewExtension {\n target: string | RegExp;\n middleware: AXPViewMiddleware;\n}\n\nexport const AXP_VIEW_EXTENSION = new InjectionToken<AXPViewExtension[]>('AXP_VIEW_EXTENSION'); ","import { Injectable, EnvironmentInjector, inject, runInInjectionContext } from '@angular/core';\nimport { AXPViewMiddleware, composeViewMiddlewares } from './view.middleware';\nimport { AXPViewRegistry } from './view.registry';\nimport { AXP_VIEW_EXTENSION } from './view.extension.token';\nimport { AXPViewDefinition } from '@acorex/platform/core';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPViewExecutor {\n private readonly injector = inject(EnvironmentInjector);\n private readonly registry = inject(AXPViewRegistry);\n private readonly extensions = inject(AXP_VIEW_EXTENSION, { optional: true });\n\n async provide<TInput = any>(\n key: string,\n input: TInput\n ): Promise<AXPViewDefinition | null> {\n const loader = this.registry.getLoader(key);\n if (!loader) {\n return null;\n }\n\n const provider = await loader();\n const handler = (i: TInput) => provider.provide(i);\n\n const pluginMiddlewares = this.getPluginMiddlewares(key);\n const globalMiddlewares = this.registry.getMiddlewares();\n\n const wrappedMiddlewares = [...globalMiddlewares, ...pluginMiddlewares].map(middleware => {\n return (input: TInput, next: (input: TInput) => Promise<AXPViewDefinition>) =>\n runInInjectionContext(this.injector, () => middleware(input, next));\n });\n\n const composed = composeViewMiddlewares(wrappedMiddlewares)(handler);\n return composed(input);\n }\n\n private getPluginMiddlewares(key: string): AXPViewMiddleware[] {\n return this.extensions\n ?.filter(ext => ext.target instanceof RegExp ? ext.target.test(key) : ext.target === key)\n .map(ext => ext.middleware) ?? [];\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { AXPViewProvider } from './view.interface';\nimport { AXPViewMiddleware } from './view.middleware';\nimport { AXPViewRegistry } from './view.registry';\nimport { AXPViewExecutor } from './view.executor';\nimport { AXPViewDefinition } from '@acorex/platform/core';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPViewService {\n private readonly registry = inject(AXPViewRegistry);\n private readonly executor = inject(AXPViewExecutor);\n\n //#region ---- Registry Methods ----\n\n register(key: string, loader: () => Promise<AXPViewProvider>): void {\n this.registry.register(key, loader);\n }\n\n unregister(key: string): boolean {\n return this.registry.unregister(key);\n }\n\n use(middleware: AXPViewMiddleware): void {\n this.registry.use(middleware);\n }\n\n exists(key: string): boolean {\n return this.registry.exists(key);\n }\n\n getRegisteredKeys(): string[] {\n return this.registry.getRegisteredKeys();\n }\n\n clear(): void {\n this.registry.clear();\n }\n\n //#endregion\n\n //#region ---- Executor Methods ----\n\n async provide<TInput = any>(\n key: string,\n input: TInput\n ): Promise<AXPViewDefinition | null> {\n return this.executor.provide<TInput>(key, input);\n }\n\n //#endregion\n} ","import { EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { AXPViewRegistry } from './view.registry';\nimport { AXPViewProvider } from './view.interface';\n\nexport const AXP_VIEW_SETUP = new InjectionToken<void>('AXP_VIEW_SETUP');\n\nexport function provideViewSetups(providers: Provider[]): EnvironmentProviders {\n return makeEnvironmentProviders([\n ...providers,\n {\n provide: AXP_VIEW_SETUP,\n useFactory: () => {\n const registry = inject(AXPViewRegistry);\n\n // Setup will be handled by the provided registration functions\n return;\n },\n multi: true\n }\n ]);\n}\n\nexport function provideViewSetup(\n key: string,\n loader: () => Promise<AXPViewProvider>\n): Provider {\n return {\n provide: AXP_VIEW_SETUP,\n useFactory: () => {\n const registry = inject(AXPViewRegistry);\n registry.register(key, loader);\n return;\n },\n multi: true\n };\n} ","import { AXPPolicyEngineContext } from \"./policy.interface\";\n\nexport type AXPPolicyEngineMiddleware = (\n context: AXPPolicyEngineContext,\n next: (context: AXPPolicyEngineContext) => Promise<void>,\n) => Promise<void>;\n\nexport function composePolicyEngineMiddlewares(\n middlewares: AXPPolicyEngineMiddleware[]\n): (handler: (context: AXPPolicyEngineContext) => Promise<void>) => (context: AXPPolicyEngineContext) => Promise<void> {\n return (handler) => {\n let composed = handler;\n for (let i = middlewares.length - 1; i >= 0; i--) {\n const mw = middlewares[i];\n const next = composed;\n composed = (context: AXPPolicyEngineContext) => mw(context, next);\n }\n return composed;\n };\n} ","import { AXPPolicyOptions } from \"./policy.types\";\n\nexport interface AXPPolicy {\n apply(context: AXPPolicyEngineContext): Promise<void>;\n}\n\n\nexport class AXPPolicyEngineContext {\n\n private _id: string;\n private _sender: AXPPolicyOptions['sender'];\n private _visible = true;\n private _enabled = true;\n\n constructor(options: AXPPolicyOptions) {\n this._id = options.id;\n this._sender = options.sender;\n }\n\n public get sender(): AXPPolicyOptions['sender'] {\n return this._sender;\n }\n\n public get id() {\n return this._id;\n }\n\n public get visible() {\n return this._visible;\n }\n\n public get enabled() {\n return this._enabled;\n }\n\n setVisible(visible: boolean) {\n this._visible = visible;\n return this;\n }\n setEnabled(enabled: boolean) {\n this._enabled = enabled;\n return this;\n }\n} \n","// plugins/command.extension.token.ts\nimport { InjectionToken } from '@angular/core';\nimport { AXPPolicyEngineMiddleware } from './policy.middleware';\n\nexport interface AXPPolicyExtension {\n key: string;\n middleware: AXPPolicyEngineMiddleware;\n}\n\nexport const AXP_POLICY_EXTENSION = new InjectionToken<AXPPolicyExtension[]>('AXP_POLICY_EXTENSION');\n","import { EnvironmentInjector, Inject, inject, Injectable, Optional, runInInjectionContext } from '@angular/core';\nimport { AXPPolicyEngineMiddleware, composePolicyEngineMiddlewares } from './policy.middleware';\nimport { AXPPolicyEngineContext } from './policy.interface';\nimport { AXPPolicyOptions } from './policy.types';\nimport { AXPPolicy } from './policy.interface';\nimport { AXP_POLICY_EXTENSION } from './policy.extension.token';\nimport { AXPPolicyExtension } from './policy.extension.token';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPPolicyEngineRegistry {\n private registry = new Map<string, () => Promise<AXPPolicy>>();\n private middlewares: AXPPolicyEngineMiddleware[] = [];\n private extensions = inject(AXP_POLICY_EXTENSION, { optional: true });\n\n private injector = inject(EnvironmentInjector);\n\n\n use(mw: AXPPolicyEngineMiddleware): void {\n this.middlewares.push(mw);\n }\n\n exists(key: string): boolean {\n return this.registry.has(key);\n }\n\n getPolicies(): string[] {\n return Array.from(this.registry.keys());\n }\n\n register(key: string, loader: () => Promise<AXPPolicy>): void {\n this.registry.set(key, loader);\n }\n\n\n private getPluginMiddlewares(key: string): AXPPolicyEngineMiddleware[] {\n return this.extensions\n ?.filter(ext => ext.key === key)\n .map(ext => ext.middleware) ?? [];\n }\n\n\n\n async execute(\n policy: string,\n instance: AXPPolicyOptions\n ): Promise<AXPPolicyEngineContext> {\n const loader = this.registry.get(policy);\n if (!loader) {\n throw new Error(`${policy} not implemented`);\n }\n const context = new AXPPolicyEngineContext(instance);\n const applier = await loader();\n const handler = (i: AXPPolicyEngineContext) => applier.apply(i);\n\n const pluginMws = this.getPluginMiddlewares(policy);\n\n const wrappedMws = [...this.middlewares, ...pluginMws].map(mw => {\n return (input: AXPPolicyEngineContext, next: (input: AXPPolicyEngineContext) => Promise<void>) =>\n runInInjectionContext(this.injector, () => mw(input, next));\n });\n\n const composed = composePolicyEngineMiddlewares(wrappedMws)(handler);\n await composed(context);\n return context;\n }\n} ","import { inject, Injectable } from \"@angular/core\";\nimport { AXPPolicyEngineRegistry } from \"./policy.registry\";\nimport { AXPPolicyOptions } from \"./policy.types\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXPPolicyEngineService {\n private registry = inject(AXPPolicyEngineRegistry);\n\n\n\n async apply(options: AXPPolicyOptions) {\n const allPolicies = this.registry.getPolicies().filter(p => (options.policies?.length ?? 0) == 0 || options.policies?.includes(p));\n\n await Promise.all(allPolicies.map(async policy => {\n const context = await this.registry.execute(policy, options);\n return context;\n }));\n\n\n\n //\n // if (instance instanceof HTMLElement) {\n // if (context.visible === false) {\n // instance.style.display = 'none';\n // } else {\n // instance.style.display = '';\n // }\n // }\n // //\n // if (instance instanceof MXBaseComponent) {\n // if (context.visible === false) {\n // instance.getHostElement().style.display = 'none';\n // } else {\n // instance.getHostElement().style.display = '';\n // }\n // }\n // // Handle disabled state for interactive components\n // if (instance instanceof MXInteractiveComponent) {\n // if (context.enabled === false) {\n // instance.disabled = true;\n // } else {\n // instance.disabled = false;\n // }\n // }\n // // TODO: Handle object properties \n // if (instance instanceof Object) {\n // if (context.visible === false) {\n // set(instance, 'visible', false);\n // }\n // if (context.enabled === false) {\n // set(instance, 'disabled', true);\n // }\n // }\n }\n\n\n\n}\n","import { Directive, ElementRef, input, effect, inject } from '@angular/core';\nimport { AXPPolicyEngineService } from './policy.service';\nimport { castArray } from 'lodash-es';\n\n@Directive({\n selector: '[axp-apply-policy]',\n standalone: true\n})\nexport class AXPPolicyEngineDirective {\n policy = input.required<string | undefined | null>({ alias: 'axp-apply-policy' });\n private service = inject(AXPPolicyEngineService);\n private elementRef = inject(ElementRef<HTMLElement>);\n\n\n #eff = effect(async () => {\n const policy = this.policy();\n if (!policy) {\n return;\n }\n await this.service.apply({\n id: this.elementRef.nativeElement.id,\n policies: castArray(policy),\n sender: this.elementRef.nativeElement\n });\n });\n\n}\n","import { EnvironmentInjector, EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Type } from '@angular/core';\nimport { AXPPolicyEngineRegistry } from './policy.registry';\nimport { AXPPolicy } from './policy.interface';\n\nexport const AXP_POLICY_ENGINE_MIDDLEWARE_SETUP = new InjectionToken<void>('AXP_POLICY_ENGINE_MIDDLEWARE_SETUP');\n\n\n\ntype AXPPolicyLoader = {\n key: string;\n policy: () => Type<AXPPolicy> | Promise<Type<AXPPolicy>>;\n};\n\n\nexport function providePolicySetups(entries: AXPPolicyLoader[]): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: AXP_POLICY_ENGINE_MIDDLEWARE_SETUP,\n useFactory: () => {\n const registry = inject(AXPPolicyEngineRegistry);\n const injector = inject(EnvironmentInjector);\n\n for (const entry of entries) {\n registry.register(entry.key, async () => {\n const PolicyType = await entry.policy();\n return injector.get(PolicyType);\n });\n }\n\n return true;\n }\n }\n ]);\n}","import { EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { AXPViewRegistry } from './view.registry';\nimport { AXPViewMiddleware } from './view.middleware';\n\nexport const AXP_VIEW_MIDDLEWARE_SETUP = new InjectionToken<void>('AXP_VIEW_MIDDLEWARE_SETUP');\n\nexport function provideViewMiddleware(middlewares: AXPViewMiddleware[]): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: AXP_VIEW_MIDDLEWARE_SETUP,\n useFactory: () => {\n const registry = inject(AXPViewRegistry);\n middlewares.forEach(middleware => registry.use(middleware));\n return;\n },\n multi: true\n }\n ]);\n}\n\nexport function provideViewMiddlewareSetup(\n middleware: AXPViewMiddleware\n): Provider {\n return {\n provide: AXP_VIEW_MIDDLEWARE_SETUP,\n useFactory: () => {\n const registry = inject(AXPViewRegistry);\n registry.use(middleware);\n return;\n },\n multi: true\n };\n} ","import { NgModule, Inject, isDevMode, Optional, inject } from \"@angular/core\";\nimport { AXP_COMMAND_SETUP } from \"./commands/provide-command-setups\";\nimport { AXP_COMMAND_MIDDLEWARE_SETUP } from \"./commands/provide-command-middleware\";\nimport { AXP_QUERY_SETUP } from \"./queries/provide-query-setups\";\nimport { AXP_QUERY_MIDDLEWARE_SETUP } from \"./queries/provide-query-middleware\";\nimport { AXP_VIEW_SETUP } from \"./views/provide-view-setups\";\nimport { AXP_VIEW_MIDDLEWARE_SETUP } from \"./views/provide-view-middleware\";\nimport { AXP_POLICY_ENGINE_MIDDLEWARE_SETUP } from \"./policy/policy-middleware-provider\";\n\n@NgModule()\nexport class AXPRuntimeModule {\n\n private _commandSetup = inject(AXP_COMMAND_SETUP, { optional: true });\n private _commandMiddlewareSetup = inject(AXP_COMMAND_MIDDLEWARE_SETUP, { optional: true });\n\n private _querySetup = inject(AXP_QUERY_SETUP, { optional: true });\n private _queryMiddlewareSetup = inject(AXP_QUERY_MIDDLEWARE_SETUP, { optional: true });\n\n private _viewSetup = inject(AXP_VIEW_SETUP, { optional: true });\n private _viewMiddlewareSetup = inject(AXP_VIEW_MIDDLEWARE_SETUP, { optional: true });\n\n private _policyEngineSetup = inject(AXP_POLICY_ENGINE_MIDDLEWARE_SETUP, { optional: true });\n\n constructor() {\n if (isDevMode() && false) {\n console.log('[AXPRuntimeModule] Command Setup:', this._commandSetup);\n console.log('[AXPRuntimeModule] Command Middleware Setup:', this._commandMiddlewareSetup);\n console.log('[AXPRuntimeModule] Query Setup:', this._querySetup);\n console.log('[AXPRuntimeModule] Query Middleware Setup:', this._queryMiddlewareSetup);\n console.log('[AXPRuntimeModule] View Setup:', this._viewSetup);\n console.log('[AXPRuntimeModule] View Middleware Setup:', this._viewMiddlewareSetup);\n console.log('[AXPRuntimeModule] Policy Engine Setup:', this._policyEngineSetup);\n }\n }\n}\n","// Commands\nexport * from './lib/commands';\n\n// Queries\nexport * from './lib/queries';\n\n// Views\nexport * from './lib/views';\n\n// Policy\nexport * from './lib/policy';\n\n// Runtime\nexport * from './lib/runtime.module';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-runtime.mjs","sources":["../../../../libs/platform/runtime/src/lib/commands/define-command.ts","../../../../libs/platform/runtime/src/lib/shared/catalog-definition.categories.ts","../../../../libs/platform/runtime/src/lib/shared/catalog-definition-base.types.ts","../../../../libs/platform/runtime/src/lib/commands/command-definition.types.ts","../../../../libs/platform/runtime/src/lib/commands/catalog-command-definition.ts","../../../../libs/platform/runtime/src/lib/commands/command-events.service.ts","../../../../libs/platform/runtime/src/lib/commands/command.middleware.ts","../../../../libs/platform/runtime/src/lib/commands/command.registry.ts","../../../../libs/platform/runtime/src/lib/commands/command.extension.token.ts","../../../../libs/platform/runtime/src/lib/commands/command.executor.ts","../../../../libs/platform/runtime/src/lib/commands/command.service.ts","../../../../libs/platform/runtime/src/lib/commands/provide-command-middleware.ts","../../../../libs/platform/runtime/src/lib/commands/provide-command-setups.ts","../../../../libs/platform/runtime/src/lib/queries/define-query.ts","../../../../libs/platform/runtime/src/lib/queries/catalog-query-definition.ts","../../../../libs/platform/runtime/src/lib/queries/query.registry.ts","../../../../libs/platform/runtime/src/lib/queries/query.extension.token.ts","../../../../libs/platform/runtime/src/lib/queries/provide-query-middleware.ts","../../../../libs/platform/runtime/src/lib/queries/provide-query-setups.ts","../../../../libs/platform/runtime/src/lib/queries/query-definition.types.ts","../../../../libs/platform/runtime/src/lib/queries/query.middleware.ts","../../../../libs/platform/runtime/src/lib/queries/query.executor.ts","../../../../libs/platform/runtime/src/lib/queries/query.service.ts","../../../../libs/platform/runtime/src/lib/widgets/define-widget.ts","../../../../libs/platform/runtime/src/lib/widgets/catalog-widget-definition.ts","../../../../libs/platform/runtime/src/lib/widgets/widget-definition.types.ts","../../../../libs/platform/runtime/src/lib/views/view.middleware.ts","../../../../libs/platform/runtime/src/lib/views/view.registry.ts","../../../../libs/platform/runtime/src/lib/views/view.extension.token.ts","../../../../libs/platform/runtime/src/lib/views/view.executor.ts","../../../../libs/platform/runtime/src/lib/views/view.service.ts","../../../../libs/platform/runtime/src/lib/views/provide-view-setups.ts","../../../../libs/platform/runtime/src/lib/policy/policy.middleware.ts","../../../../libs/platform/runtime/src/lib/policy/policy.interface.ts","../../../../libs/platform/runtime/src/lib/policy/policy.extension.token.ts","../../../../libs/platform/runtime/src/lib/policy/policy.registry.ts","../../../../libs/platform/runtime/src/lib/policy/policy.service.ts","../../../../libs/platform/runtime/src/lib/policy/policy.directive.ts","../../../../libs/platform/runtime/src/lib/policy/policy-middleware-provider.ts","../../../../libs/platform/runtime/src/lib/views/provide-view-middleware.ts","../../../../libs/platform/runtime/src/lib/runtime.module.ts","../../../../libs/platform/runtime/src/index.ts","../../../../libs/platform/runtime/src/acorex-platform-runtime.ts"],"sourcesContent":["import type { AXPCommandMetadataDefinition } from './command-definition.types';\n\n//#region ---- defineCommand ----\n\n/**\n * Typed identity helper for command metadata sidecars.\n */\nexport function defineCommand<T extends AXPCommandMetadataDefinition>(definition: T): T {\n return definition;\n}\n\n//#endregion\n","import type { AXPDefinitionCategory } from '@acorex/platform/core';\n\n//#region ---- Shared catalog categories (queries & commands) ----\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_PLATFORM: AXPDefinitionCategory = {\n name: 'platform',\n order: 1,\n title: 'Platform',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_ENTITY: AXPDefinitionCategory = {\n name: 'entity',\n order: 2,\n title: 'Entity',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_STORAGE: AXPDefinitionCategory = {\n name: 'storage',\n order: 3,\n title: 'Storage',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_WIDGETS: AXPDefinitionCategory = {\n name: 'widgets',\n order: 4,\n title: 'Widgets',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_WORKFLOW: AXPDefinitionCategory = {\n name: 'workflow',\n order: 5,\n title: 'Workflow',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_UTILITY: AXPDefinitionCategory = {\n name: 'utility',\n order: 6,\n title: 'Utility',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_SETTINGS: AXPDefinitionCategory = {\n name: 'settings',\n order: 7,\n title: 'Settings',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_AI_TOOLS: AXPDefinitionCategory = {\n name: 'ai-tools',\n order: 8,\n title: 'AI tools',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_SECURITY: AXPDefinitionCategory = {\n name: 'security',\n order: 9,\n title: 'Security',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_DATA_MANAGEMENT: AXPDefinitionCategory = {\n name: 'data-management',\n order: 10,\n title: 'Data management',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_ASSESSMENT: AXPDefinitionCategory = {\n name: 'assessment',\n order: 11,\n title: 'Assessment',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_REPORT: AXPDefinitionCategory = {\n name: 'report',\n order: 12,\n title: 'Report',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_ORGANIZATION: AXPDefinitionCategory = {\n name: 'organization',\n order: 13,\n title: 'Organization',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_TENANT: AXPDefinitionCategory = {\n name: 'tenant',\n order: 14,\n title: 'Tenant',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_HUMAN_CAPITAL: AXPDefinitionCategory = {\n name: 'human-capital',\n order: 15,\n title: 'Human capital',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_PRODUCT: AXPDefinitionCategory = {\n name: 'product',\n order: 16,\n title: 'Product',\n};\n\nexport const AXP_CATALOG_DEFINITION_CATEGORY_FILE_WIDGET: AXPDefinitionCategory = {\n name: 'file-widget',\n order: 17,\n title: 'File widget',\n};\n\n//#endregion\n","/**\n * Shared build-time catalog metadata for command, query, and widget definition sidecars\n * (`defineCommand`, `defineQuery`, `defineWidget`).\n * Lives under `shared/` so consumers import one module without a \"command\" prefix on generic shapes.\n */\n\nimport type { AXPDefinitionCategory } from '@acorex/platform/core';\n\n//#region ---- Schema row ----\n\n/** Catalog metadata validation: rule key + optional rule options only. */\nexport interface AXPCatalogValidationRuleValue {\n rule: string;\n options?: Record<string, unknown>;\n}\n\n/**\n * Widget/interface reference for a schema property (name + optional widget options).\n */\nexport interface AXPCatalogInterfaceDefinitionValue {\n name: string;\n options?: Record<string, unknown>;\n}\n\n/**\n * Agent-facing hints when a single catalog row can be satisfied in several ways\n * (inline list, registry-backed dataSource key, query + assign, tabular columns, context merge, etc.).\n * Documentation only; tooling may surface this next to `description` and `interface`.\n */\nexport interface AXPCatalogPropertyBindingHints {\n /** Named strategies the agent or author may use to supply this parameter. */\n strategies?: readonly string[];\n /** Short concrete examples (strings or JSON fragments as documentation, not executed). */\n examples?: readonly string[];\n /** Extra notes: merge rules, mode flags, registry keys, or when to prefer one strategy over another. */\n notes?: string;\n}\n\n/**\n * One input/output property description (same structural role as entity option definitions).\n */\nexport interface AXPCatalogSchemaPropertyDefinition {\n name: string;\n title: string;\n description?: string;\n icon?: string;\n defaultValue?: unknown;\n disabled?: boolean;\n interface: AXPCatalogInterfaceDefinitionValue;\n validations?: AXPCatalogValidationRuleValue[];\n /**\n * Optional multi-strategy binding documentation for AI and codegen (commands, queries, widget sidecars).\n * Prefer this over inventing a non-form `interface.name` that is not part of the AI-facing widget catalog.\n */\n bindingHints?: AXPCatalogPropertyBindingHints;\n}\n\n//#endregion\n\n//#region ---- AI ----\n\n/** Structured usage hints for planners and assistants (prefer over duplicating rules only in `description`). */\nexport interface AXPCatalogAiUsageMetadata {\n whenToUse?: string[];\n avoidWhen?: string[];\n /** Registry keys or tool names that commonly follow this catalog entry. */\n followUpTools?: string[];\n}\n\n/** Declarative contracts: what the entry provides, who depends on it, and guarantees. */\nexport interface AXPCatalogAiContractsMetadata {\n provides?: string[];\n requiredBy?: string[];\n guarantees?: string[];\n}\n\nexport type AXPCatalogAiSafetyKind = 'read-only' | 'mutating';\n\nexport interface AXPCatalogAiSafetyMetadata {\n kind?: AXPCatalogAiSafetyKind;\n sideEffects?: boolean;\n requiresConfirmation?: boolean;\n}\n\nexport type AXPCatalogAiPerformanceCost = 'low' | 'medium' | 'high';\n\nexport interface AXPCatalogAiPerformanceMetadata {\n cost?: AXPCatalogAiPerformanceCost;\n cacheable?: boolean;\n}\n\nexport interface AXPCatalogAiNextStepMetadata {\n when: string;\n action: string;\n}\n\n/**\n * How to interpret a successful payload for agents (documentation only; not live workflow step outcomes).\n */\nexport interface AXPCatalogAiResultSemanticsMetadata {\n noMatch?: string;\n exactMatch?: string;\n multipleMatches?: string;\n failed?: string;\n /** Full catalog listing (e.g. no entity filter). */\n catalog?: string;\n}\n\nexport interface AXPCatalogAiMetadata {\n shortDescription?: string;\n /**\n * Long-form guidance appended to LLM tool descriptions (not for short UI/registry copy).\n * Keep root `description` concise for pickers and entity rows.\n */\n instruction?: string;\n tags?: string[];\n usage?: AXPCatalogAiUsageMetadata;\n contracts?: AXPCatalogAiContractsMetadata;\n safety?: AXPCatalogAiSafetyMetadata;\n performance?: AXPCatalogAiPerformanceMetadata;\n nextSteps?: AXPCatalogAiNextStepMetadata[];\n resultSemantics?: AXPCatalogAiResultSemanticsMetadata;\n /**\n * Default input fragment merged for AI/tool invocations (catalog & tooling).\n * Runtime merge for a given entry is applied in the AI module (not the generic command executor).\n */\n toolInputDefaults?: Record<string, unknown>;\n /**\n * Optional JSON Schema fragment for LLM tool `parameters` (OpenAI-style function calling).\n * Merged over the auto-generated schema from catalog `inputs` (`properties` / `required` deep-merged).\n * Use when widget-to-type inference is insufficient (e.g. `object`, `array`, `enum`, `format`).\n */\n toolParametersSchema?: Record<string, unknown>;\n}\n\n//#endregion\n\n//#region ---- Execution / capabilities ----\n\nexport type AXPCatalogExecutionMode = 'frontend' | 'backend' | 'both';\n\n/**\n * Where this catalog entry is intended to appear in product tooling (AI agents, workflow automation pickers, etc.).\n * Omitted = not declared here; runtimes may fall back to other metadata (e.g. `ai.tags`).\n */\nexport type AXPCatalogCapability = 'ai' | 'workflow';\n\n//#endregion\n\n//#region ---- Catalog metadata root ----\n\nexport interface AXPCatalogMetadataDefinitionBase {\n title: string;\n description: string;\n inputs?: AXPCatalogSchemaPropertyDefinition[];\n outputs?: AXPCatalogSchemaPropertyDefinition[];\n ai?: AXPCatalogAiMetadata;\n capabilities?: AXPCatalogCapability[];\n categories?: AXPDefinitionCategory | AXPDefinitionCategory[];\n}\n\n//#endregion\n","/**\n * Build-time command metadata for AXPCommand implementations.\n * `inputs` / `outputs` are schema rows (same family as entity optionDefinitions).\n * Validation entries: only `rule` name and optional `options` (no title/message on rules).\n * Do not import from Angular templates; sidecars may import `defineCommand` from `@acorex/platform/runtime`.\n *\n * Query metadata (fetch-only, no outcomes) is defined in `../queries/query-definition.types.ts` with `defineQuery`.\n * Widget metadata sidecars use `../widgets/widget-definition.types.ts` with `defineWidget`.\n */\n\nimport type {\n AXPCatalogExecutionMode,\n AXPCatalogMetadataDefinitionBase,\n} from '../shared/catalog-definition-base.types';\n\nexport * from '../shared/catalog-definition-base.types';\n\n//#region ---- Outcomes ----\n\nexport type AXPCommandOutcomeDefinition =\n | {\n mode: 'static';\n values: string[];\n }\n | {\n mode: 'dynamic';\n summary: string;\n derivesFrom: string;\n examples?: string[];\n };\n\n//#endregion\n\n//#region ---- Root ----\n\nexport interface AXPCommandMetadataDefinition extends AXPCatalogMetadataDefinitionBase {\n /** Runtime registration key (provideCommand / provideCommandSetups). */\n key: string;\n executionMode: AXPCatalogExecutionMode;\n outcomes: AXPCommandOutcomeDefinition;\n}\n\n//#endregion\n","/**\n * Build-time command metadata only. Safe under Node (e.g. generate-runtime-catalog) without loading the command executor stack.\n * Sidecars should import `defineCommand` from `@acorex/platform/runtime` (or this module for deep imports).\n */\nexport { defineCommand } from './define-command';\nexport * from './command-definition.categories';\nexport * from './command-definition.types';\n","//#region ---- Imports ----\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPBroadcastEventService } from '@acorex/platform/core';\nimport { AXPDistributedEventListenerService } from '@acorex/platform/core';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport type AXPCommandExecutionStage = 'before' | 'after';\n\nexport interface AXPCommandExecutionEvent<TInput = unknown, TResult = unknown> {\n stage: AXPCommandExecutionStage;\n key: string;\n input: TInput;\n success?: boolean;\n result?: AXPExecuteCommandResult<TResult> | null;\n error?: unknown;\n}\n\ntype CommandExecutionHandler<TInput, TResult> = (event: AXPCommandExecutionEvent<TInput, TResult>) => void;\n\n//#endregion\n\nconst COMMAND_EXECUTION_EVENT_KEY = '@commands:execution';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCommandEventsService {\n //#region ---- Services & Dependencies ----\n\n private readonly broadcast = inject(AXPBroadcastEventService);\n private readonly distributedEvents = inject(AXPDistributedEventListenerService, { optional: true });\n\n //#endregion\n\n //#region ---- Public API ----\n\n listen<TInput = unknown, TResult = unknown>(\n handler: CommandExecutionHandler<TInput, TResult>,\n ): () => void {\n const subscription = this.broadcast\n .listen<AXPCommandExecutionEvent<TInput, TResult>>(COMMAND_EXECUTION_EVENT_KEY)\n .subscribe(({ data }) => handler(data));\n\n return () => subscription.unsubscribe();\n }\n\n async emit<TInput = unknown, TResult = unknown>(\n event: AXPCommandExecutionEvent<TInput, TResult>,\n ): Promise<void> {\n this.broadcast.publish(COMMAND_EXECUTION_EVENT_KEY, event);\n await this.distributedEvents?.dispatch(COMMAND_EXECUTION_EVENT_KEY, event);\n }\n\n //#endregion\n}\n\n//#endregion\n\n","import { AXPExecuteCommandResult } from '@acorex/platform/core';\n\n//#region ---- Middleware Types ----\n\n/**\n * Represents a middleware function in the command execution pipeline.\n */\nexport type AXPCommandMiddleware<TInput = any, TResult = any> = (\n input: TInput,\n next: (input: TInput) => Promise<AXPExecuteCommandResult<TResult>>\n) => Promise<AXPExecuteCommandResult<TResult>>;\n\n//#endregion\n\n//#region ---- Middleware Composition ----\n\n/**\n * Creates a composed handler by chaining the provided command middlewares.\n */\nexport function composeCommandMiddlewares<TInput, TResult>(\n middlewares: AXPCommandMiddleware<TInput, TResult>[]\n): (\n handler: (input: TInput) => Promise<AXPExecuteCommandResult<TResult>>\n) => (input: TInput) => Promise<AXPExecuteCommandResult<TResult>> {\n return (\n handler: (input: TInput) => Promise<AXPExecuteCommandResult<TResult>>\n ) => {\n let composed = handler;\n\n for (let i = middlewares.length - 1; i >= 0; i--) {\n const mw = middlewares[i];\n const next = composed;\n\n composed = (input: TInput) => mw(input, next);\n }\n\n return composed;\n };\n}\n\n//#endregion\n","import { Injectable } from '@angular/core';\nimport { AXPCommand } from './command.interface';\nimport { AXPCommandMiddleware } from './command.middleware';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCommandRegistry {\n private registry = new Map<string, () => Promise<AXPCommand>>();\n private middlewares: AXPCommandMiddleware[] = [];\n\n register(key: string, loader: () => Promise<AXPCommand>): void {\n this.registry.set(key, loader);\n }\n\n unregister(key: string): boolean {\n return this.registry.delete(key);\n }\n\n use(middleware: AXPCommandMiddleware): void {\n this.middlewares.push(middleware);\n }\n\n exists(key: string): boolean {\n return this.registry.has(key);\n }\n\n getLoader(key: string): (() => Promise<AXPCommand>) | undefined {\n return this.registry.get(key);\n }\n\n getMiddlewares(): readonly AXPCommandMiddleware[] {\n return [...this.middlewares];\n }\n\n getRegisteredKeys(): string[] {\n return Array.from(this.registry.keys());\n }\n\n clear(): void {\n this.registry.clear();\n this.middlewares.length = 0;\n }\n}\n","// plugins/command.extension.token.ts\nimport { InjectionToken } from '@angular/core';\nimport { AXPCommandMiddleware } from './command.middleware';\n\nexport interface AXPCommandExtension {\n target: string | RegExp;\n middleware: AXPCommandMiddleware;\n}\n\nexport const AXP_COMMAND_EXTENSION = new InjectionToken<AXPCommandExtension[]>('AXP_COMMAND_EXTENSION');\n","import { EnvironmentInjector, Injectable, inject, runInInjectionContext } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommandMiddleware, composeCommandMiddlewares } from './command.middleware';\nimport { AXPCommandRegistry } from './command.registry';\nimport { AXP_COMMAND_EXTENSION } from './command.extension.token';\nimport { AXPCommandEventsService, AXPCommandExecutionEvent } from './command-events.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCommandExecutor {\n private readonly injector = inject(EnvironmentInjector);\n private readonly registry = inject(AXPCommandRegistry);\n private readonly extensions = inject(AXP_COMMAND_EXTENSION, { optional: true });\n private readonly commandEvents = inject(AXPCommandEventsService);\n\n async execute<TInput = any, TResult = any>(\n key: string,\n input: TInput\n ): Promise<AXPExecuteCommandResult<TResult> | null> {\n const loader = this.registry.getLoader(key);\n if (!loader) {\n throw new Error(`Command '${key}' is not registered`);\n }\n\n const command = await loader();\n const handler = (i: TInput) => command.execute(i) as Promise<AXPExecuteCommandResult<TResult>>;\n\n const pluginMiddlewares = this.getPluginMiddlewares(key);\n const globalMiddlewares = this.registry.getMiddlewares();\n\n const wrappedMiddlewares: AXPCommandMiddleware<TInput, TResult>[] = [\n ...globalMiddlewares,\n ...pluginMiddlewares,\n ].map(middleware => {\n return (input: TInput, next: (input: TInput) => Promise<AXPExecuteCommandResult<TResult>>) =>\n runInInjectionContext(this.injector, () => middleware(input, next));\n });\n\n const composed = composeCommandMiddlewares<TInput, TResult>(wrappedMiddlewares)(handler);\n\n const beforeEvent = {\n stage: 'before' as const,\n key,\n input,\n } satisfies AXPCommandExecutionEvent<TInput>;\n\n await this.commandEvents.emit(beforeEvent);\n\n try {\n const result = await composed(input);\n\n const afterEvent = {\n stage: 'after' as const,\n key,\n input,\n success: true,\n result,\n } satisfies AXPCommandExecutionEvent<TInput, TResult>;\n\n await this.commandEvents.emit(afterEvent);\n\n return result;\n } catch (error) {\n const afterEvent = {\n stage: 'after' as const,\n key,\n input,\n success: false,\n error,\n } satisfies AXPCommandExecutionEvent<TInput, TResult>;\n\n await this.commandEvents.emit(afterEvent);\n\n throw error;\n }\n }\n\n private getPluginMiddlewares(key: string): AXPCommandMiddleware[] {\n return this.extensions\n ?.filter(ext => ext.target instanceof RegExp ? ext.target.test(key) : ext.target === key)\n .map(ext => ext.middleware) ?? [];\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommand } from './command.interface';\nimport { AXPCommandMiddleware } from './command.middleware';\nimport { AXPCommandRegistry } from './command.registry';\nimport { AXPCommandExecutor } from './command.executor';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCommandService {\n private readonly registry = inject(AXPCommandRegistry);\n private readonly executor = inject(AXPCommandExecutor);\n\n // Registry methods\n register(key: string, loader: () => Promise<AXPCommand>): void {\n this.registry.register(key, loader);\n }\n\n unregister(key: string): boolean {\n return this.registry.unregister(key);\n }\n\n use(middleware: AXPCommandMiddleware): void {\n this.registry.use(middleware);\n }\n\n exists(key: string): boolean {\n return this.registry.exists(key);\n }\n\n getRegisteredKeys(): string[] {\n return this.registry.getRegisteredKeys();\n }\n\n clear(): void {\n this.registry.clear();\n }\n\n // Executor methods\n async execute<TInput = any, TResult = any>(\n key: string,\n input: TInput\n ): Promise<AXPExecuteCommandResult<TResult> | null> {\n return this.executor.execute<TInput, TResult>(key, input);\n }\n} ","import {\n EnvironmentProviders,\n inject,\n InjectionToken,\n makeEnvironmentProviders\n} from '@angular/core';\nimport { AXPCommandRegistry } from './command.registry';\nimport { AXPCommandMiddleware } from './command.middleware';\nimport { AXP_COMMAND_EXTENSION } from './command.extension.token';\n\nexport const AXP_COMMAND_MIDDLEWARE_SETUP = new InjectionToken<void>('AXP_COMMAND_MIDDLEWARE_SETUP');\n\ntype AXPCommandMiddlewareEntry =\n (AXPCommandMiddleware | { target: string | RegExp; middleware: AXPCommandMiddleware })[];\n\nexport function provideCommandMiddleware(\n entries: AXPCommandMiddlewareEntry\n): EnvironmentProviders {\n const global: AXPCommandMiddleware[] = [];\n const extensions: { target: string | RegExp; middleware: AXPCommandMiddleware }[] = [];\n\n for (const entry of entries) {\n if (typeof entry === 'function') {\n global.push(entry);\n } else {\n extensions.push(entry);\n }\n }\n\n return makeEnvironmentProviders([\n // Plugin middleware entries\n ...extensions.map(ext => ({\n provide: AXP_COMMAND_EXTENSION,\n useValue: ext,\n multi: true\n })),\n\n // Global middleware setup (triggered via this token)\n {\n provide: AXP_COMMAND_MIDDLEWARE_SETUP,\n useFactory: () => {\n const registry = inject(AXPCommandRegistry);\n for (const mw of global) {\n registry.use(mw);\n }\n return true;\n }\n }\n ]);\n}","import { EnvironmentInjector, EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, runInInjectionContext, Type } from '@angular/core';\nimport { AXPCommandRegistry } from './command.registry';\nimport { AXPCommand } from './command.interface';\n\n\nexport const AXP_COMMAND_SETUP = new InjectionToken<void>('AXP_COMMAND_SETUP');\n\n\ntype AXPCommandLoader = {\n key: string;\n command: () => Type<AXPCommand> | Promise<Type<AXPCommand>>;\n};\n\n\nexport function provideCommandSetups(entries: AXPCommandLoader[]): EnvironmentProviders {\n\n return makeEnvironmentProviders([\n {\n provide: AXP_COMMAND_SETUP,\n useFactory: () => {\n const registry = inject(AXPCommandRegistry);\n const injector = inject(EnvironmentInjector);\n\n for (const entry of entries) {\n registry.register(entry.key, async () => {\n const CommandType = await entry.command();\n // Try to get from DI first, if fails create new instance\n try {\n return injector.get(CommandType);\n } catch (e) {\n // If not in DI (e.g., for activities), create new instance\n return runInInjectionContext(injector, () => new CommandType());\n }\n });\n }\n\n return true;\n },\n multi: true\n }\n ]);\n}\n\n\nexport function provideCommand(\n key: string,\n loader: () => Type<AXPCommand> | Promise<Type<AXPCommand>>\n): EnvironmentProviders {\n return provideCommandSetups([\n {\n key,\n command: loader\n }\n ]);\n}\n\n\n","import type { AXPQueryMetadataDefinition } from './query-definition.types';\n\n//#region ---- defineQuery ----\n\n/**\n * Typed identity helper for query metadata sidecars.\n */\nexport function defineQuery<T extends AXPQueryMetadataDefinition>(definition: T): T {\n return definition;\n}\n\n//#endregion\n","/**\n * Build-time query metadata only. Safe under Node (e.g. generate-runtime-catalog) without loading the query executor stack.\n * Sidecars should import `defineQuery` from `@acorex/platform/runtime` (or this module for deep imports).\n */\nexport { defineQuery } from './define-query';\nexport * from './query-definition.categories';\n","// queries/query.registry.ts\nimport { Injectable } from '@angular/core';\nimport { AXPQuery } from './query.interface';\nimport { AXPQueryMiddleware } from './query.middleware';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPQueryRegistry {\n private registry = new Map<string, () => Promise<AXPQuery>>();\n private middlewares: AXPQueryMiddleware[] = [];\n\n register(key: string, loader: () => Promise<AXPQuery>): void {\n this.registry.set(key, loader);\n }\n\n unregister(key: string): boolean {\n return this.registry.delete(key);\n }\n\n use(middleware: AXPQueryMiddleware): void {\n this.middlewares.push(middleware);\n }\n\n exists(key: string): boolean {\n return this.registry.has(key);\n }\n\n getLoader(key: string): (() => Promise<AXPQuery>) | undefined {\n return this.registry.get(key);\n }\n\n getMiddlewares(): readonly AXPQueryMiddleware[] {\n return [...this.middlewares];\n }\n\n getRegisteredKeys(): string[] {\n return Array.from(this.registry.keys());\n }\n\n clear(): void {\n this.registry.clear();\n this.middlewares.length = 0;\n }\n}\n","// plugins/query.extension.token.ts\nimport { InjectionToken } from '@angular/core';\nimport { AXPQueryMiddleware } from './query.middleware';\n\nexport interface AXPQueryExtension {\n target: string | RegExp;\n middleware: AXPQueryMiddleware;\n}\n\nexport const AXP_QUERY_EXTENSION = new InjectionToken<AXPQueryExtension[]>('AXP_QUERY_EXTENSION');\n","import {\n EnvironmentProviders,\n inject,\n InjectionToken,\n makeEnvironmentProviders\n} from '@angular/core';\nimport { AXPQueryRegistry } from './query.registry';\nimport { AXPQueryMiddleware } from './query.middleware';\nimport { AXP_QUERY_EXTENSION } from './query.extension.token';\n\nexport const AXP_QUERY_MIDDLEWARE_SETUP = new InjectionToken<void>('AXP_QUERY_MIDDLEWARE_SETUP');\n\ntype AXPQueryMiddlewareEntry =\n (AXPQueryMiddleware | { key: string; middleware: AXPQueryMiddleware })[];\n\nexport function provideQueryMiddleware(\n entries: AXPQueryMiddlewareEntry\n): EnvironmentProviders {\n const global: AXPQueryMiddleware[] = [];\n const extensions: { key: string; middleware: AXPQueryMiddleware }[] = [];\n\n for (const entry of entries) {\n if (typeof entry === 'function') {\n global.push(entry);\n } else {\n extensions.push(entry);\n }\n }\n\n return makeEnvironmentProviders([\n // Plugin middleware entries\n ...extensions.map(ext => ({\n provide: AXP_QUERY_EXTENSION,\n useValue: ext,\n multi: true\n })),\n\n // Global middleware setup (triggered via this token)\n {\n provide: AXP_QUERY_MIDDLEWARE_SETUP,\n useFactory: () => {\n const registry = inject(AXPQueryRegistry);\n for (const mw of global) {\n registry.use(mw);\n }\n return true;\n }\n }\n ]);\n} ","import { EnvironmentInjector, EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider, Type } from '@angular/core';\nimport { AXPQueryRegistry } from './query.registry';\nimport { AXPQuery } from './query.interface';\n\nexport const AXP_QUERY_SETUP = new InjectionToken<void>('AXP_QUERY_SETUP');\n\ntype AXPQueryLoaderEntry = {\n key: string,\n loader: () => Type<AXPQuery> | Promise<Type<AXPQuery>>;\n};\n\nexport function provideQuerySetups(\n entries: AXPQueryLoaderEntry[]\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: AXP_QUERY_SETUP,\n useFactory: () => {\n const registry = inject(AXPQueryRegistry);\n const injector = inject(EnvironmentInjector);\n\n for (const entry of entries) {\n registry.register(entry.key, async () => {\n const CommandType = await entry.loader();\n return injector.get(CommandType);\n });\n }\n\n return true;\n },\n multi: true\n }\n ]);\n} ","/**\n * Build-time query metadata for AXPQuery implementations.\n * Mirrors command metadata shape except there are no `outcomes` (queries only `fetch`).\n * Shares {@link AXPCatalogMetadataDefinitionBase} with commands and widgets; `inputs` / `outputs` live on the base.\n */\n\nimport type {\n AXPCatalogExecutionMode,\n AXPCatalogMetadataDefinitionBase,\n AXPCatalogSchemaPropertyDefinition,\n} from '../shared/catalog-definition-base.types';\n\n//#region ---- Root ----\n\n/** One input/output property description for query definitions (same as command / widget catalog rows). */\nexport type AXPQuerySchemaPropertyDefinition = AXPCatalogSchemaPropertyDefinition;\n\nexport interface AXPQueryMetadataDefinition extends AXPCatalogMetadataDefinitionBase {\n /** Runtime registration key (provideQuerySetups). */\n key: string;\n executionMode: AXPCatalogExecutionMode;\n}\n\n//#endregion\n","// queries/query.middleware.ts\nexport type AXPQueryMiddleware<TInput = any, TResult = any> = (\n input: TInput,\n next: (input: TInput) => Promise<TResult>\n) => Promise<TResult>;\n\nexport function composeQueryMiddlewares<TInput, TResult>(\n middlewares: AXPQueryMiddleware<TInput, TResult>[]\n): (handler: (input: TInput) => Promise<TResult>) => (input: TInput) => Promise<TResult> {\n return (handler: (input: TInput) => Promise<TResult>) => {\n let composed = handler;\n\n for (let i = middlewares.length - 1; i >= 0; i--) {\n const mw = middlewares[i];\n const next = composed;\n\n composed = (input: TInput) => mw(input, next);\n }\n\n return composed;\n };\n}\n","import { Injectable, EnvironmentInjector, inject, runInInjectionContext } from '@angular/core';\nimport { AXPQueryMiddleware, composeQueryMiddlewares } from './query.middleware';\nimport { AXPQueryRegistry } from './query.registry';\nimport { AXP_QUERY_EXTENSION } from './query.extension.token';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPQueryExecutor {\n private readonly injector = inject(EnvironmentInjector);\n private readonly registry = inject(AXPQueryRegistry);\n private readonly extensions = inject(AXP_QUERY_EXTENSION, { optional: true });\n\n async fetch<TInput = any, TResult = any>(\n key: string,\n input: TInput\n ): Promise<TResult | null> {\n const loader = this.registry.getLoader(key);\n if (!loader) {\n return null;\n }\n\n const query = await loader();\n const handler = (i: TInput) => query.fetch(i);\n\n const pluginMiddlewares = this.getPluginMiddlewares(key);\n const globalMiddlewares = this.registry.getMiddlewares();\n\n const wrappedMiddlewares = [...globalMiddlewares, ...pluginMiddlewares].map(middleware => {\n return (input: TInput, next: (input: TInput) => Promise<TResult>) =>\n runInInjectionContext(this.injector, () => middleware(input, next));\n });\n\n const composed = composeQueryMiddlewares(wrappedMiddlewares)(handler);\n return composed(input);\n }\n\n private getPluginMiddlewares(key: string): AXPQueryMiddleware[] {\n return this.extensions\n ?.filter(ext => ext.target instanceof RegExp ? ext.target.test(key) : ext.target === key)\n .map(ext => ext.middleware) ?? [];\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { AXPQuery } from './query.interface';\nimport { AXPQueryMiddleware } from './query.middleware';\nimport { AXPQueryRegistry } from './query.registry';\nimport { AXPQueryExecutor } from './query.executor';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPQueryService {\n private readonly registry = inject(AXPQueryRegistry);\n private readonly executor = inject(AXPQueryExecutor);\n\n // Registry methods\n register(key: string, loader: () => Promise<AXPQuery>): void {\n this.registry.register(key, loader);\n }\n\n unregister(key: string): boolean {\n return this.registry.unregister(key);\n }\n\n use(middleware: AXPQueryMiddleware): void {\n this.registry.use(middleware);\n }\n\n exists(key: string): boolean {\n return this.registry.exists(key);\n }\n\n getRegisteredKeys(): string[] {\n return this.registry.getRegisteredKeys();\n }\n\n clear(): void {\n this.registry.clear();\n }\n\n // Executor methods\n async fetch<TInput = any, TResult = any>(\n key: string,\n input: TInput\n ): Promise<TResult | null> {\n return this.executor.fetch<TInput, TResult>(key, input);\n }\n} ","import type { AXPWidgetMetadataDefinition } from './widget-definition.types';\n\n//#region ---- defineWidget ----\n\n/**\n * Typed identity helper for widget metadata sidecars.\n */\nexport function defineWidget<T extends AXPWidgetMetadataDefinition>(definition: T): T {\n return definition;\n}\n\n//#endregion\n","/**\n * Build-time widget metadata only. Safe for tooling without loading layout widget components.\n * Sidecars should import `defineWidget` from `@acorex/platform/runtime` (or this module for deep imports).\n */\nexport { defineWidget } from './define-widget';\n","/**\n * Build-time widget metadata sidecars (parallel to {@link AXPWidgetConfig} in layout/widget-core).\n * Extends {@link AXPCatalogMetadataDefinitionBase}; `inputs` / `outputs` use the same schema rows as commands/queries.\n * Sidecars may import `defineWidget` from `@acorex/platform/runtime`.\n */\n\nimport type { AXPDefinitionCategory } from '@acorex/platform/core';\n\nimport type {\n AXPCatalogAiMetadata,\n AXPCatalogMetadataDefinitionBase,\n} from '../shared/catalog-definition-base.types';\n\n//#region ---- Widget classification (mirrors widget-core literals; no layout imports) ----\n\n/** Same surface values as {@link AXPWidgetViewType} in layout/widget-core. */\nexport type AXPWidgetMetadataViewType =\n | 'container'\n | 'editor'\n | 'action'\n | 'view'\n | 'filter'\n | 'validation'\n | 'dashboard';\n\n/** Same values as {@link AXPWidgetGroup} / {@link AXPWidgetGroupEnum} in layout/widget-core. */\nexport type AXPWidgetMetadataGroup =\n | 'form-element'\n | 'dashboard-widget'\n | 'form-template'\n | 'property-editor'\n | 'meta-data'\n | 'setting-widget'\n | 'entity-widget'\n | 'utility-widget'\n | 'base-widget';\n\n/**\n * Built-in default filter widget names from {@link AXPWidgetConfig.defaultFilterWidgetName}.\n * Other string values remain valid for custom filters.\n */\nexport type AXPWidgetMetadataDefaultFilterName =\n | 'string-filter'\n | 'number-filter'\n | 'datetime-filter'\n | 'boolean-filter'\n | 'select-filter'\n | 'lookup-filter'\n | 'time-duration-filter';\n\n//#endregion\n\n//#region ---- AI metadata ----\n\n/**\n * Widget renderer surface aligned with {@link AXPWidgetConfig.components} keys in layout/widget-core.\n */\nexport type AXPWidgetAiRenderSurfaceMode =\n | 'view'\n | 'edit'\n | 'column'\n | 'designer'\n | 'print'\n | 'filter';\n\n/**\n * One line of guidance for agents: which Angular component runs in this surface and how it relates to data.\n */\nexport interface AXPWidgetAiRenderSurface {\n mode: AXPWidgetAiRenderSurfaceMode;\n summary: string;\n}\n\n/**\n * AI hints for layout/form agents beyond {@link AXPCatalogAiMetadata}.\n * Prefer `outputs` on {@link AXPCatalogMetadataDefinitionBase} for structured bound-value shape;\n * use `renderSurfaces` for per-mode behavior (e.g. grid uses `column`, not `edit`).\n */\nexport interface AXPWidgetAiMetadata extends AXPCatalogAiMetadata {\n /** Per-surface rendering notes (view vs edit vs column vs designer). */\n renderSurfaces?: readonly AXPWidgetAiRenderSurface[];\n /** Other widget `name` values often used next to or instead of this one. */\n relatedWidgetNames?: string[];\n /**\n * Short layout or options snippets for few-shot style documentation (not executed).\n */\n layoutExamples?: string[];\n}\n\n//#endregion\n\n//#region ---- Root definition ----\n\nexport interface AXPWidgetMetadataDefinition extends Omit<AXPCatalogMetadataDefinitionBase, 'capabilities'> {\n /** Runtime widget registry name (same role as `AXPWidgetConfig.name`). */\n name: string;\n icon?: string;\n subCategory?: AXPDefinitionCategory;\n groups?: readonly AXPWidgetMetadataGroup[];\n defaultFilterWidgetName?: AXPWidgetMetadataDefaultFilterName | string;\n type: AXPWidgetMetadataViewType;\n /**\n * Widget-specific AI block (subtype of base `ai`); omit to use plain {@link AXPCatalogAiMetadata} from base.\n */\n ai?: AXPWidgetAiMetadata;\n}\n\n//#endregion\n\n//#region ---- Re-exports ----\n\nexport type {\n AXPCatalogAiMetadata,\n AXPCatalogMetadataDefinitionBase,\n AXPCatalogPropertyBindingHints,\n AXPCatalogSchemaPropertyDefinition,\n} from '../shared/catalog-definition-base.types';\n\n//#endregion\n","import { AXPViewDefinition } from \"@acorex/platform/core\";\n\nexport type AXPViewMiddleware<TInput = any> = (\n input: TInput,\n next: (input: TInput) => Promise<AXPViewDefinition>\n) => Promise<AXPViewDefinition>;\n\nexport function composeViewMiddlewares<TInput>(\n middlewares: AXPViewMiddleware<TInput>[]\n): (handler: (input: TInput) => Promise<AXPViewDefinition>) => (input: TInput) => Promise<AXPViewDefinition> {\n return (handler: (input: TInput) => Promise<AXPViewDefinition>) => {\n let composed = handler;\n\n for (let i = middlewares.length - 1; i >= 0; i--) {\n const mw = middlewares[i];\n const next = composed;\n\n composed = (input: TInput) => mw(input, next);\n }\n\n return composed;\n };\n} ","import { Injectable } from '@angular/core';\nimport { AXPViewProvider } from './view.interface';\nimport { AXPViewMiddleware } from './view.middleware';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPViewRegistry {\n private registry = new Map<string, () => Promise<AXPViewProvider>>();\n private middlewares: AXPViewMiddleware[] = [];\n\n register(key: string, loader: () => Promise<AXPViewProvider>): void {\n this.registry.set(key, loader);\n }\n\n unregister(key: string): boolean {\n return this.registry.delete(key);\n }\n\n use(middleware: AXPViewMiddleware): void {\n this.middlewares.push(middleware);\n }\n\n exists(key: string): boolean {\n return this.registry.has(key);\n }\n\n getLoader(key: string): (() => Promise<AXPViewProvider>) | undefined {\n return this.registry.get(key);\n }\n\n getMiddlewares(): readonly AXPViewMiddleware[] {\n return [...this.middlewares];\n }\n\n getRegisteredKeys(): string[] {\n return Array.from(this.registry.keys());\n }\n\n clear(): void {\n this.registry.clear();\n this.middlewares.length = 0;\n }\n} ","import { InjectionToken } from '@angular/core';\nimport { AXPViewMiddleware } from './view.middleware';\n\nexport interface AXPViewExtension {\n target: string | RegExp;\n middleware: AXPViewMiddleware;\n}\n\nexport const AXP_VIEW_EXTENSION = new InjectionToken<AXPViewExtension[]>('AXP_VIEW_EXTENSION'); ","import { Injectable, EnvironmentInjector, inject, runInInjectionContext } from '@angular/core';\nimport { AXPViewMiddleware, composeViewMiddlewares } from './view.middleware';\nimport { AXPViewRegistry } from './view.registry';\nimport { AXP_VIEW_EXTENSION } from './view.extension.token';\nimport { AXPViewDefinition } from '@acorex/platform/core';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPViewExecutor {\n private readonly injector = inject(EnvironmentInjector);\n private readonly registry = inject(AXPViewRegistry);\n private readonly extensions = inject(AXP_VIEW_EXTENSION, { optional: true });\n\n async provide<TInput = any>(\n key: string,\n input: TInput\n ): Promise<AXPViewDefinition | null> {\n const loader = this.registry.getLoader(key);\n if (!loader) {\n return null;\n }\n\n const provider = await loader();\n const handler = (i: TInput) => provider.provide(i);\n\n const pluginMiddlewares = this.getPluginMiddlewares(key);\n const globalMiddlewares = this.registry.getMiddlewares();\n\n const wrappedMiddlewares = [...globalMiddlewares, ...pluginMiddlewares].map(middleware => {\n return (input: TInput, next: (input: TInput) => Promise<AXPViewDefinition>) =>\n runInInjectionContext(this.injector, () => middleware(input, next));\n });\n\n const composed = composeViewMiddlewares(wrappedMiddlewares)(handler);\n return composed(input);\n }\n\n private getPluginMiddlewares(key: string): AXPViewMiddleware[] {\n return this.extensions\n ?.filter(ext => ext.target instanceof RegExp ? ext.target.test(key) : ext.target === key)\n .map(ext => ext.middleware) ?? [];\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { AXPViewProvider } from './view.interface';\nimport { AXPViewMiddleware } from './view.middleware';\nimport { AXPViewRegistry } from './view.registry';\nimport { AXPViewExecutor } from './view.executor';\nimport { AXPViewDefinition } from '@acorex/platform/core';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPViewService {\n private readonly registry = inject(AXPViewRegistry);\n private readonly executor = inject(AXPViewExecutor);\n\n //#region ---- Registry Methods ----\n\n register(key: string, loader: () => Promise<AXPViewProvider>): void {\n this.registry.register(key, loader);\n }\n\n unregister(key: string): boolean {\n return this.registry.unregister(key);\n }\n\n use(middleware: AXPViewMiddleware): void {\n this.registry.use(middleware);\n }\n\n exists(key: string): boolean {\n return this.registry.exists(key);\n }\n\n getRegisteredKeys(): string[] {\n return this.registry.getRegisteredKeys();\n }\n\n clear(): void {\n this.registry.clear();\n }\n\n //#endregion\n\n //#region ---- Executor Methods ----\n\n async provide<TInput = any>(\n key: string,\n input: TInput\n ): Promise<AXPViewDefinition | null> {\n return this.executor.provide<TInput>(key, input);\n }\n\n //#endregion\n} ","import { EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { AXPViewRegistry } from './view.registry';\nimport { AXPViewProvider } from './view.interface';\n\nexport const AXP_VIEW_SETUP = new InjectionToken<void>('AXP_VIEW_SETUP');\n\nexport function provideViewSetups(providers: Provider[]): EnvironmentProviders {\n return makeEnvironmentProviders([\n ...providers,\n {\n provide: AXP_VIEW_SETUP,\n useFactory: () => {\n const registry = inject(AXPViewRegistry);\n\n // Setup will be handled by the provided registration functions\n return;\n },\n multi: true\n }\n ]);\n}\n\nexport function provideViewSetup(\n key: string,\n loader: () => Promise<AXPViewProvider>\n): Provider {\n return {\n provide: AXP_VIEW_SETUP,\n useFactory: () => {\n const registry = inject(AXPViewRegistry);\n registry.register(key, loader);\n return;\n },\n multi: true\n };\n} ","import { AXPPolicyEngineContext } from \"./policy.interface\";\n\nexport type AXPPolicyEngineMiddleware = (\n context: AXPPolicyEngineContext,\n next: (context: AXPPolicyEngineContext) => Promise<void>,\n) => Promise<void>;\n\nexport function composePolicyEngineMiddlewares(\n middlewares: AXPPolicyEngineMiddleware[]\n): (handler: (context: AXPPolicyEngineContext) => Promise<void>) => (context: AXPPolicyEngineContext) => Promise<void> {\n return (handler) => {\n let composed = handler;\n for (let i = middlewares.length - 1; i >= 0; i--) {\n const mw = middlewares[i];\n const next = composed;\n composed = (context: AXPPolicyEngineContext) => mw(context, next);\n }\n return composed;\n };\n} ","import { AXPPolicyOptions } from \"./policy.types\";\n\nexport interface AXPPolicy {\n apply(context: AXPPolicyEngineContext): Promise<void>;\n}\n\n\nexport class AXPPolicyEngineContext {\n\n private _id: string;\n private _sender: AXPPolicyOptions['sender'];\n private _visible = true;\n private _enabled = true;\n\n constructor(options: AXPPolicyOptions) {\n this._id = options.id;\n this._sender = options.sender;\n }\n\n public get sender(): AXPPolicyOptions['sender'] {\n return this._sender;\n }\n\n public get id() {\n return this._id;\n }\n\n public get visible() {\n return this._visible;\n }\n\n public get enabled() {\n return this._enabled;\n }\n\n setVisible(visible: boolean) {\n this._visible = visible;\n return this;\n }\n setEnabled(enabled: boolean) {\n this._enabled = enabled;\n return this;\n }\n} \n","// plugins/command.extension.token.ts\nimport { InjectionToken } from '@angular/core';\nimport { AXPPolicyEngineMiddleware } from './policy.middleware';\n\nexport interface AXPPolicyExtension {\n key: string;\n middleware: AXPPolicyEngineMiddleware;\n}\n\nexport const AXP_POLICY_EXTENSION = new InjectionToken<AXPPolicyExtension[]>('AXP_POLICY_EXTENSION');\n","import { EnvironmentInjector, Inject, inject, Injectable, Optional, runInInjectionContext } from '@angular/core';\nimport { AXPPolicyEngineMiddleware, composePolicyEngineMiddlewares } from './policy.middleware';\nimport { AXPPolicyEngineContext } from './policy.interface';\nimport { AXPPolicyOptions } from './policy.types';\nimport { AXPPolicy } from './policy.interface';\nimport { AXP_POLICY_EXTENSION } from './policy.extension.token';\nimport { AXPPolicyExtension } from './policy.extension.token';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPPolicyEngineRegistry {\n private registry = new Map<string, () => Promise<AXPPolicy>>();\n private middlewares: AXPPolicyEngineMiddleware[] = [];\n private extensions = inject(AXP_POLICY_EXTENSION, { optional: true });\n\n private injector = inject(EnvironmentInjector);\n\n\n use(mw: AXPPolicyEngineMiddleware): void {\n this.middlewares.push(mw);\n }\n\n exists(key: string): boolean {\n return this.registry.has(key);\n }\n\n getPolicies(): string[] {\n return Array.from(this.registry.keys());\n }\n\n register(key: string, loader: () => Promise<AXPPolicy>): void {\n this.registry.set(key, loader);\n }\n\n\n private getPluginMiddlewares(key: string): AXPPolicyEngineMiddleware[] {\n return this.extensions\n ?.filter(ext => ext.key === key)\n .map(ext => ext.middleware) ?? [];\n }\n\n\n\n async execute(\n policy: string,\n instance: AXPPolicyOptions\n ): Promise<AXPPolicyEngineContext> {\n const loader = this.registry.get(policy);\n if (!loader) {\n throw new Error(`${policy} not implemented`);\n }\n const context = new AXPPolicyEngineContext(instance);\n const applier = await loader();\n const handler = (i: AXPPolicyEngineContext) => applier.apply(i);\n\n const pluginMws = this.getPluginMiddlewares(policy);\n\n const wrappedMws = [...this.middlewares, ...pluginMws].map(mw => {\n return (input: AXPPolicyEngineContext, next: (input: AXPPolicyEngineContext) => Promise<void>) =>\n runInInjectionContext(this.injector, () => mw(input, next));\n });\n\n const composed = composePolicyEngineMiddlewares(wrappedMws)(handler);\n await composed(context);\n return context;\n }\n} ","import { inject, Injectable } from \"@angular/core\";\nimport { AXPPolicyEngineRegistry } from \"./policy.registry\";\nimport { AXPPolicyOptions } from \"./policy.types\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXPPolicyEngineService {\n private registry = inject(AXPPolicyEngineRegistry);\n\n\n\n async apply(options: AXPPolicyOptions) {\n const allPolicies = this.registry.getPolicies().filter(p => (options.policies?.length ?? 0) == 0 || options.policies?.includes(p));\n\n await Promise.all(allPolicies.map(async policy => {\n const context = await this.registry.execute(policy, options);\n return context;\n }));\n\n\n\n //\n // if (instance instanceof HTMLElement) {\n // if (context.visible === false) {\n // instance.style.display = 'none';\n // } else {\n // instance.style.display = '';\n // }\n // }\n // //\n // if (instance instanceof MXBaseComponent) {\n // if (context.visible === false) {\n // instance.getHostElement().style.display = 'none';\n // } else {\n // instance.getHostElement().style.display = '';\n // }\n // }\n // // Handle disabled state for interactive components\n // if (instance instanceof MXInteractiveComponent) {\n // if (context.enabled === false) {\n // instance.disabled = true;\n // } else {\n // instance.disabled = false;\n // }\n // }\n // // TODO: Handle object properties \n // if (instance instanceof Object) {\n // if (context.visible === false) {\n // set(instance, 'visible', false);\n // }\n // if (context.enabled === false) {\n // set(instance, 'disabled', true);\n // }\n // }\n }\n\n\n\n}\n","import { Directive, ElementRef, input, effect, inject } from '@angular/core';\nimport { AXPPolicyEngineService } from './policy.service';\nimport { castArray } from 'lodash-es';\n\n@Directive({\n selector: '[axp-apply-policy]',\n standalone: true\n})\nexport class AXPPolicyEngineDirective {\n policy = input.required<string | undefined | null>({ alias: 'axp-apply-policy' });\n private service = inject(AXPPolicyEngineService);\n private elementRef = inject(ElementRef<HTMLElement>);\n\n\n #eff = effect(async () => {\n const policy = this.policy();\n if (!policy) {\n return;\n }\n await this.service.apply({\n id: this.elementRef.nativeElement.id,\n policies: castArray(policy),\n sender: this.elementRef.nativeElement\n });\n });\n\n}\n","import { EnvironmentInjector, EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Type } from '@angular/core';\nimport { AXPPolicyEngineRegistry } from './policy.registry';\nimport { AXPPolicy } from './policy.interface';\n\nexport const AXP_POLICY_ENGINE_MIDDLEWARE_SETUP = new InjectionToken<void>('AXP_POLICY_ENGINE_MIDDLEWARE_SETUP');\n\n\n\ntype AXPPolicyLoader = {\n key: string;\n policy: () => Type<AXPPolicy> | Promise<Type<AXPPolicy>>;\n};\n\n\nexport function providePolicySetups(entries: AXPPolicyLoader[]): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: AXP_POLICY_ENGINE_MIDDLEWARE_SETUP,\n useFactory: () => {\n const registry = inject(AXPPolicyEngineRegistry);\n const injector = inject(EnvironmentInjector);\n\n for (const entry of entries) {\n registry.register(entry.key, async () => {\n const PolicyType = await entry.policy();\n return injector.get(PolicyType);\n });\n }\n\n return true;\n }\n }\n ]);\n}","import { EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { AXPViewRegistry } from './view.registry';\nimport { AXPViewMiddleware } from './view.middleware';\n\nexport const AXP_VIEW_MIDDLEWARE_SETUP = new InjectionToken<void>('AXP_VIEW_MIDDLEWARE_SETUP');\n\nexport function provideViewMiddleware(middlewares: AXPViewMiddleware[]): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: AXP_VIEW_MIDDLEWARE_SETUP,\n useFactory: () => {\n const registry = inject(AXPViewRegistry);\n middlewares.forEach(middleware => registry.use(middleware));\n return;\n },\n multi: true\n }\n ]);\n}\n\nexport function provideViewMiddlewareSetup(\n middleware: AXPViewMiddleware\n): Provider {\n return {\n provide: AXP_VIEW_MIDDLEWARE_SETUP,\n useFactory: () => {\n const registry = inject(AXPViewRegistry);\n registry.use(middleware);\n return;\n },\n multi: true\n };\n} ","import { NgModule, Inject, isDevMode, Optional, inject } from \"@angular/core\";\nimport { AXP_COMMAND_SETUP } from \"./commands/provide-command-setups\";\nimport { AXP_COMMAND_MIDDLEWARE_SETUP } from \"./commands/provide-command-middleware\";\nimport { AXP_QUERY_SETUP } from \"./queries/provide-query-setups\";\nimport { AXP_QUERY_MIDDLEWARE_SETUP } from \"./queries/provide-query-middleware\";\nimport { AXP_VIEW_SETUP } from \"./views/provide-view-setups\";\nimport { AXP_VIEW_MIDDLEWARE_SETUP } from \"./views/provide-view-middleware\";\nimport { AXP_POLICY_ENGINE_MIDDLEWARE_SETUP } from \"./policy/policy-middleware-provider\";\n\n@NgModule()\nexport class AXPRuntimeModule {\n\n private _commandSetup = inject(AXP_COMMAND_SETUP, { optional: true });\n private _commandMiddlewareSetup = inject(AXP_COMMAND_MIDDLEWARE_SETUP, { optional: true });\n\n private _querySetup = inject(AXP_QUERY_SETUP, { optional: true });\n private _queryMiddlewareSetup = inject(AXP_QUERY_MIDDLEWARE_SETUP, { optional: true });\n\n private _viewSetup = inject(AXP_VIEW_SETUP, { optional: true });\n private _viewMiddlewareSetup = inject(AXP_VIEW_MIDDLEWARE_SETUP, { optional: true });\n\n private _policyEngineSetup = inject(AXP_POLICY_ENGINE_MIDDLEWARE_SETUP, { optional: true });\n\n constructor() {\n if (isDevMode() && false) {\n console.log('[AXPRuntimeModule] Command Setup:', this._commandSetup);\n console.log('[AXPRuntimeModule] Command Middleware Setup:', this._commandMiddlewareSetup);\n console.log('[AXPRuntimeModule] Query Setup:', this._querySetup);\n console.log('[AXPRuntimeModule] Query Middleware Setup:', this._queryMiddlewareSetup);\n console.log('[AXPRuntimeModule] View Setup:', this._viewSetup);\n console.log('[AXPRuntimeModule] View Middleware Setup:', this._viewMiddlewareSetup);\n console.log('[AXPRuntimeModule] Policy Engine Setup:', this._policyEngineSetup);\n }\n }\n}\n","// Commands\nexport * from './lib/commands';\n\n// Queries\nexport * from './lib/queries';\n\n// Widgets (metadata sidecars)\nexport * from './lib/widgets';\n\n// Views\nexport * from './lib/views';\n\n// Policy\nexport * from './lib/policy';\n\n// Runtime\nexport * from './lib/runtime.module';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}