@salsita-ai/sdk 0.50.0-develop.8f6deac646 → 0.50.0-develop.9267bdc12e

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 (273) hide show
  1. package/README.md +2 -2
  2. package/dist/application-spec/errors/diagnostic-codes.d.ts +5 -0
  3. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  4. package/dist/application-spec/errors/diagnostic-messages.d.ts +5 -0
  5. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  6. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +8 -1
  7. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  8. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  9. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +48 -48
  10. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  11. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  12. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  13. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +11 -11
  14. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +1 -1
  15. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  16. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  17. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  18. package/dist/application-spec/generate-application/code/templates/globals.js +5 -4
  19. package/dist/application-spec/generate-application/code/templates/index.d.ts +0 -7
  20. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  21. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  22. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +8 -2
  23. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +9 -10
  24. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -4
  25. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +1 -3
  26. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +1 -3
  27. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +2 -1
  28. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  29. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +2 -4
  30. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  31. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  32. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +1 -1
  33. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  34. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  35. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  36. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  37. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  38. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  39. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  40. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  41. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  42. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  43. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  44. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  45. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  46. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  47. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  48. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  49. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  50. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +3 -1
  51. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  52. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +3 -1
  53. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  54. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  55. package/dist/configurator/common/configurator-interface.d.ts +5 -1
  56. package/dist/configurator/common/configurator-interface.js +1 -1
  57. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +6 -0
  58. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  59. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  60. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +1 -75
  61. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  62. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  63. package/dist/configurator/ui/configurator-layout/universal/DesktopSidebar.d.ts +92 -0
  64. package/dist/configurator/ui/configurator-layout/universal/DesktopSidebar.js +16 -0
  65. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  66. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  67. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  68. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  69. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  70. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  71. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +16 -19
  72. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  73. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  74. package/dist/docs/index.json +11 -1
  75. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  76. package/dist/docs/layouts/custom-layout.mdx +981 -0
  77. package/dist/docs/other-features/side-effects.mdx +8 -11
  78. package/dist/docs/other-features/violation-messages.mdx +52 -56
  79. package/dist/docs/phoenix/configurator-interface.mdx +105 -65
  80. package/dist/docs/phoenix/domain-model.mdx +4 -0
  81. package/dist/docs/phoenix/getting-started.mdx +1 -1
  82. package/dist/docs/phoenix/phoenix-cli.mdx +19 -26
  83. package/dist/docs/phoenix/project-structure.mdx +16 -10
  84. package/dist/docs/phoenix/quickstart.mdx +2 -2
  85. package/dist/docs/phoenix/sdk-builder-workflow.mdx +2 -2
  86. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  87. package/dist/docs/phoenix/webhooks.mdx +2 -2
  88. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -11
  89. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  90. package/dist/domain/admin-domain/index.js +1 -1
  91. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +2 -2
  92. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  93. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  94. package/dist/domain/application/application-config.d.ts +5 -3
  95. package/dist/domain/application/assistant/assistant-fields.d.ts +5 -0
  96. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  97. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +27 -1
  98. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  99. package/dist/domain/application/assistant/index.d.ts +4 -1
  100. package/dist/domain/application/assistant/index.js +1 -1
  101. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  102. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  103. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  104. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  105. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  106. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  107. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  108. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  109. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  110. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  111. package/dist/domain/application/configurator-builder.d.ts +2 -2
  112. package/dist/domain/application/configurator-builder.js +1 -1
  113. package/dist/domain/application/create-initial-published-data.d.ts +6 -7
  114. package/dist/domain/application/index.d.ts +0 -4
  115. package/dist/domain/application/index.js +1 -1
  116. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  117. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  118. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  119. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  120. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  121. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +1 -1
  122. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  123. package/dist/domain/core/component/domain-component-optic.d.ts +11 -19
  124. package/dist/domain/core/component/domain-component-optic.js +2 -2
  125. package/dist/domain/core/component/legacy-filter.d.ts +2 -17
  126. package/dist/domain/core/component/system-component-filter.d.ts +36 -18
  127. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  128. package/dist/domain/core/expression/constant-expressions.js +1 -1
  129. package/dist/domain/core/expression/custom-expression.d.ts +17 -4
  130. package/dist/domain/core/expression/custom-expression.js +1 -1
  131. package/dist/domain/core/expression/expression.d.ts +1 -2
  132. package/dist/domain/core/invariant/custom-invariants.d.ts +6 -14
  133. package/dist/domain/core/invariant/invariants.d.ts +1 -4
  134. package/dist/domain/core/recipe/recipes.d.ts +18 -50
  135. package/dist/domain/core/recipe/recipes.js +1 -1
  136. package/dist/domain/core/relation/all-of-type-relation.d.ts +8 -21
  137. package/dist/domain/core/relation/all-of-type-relation.js +1 -1
  138. package/dist/domain/core/relation/direct-relation.d.ts +13 -24
  139. package/dist/domain/core/relation/index.d.ts +0 -1
  140. package/dist/domain/core/relation/indirect-relation.d.ts +12 -67
  141. package/dist/domain/core/relation/indirect-relation.js +1 -1
  142. package/dist/domain/core/relation/relation-factory.d.ts +19 -15
  143. package/dist/domain/core/relation/relation-factory.js +1 -1
  144. package/dist/domain/core/state/migrations.d.ts +14 -45
  145. package/dist/domain/core/state/migrations.js +1 -1
  146. package/dist/domain/core/state/state.d.ts +1 -1
  147. package/dist/domain/domain-builder.d.ts +1 -1
  148. package/dist/domain/domain-builder.js +1 -1
  149. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  150. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  151. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  152. package/dist/domain/domain-runtime/access/types.js +1 -1
  153. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +14 -13
  154. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  155. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  156. package/dist/domain/domain-runtime/domain-runtime.d.ts +56 -40
  157. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  158. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  159. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  160. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  161. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  162. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  163. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  164. package/dist/domain/domain-runtime/errors/index.js +1 -0
  165. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  166. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  167. package/dist/domain/domain-runtime/index.d.ts +1 -0
  168. package/dist/domain/domain-runtime/index.js +1 -1
  169. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  170. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  171. package/dist/domain/domain-runtime/spec/index.d.ts +2 -5
  172. package/dist/domain/domain-runtime/spec/index.js +1 -1
  173. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  174. package/dist/domain/{application → domain-runtime/spec/module-checks}/element-registration.d.ts +2 -2
  175. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -0
  176. package/dist/domain/{application → domain-runtime/spec/module-checks}/handler-registration.d.ts +1 -1
  177. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.js +1 -0
  178. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +8 -0
  179. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -0
  180. package/dist/domain/{project-modules → domain-runtime/spec/module-checks}/project-modules.d.ts +8 -1
  181. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -0
  182. package/dist/domain/domain-runtime/spec/{resolve-action-modules.d.ts → module-checks/resolve-action-modules.d.ts} +2 -2
  183. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -0
  184. package/dist/domain/domain-runtime/spec/{resolve-component-optic-modules.d.ts → module-checks/resolve-component-optic-modules.d.ts} +2 -2
  185. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.js +1 -0
  186. package/dist/domain/domain-runtime/spec/{resolve-expression-modules.d.ts → module-checks/resolve-expression-modules.d.ts} +2 -2
  187. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -0
  188. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +22 -0
  189. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -0
  190. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +6 -0
  191. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -0
  192. package/dist/domain/domain-runtime/spec/selectors.d.ts +5 -6
  193. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  194. package/dist/domain/domain-runtime/spec/types.d.ts +2 -1
  195. package/dist/domain/index.d.ts +0 -1
  196. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  197. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +18 -9
  198. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  199. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  200. package/dist/domain/mocks/create-mock-domain.js +1 -1
  201. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  202. package/dist/domain/projections/blender-projections/camera.d.ts +1 -1
  203. package/dist/domain/utils/eval-cache.d.ts +1 -1
  204. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  205. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  206. package/dist/editor/mocks/EditorMockContext.js +1 -1
  207. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  208. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -3
  209. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  210. package/dist/legacy/domain-cli/gen/implementation.js +7 -11
  211. package/dist/legacy/domain-cli/gen/invariants.js +3 -4
  212. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  213. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  214. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  215. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  216. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  217. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  218. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +1 -0
  219. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  220. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  221. package/dist/phoenix/commands/init.d.ts +4 -4
  222. package/dist/phoenix/commands/init.js +1 -1
  223. package/dist/phoenix/commands/prettier.js +1 -1
  224. package/dist/phoenix/utils/git/index.d.ts +1 -0
  225. package/dist/phoenix/utils/git/index.js +1 -0
  226. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  227. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  228. package/dist/phoenix/utils/index.d.ts +1 -0
  229. package/dist/phoenix/utils/index.js +1 -1
  230. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  231. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  232. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  233. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +33 -16
  234. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  235. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +4 -4
  236. package/dist/react-sdk/domain-context/index.d.ts +1 -1
  237. package/dist/react-sdk/domain-context/index.js +1 -1
  238. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +6 -0
  239. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  240. package/dist/webhook/builders/webhook-builder.js +1 -1
  241. package/package.json +3 -3
  242. package/dist/application-spec/generate-application/code/templates/env-ci.d.ts +0 -1
  243. package/dist/application-spec/generate-application/code/templates/env-ci.js +0 -25
  244. package/dist/application-spec/generate-application/code/templates/env-example.d.ts +0 -1
  245. package/dist/application-spec/generate-application/code/templates/env-example.js +0 -94
  246. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  247. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  248. package/dist/application-spec/generate-application/code/templates/private-assets-readme.d.ts +0 -1
  249. package/dist/application-spec/generate-application/code/templates/private-assets-readme.js +0 -24
  250. package/dist/application-spec/generate-application/code/templates/public-assets-readme.d.ts +0 -1
  251. package/dist/application-spec/generate-application/code/templates/public-assets-readme.js +0 -24
  252. package/dist/application-spec/generate-application/code/templates/readme.d.ts +0 -1
  253. package/dist/application-spec/generate-application/code/templates/readme.js +0 -23
  254. package/dist/application-spec/generate-application/code/templates/skills/agents-md.d.ts +0 -1
  255. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +0 -2
  256. package/dist/domain/application/element-registration.js +0 -1
  257. package/dist/domain/application/handler-registration.js +0 -1
  258. package/dist/domain/application/resolve-imported-transformers.d.ts +0 -22
  259. package/dist/domain/application/resolve-imported-transformers.js +0 -1
  260. package/dist/domain/application/resource-builder.d.ts +0 -13
  261. package/dist/domain/application/resource-builder.js +0 -1
  262. package/dist/domain/core/relation/relation-implementation.d.ts +0 -7
  263. package/dist/domain/core/relation/relation-implementation.js +0 -1
  264. package/dist/domain/domain-runtime/spec/invariant-builder.d.ts +0 -26
  265. package/dist/domain/domain-runtime/spec/invariant-builder.js +0 -1
  266. package/dist/domain/domain-runtime/spec/resolve-action-modules.js +0 -1
  267. package/dist/domain/domain-runtime/spec/resolve-component-optic-modules.js +0 -1
  268. package/dist/domain/domain-runtime/spec/resolve-expression-modules.js +0 -1
  269. package/dist/domain/domain-runtime/spec/resolve-invariant-modules.d.ts +0 -6
  270. package/dist/domain/domain-runtime/spec/resolve-invariant-modules.js +0 -1
  271. package/dist/domain/project-modules/index.d.ts +0 -1
  272. package/dist/domain/project-modules/index.js +0 -1
  273. package/dist/domain/project-modules/project-modules.js +0 -1
@@ -1,4 +1,4 @@
1
- import type { AnyActionImplementations } from '../../core/index.js';
2
- import { type ProjectModule } from '../../project-modules/index.js';
1
+ import type { AnyActionImplementations } from '../../../core/index.js';
2
+ import { type ProjectModule } from './project-modules.js';
3
3
  /** Validates the `src/actions/` files and merges their implementations by action name; a later file wins. */
4
4
  export declare const resolveActionModules: (modules: readonly ProjectModule[]) => AnyActionImplementations;
@@ -0,0 +1 @@
1
+ import{SHARED_FOLDER_HINT as e,createContractError as t,isRecord as o}from"./project-modules.js";let i={expected:"an object of action implementations keyed by action name",fix:`Create it with phx.domain.implementActions({ ... }), ${e}.`},n=e=>"function"==typeof e;export const resolveActionModules=e=>e.reduce((e,r)=>{let c;if(!(o(c=r.exports)&&Object.values(c).every(n)))throw t(r,i,r.exports);return{...e,...r.exports}},{});
@@ -1,4 +1,4 @@
1
- import type { AnyDomainComponentOptic } from '../../core/index.js';
2
- import { type ProjectModule } from '../../project-modules/index.js';
1
+ import type { AnyDomainComponentOptic } from '../../../core/index.js';
2
+ import { type ProjectModule } from './project-modules.js';
3
3
  /** Validates the `src/components/` files, or the optics a generated file lists, and flattens them. */
4
4
  export declare const resolveComponentOpticModules: (modules: readonly ProjectModule[]) => readonly AnyDomainComponentOptic[];
@@ -0,0 +1 @@
1
+ import{SHARED_FOLDER_HINT as t,isRecord as e,resolveListModule as n}from"./project-modules.js";let o={expected:"an attached component, or an array of them",fix:`Create it with phx.domain.attachComponent(...) (phx.domain.admin.attachComponent(...) under src/admin/), ${t}.`},a=t=>e(t)&&("simple"===t.kind||"dynamic"===t.kind)&&"string"==typeof t.instanceName&&"function"==typeof t.read;export const resolveComponentOpticModules=t=>t.flatMap(t=>n(t,o,a));
@@ -1,5 +1,5 @@
1
- import type { AnonymousExpression } from '../../core/index.js';
2
- import { type ProjectModule } from '../../project-modules/index.js';
1
+ import type { AnonymousExpression } from '../../../core/index.js';
2
+ import { type ProjectModule } from './project-modules.js';
3
3
  /** The expressions of one validated expression file, keyed by entity type or alias, then by expression name. */
4
4
  export interface ExpressionModule {
5
5
  readonly origin: string;
@@ -0,0 +1 @@
1
+ import{SHARED_FOLDER_HINT as e,createContractError as o,isRecord as t}from"./project-modules.js";let i={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/), ${e}.`},r=e=>t(e)&&"function"==typeof e.evaluate,n=e=>t(e)&&Object.values(e).every(r);export const resolveExpressionModules=(e,r)=>{let s=new Map;return e.map(e=>{let p;if(!(t(p=e.exports)&&Object.values(p).every(n)))throw o(e,i,e.exports);for(let[o,t]of Object.entries(e.exports))for(let i of r[o]??[o])for(let o of Object.keys(t)){let t=`${i}.${o}`,r=s.get(t);if(void 0!==r&&r!==e.origin)throw Error(`Duplicate expression ${t}: it is defined in both ${r} and ${e.origin}, which would make its value depend on file order. Keep one definition and remove the other.`);s.set(t,e.origin)}return{origin:e.origin,expressions:e.exports}})};
@@ -0,0 +1,22 @@
1
+ import type { ImportedTransformer, SpecTransformer } from '../../../application/index.js';
2
+ import type { AnyDomainContextSystems, Transformers } from '../../../domain-context/index.js';
3
+ import { type ProjectModule } from './project-modules.js';
4
+ /**
5
+ * The transformer of one `src/transformers/` file, named after the file. The spec's `transformers` section
6
+ * selects a plain-function export by that name; a transformer made with `build(name)` registers under its own.
7
+ */
8
+ export declare const resolveTransformerModule: (module: ProjectModule) => ImportedTransformer;
9
+ /** Validates the `src/transformers/` files of an application config and names each after its file. */
10
+ export declare const resolveTransformerModules: (modules: readonly ProjectModule[]) => readonly ImportedTransformer[];
11
+ /**
12
+ * Resolves imported transformer modules against spec transformer declarations.
13
+ * Each imported transformer is registered/executed with the domain context,
14
+ * then matched by name against spec entries to apply priority ordering.
15
+ *
16
+ * Used both when the runtime spec is initialized from the application config and at hot-reload time
17
+ * (via domain-context subscription to registry changes).
18
+ *
19
+ * The transformers come from untyped project modules, so the context and the result have the open types of
20
+ * `AnyCreateTransformersFactory`, the slot of the runtime spec this function fills.
21
+ */
22
+ export declare const resolveImportedTransformers: (importedTransformers: readonly ImportedTransformer[], specTransformers: readonly SpecTransformer[], ctx: AnyDomainContextSystems) => Transformers<any>;
@@ -0,0 +1 @@
1
+ import{SHARED_FOLDER_HINT as r,createContractError as e,isRecord as t}from"./project-modules.js";let o={expected:"a transformer (a function of the domain context, or an object with a register method), or an array of them",fix:`Create it with phx.frontend.transformerBuilder, ${r}.`},n=r=>"function"==typeof r||t(r)&&"function"==typeof r.register;export const resolveTransformerModule=r=>{let t;if(!(Array.isArray(t=r.exports)?t.every(n):n(t)))throw e(r,o,r.exports);return{name:r.origin.replace(/^.*\//,"").replace(/\.tsx?$/,""),transformer:r.exports}};export const resolveTransformerModules=r=>r.map(resolveTransformerModule);export const resolveImportedTransformers=(r,e,t)=>{let o=r.flatMap(({name:r,transformer:e})=>{if(Array.isArray(e))return e.map((e,o)=>{if("register"in e)return e.register(t);if("function"==typeof e)return{priority:1/0,transformer:e(t),name:`${r}[${o}]`};throw Error(`Transformer '${r}[${o}]' must be either a RegistrableTransformer (with register method) or a TransformerFactory (function)`)});if("register"in e)return e.register(t);if("function"==typeof e)return{priority:1/0,transformer:e(t),name:r};throw Error(`Transformer '${r}' must be either a RegistrableTransformer (with register method) or a TransformerFactory (function)`)}),n=[];for(let r of e){let e=o.find(e=>e.name===r.name);if(!e){let e=o.map(r=>r.name).filter(Boolean).join(", ");throw Error(`Transformer '${r.name}' not found in imported transformer files. Available transformers: ${e||"none"}`)}n.push({priority:r.priority??1/0,transformer:e.transformer,name:r.name})}return n};
@@ -0,0 +1,6 @@
1
+ import type { Invariant } from '../../../core/index.js';
2
+ import { type ProjectModule } from './project-modules.js';
3
+ /** An invariant of any project: a file's default export does not carry the project's entity and data types. */
4
+ export type AnyInvariant = Invariant<any, any, any, any, any, any, string>;
5
+ /** Validates the `src/invariants/` files and concatenates their invariants per entity type or alias. */
6
+ export declare const resolveInvariantModules: (modules: readonly ProjectModule[]) => Readonly<Record<string, readonly AnyInvariant[]>>;
@@ -0,0 +1 @@
1
+ import{SHARED_FOLDER_HINT as e,createContractError as t,isRecord as r}from"./project-modules.js";let o={expected:"an object of invariant lists keyed by entity type or alias",fix:`Create it with phx.domain.implementCustomInvariants({ ... }) (phx.domain.admin.implementCustomInvariants({ ... }) under src/admin/), ${e}.`},i=e=>r(e)&&"function"==typeof e.evaluate,n=e=>r(e)&&Object.values(e).every(e=>Array.isArray(e)&&e.every(i));export const resolveInvariantModules=e=>{let r={};for(let i of e){if(!n(i.exports))throw t(i,o,i.exports);for(let[e,t]of Object.entries(i.exports))r[e]=[...r[e]??[],...t]}return r};
@@ -1,6 +1,5 @@
1
1
  import type { PropsWithChildren } from 'react';
2
- import type { CustomPhoenixEntityElementProps } from '../../application/element-registration.js';
3
- import type { PhoenixHandlerDefinition, SystemPhoenixAsyncHandlerDefinition, SystemPhoenixHandlerDefinition } from '../../application/handler-registration.js';
2
+ import { type CustomPhoenixEntityElementProps, type PhoenixHandlerDefinition, type SystemPhoenixAsyncHandlerDefinition, type SystemPhoenixHandlerDefinition } from './module-checks/index.js';
4
3
  import type { ApplicationSpec } from './types.js';
5
4
  /**
6
5
  * Structural slice of the runtime state the spec selectors read. The selectors are keyed on this
@@ -35,7 +34,7 @@ export declare const createSpecSelectors: (context: Context) => {
35
34
  selectPrefetchTextureUrls: import("@salsita-ai/common/utils").Selector<SpecSelectorState, readonly string[]>;
36
35
  selectTextLanguages: import("@salsita-ai/common/utils").Selector<SpecSelectorState, readonly string[]>;
37
36
  selectHandlerHashes: import("@salsita-ai/common/utils").Selector<SpecSelectorState, Record<string, string>>;
38
- selectHandlers: import("@salsita-ai/common/utils").Selector<SpecSelectorState, readonly import("../../index.js").HandlerRegistration<any, any>[]>;
37
+ selectHandlers: import("@salsita-ai/common/utils").Selector<SpecSelectorState, readonly import("./index.js").HandlerRegistration<any, any>[]>;
39
38
  selectHandlerSlots: import("@salsita-ai/common/utils").Selector<SpecSelectorState, {
40
39
  handlers: Record<string, () => PhoenixHandlerDefinition>;
41
40
  systemHandlers: Record<string, () => SystemPhoenixHandlerDefinition<unknown, unknown>>;
@@ -43,7 +42,7 @@ export declare const createSpecSelectors: (context: Context) => {
43
42
  hashes: Record<string, string>;
44
43
  }>;
45
44
  selectElementHashes: import("@salsita-ai/common/utils").Selector<SpecSelectorState, Record<string, string>>;
46
- selectElements: import("@salsita-ai/common/utils").Selector<SpecSelectorState, readonly import("../../index.js").ElementRegistration[]>;
45
+ selectElements: import("@salsita-ai/common/utils").Selector<SpecSelectorState, readonly import("./index.js").ElementRegistration[]>;
47
46
  selectElementSlots: import("@salsita-ai/common/utils").Selector<SpecSelectorState, {
48
47
  entityElements: Record<string, (props: CustomPhoenixEntityElementProps) => JSX.Element>;
49
48
  layoutElements: Record<string, (props: PropsWithChildren) => JSX.Element>;
@@ -78,7 +77,7 @@ export declare const createSpecSelectors: (context: Context) => {
78
77
  getPrefetchTextureUrls: () => readonly string[];
79
78
  getTextLanguages: () => readonly string[];
80
79
  getHandlerHashes: () => Record<string, string>;
81
- getHandlers: () => readonly import("../../index.js").HandlerRegistration<any, any>[];
80
+ getHandlers: () => readonly import("./index.js").HandlerRegistration<any, any>[];
82
81
  getHandlerSlots: () => {
83
82
  handlers: Record<string, () => PhoenixHandlerDefinition>;
84
83
  systemHandlers: Record<string, () => SystemPhoenixHandlerDefinition<unknown, unknown>>;
@@ -86,7 +85,7 @@ export declare const createSpecSelectors: (context: Context) => {
86
85
  hashes: Record<string, string>;
87
86
  };
88
87
  getElementHashes: () => Record<string, string>;
89
- getElements: () => readonly import("../../index.js").ElementRegistration[];
88
+ getElements: () => readonly import("./index.js").ElementRegistration[];
90
89
  getElementSlots: () => {
91
90
  entityElements: Record<string, (props: CustomPhoenixEntityElementProps) => JSX.Element>;
92
91
  layoutElements: Record<string, (props: PropsWithChildren) => JSX.Element>;
@@ -1 +1 @@
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
+ import{createSelector as e}from"@salsita-ai/common/utils";import{buildAssistantManifest as t}from"../../application/assistant/index.js";import{systemElementRegistry as n}from"./module-checks/index.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),h=r([o],e=>e.enableAdminRelease),y=r([o],e=>e.textLanguages),f=r([m],e=>e.modelVersion),C=r([o],e=>e.admin),x=r([C],e=>e.preset),A=r([C],e=>e.modelVersion),E=r([m],e=>e.theme),b=r([m],e=>e.assistant),H=r([b],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),k=r([m],e=>e.handlerHashes),v=r([m],e=>e.handlers),j=r([v,k],(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:x,selectAdminModelVersion:A,selectThemeOptions:E,selectAssistant:H,selectConfiguratorFactory:D,selectAdminFactory:P,selectConfiguratorComponentOptics:S,selectAdminComponentOptics:w,selectAppLoader:O,selectPreview:T,selectAlwaysExpand:V,selectPresetSeed:L,selectDeploymentQueryDisabled:R,selectPrefetchTextureUrls:U,selectTextLanguages:y,selectHandlerHashes:k,selectHandlers:v,selectHandlerSlots:j,selectElementHashes:F,selectElements:M,selectElementSlots:Q,selectDataConfig:g,selectChunks:p,selectPublishedDataHash:d,selectInitialPublishedData:c,selectCanCreate:u,selectEnableAdminRelease:h,getVersion:()=>l(s()),getBaseResourcesUrl:()=>i(s()),getConfiguratorSpec:()=>m(s()),getConfiguratorModelVersion:()=>f(s()),getAdminSpec:()=>C(s()),getAdminPreset:()=>x(s()),getAdminModelVersion:()=>A(s()),getThemeOptions:()=>E(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:()=>y(s()),getHandlerHashes:()=>k(s()),getHandlers:()=>v(s()),getHandlerSlots:()=>j(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:()=>h(s())}};
@@ -1,8 +1,9 @@
1
1
  import type { ThemeOptions } from '@mui/material';
2
2
  import type { SessionRole } from '@salsita-ai/contracts/api';
3
- import type { AssistantResolvedManifest, ChunksSpec, DataSpec, ElementRegistration, HandlerRegistration } from '../../application/index.js';
3
+ import type { AssistantResolvedManifest, ChunksSpec, DataSpec } from '../../application/index.js';
4
4
  import type { ActionDefinitions, Any$EntityReflections, AnyActionImplementations, AnyAliasMap, AnyAllowedRootEntityTypes, AnyDomainComponentOptic, AnyDomainFactory, AnyEntityReflections, AnyExpressions, AnyProductPreset, DomainEntity, MigrateFunction } from '../../core/index.js';
5
5
  import type { AnyCreateTransformersFactory } from '../../domain-context/index.js';
6
+ import type { ElementRegistration, HandlerRegistration } from './module-checks/index.js';
6
7
  export interface ApplicationConfiguratorSpec {
7
8
  readonly modelVersion: number;
8
9
  readonly factory: AnyDomainFactory;
@@ -11,7 +11,6 @@ export * from './sketching/index.js';
11
11
  export * from './projections/index.js';
12
12
  export * from './admin-domain/index.js';
13
13
  export * from './application/index.js';
14
- export { type ProjectModule } from './project-modules/index.js';
15
14
  export * from './scene/index.js';
16
15
  export { getAllPhxDefinitions } from './system-definitions.js';
17
16
  export { availableSystemComponents, componentsByName } from './available-system-components.js';
@@ -5,7 +5,7 @@ export interface MockTransformer<ENTITIES extends DomainEntity<string>, ALLOWED_
5
5
  transformer: RegistrableTransformer<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES>;
6
6
  priority?: number;
7
7
  }
8
- export declare const createMockDomainContext: <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: {
8
+ export declare const createMockDomainContext: <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, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>>(cfg: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, any, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, any, any, any, any, any>, mocks: {
9
9
  frontendData: FRONTEND_DATA;
10
10
  publishedData: PUBLISHED_DATA;
11
11
  sessionData: SESSION_DATA;
@@ -1,3 +1,4 @@
1
+ import { AccessLevel } from '@salsita-ai/contracts/api';
1
2
  import type { ApplicationConfig } from '../application/index.js';
2
3
  import type { $DomainEntity, DomainEntity } from '../core/index.js';
3
4
  import type { RegistrableTransformer } from '../domain-context/index.js';
@@ -15,7 +16,7 @@ import type { RegistrableTransformer } from '../domain-context/index.js';
15
16
  *
16
17
  * Contributing no extension systems is the same shape webhook and finalize hosts run in.
17
18
  */
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
+ 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, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>>(config: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, any, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, any, any, any, any, any>, mocks: {
19
20
  frontendData: FRONTEND_DATA;
20
21
  publishedData: PUBLISHED_DATA;
21
22
  sessionData: SESSION_DATA;
@@ -268,24 +269,28 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
268
269
  access: {
269
270
  selectConfiguratorRawAccessInfo: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, {
270
271
  raw: string;
272
+ access: AccessLevel;
271
273
  viewMode: boolean;
272
274
  revisionId: string | undefined;
273
275
  configurationId: string;
274
276
  } | null>;
275
277
  selectAdminRawAccessInfo: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, {
276
278
  raw: string;
279
+ access: AccessLevel;
277
280
  viewMode: boolean;
278
281
  revisionId: string | undefined;
279
282
  configurationId: string;
280
283
  } | null>;
281
284
  selectConfiguratorAccessInfo: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, {
282
285
  raw: string;
286
+ access: AccessLevel;
283
287
  viewMode: boolean;
284
288
  revisionId: string | undefined;
285
289
  configurationId: string;
286
290
  }>;
287
291
  selectAdminAccessInfo: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, {
288
292
  raw: string;
293
+ access: AccessLevel;
289
294
  viewMode: boolean;
290
295
  revisionId: string | undefined;
291
296
  configurationId: string;
@@ -298,24 +303,28 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
298
303
  selectAdminConfigurationId: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, string>;
299
304
  getConfiguratorRawAccessInfo: () => {
300
305
  raw: string;
306
+ access: AccessLevel;
301
307
  viewMode: boolean;
302
308
  revisionId: string | undefined;
303
309
  configurationId: string;
304
310
  } | null;
305
311
  getAdminRawAccessInfo: () => {
306
312
  raw: string;
313
+ access: AccessLevel;
307
314
  viewMode: boolean;
308
315
  revisionId: string | undefined;
309
316
  configurationId: string;
310
317
  } | null;
311
318
  getConfiguratorAccessInfo: () => {
312
319
  raw: string;
320
+ access: AccessLevel;
313
321
  viewMode: boolean;
314
322
  revisionId: string | undefined;
315
323
  configurationId: string;
316
324
  };
317
325
  getAdminAccessInfo: () => {
318
326
  raw: string;
327
+ access: AccessLevel;
319
328
  viewMode: boolean;
320
329
  revisionId: string | undefined;
321
330
  configurationId: string;
@@ -361,9 +370,9 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
361
370
  selectIsViewMode: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, boolean>;
362
371
  selectInitializationState: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, import("../index.js").DomainContextInitializationState>;
363
372
  selectComponentOptics: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
364
- selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, import("../index.js").ComponentReaderIndexes<any, any, any, any, any>>;
373
+ selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, import("../index.js").ComponentReaderIndexes>;
365
374
  selectStoreRuntimeDependencies: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, {
366
- componentReaderIndexes: import("../index.js").ComponentReaderIndexes<any, any, any, any, any>;
375
+ componentReaderIndexes: import("../index.js").ComponentReaderIndexes;
367
376
  domainExpressions: import("../index.js").AnyExpressions;
368
377
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
369
378
  }>;
@@ -403,9 +412,9 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
403
412
  getMigrate: () => import("../index.js").MigrateFunction<DomainEntity<string>>;
404
413
  getActiveMode: () => import("../index.js").DomainMode;
405
414
  getIsInitialized: () => boolean;
406
- getComponentReaderIndexes: () => import("../index.js").ComponentReaderIndexes<any, any, any, any, any>;
415
+ getComponentReaderIndexes: () => import("../index.js").ComponentReaderIndexes;
407
416
  getStoreRuntimeDependencies: () => {
408
- componentReaderIndexes: import("../index.js").ComponentReaderIndexes<any, any, any, any, any>;
417
+ componentReaderIndexes: import("../index.js").ComponentReaderIndexes;
409
418
  domainExpressions: import("../index.js").AnyExpressions;
410
419
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
411
420
  };
@@ -470,9 +479,9 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
470
479
  selectIsViewMode: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, boolean>;
471
480
  selectInitializationState: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, import("../index.js").DomainContextInitializationState>;
472
481
  selectComponentOptics: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
473
- selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, import("../index.js").ComponentReaderIndexes<any, any, any, any, any>>;
482
+ selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, import("../index.js").ComponentReaderIndexes>;
474
483
  selectStoreRuntimeDependencies: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, {
475
- componentReaderIndexes: import("../index.js").ComponentReaderIndexes<any, any, any, any, any>;
484
+ componentReaderIndexes: import("../index.js").ComponentReaderIndexes;
476
485
  domainExpressions: import("../index.js").AnyExpressions;
477
486
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
478
487
  }>;
@@ -512,9 +521,9 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
512
521
  getMigrate: () => import("../index.js").MigrateFunction<DomainEntity<string>>;
513
522
  getActiveMode: () => import("../index.js").DomainMode;
514
523
  getIsInitialized: () => boolean;
515
- getComponentReaderIndexes: () => import("../index.js").ComponentReaderIndexes<any, any, any, any, any>;
524
+ getComponentReaderIndexes: () => import("../index.js").ComponentReaderIndexes;
516
525
  getStoreRuntimeDependencies: () => {
517
- componentReaderIndexes: import("../index.js").ComponentReaderIndexes<any, any, any, any, any>;
526
+ componentReaderIndexes: import("../index.js").ComponentReaderIndexes;
518
527
  domainExpressions: import("../index.js").AnyExpressions;
519
528
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
520
529
  };
@@ -1 +1 @@
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};
1
+ import{AccessLevel as t}from"@salsita-ai/contracts/api";import{createDomainRuntime as e}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as o}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as a}from"./create-mock-session-context.js";export const createMockDomainRuntime=(i,n)=>{let{sessionData:r,mode:s,role:c}=n,m=e({config:i,services:o()}),d=m.getState().spec;return m.actions.spec.updateSpec({...d,configurator:{...d.configurator,createTransformers:t=>n.transformers.map(e=>e.transformer.register(t,e.priority??1/0))}}),m.actions.sessionContext.setSessionContext(a(c,r)),m.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",access:"read"===s?t.Read:t.Owner,viewMode:"read"===s,revisionId:void 0,configurationId:"mock"}),m.actions.domainData.setDomainData({publishedData:n.publishedData,frontendData:n.frontendData,backendData:n.backendData}),m.actions.loadedData.completeConfiguratorLoad({initialRevisionId:"mock-revision",initialEntities:n.entities,modelVersion:i.domain.domainFactory.modelVersion,rootEntityType:n.rootEntityType,schemaIdentity:i.domain.domainFactory}),m};
@@ -1,6 +1,6 @@
1
1
  import type { ApplicationConfig } from '../application/index.js';
2
2
  import type { $DomainEntity, Domain, DomainEntity, DomainMode } from '../core/index.js';
3
- export declare const createMockDomain: <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: {
3
+ export declare const createMockDomain: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>>(cfg: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, any, any, any, any, any, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, any, any, any, any, any>, mocks: {
4
4
  frontendData: FRONTEND_DATA;
5
5
  publishedData: PUBLISHED_DATA;
6
6
  sessionData: SESSION_DATA;
@@ -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 createMockDomain=(i,n)=>{let{frontendData:s,publishedData:a,sessionData:c,backendData:r,mode:m,role:d}=n,f=o({config:i,services:e()});return f.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",viewMode:"read"===m,revisionId:void 0,configurationId:"mock-configuration"}),"finalize"===m&&f.actions.domainContext.configurator.setExecutionMode("finalize"),f.actions.domainData.setDomainData({publishedData:a,frontendData:s,backendData:r}),f.actions.sessionContext.setSessionContext(t(d,c)),f.selectors.domainContext.configurator.getDomain()};
1
+ import{AccessLevel as o}from"@salsita-ai/contracts/api";import{createDomainRuntime as e}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as t}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as i}from"./create-mock-session-context.js";export const createMockDomain=(n,a)=>{let{frontendData:s,publishedData:c,sessionData:r,backendData:m,mode:d,role:f}=a,u=e({config:n,services:t()});return u.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",access:"read"===d?o.Read:o.Owner,viewMode:"read"===d,revisionId:void 0,configurationId:"mock-configuration"}),"finalize"===d&&u.actions.domainContext.configurator.setExecutionMode("finalize"),u.actions.domainData.setDomainData({publishedData:c,frontendData:s,backendData:m}),u.actions.sessionContext.setSessionContext(i(f,r)),u.selectors.domainContext.configurator.getDomain()};
@@ -1,6 +1,6 @@
1
1
  import type { ApplicationConfig } from '../application/index.js';
2
- import type { $DomainEntity, DomainEntity, DomainState } from '../core/index.js';
3
- export declare const createMockState: <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: {
2
+ import type { DomainEntity, DomainState } from '../core/index.js';
3
+ export declare const createMockState: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES>(cfg: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, any, any, any, any, any, any, any, any, any, any, any, any, any, any>, mocks: {
4
4
  entities: ENTITIES[];
5
5
  rootEntityType: ALLOWED_ROOT_ENTITIES['type'];
6
6
  }) => DomainState<ENTITIES>;
@@ -8,4 +8,4 @@ export interface BlenderCameraProjectionContext {
8
8
  readonly dimensionSystem: Pick<AnyDimensionSystem, 'getDataDistanceUnit'>;
9
9
  readonly positionProjections: Pick<AnyPositionProjections, 'getEntityWorldMatrix'>;
10
10
  }
11
- export declare const projectBlenderCamera: <ENTITIES extends DomainEntity<string>>(state: DomainState<ENTITIES>, imageSize: BlenderImageSize, context: BlenderCameraProjectionContext) => BlenderCamera;
11
+ export declare const projectBlenderCamera: (state: DomainState<DomainEntity<string>>, imageSize: BlenderImageSize, context: BlenderCameraProjectionContext) => BlenderCamera;
@@ -3,7 +3,7 @@ import type { DomainEntity, DomainState } from '../core/index.js';
3
3
  * Clone the evaluation cache from one state to another.
4
4
  * You should not need to use this function manually as it is used internally by the framework.
5
5
  */
6
- export declare const cloneEvalCache: <ENTITIES extends DomainEntity<string>>(originalState: DomainState<ENTITIES>, newState: DomainState<ENTITIES>) => void;
6
+ export declare const cloneEvalCache: (originalState: DomainState<DomainEntity<string>>, newState: DomainState<DomainEntity<string>>) => void;
7
7
  /**
8
8
  * A unique token that can be used to retrieve an evaluation cache from a state.
9
9
  * The token carries type information about the cache's key and value types.
@@ -1 +1 @@
1
- export declare const mapNestedObject: <TI, TO, KI extends string, KO extends string = KI>() => <REC extends Partial<Record<KI, Record<string, TI>>>>(record: REC, map: (entry: [key1: KI, key2: string, value: TI]) => Array<[key1: KO, key2: string, value: TO]>, onDuplicate?: (previousValue: TO, newValue: TO, key1: KO, key2: string) => void) => Record<KO, Record<string, TO>>;
1
+ export declare const mapNestedObject: <TI, TO, KI extends string, KO extends string = KI>() => (record: Partial<Record<KI, Record<string, TI>>>, map: (entry: [key1: KI, key2: string, value: TI]) => Array<[key1: KO, key2: string, value: TO]>, onDuplicate?: (previousValue: TO, newValue: TO, key1: KO, key2: string) => void) => Record<KO, Record<string, TO>>;
@@ -1,6 +1,5 @@
1
1
  import type { Application, ExpressionImplementations, InvariantImplementations } from '#package/application-spec';
2
2
  import { type AnyActionImplementations, type DomainComponentOptic, type DomainEntity, type ElementRegistration, type HandlerRegistration, type ImportedTransformer, type ProjectModule, type SystemComponentTypeConstraint } from '#package/domain';
3
- type AnyImportedTransformer = ImportedTransformer<any, any, any, any, any, any, any>;
4
3
  type RuntimeData = Record<string, unknown>;
5
4
  type RuntimeEntity = DomainEntity<string>;
6
5
  export type ReloadedComponentOptic = DomainComponentOptic<RuntimeEntity, RuntimeEntity, RuntimeData, RuntimeData, RuntimeData, RuntimeEntity, SystemComponentTypeConstraint>;
@@ -32,7 +31,7 @@ export interface ImplementationFiles {
32
31
  readonly actionImplementations: AnyActionImplementations | null;
33
32
  readonly adminImplementations?: ExpressionImplementations;
34
33
  readonly invariantImplementations: InvariantImplementations;
35
- readonly importedTransformers: readonly AnyImportedTransformer[];
34
+ readonly importedTransformers: readonly ImportedTransformer[];
36
35
  readonly customComponentOptics: readonly ReloadedComponentOptic[] | null;
37
36
  readonly handlers: HandlerRegistryUpdate | null;
38
37
  readonly elements: ElementRegistryUpdate | null;
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{createContext as t,useCallback as r,useContext as o,useEffect as n,useMemo as a,useRef as s,useState as c}from"react";import{createUnsignedJWT as i,memoryStorage as l}from"#package/client";import{createInitialDomainState as d}from"#package/domain";import{useApplicationRuntime as u,useIntegrationService as m,useModal as p,useMountGuard as f}from"#package/react-sdk";import{useEditorConnection as w}from"../services/EditorConnectionContext.js";import{trpc as g}from"../services/trpc.js";import{ConfirmMemoryModeModal as y}from"./ConfirmMemoryModeModal.js";import{ValidationErrorModal as b}from"./ValidationErrorModal.js";let h=e=>{let t=e??("u">typeof window?window.location.pathname:"default");return`phx-editor-template:${t}`},k=e=>`template-configuration-${e}`,v=t(null);export const EditorMockProvider=t=>{let{children:o,mockTemplates:E,autoApplyTemplate:I,environmentKey:C}=t,V=s(!1),P=s(0),S=s(null),[M,x]=c(null),[D,A]=c([]),[R,T]=c(null),[j,$]=c({session:null,access:null,embeddedView:null}),B=f(),F=u(),L=F.actions.overrides,O=m(),{showModal:_}=p(),{localMode:q}=w(),z=a(()=>[...E&&E.length>0?E:D].sort((e,t)=>(e.order??1/0)-(t.order??1/0)),[E,D]),G=r(()=>F.selectors.spec.getConfiguratorFactory(),[F]),H=r(e=>(G().parseSessionData(e.data),{role:e.role,data:e.data}),[G]),J=r(e=>G().parsePublishedData(e.data),[G]),K=r(e=>G().parseFrontendData(e.data),[G]),N=r(e=>{let t=G();if(!t.hasBackendData)throw Error("Backend data mock could not be applied, because backend data is not supported by the current domain configuration. Please use a domain that supports backend data.");return t.parseBackendData(e.data)},[G]),Q=r(e=>{if("recipe"===e.type){if(!e.collection)throw Error("Embedded view mock could not be applied, because a collection is required for recipe type embedded views. Please specify a collection for this mock.");return{type:"recipe",recipeId:`Recipe_${Math.floor(1e6*Math.random())}`,collection:e.collection,...e.rootRecipeId?{rootRecipeId:e.rootRecipeId}:{}}}return{type:"preset",presetId:`Preset_${Math.floor(1e6*Math.random())}`}},[]),U=r((e,t)=>{if(l.has(e))return null;let r=F.selectors.loadedData.getConfiguratorRawLoadedData();if(null===r)return null;let o=F.selectors.domainContext.configurator,n=o.getInitializationState().isCurrent?o.getStoreSystem().stateSlices.committed.value.state.entities:r.initialEntities;return{configurationId:e,revisionId:t??r.initialRevisionId,modelVersion:r.modelVersion,rootEntityType:r.rootEntityType,data:n}},[F]),W=r((e,t)=>{let r=U(e,t);null!==r&&l.set(e,[r])},[U]),X=r(async()=>!!("server"!==F.selectors.environment.getBasePersistenceConfig().type||F.selectors.overrides.getActive())||new Promise(e=>{_(y,{onConfirm:()=>e(!0),onCancel:()=>e(!1)})}),[F,_]),Y=s(null),Z=r((e,t)=>{let r=e instanceof Error?e.message:t;Y.current?.destroy(),Y.current=_(b,{error:r})},[_]),ee=r(async e=>{try{if(!await X())return;let t=H(e),r=F.selectors.access.getConfiguratorRawAccessService();null!==r&&W(r.configurationId,r.accessInfo.revisionId),L.setSessionContext(t),$(t=>({...t,session:e}))}catch(e){Z(e,"Session mock could not be applied, because an unknown error has occurred. Please check the mock data and try again.")}},[X,H,F,W,L,Z]),et=r(async e=>{try{if(!await X())return;let t=F.selectors.access.getConfiguratorRawAccessInfo();null!==t&&W(t.configurationId,t.revisionId),L.setAccessLevel(e.access),$(t=>({...t,access:e}))}catch(e){Z(e,"Access mock could not be applied, because an unknown error has occurred. Please check the mock data and try again.")}},[X,F,W,L,Z]),er=r(async e=>{try{if(!await X())return;let t=Q(e),r=F.selectors.access.getConfiguratorRawAccessInfo();null!==r&&W(r.configurationId,r.revisionId),O.enterEmbeddedView(t),L.setEmbeddedViewActive(!0),$(t=>({...t,embeddedView:e}))}catch(e){Z(e,"Embedded view mock could not be applied, because an unknown error has occurred. Please check the mock data and try again.")}},[X,Q,F,W,O,L,Z]),eo=r(async()=>{try{let e=R?H(R.session):null;L.setSessionContext(e),$(e=>({...e,session:null}))}catch(e){Z(e,"Session mock could not be reset, because an unknown error has occurred. Please check the active template and try again.")}},[L,R,H,Z]),en=r(async()=>{L.setAccessLevel(R?.access.access??null),$(e=>({...e,access:null}))},[L,R]),ea=r(async()=>{try{let e=R?.embeddedView?Q(R.embeddedView):null;null!==e?O.enterEmbeddedView(e):O.exitEmbeddedView(),L.setEmbeddedViewActive(null!==e),$(e=>({...e,embeddedView:null}))}catch(e){Z(e,"Embedded view mock could not be reset, because an unknown error has occurred. Please check the active template and try again.")}},[O,L,R,Q,Z]),es=r(e=>{null!==e&&l.delete(k(e))},[]),ec=r(async()=>{P.current+=1,es(S.current),S.current=null,x(null),T(null),$({session:null,access:null,embeddedView:null}),O.exitEmbeddedView(),L.clearMockOverrides();try{localStorage.removeItem(h(C))}catch{console.warn("[Editor] Failed to clear template key from localStorage")}},[O,L,C,es]),ei=r(async(e,t)=>{let r=t?.generation??++P.current;try{let t=e.embeddedView?Q(e.embeddedView):null,n=H(e.session),a=e.publishedData?J(e.publishedData):null,s=e.frontendData?K(e.frontendData):null,c=e.backendData?N(e.backendData):null,u=null,m=null,p=F.selectors.access.getConfiguratorRawAccessInfo(),f=null===p?null:U(p.configurationId,p.revisionId);if(e.configuration){let t=k(e.key),r="latest",o=e.configuration,n=G(),a=n.validateAndMigrateState(o.entities,o.modelVersion);d(a,o.rootEntityType),u={configurationId:t,revisionId:r,modelVersion:n.modelVersion,rootEntityType:o.rootEntityType,data:a};let s=Math.floor(Date.now()/1e3),c=i({configurationId:t,revisionId:r,access:e.access.access,iat:s,exp:s+3600});m={configurationId:t,accessInfo:{raw:c,viewMode:"read-revision"===e.access.access,revisionId:r,configurationId:t}}}else null!==p&&(u=U(p.configurationId,p.revisionId));if(r!==P.current)return;null!==f&&l.set(f.configurationId,[f]),null!==u&&l.set(u.configurationId,[u]),null!==t?O.enterEmbeddedView(t):O.exitEmbeddedView(),L.updateOverrides({accessService:m,accessLevel:null===m?e.access.access:null,sessionContext:n,publishedData:a,frontendData:s,backendData:c,webComponentProperties:e.webComponentProperties??null,embeddedViewActive:null!==t,persistenceConfig:F.selectors.overrides.getPersistenceConfig()}),S.current!==e.key&&es(S.current),S.current=e.key,x(e.key),T(e),$({session:null,access:null,embeddedView:null});var o=e.key;try{localStorage.setItem(h(C),o)}catch{console.warn("[Editor] Failed to store template key to localStorage")}}catch(o){let r="Template could not be applied, because an unknown error has occurred. Please check the template configuration and try again.";if(t?.errorPresentation==="console")return void console.warn(`[Editor] Template "${e.title}" could not be applied:`,o instanceof Error?o.message:r);Z(o,r)}},[H,G,J,K,N,Q,O,L,Z,C,F,es,U]),el=r(async e=>{let t=++P.current;await X()&&t===P.current&&await ei(e,{generation:t})},[X,ei]);g.onMockTemplateChange.useSubscription(void 0,{enabled:!q,onData:e=>{B()&&A(e.templates)}}),n(()=>{if(z&&z.length>0&&!V.current){V.current=!0;let e=(e=>{try{return localStorage.getItem(h(e))}catch{return null}})(C);if(e){let t=z.find(t=>t.key===e);if(t)return void ei(t,{errorPresentation:"console"});console.warn(`[Editor] Stored template "${e}" not found in available templates`)}if(I){let e=z[0];e&&ei(e,{errorPresentation:"console"})}}},[I,z,ei,C]);let ed=a(()=>({activeTemplateKey:M,activeCustomizations:j,effectiveMockTemplates:z,applySessionMock:ee,applyAccessMock:et,resetSessionOverride:eo,resetAccessOverride:en,applyEmbeddedViewMock:er,resetEmbeddedViewOverride:ea,applyTemplate:el,resetAllMocks:ec}),[M,j,z,ee,et,eo,en,er,ea,el,ec]);return e(v.Provider,{value:ed,children:o})};export const useEditorMockContext=()=>{let e=o(v);if(null===e)throw Error("useEditorMockContext must be used within EditorMockProvider");return e};
1
+ import{jsx as e}from"react/jsx-runtime";import{createContext as t,useCallback as r,useContext as o,useEffect as n,useMemo as a,useRef as s,useState as c}from"react";import{AccessLevel as i}from"@salsita-ai/contracts/api";import{createUnsignedJWT as l,memoryStorage as d}from"#package/client";import{createInitialDomainState as u}from"#package/domain";import{useApplicationRuntime as m,useIntegrationService as p,useModal as f,useMountGuard as w}from"#package/react-sdk";import{useEditorConnection as g}from"../services/EditorConnectionContext.js";import{trpc as y}from"../services/trpc.js";import{ConfirmMemoryModeModal as b}from"./ConfirmMemoryModeModal.js";import{ValidationErrorModal as h}from"./ValidationErrorModal.js";let k=e=>{let t=e??("u">typeof window?window.location.pathname:"default");return`phx-editor-template:${t}`},v=e=>`template-configuration-${e}`,E=t(null);export const EditorMockProvider=t=>{let{children:o,mockTemplates:I,autoApplyTemplate:C,environmentKey:V}=t,P=s(!1),S=s(0),M=s(null),[x,D]=c(null),[R,A]=c([]),[T,j]=c(null),[$,B]=c({session:null,access:null,embeddedView:null}),F=w(),L=m(),O=L.actions.overrides,_=p(),{showModal:q}=f(),{localMode:z}=g(),G=a(()=>[...I&&I.length>0?I:R].sort((e,t)=>(e.order??1/0)-(t.order??1/0)),[I,R]),H=r(()=>L.selectors.spec.getConfiguratorFactory(),[L]),J=r(e=>(H().parseSessionData(e.data),{role:e.role,data:e.data}),[H]),K=r(e=>H().parsePublishedData(e.data),[H]),N=r(e=>H().parseFrontendData(e.data),[H]),Q=r(e=>{let t=H();if(!t.hasBackendData)throw Error("Backend data mock could not be applied, because backend data is not supported by the current domain configuration. Please use a domain that supports backend data.");return t.parseBackendData(e.data)},[H]),U=r(e=>{if("recipe"===e.type){if(!e.collection)throw Error("Embedded view mock could not be applied, because a collection is required for recipe type embedded views. Please specify a collection for this mock.");return{type:"recipe",recipeId:`Recipe_${Math.floor(1e6*Math.random())}`,collection:e.collection,...e.rootRecipeId?{rootRecipeId:e.rootRecipeId}:{}}}return{type:"preset",presetId:`Preset_${Math.floor(1e6*Math.random())}`}},[]),W=r((e,t)=>{if(d.has(e))return null;let r=L.selectors.loadedData.getConfiguratorRawLoadedData();if(null===r)return null;let o=L.selectors.domainContext.configurator,n=o.getInitializationState().isCurrent?o.getStoreSystem().stateSlices.committed.value.state.entities:r.initialEntities;return{configurationId:e,revisionId:t??r.initialRevisionId,modelVersion:r.modelVersion,rootEntityType:r.rootEntityType,data:n}},[L]),X=r((e,t)=>{let r=W(e,t);null!==r&&d.set(e,[r])},[W]),Y=r(async()=>!!("server"!==L.selectors.environment.getBasePersistenceConfig().type||L.selectors.overrides.getActive())||new Promise(e=>{q(b,{onConfirm:()=>e(!0),onCancel:()=>e(!1)})}),[L,q]),Z=s(null),ee=r((e,t)=>{let r=e instanceof Error?e.message:t;Z.current?.destroy(),Z.current=q(h,{error:r})},[q]),et=r(async e=>{try{if(!await Y())return;let t=J(e),r=L.selectors.access.getConfiguratorRawAccessService();null!==r&&X(r.configurationId,r.accessInfo.revisionId),O.setSessionContext(t),B(t=>({...t,session:e}))}catch(e){ee(e,"Session mock could not be applied, because an unknown error has occurred. Please check the mock data and try again.")}},[Y,J,L,X,O,ee]),er=r(async e=>{try{if(!await Y())return;let t=L.selectors.access.getConfiguratorRawAccessInfo();null!==t&&X(t.configurationId,t.revisionId),O.setAccessLevel(e.access),B(t=>({...t,access:e}))}catch(e){ee(e,"Access mock could not be applied, because an unknown error has occurred. Please check the mock data and try again.")}},[Y,L,X,O,ee]),eo=r(async e=>{try{if(!await Y())return;let t=U(e),r=L.selectors.access.getConfiguratorRawAccessInfo();null!==r&&X(r.configurationId,r.revisionId),_.enterEmbeddedView(t),O.setEmbeddedViewActive(!0),B(t=>({...t,embeddedView:e}))}catch(e){ee(e,"Embedded view mock could not be applied, because an unknown error has occurred. Please check the mock data and try again.")}},[Y,U,L,X,_,O,ee]),en=r(async()=>{try{let e=T?J(T.session):null;O.setSessionContext(e),B(e=>({...e,session:null}))}catch(e){ee(e,"Session mock could not be reset, because an unknown error has occurred. Please check the active template and try again.")}},[O,T,J,ee]),ea=r(async()=>{O.setAccessLevel(T?.access.access??null),B(e=>({...e,access:null}))},[O,T]),es=r(async()=>{try{let e=T?.embeddedView?U(T.embeddedView):null;null!==e?_.enterEmbeddedView(e):_.exitEmbeddedView(),O.setEmbeddedViewActive(null!==e),B(e=>({...e,embeddedView:null}))}catch(e){ee(e,"Embedded view mock could not be reset, because an unknown error has occurred. Please check the active template and try again.")}},[_,O,T,U,ee]),ec=r(e=>{null!==e&&d.delete(v(e))},[]),ei=r(async()=>{S.current+=1,ec(M.current),M.current=null,D(null),j(null),B({session:null,access:null,embeddedView:null}),_.exitEmbeddedView(),O.clearMockOverrides();try{localStorage.removeItem(k(V))}catch{console.warn("[Editor] Failed to clear template key from localStorage")}},[_,O,V,ec]),el=r(async(e,t)=>{let r=t?.generation??++S.current;try{let t=e.embeddedView?U(e.embeddedView):null,n=J(e.session),a=e.publishedData?K(e.publishedData):null,s=e.frontendData?N(e.frontendData):null,c=e.backendData?Q(e.backendData):null,m=null,p=null,f=L.selectors.access.getConfiguratorRawAccessInfo(),w=null===f?null:W(f.configurationId,f.revisionId);if(e.configuration){let t=v(e.key),r="latest",o=e.configuration,n=H(),a=n.validateAndMigrateState(o.entities,o.modelVersion);u(a,o.rootEntityType),m={configurationId:t,revisionId:r,modelVersion:n.modelVersion,rootEntityType:o.rootEntityType,data:a};let s=Math.floor(Date.now()/1e3),c=l({configurationId:t,revisionId:r,access:e.access.access,iat:s,exp:s+3600});p={configurationId:t,accessInfo:{raw:c,access:"owner"===e.access.access?i.Owner:"read-revision"===e.access.access?i.ReadRevision:i.Read,viewMode:"read-revision"===e.access.access,revisionId:r,configurationId:t}}}else null!==f&&(m=W(f.configurationId,f.revisionId));if(r!==S.current)return;null!==w&&d.set(w.configurationId,[w]),null!==m&&d.set(m.configurationId,[m]),null!==t?_.enterEmbeddedView(t):_.exitEmbeddedView(),O.updateOverrides({accessService:p,accessLevel:null===p?e.access.access:null,sessionContext:n,publishedData:a,frontendData:s,backendData:c,webComponentProperties:e.webComponentProperties??null,embeddedViewActive:null!==t,persistenceConfig:L.selectors.overrides.getPersistenceConfig()}),M.current!==e.key&&ec(M.current),M.current=e.key,D(e.key),j(e),B({session:null,access:null,embeddedView:null});var o=e.key;try{localStorage.setItem(k(V),o)}catch{console.warn("[Editor] Failed to store template key to localStorage")}}catch(o){let r="Template could not be applied, because an unknown error has occurred. Please check the template configuration and try again.";if(t?.errorPresentation==="console")return void console.warn(`[Editor] Template "${e.title}" could not be applied:`,o instanceof Error?o.message:r);ee(o,r)}},[J,H,K,N,Q,U,_,O,ee,V,L,ec,W]),ed=r(async e=>{let t=++S.current;await Y()&&t===S.current&&await el(e,{generation:t})},[Y,el]);y.onMockTemplateChange.useSubscription(void 0,{enabled:!z,onData:e=>{F()&&A(e.templates)}}),n(()=>{if(G&&G.length>0&&!P.current){P.current=!0;let e=(e=>{try{return localStorage.getItem(k(e))}catch{return null}})(V);if(e){let t=G.find(t=>t.key===e);if(t)return void el(t,{errorPresentation:"console"});console.warn(`[Editor] Stored template "${e}" not found in available templates`)}if(C){let e=G[0];e&&el(e,{errorPresentation:"console"})}}},[C,G,el,V]);let eu=a(()=>({activeTemplateKey:x,activeCustomizations:$,effectiveMockTemplates:G,applySessionMock:et,applyAccessMock:er,resetSessionOverride:en,resetAccessOverride:ea,applyEmbeddedViewMock:eo,resetEmbeddedViewOverride:es,applyTemplate:ed,resetAllMocks:ei}),[x,$,G,et,er,en,ea,eo,es,ed,ei]);return e(E.Provider,{value:eu,children:o})};export const useEditorMockContext=()=>{let e=o(E);if(null===e)throw Error("useEditorMockContext must be used within EditorMockProvider");return e};
@@ -1,30 +1,31 @@
1
- import{P as e,match as t}from"ts-pattern";import{Imports as a}from"./imports.js";export const generateConfigBuilder=(i,n,o,s,r,d,l,m,p,h,c,u,g)=>{let y=[],C=new a("./configurator-builder.js",g);C.importMembers("./application-types.js","PrefetchedFinalizeData","FinalizeData","FinalizeResult","NavigationState","ViewState","ToolState","ExportState","CallbackData","AdminNavigationState","AdminViewState","ApplicationVersion","PublishedDataHash","$dataSpec");let w=(a=>{if(!a||0===a.length)return"";let i=[];for(let n of a){let a=t(n).with({type:"ConfigurationLink"},e=>` .addLink({
1
+ import{P as e,match as t}from"ts-pattern";import{Imports as a}from"./imports.js";export const generateConfigBuilder=(i,n,o,s,r,d,m,l,p,h,c,u,g)=>{let y=[],w=new a("./configurator-builder.js",g);w.importMembers("./application-types.js","PrefetchedFinalizeData","FinalizeData","FinalizeResult","NavigationState","ViewState","ToolState","ExportState","CallbackData","AdminNavigationState","AdminViewState","ApplicationVersion","PublishedDataHash","$dataSpec");let C=(a=>{if(!a||0===a.length)return"";let i=[],n=new Set;for(let o of a){if(n.has(o.name))throw Error(`Resource with name ${o.name} already exists!`);n.add(o.name);let a=t(o).with({type:"ConfigurationLink"},e=>` {
2
2
  type: 'ConfigurationLink',
3
3
  name: '${e.name}',
4
- })`).with({type:"Csv"},e=>{let t=e.s3Key?`,
5
- s3Key: '${e.s3Key}'`:"";return` .addCsv({
4
+ },`).with({type:"Csv"},e=>{let t=e.s3Key?`,
5
+ s3Key: '${e.s3Key}'`:"";return` {
6
6
  type: 'Csv',
7
7
  name: '${e.name}'${t},
8
- })`}).with({type:"Pdf"},e=>{let t=e.s3Key?`,
9
- s3Key: '${e.s3Key}'`:"";return` .addPdf({
8
+ },`}).with({type:"Pdf"},e=>{let t=e.s3Key?`,
9
+ s3Key: '${e.s3Key}'`:"";return` {
10
10
  type: 'Pdf',
11
11
  name: '${e.name}'${t},
12
- })`}).with({type:"Image",clientGenerated:!0,s3Key:e.string},e=>` .addClientGeneratedImage({
12
+ },`}).with({type:"Image",clientGenerated:!0,s3Key:e.string},e=>` {
13
13
  type: 'Image',
14
14
  name: '${e.name}',
15
15
  clientGenerated: true,
16
16
  s3Key: '${e.s3Key}',
17
- })`).with({type:"Image",exists:!0,url:e.string},e=>` .addExistingImage({
17
+ },`).with({type:"Image",exists:!0,url:e.string},e=>` {
18
18
  type: 'Image',
19
19
  name: '${e.name}',
20
20
  exists: true,
21
21
  url: '${e.url}',
22
- })`).with({type:"Image"},e=>` .addGeneratedImage({
22
+ },`).with({type:"Image"},e=>` {
23
23
  type: 'Image',
24
24
  name: '${e.name}',
25
25
  s3Key: '${e.s3Key}',
26
- })`).exhaustive();i.push(a)}return`const generatedResources = new ResourceBuilder()${i.join("\n")}
27
- .build()`})(s);if(w&&y.push(w),y.push(`
26
+ },`).exhaustive();i.push(a)}return`const generatedResources = [
27
+ ${i.join("\n")}
28
+ ] as const`})(s);if(C&&y.push(C),y.push(`
28
29
  // The generated optics reach the builder as untyped project modules, so the entity and data types
29
30
  // they used to carry by inference are stated here.
30
31
  export const generatedConfiguratorBuilder = new ConfiguratorBuilder<
@@ -55,7 +56,7 @@ import{P as e,match as t}from"ts-pattern";import{Imports as a}from"./imports.js"
55
56
  .withDataSpec($dataSpec)
56
57
  .withPublishedDataHash(PublishedDataHash)
57
58
  .withVersion(ApplicationVersion)${c?`
58
- .withTextLanguages(${JSON.stringify(c)})`:""}`),o&&y.push(`.withWebComponentTag('${o}')`),i&&(y.push(".withPresets(generatedPresets)"),C.importMembers("./presets.js","generatedPresets")),n&&(y.push(".withAdminPresets(generatedAdminPresets)"),C.importMembers("./admin-presets.js","generatedAdminPresets")),w&&y.push(".withResources(generatedResources)"),r?.canCreate&&y.push(`.withAcl({ canCreate: [${r.canCreate.map(e=>`'${e}'`).join(", ")}] })`),d&&y.push(".withAdminRelease(true)"),void 0!==l||void 0!==m||void 0!==p){let e=[];void 0!==l&&e.push(`appLoader: '${l}'`),void 0!==m&&e.push(`preview: '${m}'`),void 0!==p&&e.push(`alwaysExpand: ${p}`),e.length>0&&y.push(`.withUi({ ${e.join(", ")} })`)}if(h){let e=[];if(void 0!==h.baseResourcesUrl&&e.push(`baseResourcesUrl: ${JSON.stringify(h.baseResourcesUrl)}`),void 0!==h.prefetchTextureUrls){let t=h.prefetchTextureUrls.map(e=>JSON.stringify(e)).join(", ");e.push(`prefetchTextureUrls: [${t}]`)}void 0!==h.deploymentQueryDisabled&&e.push(`deploymentQueryDisabled: ${h.deploymentQueryDisabled}`),e.length>0&&y.push(`.withResourcesConfig({ ${e.join(", ")} })`)}if(u&&Object.keys(u).length>0){let e=JSON.stringify(u);y.push(`.withChunks(${e})`)}let b=["ConfiguratorBuilder"];return w&&b.push("ResourceBuilder"),C.importMembers("@salsita-ai/sdk/domain",...b),C.importMembers("./components/index.js","generatedComponents"),C.importMembers("./admin-components/index.js","adminGeneratedComponents"),C.importMembers("./implementation.js","createRecipe","implementCustomInvariants","attachComponent","implementCustomExpressions"),C.importMembers("./admin-implementation.js","createAdminRecipe","implementCustomAdminInvariants","attachAdminComponent","implementAdminCustomExpressions","createMapPublishedRevisionDataHandler","createMapPublishedChunkedDataHandler","createDataRowValidatorHandler","createSheetValidatorHandler"),y.push(`
59
+ .withTextLanguages(${JSON.stringify(c)})`:""}`),o&&y.push(`.withWebComponentTag('${o}')`),i&&(y.push(".withPresets(generatedPresets)"),w.importMembers("./presets.js","generatedPresets")),n&&(y.push(".withAdminPresets(generatedAdminPresets)"),w.importMembers("./admin-presets.js","generatedAdminPresets")),C&&y.push(".withResources(generatedResources)"),r?.canCreate&&y.push(`.withAcl({ canCreate: [${r.canCreate.map(e=>`'${e}'`).join(", ")}] })`),d&&y.push(".withAdminRelease(true)"),void 0!==m||void 0!==l||void 0!==p){let e=[];void 0!==m&&e.push(`appLoader: '${m}'`),void 0!==l&&e.push(`preview: '${l}'`),void 0!==p&&e.push(`alwaysExpand: ${p}`),e.length>0&&y.push(`.withUi({ ${e.join(", ")} })`)}if(h){let e=[];if(void 0!==h.baseResourcesUrl&&e.push(`baseResourcesUrl: ${JSON.stringify(h.baseResourcesUrl)}`),void 0!==h.prefetchTextureUrls){let t=h.prefetchTextureUrls.map(e=>JSON.stringify(e)).join(", ");e.push(`prefetchTextureUrls: [${t}]`)}void 0!==h.deploymentQueryDisabled&&e.push(`deploymentQueryDisabled: ${h.deploymentQueryDisabled}`),e.length>0&&y.push(`.withResourcesConfig({ ${e.join(", ")} })`)}if(u&&Object.keys(u).length>0){let e=JSON.stringify(u);y.push(`.withChunks(${e})`)}return w.importMembers("@salsita-ai/sdk/domain","ConfiguratorBuilder"),w.importMembers("./components/index.js","generatedComponents"),w.importMembers("./admin-components/index.js","adminGeneratedComponents"),w.importMembers("./implementation.js","createRecipe","implementCustomInvariants","attachComponent","implementCustomExpressions"),w.importMembers("./admin-implementation.js","createAdminRecipe","implementCustomAdminInvariants","attachAdminComponent","implementAdminCustomExpressions","createMapPublishedRevisionDataHandler","createMapPublishedChunkedDataHandler","createDataRowValidatorHandler","createSheetValidatorHandler"),y.push(`
59
60
  import * as AdminEnhancenModel from './admin-enhanced-model.js'
60
61
  import * as AdminModel from './admin-model/index.js'
61
62
  import * as EnhancedModel from './enhanced-model.js'
@@ -101,4 +102,4 @@ import{P as e,match as t}from"ts-pattern";import{Imports as a}from"./imports.js"
101
102
  createSheetValidatorHandler: createSheetValidatorHandler,
102
103
  },
103
104
  }
104
- `),{modulePath:C.targetModule,content:["/* eslint-disable */",C.toString(),...y].join("\n")}};
105
+ `),{modulePath:w.targetModule,content:["/* eslint-disable */",w.toString(),...y].join("\n")}};
@@ -1,4 +1,2 @@
1
- import{DOMAIN_SDK_MODULE as e}from"./imports.js";export const generateConstantExpressions=(t,n)=>(t.importMembers(e,"createConstantExpressionFactory"),t.importMembers(n?"./admin-model/index.js":"./model/index.js","AnyDomainEntity","Aliases","RootEntity"),t.importMembers(n?"./admin-enhanced-model.js":"./enhanced-model.js","constants"),`export const constantExpressions = createConstantExpressionFactory<AnyDomainEntity, RootEntity, PublishedData, SessionData, FrontendData, Aliases>(
2
- {}, // insert expression metas here, once ready
3
- )(constants)
1
+ import{DOMAIN_SDK_MODULE as s}from"./imports.js";export const generateConstantExpressions=(t,n)=>(t.importMembers(s,"createConstantExpressionFactory"),t.importMembers(n?"./admin-enhanced-model.js":"./enhanced-model.js","constants"),`export const constantExpressions = createConstantExpressionFactory()(constants)
4
2
  `);
@@ -1,7 +1 @@
1
- import{DOMAIN_SDK_MODULE as e}from"./imports.js";import{stringifyWithCodeRefsAndI18n as i}from"./stringify-with-code-refs-and-i18n.js";export const generateDefaults=(t,s,n)=>(s.importMembers(e,"RecipeFactoryBuilder"),s.importMembers(n?"./admin-model/index.js":"./model/index.js","AnyDomainEntity","Aliases","aliases"),n)?`export const createAdminRecipe = RecipeFactoryBuilder.forAliases<AnyDomainEntity, Aliases>(aliases)
2
- .forEntities(AnyDomainEntity.reflections)
3
- .withDefaults(${i(t,s)})
4
- .build()`:`export const createRecipe = RecipeFactoryBuilder.forAliases<AnyDomainEntity, Aliases>(aliases)
5
- .forEntities(AnyDomainEntity.reflections)
6
- .withDefaults(${i(t,s)})
7
- .build()`;
1
+ import{DOMAIN_SDK_MODULE as e}from"./imports.js";import{stringifyWithCodeRefsAndI18n as i}from"./stringify-with-code-refs-and-i18n.js";export const generateDefaults=(t,r,n)=>(r.importMembers(e,"createRecipeFactory"),r.importMembers(n?"./admin-model/index.js":"./model/index.js","AnyDomainEntity","aliases"),`export const ${n?"createAdminRecipe":"createRecipe"} = createRecipeFactory<AnyDomainEntity>(aliases, AnyDomainEntity.reflections, ${i(t,r)})`);
@@ -1,12 +1,8 @@
1
- import{generateConstantExpressions as t}from"./constant-expressions.js";import{generateDataExpressions as e}from"./data-expressions.js";import{generateDefaults as n}from"./defaults.js";import{DOMAIN_SDK_MODULE as s,Imports as a}from"./imports.js";import{generateInvariants as i}from"./invariants.js";import{generateRelations as o}from"./relations.js";export const generateImplementation=async(r,m,p,d,l)=>{let D=[],u=new a(d?"./admin-implementation.js":"./implementation.js",l);return u.importMembers("@salsita-ai/sdk/domain","AliasedExpressions","createConstantExpressionFactory","DomainComponentOpticBuilder","createCustomExpressionFactory","DomainBuilder","RuntimeExpressionContext"),u.importMembers(d?"./admin-enhanced-model.js":"./enhanced-model.js","$entityReflections","$Map"),u.importMembers(d?"./admin-model/index.js":"./model/index.js","AnyDomainEntity","Aliases","RootEntity","aliases","entities","RootEntity","modelVersion"),u.importMembers("./application-types.js","PublishedData","SessionData","FrontendData"),d||u.importMembers("./application-types.js","BackendData"),D.push(o(r.relations,u,d)),D.push(t(u,d)),D.push(n(r.defaults,u,d)),D.push(i(r.invariants,p,u,d)),d?D.push(`
2
- export const attachAdminComponent = DomainComponentOpticBuilder.from<AnyDomainEntity, RootEntity, $Map, PublishedData, SessionData, FrontendData, Aliases, RuntimeExpressionContext<AnyDomainEntity>>(aliases)`):D.push(`
3
- export const attachComponent = DomainComponentOpticBuilder.from<AnyDomainEntity, RootEntity, $Map, PublishedData, SessionData, FrontendData, Aliases, RuntimeExpressionContext<AnyDomainEntity>>(aliases)`),d?D.push(`
4
- export const implementAdminCustomExpressions = createCustomExpressionFactory<AnyDomainEntity, RootEntity, $Map, PublishedData, SessionData, FrontendData, Aliases, RuntimeExpressionContext<AnyDomainEntity>>(
5
- {} // TODO pass in meta-data once we have them
6
- )`):D.push(`
7
- export const implementCustomExpressions = createCustomExpressionFactory<AnyDomainEntity, RootEntity, $Map, PublishedData, SessionData, FrontendData, Aliases, RuntimeExpressionContext<AnyDomainEntity>>(
8
- {} // TODO pass in meta-data once we have them
9
- )`),D.push(e(m,d,u)),d?(u.importMembers(s,"commonAdminCustomExpressions","createMapPublishedRevisionDataHandlerFactory","createMapPublishedChunkedDataHandlerFactory"),D.push(`
1
+ import{generateConstantExpressions as t}from"./constant-expressions.js";import{generateDataExpressions as e}from"./data-expressions.js";import{generateDefaults as n}from"./defaults.js";import{DOMAIN_SDK_MODULE as s,Imports as i}from"./imports.js";import{generateInvariants as a}from"./invariants.js";import{generateRelations as o}from"./relations.js";export const generateImplementation=async(r,m,p,d,l)=>{let u=[],D=new i(d?"./admin-implementation.js":"./implementation.js",l);return D.importMembers("@salsita-ai/sdk/domain","AliasedExpressions","createConstantExpressionFactory","DomainComponentOpticBuilder","createCustomExpressionFactory","DomainBuilder","RuntimeExpressionContext"),D.importMembers(d?"./admin-enhanced-model.js":"./enhanced-model.js","$entityReflections","$Map"),D.importMembers(d?"./admin-model/index.js":"./model/index.js","AnyDomainEntity","Aliases","RootEntity","aliases","entities","RootEntity","modelVersion"),D.importMembers("./application-types.js","PublishedData","SessionData","FrontendData"),d||D.importMembers("./application-types.js","BackendData"),u.push(o(r.relations,D,d)),u.push(t(D,d)),u.push(n(r.defaults,D,d)),u.push(a(r.invariants,p,D,d)),d?u.push(`
2
+ export const attachAdminComponent = DomainComponentOpticBuilder.from<AnyDomainEntity, RootEntity, $Map, PublishedData, SessionData, FrontendData, Aliases, RuntimeExpressionContext<AnyDomainEntity>>(aliases)`):u.push(`
3
+ export const attachComponent = DomainComponentOpticBuilder.from<AnyDomainEntity, RootEntity, $Map, PublishedData, SessionData, FrontendData, Aliases, RuntimeExpressionContext<AnyDomainEntity>>(aliases)`),d?u.push(`
4
+ export const implementAdminCustomExpressions = createCustomExpressionFactory<AnyDomainEntity, RootEntity, $Map, PublishedData, SessionData, FrontendData, Aliases, RuntimeExpressionContext<AnyDomainEntity>>()`):u.push(`
5
+ export const implementCustomExpressions = createCustomExpressionFactory<AnyDomainEntity, RootEntity, $Map, PublishedData, SessionData, FrontendData, Aliases, RuntimeExpressionContext<AnyDomainEntity>>()`),u.push(e(m,d,D)),d?(D.importMembers(s,"commonAdminCustomExpressions","createMapPublishedRevisionDataHandlerFactory","createMapPublishedChunkedDataHandlerFactory"),u.push(`
10
6
  export const createMapPublishedRevisionDataHandler = createMapPublishedRevisionDataHandlerFactory<
11
7
  AnyDomainEntity,
12
8
  RootEntity,
@@ -36,7 +32,7 @@ export const adminDomainBuilder = DomainBuilder.from<AnyDomainEntity, RootEntity
36
32
  )
37
33
  .withExpressions(constantExpressions)
38
34
  .withExpressions(relationExpressions)
39
- .withExpressions(implementAdminCustomExpressions(commonAdminCustomExpressions))`)):D.push(`
35
+ .withExpressions(implementAdminCustomExpressions(commonAdminCustomExpressions))`)):u.push(`
40
36
  export const domainBuilder = DomainBuilder.from<AnyDomainEntity, RootEntity, $Map, PublishedData, SessionData, FrontendData, Aliases>(
41
37
  entities,
42
38
  aliases,
@@ -51,4 +47,4 @@ export const adminDomainBuilder = DomainBuilder.from<AnyDomainEntity, RootEntity
51
47
  )
52
48
  .withExpressions(constantExpressions)
53
49
  .withExpressions(relationExpressions)
54
- .withExpressions(dataExpressions)`),{modulePath:u.targetModule,content:["/* eslint-disable */",u.toString(),...D].join("\n")}};
50
+ .withExpressions(dataExpressions)`),{modulePath:D.targetModule,content:["/* eslint-disable */",D.toString(),...u].join("\n")}};