@salsita-ai/sdk 0.50.0-develop.5a0bcdee42 → 0.50.0-develop.6d8967bc99

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 (567) hide show
  1. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  2. package/dist/application-spec/generate-application/code/common/index.d.ts +1 -0
  3. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  4. package/dist/application-spec/generate-application/code/common/project-module-list.d.ts +8 -0
  5. package/dist/application-spec/generate-application/code/common/project-module-list.js +3 -0
  6. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  7. package/dist/application-spec/generate-application/code/templates/admin-domain-code.d.ts +1 -2
  8. package/dist/application-spec/generate-application/code/templates/admin-domain-code.js +6 -14
  9. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.d.ts +1 -2
  10. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.js +4 -4
  11. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.d.ts +1 -2
  12. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.js +7 -16
  13. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.d.ts +1 -2
  14. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.js +7 -9
  15. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.d.ts +2 -2
  16. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.js +1 -1
  17. package/dist/application-spec/generate-application/code/templates/domain-spec.js +4 -4
  18. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  19. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +1 -1
  20. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +2 -1
  21. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +1 -2
  22. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +8 -4
  23. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +4 -3
  24. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.js +1 -1
  25. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.d.ts +3 -8
  26. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.js +1 -1
  27. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +9 -43
  28. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  29. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-server-settings.d.ts +2 -2
  30. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.d.ts +5 -21
  31. package/dist/client/phoenix-api.d.ts +58 -30
  32. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +15 -3
  33. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  34. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  35. package/dist/configurator/ui/assistant/tool-chip.d.ts +8 -1
  36. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  37. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +84 -98
  38. package/dist/docs/complex-use-cases/navigation-reset-selection.mdx +18 -12
  39. package/dist/docs/index.json +1 -1
  40. package/dist/docs/layouts/custom-price.mdx +14 -16
  41. package/dist/docs/layouts/sidebar/tabs.mdx +24 -21
  42. package/dist/docs/other-features/domain-actions.mdx +1 -1
  43. package/dist/docs/other-features/side-effects.mdx +42 -34
  44. package/dist/docs/other-features/transformers.mdx +1 -1
  45. package/dist/docs/phoenix/admin.mdx +9 -24
  46. package/dist/docs/phoenix/localization.mdx +3 -22
  47. package/dist/docs/phoenix/phoenix-cli.mdx +1 -1
  48. package/dist/docs/phoenix/project-structure.mdx +6 -0
  49. package/dist/docs/phoenix/sdk-builder-workflow.mdx +4 -3
  50. package/dist/docs/recipes-and-delete/recipe-hierarchy-selection.mdx +15 -13
  51. package/dist/docs/relations/hierarchy.mdx +13 -2
  52. package/dist/domain/actions/action-factory.d.ts +4 -4
  53. package/dist/domain/admin-domain/__generated/enhanced-model.d.ts +1 -2
  54. package/dist/domain/admin-domain/__generated/model/versions/v1.d.ts +1 -1
  55. package/dist/domain/admin-domain/__generated/model/versions/v2.d.ts +1 -1
  56. package/dist/domain/admin-domain/__generated/model/versions/v3.d.ts +1 -1
  57. package/dist/domain/admin-domain/__generated/model/versions/v4.d.ts +1 -1
  58. package/dist/domain/admin-domain/__generated/model/versions/v5.d.ts +1 -1
  59. package/dist/domain/admin-domain/__generated/model/versions/v6.d.ts +2 -2
  60. package/dist/domain/admin-domain/__generated/model/versions/v6.js +1 -1
  61. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +1 -4
  62. package/dist/domain/admin-domain/implementation/common-admin-migrations.d.ts +1 -1
  63. package/dist/domain/admin-domain/index.d.ts +2 -3
  64. package/dist/domain/admin-domain/index.js +1 -1
  65. package/dist/domain/application/admin-page-factories.d.ts +1 -1
  66. package/dist/domain/application/application-config.d.ts +25 -75
  67. package/dist/domain/application/assistant/assistant-manifest.d.ts +61 -0
  68. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +95 -0
  69. package/dist/domain/application/assistant/assistant-value-type.d.ts +9 -0
  70. package/dist/domain/application/assistant/assistant-value-type.js +1 -0
  71. package/dist/domain/application/assistant/build-assistant-manifest.d.ts +4 -0
  72. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -0
  73. package/dist/{phoenix/application-spec → domain/application/assistant}/generate-assistant-prompt.d.ts +3 -3
  74. package/dist/{phoenix/application-spec → domain/application/assistant}/generate-assistant-prompt.js +1 -1
  75. package/dist/domain/application/assistant/index.d.ts +4 -0
  76. package/dist/domain/application/assistant/index.js +1 -0
  77. package/dist/domain/application/assistant-field-options.d.ts +2 -3
  78. package/dist/domain/application/assistant-mutations.d.ts +2 -5
  79. package/dist/domain/application/assistant-mutations.js +1 -1
  80. package/dist/domain/application/assistant-recipe-groups.d.ts +2 -6
  81. package/dist/domain/application/configurator-builder.d.ts +33 -18
  82. package/dist/domain/application/configurator-builder.js +1 -1
  83. package/dist/domain/application/element-registration.d.ts +5 -0
  84. package/dist/domain/application/element-registration.js +1 -1
  85. package/dist/domain/application/handler-registration.d.ts +5 -0
  86. package/dist/domain/application/handler-registration.js +1 -1
  87. package/dist/domain/application/index.d.ts +5 -4
  88. package/dist/domain/application/index.js +1 -1
  89. package/dist/domain/application/published-data/create-finalize-admin-domain.d.ts +1 -2
  90. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +1 -1
  91. package/dist/domain/application/published-data/map-published-data.d.ts +1 -2
  92. package/dist/domain/application/resolve-imported-transformers.d.ts +12 -2
  93. package/dist/domain/application/resolve-imported-transformers.js +1 -1
  94. package/dist/domain/available-system-components.js +1 -1
  95. package/dist/domain/core/action.d.ts +5 -6
  96. package/dist/domain/{components → core/component}/component-reader-types.d.ts +1 -2
  97. package/dist/domain/{components → core/component}/debug-state-component.d.ts +1 -1
  98. package/dist/domain/core/component/debug-state-component.js +1 -0
  99. package/dist/domain/{components → core/component}/domain-component-optic.d.ts +6 -6
  100. package/dist/domain/core/component/domain-component-optic.js +16 -0
  101. package/dist/domain/{components → core/component}/drag-state-component.d.ts +1 -1
  102. package/dist/domain/core/component/drag-state-component.js +1 -0
  103. package/dist/domain/{components → core/component}/export-state-component.d.ts +1 -1
  104. package/dist/domain/core/component/export-state-component.js +1 -0
  105. package/dist/domain/{components → core/component}/fullscreen-state-component.d.ts +1 -1
  106. package/dist/domain/core/component/fullscreen-state-component.js +1 -0
  107. package/dist/domain/{components → core/component}/group-components-by-entity-id-and-name.d.ts +1 -2
  108. package/dist/domain/core/component/group-components-by-entity-id-and-name.js +1 -0
  109. package/dist/domain/{components → core/component}/hover-state-component.d.ts +1 -1
  110. package/dist/domain/core/component/hover-state-component.js +1 -0
  111. package/dist/domain/core/component/index.d.ts +18 -0
  112. package/dist/domain/core/component/index.js +1 -0
  113. package/dist/domain/{components → core/component}/legacy-filter.d.ts +2 -2
  114. package/dist/domain/{components → core/component}/navigation-state-component.d.ts +1 -1
  115. package/dist/domain/core/component/navigation-state-component.js +1 -0
  116. package/dist/domain/{components → core/component}/selection-state-component.d.ts +1 -1
  117. package/dist/domain/core/component/selection-state-component.js +1 -0
  118. package/dist/domain/{components → core/component}/system-component-builder.d.ts +1 -2
  119. package/dist/domain/core/component/system-component-builder.js +1 -0
  120. package/dist/domain/{components → core/component}/system-component-filter.d.ts +3 -3
  121. package/dist/domain/core/component/system-virtual-entity.js +1 -0
  122. package/dist/domain/{components → core/component}/tool-state-component.d.ts +1 -1
  123. package/dist/domain/core/component/tool-state-component.js +1 -0
  124. package/dist/domain/{components → core/component}/updates.d.ts +1 -2
  125. package/dist/domain/{components → core/component}/view-state-component.d.ts +1 -1
  126. package/dist/domain/core/component/view-state-component.js +1 -0
  127. package/dist/domain/{components → core/component}/viewport-state-component.d.ts +1 -1
  128. package/dist/domain/core/component/viewport-state-component.js +1 -0
  129. package/dist/domain/core/decoder/create-decoder.d.ts +6 -0
  130. package/dist/domain/core/decoder/create-decoder.js +1 -0
  131. package/dist/domain/core/decoder/decoder.d.ts +6 -0
  132. package/dist/domain/core/decoder/index.d.ts +2 -0
  133. package/dist/domain/core/decoder/index.js +1 -0
  134. package/dist/domain/core/domain-factory.d.ts +3 -4
  135. package/dist/domain/core/domain-factory.js +1 -1
  136. package/dist/domain/core/domain.d.ts +3 -4
  137. package/dist/domain/core/domain.js +1 -1
  138. package/dist/domain/{expressions → core/expression}/constant-expressions.d.ts +2 -3
  139. package/dist/domain/core/expression/constant-expressions.js +1 -0
  140. package/dist/domain/{expressions → core/expression}/custom-expression.d.ts +4 -5
  141. package/dist/domain/core/expression/custom-expression.js +1 -0
  142. package/dist/domain/core/{expression.d.ts → expression/expression.d.ts} +6 -8
  143. package/dist/domain/core/expression/expression.js +1 -0
  144. package/dist/domain/core/expression/index.d.ts +5 -0
  145. package/dist/domain/core/expression/index.js +1 -0
  146. package/dist/domain/{expressions → core/expression}/memoize-expression.d.ts +2 -2
  147. package/dist/domain/{expressions → core/expression}/prepare-domain-expressions.d.ts +1 -1
  148. package/dist/domain/core/index.d.ts +9 -17
  149. package/dist/domain/core/index.js +1 -1
  150. package/dist/domain/{invariants → core/invariant}/builtin-invariant.d.ts +2 -2
  151. package/dist/domain/{invariants → core/invariant}/custom-invariants.d.ts +2 -3
  152. package/dist/domain/core/invariant/custom-invariants.js +1 -0
  153. package/dist/domain/core/invariant/index.d.ts +5 -0
  154. package/dist/domain/core/invariant/index.js +1 -0
  155. package/dist/domain/{invariants → core/invariant}/invariants.d.ts +12 -4
  156. package/dist/domain/core/invariant/invariants.js +1 -0
  157. package/dist/domain/core/invariant/violation-component.js +1 -0
  158. package/dist/domain/{invariants → core/invariant}/violation.d.ts +2 -2
  159. package/dist/domain/core/{component.d.ts → model/component.d.ts} +1 -1
  160. package/dist/domain/core/model/index.d.ts +6 -0
  161. package/dist/domain/core/model/index.js +1 -0
  162. package/dist/domain/core/{reflection.d.ts → model/reflection.d.ts} +1 -1
  163. package/dist/domain/core/model/reflection.js +1 -0
  164. package/dist/domain/core/schema/enhanced-json-schema.js +1 -0
  165. package/dist/domain/core/schema/extended-schema-validator.js +1 -0
  166. package/dist/domain/core/schema/index.d.ts +3 -0
  167. package/dist/domain/core/schema/index.js +1 -0
  168. package/dist/domain/core/schema/schema-validator.js +1 -0
  169. package/dist/domain/core/state/id-sequence.d.ts +15 -0
  170. package/dist/domain/core/state/id-sequence.js +1 -0
  171. package/dist/domain/core/state/index.d.ts +3 -0
  172. package/dist/domain/core/state/index.js +1 -0
  173. package/dist/domain/core/{migrations.d.ts → state/migrations.d.ts} +1 -2
  174. package/dist/domain/core/{state.d.ts → state/state.d.ts} +1 -2
  175. package/dist/domain/domain-builder.d.ts +11 -8
  176. package/dist/domain/domain-builder.js +1 -1
  177. package/dist/domain/domain-context/action-system/action-system.d.ts +1 -3
  178. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  179. package/dist/domain/domain-context/create-transformer.d.ts +1 -1
  180. package/dist/domain/domain-context/dimension-system/dimension-state.js +1 -1
  181. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +1 -2
  182. package/dist/domain/domain-context/domain-context-systems.d.ts +1 -3
  183. package/dist/domain/domain-context/index.d.ts +1 -1
  184. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +3 -5
  185. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  186. package/dist/domain/domain-context/navigation-system/navigation-updates.d.ts +1 -12
  187. package/dist/domain/domain-context/navigation-system/navigation-updates.js +1 -1
  188. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +1 -1
  189. package/dist/domain/domain-context/navigation-system/selection-transformers.js +1 -1
  190. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +1 -2
  191. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  192. package/dist/domain/domain-context/recipe-system/recipes.d.ts +1 -3
  193. package/dist/domain/domain-context/recipe-system/recipes.js +1 -1
  194. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +1 -1
  195. package/dist/domain/domain-context/relation-transformers/cascade-deletes.js +1 -1
  196. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +1 -1
  197. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  198. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +1 -1
  199. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  200. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +1 -1
  201. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  202. package/dist/domain/domain-context/store-system/apply-updates.d.ts +1 -3
  203. package/dist/domain/domain-context/store-system/apply-updates.js +1 -1
  204. package/dist/domain/domain-context/store-system/next-domain-entity-id.d.ts +1 -13
  205. package/dist/domain/domain-context/store-system/next-domain-entity-id.js +1 -1
  206. package/dist/domain/domain-context/store-system/reconcile-projected-entities.d.ts +1 -2
  207. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  208. package/dist/domain/domain-context/store-system/store-system.d.ts +1 -5
  209. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  210. package/dist/domain/domain-context/store-system/system-state.d.ts +1 -3
  211. package/dist/domain/domain-context/store-system/system-state.js +1 -1
  212. package/dist/domain/domain-context/transformers/actions-builder.d.ts +1 -2
  213. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  214. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +1 -3
  215. package/dist/domain/domain-context/transformers/chain-builder.d.ts +2 -2
  216. package/dist/domain/domain-context/transformers/context.d.ts +1 -5
  217. package/dist/domain/domain-context/transformers/entity-builder.d.ts +1 -5
  218. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  219. package/dist/domain/domain-context/transformers/then-builder.d.ts +1 -2
  220. package/dist/domain/domain-context/transformers/then-builder.js +1 -1
  221. package/dist/domain/domain-context/transformers/when-builder.d.ts +1 -6
  222. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  223. package/dist/domain/domain-context/undo-system.d.ts +1 -1
  224. package/dist/domain/domain-runtime/domain-context/component-reader.d.ts +1 -4
  225. package/dist/domain/domain-runtime/domain-context/component-reader.js +1 -1
  226. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +1 -3
  227. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  228. package/dist/domain/domain-runtime/domain-runtime.d.ts +4 -4
  229. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  230. package/dist/domain/domain-runtime/spec/selectors.d.ts +2 -2
  231. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  232. package/dist/domain/domain-runtime/spec/types.d.ts +4 -5
  233. package/dist/domain/index.d.ts +1 -25
  234. package/dist/domain/index.js +1 -1
  235. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +3 -3
  236. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  237. package/dist/domain/project-modules/index.d.ts +1 -0
  238. package/dist/domain/project-modules/index.js +1 -0
  239. package/dist/domain/project-modules/project-modules.d.ts +41 -0
  240. package/dist/domain/project-modules/project-modules.js +1 -0
  241. package/dist/domain/projections/blender-projections/blender-projections.d.ts +1 -1
  242. package/dist/domain/projections/blender-projections/blender-projections.js +1 -1
  243. package/dist/domain/projections/composition-projections.js +1 -1
  244. package/dist/domain/projections/projected-entities-projections.d.ts +1 -2
  245. package/dist/domain/projections/snap-matching.d.ts +1 -2
  246. package/dist/domain/projections/snap-utils.d.ts +1 -2
  247. package/dist/domain/projections/validation-projections.d.ts +1 -2
  248. package/dist/domain/projections/validation-projections.js +1 -1
  249. package/dist/domain/relations/all-of-type-relation.d.ts +1 -4
  250. package/dist/domain/relations/all-of-type-relation.js +1 -1
  251. package/dist/domain/relations/component-factories.d.ts +1 -2
  252. package/dist/domain/relations/composed-of.d.ts +1 -1
  253. package/dist/domain/relations/composed-of.js +1 -1
  254. package/dist/domain/relations/direct-relation.d.ts +1 -3
  255. package/dist/domain/relations/indirect-relation.d.ts +1 -4
  256. package/dist/domain/relations/indirect-relation.js +1 -1
  257. package/dist/domain/relations/reference-component.d.ts +3 -5
  258. package/dist/domain/relations/reference-component.js +1 -1
  259. package/dist/domain/relations/reference-field.d.ts +1 -1
  260. package/dist/domain/relations/relation-factory.d.ts +1 -3
  261. package/dist/domain/relations/relation-implementation.d.ts +1 -4
  262. package/dist/domain/system-components/admin-sidebar.d.ts +1 -1
  263. package/dist/domain/system-components/admin-sidebar.js +1 -1
  264. package/dist/domain/system-components/angle-dimension.js +1 -1
  265. package/dist/domain/system-components/angle-indicator.d.ts +1 -1
  266. package/dist/domain/system-components/angle-indicator.js +1 -1
  267. package/dist/domain/system-components/application-config.d.ts +1 -1
  268. package/dist/domain/system-components/application-config.js +1 -1
  269. package/dist/domain/system-components/attribute-selection.js +1 -1
  270. package/dist/domain/system-components/attribute-switch.js +1 -1
  271. package/dist/domain/system-components/autorotate-camera-component.d.ts +1 -1
  272. package/dist/domain/system-components/autorotate-camera-component.js +1 -1
  273. package/dist/domain/system-components/basic-sidebar-footer.d.ts +1 -1
  274. package/dist/domain/system-components/basic-sidebar-footer.js +1 -1
  275. package/dist/domain/system-components/bounding-box-component.d.ts +1 -1
  276. package/dist/domain/system-components/bounding-box-component.js +1 -1
  277. package/dist/domain/system-components/bounding-sphere-component.d.ts +1 -1
  278. package/dist/domain/system-components/bounding-sphere-component.js +1 -1
  279. package/dist/domain/system-components/camera-based-hidden-entity-object.js +1 -1
  280. package/dist/domain/system-components/camera-based-hidden-entity.js +1 -1
  281. package/dist/domain/system-components/canvas-config.d.ts +1 -1
  282. package/dist/domain/system-components/canvas-config.js +1 -1
  283. package/dist/domain/system-components/canvas-custom-environment.js +1 -1
  284. package/dist/domain/system-components/canvas-padding.d.ts +1 -1
  285. package/dist/domain/system-components/canvas-padding.js +1 -1
  286. package/dist/domain/system-components/canvas-preset-environment.d.ts +1 -1
  287. package/dist/domain/system-components/canvas-preset-environment.js +1 -1
  288. package/dist/domain/system-components/child-entity-recipe-hierarchy.d.ts +1 -1
  289. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +1 -1
  290. package/dist/domain/system-components/child-entity-recipes.d.ts +1 -1
  291. package/dist/domain/system-components/child-entity-recipes.js +1 -1
  292. package/dist/domain/system-components/child-entity-selection.d.ts +1 -1
  293. package/dist/domain/system-components/child-entity-selection.js +1 -1
  294. package/dist/domain/system-components/client-side-image.js +1 -1
  295. package/dist/domain/system-components/collision-box-geometry.d.ts +1 -1
  296. package/dist/domain/system-components/collision-box-geometry.js +1 -1
  297. package/dist/domain/system-components/collision-geometries.d.ts +1 -1
  298. package/dist/domain/system-components/collision-geometry.d.ts +1 -1
  299. package/dist/domain/system-components/collision-geometry.js +1 -1
  300. package/dist/domain/system-components/collision-point-geometry.d.ts +1 -1
  301. package/dist/domain/system-components/collision-point-geometry.js +1 -1
  302. package/dist/domain/system-components/color-value.js +1 -1
  303. package/dist/domain/system-components/common/dimension-indicator-schema.d.ts +1 -1
  304. package/dist/domain/system-components/common/dimension-indicator-schema.js +1 -1
  305. package/dist/domain/system-components/constraint.d.ts +1 -1
  306. package/dist/domain/system-components/constraint.js +1 -1
  307. package/dist/domain/system-components/create-blueprint.d.ts +1 -1
  308. package/dist/domain/system-components/custom-header.d.ts +1 -1
  309. package/dist/domain/system-components/custom-header.js +1 -1
  310. package/dist/domain/system-components/custom-price-footer.js +1 -1
  311. package/dist/domain/system-components/custom-scene-entity.d.ts +1 -1
  312. package/dist/domain/system-components/custom-scene-entity.js +1 -1
  313. package/dist/domain/system-components/custom-sidebar-footer.d.ts +1 -1
  314. package/dist/domain/system-components/custom-sidebar-footer.js +1 -1
  315. package/dist/domain/system-components/detail.js +1 -1
  316. package/dist/domain/system-components/dimension-indicator.d.ts +1 -1
  317. package/dist/domain/system-components/dimension-indicator.js +1 -1
  318. package/dist/domain/system-components/distance-dimension-select.d.ts +1 -1
  319. package/dist/domain/system-components/distance-dimension-select.js +1 -1
  320. package/dist/domain/system-components/distance-dimension.d.ts +1 -1
  321. package/dist/domain/system-components/distance-dimension.js +1 -1
  322. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  323. package/dist/domain/system-components/drag-handle.js +1 -1
  324. package/dist/domain/system-components/editable-angle-indicator.d.ts +1 -1
  325. package/dist/domain/system-components/editable-angle-indicator.js +1 -1
  326. package/dist/domain/system-components/editable-distance-dimension-indicator.d.ts +1 -1
  327. package/dist/domain/system-components/editable-distance-dimension-indicator.js +1 -1
  328. package/dist/domain/system-components/editable-offset-indicator.d.ts +1 -1
  329. package/dist/domain/system-components/editable-offset-indicator.js +1 -1
  330. package/dist/domain/system-components/editable-size-indicator.d.ts +1 -1
  331. package/dist/domain/system-components/editable-size-indicator.js +1 -1
  332. package/dist/domain/system-components/entity-header.js +1 -1
  333. package/dist/domain/system-components/exit-tool-mode-fab.d.ts +1 -1
  334. package/dist/domain/system-components/exit-tool-mode-fab.js +1 -1
  335. package/dist/domain/system-components/finalize-action.d.ts +1 -1
  336. package/dist/domain/system-components/finalize-action.js +1 -1
  337. package/dist/domain/system-components/finalize-component.js +1 -1
  338. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  339. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  340. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  341. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  342. package/dist/domain/system-components/fit-selection-orthographic-camera-component.js +1 -1
  343. package/dist/domain/system-components/fit-selection-perspective-camera-component.js +1 -1
  344. package/dist/domain/system-components/fixed-header.d.ts +1 -1
  345. package/dist/domain/system-components/fixed-header.js +1 -1
  346. package/dist/domain/system-components/floating-header.d.ts +1 -1
  347. package/dist/domain/system-components/floating-header.js +1 -1
  348. package/dist/domain/system-components/generic-dimension.d.ts +1 -1
  349. package/dist/domain/system-components/generic-dimension.js +1 -1
  350. package/dist/domain/system-components/hidden-entity.js +1 -1
  351. package/dist/domain/system-components/hidden-header.d.ts +1 -1
  352. package/dist/domain/system-components/hidden-header.js +1 -1
  353. package/dist/domain/system-components/hidden-sidebar-footer.d.ts +1 -1
  354. package/dist/domain/system-components/hidden-sidebar-footer.js +1 -1
  355. package/dist/domain/system-components/horizontal-tabs.d.ts +1 -1
  356. package/dist/domain/system-components/horizontal-tabs.js +1 -1
  357. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -2
  358. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  359. package/dist/domain/system-components/list-selector-dimension-indicator.d.ts +1 -1
  360. package/dist/domain/system-components/list-selector-dimension-indicator.js +1 -1
  361. package/dist/domain/system-components/material-override-property-transition.js +1 -1
  362. package/dist/domain/system-components/material-override-transformer.js +1 -1
  363. package/dist/domain/system-components/material-swatch.js +1 -1
  364. package/dist/domain/system-components/multilingual-text-value.js +1 -1
  365. package/dist/domain/system-components/navigation-page.js +1 -1
  366. package/dist/domain/system-components/navigation-panel-list.js +1 -1
  367. package/dist/domain/system-components/navigation-steps.js +1 -1
  368. package/dist/domain/system-components/offset-anchors.d.ts +1 -1
  369. package/dist/domain/system-components/offset-anchors.js +1 -1
  370. package/dist/domain/system-components/offset-indicator.d.ts +1 -2
  371. package/dist/domain/system-components/offset-indicator.js +1 -1
  372. package/dist/domain/system-components/offset.d.ts +1 -1
  373. package/dist/domain/system-components/offset.js +1 -1
  374. package/dist/domain/system-components/other-action.d.ts +1 -1
  375. package/dist/domain/system-components/other-action.js +1 -1
  376. package/dist/domain/system-components/pivot-point.d.ts +1 -1
  377. package/dist/domain/system-components/pivot-point.js +1 -1
  378. package/dist/domain/system-components/price.js +1 -1
  379. package/dist/domain/system-components/projected-entities.d.ts +1 -1
  380. package/dist/domain/system-components/projected-entities.js +1 -1
  381. package/dist/domain/system-components/property-page.d.ts +1 -1
  382. package/dist/domain/system-components/property-page.js +1 -1
  383. package/dist/domain/system-components/read-sidebar-footer.d.ts +1 -1
  384. package/dist/domain/system-components/read-sidebar-footer.js +1 -1
  385. package/dist/domain/system-components/replace-entity-recipe-hierarchy.d.ts +1 -1
  386. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +1 -1
  387. package/dist/domain/system-components/replace-entity-recipes.d.ts +1 -1
  388. package/dist/domain/system-components/replace-entity-recipes.js +1 -1
  389. package/dist/domain/system-components/rotatable.js +1 -1
  390. package/dist/domain/system-components/rotation-handle.js +1 -1
  391. package/dist/domain/system-components/save-template-thumbnail.js +1 -1
  392. package/dist/domain/system-components/scene-entity-add-fab.js +1 -1
  393. package/dist/domain/system-components/scene-entity-ambient-light.js +1 -1
  394. package/dist/domain/system-components/scene-entity-animation.js +1 -1
  395. package/dist/domain/system-components/scene-entity-box-object.js +1 -1
  396. package/dist/domain/system-components/scene-entity-control.js +1 -1
  397. package/dist/domain/system-components/scene-entity-delete-fab.js +1 -1
  398. package/dist/domain/system-components/scene-entity-directional-light.js +1 -1
  399. package/dist/domain/system-components/scene-entity-floor-object.js +1 -1
  400. package/dist/domain/system-components/scene-entity-html-hotspot.js +1 -1
  401. package/dist/domain/system-components/scene-entity-local-material-override.js +1 -1
  402. package/dist/domain/system-components/scene-entity-material-override.js +1 -1
  403. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +1 -1
  404. package/dist/domain/system-components/scene-entity-object-clip.js +1 -1
  405. package/dist/domain/system-components/scene-entity-object-decal.js +1 -1
  406. package/dist/domain/system-components/scene-entity-object-group.js +1 -1
  407. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +1 -1
  408. package/dist/domain/system-components/scene-entity-object-local-material-override.js +1 -1
  409. package/dist/domain/system-components/scene-entity-object-material-override.js +1 -1
  410. package/dist/domain/system-components/scene-entity-object-properties.js +1 -1
  411. package/dist/domain/system-components/scene-entity-object-remote-material-override.js +1 -1
  412. package/dist/domain/system-components/scene-entity-object-text-decal.js +1 -1
  413. package/dist/domain/system-components/scene-entity-object-transformer.js +1 -1
  414. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.js +1 -1
  415. package/dist/domain/system-components/scene-entity-object.js +1 -1
  416. package/dist/domain/system-components/scene-entity-point-light.js +1 -1
  417. package/dist/domain/system-components/scene-entity-properties.js +1 -1
  418. package/dist/domain/system-components/scene-entity-rect-area-light.js +1 -1
  419. package/dist/domain/system-components/scene-entity-remote-material-override.js +1 -1
  420. package/dist/domain/system-components/scene-entity-remote-object.js +1 -1
  421. package/dist/domain/system-components/scene-entity-select-hotspot.js +1 -1
  422. package/dist/domain/system-components/scene-entity-spot-light.js +1 -1
  423. package/dist/domain/system-components/scene-entity-transimissive-material-override.js +1 -1
  424. package/dist/domain/system-components/scene-entity-wall-object.js +1 -1
  425. package/dist/domain/system-components/selectable-component.js +1 -1
  426. package/dist/domain/system-components/sidebar-tabs.d.ts +1 -1
  427. package/dist/domain/system-components/sidebar-tabs.js +1 -1
  428. package/dist/domain/system-components/simple-summary.js +1 -1
  429. package/dist/domain/system-components/size.d.ts +1 -1
  430. package/dist/domain/system-components/size.js +1 -1
  431. package/dist/domain/system-components/sketching-draw.d.ts +1 -1
  432. package/dist/domain/system-components/sketching-draw.js +1 -1
  433. package/dist/domain/system-components/sketching-edit.d.ts +1 -1
  434. package/dist/domain/system-components/sketching-edit.js +1 -1
  435. package/dist/domain/system-components/sketching-line.d.ts +1 -1
  436. package/dist/domain/system-components/sketching-line.js +1 -1
  437. package/dist/domain/system-components/sketching-rectangle.d.ts +1 -1
  438. package/dist/domain/system-components/sketching-rectangle.js +1 -1
  439. package/dist/domain/system-components/sketching.d.ts +1 -1
  440. package/dist/domain/system-components/sketching.js +1 -1
  441. package/dist/domain/system-components/snap-axis.d.ts +1 -1
  442. package/dist/domain/system-components/snap-axis.js +1 -1
  443. package/dist/domain/system-components/snap-edge.d.ts +1 -1
  444. package/dist/domain/system-components/snap-edge.js +1 -1
  445. package/dist/domain/system-components/snap-plane.d.ts +1 -1
  446. package/dist/domain/system-components/snap-plane.js +1 -1
  447. package/dist/domain/system-components/snap-point.d.ts +1 -1
  448. package/dist/domain/system-components/snap-point.js +1 -1
  449. package/dist/domain/system-components/static-orthographic-camera-component.d.ts +1 -1
  450. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  451. package/dist/domain/system-components/static-perspective-camera-component.d.ts +1 -1
  452. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  453. package/dist/domain/system-components/summary-component.js +1 -1
  454. package/dist/domain/system-components/text-value.js +1 -1
  455. package/dist/domain/system-components/tool-controls.js +1 -1
  456. package/dist/domain/system-components/tool-menu-fab.d.ts +1 -1
  457. package/dist/domain/system-components/tool-menu-fab.js +1 -1
  458. package/dist/domain/system-components/toolbar.d.ts +1 -1
  459. package/dist/domain/system-components/toolbar.js +1 -1
  460. package/dist/domain/system-components/universal-sidebar-footer.d.ts +1 -1
  461. package/dist/domain/system-components/universal-sidebar-footer.js +1 -1
  462. package/dist/domain/system-components/view-controls.js +1 -1
  463. package/dist/domain/utils/eval-cache.d.ts +1 -2
  464. package/dist/domain/utils/memo-eval.d.ts +1 -3
  465. package/dist/editor/domain-editors/use-implementation-files.d.ts +7 -6
  466. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  467. package/dist/i18n/locales/cs/messages.js +1 -1
  468. package/dist/i18n/locales/da/messages.js +1 -1
  469. package/dist/i18n/locales/de/messages.js +1 -1
  470. package/dist/i18n/locales/de-AT/messages.js +1 -1
  471. package/dist/i18n/locales/en/messages.js +1 -1
  472. package/dist/i18n/locales/en-AU/messages.js +1 -1
  473. package/dist/i18n/locales/en-GB/messages.js +1 -1
  474. package/dist/i18n/locales/es/messages.js +1 -1
  475. package/dist/i18n/locales/fr/messages.js +1 -1
  476. package/dist/i18n/locales/hu/messages.js +1 -1
  477. package/dist/i18n/locales/it/messages.js +1 -1
  478. package/dist/i18n/locales/nl/messages.js +1 -1
  479. package/dist/i18n/locales/pl/messages.js +1 -1
  480. package/dist/i18n/locales/pt/messages.js +1 -1
  481. package/dist/i18n/locales/ro/messages.js +1 -1
  482. package/dist/i18n/locales/sk/messages.js +1 -1
  483. package/dist/i18n/locales/tr/messages.js +1 -1
  484. package/dist/legacy/domain-cli/gen/configurator-builder.js +21 -8
  485. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  486. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  487. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +18 -19
  488. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +15 -16
  489. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +22 -23
  490. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +15 -16
  491. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.d.ts +7 -2
  492. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.js +8 -12
  493. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.d.ts +1 -1
  494. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.js +1 -1
  495. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/webhook-builders.js +7 -7
  496. package/dist/phoenix/application-spec/resolve-deployment-data.d.ts +4 -3
  497. package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
  498. package/dist/phoenix/commands/prepare-deployment-command.js +2 -2
  499. package/dist/phoenix/commands/prepare-local-environment-command.js +1 -1
  500. package/dist/phoenix/scripts/build-admin.js +1 -1
  501. package/dist/phoenix/services/prepare-development-environment.js +1 -1
  502. package/dist/phoenix/services/variant-file-session.js +1 -1
  503. package/dist/react-sdk/application-runtime/hooks/use-domain-application-props.d.ts +5 -2
  504. package/dist/react-sdk/application-runtime/hooks/use-spec.d.ts +1 -1
  505. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.d.ts +1 -1
  506. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  507. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +4 -4
  508. package/dist/webhook/builders/common.d.ts +3 -0
  509. package/dist/webhook/builders/webhook-builder.d.ts +1 -1
  510. package/dist/webhook/builders/webhook-builder.js +1 -1
  511. package/package.json +3 -3
  512. package/dist/domain/components/debug-state-component.js +0 -1
  513. package/dist/domain/components/domain-component-optic.js +0 -16
  514. package/dist/domain/components/drag-state-component.js +0 -1
  515. package/dist/domain/components/export-state-component.js +0 -1
  516. package/dist/domain/components/fullscreen-state-component.js +0 -1
  517. package/dist/domain/components/group-components-by-entity-id-and-name.js +0 -1
  518. package/dist/domain/components/hover-state-component.js +0 -1
  519. package/dist/domain/components/index.d.ts +0 -2
  520. package/dist/domain/components/index.js +0 -1
  521. package/dist/domain/components/navigation-state-component.js +0 -1
  522. package/dist/domain/components/selection-state-component.js +0 -1
  523. package/dist/domain/components/system-component-builder.js +0 -1
  524. package/dist/domain/components/system-virtual-entity.js +0 -1
  525. package/dist/domain/components/tool-state-component.js +0 -1
  526. package/dist/domain/components/view-state-component.js +0 -1
  527. package/dist/domain/components/viewport-state-component.js +0 -1
  528. package/dist/domain/core/json-schema.js +0 -1
  529. package/dist/domain/core/reflection.js +0 -1
  530. package/dist/domain/expressions/constant-expressions.js +0 -1
  531. package/dist/domain/expressions/custom-expression.js +0 -1
  532. package/dist/domain/expressions/index.d.ts +0 -1
  533. package/dist/domain/expressions/index.js +0 -1
  534. package/dist/domain/invariants/custom-invariants.js +0 -1
  535. package/dist/domain/invariants/invariants.js +0 -1
  536. package/dist/domain/invariants/violation-component.js +0 -1
  537. /package/dist/domain/{components/component-reader-types.js → application/assistant/assistant-manifest.js} +0 -0
  538. /package/dist/domain/{core/enhanced-json-schema.js → application/assistant/assistant-resolved-manifest.js} +0 -0
  539. /package/dist/domain/core/{expression.js → component/component-reader-types.js} +0 -0
  540. /package/dist/domain/{components → core/component}/legacy-filter.js +0 -0
  541. /package/dist/domain/{components → core/component}/system-component-filter.js +0 -0
  542. /package/dist/domain/{components → core/component}/system-virtual-entity.d.ts +0 -0
  543. /package/dist/domain/{components → core/component}/updates.js +0 -0
  544. /package/dist/domain/core/{schema-validator.js → decoder/decoder.js} +0 -0
  545. /package/dist/domain/{expressions → core/expression}/memoize-expression.js +0 -0
  546. /package/dist/domain/{expressions → core/expression}/prepare-domain-expressions.js +0 -0
  547. /package/dist/domain/{invariants → core/invariant}/builtin-invariant.js +0 -0
  548. /package/dist/domain/{invariants → core/invariant}/violation-component.d.ts +0 -0
  549. /package/dist/domain/{invariants → core/invariant}/violation.js +0 -0
  550. /package/dist/domain/core/{alias.d.ts → model/alias.d.ts} +0 -0
  551. /package/dist/domain/core/{alias.js → model/alias.js} +0 -0
  552. /package/dist/domain/core/{common-definitions.d.ts → model/common-definitions.d.ts} +0 -0
  553. /package/dist/domain/core/{common-definitions.js → model/common-definitions.js} +0 -0
  554. /package/dist/domain/core/{component.js → model/component.js} +0 -0
  555. /package/dist/domain/core/{model.d.ts → model/model.d.ts} +0 -0
  556. /package/dist/domain/core/{model.js → model/model.js} +0 -0
  557. /package/dist/domain/core/{preset.d.ts → model/preset.d.ts} +0 -0
  558. /package/dist/domain/core/{preset.js → model/preset.js} +0 -0
  559. /package/dist/domain/core/{schema-validator-ajv.d.ts → schema/create-ajv-schema-validator.d.ts} +0 -0
  560. /package/dist/domain/core/{schema-validator-ajv.js → schema/create-ajv-schema-validator.js} +0 -0
  561. /package/dist/domain/core/{schema-validator-csp.d.ts → schema/create-csp-schema-validator.d.ts} +0 -0
  562. /package/dist/domain/core/{schema-validator-csp.js → schema/create-csp-schema-validator.js} +0 -0
  563. /package/dist/domain/core/{enhanced-json-schema.d.ts → schema/enhanced-json-schema.d.ts} +0 -0
  564. /package/dist/domain/core/{json-schema.d.ts → schema/extended-schema-validator.d.ts} +0 -0
  565. /package/dist/domain/core/{schema-validator.d.ts → schema/schema-validator.d.ts} +0 -0
  566. /package/dist/domain/core/{migrations.js → state/migrations.js} +0 -0
  567. /package/dist/domain/core/{state.js → state/state.js} +0 -0
@@ -1,10 +1,6 @@
1
- import type { DomainEntityModification, DomainEntityStateDelta, StateUpdate } from '../../components/updates.js';
2
- import type { $DomainEntity, DomainEntity, DomainEntityId } from '../../core/model.js';
3
- import type { DomainState } from '../../core/state.js';
4
- import type { ViolationTypesOf$Entity } from '../../invariants/violation.js';
1
+ import type { $DomainEntity, DomainEntity, DomainEntityId, DomainEntityModification, DomainEntityStateDelta, DomainState, IdSequence, StateUpdate, ViolationTypesOf$Entity } from '../../core/index.js';
5
2
  import type { StateValidationResult } from '../../projections/validation-projections.js';
6
3
  import type { DomainContextSystems } from '../domain-context-systems.js';
7
- import type { IdSequence } from '../store-system/next-domain-entity-id.js';
8
4
  import type { StateEmissionKind, TransformerLogFunction } from '../store-system/store-system.js';
9
5
  export type BaseTransformerBuilderContext<ENTITIES extends DomainEntity<string>, $MAP extends Record<string, $DomainEntity<ENTITIES>>, ALLOWED_ROOT_ENTITIES extends ENTITIES, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string> = {
10
6
  /**
@@ -1,8 +1,4 @@
1
- import type { exportStateComponent } from '../../components/export-state-component.js';
2
- import type { selectionStateComponent } from '../../components/selection-state-component.js';
3
- import type { DomainEntityCreation, DomainEntityModification, DomainEntityReplacement, EntityDeletion, EphemeralRecordModification } from '../../components/updates.js';
4
- import { type $DomainEntity, type DomainEntity, type DomainEntityId, type EntityByType } from '../../core/model.js';
5
- import type { ViolationTypesOf$Entity } from '../../invariants/violation.js';
1
+ import { type $DomainEntity, type DomainEntity, type DomainEntityCreation, type DomainEntityId, type DomainEntityModification, type DomainEntityReplacement, type EntityByType, type EntityDeletion, type EphemeralRecordModification, type ViolationTypesOf$Entity, type exportStateComponent, type selectionStateComponent } from '../../core/index.js';
6
2
  import type { AllActions } from './actions-builder.js';
7
3
  import type { BaseTransformerBuilderContext, ContextFactoryFilter, DomainEntityModificationUpdateAtField } from './context.js';
8
4
  import type { ThenAndEntityAwareCausesBuilder, ThenBuilder } from './then-builder.js';
@@ -1 +1 @@
1
- import{domainEntityTypeFromId as t,isDomainEntityId as e}from"../../core/model.js";import{isDeselectUpdate as n,isExportUpdate as i,isSelectUpdate as r}from"../navigation-system/navigation-updates.js";import{updateActions as o}from"./actions-builder.js";import{createBaseContext as a}from"./context.js";import{thenAndEntityAwareCausesBuilder as l,thenBuilder as s}from"./then-builder.js";export const entityBuilder=(d,f)=>{let p=(n,i,r,o)=>{let a=r.filter(t=>"replaceDomainEntity"===t.kind);if(0===a.length)return o?.("no-event","No replacement updates found, skipping transformer",{updates:r}),[];let l=a.filter(r=>e(r.entityId)&&(void 0===n||n.includes(t(r.entityId)))&&(void 0===i||i.includes(r.replacementEntity.type)));return 0===l.length?(o?.("no-match",`No replacement from ${n?.join(", ")??"any"} to ${i?.join(", ")??"any"} found, skipping transformer`,{updates:r}),[]):l};return{modified:e=>l(d,o(!0),f()((n,i,r,o,l)=>{let s=n.filter(t=>"modifyDomainEntity"===t.kind);if(0===s.length)return l?.("no-event","No modification updates found, skipping transformer",{updates:n}),[];let f=s.filter(e=>d.includes(t(e.entityId)));if(0===f.length)return l?.("no-match",`No modification updates for entity ${d.join(", ")}, skipping transformer`,{updates:n}),[];let p=f;if(e?.atFields!==void 0){if(0===(p=f.filter(t=>e.atFields.every(e=>Object.hasOwn(t.stateDelta,e)))).length)return l?.("no-match",`Entity ${d.join(", ")} modified, but not at field ${e.atFields.join(", ")}, skipping transformer`,{updates:n}),[];l?.("match",`Entity ${d.join(", ")} modified at field ${e.atFields.join(", ")}, processing transformer`,{updates:n})}else l?.("match",`Entity ${d.join(", ")} modified, processing transformer`,{updates:n});let c=a(o,i,r,n,l);return p.map(t=>{let e=t.entityId;return{...c,getOld$Entity:()=>o.domain.get$Entity(e,i),getNew$Entity:()=>o.domain.get$Entity(e,c.getNewState()),entityId:e,update:t}})})),created:()=>l(d,o(!0),f()((t,e,n,i,r)=>{let o=t.filter(t=>"createDomainEntity"===t.kind);if(0===o.length)return r?.("no-event","No entity creation updates found, skipping transformer",{updates:t}),[];let l=o.filter(t=>d.includes(t.entity.type));if(0===l.length)return r?.("no-match",`No creation updates for entity ${d.join(", ")}, skipping transformer`,{updates:t}),[];r?.("match",`Entity ${d.join(", ")} created, processing transformer`,{updates:t});let s=a(i,e,n,t,r);return l.map(t=>{let e=t.entityId;return{...s,getNew$Entity:()=>i.domain.get$Entity(e,s.getNewState()),entityId:e,update:t}})})),deleted:()=>l(d,o(!0),f()((n,i,r,o,l)=>{let s=n.filter(t=>"deleteEntity"===t.kind);if(0===s.length)return l?.("no-event","No entity deletion updates found, skipping transformer",{updates:n}),[];let f=s.filter(n=>e(n.entityId)&&d.includes(t(n.entityId)));if(0===f.length)return l?.("no-match",`No deletion updates for entity ${d.join(", ")}, skipping transformer`,{updates:n}),[];l?.("match",`Entity ${d.join(", ")} deleted, processing transformer`,{updates:n});let p=a(o,i,r,n,l);return f.map(t=>{let e=t.entityId;return{...p,getOld$Entity:()=>o.domain.get$Entity(e,i),entityId:e,update:t}})})),replaces:t=>l(d,o(!0),f()((e,n,i,r,o)=>{let l=p(t,d,e,o);if(0===l.length)return[];o?.("match",`Entity ${d.join(", ")} replaces ${t.join(", ")??"any"}, processing transformer`,{updates:e});let s=a(r,n,i,e,o);return l.map(t=>{let e=t.entityId,i=t.replacementEntity.id;return{...s,getReplacing$Entity:()=>r.domain.get$Entity(i,s.getNewState()),getReplaced$Entity:()=>r.domain.get$Entity(e,n),entityId:i,update:t}})})),replacedWith:t=>l(d,o(!0),f()((e,n,i,r,o)=>{let l=p(d,t,e,o);if(0===l.length)return[];o?.("match",`Entity ${d.join(", ")} replaced with ${t.join(", ")??"any"}, processing transformer`,{updates:e});let s=a(r,n,i,e,o);return l.map(t=>{let e=t.entityId,i=t.replacementEntity.id;return{...s,getReplacing$Entity:()=>r.domain.get$Entity(i,s.getNewState()),getReplaced$Entity:()=>r.domain.get$Entity(e,n),entityId:e,update:t}})})),selected:n=>l(d,o(!0),f()((i,o,l,s,f)=>{let p=i.filter(r);if(0===p.length)return f?.("no-event","No selection updates found, skipping transformer",{updates:i}),[];let c=p.filter(n=>e(n.writableState.selectedEntityId)&&d.includes(t(n.writableState.selectedEntityId)));if(0===c.length)return f?.("no-match",`No selection updates for entity ${d.join(", ")}, skipping transformer`,{updates:i}),[];let m=s.navigationSystem.getActiveSelectionState(o),y=t(m);if(n?.insteadOf!==void 0&&!n?.insteadOf?.includes(y))return f?.("no-match",`Entity ${d.join(", ")} selected, but not instead of ${d.join(", ")}, skipping transformer`,{updates:i}),[];let g=n?.occurrence??"initial",u="any"===g?c:c.filter(t=>"repeated"===g==(t.writableState.selectedEntityId===m));if(0===u.length)return"initial"===g?f?.("no-match",`Targeting initial selection, but the entity ${d.join(", ")} was res-selected, skipping transformer`,{updates:i}):f?.("no-match",`Targeting repeated selection, but the entity ${d.join(", ")} was selected initially, skipping transformer`,{updates:i}),[];f?.("match",`Entity ${d.join(", ")} selected, processing transformer`,{updates:i});let $=a(s,o,l,i,f);return u.map(t=>{let e=t.writableState.selectedEntityId;return{...$,getSelected$Entity:()=>s.domain.get$Entity(e,$.getNewState()),getDeselected$Entity:()=>s.domain.get$Entity(m,o),entityId:e,update:t}})})),deselected:e=>{if((e?.occurrence==="repeated"||e?.occurrence==="any")&&e?.inFavorOf!==void 0)throw Error("inFavorOf is not supported when occurrence is repeated or any");return l(d,o(!0),f()((i,o,l,s,f)=>{let p=i.filter(t=>r(t)||n(t));if(0===p.length)return f?.("no-event","No selection/deselection updates found, skipping transformer",{updates:i}),[];let c=s.navigationSystem.getActiveSelectionState(o),m=t(c);if(!d.includes(m))return f?.("no-match",`Deselected entity is of type ${m} and not ${d.join(", ")}, skipping transformer`,{updates:i}),[];let y=p.filter(t=>t.writableState.selectedEntityId!==c),g=e?.occurrence??"initial";if(0===y.length&&"initial"===g)return f?.("no-match","Entity has not truly been deselected, skipping transformer",{updates:i}),[];if(y.length>0&&"repeated"===g)return f?.("no-match","Entity has been deselected initially, but target occurrence is repeated, skipping transformer",{updates:i}),[];let u=y.length>0?y:p,$=e?.inFavorOf?u.filter(n=>e.inFavorOf?.includes(t(n.writableState.selectedEntityId))):u;if(0===$.length)return f?.("no-match",`Entity ${c} deselected but not in favor of ${e?.inFavorOf?.join(",")}, skipping transformer`,{updates:i}),[];f?.("match",`Entity ${d.join(", ")} deselected in favor of ${e?.inFavorOf?.join(",")??"any"}, processing transformer`,{updates:i});let h=a(s,o,l,i,f);return $.map(t=>{let e=t.writableState.selectedEntityId;return{...h,getSelected$Entity:()=>s.domain.get$Entity(e,h.getNewState()),getDeselected$Entity:()=>s.domain.get$Entity(c,o),entityId:c,update:t}})}))},violated:n=>s(o(!0),f()((i,r,o,l,s)=>{let{validity:f,state:p}=l.storeSystem.prepareStateEmissionWithoutTransformation(i,r,o);if(f.valid||"uncaught"===f.severity)return s?.("no-event","State is valid, skipping transformer",{validity:f}),[];let c=Array.from(new Set(f.entityViolations.filter(t=>n.includes(t.violation.type)).map(t=>t.entityId)));if(!c)return s?.("no-event",`No violations of type ${n.join(", ")} found, skipping transformer`,{validity:f}),[];let m=c.filter(n=>e(n)&&d.includes(t(n)));if(0===m.length)return s?.("no-match",`No violations of type ${n.join(", ")} found for entity ${d.join(", ")}, skipping transformer`,{validity:f}),[];s?.("no-match",`Violations of type ${n.join(", ")} found for entity ${d.join(", ")}, processing transformer`,{validity:f});let y=a(l,r,o,i,s);return m.map(t=>({...y,getViolated$Entity:()=>l.domain.get$Entity(t,p)}))})),exported:n=>l(d,o(!0),f()((r,o,l,s,f)=>{let p=r.filter(i);if(0===p.length)return f?.("no-event","No export updates found, skipping transformer",{updates:r}),[];let c=p.filter(t=>n.includes(t.writableState.activeState));if(0===c.length)return f?.("no-match",`No export updates matching states ${n.join(", ")}, skipping transformer`,{updates:r}),[];let m=c.filter(n=>e(n.writableState.exportedEntityId)&&d.includes(t(n.writableState.exportedEntityId)));if(0===m.length)return f?.("no-match",`No export updates for entity ${d.join(", ")} with states ${n.join(", ")}, skipping transformer`,{updates:r}),[];f?.("match",`Entity ${d.join(", ")} exported with state ${n.join(", ")}, processing transformer`,{updates:r});let y=a(s,o,l,r,f);return m.map(t=>{let e=t.writableState.exportedEntityId;return{...y,getExported$Entity:()=>s.domain.get$Entity(e,y.getNewState()),entityId:e,update:t,getExportState:()=>t.writableState.activeState}})}))}};
1
+ import{domainEntityTypeFromId as t,isDomainEntityId as e}from"../../core/index.js";import{isDeselectUpdate as n,isExportUpdate as i,isSelectUpdate as r}from"../navigation-system/navigation-updates.js";import{updateActions as o}from"./actions-builder.js";import{createBaseContext as a}from"./context.js";import{thenAndEntityAwareCausesBuilder as l,thenBuilder as s}from"./then-builder.js";export const entityBuilder=(d,f)=>{let p=(n,i,r,o)=>{let a=r.filter(t=>"replaceDomainEntity"===t.kind);if(0===a.length)return o?.("no-event","No replacement updates found, skipping transformer",{updates:r}),[];let l=a.filter(r=>e(r.entityId)&&(void 0===n||n.includes(t(r.entityId)))&&(void 0===i||i.includes(r.replacementEntity.type)));return 0===l.length?(o?.("no-match",`No replacement from ${n?.join(", ")??"any"} to ${i?.join(", ")??"any"} found, skipping transformer`,{updates:r}),[]):l};return{modified:e=>l(d,o(!0),f()((n,i,r,o,l)=>{let s=n.filter(t=>"modifyDomainEntity"===t.kind);if(0===s.length)return l?.("no-event","No modification updates found, skipping transformer",{updates:n}),[];let f=s.filter(e=>d.includes(t(e.entityId)));if(0===f.length)return l?.("no-match",`No modification updates for entity ${d.join(", ")}, skipping transformer`,{updates:n}),[];let p=f;if(e?.atFields!==void 0){if(0===(p=f.filter(t=>e.atFields.every(e=>Object.hasOwn(t.stateDelta,e)))).length)return l?.("no-match",`Entity ${d.join(", ")} modified, but not at field ${e.atFields.join(", ")}, skipping transformer`,{updates:n}),[];l?.("match",`Entity ${d.join(", ")} modified at field ${e.atFields.join(", ")}, processing transformer`,{updates:n})}else l?.("match",`Entity ${d.join(", ")} modified, processing transformer`,{updates:n});let c=a(o,i,r,n,l);return p.map(t=>{let e=t.entityId;return{...c,getOld$Entity:()=>o.domain.get$Entity(e,i),getNew$Entity:()=>o.domain.get$Entity(e,c.getNewState()),entityId:e,update:t}})})),created:()=>l(d,o(!0),f()((t,e,n,i,r)=>{let o=t.filter(t=>"createDomainEntity"===t.kind);if(0===o.length)return r?.("no-event","No entity creation updates found, skipping transformer",{updates:t}),[];let l=o.filter(t=>d.includes(t.entity.type));if(0===l.length)return r?.("no-match",`No creation updates for entity ${d.join(", ")}, skipping transformer`,{updates:t}),[];r?.("match",`Entity ${d.join(", ")} created, processing transformer`,{updates:t});let s=a(i,e,n,t,r);return l.map(t=>{let e=t.entityId;return{...s,getNew$Entity:()=>i.domain.get$Entity(e,s.getNewState()),entityId:e,update:t}})})),deleted:()=>l(d,o(!0),f()((n,i,r,o,l)=>{let s=n.filter(t=>"deleteEntity"===t.kind);if(0===s.length)return l?.("no-event","No entity deletion updates found, skipping transformer",{updates:n}),[];let f=s.filter(n=>e(n.entityId)&&d.includes(t(n.entityId)));if(0===f.length)return l?.("no-match",`No deletion updates for entity ${d.join(", ")}, skipping transformer`,{updates:n}),[];l?.("match",`Entity ${d.join(", ")} deleted, processing transformer`,{updates:n});let p=a(o,i,r,n,l);return f.map(t=>{let e=t.entityId;return{...p,getOld$Entity:()=>o.domain.get$Entity(e,i),entityId:e,update:t}})})),replaces:t=>l(d,o(!0),f()((e,n,i,r,o)=>{let l=p(t,d,e,o);if(0===l.length)return[];o?.("match",`Entity ${d.join(", ")} replaces ${t.join(", ")??"any"}, processing transformer`,{updates:e});let s=a(r,n,i,e,o);return l.map(t=>{let e=t.entityId,i=t.replacementEntity.id;return{...s,getReplacing$Entity:()=>r.domain.get$Entity(i,s.getNewState()),getReplaced$Entity:()=>r.domain.get$Entity(e,n),entityId:i,update:t}})})),replacedWith:t=>l(d,o(!0),f()((e,n,i,r,o)=>{let l=p(d,t,e,o);if(0===l.length)return[];o?.("match",`Entity ${d.join(", ")} replaced with ${t.join(", ")??"any"}, processing transformer`,{updates:e});let s=a(r,n,i,e,o);return l.map(t=>{let e=t.entityId,i=t.replacementEntity.id;return{...s,getReplacing$Entity:()=>r.domain.get$Entity(i,s.getNewState()),getReplaced$Entity:()=>r.domain.get$Entity(e,n),entityId:e,update:t}})})),selected:n=>l(d,o(!0),f()((i,o,l,s,f)=>{let p=i.filter(r);if(0===p.length)return f?.("no-event","No selection updates found, skipping transformer",{updates:i}),[];let c=p.filter(n=>e(n.writableState.selectedEntityId)&&d.includes(t(n.writableState.selectedEntityId)));if(0===c.length)return f?.("no-match",`No selection updates for entity ${d.join(", ")}, skipping transformer`,{updates:i}),[];let m=s.navigationSystem.getActiveSelectionState(o),y=t(m);if(n?.insteadOf!==void 0&&!n?.insteadOf?.includes(y))return f?.("no-match",`Entity ${d.join(", ")} selected, but not instead of ${d.join(", ")}, skipping transformer`,{updates:i}),[];let g=n?.occurrence??"initial",u="any"===g?c:c.filter(t=>"repeated"===g==(t.writableState.selectedEntityId===m));if(0===u.length)return"initial"===g?f?.("no-match",`Targeting initial selection, but the entity ${d.join(", ")} was res-selected, skipping transformer`,{updates:i}):f?.("no-match",`Targeting repeated selection, but the entity ${d.join(", ")} was selected initially, skipping transformer`,{updates:i}),[];f?.("match",`Entity ${d.join(", ")} selected, processing transformer`,{updates:i});let $=a(s,o,l,i,f);return u.map(t=>{let e=t.writableState.selectedEntityId;return{...$,getSelected$Entity:()=>s.domain.get$Entity(e,$.getNewState()),getDeselected$Entity:()=>s.domain.get$Entity(m,o),entityId:e,update:t}})})),deselected:e=>{if((e?.occurrence==="repeated"||e?.occurrence==="any")&&e?.inFavorOf!==void 0)throw Error("inFavorOf is not supported when occurrence is repeated or any");return l(d,o(!0),f()((i,o,l,s,f)=>{let p=i.filter(t=>r(t)||n(t));if(0===p.length)return f?.("no-event","No selection/deselection updates found, skipping transformer",{updates:i}),[];let c=s.navigationSystem.getActiveSelectionState(o),m=t(c);if(!d.includes(m))return f?.("no-match",`Deselected entity is of type ${m} and not ${d.join(", ")}, skipping transformer`,{updates:i}),[];let y=p.filter(t=>t.writableState.selectedEntityId!==c),g=e?.occurrence??"initial";if(0===y.length&&"initial"===g)return f?.("no-match","Entity has not truly been deselected, skipping transformer",{updates:i}),[];if(y.length>0&&"repeated"===g)return f?.("no-match","Entity has been deselected initially, but target occurrence is repeated, skipping transformer",{updates:i}),[];let u=y.length>0?y:p,$=e?.inFavorOf?u.filter(n=>e.inFavorOf?.includes(t(n.writableState.selectedEntityId))):u;if(0===$.length)return f?.("no-match",`Entity ${c} deselected but not in favor of ${e?.inFavorOf?.join(",")}, skipping transformer`,{updates:i}),[];f?.("match",`Entity ${d.join(", ")} deselected in favor of ${e?.inFavorOf?.join(",")??"any"}, processing transformer`,{updates:i});let h=a(s,o,l,i,f);return $.map(t=>{let e=t.writableState.selectedEntityId;return{...h,getSelected$Entity:()=>s.domain.get$Entity(e,h.getNewState()),getDeselected$Entity:()=>s.domain.get$Entity(c,o),entityId:c,update:t}})}))},violated:n=>s(o(!0),f()((i,r,o,l,s)=>{let{validity:f,state:p}=l.storeSystem.prepareStateEmissionWithoutTransformation(i,r,o);if(f.valid||"uncaught"===f.severity)return s?.("no-event","State is valid, skipping transformer",{validity:f}),[];let c=Array.from(new Set(f.entityViolations.filter(t=>n.includes(t.violation.type)).map(t=>t.entityId)));if(!c)return s?.("no-event",`No violations of type ${n.join(", ")} found, skipping transformer`,{validity:f}),[];let m=c.filter(n=>e(n)&&d.includes(t(n)));if(0===m.length)return s?.("no-match",`No violations of type ${n.join(", ")} found for entity ${d.join(", ")}, skipping transformer`,{validity:f}),[];s?.("no-match",`Violations of type ${n.join(", ")} found for entity ${d.join(", ")}, processing transformer`,{validity:f});let y=a(l,r,o,i,s);return m.map(t=>({...y,getViolated$Entity:()=>l.domain.get$Entity(t,p)}))})),exported:n=>l(d,o(!0),f()((r,o,l,s,f)=>{let p=r.filter(i);if(0===p.length)return f?.("no-event","No export updates found, skipping transformer",{updates:r}),[];let c=p.filter(t=>n.includes(t.writableState.activeState));if(0===c.length)return f?.("no-match",`No export updates matching states ${n.join(", ")}, skipping transformer`,{updates:r}),[];let m=c.filter(n=>e(n.writableState.exportedEntityId)&&d.includes(t(n.writableState.exportedEntityId)));if(0===m.length)return f?.("no-match",`No export updates for entity ${d.join(", ")} with states ${n.join(", ")}, skipping transformer`,{updates:r}),[];f?.("match",`Entity ${d.join(", ")} exported with state ${n.join(", ")}, processing transformer`,{updates:r});let y=a(s,o,l,r,f);return m.map(t=>{let e=t.writableState.exportedEntityId;return{...y,getExported$Entity:()=>s.domain.get$Entity(e,y.getNewState()),entityId:e,update:t,getExportState:()=>t.writableState.activeState}})}))}};
@@ -1,5 +1,4 @@
1
- import { type $DomainEntity, type DomainEntity, type DomainEntityId } from '../../core/model.js';
2
- import type { ViolationTypesOf$Entity } from '../../invariants/violation.js';
1
+ import { type $DomainEntity, type DomainEntity, type DomainEntityId, type ViolationTypesOf$Entity } from '../../core/index.js';
3
2
  import type { Actions, ActionsBuilder, AllActions } from './actions-builder.js';
4
3
  import type { BaseTransformerBuilderContext, ContextFactory, ContextWithEntityId, ContextWithUpdate, ContextWithUpdateAndEntityId } from './context.js';
5
4
  export type ThenBuilder<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, ACTIONS extends AllActions, CTX> = {
@@ -1 +1 @@
1
- import{isNonNullish as t}from"@salsita-ai/common/utils";import{domainEntityTypeFromId as e,isDomainEntityId as i}from"../../core/model.js";import{updateActions as n}from"./actions-builder.js";export const thenBuilder=(t,e)=>({then:t(e),and:i=>({then:t((t,n,r,o,a)=>{let s=e(t,n,r,o,a);if(!s.length)return[];let l=s.filter(i);return l.length||a?.("no-match","Custom `and` predicate did not match any update, skipping transformer"),l})})});export const tagBuilder=(t,e)=>({...thenBuilder(t,e),withTag:i=>thenBuilder(t,(t,n,r,o,a)=>{let s=e(t,n,r,o,a);if(!s.length)return[];let l=s.filter(t=>i.includes(t.update.updateTag));return l.length||a?.("no-match",`No matching update with tag ${i.join(", ")} found, skipping transformer`,{updates:t}),l})});export const causesBuilder=r=>({entity:o=>({withId:e=>({violation:i=>thenBuilder(n(!0),(n,o,a,s,l)=>{let u=r(n,o,a,s,l);if(!u.length)return[];let{validity:d,state:p}=s.storeSystem.prepareStateEmissionWithoutTransformation(n,o,a);if(d.valid||"uncaught"===d.severity)return l?.("no-event","No violations found, skipping transformer"),[];let f=d.entityViolations.filter(t=>i.includes(t.violation.type)).map(t=>t.entityId);if(0===f.length)return l?.("no-match",`No violations of type ${i.join(", ")} found, skipping transformer`),[];let m=u.map(t=>{let i=e(t);return i?{context:t,candidateEntityIds:Array.isArray(i)?i:[i]}:null}).filter(t);if(0===m.length)return l?.("no-resolve","No entities returned by the selector, skipping transformer"),[];let h=m.map(t=>({...t,violatedEntityIds:t.candidateEntityIds.filter(t=>f.includes(t))})).filter(t=>t.violatedEntityIds.length>0);return 0===h.length?(l?.("no-match",`No violations of type ${i.join(", ")} found for entities returned by the selector, skipping transformer`,{violatedEntityIds:f}),[]):h.map(t=>({...t.context,getViolated$Entities:()=>t.violatedEntityIds.map(t=>s.domain.get$Entity(t,p))}))})}),violation:a=>thenBuilder(n(!0),(n,s,l,u,d)=>{let{validity:p,state:f}=u.storeSystem.prepareStateEmissionWithoutTransformation(n,s,l);if(p.valid||"uncaught"===p.severity)return[];let m=p.entityViolations.map(t=>a.includes(t.violation.type)&&i(t.entityId)&&o.includes(e(t.entityId))?t.entityId:null).filter(t),h=r(n,s,l,u,d);return 0===m.length?[]:h.map(t=>({...t,getViolated$Entities:()=>m.map(t=>u.domain.get$Entity(t,f))}))})})});export const entityAwareCausesBuilder=(t,e)=>({...causesBuilder(e),self:{violation:i=>thenBuilder(n(!0),(n,r,o,a,s)=>{let{validity:l}=a.storeSystem.prepareStateEmissionWithoutTransformation(n,r,o);if(l.valid)return s?.("no-event","No violations found, skipping transformer",{validity:l}),[];if("uncaught"===l.severity)return s?.("no-event","Uncaught exception encountered while calculating new state, skipping transformer",{updates:n}),[];let u=new Set(l.entityViolations.filter(t=>i.includes(t.violation.type)).map(t=>t.entityId));if(0===u.size)return s?.("no-match",`No violations of type ${i.join(", ")} found for the ${t.join(", ")} entities, skipping transformer`,{entityIds:Array.from(u)}),[];let d=e(n,r,o,a,s),p=d.filter(t=>u.has(t.entityId));return 0===p.length&&s?.("no-match",`No violations of type ${i.join(", ")} found for entity ${d.map(t=>t.entityId).join(", ")}, skipping transformer`,{updates:n}),p})}});export const thenAndEntityAwareCausesBuilder=(t,e,i)=>({...tagBuilder(e,i),causes:entityAwareCausesBuilder(t,i)});export const thenAndCausesBuilder=(t,e)=>({...tagBuilder(t,e),causes:causesBuilder(e)});
1
+ import{isNonNullish as t}from"@salsita-ai/common/utils";import{domainEntityTypeFromId as e,isDomainEntityId as i}from"../../core/index.js";import{updateActions as n}from"./actions-builder.js";export const thenBuilder=(t,e)=>({then:t(e),and:i=>({then:t((t,n,r,o,a)=>{let s=e(t,n,r,o,a);if(!s.length)return[];let l=s.filter(i);return l.length||a?.("no-match","Custom `and` predicate did not match any update, skipping transformer"),l})})});export const tagBuilder=(t,e)=>({...thenBuilder(t,e),withTag:i=>thenBuilder(t,(t,n,r,o,a)=>{let s=e(t,n,r,o,a);if(!s.length)return[];let l=s.filter(t=>i.includes(t.update.updateTag));return l.length||a?.("no-match",`No matching update with tag ${i.join(", ")} found, skipping transformer`,{updates:t}),l})});export const causesBuilder=r=>({entity:o=>({withId:e=>({violation:i=>thenBuilder(n(!0),(n,o,a,s,l)=>{let u=r(n,o,a,s,l);if(!u.length)return[];let{validity:d,state:p}=s.storeSystem.prepareStateEmissionWithoutTransformation(n,o,a);if(d.valid||"uncaught"===d.severity)return l?.("no-event","No violations found, skipping transformer"),[];let f=d.entityViolations.filter(t=>i.includes(t.violation.type)).map(t=>t.entityId);if(0===f.length)return l?.("no-match",`No violations of type ${i.join(", ")} found, skipping transformer`),[];let m=u.map(t=>{let i=e(t);return i?{context:t,candidateEntityIds:Array.isArray(i)?i:[i]}:null}).filter(t);if(0===m.length)return l?.("no-resolve","No entities returned by the selector, skipping transformer"),[];let h=m.map(t=>({...t,violatedEntityIds:t.candidateEntityIds.filter(t=>f.includes(t))})).filter(t=>t.violatedEntityIds.length>0);return 0===h.length?(l?.("no-match",`No violations of type ${i.join(", ")} found for entities returned by the selector, skipping transformer`,{violatedEntityIds:f}),[]):h.map(t=>({...t.context,getViolated$Entities:()=>t.violatedEntityIds.map(t=>s.domain.get$Entity(t,p))}))})}),violation:a=>thenBuilder(n(!0),(n,s,l,u,d)=>{let{validity:p,state:f}=u.storeSystem.prepareStateEmissionWithoutTransformation(n,s,l);if(p.valid||"uncaught"===p.severity)return[];let m=p.entityViolations.map(t=>a.includes(t.violation.type)&&i(t.entityId)&&o.includes(e(t.entityId))?t.entityId:null).filter(t),h=r(n,s,l,u,d);return 0===m.length?[]:h.map(t=>({...t,getViolated$Entities:()=>m.map(t=>u.domain.get$Entity(t,f))}))})})});export const entityAwareCausesBuilder=(t,e)=>({...causesBuilder(e),self:{violation:i=>thenBuilder(n(!0),(n,r,o,a,s)=>{let{validity:l}=a.storeSystem.prepareStateEmissionWithoutTransformation(n,r,o);if(l.valid)return s?.("no-event","No violations found, skipping transformer",{validity:l}),[];if("uncaught"===l.severity)return s?.("no-event","Uncaught exception encountered while calculating new state, skipping transformer",{updates:n}),[];let u=new Set(l.entityViolations.filter(t=>i.includes(t.violation.type)).map(t=>t.entityId));if(0===u.size)return s?.("no-match",`No violations of type ${i.join(", ")} found for the ${t.join(", ")} entities, skipping transformer`,{entityIds:Array.from(u)}),[];let d=e(n,r,o,a,s),p=d.filter(t=>u.has(t.entityId));return 0===p.length&&s?.("no-match",`No violations of type ${i.join(", ")} found for entity ${d.map(t=>t.entityId).join(", ")}, skipping transformer`,{updates:n}),p})}});export const thenAndEntityAwareCausesBuilder=(t,e,i)=>({...tagBuilder(e,i),causes:entityAwareCausesBuilder(t,i)});export const thenAndCausesBuilder=(t,e)=>({...tagBuilder(t,e),causes:causesBuilder(e)});
@@ -1,9 +1,4 @@
1
- import type { navigationStateComponent } from '../../components/navigation-state-component.js';
2
- import type { toolStateComponent } from '../../components/tool-state-component.js';
3
- import type { ComponentModification, EphemeralRecordModification, StateUpdate } from '../../components/updates.js';
4
- import type { viewStateComponent } from '../../components/view-state-component.js';
5
- import type { SystemComponentTypeConstraint } from '../../core/component.js';
6
- import { type $DomainEntity, type DomainEntity, type DomainEntityId } from '../../core/model.js';
1
+ import { type $DomainEntity, type ComponentModification, type DomainEntity, type DomainEntityId, type EphemeralRecordModification, type StateUpdate, type SystemComponentTypeConstraint, type navigationStateComponent, type toolStateComponent, type viewStateComponent } from '../../core/index.js';
7
2
  import type { DragHandleComponent } from '../../system-components/drag-handle.js';
8
3
  import type { HotspotDragHandleComponent } from '../../system-components/hotspot-drag-handle.js';
9
4
  import type { StateEmissionKind } from '../store-system/store-system.js';
@@ -1 +1 @@
1
- import{domainEntityTypeFromId as t,isDomainEntityId as e}from"../../core/model.js";import{isNavigationUpdate as n,isToolUpdate as o,isViewUpdate as i}from"../navigation-system/navigation-updates.js";import{updateActions as r}from"./actions-builder.js";import{isAutoSnapUpdate as a}from"./auto-snap-transformer.js";import{createBaseContext as s}from"./context.js";import{entityBuilder as m}from"./entity-builder.js";import{tagBuilder as l,thenAndCausesBuilder as f,thenBuilder as d}from"./then-builder.js";let p=n=>({...l(r(!1),n),onEntity:o=>l(r(!1),(i,r,a,s,m)=>{let l=n(i,r,a,s,m);if(!l.length)return[];let f=l.filter(n=>e(n.update.entityId)&&o.includes(t(n.update.entityId)));return f.length||m?.("no-match",`No matching update for entity ${o.join(", ")} found, skipping transformer`,{updates:i}),f.map(t=>{let e=t.update.entityId;return{...t,getOld$Entity:()=>s.domain.get$Entity(e,r),getNew$Entity:()=>s.domain.get$Entity(e,t.getNewState()),entityId:e}})})}),g=(t,e,n)=>p(t()((t,o,i,r,a)=>{let m=t.filter(t=>"modifyComponent"===t.kind);if(0===m.length)return a?.("no-event","No component modification updates found, skipping transformer",{updates:t}),[];let l=m.filter(t=>e.includes(t.componentInstance.componentType));return 0===l.length?(a?.("no-match",`No modification updates for component ${e.join(", ")}, skipping transformer`,{updates:t}),[]):(void 0===n?l:l.filter(t=>n.includes(t.componentInstance.instanceName))).map(e=>({...s(r,o,i,t,a),update:e}))}));export const whenBuilder=t=>({component:e=>({modified:g(t,e),instance:n=>({modified:g(t,e,n)})}),update:e=>({fired:p(t()((t,n,o,i,r)=>{let a=t.filter(t=>e.includes(t.kind));return 0===a.length?(r?.("no-event",`No updates of kind ${e.join(", ")} found, skipping transformer`,{updates:t}),[]):a.map(e=>({...s(i,n,o,t,r),update:e}))}))}),entity:e=>m(e,t),snapped:()=>f(r(!0),t()((t,e,n,o,i)=>{let r=t.filter(a);if(0===r.length)return i?.("no-event","No auto-snap updates found, skipping transformer",{updates:t}),[];i?.("match",`Found ${r.length} auto-snap update(s), processing transformer`);let m=s(o,e,n,t,i);return r.map(t=>({...m,update:t,entityId:t.componentInstance.entityId,snapMatch:t.metadata.snapMatch,snapType:t.metadata.snapType}))})),navigated:e=>f(r(!0),t()((t,o,i,r,a)=>{let m=t.filter(n);if(0===m.length)return a?.("no-event","No navigation updates found, skipping transformer",{updates:t}),[];let l=m.filter(t=>{let n=t.writableState.activeState,i=r.navigationSystem.getActiveNavigationState(o);return(e?.to===void 0||e.to.includes(n))&&(e?.from===void 0||e.from.includes(i))});if(0===l.length)return a?.("no-match",`No navigation updates matching filter from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, skipping transformer`,{updates:t}),[];a?.("match",`Navigation state changed from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, processing transformer`,{updates:t});let f=s(r,o,i,t,a);return l.map(t=>{let e=t.writableState.activeState,n=r.navigationSystem.getActiveNavigationState(o);return{...f,update:t,getFrom:()=>n,getTo:()=>e}})})),viewChanged:e=>f(r(!0),t()((t,n,o,r,a)=>{let m=t.filter(i);if(0===m.length)return a?.("no-event","No view updates found, skipping transformer",{updates:t}),[];let l=m.filter(t=>{let o=t.writableState.activeState,i=r.navigationSystem.getActiveViewState(n);return(e?.to===void 0||e.to.includes(o))&&(e?.from===void 0||e.from.includes(i))});if(0===l.length)return a?.("no-match",`No view updates matching filter from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, skipping transformer`,{updates:t}),[];a?.("match",`View state changed from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, processing transformer`,{updates:t});let f=s(r,n,o,t,a);return l.map(t=>{let e=t.writableState.activeState,o=r.navigationSystem.getActiveViewState(n);return{...f,update:t,getFrom:()=>o,getTo:()=>e}})})),toolChanged:e=>f(r(!0),t()((t,n,i,r,a)=>{let m=t.filter(o);if(0===m.length)return a?.("no-event","No tool updates found, skipping transformer",{updates:t}),[];let l=m.filter(t=>{let o=t.writableState.activeState,i=r.navigationSystem.getActiveToolState(n);return(e?.to===void 0||e.to.includes(o))&&(e?.from===void 0||e.from.includes(i))});if(0===l.length)return a?.("no-match",`No tool updates matching filter from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, skipping transformer`,{updates:t}),[];a?.("match",`Tool state changed from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, processing transformer`,{updates:t});let f=s(r,n,i,t,a);return l.map(t=>{let e=t.writableState.activeState,o=r.navigationSystem.getActiveToolState(n);return{...f,update:t,getFrom:()=>o,getTo:()=>e}})}))});export const createTransformerBuilder=()=>({when:whenBuilder(()=>t=>t),onEmissionsOfKind:t=>({when:whenBuilder(()=>e=>(n,o,i,r,a)=>t.includes(i)?e(n,o,i,r,a):(a?.("no-event",`Emission kind ${i} is not supposed to trigger this transformer, only ${t.join(", ")} is, skipping transformer`,{updates:n}),[]))}),always:d(r(!1),(t,e,n,o,i)=>[s(o,e,n,t,i)])});
1
+ import{domainEntityTypeFromId as t,isDomainEntityId as e}from"../../core/index.js";import{isNavigationUpdate as n,isToolUpdate as o,isViewUpdate as i}from"../navigation-system/navigation-updates.js";import{updateActions as r}from"./actions-builder.js";import{isAutoSnapUpdate as a}from"./auto-snap-transformer.js";import{createBaseContext as s}from"./context.js";import{entityBuilder as m}from"./entity-builder.js";import{tagBuilder as f,thenAndCausesBuilder as l,thenBuilder as d}from"./then-builder.js";let p=n=>({...f(r(!1),n),onEntity:o=>f(r(!1),(i,r,a,s,m)=>{let f=n(i,r,a,s,m);if(!f.length)return[];let l=f.filter(n=>e(n.update.entityId)&&o.includes(t(n.update.entityId)));return l.length||m?.("no-match",`No matching update for entity ${o.join(", ")} found, skipping transformer`,{updates:i}),l.map(t=>{let e=t.update.entityId;return{...t,getOld$Entity:()=>s.domain.get$Entity(e,r),getNew$Entity:()=>s.domain.get$Entity(e,t.getNewState()),entityId:e}})})}),g=(t,e,n)=>p(t()((t,o,i,r,a)=>{let m=t.filter(t=>"modifyComponent"===t.kind);if(0===m.length)return a?.("no-event","No component modification updates found, skipping transformer",{updates:t}),[];let f=m.filter(t=>e.includes(t.componentInstance.componentType));return 0===f.length?(a?.("no-match",`No modification updates for component ${e.join(", ")}, skipping transformer`,{updates:t}),[]):(void 0===n?f:f.filter(t=>n.includes(t.componentInstance.instanceName))).map(e=>({...s(r,o,i,t,a),update:e}))}));export const whenBuilder=t=>({component:e=>({modified:g(t,e),instance:n=>({modified:g(t,e,n)})}),update:e=>({fired:p(t()((t,n,o,i,r)=>{let a=t.filter(t=>e.includes(t.kind));return 0===a.length?(r?.("no-event",`No updates of kind ${e.join(", ")} found, skipping transformer`,{updates:t}),[]):a.map(e=>({...s(i,n,o,t,r),update:e}))}))}),entity:e=>m(e,t),snapped:()=>l(r(!0),t()((t,e,n,o,i)=>{let r=t.filter(a);if(0===r.length)return i?.("no-event","No auto-snap updates found, skipping transformer",{updates:t}),[];i?.("match",`Found ${r.length} auto-snap update(s), processing transformer`);let m=s(o,e,n,t,i);return r.map(t=>({...m,update:t,entityId:t.componentInstance.entityId,snapMatch:t.metadata.snapMatch,snapType:t.metadata.snapType}))})),navigated:e=>l(r(!0),t()((t,o,i,r,a)=>{let m=t.filter(n);if(0===m.length)return a?.("no-event","No navigation updates found, skipping transformer",{updates:t}),[];let f=m.filter(t=>{let n=t.writableState.activeState,i=r.navigationSystem.getActiveNavigationState(o);return(e?.to===void 0||e.to.includes(n))&&(e?.from===void 0||e.from.includes(i))});if(0===f.length)return a?.("no-match",`No navigation updates matching filter from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, skipping transformer`,{updates:t}),[];a?.("match",`Navigation state changed from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, processing transformer`,{updates:t});let l=s(r,o,i,t,a);return f.map(t=>{let e=t.writableState.activeState,n=r.navigationSystem.getActiveNavigationState(o);return{...l,update:t,getFrom:()=>n,getTo:()=>e}})})),viewChanged:e=>l(r(!0),t()((t,n,o,r,a)=>{let m=t.filter(i);if(0===m.length)return a?.("no-event","No view updates found, skipping transformer",{updates:t}),[];let f=m.filter(t=>{let o=t.writableState.activeState,i=r.navigationSystem.getActiveViewState(n);return(e?.to===void 0||e.to.includes(o))&&(e?.from===void 0||e.from.includes(i))});if(0===f.length)return a?.("no-match",`No view updates matching filter from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, skipping transformer`,{updates:t}),[];a?.("match",`View state changed from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, processing transformer`,{updates:t});let l=s(r,n,o,t,a);return f.map(t=>{let e=t.writableState.activeState,o=r.navigationSystem.getActiveViewState(n);return{...l,update:t,getFrom:()=>o,getTo:()=>e}})})),toolChanged:e=>l(r(!0),t()((t,n,i,r,a)=>{let m=t.filter(o);if(0===m.length)return a?.("no-event","No tool updates found, skipping transformer",{updates:t}),[];let f=m.filter(t=>{let o=t.writableState.activeState,i=r.navigationSystem.getActiveToolState(n);return(e?.to===void 0||e.to.includes(o))&&(e?.from===void 0||e.from.includes(i))});if(0===f.length)return a?.("no-match",`No tool updates matching filter from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, skipping transformer`,{updates:t}),[];a?.("match",`Tool state changed from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, processing transformer`,{updates:t});let l=s(r,n,i,t,a);return f.map(t=>{let e=t.writableState.activeState,o=r.navigationSystem.getActiveToolState(n);return{...l,update:t,getFrom:()=>o,getTo:()=>e}})}))});export const createTransformerBuilder=()=>({when:whenBuilder(()=>t=>t),onEmissionsOfKind:t=>({when:whenBuilder(()=>e=>(n,o,i,r,a)=>t.includes(i)?e(n,o,i,r,a):(a?.("no-event",`Emission kind ${i} is not supposed to trigger this transformer, only ${t.join(", ")} is, skipping transformer`,{updates:n}),[]))}),always:d(r(!1),(t,e,n,o,i)=>[s(o,e,n,t,i)])});
@@ -1,5 +1,5 @@
1
1
  import type { ObservableWithLastValue } from '@salsita-ai/common/utils';
2
- import type { $DomainEntity, DomainEntity } from '../core/model.js';
2
+ import type { $DomainEntity, DomainEntity } from '../core/index.js';
3
3
  import type { DomainContextSelectors } from '../domain-runtime/domain-context/index.js';
4
4
  import type { ResetStateEmission, StateEmission } from './store-system/store-system.js';
5
5
  export interface UndoCapabilities {
@@ -1,7 +1,4 @@
1
- import type { FilteredOutComponentSnapshot, ManyComponentFilter, OneComponentFilter } from '../../components/component-reader-types.js';
2
- import { type ComponentSnapshot, type SystemComponentTypeConstraint } from '../../core/component.js';
3
- import type { DomainEntity, EntityId } from '../../core/model.js';
4
- import type { DomainState } from '../../core/state.js';
1
+ import { type ComponentSnapshot, type DomainEntity, type DomainState, type EntityId, type FilteredOutComponentSnapshot, type ManyComponentFilter, type OneComponentFilter, type SystemComponentTypeConstraint } from '../../core/index.js';
5
2
  import type { DomainContextSelectors } from './selectors.js';
6
3
  export interface ComponentReaderContext {
7
4
  readonly selectors: DomainContextSelectors;
@@ -1 +1 @@
1
- import{getComponentSystemFilterState as e,isComponentActive as n}from"../../components/system-component-filter.js";import{domainEntityTypeFromId as t,isDomainEntityId as o}from"../../core/model.js";let i=class InternalFilter{componentTypes;entityIds;instanceNames;constructor(e){"entityId"in e&&void 0!==e.entityId&&(this.entityIds=new Set([e.entityId])),"entityIds"in e&&void 0!==e.entityIds&&(this.entityIds=new Set(e.entityIds)),"instanceName"in e&&void 0!==e.instanceName&&(this.instanceNames=new Set([e.instanceName])),"instanceNames"in e&&void 0!==e.instanceNames&&(this.instanceNames=new Set(e.instanceNames)),"componentType"in e&&void 0!==e.componentType&&(this.componentTypes=new Set([e.componentType])),"componentTypes"in e&&void 0!==e.componentTypes&&(this.componentTypes=new Set(e.componentTypes))}toString(){let e=this.instanceNames&&Array.from(this.instanceNames).join(", "),n=this.componentTypes&&Array.from(this.componentTypes).map(e=>e.name).join(", "),t=this.entityIds&&Array.from(this.entityIds).map(e=>`#${String(e)}`).join(", ");return[e?`instance ${e} of`:void 0,n?`component ${n}`:void 0,t?`on entity ${t}`:void 0].filter(Boolean).join(" ")}},s=new WeakMap;export class ComponentReader{_context;constructor(e){this._context=e}_resolveDynamicInstanceName=(e,n,t,o)=>{let i=o.dynamicInstanceNames.get(e)?.get(n);if(!i)return null;for(let e of i)if(t.startsWith(`${e}_`))return e;return null};_readComponents(i,a,c,m=!1){let p=e(a),r=this._context.selectors.getExpressionContext(),l=this._context.selectors.getComponentReaderIndexes(),d=[],y=void 0!==i.entityIds?[]:void 0;if(void 0!==i.entityIds)for(let e of i.entityIds)o(e)&&y?.push(e);if(void 0===y||y.length>0){let e=y??a.entities,o=void 0!==y?new Map:void 0;for(let y of e){let e="string"==typeof y?y:y.id;if(void 0!==o){if(o.has(e))continue;o.set(e,!0)}let f="string"==typeof y?t(e):y.type;for(let t of i.componentTypes??l.allComponentTypes.get(f)??[])for(let o of i.instanceNames??l.allComponentInstanceNames.get(f)?.get(t)??[]){let i=l.opticMap.get(f)?.get(t)?.get(o),y=i?null:this._resolveDynamicInstanceName(f,t,o,l),h=y?l.opticMap.get(f)?.get(t)?.get(y):void 0,I=i??h;if(!I)continue;let u=0===I.navigationFilters.length||n(p,I.navigationFilters,e,a,r,m);if(!0!==u){m&&d.push({componentInstance:{componentType:t,entityId:e,instanceName:o},filteredOut:!0,filterState:p,filterContext:{mode:r.mode,role:r.role},mismatchReasons:u});continue}if("simple"===I.kind){let n=I.read(e,a,r),t=s.get(n);if(!t||t.componentInstance.entityId!==e||t.componentInstance.componentType!==I.componentType||t.componentInstance.instanceName!==I.instanceName){let o={state:n,componentInstance:{componentType:I.componentType,entityId:e,instanceName:I.instanceName}};s.set(n,o),t=o}if(d.push(t),c)return d}else{let n=I.read(e,a,r),t=new Set;for(let i of n){let n=I.instanceName+`_${i.key}`;if(null!==y&&o!==n)continue;if(t.has(n))throw Error(`Cannot read dynamic component instance ${I.instanceName} for component ${I.componentType.name} on entity ${e} because it emitted duplicate compound instance ${n}. Make emitted keys unique for this component instance.`);t.add(n);let a=s.get(i);if(!a||a.componentInstance.entityId!==e||a.componentInstance.componentType!==I.componentType||a.componentInstance.instanceName!==n){let t={state:function(e){let n={};for(let t in e)"key"!==t&&(n[t]=e[t]);return n}(i),componentInstance:{componentType:I.componentType,entityId:e,instanceName:n}};s.set(i,t),a=t}if(d.push(a),c)return d}}}}}for(let e of a.ephemeralRecords)if((void 0===i.entityIds||i.entityIds.has(e.componentInstance.entityId))&&(void 0===i.componentTypes||i.componentTypes.has(e.componentInstance.componentType))&&(void 0===i.instanceNames||i.instanceNames.has(e.componentInstance.instanceName))&&(d.push(e),c))break;return d}readOneComponent(e,n){let t=new i(e),o=this._readComponents(t,n,!1);if(o.length>1)throw Error(`Expected component ${e.componentType.name} to be attached only once to entity #${String(e.entityId)}, but found ${o.length} instances`);return o.length>0?o[0]:null}readManyComponents(e,n){let t=new i(e);return this._readComponents(t,n,!1)}readFirstComponent(e,n){let t=new i(e),o=this._readComponents(t,n,!0);return o.length>0?o[0]:null}readFirstRootComponent(e,n){let t=new i({...e,entityIds:[n.rootEntityId]}),o=this._readComponents(t,n,!0);return o.length>0?o[0]:null}readOneComponentOrThrow(e,n){let t=this.readOneComponent(e,n);if(null===t){let n=new i(e);throw Error(`Cannot read ${n.toString()} because such component is not attached`)}return t}isComponentTypeAttached=e=>{let n,i,s,{componentTypes:a,instanceNames:c,entityTypes:m}=("componentTypes"in e&&(n=e.componentTypes),"componentType"in e&&e.componentType&&(n=[e.componentType]),"instanceNames"in e&&(i=e.instanceNames),"instanceName"in e&&e.instanceName&&(i=[e.instanceName]),"entityIds"in e&&e.entityIds&&(s=e.entityIds.filter(o).map(e=>t(e))),"entityId"in e&&e.entityId&&(s=o(e.entityId)?[t(e.entityId)]:[]),{componentTypes:n,instanceNames:i,entityTypes:s}),p=this._context.selectors.getComponentReaderIndexes();for(let e of m??Array.from(p.allComponentTypes.keys()))for(let n of a??p.allComponentTypes.get(e)??[])for(let t of c??p.allComponentInstanceNames.get(e)?.get(n)??[])if(p.opticMap.get(e)?.get(n)?.get(t)||this._resolveDynamicInstanceName(e,n,t,p))return!0;return!1};peekManyComponents(e,n){let t=new i(e);return this._readComponents(t,n,!1,!0)}}
1
+ import{domainEntityTypeFromId as e,getComponentSystemFilterState as n,isComponentActive as t,isDomainEntityId as o}from"../../core/index.js";let i=class InternalFilter{componentTypes;entityIds;instanceNames;constructor(e){"entityId"in e&&void 0!==e.entityId&&(this.entityIds=new Set([e.entityId])),"entityIds"in e&&void 0!==e.entityIds&&(this.entityIds=new Set(e.entityIds)),"instanceName"in e&&void 0!==e.instanceName&&(this.instanceNames=new Set([e.instanceName])),"instanceNames"in e&&void 0!==e.instanceNames&&(this.instanceNames=new Set(e.instanceNames)),"componentType"in e&&void 0!==e.componentType&&(this.componentTypes=new Set([e.componentType])),"componentTypes"in e&&void 0!==e.componentTypes&&(this.componentTypes=new Set(e.componentTypes))}toString(){let e=this.instanceNames&&Array.from(this.instanceNames).join(", "),n=this.componentTypes&&Array.from(this.componentTypes).map(e=>e.name).join(", "),t=this.entityIds&&Array.from(this.entityIds).map(e=>`#${String(e)}`).join(", ");return[e?`instance ${e} of`:void 0,n?`component ${n}`:void 0,t?`on entity ${t}`:void 0].filter(Boolean).join(" ")}},s=new WeakMap;export class ComponentReader{_context;constructor(e){this._context=e}_resolveDynamicInstanceName=(e,n,t,o)=>{let i=o.dynamicInstanceNames.get(e)?.get(n);if(!i)return null;for(let e of i)if(t.startsWith(`${e}_`))return e;return null};_readComponents(i,a,c,p=!1){let m=n(a),r=this._context.selectors.getExpressionContext(),l=this._context.selectors.getComponentReaderIndexes(),d=[],y=void 0!==i.entityIds?[]:void 0;if(void 0!==i.entityIds)for(let e of i.entityIds)o(e)&&y?.push(e);if(void 0===y||y.length>0){let n=y??a.entities,o=void 0!==y?new Map:void 0;for(let y of n){let n="string"==typeof y?y:y.id;if(void 0!==o){if(o.has(n))continue;o.set(n,!0)}let f="string"==typeof y?e(n):y.type;for(let e of i.componentTypes??l.allComponentTypes.get(f)??[])for(let o of i.instanceNames??l.allComponentInstanceNames.get(f)?.get(e)??[]){let i=l.opticMap.get(f)?.get(e)?.get(o),y=i?null:this._resolveDynamicInstanceName(f,e,o,l),h=y?l.opticMap.get(f)?.get(e)?.get(y):void 0,I=i??h;if(!I)continue;let u=0===I.navigationFilters.length||t(m,I.navigationFilters,n,a,r,p);if(!0!==u){p&&d.push({componentInstance:{componentType:e,entityId:n,instanceName:o},filteredOut:!0,filterState:m,filterContext:{mode:r.mode,role:r.role},mismatchReasons:u});continue}if("simple"===I.kind){let e=I.read(n,a,r),t=s.get(e);if(!t||t.componentInstance.entityId!==n||t.componentInstance.componentType!==I.componentType||t.componentInstance.instanceName!==I.instanceName){let o={state:e,componentInstance:{componentType:I.componentType,entityId:n,instanceName:I.instanceName}};s.set(e,o),t=o}if(d.push(t),c)return d}else{let e=I.read(n,a,r),t=new Set;for(let i of e){let e=I.instanceName+`_${i.key}`;if(null!==y&&o!==e)continue;if(t.has(e))throw Error(`Cannot read dynamic component instance ${I.instanceName} for component ${I.componentType.name} on entity ${n} because it emitted duplicate compound instance ${e}. Make emitted keys unique for this component instance.`);t.add(e);let a=s.get(i);if(!a||a.componentInstance.entityId!==n||a.componentInstance.componentType!==I.componentType||a.componentInstance.instanceName!==e){let t={state:function(e){let n={};for(let t in e)"key"!==t&&(n[t]=e[t]);return n}(i),componentInstance:{componentType:I.componentType,entityId:n,instanceName:e}};s.set(i,t),a=t}if(d.push(a),c)return d}}}}}for(let e of a.ephemeralRecords)if((void 0===i.entityIds||i.entityIds.has(e.componentInstance.entityId))&&(void 0===i.componentTypes||i.componentTypes.has(e.componentInstance.componentType))&&(void 0===i.instanceNames||i.instanceNames.has(e.componentInstance.instanceName))&&(d.push(e),c))break;return d}readOneComponent(e,n){let t=new i(e),o=this._readComponents(t,n,!1);if(o.length>1)throw Error(`Expected component ${e.componentType.name} to be attached only once to entity #${String(e.entityId)}, but found ${o.length} instances`);return o.length>0?o[0]:null}readManyComponents(e,n){let t=new i(e);return this._readComponents(t,n,!1)}readFirstComponent(e,n){let t=new i(e),o=this._readComponents(t,n,!0);return o.length>0?o[0]:null}readFirstRootComponent(e,n){let t=new i({...e,entityIds:[n.rootEntityId]}),o=this._readComponents(t,n,!0);return o.length>0?o[0]:null}readOneComponentOrThrow(e,n){let t=this.readOneComponent(e,n);if(null===t){let n=new i(e);throw Error(`Cannot read ${n.toString()} because such component is not attached`)}return t}isComponentTypeAttached=n=>{let t,i,s,{componentTypes:a,instanceNames:c,entityTypes:p}=("componentTypes"in n&&(t=n.componentTypes),"componentType"in n&&n.componentType&&(t=[n.componentType]),"instanceNames"in n&&(i=n.instanceNames),"instanceName"in n&&n.instanceName&&(i=[n.instanceName]),"entityIds"in n&&n.entityIds&&(s=n.entityIds.filter(o).map(n=>e(n))),"entityId"in n&&n.entityId&&(s=o(n.entityId)?[e(n.entityId)]:[]),{componentTypes:t,instanceNames:i,entityTypes:s}),m=this._context.selectors.getComponentReaderIndexes();for(let e of p??Array.from(m.allComponentTypes.keys()))for(let n of a??m.allComponentTypes.get(e)??[])for(let t of c??m.allComponentInstanceNames.get(e)?.get(n)??[])if(m.opticMap.get(e)?.get(n)?.get(t)||this._resolveDynamicInstanceName(e,n,t,m))return!0;return!1};peekManyComponents(e,n){let t=new i(e);return this._readComponents(t,n,!1,!0)}}
@@ -1,6 +1,4 @@
1
- import type { DomainComponentOptic } from '../../components/index.js';
2
- import { type AnyDomain } from '../../core/domain.js';
3
- import type { AnyDomainFactory, AnyExpressionContext, DomainEntity, DomainMode, SystemComponentTypeConstraint } from '../../core/index.js';
1
+ import { type AnyDomain, type AnyDomainFactory, type AnyExpressionContext, type DomainComponentOptic, type DomainEntity, type DomainMode, type SystemComponentTypeConstraint } from '../../core/index.js';
4
2
  import { type AnyActionSystem } from '../../domain-context/action-system/action-system.js';
5
3
  import { type AnyDimensionSystem } from '../../domain-context/dimension-system/dimension-system.js';
6
4
  import type { AnyDomainContextSystems } from '../../domain-context/domain-context-systems.js';
@@ -1 +1 @@
1
- import{createSelector as e}from"@salsita-ai/common/utils";import{prepareActionImplementations as t}from"../../actions/prepare-action-implementations.js";import{Domain as n}from"../../core/domain.js";import{createInitialDomainState as o}from"../../core/state.js";import{ActionSystem as i}from"../../domain-context/action-system/action-system.js";import{DimensionSystem as a}from"../../domain-context/dimension-system/dimension-system.js";import{NavigationSystem as s}from"../../domain-context/navigation-system/navigation-system.js";import{RecipeCookerSystem as r}from"../../domain-context/recipe-system/recipe-cooker-system.js";import{StoreSystem as c}from"../../domain-context/store-system/store-system.js";import{UndoSystem as m}from"../../domain-context/undo-system.js";import{prepareDomainExpressions as l}from"../../expressions/index.js";import{BlenderProjections as d,CollisionProjections as g,CompositionProjections as f,ConstraintProjections as p,PositionProjections as u,ProjectedEntitiesProjections as y,SnappingProjections as w,ValidationProjections as h}from"../../projections/index.js";import{SketchingProjections as S}from"../../sketching/sketching-projections.js";import{requireAccessService as x}from"../access/index.js";import{ComponentReader as j}from"./component-reader.js";import{DomainContext as C}from"./domain-context.js";let D=e.withTypes(),v=[],I={},P={role:"admin",data:I},M=e=>{if(null!==e)return e;throw Error("Cannot read the session role and data because the domain session context is not set. The session context is written into the domain runtime by the session lifecycle after authentication. Move this read into the loaded session lifecycle.")};export const createDomainContextSelectors=e=>{let{applicationType:A,getState:R,actions:E,specSelectors:T,accessSelectors:b,webComponentSelectors:k,domainDataSelectors:$,sessionContextSelectors:N,domainServicesSelectors:z,environmentSelectors:L,getExtensionSystems:V}=e,B="configurator"===A?T.selectConfiguratorSpec:T.selectAdminSpec,F="configurator"===A?b.selectConfiguratorRawAccessService:b.selectAdminRawAccessService,W=D.leaf(e=>e.domainContext[A]),_=D([W],e=>e.initializationContext),q=D([_],e=>{if(null===e)throw Error(`Domain lifecycle context is not available for ${A}! Read it from an active domain lifecycle.`);return e}),O=D([W],e=>e.executionMode),U=D([W],e=>e.isInitialized),G=D([B],e=>e.factory),H=D([B],e=>e.expressions),J=D([B],e=>e.actions),K=D([B],e=>e.actionImplementations),Q=D([J,K],t),X=D([B],e=>e.$entityReflections),Y=D([H,X],(e,t)=>l({expressions:e,$entityReflections:t})),Z=D([B],e=>e.modelVersion),ee=D([B],e=>e.aliasMap),et=D([B],e=>e.allowedRootEntityTypes),en=D([B],e=>e.entityReflections),eo=D([B],e=>e.migrate),ei=D([O,k.selectReadonly,F],(e,t,n)=>"finalize"===e?"finalize":x(A,n).accessInfo.viewMode||t?"read":"owner"),ea=D([F],e=>e?.configurationId??null),es="configurator"===A?N.selectSessionContext:D([],()=>P),er=D([es],e=>e?.role??null),ec=D([es],e=>e?.data??null),em=D([D.leaf(e=>e.loadedData)],e=>"configurator"===A?e.configuratorLoadedData:e.adminLoadedData),el=D([em],e=>e?.schemaIdentity??null),ed=D([em,G],(e,t)=>{if(null===e)return"coherent";let n=e.schemaIdentity;return void 0===n?"missing-stamp":n===t?"coherent":"schema-mismatch"}),eg=D([ea,er,ec,el,ed],(e,t,n,o,i)=>null===e||null===t||null===n||null===o||"coherent"!==i?null:{configurationId:e,role:t,schemaIdentity:o,sessionData:n}),ef=D([F,k.selectReadonly],(e,t)=>e?.accessInfo.viewMode===!0||t),ep=D([eg,_,U,ef],(e,t,n,o)=>{let i=null!==e&&null!==t&&n&&t.configurationId===e.configurationId&&t.role===e.role&&t.schemaIdentity===e.schemaIdentity&&t.sessionData===e.sessionData;return{identity:e,isCurrent:i,isViewMode:o}}),eu=D([B],e=>e.componentOptics),ey=D([eu],e=>(e=>{let t=new Map,n=new Map,o=new Map,i=new Map;for(let n of e)for(let e of n.entityTypes){let o=t.get(e);o||(o=new Map,t.set(e,o));let a=o.get(n.componentType);if(a||(a=new Map,o.set(n.componentType,a)),a.has(n.instanceName))throw Error(`Component instance ${n.instanceName} already exists for type ${n.componentType.name} in entity ${e}. This is likely a bug in the component definition! InstanceNames must be unique within an entity and component.`);if(a.set(n.instanceName,n),"dynamic"===n.kind){let t=i.get(e);t||(t=new Map,i.set(e,t));let o=t.get(n.componentType)??[],a=o.find(e=>{var t;return t=n.instanceName,e.startsWith(`${t}_`)||t.startsWith(`${e}_`)});if(a)throw Error(`Cannot register dynamic component instance ${n.instanceName} for component ${n.componentType.name} on entity ${e} because it overlaps with dynamic instance ${a}. Rename one dynamic instance so compound names cannot be ambiguous.`);t.set(n.componentType,[...o,n.instanceName])}}for(let[e,i]of t.entries()){n.set(e,new Set(i.keys()));let t=new Map;for(let[n,a]of(o.set(e,t),i.entries()))t.set(n,new Set(a.keys()))}return{opticMap:t,allComponentTypes:n,allComponentInstanceNames:o,dynamicInstanceNames:i}})(e)),ew=D([ey,Y,et],(e,t,n)=>({componentReaderIndexes:e,domainExpressions:t,allowedRootEntityTypes:n})),eh=D([B],e=>e.navigationStates),eS=D([B],e=>e.viewStates),ex="configurator"===A?D([T.selectConfiguratorSpec],e=>e.toolStates):D([],()=>v),ej="configurator"===A?D([T.selectConfiguratorSpec],e=>e.exportStates):D([],()=>v),eC="configurator"===A?D([T.selectConfiguratorSpec],e=>e.createTransformers):D([],()=>void 0),eD=D([em],e=>{if(null===e)throw Error(`Loaded data is not available for ${A}! Loaded data is written after the configuration fetch succeeds and before the domain context initialization starts.`);return e}),ev=D([eD,G],(e,t)=>o(t.validateAndMigrateState(e.initialEntities,e.modelVersion),e.rootEntityType)),eI="configurator"===A?$.selectConfiguratorFrontendData:$.selectAdminFrontendData,eP="configurator"===A?$.selectConfiguratorBackendData:$.selectAdminBackendData,eM="configurator"===A?$.selectConfiguratorPublishedData:$.selectAdminPublishedData,eA="configurator"===A?D([N.selectSessionContext],e=>M(e).role):D([],()=>"admin"),eR="configurator"===A?D([N.selectSessionContext],e=>M(e).data):D([],()=>I),eE=D([ea,ei,eA,eR,eD],(e,t,n,o,i)=>({configurationId:e,mode:t,role:n,schemaIdentity:i.schemaIdentity,sessionData:o})),eT=D([q],e=>e.mode),eb=D([q],e=>{let t=e.configurationId;if(null===t)throw Error(`Configuration id is not available for ${A}! Read it from an active interactive domain lifecycle.`);return t}),ek=D([q],e=>e.role),e$=D([q],e=>e.sessionData),eN=D([eT,ek,e$,eI,eP,eM,eo],(e,t,n,o,i,a,s)=>({mode:e,role:t,sessionData:n,frontendData:o,backendData:i,publishedData:a,migrate:s,domain:eL,componentReader:eV,positionProjections:eq,sketchingProjections:e_,collisionProjections:eO,constraintProjections:eG,snappingProjections:eU,projectedEntitiesProjections:eH})),ez={selectApplicationSpec:B,selectRawAccessService:F,selectDomainContextState:W,selectInitializationContext:_,selectActiveInitializationContext:q,selectExecutionMode:O,selectIsInitialized:U,selectFactory:G,selectSpecExpressions:H,select$SpecEntityReflections:X,selectDomainExpressions:Y,selectModelVersion:Z,selectAliasMap:ee,selectAllowedRootEntityTypes:et,selectEntityReflections:en,selectMigrate:eo,selectLatestMode:ei,selectLatestConfigurationId:ea,selectLatestSessionContext:es,selectLatestRoleOrNull:er,selectLatestSessionDataOrNull:ec,selectLatestSchemaIdentity:el,selectSchemaCoherence:ed,selectInitializationIdentity:eg,selectIsViewMode:ef,selectInitializationState:ep,selectComponentOptics:eu,selectComponentReaderIndexes:ey,selectStoreRuntimeDependencies:ew,selectNavigationStates:eh,selectViewStates:eS,selectToolStates:ex,selectExportStates:ej,selectCreateTransformers:eC,selectLatestLoadedData:em,selectLoadedData:eD,selectInitialDomainState:ev,selectFrontendData:eI,selectBackendData:eP,selectPublishedData:eM,selectLatestRole:eA,selectLatestSessionData:eR,selectNextInitializationContext:eE,selectActiveMode:eT,selectActiveConfigurationId:eb,selectActiveRole:ek,selectActiveSessionData:e$,selectExpressionContext:eN,getInitializationContext:()=>_(R()),getInitializationState:()=>ep(R()),getNextInitializationContext:()=>eE(R()),getLatestLoadedData:()=>em(R()),getSchemaCoherence:()=>ed(R()),getActiveConfigurationId:()=>eb(R()),getFactory:()=>G(R()),getDomainExpressions:()=>Y(R()),getActionDefinitions:()=>J(R()),getActionImplementations:()=>Q(R()),getModelVersion:()=>Z(R()),getAliasMap:()=>ee(R()),getAllowedRootEntityTypes:()=>et(R()),getEntityReflections:()=>en(R()),getMigrate:()=>eo(R()),getActiveMode:()=>eT(R()),getIsInitialized:()=>U(R()),getComponentReaderIndexes:()=>ey(R()),getStoreRuntimeDependencies:()=>ew(R()),getNavigationStates:()=>eh(R()),getViewStates:()=>eS(R()),getToolStates:()=>ex(R()),getExportStates:()=>ej(R()),getCreateTransformers:()=>eC(R()),getLoadedData:()=>eD(R()),getInitialDomainState:()=>ev(R()),getFrontendData:()=>eI(R()),getBackendData:()=>eP(R()),getPublishedData:()=>eM(R()),getActiveRole:()=>ek(R()),getActiveSessionData:()=>e$(R()),getDomain:()=>eL,getComponentReader:()=>eV,getCompositionProjections:()=>eB,getDimensionSystem:()=>eF,getValidationProjections:()=>eW,getSketchingProjections:()=>e_,getPositionProjections:()=>eq,getCollisionProjections:()=>eO,getSnappingProjections:()=>eU,getConstraintProjections:()=>eG,getProjectedEntitiesProjections:()=>eH,getStoreSystem:()=>eJ,getNavigationSystem:()=>eK,getUndoSystem:()=>eQ,getRecipeCookerSystem:()=>eX,getActionSystem:()=>eY,getBlenderProjections:()=>eZ,getExpressionContext:()=>eN(R()),getDomainSystems:function(){return e0},getDomainContext:function(){return e1}},eL=new n({selectors:ez}),eV=new j({selectors:ez}),eB=new f({selectors:ez}),eF=new a({selectors:ez}),eW=new h({selectors:ez}),e_=new S({selectors:ez}),eq=new u({selectors:ez}),eO=new g({selectors:ez}),eU=new w({selectors:ez}),eG=new p({selectors:ez}),eH=new y({selectors:ez}),eJ=new c({selectors:ez,domainServicesSelectors:z,environmentSelectors:L}),eK=new s({selectors:ez,domainServicesSelectors:z}),eQ=new m({selectors:ez}),eX=new r({selectors:ez}),eY=new i({selectors:ez}),eZ=new d({selectors:ez,domainServicesSelectors:z}),e0={domainContextSelectors:ez,domain:eL,componentReader:eV,compositionProjections:eB,blenderProjections:eZ,validationProjections:eW,storeSystem:eJ,navigationSystem:eK,dimensionSystem:eF,undoSystem:eQ,recipeCooker:eX,actionSystem:eY,sketchingProjections:e_,collisionProjections:eO,positionProjections:eq,snappingProjections:eU,projectedEntitiesProjections:eH,constraintProjections:eG},e1=new C({selectors:ez,actions:E,getExtensionSystems:V});return ez};
1
+ import{createSelector as e}from"@salsita-ai/common/utils";import{prepareActionImplementations as t}from"../../actions/prepare-action-implementations.js";import{Domain as n,createInitialDomainState as o,prepareDomainExpressions as i}from"../../core/index.js";import{ActionSystem as a}from"../../domain-context/action-system/action-system.js";import{DimensionSystem as s}from"../../domain-context/dimension-system/dimension-system.js";import{NavigationSystem as r}from"../../domain-context/navigation-system/navigation-system.js";import{RecipeCookerSystem as c}from"../../domain-context/recipe-system/recipe-cooker-system.js";import{StoreSystem as m}from"../../domain-context/store-system/store-system.js";import{UndoSystem as l}from"../../domain-context/undo-system.js";import{BlenderProjections as d,CollisionProjections as g,CompositionProjections as f,ConstraintProjections as p,PositionProjections as u,ProjectedEntitiesProjections as y,SnappingProjections as w,ValidationProjections as h}from"../../projections/index.js";import{SketchingProjections as S}from"../../sketching/sketching-projections.js";import{requireAccessService as x}from"../access/index.js";import{ComponentReader as j}from"./component-reader.js";import{DomainContext as C}from"./domain-context.js";let D=e.withTypes(),v=[],I={},P={role:"admin",data:I},M=e=>{if(null!==e)return e;throw Error("Cannot read the session role and data because the domain session context is not set. The session context is written into the domain runtime by the session lifecycle after authentication. Move this read into the loaded session lifecycle.")};export const createDomainContextSelectors=e=>{let{applicationType:A,getState:R,actions:E,specSelectors:T,accessSelectors:b,webComponentSelectors:k,domainDataSelectors:$,sessionContextSelectors:N,domainServicesSelectors:z,environmentSelectors:L,getExtensionSystems:V}=e,B="configurator"===A?T.selectConfiguratorSpec:T.selectAdminSpec,F="configurator"===A?b.selectConfiguratorRawAccessService:b.selectAdminRawAccessService,W=D.leaf(e=>e.domainContext[A]),_=D([W],e=>e.initializationContext),q=D([_],e=>{if(null===e)throw Error(`Domain lifecycle context is not available for ${A}! Read it from an active domain lifecycle.`);return e}),O=D([W],e=>e.executionMode),U=D([W],e=>e.isInitialized),G=D([B],e=>e.factory),H=D([B],e=>e.expressions),J=D([B],e=>e.actions),K=D([B],e=>e.actionImplementations),Q=D([J,K],t),X=D([B],e=>e.$entityReflections),Y=D([H,X],(e,t)=>i({expressions:e,$entityReflections:t})),Z=D([B],e=>e.modelVersion),ee=D([B],e=>e.aliasMap),et=D([B],e=>e.allowedRootEntityTypes),en=D([B],e=>e.entityReflections),eo=D([B],e=>e.migrate),ei=D([O,k.selectReadonly,F],(e,t,n)=>"finalize"===e?"finalize":x(A,n).accessInfo.viewMode||t?"read":"owner"),ea=D([F],e=>e?.configurationId??null),es="configurator"===A?N.selectSessionContext:D([],()=>P),er=D([es],e=>e?.role??null),ec=D([es],e=>e?.data??null),em=D([D.leaf(e=>e.loadedData)],e=>"configurator"===A?e.configuratorLoadedData:e.adminLoadedData),el=D([em],e=>e?.schemaIdentity??null),ed=D([em,G],(e,t)=>{if(null===e)return"coherent";let n=e.schemaIdentity;return void 0===n?"missing-stamp":n===t?"coherent":"schema-mismatch"}),eg=D([ea,er,ec,el,ed],(e,t,n,o,i)=>null===e||null===t||null===n||null===o||"coherent"!==i?null:{configurationId:e,role:t,schemaIdentity:o,sessionData:n}),ef=D([F,k.selectReadonly],(e,t)=>e?.accessInfo.viewMode===!0||t),ep=D([eg,_,U,ef],(e,t,n,o)=>{let i=null!==e&&null!==t&&n&&t.configurationId===e.configurationId&&t.role===e.role&&t.schemaIdentity===e.schemaIdentity&&t.sessionData===e.sessionData;return{identity:e,isCurrent:i,isViewMode:o}}),eu=D([B],e=>e.componentOptics),ey=D([eu],e=>(e=>{let t=new Map,n=new Map,o=new Map,i=new Map;for(let n of e)for(let e of n.entityTypes){let o=t.get(e);o||(o=new Map,t.set(e,o));let a=o.get(n.componentType);if(a||(a=new Map,o.set(n.componentType,a)),a.has(n.instanceName))throw Error(`Component instance ${n.instanceName} already exists for type ${n.componentType.name} in entity ${e}. This is likely a bug in the component definition! InstanceNames must be unique within an entity and component.`);if(a.set(n.instanceName,n),"dynamic"===n.kind){let t=i.get(e);t||(t=new Map,i.set(e,t));let o=t.get(n.componentType)??[],a=o.find(e=>{var t;return t=n.instanceName,e.startsWith(`${t}_`)||t.startsWith(`${e}_`)});if(a)throw Error(`Cannot register dynamic component instance ${n.instanceName} for component ${n.componentType.name} on entity ${e} because it overlaps with dynamic instance ${a}. Rename one dynamic instance so compound names cannot be ambiguous.`);t.set(n.componentType,[...o,n.instanceName])}}for(let[e,i]of t.entries()){n.set(e,new Set(i.keys()));let t=new Map;for(let[n,a]of(o.set(e,t),i.entries()))t.set(n,new Set(a.keys()))}return{opticMap:t,allComponentTypes:n,allComponentInstanceNames:o,dynamicInstanceNames:i}})(e)),ew=D([ey,Y,et],(e,t,n)=>({componentReaderIndexes:e,domainExpressions:t,allowedRootEntityTypes:n})),eh=D([B],e=>e.navigationStates),eS=D([B],e=>e.viewStates),ex="configurator"===A?D([T.selectConfiguratorSpec],e=>e.toolStates):D([],()=>v),ej="configurator"===A?D([T.selectConfiguratorSpec],e=>e.exportStates):D([],()=>v),eC="configurator"===A?D([T.selectConfiguratorSpec],e=>e.createTransformers):D([],()=>void 0),eD=D([em],e=>{if(null===e)throw Error(`Loaded data is not available for ${A}! Loaded data is written after the configuration fetch succeeds and before the domain context initialization starts.`);return e}),ev=D([eD,G],(e,t)=>o(t.validateAndMigrateState(e.initialEntities,e.modelVersion),e.rootEntityType)),eI="configurator"===A?$.selectConfiguratorFrontendData:$.selectAdminFrontendData,eP="configurator"===A?$.selectConfiguratorBackendData:$.selectAdminBackendData,eM="configurator"===A?$.selectConfiguratorPublishedData:$.selectAdminPublishedData,eA="configurator"===A?D([N.selectSessionContext],e=>M(e).role):D([],()=>"admin"),eR="configurator"===A?D([N.selectSessionContext],e=>M(e).data):D([],()=>I),eE=D([ea,ei,eA,eR,eD],(e,t,n,o,i)=>({configurationId:e,mode:t,role:n,schemaIdentity:i.schemaIdentity,sessionData:o})),eT=D([q],e=>e.mode),eb=D([q],e=>{let t=e.configurationId;if(null===t)throw Error(`Configuration id is not available for ${A}! Read it from an active interactive domain lifecycle.`);return t}),ek=D([q],e=>e.role),e$=D([q],e=>e.sessionData),eN=D([eT,ek,e$,eI,eP,eM,eo],(e,t,n,o,i,a,s)=>({mode:e,role:t,sessionData:n,frontendData:o,backendData:i,publishedData:a,migrate:s,domain:eL,componentReader:eV,positionProjections:eq,sketchingProjections:e_,collisionProjections:eO,constraintProjections:eG,snappingProjections:eU,projectedEntitiesProjections:eH})),ez={selectApplicationSpec:B,selectRawAccessService:F,selectDomainContextState:W,selectInitializationContext:_,selectActiveInitializationContext:q,selectExecutionMode:O,selectIsInitialized:U,selectFactory:G,selectSpecExpressions:H,select$SpecEntityReflections:X,selectDomainExpressions:Y,selectModelVersion:Z,selectAliasMap:ee,selectAllowedRootEntityTypes:et,selectEntityReflections:en,selectMigrate:eo,selectLatestMode:ei,selectLatestConfigurationId:ea,selectLatestSessionContext:es,selectLatestRoleOrNull:er,selectLatestSessionDataOrNull:ec,selectLatestSchemaIdentity:el,selectSchemaCoherence:ed,selectInitializationIdentity:eg,selectIsViewMode:ef,selectInitializationState:ep,selectComponentOptics:eu,selectComponentReaderIndexes:ey,selectStoreRuntimeDependencies:ew,selectNavigationStates:eh,selectViewStates:eS,selectToolStates:ex,selectExportStates:ej,selectCreateTransformers:eC,selectLatestLoadedData:em,selectLoadedData:eD,selectInitialDomainState:ev,selectFrontendData:eI,selectBackendData:eP,selectPublishedData:eM,selectLatestRole:eA,selectLatestSessionData:eR,selectNextInitializationContext:eE,selectActiveMode:eT,selectActiveConfigurationId:eb,selectActiveRole:ek,selectActiveSessionData:e$,selectExpressionContext:eN,getInitializationContext:()=>_(R()),getInitializationState:()=>ep(R()),getNextInitializationContext:()=>eE(R()),getLatestLoadedData:()=>em(R()),getSchemaCoherence:()=>ed(R()),getActiveConfigurationId:()=>eb(R()),getFactory:()=>G(R()),getDomainExpressions:()=>Y(R()),getActionDefinitions:()=>J(R()),getActionImplementations:()=>Q(R()),getModelVersion:()=>Z(R()),getAliasMap:()=>ee(R()),getAllowedRootEntityTypes:()=>et(R()),getEntityReflections:()=>en(R()),getMigrate:()=>eo(R()),getActiveMode:()=>eT(R()),getIsInitialized:()=>U(R()),getComponentReaderIndexes:()=>ey(R()),getStoreRuntimeDependencies:()=>ew(R()),getNavigationStates:()=>eh(R()),getViewStates:()=>eS(R()),getToolStates:()=>ex(R()),getExportStates:()=>ej(R()),getCreateTransformers:()=>eC(R()),getLoadedData:()=>eD(R()),getInitialDomainState:()=>ev(R()),getFrontendData:()=>eI(R()),getBackendData:()=>eP(R()),getPublishedData:()=>eM(R()),getActiveRole:()=>ek(R()),getActiveSessionData:()=>e$(R()),getDomain:()=>eL,getComponentReader:()=>eV,getCompositionProjections:()=>eB,getDimensionSystem:()=>eF,getValidationProjections:()=>eW,getSketchingProjections:()=>e_,getPositionProjections:()=>eq,getCollisionProjections:()=>eO,getSnappingProjections:()=>eU,getConstraintProjections:()=>eG,getProjectedEntitiesProjections:()=>eH,getStoreSystem:()=>eJ,getNavigationSystem:()=>eK,getUndoSystem:()=>eQ,getRecipeCookerSystem:()=>eX,getActionSystem:()=>eY,getBlenderProjections:()=>eZ,getExpressionContext:()=>eN(R()),getDomainSystems:function(){return e0},getDomainContext:function(){return e1}},eL=new n({selectors:ez}),eV=new j({selectors:ez}),eB=new f({selectors:ez}),eF=new s({selectors:ez}),eW=new h({selectors:ez}),e_=new S({selectors:ez}),eq=new u({selectors:ez}),eO=new g({selectors:ez}),eU=new w({selectors:ez}),eG=new p({selectors:ez}),eH=new y({selectors:ez}),eJ=new m({selectors:ez,domainServicesSelectors:z,environmentSelectors:L}),eK=new r({selectors:ez,domainServicesSelectors:z}),eQ=new l({selectors:ez}),eX=new c({selectors:ez}),eY=new a({selectors:ez}),eZ=new d({selectors:ez,domainServicesSelectors:z}),e0={domainContextSelectors:ez,domain:eL,componentReader:eV,compositionProjections:eB,blenderProjections:eZ,validationProjections:eW,storeSystem:eJ,navigationSystem:eK,dimensionSystem:eF,undoSystem:eQ,recipeCooker:eX,actionSystem:eY,sketchingProjections:e_,collisionProjections:eO,positionProjections:eq,snappingProjections:eU,projectedEntitiesProjections:eH,constraintProjections:eG},e1=new C({selectors:ez,actions:E,getExtensionSystems:V});return ez};
@@ -61,7 +61,7 @@ export declare function createDomainRuntimeSlices<State extends DomainRuntimeSta
61
61
  selectAdminPreset: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AnyProductPreset>;
62
62
  selectAdminModelVersion: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, number>;
63
63
  selectThemeOptions: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("@mui/material").ThemeOptions>;
64
- selectAssistant: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AssistantManifest | null>;
64
+ selectAssistant: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, Required<import("../index.js").AssistantManifest> | null>;
65
65
  selectConfiguratorFactory: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AnyDomainFactory>;
66
66
  selectAdminFactory: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AnyDomainFactory>;
67
67
  selectConfiguratorComponentOptics: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
@@ -104,7 +104,7 @@ export declare function createDomainRuntimeSlices<State extends DomainRuntimeSta
104
104
  getAdminPreset: () => import("../index.js").AnyProductPreset;
105
105
  getAdminModelVersion: () => number;
106
106
  getThemeOptions: () => import("@mui/material").ThemeOptions;
107
- getAssistant: () => import("../index.js").AssistantManifest | null;
107
+ getAssistant: () => Required<import("../index.js").AssistantManifest> | null;
108
108
  getConfiguratorFactory: () => import("../index.js").AnyDomainFactory;
109
109
  getAdminFactory: () => import("../index.js").AnyDomainFactory;
110
110
  getConfiguratorComponentOptics: () => readonly import("../index.js").AnyDomainComponentOptic[];
@@ -651,7 +651,7 @@ export declare const createDomainRuntime: (props: Omit<Props<DomainRuntimeState>
651
651
  selectAdminPreset: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AnyProductPreset>;
652
652
  selectAdminModelVersion: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, number>;
653
653
  selectThemeOptions: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("@mui/material").ThemeOptions>;
654
- selectAssistant: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AssistantManifest | null>;
654
+ selectAssistant: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, Required<import("../index.js").AssistantManifest> | null>;
655
655
  selectConfiguratorFactory: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AnyDomainFactory>;
656
656
  selectAdminFactory: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AnyDomainFactory>;
657
657
  selectConfiguratorComponentOptics: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
@@ -694,7 +694,7 @@ export declare const createDomainRuntime: (props: Omit<Props<DomainRuntimeState>
694
694
  getAdminPreset: () => import("../index.js").AnyProductPreset;
695
695
  getAdminModelVersion: () => number;
696
696
  getThemeOptions: () => import("@mui/material").ThemeOptions;
697
- getAssistant: () => import("../index.js").AssistantManifest | null;
697
+ getAssistant: () => Required<import("../index.js").AssistantManifest> | null;
698
698
  getConfiguratorFactory: () => import("../index.js").AnyDomainFactory;
699
699
  getAdminFactory: () => import("../index.js").AnyDomainFactory;
700
700
  getConfiguratorComponentOptics: () => readonly import("../index.js").AnyDomainComponentOptic[];
@@ -1 +1 @@
1
- import{SessionRole as e}from"@salsita-ai/contracts/api";let a=(e,a)=>{let t={};for(let n of e)t[n.name]=a?.[n.name]??n.name;return t},t=(e,a)=>{let t={},n=0;for(let o of e)if("entity"===o.type||"layout"===o.type)t[o.name]=a?.[o.name]??o.name;else{let e=`icon:${n}`;t[e]=a?.[e]??`${e}:${o.elements.length}`,n+=1}return t};export const initializeSpec=n=>{let o=n.adminDomain.presets[0];if(!o)throw Error("Cannot register application spec because admin preset is required.");return{version:n.version,dataConfig:n.dataSpec??null,chunks:n.chunks,publishedDataHash:n.publishedDataHash,initialPublishedData:n.initialPublishedData,canCreate:n.features?.acl?.canCreate??Object.values(e),enableAdminRelease:n.features?.enableAdminRelease??!1,textLanguages:n.domain.textLanguages??n.adminDomain.textLanguages??["en"],baseResourcesUrl:n.resources?.baseResourcesUrl??n.defaultEnvs?.resourcesUrl??"",configurator:{factory:n.domain.domainFactory,presets:n.domain.presets,aliasMap:n.domain.domainFactory.context.aliasMap,entityReflections:n.domain.domainFactory.context.entityReflections,$entityReflections:n.domain.domainFactory.context.$entityReflections,expressions:n.domain.domainFactory.context.expressions,actions:n.domain.domainFactory.context.actions,actionImplementations:n.domain.domainFactory.context.actionImplementations,allowedRootEntityTypes:n.domain.domainFactory.context.allowedRootEntityTypes,migrate:n.domain.domainFactory.context.migrate,componentOptics:n.domain.componentOptics,createTransformers:n.createTransformers??(()=>[]),navigationStates:n.navigation?.navigationStates??[],viewStates:n.navigation?.viewStates??[],toolStates:n.navigation?.toolStates??[],exportStates:n.navigation?.exportStates??[],handlers:n.handlers,handlerHashes:a(n.handlers),elements:n.elements,elementHashes:t(n.elements),appLoader:n.ui?.appLoader??"universal",preview:n.ui?.preview??"auto",alwaysExpand:n.ui?.alwaysExpand??!1,theme:n.ui?.theme??{},assistant:n.assistant??null,deploymentQueryDisabled:n.resources?.deploymentQueryDisabled??!1,prefetchTextureUrls:n.resources?.prefetchTextureUrls??[],modelVersion:n.domain.domainFactory.modelVersion},admin:{factory:n.adminDomain.domainFactory,modelVersion:n.adminDomain.domainFactory.modelVersion,aliasMap:n.adminDomain.domainFactory.context.aliasMap,entityReflections:n.adminDomain.domainFactory.context.entityReflections,$entityReflections:n.adminDomain.domainFactory.context.$entityReflections,expressions:n.adminDomain.domainFactory.context.expressions,actions:n.adminDomain.domainFactory.context.actions,actionImplementations:n.adminDomain.domainFactory.context.actionImplementations,allowedRootEntityTypes:n.adminDomain.domainFactory.context.allowedRootEntityTypes,migrate:n.adminDomain.domainFactory.context.migrate,preset:o,componentOptics:n.adminDomain.componentOptics,navigationStates:n.adminNavigation?.navigationStates??[],viewStates:n.adminNavigation?.viewStates??[],handlers:n.handlers,handlerHashes:a(n.handlers),elements:n.elements,elementHashes:t(n.elements)}}};
1
+ import{SessionRole as e}from"@salsita-ai/contracts/api";import{resolveElementModules as t}from"../../application/element-registration.js";import{resolveHandlerModules as a}from"../../application/handler-registration.js";import{resolveImportedTransformers as n,resolveTransformerModules as o}from"../../application/resolve-imported-transformers.js";import{resolveComponentOpticModules as i}from"../../core/index.js";export const initializeSpec=s=>{let r=s.adminDomain.presets[0];if(!r)throw Error("Cannot register application spec because admin preset is required.");let m=a(s.handlers),c=t(s.elements),d=(e=>{let t={};for(let a of e)t[a.name]=(void 0)??a.name;return t})(m),l=(e=>{let t={},a=0;for(let n of e)if("entity"===n.type||"layout"===n.type)t[n.name]=(void 0)??n.name;else{let e=`icon:${a}`;t[e]=(void 0)??`${e}:${n.elements.length}`,a+=1}return t})(c),p=o(s.transformers?.importedTransformers??[]),y=s.transformers?.specTransformers??[];return{version:s.version,dataConfig:s.dataSpec??null,chunks:s.chunks,publishedDataHash:s.publishedDataHash,initialPublishedData:s.initialPublishedData,canCreate:s.features?.acl?.canCreate??Object.values(e),enableAdminRelease:s.features?.enableAdminRelease??!1,textLanguages:s.domain.textLanguages??s.adminDomain.textLanguages??["en"],baseResourcesUrl:s.resources?.baseResourcesUrl??s.defaultEnvs?.resourcesUrl??"",configurator:{factory:s.domain.domainFactory,presets:s.domain.presets,aliasMap:s.domain.domainFactory.context.aliasMap,entityReflections:s.domain.domainFactory.context.entityReflections,$entityReflections:s.domain.domainFactory.context.$entityReflections,expressions:s.domain.domainFactory.context.expressions,actions:s.domain.domainFactory.context.actions,actionImplementations:s.domain.domainFactory.context.actionImplementations,allowedRootEntityTypes:s.domain.domainFactory.context.allowedRootEntityTypes,migrate:s.domain.domainFactory.context.migrate,componentOptics:i(s.domain.componentOptics),createTransformers:e=>n(p,y,e),navigationStates:s.navigation?.navigationStates??[],viewStates:s.navigation?.viewStates??[],toolStates:s.navigation?.toolStates??[],exportStates:s.navigation?.exportStates??[],handlers:m,handlerHashes:d,elements:c,elementHashes:l,appLoader:s.ui?.appLoader??"universal",preview:s.ui?.preview??"auto",alwaysExpand:s.ui?.alwaysExpand??!1,theme:s.ui?.theme??{},assistant:s.assistant??null,deploymentQueryDisabled:s.resources?.deploymentQueryDisabled??!1,prefetchTextureUrls:s.resources?.prefetchTextureUrls??[],modelVersion:s.domain.domainFactory.modelVersion},admin:{factory:s.adminDomain.domainFactory,modelVersion:s.adminDomain.domainFactory.modelVersion,aliasMap:s.adminDomain.domainFactory.context.aliasMap,entityReflections:s.adminDomain.domainFactory.context.entityReflections,$entityReflections:s.adminDomain.domainFactory.context.$entityReflections,expressions:s.adminDomain.domainFactory.context.expressions,actions:s.adminDomain.domainFactory.context.actions,actionImplementations:s.adminDomain.domainFactory.context.actionImplementations,allowedRootEntityTypes:s.adminDomain.domainFactory.context.allowedRootEntityTypes,migrate:s.adminDomain.domainFactory.context.migrate,preset:r,componentOptics:i(s.adminDomain.componentOptics),navigationStates:s.adminNavigation?.navigationStates??[],viewStates:s.adminNavigation?.viewStates??[],handlers:m,handlerHashes:d,elements:c,elementHashes:l}}};
@@ -22,7 +22,7 @@ export declare const createSpecSelectors: (context: Context) => {
22
22
  selectAdminPreset: import("@salsita-ai/common/utils").Selector<SpecSelectorState, import("../../index.js").AnyProductPreset>;
23
23
  selectAdminModelVersion: import("@salsita-ai/common/utils").Selector<SpecSelectorState, number>;
24
24
  selectThemeOptions: import("@salsita-ai/common/utils").Selector<SpecSelectorState, import("@mui/material").ThemeOptions>;
25
- selectAssistant: import("@salsita-ai/common/utils").Selector<SpecSelectorState, import("../../index.js").AssistantManifest | null>;
25
+ selectAssistant: import("@salsita-ai/common/utils").Selector<SpecSelectorState, Required<import("../../index.js").AssistantManifest> | null>;
26
26
  selectConfiguratorFactory: import("@salsita-ai/common/utils").Selector<SpecSelectorState, import("../../index.js").AnyDomainFactory>;
27
27
  selectAdminFactory: import("@salsita-ai/common/utils").Selector<SpecSelectorState, import("../../index.js").AnyDomainFactory>;
28
28
  selectConfiguratorComponentOptics: import("@salsita-ai/common/utils").Selector<SpecSelectorState, readonly import("../../index.js").AnyDomainComponentOptic[]>;
@@ -65,7 +65,7 @@ export declare const createSpecSelectors: (context: Context) => {
65
65
  getAdminPreset: () => import("../../index.js").AnyProductPreset;
66
66
  getAdminModelVersion: () => number;
67
67
  getThemeOptions: () => import("@mui/material").ThemeOptions;
68
- getAssistant: () => import("../../index.js").AssistantManifest | null;
68
+ getAssistant: () => Required<import("../../index.js").AssistantManifest> | null;
69
69
  getConfiguratorFactory: () => import("../../index.js").AnyDomainFactory;
70
70
  getAdminFactory: () => import("../../index.js").AnyDomainFactory;
71
71
  getConfiguratorComponentOptics: () => readonly import("../../index.js").AnyDomainComponentOptic[];
@@ -1 +1 @@
1
- import{createSelector as e}from"@salsita-ai/common/utils";import{systemElementRegistry as t}from"../../application/element-registration.js";export const createSpecSelectors=n=>{let{getState:a}=n,s=e.withTypes(),r=s([s.leaf(e=>e.spec)],e=>e),o=s([r],e=>e.version),l=s([r],e=>e.baseResourcesUrl),i=s([r],e=>e.configurator),g=s([r],e=>e.dataConfig),m=s([r],e=>e.chunks),p=s([r],e=>e.publishedDataHash),d=s([r],e=>e.initialPublishedData),c=s([r],e=>e.canCreate),u=s([r],e=>e.enableAdminRelease),y=s([r],e=>e.textLanguages),h=s([i],e=>e.modelVersion),f=s([r],e=>e.admin),C=s([f],e=>e.preset),A=s([f],e=>e.modelVersion),E=s([i],e=>e.theme),b=s([i],e=>e.assistant),H=s([i],e=>e.factory),x=s([f],e=>e.factory),D=s([i],e=>e.componentOptics),P=s([f],e=>e.componentOptics),S=s([i],e=>e.appLoader),w=s([i],e=>e.preview),O=s([i],e=>e.alwaysExpand),T=s([i],e=>e.presets),V=s([i],e=>e.deploymentQueryDisabled),L=s([i],e=>e.prefetchTextureUrls),R=s([i],e=>e.handlerHashes),U=s([i],e=>e.handlers),v=s([U,R],(e,t)=>({...(e=>{let t={},n={},a={};for(let s of e)"phoenix"===s.type&&(t[s.name]=s.handler),"system"===s.type&&(n[s.name]=s.handler),"system-async"===s.type&&(a[s.name]=s.handler);return{handlers:t,systemHandlers:n,systemAsyncHandlers:a}})(e),hashes:t})),k=s([i],e=>e.elementHashes),F=s([i],e=>e.elements),M=s([F,k],(e,n)=>({...(e=>{let n={},a={};for(let t of e)"layout"===t.type&&(n[t.name]=t.element),"entity"===t.type&&(a[t.name]=t.element);return{entityElements:{...t.entityElements,...a},layoutElements:{...t.layoutElements,...n}}})(e),hashes:n}));return{selectSpec:r,selectVersion:o,selectBaseResourcesUrl:l,selectConfiguratorSpec:i,selectConfiguratorModelVersion:h,selectAdminSpec:f,selectAdminPreset:C,selectAdminModelVersion:A,selectThemeOptions:E,selectAssistant:b,selectConfiguratorFactory:H,selectAdminFactory:x,selectConfiguratorComponentOptics:D,selectAdminComponentOptics:P,selectAppLoader:S,selectPreview:w,selectAlwaysExpand:O,selectPresetSeed:T,selectDeploymentQueryDisabled:V,selectPrefetchTextureUrls:L,selectTextLanguages:y,selectHandlerHashes:R,selectHandlers:U,selectHandlerSlots:v,selectElementHashes:k,selectElements:F,selectElementSlots:M,selectDataConfig:g,selectChunks:m,selectPublishedDataHash:p,selectInitialPublishedData:d,selectCanCreate:c,selectEnableAdminRelease:u,getVersion:()=>o(a()),getBaseResourcesUrl:()=>l(a()),getConfiguratorSpec:()=>i(a()),getConfiguratorModelVersion:()=>h(a()),getAdminSpec:()=>f(a()),getAdminPreset:()=>C(a()),getAdminModelVersion:()=>A(a()),getThemeOptions:()=>E(a()),getAssistant:()=>b(a()),getConfiguratorFactory:()=>H(a()),getAdminFactory:()=>x(a()),getConfiguratorComponentOptics:()=>D(a()),getAdminComponentOptics:()=>P(a()),getAppLoader:()=>S(a()),getPreview:()=>w(a()),getAlwaysExpand:()=>O(a()),getPresetSeed:()=>T(a()),getDeploymentQueryDisabled:()=>V(a()),getPrefetchTextureUrls:()=>L(a()),getTextLanguages:()=>y(a()),getHandlerHashes:()=>R(a()),getHandlers:()=>U(a()),getHandlerSlots:()=>v(a()),getElementHashes:()=>k(a()),getElements:()=>F(a()),getElementSlots:()=>M(a()),getDataConfig:()=>g(a()),getChunks:()=>m(a()),getPublishedDataHash:()=>p(a()),getInitialPublishedData:()=>d(a()),getCanCreate:()=>c(a()),getEnableAdminRelease:()=>u(a())}};
1
+ import{createSelector as e}from"@salsita-ai/common/utils";import{buildAssistantManifest as t}from"../../application/assistant/index.js";import{systemElementRegistry as n}from"../../application/element-registration.js";export const createSpecSelectors=a=>{let{getState:s}=a,r=e.withTypes(),o=r([r.leaf(e=>e.spec)],e=>e),l=r([o],e=>e.version),i=r([o],e=>e.baseResourcesUrl),m=r([o],e=>e.configurator),g=r([o],e=>e.dataConfig),p=r([o],e=>e.chunks),d=r([o],e=>e.publishedDataHash),c=r([o],e=>e.initialPublishedData),u=r([o],e=>e.canCreate),y=r([o],e=>e.enableAdminRelease),h=r([o],e=>e.textLanguages),f=r([m],e=>e.modelVersion),C=r([o],e=>e.admin),A=r([C],e=>e.preset),E=r([C],e=>e.modelVersion),b=r([m],e=>e.theme),x=r([m],e=>e.assistant),H=r([x],e=>e?t(e):null),D=r([m],e=>e.factory),P=r([C],e=>e.factory),S=r([m],e=>e.componentOptics),w=r([C],e=>e.componentOptics),O=r([m],e=>e.appLoader),T=r([m],e=>e.preview),V=r([m],e=>e.alwaysExpand),L=r([m],e=>e.presets),R=r([m],e=>e.deploymentQueryDisabled),U=r([m],e=>e.prefetchTextureUrls),v=r([m],e=>e.handlerHashes),j=r([m],e=>e.handlers),k=r([j,v],(e,t)=>({...(e=>{let t={},n={},a={};for(let s of e)"phoenix"===s.type&&(t[s.name]=s.handler),"system"===s.type&&(n[s.name]=s.handler),"system-async"===s.type&&(a[s.name]=s.handler);return{handlers:t,systemHandlers:n,systemAsyncHandlers:a}})(e),hashes:t})),F=r([m],e=>e.elementHashes),M=r([m],e=>e.elements),Q=r([M,F],(e,t)=>({...(e=>{let t={},a={};for(let n of e)"layout"===n.type&&(t[n.name]=n.element),"entity"===n.type&&(a[n.name]=n.element);return{entityElements:{...n.entityElements,...a},layoutElements:{...n.layoutElements,...t}}})(e),hashes:t}));return{selectSpec:o,selectVersion:l,selectBaseResourcesUrl:i,selectConfiguratorSpec:m,selectConfiguratorModelVersion:f,selectAdminSpec:C,selectAdminPreset:A,selectAdminModelVersion:E,selectThemeOptions:b,selectAssistant:H,selectConfiguratorFactory:D,selectAdminFactory:P,selectConfiguratorComponentOptics:S,selectAdminComponentOptics:w,selectAppLoader:O,selectPreview:T,selectAlwaysExpand:V,selectPresetSeed:L,selectDeploymentQueryDisabled:R,selectPrefetchTextureUrls:U,selectTextLanguages:h,selectHandlerHashes:v,selectHandlers:j,selectHandlerSlots:k,selectElementHashes:F,selectElements:M,selectElementSlots:Q,selectDataConfig:g,selectChunks:p,selectPublishedDataHash:d,selectInitialPublishedData:c,selectCanCreate:u,selectEnableAdminRelease:y,getVersion:()=>l(s()),getBaseResourcesUrl:()=>i(s()),getConfiguratorSpec:()=>m(s()),getConfiguratorModelVersion:()=>f(s()),getAdminSpec:()=>C(s()),getAdminPreset:()=>A(s()),getAdminModelVersion:()=>E(s()),getThemeOptions:()=>b(s()),getAssistant:()=>H(s()),getConfiguratorFactory:()=>D(s()),getAdminFactory:()=>P(s()),getConfiguratorComponentOptics:()=>S(s()),getAdminComponentOptics:()=>w(s()),getAppLoader:()=>O(s()),getPreview:()=>T(s()),getAlwaysExpand:()=>V(s()),getPresetSeed:()=>L(s()),getDeploymentQueryDisabled:()=>R(s()),getPrefetchTextureUrls:()=>U(s()),getTextLanguages:()=>h(s()),getHandlerHashes:()=>v(s()),getHandlers:()=>j(s()),getHandlerSlots:()=>k(s()),getElementHashes:()=>F(s()),getElements:()=>M(s()),getElementSlots:()=>Q(s()),getDataConfig:()=>g(s()),getChunks:()=>p(s()),getPublishedDataHash:()=>d(s()),getInitialPublishedData:()=>c(s()),getCanCreate:()=>u(s()),getEnableAdminRelease:()=>y(s())}};
@@ -1,8 +1,7 @@
1
1
  import type { ThemeOptions } from '@mui/material';
2
2
  import type { SessionRole } from '@salsita-ai/contracts/api';
3
- import type { AssistantManifest, ChunksSpec, DataSpec, ElementRegistration, HandlerRegistration } from '../../application/index.js';
4
- import type { AnyDomainComponentOptic } from '../../components/index.js';
5
- import type { ActionDefinitions, Any$EntityReflections, AnyActionImplementations, AnyAliasMap, AnyAllowedRootEntityTypes, AnyDomainFactory, AnyEntityReflections, AnyExpressions, AnyProductPreset, DomainEntity, MigrateFunction } from '../../core/index.js';
3
+ import type { AssistantResolvedManifest, ChunksSpec, DataSpec, ElementRegistration, HandlerRegistration } from '../../application/index.js';
4
+ import type { ActionDefinitions, Any$EntityReflections, AnyActionImplementations, AnyAliasMap, AnyAllowedRootEntityTypes, AnyDomainComponentOptic, AnyDomainFactory, AnyEntityReflections, AnyExpressions, AnyProductPreset, DomainEntity, MigrateFunction } from '../../core/index.js';
6
5
  import type { AnyCreateTransformersFactory } from '../../domain-context/store-system/store-system.js';
7
6
  export interface ApplicationConfiguratorSpec {
8
7
  readonly modelVersion: number;
@@ -46,10 +45,10 @@ export interface ApplicationConfiguratorSpec {
46
45
  readonly alwaysExpand: boolean;
47
46
  readonly theme: ThemeOptions;
48
47
  /**
49
- * Experimental assistant manifest with its generated GraphQL SDL, or `null` when the application
48
+ * Resolved assistant manifest used to rebuild GraphQL SDL, or `null` when the application
50
49
  * spec declares no `assistant` section. Replaced by editor hot reload when the section changes.
51
50
  */
52
- readonly assistant: AssistantManifest | null;
51
+ readonly assistant: AssistantResolvedManifest | null;
53
52
  /**
54
53
  * When true, resource urls are not suffixed with the `?did=<deploymentId>` cache-busting
55
54
  * query — useful for demos serving local blob urls.
@@ -1,35 +1,10 @@
1
1
  export * from './core/index.js';
2
2
  export { createActionFactory } from './actions/action-factory.js';
3
3
  export { type ActionImplementationConflicts, findActionImplementationConflicts, } from './actions/prepare-action-implementations.js';
4
- export { createConstantExpressionFactory } from './expressions/constant-expressions.js';
5
- export { createCustomExpressionFactory } from './expressions/custom-expression.js';
6
- export { createCustomInvariantFactory, type StaticallyDefinedViolations } from './invariants/custom-invariants.js';
7
- export { InvariantBuilder } from './invariants/invariants.js';
8
- export type { AliasedInvariants, Invariant } from './invariants/invariants.js';
9
- export type { Violation, ViolationSeverity, ViolationTypesOf$Entity, EntityViolation } from './invariants/violation.js';
10
- export { compareSeverity } from './invariants/violation.js';
11
- export { violationsComponent, type ViolationComponent, type ViolationComponentState, } from './invariants/violation-component.js';
12
4
  export { createRelationFactory, type Relation } from './relations/relation-factory.js';
13
5
  export { attachMultipleReferenceComponent, attachSingleReferenceComponent, referenceComponent, type ReferenceComponent, type ReferenceComponentState, } from './relations/reference-component.js';
14
6
  export { composedOfComponent, type ComposedOfComponentState, type ComposedOfComponent, } from './relations/composed-of.js';
15
7
  export { createSingleReferenceRead, createSingleReferenceWrite, createMultipleReferenceRead, createMultipleReferenceWrite, createSingleCompositionRead, createMultipleCompositionRead, createEmptyWrite, } from './relations/component-factories.js';
16
- export { systemVirtualEntityId } from './components/system-virtual-entity.js';
17
- export { navigationStateComponent, isNavigationComponentSnapshot, isSystemNavigationComponentSnapshot, type NavigationStateComponent, type NavigationStateComponentState, } from './components/navigation-state-component.js';
18
- export { hoverStateComponent, isHoverStateComponentSnapshot, isSystemHoverStateComponentSnapshot, type HoverStateComponent, type HoverStateComponentState, } from './components/hover-state-component.js';
19
- export { selectionStateComponent, isSelectionComponentSnapshot, isSystemSelectionComponentSnapshot, type SelectionStateComponent, type SelectionStateComponentState, } from './components/selection-state-component.js';
20
- export { viewStateComponent, isViewComponentSnapshot, isSystemViewComponentSnapshot, type ViewStateComponent, type ViewStateComponentState, } from './components/view-state-component.js';
21
- export { toolStateComponent, isToolStateComponentSnapshot, isSystemToolStateComponentSnapshot, type ToolStateComponent, type ToolStateComponentState, } from './components/tool-state-component.js';
22
- export { debugStateComponent, isDebugStateComponentSnapshot, isSystemDebugStateComponentSnapshot, type DebugStateComponent, type DebugStateComponentState, } from './components/debug-state-component.js';
23
- export { fullscreenStateComponent, isFullscreenStateComponentSnapshot, isSystemFullscreenStateComponentSnapshot, type FullscreenStateComponent, type FullscreenStateComponentState, } from './components/fullscreen-state-component.js';
24
- export { dragStateComponent, isDragStateComponentSnapshot, isSystemDragStateComponentSnapshot, type DragStateComponent, type DragStateComponentState, } from './components/drag-state-component.js';
25
- export { viewportStateComponent, isViewportStateComponentSnapshot, isSystemViewportStateComponentSnapshot, VIEWPORTS, type Viewport, type ViewportStateComponent, type ViewportStateComponentState, } from './components/viewport-state-component.js';
26
- export { type ComponentSystemFilterState, type ComponentSystemFilterProps, ComponentSystemFilterPropsSchema, getComponentSystemFilterState, CombinedComponentFilterSchema, type GradualComponentSystemFilter, type FilterMismatchReason, type IdOrWithId, } from './components/system-component-filter.js';
27
- export { ComponentSystemFilterSchema, type ComponentSystemFilter, type DeclarativeComponentSystemFilter, } from './components/legacy-filter.js';
28
- export type { OneComponentFilter, ManyComponentFilter, ComponentFilter, FilteredOutComponentSnapshot, FilteredOutFilterContext, } from './components/component-reader-types.js';
29
- export { DomainComponentOpticBuilder, type AnyDomainComponentOptic, type DomainComponentOptic, } from './components/domain-component-optic.js';
30
- export { groupComponentsByEntityIdAndName, isEqualGroupedComponentSnapshots, type GroupedComponentSnapshots, } from './components/group-components-by-entity-id-and-name.js';
31
- export { SystemComponentBuilder } from './components/system-component-builder.js';
32
- export { type DataUpdate, type StateUpdate, type ComponentModification, isComponentModificationOfType, type DomainEntityCreation, type EntityDeletion, type DomainEntityReplacement, type DomainEntityModification, type EphemeralRecordCreation, type EphemeralRecordDeletion, type EphemeralRecordModification, type DomainEntityStateDelta, systemUpdateFactory, type UpdateFactory, createUpdateFactory, } from './components/updates.js';
33
8
  export { DomainBuilder, type AliasedExpressions } from './domain-builder.js';
34
9
  export { memoEval, isMemoizedArray, isMemoizedObject, type MemoizedArray, type MemoizedObject, } from './utils/memo-eval.js';
35
10
  export { cloneEvalCache, getEvalCache, setEvalCache, type EvalCacheToken, createEvalCacheToken, } from './utils/eval-cache.js';
@@ -41,6 +16,7 @@ export * from './sketching/index.js';
41
16
  export * from './projections/index.js';
42
17
  export * from './admin-domain/index.js';
43
18
  export * from './application/index.js';
19
+ export { type ProjectModule, resolveActionModules, resolveExpressionModules } from './project-modules/index.js';
44
20
  export * from './scene/index.js';
45
21
  export { getAllPhxDefinitions } from './system-definitions.js';
46
22
  export { availableSystemComponents, componentsByName } from './available-system-components.js';
@@ -1 +1 @@
1
- export*from"./core/index.js";export{createActionFactory}from"./actions/action-factory.js";export{findActionImplementationConflicts}from"./actions/prepare-action-implementations.js";export{createConstantExpressionFactory}from"./expressions/constant-expressions.js";export{createCustomExpressionFactory}from"./expressions/custom-expression.js";export{createCustomInvariantFactory}from"./invariants/custom-invariants.js";export{InvariantBuilder}from"./invariants/invariants.js";export{compareSeverity}from"./invariants/violation.js";export{violationsComponent}from"./invariants/violation-component.js";export{createRelationFactory}from"./relations/relation-factory.js";export{attachMultipleReferenceComponent,attachSingleReferenceComponent,referenceComponent}from"./relations/reference-component.js";export{composedOfComponent}from"./relations/composed-of.js";export{createSingleReferenceRead,createSingleReferenceWrite,createMultipleReferenceRead,createMultipleReferenceWrite,createSingleCompositionRead,createMultipleCompositionRead,createEmptyWrite}from"./relations/component-factories.js";export{systemVirtualEntityId}from"./components/system-virtual-entity.js";export{navigationStateComponent,isNavigationComponentSnapshot,isSystemNavigationComponentSnapshot}from"./components/navigation-state-component.js";export{hoverStateComponent,isHoverStateComponentSnapshot,isSystemHoverStateComponentSnapshot}from"./components/hover-state-component.js";export{selectionStateComponent,isSelectionComponentSnapshot,isSystemSelectionComponentSnapshot}from"./components/selection-state-component.js";export{viewStateComponent,isViewComponentSnapshot,isSystemViewComponentSnapshot}from"./components/view-state-component.js";export{toolStateComponent,isToolStateComponentSnapshot,isSystemToolStateComponentSnapshot}from"./components/tool-state-component.js";export{debugStateComponent,isDebugStateComponentSnapshot,isSystemDebugStateComponentSnapshot}from"./components/debug-state-component.js";export{fullscreenStateComponent,isFullscreenStateComponentSnapshot,isSystemFullscreenStateComponentSnapshot}from"./components/fullscreen-state-component.js";export{dragStateComponent,isDragStateComponentSnapshot,isSystemDragStateComponentSnapshot}from"./components/drag-state-component.js";export{viewportStateComponent,isViewportStateComponentSnapshot,isSystemViewportStateComponentSnapshot,VIEWPORTS}from"./components/viewport-state-component.js";export{ComponentSystemFilterPropsSchema,getComponentSystemFilterState,CombinedComponentFilterSchema}from"./components/system-component-filter.js";export{ComponentSystemFilterSchema}from"./components/legacy-filter.js";export{DomainComponentOpticBuilder}from"./components/domain-component-optic.js";export{groupComponentsByEntityIdAndName,isEqualGroupedComponentSnapshots}from"./components/group-components-by-entity-id-and-name.js";export{SystemComponentBuilder}from"./components/system-component-builder.js";export{isComponentModificationOfType,systemUpdateFactory,createUpdateFactory}from"./components/updates.js";export{DomainBuilder}from"./domain-builder.js";export{memoEval,isMemoizedArray,isMemoizedObject}from"./utils/memo-eval.js";export{cloneEvalCache,getEvalCache,setEvalCache,createEvalCacheToken}from"./utils/eval-cache.js";export{areProfilerLabelsEnabled,setProfilerLabelsEnabled}from"./utils/profiler-label.js";export*from"./dimensions/index.js";export*from"./domain-context/index.js";export*from"./system-components/index.js";export*from"./sketching/index.js";export*from"./projections/index.js";export*from"./admin-domain/index.js";export*from"./application/index.js";export*from"./scene/index.js";export{getAllPhxDefinitions}from"./system-definitions.js";export{availableSystemComponents,componentsByName}from"./available-system-components.js";export*from"./mocks/index.js";export*from"./domain-runtime/index.js";
1
+ export*from"./core/index.js";export{createActionFactory}from"./actions/action-factory.js";export{findActionImplementationConflicts}from"./actions/prepare-action-implementations.js";export{createRelationFactory}from"./relations/relation-factory.js";export{attachMultipleReferenceComponent,attachSingleReferenceComponent,referenceComponent}from"./relations/reference-component.js";export{composedOfComponent}from"./relations/composed-of.js";export{createSingleReferenceRead,createSingleReferenceWrite,createMultipleReferenceRead,createMultipleReferenceWrite,createSingleCompositionRead,createMultipleCompositionRead,createEmptyWrite}from"./relations/component-factories.js";export{DomainBuilder}from"./domain-builder.js";export{memoEval,isMemoizedArray,isMemoizedObject}from"./utils/memo-eval.js";export{cloneEvalCache,getEvalCache,setEvalCache,createEvalCacheToken}from"./utils/eval-cache.js";export{areProfilerLabelsEnabled,setProfilerLabelsEnabled}from"./utils/profiler-label.js";export*from"./dimensions/index.js";export*from"./domain-context/index.js";export*from"./system-components/index.js";export*from"./sketching/index.js";export*from"./projections/index.js";export*from"./admin-domain/index.js";export*from"./application/index.js";export{resolveActionModules,resolveExpressionModules}from"./project-modules/index.js";export*from"./scene/index.js";export{getAllPhxDefinitions}from"./system-definitions.js";export{availableSystemComponents,componentsByName}from"./available-system-components.js";export*from"./mocks/index.js";export*from"./domain-runtime/index.js";
@@ -15,7 +15,7 @@ import type { RegistrableTransformer } from '../domain-context/index.js';
15
15
  *
16
16
  * Contributing no extension systems is the same shape webhook and finalize hosts run in.
17
17
  */
18
- export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, CHAT_CONTEXT extends Record<string, unknown>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ADMIN_ENTITIES extends DomainEntity<string>, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>>, ADMIN_NAVIGATION_STATES extends string, ADMIN_VIEW_STATES extends string>(_cfg: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, CHAT_CONTEXT, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES>, mocks: {
18
+ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, CHAT_CONTEXT extends Record<string, unknown>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ADMIN_ENTITIES extends DomainEntity<string>, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>>, ADMIN_NAVIGATION_STATES extends string, ADMIN_VIEW_STATES extends string>(config: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, CHAT_CONTEXT, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES>, mocks: {
19
19
  frontendData: FRONTEND_DATA;
20
20
  publishedData: PUBLISHED_DATA;
21
21
  sessionData: SESSION_DATA;
@@ -57,7 +57,7 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
57
57
  selectAdminPreset: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, import("../index.js").AnyProductPreset>;
58
58
  selectAdminModelVersion: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, number>;
59
59
  selectThemeOptions: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, import("@mui/material").ThemeOptions>;
60
- selectAssistant: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, import("../index.js").AssistantManifest | null>;
60
+ selectAssistant: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, Required<import("../index.js").AssistantManifest> | null>;
61
61
  selectConfiguratorFactory: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, import("../index.js").AnyDomainFactory>;
62
62
  selectAdminFactory: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, import("../index.js").AnyDomainFactory>;
63
63
  selectConfiguratorComponentOptics: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
@@ -100,7 +100,7 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
100
100
  getAdminPreset: () => import("../index.js").AnyProductPreset;
101
101
  getAdminModelVersion: () => number;
102
102
  getThemeOptions: () => import("@mui/material").ThemeOptions;
103
- getAssistant: () => import("../index.js").AssistantManifest | null;
103
+ getAssistant: () => Required<import("../index.js").AssistantManifest> | null;
104
104
  getConfiguratorFactory: () => import("../index.js").AnyDomainFactory;
105
105
  getAdminFactory: () => import("../index.js").AnyDomainFactory;
106
106
  getConfiguratorComponentOptics: () => readonly import("../index.js").AnyDomainComponentOptic[];
@@ -1 +1 @@
1
- import{createDomainRuntime as o}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as e}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as t}from"./create-mock-session-context.js";export const createMockDomainRuntime=(i,a)=>{let{sessionData:n,mode:r,role:s}=a,c={...i,createTransformers:o=>a.transformers.map(e=>e.transformer.register(o,e.priority??1/0))},m=o({config:c,services:e()});return m.actions.sessionContext.setSessionContext(t(s,n)),m.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",viewMode:"read"===r,revisionId:void 0,configurationId:"mock"}),m.actions.domainData.setDomainData({publishedData:a.publishedData,frontendData:a.frontendData,backendData:a.backendData}),m.actions.loadedData.completeConfiguratorLoad({initialRevisionId:"mock-revision",initialEntities:a.entities,modelVersion:c.domain.domainFactory.modelVersion,rootEntityType:a.rootEntityType,schemaIdentity:c.domain.domainFactory}),m};
1
+ import{createDomainRuntime as o}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as t}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as e}from"./create-mock-session-context.js";export const createMockDomainRuntime=(a,i)=>{let{sessionData:n,mode:r,role:s}=i,c=o({config:a,services:t()}),m=c.getState().spec;return c.actions.spec.updateSpec({...m,configurator:{...m.configurator,createTransformers:o=>i.transformers.map(t=>t.transformer.register(o,t.priority??1/0))}}),c.actions.sessionContext.setSessionContext(e(s,n)),c.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",viewMode:"read"===r,revisionId:void 0,configurationId:"mock"}),c.actions.domainData.setDomainData({publishedData:i.publishedData,frontendData:i.frontendData,backendData:i.backendData}),c.actions.loadedData.completeConfiguratorLoad({initialRevisionId:"mock-revision",initialEntities:i.entities,modelVersion:a.domain.domainFactory.modelVersion,rootEntityType:i.rootEntityType,schemaIdentity:a.domain.domainFactory}),c};
@@ -0,0 +1 @@
1
+ export { type ExpressionModule, type ProjectModule, type ProjectModuleContract, SHARED_FOLDER_HINT, createContractError, isRecord, resolveActionModules, resolveExpressionModules, resolveListModule, } from './project-modules.js';
@@ -0,0 +1 @@
1
+ export{SHARED_FOLDER_HINT,createContractError,isRecord,resolveActionModules,resolveExpressionModules,resolveListModule}from"./project-modules.js";
@@ -0,0 +1,41 @@
1
+ import type { AnonymousExpression, AnyActionImplementations } from '../core/index.js';
2
+ /**
3
+ * The default export of one file in a project convention folder (`src/elements/`, `src/handlers/`,
4
+ * `src/expressions/`, …), paired with the project-relative path it was imported from.
5
+ *
6
+ * Generated barrels and the editor's hot reload hand project code to the SDK in this shape, without
7
+ * inspecting it. Each folder's resolver then checks the export against the folder's contract, so an
8
+ * invalid file fails with an error naming it instead of an unrelated crash later.
9
+ */
10
+ export interface ProjectModule {
11
+ readonly origin: string;
12
+ readonly exports: unknown;
13
+ }
14
+ /** The expressions of one validated expression file, keyed by entity type or alias, then by expression name. */
15
+ export interface ExpressionModule {
16
+ readonly origin: string;
17
+ readonly expressions: Readonly<Record<string, Readonly<Record<string, AnyAnonymousExpression>>>>;
18
+ }
19
+ type AnyAnonymousExpression = AnonymousExpression<any, any, any, any, any, any, unknown>;
20
+ /** What a convention folder requires of its files, in the words used by the contract error. */
21
+ export interface ProjectModuleContract {
22
+ readonly expected: string;
23
+ readonly fix: string;
24
+ }
25
+ export declare const SHARED_FOLDER_HINT = "or move the file to an underscore-prefixed folder such as src/_shared/ when it is shared code";
26
+ export declare const isRecord: (value: unknown) => value is Record<string, unknown>;
27
+ export declare const createContractError: (origin: string, contract: ProjectModuleContract, received: unknown) => Error;
28
+ /**
29
+ * Checks a file of a folder whose contract is one item or an array of them, and returns its items.
30
+ * The first item that fails the check is the value the error reports.
31
+ */
32
+ export declare const resolveListModule: <Item>(module: ProjectModule, contract: ProjectModuleContract, isItem: (value: unknown) => value is Item) => readonly Item[];
33
+ /**
34
+ * Validates the `src/expressions/` files and rejects an expression that two files define for the
35
+ * same entity type. Merging stays with the caller, because the domain builder and the editor expand
36
+ * aliases at different points; within one file the builder's own duplicate check applies.
37
+ */
38
+ export declare const resolveExpressionModules: (modules: readonly ProjectModule[], aliasMap: Readonly<Record<string, readonly string[]>>) => readonly ExpressionModule[];
39
+ /** Validates the `src/actions/` files and merges their implementations by action name; a later file wins. */
40
+ export declare const resolveActionModules: (modules: readonly ProjectModule[]) => AnyActionImplementations;
41
+ export {};
@@ -0,0 +1 @@
1
+ export const SHARED_FOLDER_HINT="or move the file to an underscore-prefixed folder such as src/_shared/ when it is shared code";let e={expected:"an object of expressions keyed by entity type or alias, then by expression name",fix:`Create it with phx.domain.implementCustomExpressions({ ... }) (phx.domain.admin.implementCustomExpressions({ ... }) under src/admin/), ${SHARED_FOLDER_HINT}.`},t={expected:"an object of action implementations keyed by action name",fix:`Create it with phx.domain.implementActions({ ... }), ${SHARED_FOLDER_HINT}.`};export const isRecord=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);export const createContractError=(e,t,r)=>Error(`Invalid default export in ${e}: expected ${t.expected}, but got ${(e=>{if(void 0===e)return"nothing (the file has no default export)";if(null===e)return"null";if("function"==typeof e)return e.name?`the function "${e.name}"`:"an anonymous function";if(Array.isArray(e))return`an array of ${e.length} item(s)`;if(isRecord(e)){let t=Object.keys(e);return t.length>0?`an object with the keys ${t.join(", ")}`:"an empty object"}return`the ${typeof e} ${JSON.stringify(e)}`})(r)}. Every file in this folder is loaded by convention, so each one must default-export that shape. ${t.fix}`);export const resolveListModule=(e,t,r)=>{let o=Array.isArray(e.exports)?e.exports:[e.exports],n=[];for(let i of o){if(!r(i))throw createContractError(e.origin,t,i);n.push(i)}return n};let r=e=>isRecord(e)&&"function"==typeof e.evaluate,o=e=>isRecord(e)&&Object.values(e).every(r),n=e=>"function"==typeof e;export const resolveExpressionModules=(t,r)=>{let n=new Map;return t.map(t=>{let i;if(i=t.exports,!(isRecord(i)&&Object.values(i).every(o)))throw createContractError(t.origin,e,t.exports);for(let[e,o]of Object.entries(t.exports))for(let i of r[e]??[e])for(let e of Object.keys(o)){let r=`${i}.${e}`,o=n.get(r);if(void 0!==o&&o!==t.origin)throw Error(`Duplicate expression ${r}: it is defined in both ${o} and ${t.origin}, which would make its value depend on file order. Keep one definition and remove the other.`);n.set(r,t.origin)}return{origin:t.origin,expressions:t.exports}})};export const resolveActionModules=e=>e.reduce((e,r)=>{let o;if(o=r.exports,!(isRecord(o)&&Object.values(o).every(n)))throw createContractError(r.origin,t,r.exports);return{...e,...r.exports}},{});