@salsita-ai/sdk 0.50.0-develop.03ef51a292 → 0.50.0-develop.08837efd9c

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 (780) hide show
  1. package/README.md +2 -2
  2. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  3. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  4. package/dist/application-spec/core/components/component-filter.js +1 -0
  5. package/dist/application-spec/core/components/index.d.ts +2 -0
  6. package/dist/application-spec/core/components/index.js +1 -0
  7. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  8. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  9. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  10. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  11. package/dist/application-spec/core/index.d.ts +1 -0
  12. package/dist/application-spec/core/index.js +1 -1
  13. package/dist/application-spec/core/json-value.d.ts +1 -1
  14. package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
  15. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  16. package/dist/application-spec/enhanced-json/index.js +1 -0
  17. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  18. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  19. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  20. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  21. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  22. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  23. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  24. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  25. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  26. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  27. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  28. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  29. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  30. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  31. package/dist/application-spec/errors/diagnostic-messages.d.ts +12 -0
  32. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  33. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +8 -1
  34. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  35. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +4 -4
  36. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  37. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  38. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +56 -56
  39. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +1 -1
  40. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  41. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  42. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  43. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  44. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +11 -11
  45. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +1 -1
  46. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  47. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  48. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  49. package/dist/application-spec/generate-application/code/templates/globals.js +5 -4
  50. package/dist/application-spec/generate-application/code/templates/index.d.ts +0 -7
  51. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  52. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  53. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +66 -42
  54. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +8 -2
  55. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +13 -14
  56. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +6 -8
  57. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +4 -3
  58. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -2
  59. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +1 -3
  60. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +1 -3
  61. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +1 -1
  62. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  63. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +2 -1
  64. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  65. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +2 -4
  66. package/dist/application-spec/index.d.ts +1 -0
  67. package/dist/application-spec/index.js +1 -1
  68. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  69. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  70. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  71. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  72. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  73. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  74. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  75. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  76. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  77. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  78. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  79. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  80. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  81. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  82. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  83. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  84. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  85. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  86. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  87. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  88. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  89. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  90. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  91. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  92. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  93. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  94. package/dist/client/authorized-client.d.ts +3 -1
  95. package/dist/client/authorized-client.js +1 -1
  96. package/dist/client/contract.d.ts +34 -0
  97. package/dist/client/contract.js +1 -1
  98. package/dist/client/index.d.ts +2 -2
  99. package/dist/client/index.js +1 -1
  100. package/dist/client/local-authorized-client.d.ts +3 -1
  101. package/dist/client/local-authorized-client.js +1 -1
  102. package/dist/client/memory-authorized-client.d.ts +3 -1
  103. package/dist/client/memory-authorized-client.js +1 -1
  104. package/dist/client/phoenix-api.d.ts +311 -2
  105. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  106. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  107. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  108. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +92 -3
  109. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  110. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  111. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  112. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +14 -4
  113. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  114. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  115. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  116. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  117. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
  118. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  119. package/dist/configurator/common/configurator-interface.d.ts +5 -1
  120. package/dist/configurator/common/configurator-interface.js +1 -1
  121. package/dist/configurator/common/frontend-analytics.d.ts +2 -0
  122. package/dist/configurator/common/frontend-analytics.js +1 -1
  123. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +1 -1
  124. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +6 -0
  125. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  126. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  127. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  128. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  129. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  130. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  131. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  132. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  133. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  134. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  135. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +2 -1
  136. package/dist/configurator/ui/assistant/AssistantComposer.js +1 -1
  137. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  138. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  139. package/dist/configurator/ui/assistant/AssistantThread.d.ts +6 -2
  140. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  141. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  142. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  143. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  144. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  145. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  146. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  147. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +5 -0
  148. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +1 -0
  149. package/dist/configurator/ui/assistant/entity-link/index.d.ts +3 -0
  150. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  151. package/dist/configurator/ui/assistant/thread-items.d.ts +13 -2
  152. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  153. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  154. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  155. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  156. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  157. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  158. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  159. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  160. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  161. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  162. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  163. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  164. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  165. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  166. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  167. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  168. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  169. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  170. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  171. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  172. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  173. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -2
  174. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +16 -19
  175. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  176. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  177. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  178. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  179. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  180. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  181. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  182. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  183. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  184. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  185. package/dist/docs/index.json +32 -1
  186. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  187. package/dist/docs/layouts/custom-layout.mdx +981 -0
  188. package/dist/docs/layouts/header/fixed.mdx +2 -2
  189. package/dist/docs/layouts/header/floating.mdx +2 -2
  190. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  191. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  192. package/dist/docs/other-features/side-effects.mdx +8 -11
  193. package/dist/docs/other-features/transformers.mdx +4 -0
  194. package/dist/docs/other-features/violation-messages.mdx +52 -56
  195. package/dist/docs/phoenix/configurator-interface.mdx +106 -65
  196. package/dist/docs/phoenix/deployments.mdx +1 -1
  197. package/dist/docs/phoenix/domain-model.mdx +4 -0
  198. package/dist/docs/phoenix/expression-context.mdx +11 -3
  199. package/dist/docs/phoenix/getting-started.mdx +1 -1
  200. package/dist/docs/phoenix/phoenix-cli.mdx +43 -47
  201. package/dist/docs/phoenix/project-structure.mdx +18 -11
  202. package/dist/docs/phoenix/quickstart.mdx +2 -2
  203. package/dist/docs/phoenix/sdk-builder-workflow.mdx +8 -8
  204. package/dist/docs/phoenix/testing.mdx +140 -0
  205. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  206. package/dist/docs/phoenix/webhooks.mdx +2 -2
  207. package/dist/docs/ux-guidelines/choosing-a-control.mdx +11 -0
  208. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -11
  209. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  210. package/dist/domain/admin-domain/index.d.ts +8 -3
  211. package/dist/domain/admin-domain/index.js +1 -1
  212. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +2 -2
  213. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  214. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  215. package/dist/domain/application/admin-page-factories.d.ts +1 -2
  216. package/dist/domain/application/application-config.d.ts +7 -26
  217. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  218. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  219. package/dist/domain/application/assistant/assistant-manifest.d.ts +9 -1
  220. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +38 -2
  221. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  222. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  223. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  224. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  225. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  226. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  227. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  228. package/dist/domain/application/assistant/index.d.ts +6 -1
  229. package/dist/domain/application/assistant/index.js +1 -1
  230. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  231. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  232. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  233. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  234. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  235. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  236. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  237. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  238. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  239. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  240. package/dist/domain/application/assistant-mutations.d.ts +2 -1
  241. package/dist/domain/application/assistant-recipe-groups.d.ts +1 -1
  242. package/dist/domain/application/configurator-builder.d.ts +2 -2
  243. package/dist/domain/application/configurator-builder.js +1 -1
  244. package/dist/domain/application/create-initial-published-data.d.ts +6 -7
  245. package/dist/domain/application/index.d.ts +2 -6
  246. package/dist/domain/application/index.js +1 -1
  247. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  248. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  249. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  250. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  251. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  252. package/dist/domain/application/published-data/build-legend-data.d.ts +1 -1
  253. package/dist/domain/application/published-data/format-field-type.d.ts +1 -1
  254. package/dist/domain/application/published-data/map-data-to-sheet.d.ts +1 -1
  255. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +3 -3
  256. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  257. package/dist/domain/application/published-data/validate-sheet-data.d.ts +1 -1
  258. package/dist/domain/available-system-components.js +1 -1
  259. package/dist/domain/core/action/action-factory.d.ts +2 -2
  260. package/dist/domain/core/action/action.d.ts +19 -14
  261. package/dist/domain/core/action/index.d.ts +0 -1
  262. package/dist/domain/core/action/index.js +1 -1
  263. package/dist/domain/core/component/domain-component-optic.d.ts +29 -40
  264. package/dist/domain/core/component/domain-component-optic.js +2 -2
  265. package/dist/domain/core/component/legacy-filter.d.ts +2 -17
  266. package/dist/domain/core/component/system-component-filter.d.ts +36 -18
  267. package/dist/domain/core/data-schema/data-cell-value.d.ts +4 -0
  268. package/dist/domain/core/data-schema/data-schema-array-field.d.ts +5 -0
  269. package/dist/domain/core/data-schema/data-schema-field-object.d.ts +4 -0
  270. package/dist/domain/core/data-schema/data-schema-field-object.js +1 -0
  271. package/dist/domain/core/data-schema/data-schema-field.d.ts +2 -0
  272. package/dist/domain/core/data-schema/data-schema-field.js +1 -0
  273. package/dist/domain/core/data-schema/data-schema-localized-field.d.ts +4 -0
  274. package/dist/domain/core/data-schema/data-schema-localized-field.js +1 -0
  275. package/dist/domain/core/data-schema/data-schema-primitive-field.d.ts +5 -0
  276. package/dist/domain/core/data-schema/data-schema-primitive-field.js +1 -0
  277. package/dist/domain/core/data-schema/data-schema.d.ts +2 -0
  278. package/dist/domain/core/data-schema/data-schema.js +1 -0
  279. package/dist/domain/core/data-schema/index.d.ts +7 -0
  280. package/dist/domain/core/data-schema/index.js +1 -0
  281. package/dist/domain/core/domain.d.ts +2 -2
  282. package/dist/domain/core/emission/index.d.ts +8 -0
  283. package/dist/domain/core/emission/index.js +1 -0
  284. package/dist/domain/core/emission/reset-state-emission.d.ts +12 -0
  285. package/dist/domain/core/emission/reset-state-emission.js +1 -0
  286. package/dist/domain/core/emission/state-emission.d.ts +4 -0
  287. package/dist/domain/core/emission/state-emission.js +1 -0
  288. package/dist/domain/core/emission/state-update-emission.d.ts +14 -0
  289. package/dist/domain/core/emission/state-update-emission.js +1 -0
  290. package/dist/domain/core/emission/state-validation-result.d.ts +18 -0
  291. package/dist/domain/core/emission/state-validation-result.js +1 -0
  292. package/dist/domain/core/emission/transformation-log.d.ts +2 -0
  293. package/dist/domain/core/emission/transformation-log.js +1 -0
  294. package/dist/domain/core/emission/transformer-log-entry.d.ts +6 -0
  295. package/dist/domain/core/emission/transformer-log-entry.js +1 -0
  296. package/dist/domain/core/emission/transformer-log.d.ts +11 -0
  297. package/dist/domain/core/emission/transformer-log.js +1 -0
  298. package/dist/domain/core/emission/transformer-phase.d.ts +1 -0
  299. package/dist/domain/core/emission/transformer-phase.js +1 -0
  300. package/dist/domain/core/expression/aliased-expressions.d.ts +10 -0
  301. package/dist/domain/core/expression/aliased-expressions.js +1 -0
  302. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  303. package/dist/domain/core/expression/constant-expressions.js +1 -1
  304. package/dist/domain/core/expression/custom-expression.d.ts +21 -8
  305. package/dist/domain/core/expression/custom-expression.js +1 -1
  306. package/dist/domain/core/expression/expression.d.ts +15 -17
  307. package/dist/domain/core/expression/index.d.ts +1 -2
  308. package/dist/domain/core/expression/index.js +1 -1
  309. package/dist/domain/core/index.d.ts +4 -0
  310. package/dist/domain/core/index.js +1 -1
  311. package/dist/domain/core/invariant/custom-invariants.d.ts +8 -16
  312. package/dist/domain/core/invariant/index.d.ts +1 -1
  313. package/dist/domain/core/invariant/index.js +1 -1
  314. package/dist/domain/core/invariant/invariants.d.ts +4 -70
  315. package/dist/domain/core/invariant/invariants.js +1 -1
  316. package/dist/domain/core/invariant/violation.d.ts +51 -3
  317. package/dist/domain/core/invariant/violation.js +1 -1
  318. package/dist/domain/core/recipe/index.d.ts +1 -0
  319. package/dist/domain/core/recipe/index.js +1 -0
  320. package/dist/domain/core/recipe/recipes.d.ts +23 -0
  321. package/dist/domain/core/recipe/recipes.js +1 -0
  322. package/dist/domain/core/relation/all-of-type-relation.d.ts +19 -0
  323. package/dist/domain/core/relation/all-of-type-relation.js +1 -0
  324. package/dist/domain/{relations → core/relation}/component-factories.d.ts +1 -1
  325. package/dist/domain/core/relation/component-factories.js +1 -0
  326. package/dist/domain/{relations → core/relation}/composed-of.d.ts +1 -1
  327. package/dist/domain/core/relation/composed-of.js +1 -0
  328. package/dist/domain/core/relation/direct-relation.d.ts +17 -0
  329. package/dist/domain/core/relation/index.d.ts +8 -0
  330. package/dist/domain/core/relation/index.js +1 -0
  331. package/dist/domain/core/relation/indirect-relation.d.ts +25 -0
  332. package/dist/domain/core/relation/indirect-relation.js +1 -0
  333. package/dist/domain/{relations → core/relation}/reference-component.d.ts +4 -3
  334. package/dist/domain/core/relation/reference-component.js +1 -0
  335. package/dist/domain/{relations → core/relation}/reference-field.d.ts +1 -1
  336. package/dist/domain/core/relation/reference-field.js +1 -0
  337. package/dist/domain/core/relation/relation-factory.d.ts +22 -0
  338. package/dist/domain/core/relation/relation-factory.js +1 -0
  339. package/dist/domain/core/state/migrations.d.ts +14 -45
  340. package/dist/domain/core/state/migrations.js +1 -1
  341. package/dist/domain/core/state/state.d.ts +1 -1
  342. package/dist/domain/domain-builder.d.ts +2 -5
  343. package/dist/domain/domain-builder.js +1 -1
  344. package/dist/domain/domain-context/action-system/action-system.d.ts +2 -2
  345. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  346. package/dist/domain/domain-context/action-system/index.d.ts +1 -0
  347. package/dist/domain/domain-context/action-system/index.js +1 -0
  348. package/dist/domain/domain-context/analytics-system/index.d.ts +2 -0
  349. package/dist/domain/domain-context/analytics-system/index.js +1 -0
  350. package/dist/domain/domain-context/create-transformer.d.ts +1 -1
  351. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +2 -2
  352. package/dist/domain/domain-context/dimension-system/dimension-system.js +1 -1
  353. package/dist/domain/domain-context/dimension-system/index.d.ts +1 -0
  354. package/dist/domain/domain-context/dimension-system/index.js +1 -0
  355. package/dist/domain/domain-context/domain-context-systems.d.ts +7 -7
  356. package/dist/domain/domain-context/index.d.ts +8 -18
  357. package/dist/domain/domain-context/index.js +1 -1
  358. package/dist/domain/domain-context/navigation-system/index.d.ts +3 -0
  359. package/dist/domain/domain-context/navigation-system/index.js +1 -0
  360. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +2 -3
  361. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  362. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +1 -1
  363. package/dist/domain/domain-context/recipe-system/index.d.ts +1 -0
  364. package/dist/domain/domain-context/recipe-system/index.js +1 -0
  365. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +2 -3
  366. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  367. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +2 -2
  368. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +2 -2
  369. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  370. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +2 -2
  371. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  372. package/dist/domain/domain-context/relation-transformers/index.d.ts +4 -0
  373. package/dist/domain/domain-context/relation-transformers/index.js +1 -0
  374. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +2 -2
  375. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  376. package/dist/domain/domain-context/store-system/index.d.ts +4 -0
  377. package/dist/domain/domain-context/store-system/index.js +1 -0
  378. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  379. package/dist/domain/domain-context/store-system/store-system.d.ts +2 -35
  380. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  381. package/dist/domain/domain-context/store-system/system-state.d.ts +1 -1
  382. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  383. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +5 -7
  384. package/dist/domain/domain-context/transformers/auto-snap-transformer.js +1 -1
  385. package/dist/domain/domain-context/transformers/chain-builder.d.ts +1 -1
  386. package/dist/domain/domain-context/transformers/context.d.ts +2 -3
  387. package/dist/domain/domain-context/transformers/context.js +1 -1
  388. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  389. package/dist/domain/domain-context/transformers/index.d.ts +1 -1
  390. package/dist/domain/domain-context/transformers/index.js +1 -1
  391. package/dist/domain/domain-context/transformers/when-builder.d.ts +2 -3
  392. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  393. package/dist/domain/domain-context/undo-system.d.ts +2 -3
  394. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  395. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  396. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  397. package/dist/domain/domain-runtime/access/types.js +1 -1
  398. package/dist/domain/domain-runtime/domain-context/action-context.d.ts +11 -0
  399. package/dist/domain/domain-runtime/domain-context/action-context.js +1 -0
  400. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  401. package/dist/domain/domain-runtime/domain-context/expression-context.d.ts +8 -0
  402. package/dist/domain/domain-runtime/domain-context/expression-context.js +1 -0
  403. package/dist/domain/domain-runtime/domain-context/index.d.ts +3 -0
  404. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.d.ts +18 -0
  405. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.js +1 -0
  406. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +19 -23
  407. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  408. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  409. package/dist/domain/domain-runtime/domain-runtime.d.ts +84 -68
  410. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  411. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  412. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  413. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  414. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  415. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  416. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  417. package/dist/domain/domain-runtime/errors/index.js +1 -0
  418. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  419. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  420. package/dist/domain/domain-runtime/index.d.ts +1 -0
  421. package/dist/domain/domain-runtime/index.js +1 -1
  422. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  423. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  424. package/dist/domain/domain-runtime/spec/index.d.ts +5 -0
  425. package/dist/domain/domain-runtime/spec/index.js +1 -1
  426. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  427. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  428. package/dist/domain/{core/expression → domain-runtime/spec}/memoize-expression.d.ts +1 -2
  429. package/dist/domain/{application → domain-runtime/spec/module-checks}/element-registration.d.ts +2 -2
  430. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -0
  431. package/dist/domain/{application → domain-runtime/spec/module-checks}/handler-registration.d.ts +1 -1
  432. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.js +1 -0
  433. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +8 -0
  434. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -0
  435. package/dist/domain/{project-modules → domain-runtime/spec/module-checks}/project-modules.d.ts +8 -17
  436. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -0
  437. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.d.ts +4 -0
  438. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -0
  439. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.d.ts +4 -0
  440. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.js +1 -0
  441. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +15 -0
  442. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -0
  443. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +22 -0
  444. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -0
  445. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +6 -0
  446. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -0
  447. package/dist/domain/{core/action → domain-runtime/spec}/prepare-action-implementations.d.ts +1 -1
  448. package/dist/domain/domain-runtime/spec/prepare-action-implementations.js +5 -0
  449. package/dist/domain/{core/expression → domain-runtime/spec}/prepare-domain-expressions.d.ts +1 -1
  450. package/dist/domain/domain-runtime/spec/selectors.d.ts +5 -6
  451. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  452. package/dist/domain/domain-runtime/spec/types.d.ts +3 -2
  453. package/dist/domain/{system-components → extensions}/canvas-config.d.ts +1 -1
  454. package/dist/domain/{system-components → extensions}/child-entity-recipe-hierarchy.d.ts +1 -1
  455. package/dist/domain/extensions/child-entity-recipe-hierarchy.js +1 -0
  456. package/dist/domain/{system-components → extensions}/client-side-image.d.ts +2 -2
  457. package/dist/domain/{system-components → extensions}/client-side-image.js +1 -1
  458. package/dist/domain/{system-components → extensions}/common/angle-indicator-schema.d.ts +3 -3
  459. package/dist/domain/extensions/common/angle-indicator-schema.js +1 -0
  460. package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.d.ts +2 -2
  461. package/dist/domain/extensions/common/index.d.ts +4 -0
  462. package/dist/domain/extensions/common/index.js +1 -0
  463. package/dist/domain/{system-components → extensions}/custom-header.d.ts +1 -1
  464. package/dist/domain/extensions/custom-header.js +1 -0
  465. package/dist/domain/{system-components → extensions}/custom-price-footer.js +1 -1
  466. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.d.ts +1 -1
  467. package/dist/domain/extensions/custom-sidebar-footer.js +1 -0
  468. package/dist/domain/{system-components → extensions}/editable-angle-indicator.d.ts +3 -2
  469. package/dist/domain/extensions/editable-angle-indicator.js +1 -0
  470. package/dist/domain/{system-components → extensions}/editable-distance-dimension-indicator.d.ts +3 -2
  471. package/dist/domain/extensions/editable-distance-dimension-indicator.js +1 -0
  472. package/dist/domain/{system-components → extensions}/editable-offset-indicator.d.ts +3 -2
  473. package/dist/domain/extensions/editable-offset-indicator.js +1 -0
  474. package/dist/domain/{system-components → extensions}/editable-size-indicator.d.ts +2 -1
  475. package/dist/domain/extensions/editable-size-indicator.js +1 -0
  476. package/dist/domain/{system-components → extensions}/entity-header.d.ts +1 -1
  477. package/dist/domain/extensions/entity-header.js +1 -0
  478. package/dist/domain/{system-components → extensions}/finalize-component.js +1 -1
  479. package/dist/domain/{system-components → extensions}/horizontal-tabs.d.ts +2 -2
  480. package/dist/domain/extensions/index.d.ts +69 -0
  481. package/dist/domain/extensions/index.js +1 -0
  482. package/dist/domain/{system-components → extensions}/list-selector-dimension-indicator.d.ts +3 -2
  483. package/dist/domain/extensions/list-selector-dimension-indicator.js +1 -0
  484. package/dist/domain/{system-components → extensions}/navigation-steps.d.ts +2 -2
  485. package/dist/domain/extensions/offset-indicator.js +1 -0
  486. package/dist/domain/{system-components → extensions}/property-page.d.ts +1 -1
  487. package/dist/domain/extensions/property-page.js +1 -0
  488. package/dist/domain/{system-components → extensions}/replace-entity-recipe-hierarchy.d.ts +1 -1
  489. package/dist/domain/extensions/replace-entity-recipe-hierarchy.js +1 -0
  490. package/dist/domain/{system-components → extensions}/rotation-handle.d.ts +2 -2
  491. package/dist/domain/{system-components → extensions}/save-template-thumbnail.d.ts +2 -2
  492. package/dist/domain/{system-components → extensions}/save-template-thumbnail.js +1 -1
  493. package/dist/domain/{system-components → extensions}/scene-entity-add-fab.d.ts +1 -1
  494. package/dist/domain/extensions/scene-entity-add-fab.js +1 -0
  495. package/dist/domain/{system-components → extensions}/scene-entity-delete-fab.d.ts +1 -1
  496. package/dist/domain/extensions/scene-entity-delete-fab.js +1 -0
  497. package/dist/domain/{system-components → extensions}/scene-entity-html-hotspot.d.ts +1 -1
  498. package/dist/domain/extensions/scene-entity-html-hotspot.js +1 -0
  499. package/dist/domain/{system-components → extensions}/scene-entity-navigation-hotspot.d.ts +1 -1
  500. package/dist/domain/extensions/scene-entity-navigation-hotspot.js +1 -0
  501. package/dist/domain/{system-components → extensions}/scene-entity-object-html-hotspot.d.ts +1 -1
  502. package/dist/domain/extensions/scene-entity-object-html-hotspot.js +1 -0
  503. package/dist/domain/{system-components → extensions}/scene-entity-select-hotspot.d.ts +1 -1
  504. package/dist/domain/extensions/scene-entity-select-hotspot.js +1 -0
  505. package/dist/domain/{system-components → extensions}/sketching-edit.d.ts +1 -1
  506. package/dist/domain/extensions/sketching-edit.js +1 -0
  507. package/dist/domain/{system-components → extensions}/summary-component.js +1 -1
  508. package/dist/domain/{system-components → extensions}/tool-menu-fab.d.ts +1 -1
  509. package/dist/domain/extensions/tool-menu-fab.js +1 -0
  510. package/dist/domain/{system-components → extensions}/toolbar.d.ts +1 -1
  511. package/dist/domain/extensions/toolbar.js +1 -0
  512. package/dist/domain/index.d.ts +2 -6
  513. package/dist/domain/index.js +1 -1
  514. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  515. package/dist/domain/mocks/create-mock-domain-runtime-services.d.ts +1 -1
  516. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +28 -19
  517. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  518. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  519. package/dist/domain/mocks/create-mock-domain.js +1 -1
  520. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  521. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  522. package/dist/domain/mocks/create-test-application-config.js +1 -0
  523. package/dist/domain/mocks/index.d.ts +1 -0
  524. package/dist/domain/mocks/index.js +1 -1
  525. package/dist/domain/projections/blender-projections/blender-projections.d.ts +1 -2
  526. package/dist/domain/projections/blender-projections/camera.d.ts +2 -2
  527. package/dist/domain/projections/collision-projections.d.ts +1 -1
  528. package/dist/domain/projections/composition-projections.d.ts +1 -1
  529. package/dist/domain/projections/composition-projections.js +1 -1
  530. package/dist/domain/projections/constraint-projections.d.ts +1 -1
  531. package/dist/domain/projections/index.d.ts +1 -1
  532. package/dist/domain/projections/position-projections.d.ts +1 -1
  533. package/dist/domain/projections/projected-entities-projections.d.ts +1 -1
  534. package/dist/domain/projections/snapping-projections.d.ts +1 -1
  535. package/dist/domain/projections/validation-projections.d.ts +3 -19
  536. package/dist/domain/sketching/sketching-projections.d.ts +1 -1
  537. package/dist/domain/system-components/application-config.d.ts +2 -2
  538. package/dist/domain/system-components/child-entity-selection.d.ts +1 -2
  539. package/dist/domain/system-components/collision-box-geometry.d.ts +4 -2
  540. package/dist/domain/system-components/collision-geometry.d.ts +4 -2
  541. package/dist/domain/system-components/collision-point-geometry.d.ts +4 -2
  542. package/dist/domain/system-components/common/index.d.ts +0 -4
  543. package/dist/domain/system-components/common/index.js +1 -1
  544. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  545. package/dist/domain/system-components/common/recipes.d.ts +1 -2
  546. package/dist/domain/system-components/constraint.d.ts +10 -23
  547. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  548. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
  549. package/dist/domain/system-components/index.d.ts +0 -68
  550. package/dist/domain/system-components/index.js +1 -1
  551. package/dist/domain/system-components/material-swatch.js +1 -1
  552. package/dist/domain/system-components/phoenix-entity-elements/admin-data-table-sidebar.d.ts +1 -1
  553. package/dist/domain/system-components/phoenix-layout-elements/admin-connected-resource-page.d.ts +1 -1
  554. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-actions.d.ts +1 -1
  555. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-page.d.ts +1 -1
  556. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  557. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  558. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  559. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  560. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  561. package/dist/domain/utils/eval-cache.d.ts +1 -1
  562. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  563. package/dist/domain/utils/memo-eval.d.ts +2 -2
  564. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  565. package/dist/editor/mocks/EditorMockContext.js +1 -1
  566. package/dist/i18n/locales/cs/messages.js +1 -1
  567. package/dist/i18n/locales/da/messages.js +1 -1
  568. package/dist/i18n/locales/de/messages.js +1 -1
  569. package/dist/i18n/locales/de-AT/messages.js +1 -1
  570. package/dist/i18n/locales/en/messages.js +1 -1
  571. package/dist/i18n/locales/en-AU/messages.js +1 -1
  572. package/dist/i18n/locales/en-GB/messages.js +1 -1
  573. package/dist/i18n/locales/es/messages.js +1 -1
  574. package/dist/i18n/locales/fr/messages.js +1 -1
  575. package/dist/i18n/locales/hu/messages.js +1 -1
  576. package/dist/i18n/locales/it/messages.js +1 -1
  577. package/dist/i18n/locales/nl/messages.js +1 -1
  578. package/dist/i18n/locales/pl/messages.js +1 -1
  579. package/dist/i18n/locales/pt/messages.js +1 -1
  580. package/dist/i18n/locales/ro/messages.js +1 -1
  581. package/dist/i18n/locales/sk/messages.js +1 -1
  582. package/dist/i18n/locales/tr/messages.js +1 -1
  583. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  584. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -3
  585. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  586. package/dist/legacy/domain-cli/gen/implementation.js +7 -11
  587. package/dist/legacy/domain-cli/gen/invariants.js +7 -6
  588. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  589. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  590. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  591. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +16 -5
  592. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  593. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  594. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  595. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +1 -0
  596. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  597. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.d.ts +1 -1
  598. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.js +4 -0
  599. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  600. package/dist/phoenix/commands/init.d.ts +4 -4
  601. package/dist/phoenix/commands/init.js +1 -1
  602. package/dist/phoenix/commands/prettier.js +1 -1
  603. package/dist/phoenix/utils/git/index.d.ts +1 -0
  604. package/dist/phoenix/utils/git/index.js +1 -0
  605. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  606. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  607. package/dist/phoenix/utils/index.d.ts +1 -0
  608. package/dist/phoenix/utils/index.js +1 -1
  609. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  610. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  611. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  612. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +53 -36
  613. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  614. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +9 -9
  615. package/dist/react-sdk/domain-context/index.d.ts +1 -1
  616. package/dist/react-sdk/domain-context/index.js +1 -1
  617. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +6 -0
  618. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  619. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  620. package/dist/ui-sdk/theme/types.d.ts +1 -1
  621. package/dist/webhook/builders/common.d.ts +5 -0
  622. package/dist/webhook/builders/webhook-builder.js +1 -1
  623. package/package.json +3 -3
  624. package/schema/domain-spec.json +209 -16
  625. package/dist/application-spec/generate-application/code/templates/env-ci.d.ts +0 -1
  626. package/dist/application-spec/generate-application/code/templates/env-ci.js +0 -25
  627. package/dist/application-spec/generate-application/code/templates/env-example.d.ts +0 -1
  628. package/dist/application-spec/generate-application/code/templates/env-example.js +0 -90
  629. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  630. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  631. package/dist/application-spec/generate-application/code/templates/private-assets-readme.d.ts +0 -1
  632. package/dist/application-spec/generate-application/code/templates/private-assets-readme.js +0 -24
  633. package/dist/application-spec/generate-application/code/templates/public-assets-readme.d.ts +0 -1
  634. package/dist/application-spec/generate-application/code/templates/public-assets-readme.js +0 -24
  635. package/dist/application-spec/generate-application/code/templates/readme.d.ts +0 -1
  636. package/dist/application-spec/generate-application/code/templates/readme.js +0 -23
  637. package/dist/application-spec/generate-application/code/templates/skills/agents-md.d.ts +0 -1
  638. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +0 -2
  639. package/dist/domain/application/element-registration.js +0 -1
  640. package/dist/domain/application/handler-registration.js +0 -1
  641. package/dist/domain/application/resolve-imported-transformers.d.ts +0 -23
  642. package/dist/domain/application/resolve-imported-transformers.js +0 -1
  643. package/dist/domain/application/resource-builder.d.ts +0 -13
  644. package/dist/domain/application/resource-builder.js +0 -1
  645. package/dist/domain/core/action/prepare-action-implementations.js +0 -5
  646. package/dist/domain/domain-context/recipe-system/recipes.d.ts +0 -55
  647. package/dist/domain/domain-context/recipe-system/recipes.js +0 -1
  648. package/dist/domain/project-modules/index.d.ts +0 -1
  649. package/dist/domain/project-modules/index.js +0 -1
  650. package/dist/domain/project-modules/project-modules.js +0 -1
  651. package/dist/domain/relations/all-of-type-relation.d.ts +0 -30
  652. package/dist/domain/relations/all-of-type-relation.js +0 -1
  653. package/dist/domain/relations/component-factories.js +0 -1
  654. package/dist/domain/relations/composed-of.js +0 -1
  655. package/dist/domain/relations/direct-relation.d.ts +0 -27
  656. package/dist/domain/relations/indirect-relation.d.ts +0 -78
  657. package/dist/domain/relations/indirect-relation.js +0 -1
  658. package/dist/domain/relations/reference-component.js +0 -1
  659. package/dist/domain/relations/relation-factory.d.ts +0 -17
  660. package/dist/domain/relations/relation-factory.js +0 -1
  661. package/dist/domain/relations/relation-implementation.d.ts +0 -5
  662. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +0 -1
  663. package/dist/domain/system-components/common/angle-indicator-schema.js +0 -1
  664. package/dist/domain/system-components/custom-header.js +0 -1
  665. package/dist/domain/system-components/custom-sidebar-footer.js +0 -1
  666. package/dist/domain/system-components/editable-angle-indicator.js +0 -1
  667. package/dist/domain/system-components/editable-distance-dimension-indicator.js +0 -1
  668. package/dist/domain/system-components/editable-offset-indicator.js +0 -1
  669. package/dist/domain/system-components/editable-size-indicator.js +0 -1
  670. package/dist/domain/system-components/entity-header.js +0 -1
  671. package/dist/domain/system-components/list-selector-dimension-indicator.js +0 -1
  672. package/dist/domain/system-components/offset-indicator.js +0 -1
  673. package/dist/domain/system-components/property-page.js +0 -1
  674. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +0 -1
  675. package/dist/domain/system-components/scene-entity-add-fab.js +0 -1
  676. package/dist/domain/system-components/scene-entity-delete-fab.js +0 -1
  677. package/dist/domain/system-components/scene-entity-html-hotspot.js +0 -1
  678. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +0 -1
  679. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +0 -1
  680. package/dist/domain/system-components/scene-entity-select-hotspot.js +0 -1
  681. package/dist/domain/system-components/sketching-edit.js +0 -1
  682. package/dist/domain/system-components/tool-menu-fab.js +0 -1
  683. package/dist/domain/system-components/toolbar.js +0 -1
  684. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  685. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  686. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
  687. /package/dist/domain/{relations/reference-field.js → core/data-schema/data-cell-value.js} +0 -0
  688. /package/dist/domain/{relations/relation-implementation.js → core/data-schema/data-schema-array-field.js} +0 -0
  689. /package/dist/domain/{relations → core/relation}/direct-relation.js +0 -0
  690. /package/dist/domain/{core/expression → domain-runtime/spec}/memoize-expression.js +0 -0
  691. /package/dist/domain/{core/expression → domain-runtime/spec}/prepare-domain-expressions.js +0 -0
  692. /package/dist/domain/{system-components → extensions}/angle-indicator.d.ts +0 -0
  693. /package/dist/domain/{system-components → extensions}/angle-indicator.js +0 -0
  694. /package/dist/domain/{system-components → extensions}/attribute-switch.d.ts +0 -0
  695. /package/dist/domain/{system-components → extensions}/attribute-switch.js +0 -0
  696. /package/dist/domain/{system-components → extensions}/autorotate-camera-component.d.ts +0 -0
  697. /package/dist/domain/{system-components → extensions}/autorotate-camera-component.js +0 -0
  698. /package/dist/domain/{system-components → extensions}/basic-sidebar-footer.d.ts +0 -0
  699. /package/dist/domain/{system-components → extensions}/basic-sidebar-footer.js +0 -0
  700. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.d.ts +0 -0
  701. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.js +0 -0
  702. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.d.ts +0 -0
  703. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.js +0 -0
  704. /package/dist/domain/{system-components → extensions}/canvas-config.js +0 -0
  705. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.d.ts +0 -0
  706. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.js +0 -0
  707. /package/dist/domain/{system-components → extensions}/canvas-padding.d.ts +0 -0
  708. /package/dist/domain/{system-components → extensions}/canvas-padding.js +0 -0
  709. /package/dist/domain/{system-components → extensions}/canvas-preset-environment.d.ts +0 -0
  710. /package/dist/domain/{system-components → extensions}/canvas-preset-environment.js +0 -0
  711. /package/dist/domain/{system-components → extensions}/color-value.d.ts +0 -0
  712. /package/dist/domain/{system-components → extensions}/color-value.js +0 -0
  713. /package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.js +0 -0
  714. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.d.ts +0 -0
  715. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.js +0 -0
  716. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.d.ts +0 -0
  717. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.js +0 -0
  718. /package/dist/domain/{system-components → extensions}/custom-price-footer.d.ts +0 -0
  719. /package/dist/domain/{system-components → extensions}/dimension-indicator.d.ts +0 -0
  720. /package/dist/domain/{system-components → extensions}/dimension-indicator.js +0 -0
  721. /package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.d.ts +0 -0
  722. /package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.js +0 -0
  723. /package/dist/domain/{system-components → extensions}/finalize-action.d.ts +0 -0
  724. /package/dist/domain/{system-components → extensions}/finalize-action.js +0 -0
  725. /package/dist/domain/{system-components → extensions}/finalize-component.d.ts +0 -0
  726. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.d.ts +0 -0
  727. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.js +0 -0
  728. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.d.ts +0 -0
  729. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.js +0 -0
  730. /package/dist/domain/{system-components → extensions}/fixed-header.d.ts +0 -0
  731. /package/dist/domain/{system-components → extensions}/fixed-header.js +0 -0
  732. /package/dist/domain/{system-components → extensions}/floating-header.d.ts +0 -0
  733. /package/dist/domain/{system-components → extensions}/floating-header.js +0 -0
  734. /package/dist/domain/{system-components → extensions}/hidden-header.d.ts +0 -0
  735. /package/dist/domain/{system-components → extensions}/hidden-header.js +0 -0
  736. /package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.d.ts +0 -0
  737. /package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.js +0 -0
  738. /package/dist/domain/{system-components → extensions}/horizontal-tabs.js +0 -0
  739. /package/dist/domain/{system-components → extensions}/multilingual-text-value.d.ts +0 -0
  740. /package/dist/domain/{system-components → extensions}/multilingual-text-value.js +0 -0
  741. /package/dist/domain/{system-components → extensions}/navigation-steps.js +0 -0
  742. /package/dist/domain/{system-components → extensions}/offset-anchors.d.ts +0 -0
  743. /package/dist/domain/{system-components → extensions}/offset-anchors.js +0 -0
  744. /package/dist/domain/{system-components → extensions}/offset-indicator.d.ts +0 -0
  745. /package/dist/domain/{system-components → extensions}/offset.d.ts +0 -0
  746. /package/dist/domain/{system-components → extensions}/offset.js +0 -0
  747. /package/dist/domain/{system-components → extensions}/other-action.d.ts +0 -0
  748. /package/dist/domain/{system-components → extensions}/other-action.js +0 -0
  749. /package/dist/domain/{system-components → extensions}/read-sidebar-footer.d.ts +0 -0
  750. /package/dist/domain/{system-components → extensions}/read-sidebar-footer.js +0 -0
  751. /package/dist/domain/{system-components → extensions}/rotatable.d.ts +0 -0
  752. /package/dist/domain/{system-components → extensions}/rotatable.js +0 -0
  753. /package/dist/domain/{system-components → extensions}/rotation-handle.js +0 -0
  754. /package/dist/domain/{system-components → extensions}/scene-entity-animation.d.ts +0 -0
  755. /package/dist/domain/{system-components → extensions}/scene-entity-animation.js +0 -0
  756. /package/dist/domain/{system-components → extensions}/scene-entity-control.d.ts +0 -0
  757. /package/dist/domain/{system-components → extensions}/scene-entity-control.js +0 -0
  758. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.d.ts +0 -0
  759. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.js +0 -0
  760. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.d.ts +0 -0
  761. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.js +0 -0
  762. /package/dist/domain/{system-components → extensions}/selectable-component.d.ts +0 -0
  763. /package/dist/domain/{system-components → extensions}/selectable-component.js +0 -0
  764. /package/dist/domain/{system-components → extensions}/sidebar-tabs.d.ts +0 -0
  765. /package/dist/domain/{system-components → extensions}/sidebar-tabs.js +0 -0
  766. /package/dist/domain/{system-components → extensions}/simple-summary.d.ts +0 -0
  767. /package/dist/domain/{system-components → extensions}/simple-summary.js +0 -0
  768. /package/dist/domain/{system-components → extensions}/size.d.ts +0 -0
  769. /package/dist/domain/{system-components → extensions}/size.js +0 -0
  770. /package/dist/domain/{system-components → extensions}/sketching-draw.d.ts +0 -0
  771. /package/dist/domain/{system-components → extensions}/sketching-draw.js +0 -0
  772. /package/dist/domain/{system-components → extensions}/summary-component.d.ts +0 -0
  773. /package/dist/domain/{system-components → extensions}/text-value.d.ts +0 -0
  774. /package/dist/domain/{system-components → extensions}/text-value.js +0 -0
  775. /package/dist/domain/{system-components → extensions}/tool-controls.d.ts +0 -0
  776. /package/dist/domain/{system-components → extensions}/tool-controls.js +0 -0
  777. /package/dist/domain/{system-components → extensions}/universal-sidebar-footer.d.ts +0 -0
  778. /package/dist/domain/{system-components → extensions}/universal-sidebar-footer.js +0 -0
  779. /package/dist/domain/{system-components → extensions}/view-controls.d.ts +0 -0
  780. /package/dist/domain/{system-components → extensions}/view-controls.js +0 -0
@@ -0,0 +1,6 @@
1
+ import type { TransformerPhase } from './transformer-phase.js';
2
+ export interface TransformerLogEntry {
3
+ phase: TransformerPhase;
4
+ message: string;
5
+ data: unknown | undefined;
6
+ }
@@ -0,0 +1,11 @@
1
+ import type { StateUpdate } from '../component/index.js';
2
+ import type { DomainEntity } from '../model/index.js';
3
+ import type { TransformerLogEntry } from './transformer-log-entry.js';
4
+ import type { TransformerPhase } from './transformer-phase.js';
5
+ export interface TransformerLog {
6
+ name: string;
7
+ entries: readonly TransformerLogEntry[];
8
+ status: TransformerPhase;
9
+ updatesIn: ReadonlyArray<StateUpdate<DomainEntity<string>, DomainEntity<string>>>;
10
+ updatesOut: ReadonlyArray<StateUpdate<DomainEntity<string>, DomainEntity<string>>>;
11
+ }
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export type TransformerPhase = 'no-event' | 'no-match' | 'no-resolve' | 'match' | 'no-apply' | 'apply';
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1,10 @@
1
+ import type { DomainEntity, ExpandAlias, TypeOrAlias } from '../model/index.js';
2
+ import type { AnonymousExpression } from './expression.js';
3
+ /**
4
+ * The expressions a project implements, keyed by entity type or alias and then by expression name.
5
+ * It is what `implementCustomExpressions` returns and what the domain is built from; an alias key
6
+ * stands for every entity type the alias expands to.
7
+ */
8
+ export type AliasedExpressions<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>, CONTEXT_EXTENSION = unknown> = {
9
+ [K in TypeOrAlias<ENTITIES, ALIASES>]?: Record<string, AnonymousExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ExpandAlias<ENTITIES, ALIASES, K>, unknown, CONTEXT_EXTENSION>>;
10
+ };
@@ -1,8 +1,16 @@
1
- import type { DomainEntity, ExpandAlias, TypeOrAlias } from '../model/index.js';
2
- import type { AnonymousExpression, ExpressionMetas } from './expression.js';
3
- export type ConstantExpressions<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>, CONSTANTS extends Partial<Record<TypeOrAlias<ENTITIES, ALIASES>, Record<string, unknown>>>> = {
4
- readonly [TYPE_OR_ALIAS in keyof CONSTANTS & string]: {
5
- readonly [NAME in keyof CONSTANTS[TYPE_OR_ALIAS]]: AnonymousExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ExpandAlias<ENTITIES, ALIASES, TYPE_OR_ALIAS>, CONSTANTS[TYPE_OR_ALIAS][NAME]>;
6
- };
7
- };
8
- export declare const createConstantExpressionFactory: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>>(metas: ExpressionMetas<ENTITIES, ALIASES>) => <CONSTANTS extends Partial<Record<TypeOrAlias<ENTITIES, ALIASES>, Record<string, unknown>>>>(constants: CONSTANTS) => ConstantExpressions<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, CONSTANTS>;
1
+ import type { ExpressionMeta } from './expression.js';
2
+ /**
3
+ * The constant expressions of a domain, keyed by entity type or alias and then by the name of the
4
+ * constant. A constant expression takes no argument: it reads neither the entity nor the state, so
5
+ * the domain of any project accepts it.
6
+ */
7
+ export type ConstantExpressions = Readonly<Record<string, Readonly<Record<string, {
8
+ evaluate(): unknown;
9
+ readonly meta: ExpressionMeta;
10
+ }>>>>;
11
+ /**
12
+ * Makes the function that turns the constants of a spec into expressions: every constant becomes an
13
+ * expression that returns its value. The type a project reads from a constant is the one its
14
+ * generated model declares for the property, not the type of the expression.
15
+ */
16
+ export declare const createConstantExpressionFactory: () => (constants: Readonly<Record<string, Readonly<Record<string, unknown>>>>) => ConstantExpressions;
@@ -1 +1 @@
1
- import{mapNestedObject as t}from"../../utils/map-nested-object.js";export const createConstantExpressionFactory=e=>o=>t()(o,([t,o,a])=>[[t,o,{meta:e[t]?.[o]??{},evaluate:()=>a}]]);
1
+ import{mapNestedObject as t}from"../../utils/map-nested-object.js";export const createConstantExpressionFactory=()=>e=>t()(e,([t,e,o])=>[[t,e,{meta:{},evaluate:()=>o}]]);
@@ -1,12 +1,25 @@
1
- import type { AliasedExpressions } from '../../domain-builder.js';
2
- import type { $DomainEntity, DomainEntity, EntityByType, TypeOrAlias } from '../model/index.js';
1
+ import type { $DomainEntity, DomainEntity, DomainEntityId, TypeOrAlias } from '../model/index.js';
3
2
  import type { DomainState } from '../state/index.js';
4
- import type { AnonymousExpression, ExpressionContext, ExpressionMeta, ExpressionMetas } from './expression.js';
5
- export type CustomExpression<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends $DomainEntity<ENTITIES>, T> = (self: SELF, state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => T;
6
- export type PotentialCustomExpressions<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>> = {
3
+ import type { AliasedExpressions } from './aliased-expressions.js';
4
+ import type { ExpressionMeta, OpenExpressionContext } from './expression.js';
5
+ export type CustomExpression<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends $DomainEntity<ENTITIES>, T, CONTEXT_EXTENSION = unknown> = (self: SELF, state: DomainState<ENTITIES>, ctx: OpenExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, CONTEXT_EXTENSION>) => T;
6
+ export type PotentialCustomExpressions<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, CONTEXT_EXTENSION = unknown> = {
7
7
  [TYPE_OR_ALIAS in keyof $MAP]?: {
8
- [NAME in Extract<keyof $MAP[TYPE_OR_ALIAS], `$${string}`>]?: CustomExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, $MAP[TYPE_OR_ALIAS], $MAP[TYPE_OR_ALIAS][NAME]>;
8
+ [NAME in Extract<keyof $MAP[TYPE_OR_ALIAS], `$${string}`>]?: CustomExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, $MAP[TYPE_OR_ALIAS], $MAP[TYPE_OR_ALIAS][NAME], CONTEXT_EXTENSION>;
9
9
  };
10
10
  };
11
- export declare const createCustomExpressionFactory: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<TypeOrAlias<ENTITIES, ALIASES>, $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>>(metas: ExpressionMetas<ENTITIES, ALIASES>) => (implementations: PotentialCustomExpressions<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => AliasedExpressions<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES>;
12
- export declare const createCustomExpression: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, $SELF extends $DomainEntity<ENTITIES>, T>(evaluate: CustomExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, $SELF, T>, meta: ExpressionMeta) => AnonymousExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, EntityByType<ENTITIES, $SELF['type']>, T>;
11
+ export declare const createCustomExpressionFactory: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<TypeOrAlias<ENTITIES, ALIASES>, $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>, CONTEXT_EXTENSION = unknown>() => (implementations: PotentialCustomExpressions<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, CONTEXT_EXTENSION>) => AliasedExpressions<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, CONTEXT_EXTENSION>;
12
+ /**
13
+ * Wraps the function a project writes for an expression or for a filter criterion into an
14
+ * expression: the function receives the entity view of `selfId` instead of the id. It takes the
15
+ * types of the function as they are, so the expression it returns has the state and the context of
16
+ * the function, and it asks of the context only the entity view it reads itself.
17
+ */
18
+ export declare const createCustomExpression: <SELF, STATE, CONTEXT extends {
19
+ readonly domain: {
20
+ get$Entity(id: DomainEntityId<string>, state: STATE): unknown;
21
+ };
22
+ }, T>(evaluate: (self: SELF, state: STATE, ctx: CONTEXT) => T, meta: ExpressionMeta) => {
23
+ evaluate(selfId: DomainEntityId<string>, state: STATE, ctx: CONTEXT): T;
24
+ readonly meta: ExpressionMeta;
25
+ };
@@ -1 +1 @@
1
- import{mapNestedObject as e}from"../../utils/map-nested-object.js";export const createCustomExpressionFactory=t=>o=>e()(o,([e,o,r])=>{if(!r)throw Error(`Custom expression for ${e}.${o} is of type undefined`);return[[e,o,createCustomExpression(r,t[e]?.[o]??{})]]});export const createCustomExpression=(e,t)=>({evaluate:(t,o,r)=>e(r.domain.get$Entity(t,o),o,r),meta:t});
1
+ import{mapNestedObject as e}from"../../utils/map-nested-object.js";export const createCustomExpressionFactory=()=>t=>e()(t,([e,t,o])=>{if(!o)throw Error(`Custom expression for ${e}.${t} is of type undefined`);return[[e,t,createCustomExpression(o,{})]]});export const createCustomExpression=(e,t)=>({evaluate:(t,o,r)=>e(r.domain.get$Entity(t,o),o,r),meta:t});
@@ -1,11 +1,12 @@
1
1
  import type { SessionRole } from '@salsita-ai/contracts/api';
2
- import type { ComponentReader } from '../../domain-runtime/domain-context/index.js';
3
- import type { CollisionProjections, ConstraintProjections, PositionProjections, ProjectedEntitiesProjections, SnappingProjections } from '../../projections/index.js';
4
- import type { SketchingProjections } from '../../sketching/index.js';
5
2
  import type { Domain } from '../domain.js';
6
- import type { $DomainEntity, DomainEntity, TypeOrAlias } from '../model/index.js';
3
+ import type { $DomainEntity, DomainEntity } from '../model/index.js';
7
4
  import type { DomainState, MigrateFunction } from '../state/index.js';
8
- export interface ExpressionContext<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>> {
5
+ /**
6
+ * The part of the expression context that core declares: the mode and role of the session, the data
7
+ * of the application, the entity view and the migration of the model.
8
+ */
9
+ export interface CoreExpressionContext<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>> {
9
10
  readonly mode: 'owner' | 'read' | 'finalize';
10
11
  readonly role: SessionRole;
11
12
  readonly publishedData: PUBLISHED_DATA;
@@ -13,23 +14,20 @@ export interface ExpressionContext<ENTITIES extends DomainEntity<string>, ALLOWE
13
14
  readonly backendData: Record<string, unknown> | undefined;
14
15
  readonly sessionData: SESSION_DATA;
15
16
  readonly domain: Domain<ENTITIES, ALLOWED_ROOT_ENTITIES, Record<ENTITIES['type'], $DomainEntity<ENTITIES>>>;
16
- readonly componentReader: ComponentReader<ENTITIES>;
17
17
  readonly migrate: MigrateFunction<ENTITIES>;
18
- readonly positionProjections: PositionProjections<ENTITIES>;
19
- readonly sketchingProjections: SketchingProjections<ENTITIES>;
20
- readonly collisionProjections: CollisionProjections<ENTITIES>;
21
- readonly constraintProjections: ConstraintProjections<ENTITIES>;
22
- readonly snappingProjections: SnappingProjections<ENTITIES>;
23
- readonly projectedEntitiesProjections: ProjectedEntitiesProjections<ENTITIES>;
24
18
  }
25
- export type AnyExpressionContext = ExpressionContext<any, any, any, any, any>;
19
+ /**
20
+ * The context an expression is evaluated in. Core declares its own part; `CONTEXT_EXTENSION` is
21
+ * what whoever evaluates the expression adds to it, such as the component reader and the
22
+ * projections of the domain runtime. An expression that reads only core's part leaves it out.
23
+ */
24
+ export type OpenExpressionContext<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, CONTEXT_EXTENSION = unknown> = CoreExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA> & CONTEXT_EXTENSION;
26
25
  export interface ExpressionMeta {
27
26
  /**
28
27
  * By enabling this flag, expression will be run during validation. It is primarily used to check validity of relations.
29
28
  */
30
29
  readonly alwaysEvaluate?: boolean;
31
30
  }
32
- export type ExpressionMetas<ENTITIES extends DomainEntity<string>, ALIASES extends Record<string, ENTITIES>> = Partial<Record<TypeOrAlias<ENTITIES, ALIASES>, Record<string, ExpressionMeta>>>;
33
31
  /**
34
32
  * Metadata used for debugging of expression exceptions.
35
33
  */
@@ -37,11 +35,11 @@ export interface ExpressionOrigin {
37
35
  readonly typeOrAlias: string;
38
36
  readonly name: string;
39
37
  }
40
- export interface AnonymousExpression<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES, T> {
41
- evaluate(selfId: SELF['id'], state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>): T;
38
+ export interface AnonymousExpression<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES, T, CONTEXT_EXTENSION = unknown> {
39
+ evaluate(selfId: SELF['id'], state: DomainState<ENTITIES>, ctx: OpenExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, CONTEXT_EXTENSION>): T;
42
40
  readonly meta: ExpressionMeta;
43
41
  }
44
- export interface Expression<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES, T> extends AnonymousExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, SELF, T> {
42
+ export interface Expression<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES, T, CONTEXT_EXTENSION = unknown> extends AnonymousExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, SELF, T, CONTEXT_EXTENSION> {
45
43
  readonly origin: ExpressionOrigin;
46
44
  }
47
45
  export type AnyExpression = Expression<any, any, any, any, any, any, any>;
@@ -1,5 +1,4 @@
1
+ export type * from './aliased-expressions.js';
1
2
  export * from './constant-expressions.js';
2
3
  export * from './custom-expression.js';
3
4
  export type * from './expression.js';
4
- export * from './memoize-expression.js';
5
- export * from './prepare-domain-expressions.js';
@@ -1 +1 @@
1
- export*from"./constant-expressions.js";export*from"./custom-expression.js";export*from"./memoize-expression.js";export*from"./prepare-domain-expressions.js";
1
+ export*from"./constant-expressions.js";export*from"./custom-expression.js";
@@ -1,10 +1,14 @@
1
1
  export * from './action/index.js';
2
2
  export * from './component/index.js';
3
+ export type * from './data-schema/index.js';
3
4
  export * from './decoder/index.js';
4
5
  export * from './domain-factory.js';
5
6
  export * from './domain.js';
7
+ export type * from './emission/index.js';
6
8
  export * from './expression/index.js';
7
9
  export * from './invariant/index.js';
8
10
  export * from './model/index.js';
11
+ export * from './recipe/index.js';
12
+ export * from './relation/index.js';
9
13
  export * from './schema/index.js';
10
14
  export * from './state/index.js';
@@ -1 +1 @@
1
- export*from"./action/index.js";export*from"./component/index.js";export*from"./decoder/index.js";export*from"./domain-factory.js";export*from"./domain.js";export*from"./expression/index.js";export*from"./invariant/index.js";export*from"./model/index.js";export*from"./schema/index.js";export*from"./state/index.js";
1
+ export*from"./action/index.js";export*from"./component/index.js";export*from"./decoder/index.js";export*from"./domain-factory.js";export*from"./domain.js";export*from"./expression/index.js";export*from"./invariant/index.js";export*from"./model/index.js";export*from"./recipe/index.js";export*from"./relation/index.js";export*from"./schema/index.js";export*from"./state/index.js";
@@ -1,21 +1,13 @@
1
- import type { OmitEmpty, OmitNever } from '@salsita-ai/common/utils';
2
1
  import type { CustomExpression } from '../expression/index.js';
3
- import type { $DomainEntity, DomainEntity, ExpandAlias, TypeOrAlias } from '../model/index.js';
4
- import type { Invariant } from './invariants.js';
2
+ import type { $DomainEntity, DomainEntity, TypeOrAlias } from '../model/index.js';
3
+ import type { AliasedInvariants } from './invariants.js';
5
4
  import type { Violation } from './violation.js';
6
- export type CustomInvariantsFromBlueprints<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, BLUEPRINTS extends Partial<Record<keyof $MAP & string, Record<string, boolean | string>>>> = {
5
+ export type CustomInvariantsFromBlueprints<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, BLUEPRINTS extends Partial<Record<keyof $MAP & string, Record<string, boolean | string>>>, CONTEXT_EXTENSION = unknown> = {
7
6
  [TYPE_OR_ALIAS in keyof BLUEPRINTS]: {
8
- [NAME in keyof BLUEPRINTS[TYPE_OR_ALIAS]]: TYPE_OR_ALIAS extends keyof $MAP ? CustomExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, $MAP[TYPE_OR_ALIAS], BLUEPRINTS[TYPE_OR_ALIAS][NAME] extends string ? ReadonlyArray<Violation<BLUEPRINTS[TYPE_OR_ALIAS][NAME]>> : BLUEPRINTS[TYPE_OR_ALIAS][NAME]> : never;
7
+ [NAME in keyof BLUEPRINTS[TYPE_OR_ALIAS]]: TYPE_OR_ALIAS extends keyof $MAP ? CustomExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, $MAP[TYPE_OR_ALIAS], BLUEPRINTS[TYPE_OR_ALIAS][NAME] extends string ? ReadonlyArray<Violation<BLUEPRINTS[TYPE_OR_ALIAS][NAME]>> : BLUEPRINTS[TYPE_OR_ALIAS][NAME], CONTEXT_EXTENSION> : never;
9
8
  };
10
9
  };
11
- export type StaticallyDefinedViolations<ENTITIES extends DomainEntity<string>, ALIASES extends Record<string, ENTITIES>, BLUEPRINTS extends Partial<Record<TypeOrAlias<ENTITIES, ALIASES>, Record<string, boolean | string>>>> = OmitEmpty<{
12
- [TYPE_OR_ALIAS in keyof BLUEPRINTS]: OmitNever<{
13
- [NAME in keyof BLUEPRINTS[TYPE_OR_ALIAS]]: BLUEPRINTS[TYPE_OR_ALIAS][NAME] extends boolean ? Violation<string> : never;
14
- }>;
15
- }>;
16
- export type InvariantsFromBlueprints<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>, BLUEPRINTS extends Partial<Record<TypeOrAlias<ENTITIES, ALIASES>, Record<string, boolean | string>>>, STATIC_VIOLATIONS extends StaticallyDefinedViolations<ENTITIES, ALIASES, BLUEPRINTS>, PICK extends keyof BLUEPRINTS = keyof BLUEPRINTS> = {
17
- readonly [TYPE_OR_ALIAS in keyof BLUEPRINTS & string & PICK]: ReadonlyArray<{
18
- [NAME in keyof BLUEPRINTS[TYPE_OR_ALIAS]]: Invariant<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ExpandAlias<ENTITIES, ALIASES, TYPE_OR_ALIAS>, BLUEPRINTS[TYPE_OR_ALIAS][NAME] extends boolean ? TYPE_OR_ALIAS extends keyof STATIC_VIOLATIONS ? NAME extends keyof STATIC_VIOLATIONS[TYPE_OR_ALIAS] ? STATIC_VIOLATIONS[TYPE_OR_ALIAS][NAME]['type'] : never : never : BLUEPRINTS[TYPE_OR_ALIAS][NAME] extends string ? BLUEPRINTS[TYPE_OR_ALIAS][NAME] : never>;
19
- }[keyof BLUEPRINTS[TYPE_OR_ALIAS]]>;
20
- };
21
- export declare const createCustomInvariantFactory: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<TypeOrAlias<ENTITIES, ALIASES>, $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>, BLUEPRINTS extends Partial<Record<TypeOrAlias<ENTITIES, ALIASES>, Record<string, boolean | string>>>>() => <STATIC_VIOLATIONS extends StaticallyDefinedViolations<ENTITIES, ALIASES, BLUEPRINTS>>(staticViolations: STATIC_VIOLATIONS) => <TYPES_OR_ALIASES extends keyof BLUEPRINTS & string>(implementations: Pick<CustomInvariantsFromBlueprints<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, BLUEPRINTS>, TYPES_OR_ALIASES>) => InvariantsFromBlueprints<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, BLUEPRINTS, STATIC_VIOLATIONS, TYPES_OR_ALIASES>;
10
+ /** The violation a static invariant reports when it does not hold, by entity type or alias and by invariant name. */
11
+ type StaticViolations = Readonly<Record<string, Readonly<Record<string, Violation<string>>>>>;
12
+ export declare const createCustomInvariantFactory: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<TypeOrAlias<ENTITIES, ALIASES>, $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>, BLUEPRINTS extends Partial<Record<TypeOrAlias<ENTITIES, ALIASES>, Record<string, boolean | string>>>, CONTEXT_EXTENSION = unknown>() => (staticViolations: StaticViolations) => <TYPES_OR_ALIASES extends keyof BLUEPRINTS & string>(implementations: Pick<CustomInvariantsFromBlueprints<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, BLUEPRINTS, CONTEXT_EXTENSION>, TYPES_OR_ALIASES>) => AliasedInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, string>;
13
+ export {};
@@ -1,5 +1,5 @@
1
1
  export * from './builtin-invariant.js';
2
2
  export * from './custom-invariants.js';
3
- export * from './invariants.js';
3
+ export type * from './invariants.js';
4
4
  export * from './violation-component.js';
5
5
  export * from './violation.js';
@@ -1 +1 @@
1
- export*from"./builtin-invariant.js";export*from"./custom-invariants.js";export*from"./invariants.js";export*from"./violation-component.js";export*from"./violation.js";
1
+ export*from"./builtin-invariant.js";export*from"./custom-invariants.js";export*from"./violation-component.js";export*from"./violation.js";
@@ -1,76 +1,10 @@
1
- import type { OmitNever } from '@salsita-ai/common/utils';
2
- import { type ProjectModule } from '../../project-modules/index.js';
3
- import type { AnonymousExpression, ExpressionContext } from '../expression/index.js';
4
- import { type $DomainEntity, type AliasMap, type DomainEntity, type EntityByType, type EventualAlias, type ExpandAlias, type ExtractFromAliasedRecord, type TypeOrAlias } from '../model/index.js';
1
+ import type { OpenExpressionContext } from '../expression/index.js';
2
+ import type { DomainEntity, ExpandAlias, TypeOrAlias } from '../model/index.js';
5
3
  import type { DomainState } from '../state/index.js';
6
4
  import { type Violation } from './violation.js';
7
- export interface Invariant<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ENTITY extends ENTITIES, VIOLATION_TYPE extends string> {
8
- evaluate(selfId: ENTITY['id'], state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>): ReadonlyArray<Violation<VIOLATION_TYPE>>;
5
+ export interface Invariant<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ENTITY extends ENTITIES, VIOLATION_TYPE extends string, CONTEXT_EXTENSION = unknown> {
6
+ evaluate(selfId: ENTITY['id'], state: DomainState<ENTITIES>, ctx: OpenExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, CONTEXT_EXTENSION>): ReadonlyArray<Violation<VIOLATION_TYPE>>;
9
7
  }
10
8
  export type AliasedInvariants<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>, VIOLATION_TYPES extends string> = {
11
9
  [K in TypeOrAlias<ENTITIES, ALIASES>]?: ReadonlyArray<Invariant<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ExpandAlias<ENTITIES, ALIASES, K>, VIOLATION_TYPES>>;
12
10
  };
13
- export type DeclaredInvariants<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>> = {
14
- readonly [TYPE in ENTITIES['type']]: '$violations' extends keyof $MAP[TYPE] ? $MAP[TYPE]['$violations'] extends () => ReadonlyArray<Violation<infer VIOLATION_TYPE>> ? ReadonlyArray<Invariant<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITIES, VIOLATION_TYPE>> : never : never;
15
- };
16
- type ConflictingInvariants<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, EXPECTED extends Partial<Record<ENTITIES['type'], ReadonlyArray<Invariant<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITIES, string>>>>, IMPLEMENTED extends Partial<Record<ENTITIES['type'], ReadonlyArray<Invariant<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITIES, string>>>>> = OmitNever<{
17
- [K in keyof EXPECTED]: EXPECTED[K] extends [never] ? never : K extends keyof IMPLEMENTED ? ViolationTypeOfInvariants<EXPECTED[K]> extends ViolationTypeOfInvariants<IMPLEMENTED[K]> ? ViolationTypeOfInvariants<IMPLEMENTED[K]> extends ViolationTypeOfInvariants<EXPECTED[K]> ? never : {
18
- missing: Exclude<ViolationTypeOfInvariants<EXPECTED[K]>, ViolationTypeOfInvariants<IMPLEMENTED[K]>>;
19
- extra: Exclude<ViolationTypeOfInvariants<IMPLEMENTED[K]>, ViolationTypeOfInvariants<EXPECTED[K]>>;
20
- } : {
21
- missing: Exclude<ViolationTypeOfInvariants<EXPECTED[K]>, ViolationTypeOfInvariants<IMPLEMENTED[K]>>;
22
- extra: Exclude<ViolationTypeOfInvariants<IMPLEMENTED[K]>, ViolationTypeOfInvariants<EXPECTED[K]>>;
23
- } : {
24
- missing: ViolationTypeOfInvariants<EXPECTED[K]>;
25
- extra: never;
26
- };
27
- }>;
28
- type ViolationOfInvariants<INVARIANTS> = INVARIANTS extends ReadonlyArray<infer INVARIANT> ? INVARIANT : never;
29
- type ViolationTypeOfInvariants<INVARIANTS> = ViolationOfInvariants<INVARIANTS> extends Invariant<any, any, any, any, any, any, infer VIOLATION_TYPE> ? VIOLATION_TYPE : never;
30
- type ExpandAndMergeInvariants<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Readonly<Record<string, ENTITIES>>, EXPANDED extends Partial<Record<ENTITIES['type'], ReadonlyArray<Invariant<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITIES, string>>>>, ALIASED extends Partial<Record<TypeOrAlias<ENTITIES, ALIASES>, ReadonlyArray<Invariant<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITIES, string>>>>> = {
31
- [K in keyof EXPANDED | ExpandAlias<ENTITIES, ALIASES, keyof ALIASED & string>['type']]: K extends ENTITIES['type'] ? ExtractFromAliasedRecord<ENTITIES, ALIASES, ALIASED, EventualAlias<ENTITIES, ALIASES, K> | K> extends infer INVARIANTS_FROM_ALIAS ? [
32
- INVARIANTS_FROM_ALIAS
33
- ] extends [never] ? K extends keyof EXPANDED ? EXPANDED[K] : never : K extends keyof EXPANDED ? ReadonlyArray<ViolationOfInvariants<EXPANDED[K]> | ViolationOfInvariants<INVARIANTS_FROM_ALIAS>> : ReadonlyArray<ViolationOfInvariants<INVARIANTS_FROM_ALIAS>> : never : never;
34
- };
35
- type ExpressionsFromInvariants<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, INVARIANTS extends Partial<Record<ENTITIES['type'], ReadonlyArray<Invariant<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITIES, string>>>>> = {
36
- [K in keyof INVARIANTS & ENTITIES['type']]: {
37
- $violations: AnonymousExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, EntityByType<ENTITIES, K>, ReadonlyArray<Violation<INVARIANTS[K] extends ReadonlyArray<infer ELEMENT> ? ELEMENT extends Invariant<any, any, any, any, any, any, infer VIOLATION_TYPE> ? VIOLATION_TYPE : never : never>>>;
38
- };
39
- };
40
- type BuildViolationExpressions<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, INVARIANTS extends Partial<Record<ENTITIES['type'], ReadonlyArray<Invariant<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITIES, string>>>>> = Record<never, never> extends ConflictingInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, DeclaredInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>, INVARIANTS> ? () => ExpressionsFromInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, INVARIANTS> : never;
41
- type AnyInvariant = Invariant<any, any, any, any, any, any, string>;
42
- /** Validates the `src/invariants/` files and concatenates their invariants per entity type or alias. */
43
- export declare const resolveInvariantModules: (modules: readonly ProjectModule[]) => Readonly<Record<string, readonly AnyInvariant[]>>;
44
- export declare class InvariantBuilder<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>, INVARIANTS extends Partial<Record<ENTITIES['type'], ReadonlyArray<Invariant<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITIES, string>>>> = Record<never, never>> {
45
- private readonly aliasMap;
46
- private readonly invariants;
47
- constructor(aliasMap: AliasMap<ALIASES>, invariants?: INVARIANTS);
48
- /**
49
- * Adds the invariants of the `src/invariants/` files, as the generated barrel lists them, after
50
- * checking each file against the folder's contract.
51
- */
52
- withInvariantModules(modules: readonly ProjectModule[]): InvariantBuilder<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, ExpandAndMergeInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, INVARIANTS, AliasedInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, string>>>;
53
- withInvariants<ALIASED_INVARIANTS extends AliasedInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, string>>(aliasedInvariants: ALIASED_INVARIANTS): InvariantBuilder<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, ExpandAndMergeInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, INVARIANTS, ALIASED_INVARIANTS>>;
54
- /**
55
- * DO NOT USE in runtime!
56
- *
57
- * This is just a dev-time to review conflicts in declared and actually reportable violations.
58
- * Use your IDEs code-completion to see which entities have conflicts and which violations are the conflicting ones.
59
- *
60
- * Use the helper when you see the following error on the `.buildViolationExpressions()` method call:
61
- * ```
62
- * TS2349: This expression is not callable.
63
- * Type never has no call signatures.
64
- * ```
65
- * simply
66
- * ```ts
67
- * const violationExpressions = invariantBuilder
68
- * .withInvariants(createBuiltinInvariants(domainComponentReader))
69
- * .withInvariants(kitchenRangeInvariants)
70
- * ._conflicts.Oven. // <- trigger code-completion here
71
- * ```
72
- */
73
- _conflicts: ConflictingInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, DeclaredInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>, INVARIANTS>;
74
- buildViolationExpressions: BuildViolationExpressions<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, INVARIANTS>;
75
- }
76
- export {};
@@ -1 +1 @@
1
- import{SHARED_FOLDER_HINT as t,createContractError as e,isRecord as a}from"../../project-modules/index.js";import{expandAlias as i}from"../model/index.js";let r={expected:"an object of invariant lists keyed by entity type or alias",fix:`Create it with phx.domain.implementCustomInvariants({ ... }) (phx.domain.admin.implementCustomInvariants({ ... }) under src/admin/), ${t}.`},n=t=>a(t)&&"function"==typeof t.evaluate,s=t=>a(t)&&Object.values(t).every(t=>Array.isArray(t)&&t.every(n));export const resolveInvariantModules=t=>{let a={};for(let i of t){if(!s(i.exports))throw e(i.origin,r,i.exports);for(let[t,e]of Object.entries(i.exports))a[t]=[...a[t]??[],...e]}return a};export class InvariantBuilder{aliasMap;invariants;constructor(t,e={}){this.aliasMap=t,this.invariants=e}withInvariantModules(t){return this.withInvariants(resolveInvariantModules(t))}withInvariants(t){let e={...this.invariants};return Object.entries(t).forEach(([t,a])=>{i(this.aliasMap,t).forEach(t=>{e[t]=[...e[t]??[],...a]})}),new InvariantBuilder(this.aliasMap,e)}_conflicts={};buildViolationExpressions=()=>{let t={};return Object.entries(this.invariants).forEach(([e,a])=>{t[e]={$violations:{evaluate:(t,e,i)=>a.flatMap(a=>a.evaluate(t,e,i)),meta:{}}}}),t}}
1
+ export{};
@@ -1,6 +1,6 @@
1
1
  import type { I18n } from '@lingui/core';
2
- import type { Localizable } from '@salsita-ai/common/utils';
3
- import type { StateEmission } from '../../domain-context/store-system/store-system.js';
2
+ import { type Localizable } from '@salsita-ai/common/utils';
3
+ import type { StateEmission } from '../emission/index.js';
4
4
  import type { $DomainEntity, DomainEntity, EntityId } from '../model/index.js';
5
5
  /**
6
6
  * An **ORDERED** list of violation severities.
@@ -66,7 +66,55 @@ export declare const ViolationSchema: {
66
66
  readonly enum: ("fatal" | "fixable" | "notice" | "warning")[];
67
67
  };
68
68
  readonly message: {
69
- readonly type: 'string';
69
+ readonly anyOf: [{
70
+ readonly type: 'string';
71
+ }, {
72
+ readonly type: 'object';
73
+ readonly properties: {
74
+ readonly id: {
75
+ readonly type: 'string';
76
+ };
77
+ readonly comment: {
78
+ readonly type: 'string';
79
+ };
80
+ readonly message: {
81
+ readonly type: 'string';
82
+ };
83
+ readonly values: {
84
+ readonly type: 'object';
85
+ readonly additionalProperties: true;
86
+ };
87
+ };
88
+ readonly required: ["id"];
89
+ readonly additionalProperties: false;
90
+ readonly import: [{
91
+ readonly module: '@lingui/core';
92
+ readonly member: 'MessageDescriptor';
93
+ }];
94
+ readonly tsType: 'MessageDescriptor';
95
+ }, {
96
+ readonly import: [{
97
+ readonly module: '@salsita-ai/sdk/common/utils';
98
+ readonly member: 'MultilingualString';
99
+ }];
100
+ readonly tsType: 'MultilingualString';
101
+ readonly type: 'object';
102
+ readonly properties: {
103
+ readonly $lang: {
104
+ readonly type: 'object';
105
+ readonly additionalProperties: {
106
+ readonly type: 'string';
107
+ };
108
+ };
109
+ };
110
+ readonly required: ["$lang"];
111
+ readonly additionalProperties: false;
112
+ }];
113
+ readonly tsType: 'Localizable';
114
+ readonly import: [{
115
+ readonly module: '@salsita-ai/sdk/common/utils';
116
+ readonly member: 'Localizable';
117
+ }];
70
118
  };
71
119
  readonly controlViolationPriority: {
72
120
  readonly type: 'number';
@@ -1 +1 @@
1
- let e=["fatal","fixable","warning","notice"];export const compareSeverity=(t,i)=>e.indexOf(t)-e.indexOf(i);export const ViolationSchema={type:"object",properties:{type:{type:"string"},severity:{enum:e.slice()},message:{type:"string"},controlViolationPriority:{type:"number"}},required:["type","severity"],additionalProperties:!1};
1
+ import{MessageDescriptorSchema as e,MultilingualStringSchema as t}from"@salsita-ai/common/utils";let i=["fatal","fixable","warning","notice"];export const compareSeverity=(e,t)=>i.indexOf(e)-i.indexOf(t);export const ViolationSchema={type:"object",properties:{type:{type:"string"},severity:{enum:i.slice()},message:{anyOf:[{type:"string"},e,t],tsType:"Localizable",import:[{module:"@salsita-ai/sdk/common/utils",member:"Localizable"}]},controlViolationPriority:{type:"number"}},required:["type","severity"],additionalProperties:!1};
@@ -0,0 +1 @@
1
+ export * from './recipes.js';
@@ -0,0 +1 @@
1
+ export*from"./recipes.js";
@@ -0,0 +1,23 @@
1
+ import { type AnyAliasMap, type DomainEntity, type DomainEntityReflection, type EntityByType } from '../model/index.js';
2
+ /** The entity a recipe yields: a whole entity, which the recipe system gives a new id when it cooks the recipe. */
3
+ export type EntityRecipe<ENTITY extends DomainEntity<string>> = ENTITY;
4
+ /** What a project passes to its recipe factory: the entity type, and the properties that differ from the defaults. */
5
+ export type EntityOverrides<ENTITIES extends DomainEntity<string>, TYPE extends ENTITIES['type']> = Partial<Omit<EntityByType<ENTITIES, TYPE>, 'type'>> & {
6
+ type: TYPE;
7
+ };
8
+ /** The function a project creates recipes with, `phx.domain.createRecipe`. */
9
+ export type RecipeFactory<ENTITIES extends DomainEntity<string>> = <TYPE extends ENTITIES['type']>(overrides: EntityOverrides<ENTITIES, TYPE>) => EntityRecipe<EntityByType<ENTITIES, TYPE>>;
10
+ /**
11
+ * Creates the recipe factory of a domain from the `defaults` of its spec.
12
+ *
13
+ * Defaults declared for an alias apply to every entity type of the alias, and a later key overrides
14
+ * an earlier one. The defaults of an entity type must be a whole entity of that type: they are
15
+ * validated here against the entity's schema, so a domain with invalid defaults fails when its
16
+ * module loads. An entity type without defaults is not checked.
17
+ *
18
+ * `ENTITIES` is the only type the result depends on, and no argument determines it, so the caller
19
+ * states it.
20
+ *
21
+ * @param defaults Property values by entity type or alias.
22
+ */
23
+ export declare const createRecipeFactory: <ENTITIES extends DomainEntity<string>>(aliasMap: AnyAliasMap, entityReflections: ReadonlyArray<ENTITIES extends unknown ? DomainEntityReflection<ENTITIES> : never>, defaults: Readonly<Record<string, Readonly<Record<string, unknown>>>>) => RecipeFactory<ENTITIES>;
@@ -0,0 +1 @@
1
+ import{_unsafeBuildDomainEntityId as e,expandAlias as r}from"../model/index.js";export const createRecipeFactory=(t,o,i)=>{let a={};Object.entries(i).forEach(([e,o])=>{r(t,e).forEach(e=>{a[e]={...a[e],...o}})});let n=new Map(o.map(e=>[e.type,e._meta.validator]));return Object.entries(a).forEach(([r,t])=>{let o=n.get(r);if(!o)throw Error(`Defaults provided for unknown entity ${r}`);if(!o({id:e(r,1),type:r,...t}))throw console.error(o.errors,t),Error(`Invalid defaults for ${r} entity.`)}),r=>({id:e(r.type,1),...a[r.type],...r})};
@@ -0,0 +1,19 @@
1
+ import type { ExpressionMeta } from '../expression/index.js';
2
+ import { type AnyAliasMap, type DomainEntity, type DomainEntityId } from '../model/index.js';
3
+ import type { DomainState } from '../state/index.js';
4
+ /** A relation whose related entities are all entities of the target type or alias. */
5
+ export interface AllOfTypeRelation {
6
+ kind: 'allOfType';
7
+ target: string;
8
+ cardinality: '0-1' | '1-1' | '0-N' | '1-N';
9
+ meta?: ExpressionMeta;
10
+ }
11
+ /**
12
+ * Resolves `allOfType` relations from a per-state index. Relations targeting the same set of types
13
+ * share one bucket; the first resolution on a state walks the entities once to fill every bucket,
14
+ * and every later resolution on that state is a lookup. Registration closes once the first state
15
+ * has been indexed, so a bucket can never be missing from an index that was already built.
16
+ */
17
+ export declare const createAllOfTypeRelation: (aliasMap: AnyAliasMap) => (relation: {
18
+ readonly target: string;
19
+ }) => (_selfId: DomainEntityId<string>, state: DomainState<DomainEntity<string>>) => DomainEntityId<string>[];
@@ -0,0 +1 @@
1
+ import{expandAlias as e}from"../model/index.js";export const createAllOfTypeRelation=t=>{let r=new Map,a=new WeakMap,n=!1;return o=>{if(n)throw Error(`Cannot register all-of-type relation targeting ${o.target} after evaluation started. Create all relation expressions before evaluating the domain state.`);let l=new Set(e(t,o.target)),i=[...l].sort().join("|");return r.set(i,l),(e,t)=>(e=>{let t=a.get(e);if(t)return t;n=!0;let o=new Map([...r.keys()].map(e=>[e,[]]));for(let t of e.entities)for(let[e,a]of r)a.has(t.type)&&o.get(e).push(t.id);return a.set(e,o),o})(t).get(i)}};
@@ -1,4 +1,4 @@
1
- import type { DomainEntity, DomainEntityId, DomainEntityReflection, RawAliasReflection } from '../core/index.js';
1
+ import type { DomainEntity, DomainEntityId, DomainEntityReflection, RawAliasReflection } from '../model/index.js';
2
2
  import type { ComposedOfComponentState } from './composed-of.js';
3
3
  import type { ReferenceComponentState } from './reference-component.js';
4
4
  export declare const createSingleReferenceRead: <TARGET extends DomainEntity<string>>(_targetReflection: DomainEntityReflection<TARGET> | RawAliasReflection<TARGET>, field: string) => (self: object, state: unknown, ctx: unknown) => ReferenceComponentState;
@@ -0,0 +1 @@
1
+ import{memoEval as e}from"../../utils/memo-eval.js";export const createSingleReferenceRead=(t,r)=>e(e=>[e[r]],e=>({referencedEntityIds:null===e?[]:[e]}));export const createSingleReferenceWrite=(e,t)=>r=>{let n=r.referencedEntityIds[0];return n&&e.assertId(n),{[t]:n??null}};export const createMultipleReferenceRead=(t,r)=>e(e=>[e[r]],e=>({referencedEntityIds:e}));export const createMultipleReferenceWrite=(e,t)=>r=>(e.assertIds(r.referencedEntityIds),{[t]:r.referencedEntityIds});export const createSingleCompositionRead=t=>e(e=>[e[t]?.id??null],e=>({childEntityIds:null===e?[]:[e]}));export const createMultipleCompositionRead=t=>e(e=>e[t].map(e=>e.id),(...e)=>({childEntityIds:e}));export const createEmptyWrite=()=>()=>({});
@@ -1,4 +1,4 @@
1
- import { type DomainEntityId } from '../core/index.js';
1
+ import { type DomainEntityId } from '../model/index.js';
2
2
  export type ComposedOfComponentState = {
3
3
  /**
4
4
  * List of entity IDs that the parent entity is composed of
@@ -0,0 +1 @@
1
+ import{SystemComponentBuilder as o}from"../component/index.js";import{EntityIdSchema as t}from"../model/index.js";export const composedOfComponent=o.component("composedOf").withState({type:"object",properties:{childEntityIds:{type:"array",items:t}},required:["childEntityIds"],additionalProperties:!1}).build();
@@ -0,0 +1,17 @@
1
+ import type { AnyDomain } from '../domain.js';
2
+ import type { ExpressionMeta } from '../expression/index.js';
3
+ import type { DomainEntity, DomainEntityId } from '../model/index.js';
4
+ import type { DomainState } from '../state/index.js';
5
+ /**
6
+ * A relation whose related entities are the ones a field of the entity itself references. The
7
+ * application-spec parser checks that `field` is a reference field of the entity that fits the
8
+ * target and the cardinality.
9
+ */
10
+ export interface DirectRelation {
11
+ kind: 'direct';
12
+ target: string;
13
+ field: string;
14
+ cardinality: '0-1' | '1-1' | '0-N' | '1-N';
15
+ meta?: ExpressionMeta;
16
+ }
17
+ export declare const directRelation: (relation: DirectRelation) => (selfId: DomainEntityId<string>, state: DomainState<DomainEntity<string>>, domain: AnyDomain) => Array<DomainEntityId<string>>;
@@ -0,0 +1,8 @@
1
+ export * from './all-of-type-relation.js';
2
+ export * from './component-factories.js';
3
+ export * from './composed-of.js';
4
+ export * from './direct-relation.js';
5
+ export * from './indirect-relation.js';
6
+ export * from './reference-component.js';
7
+ export type * from './reference-field.js';
8
+ export * from './relation-factory.js';
@@ -0,0 +1 @@
1
+ export*from"./all-of-type-relation.js";export*from"./component-factories.js";export*from"./composed-of.js";export*from"./direct-relation.js";export*from"./indirect-relation.js";export*from"./reference-component.js";export*from"./relation-factory.js";
@@ -0,0 +1,25 @@
1
+ import type { ExpressionMeta } from '../expression/index.js';
2
+ import { type AnyAliasMap, type DomainEntity, type DomainEntityId } from '../model/index.js';
3
+ import type { DomainState } from '../state/index.js';
4
+ /**
5
+ * A relation whose related entities are the ones that reference the entity in their `field`. The
6
+ * application-spec parser checks that `field` is a reference field of the target that points back.
7
+ */
8
+ export interface IndirectRelation {
9
+ kind: 'indirect';
10
+ target: string;
11
+ field: string;
12
+ cardinality: '0-1' | '1-1' | '0-N' | '1-N';
13
+ meta?: ExpressionMeta;
14
+ }
15
+ /**
16
+ * Resolves `indirect` relations from a per-state reverse-reference index. Relations reading the
17
+ * same field on the same set of target types share one index mapping each referenced id to the
18
+ * entities that reference it; the first resolution on a state walks the entities once to fill
19
+ * every index, and every later resolution on that state is a lookup. Registration closes once the
20
+ * first state has been indexed, so an index can never be missing from a state already walked.
21
+ */
22
+ export declare const createIndirectRelation: (aliasMap: AnyAliasMap) => (relation: {
23
+ readonly target: string;
24
+ readonly field: string;
25
+ }) => (sourceId: DomainEntityId<string>, state: DomainState<DomainEntity<string>>) => DomainEntityId<string>[];