@plures/praxis 1.0.3 → 1.1.0

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 (534) hide show
  1. package/FRAMEWORK.md +55 -5
  2. package/LICENSE +21 -21
  3. package/README.md +162 -375
  4. package/core/codegen/docs-generator.ts +5 -2
  5. package/core/codegen/index.ts +1 -1
  6. package/core/codegen/ts-generator.ts +15 -15
  7. package/core/db-adapter/index.ts +2 -2
  8. package/core/db-adapter/sync-engine.ts +17 -6
  9. package/core/logic-engine/engine.ts +1 -1
  10. package/core/logic-engine/index.ts +2 -2
  11. package/core/logic-engine/protocol.ts +1 -1
  12. package/core/logic-engine/psf-adapter.ts +8 -4
  13. package/core/logic-engine/rules.ts +1 -1
  14. package/core/schema-engine/compiler.ts +53 -11
  15. package/core/schema-engine/generator.ts +17 -7
  16. package/core/schema-engine/index.ts +2 -2
  17. package/core/schema-engine/psf.ts +12 -3
  18. package/core/schema-engine/types.ts +3 -11
  19. package/core/schema-engine/validator.ts +112 -22
  20. package/dist/browser/engine-BjdqxeXG.d.ts +333 -0
  21. package/dist/browser/index.d.ts +3004 -0
  22. package/dist/browser/index.js +2892 -0
  23. package/dist/{src → browser}/integrations/svelte.d.ts +19 -17
  24. package/dist/browser/integrations/svelte.js +298 -0
  25. package/dist/node/auth-STARLY7I.js +207 -0
  26. package/dist/node/build-Y7OT5VBF.js +144 -0
  27. package/dist/node/canvas-UERZHJYW.js +362 -0
  28. package/dist/node/chunk-DSDC2JWZ.js +256 -0
  29. package/dist/node/chunk-FXQZXAWF.js +175 -0
  30. package/dist/node/chunk-N5Y37EUV.js +202 -0
  31. package/dist/node/chunk-QGM4M3NI.js +37 -0
  32. package/dist/node/chunk-RJMWCNHR.js +175 -0
  33. package/dist/node/chunk-SRM3OPPM.js +404 -0
  34. package/dist/node/chunk-UATVJBNV.js +175 -0
  35. package/dist/node/chunk-UY7YEBE2.js +159 -0
  36. package/dist/node/chunk-XCY2VIFX.js +143 -0
  37. package/dist/node/chunk-YXH4Y7ZZ.js +349 -0
  38. package/dist/node/cli/index.cjs +217418 -0
  39. package/dist/node/cli/index.d.cts +1 -0
  40. package/dist/node/cli/index.d.ts +1 -0
  41. package/dist/node/cli/index.js +690 -0
  42. package/dist/node/cloud/index.cjs +1043 -0
  43. package/dist/node/cloud/index.d.cts +864 -0
  44. package/dist/node/cloud/index.d.ts +864 -0
  45. package/dist/node/cloud/index.js +456 -0
  46. package/dist/node/cloud-AXOK4PSN.js +212 -0
  47. package/dist/node/component.cjs +374 -0
  48. package/dist/node/component.d.cts +125 -0
  49. package/dist/{src/core/component/generator.d.ts → node/component.d.ts} +11 -8
  50. package/dist/node/component.js +9 -0
  51. package/dist/node/components/index.cjs +216 -0
  52. package/dist/node/components/index.d.cts +43 -0
  53. package/dist/{src → node}/components/index.d.ts +8 -8
  54. package/dist/node/components/index.js +7 -0
  55. package/dist/node/create-TRLSVCNQ.js +584 -0
  56. package/dist/node/dev-PMJZUYGE.js +65 -0
  57. package/dist/node/engine-1iqLe6_P.d.ts +214 -0
  58. package/dist/node/engine-CVJobhHm.d.cts +214 -0
  59. package/dist/node/index.cjs +3247 -0
  60. package/dist/node/index.d.cts +2579 -0
  61. package/dist/node/index.d.ts +2579 -0
  62. package/dist/node/index.js +2098 -0
  63. package/dist/node/integrations/svelte.cjs +330 -0
  64. package/dist/node/integrations/svelte.d.cts +309 -0
  65. package/dist/node/integrations/svelte.d.ts +309 -0
  66. package/dist/node/integrations/svelte.js +300 -0
  67. package/dist/node/orchestrate-737TCL5H.js +127 -0
  68. package/dist/{src/core/protocol.d.ts → node/protocol-Qek7ebBl.d.cts} +11 -10
  69. package/dist/node/protocol-Qek7ebBl.d.ts +122 -0
  70. package/dist/node/schema.cjs +200 -0
  71. package/dist/{src/core/schema/types.d.ts → node/schema.d.cts} +30 -29
  72. package/dist/node/schema.d.ts +371 -0
  73. package/dist/node/schema.js +9 -0
  74. package/dist/{src/runtime/terminal-adapter.d.ts → node/terminal-adapter-07HGftGQ.d.ts} +86 -11
  75. package/dist/node/terminal-adapter-XLtCjjb_.d.cts +231 -0
  76. package/dist/node/verify-YBZ7W24H.js +213239 -0
  77. package/docs/MONETIZATION.md +21 -16
  78. package/docs/REACTIVE_REDESIGN.md +132 -0
  79. package/docs/README.md +47 -36
  80. package/docs/SVELTE_INTEGRATION_STRATEGY.md +68 -0
  81. package/docs/TERMINAL_NODE.md +27 -24
  82. package/docs/core/building-extensions.md +58 -61
  83. package/docs/core/cli-usage.md +59 -59
  84. package/docs/core/code-canvas-sync.md +28 -16
  85. package/docs/core/logic-engine.md +77 -82
  86. package/docs/core/pluresdb-integration.md +29 -39
  87. package/docs/core/schema-model.md +66 -52
  88. package/docs/core/ui-generation.md +57 -49
  89. package/docs/core/what-is-praxis.md +32 -15
  90. package/docs/guides/canvas.md +21 -5
  91. package/docs/guides/getting-started.md +13 -7
  92. package/docs/guides/history-state-pattern.md +65 -51
  93. package/docs/guides/orchestration.md +46 -32
  94. package/docs/guides/parallel-state-pattern.md +56 -72
  95. package/docs/guides/svelte-integration.md +45 -53
  96. package/docs/tutorials/README.md +16 -0
  97. package/docs/tutorials/ecommerce-cart.md +177 -95
  98. package/docs/tutorials/first-app.md +26 -41
  99. package/docs/tutorials/form-builder.md +191 -138
  100. package/docs/tutorials/todo-pluresdb.md +71 -69
  101. package/package.json +132 -97
  102. package/src/__tests__/actors.test.ts +68 -68
  103. package/src/__tests__/billing.test.ts +32 -32
  104. package/src/__tests__/canvas-components.test.ts +94 -73
  105. package/src/__tests__/cli-create.test.ts +28 -28
  106. package/src/__tests__/cloud.test.ts +36 -36
  107. package/src/__tests__/code-canvas-integration.test.ts +132 -141
  108. package/src/__tests__/docs-generator.test.ts +3 -9
  109. package/src/__tests__/dsl.test.ts +58 -64
  110. package/src/__tests__/edge-cases.test.ts +106 -108
  111. package/src/__tests__/engine.test.ts +51 -25
  112. package/src/__tests__/generators.test.ts +42 -44
  113. package/src/__tests__/introspection.test.ts +104 -114
  114. package/src/__tests__/pluresdb.test.ts +189 -187
  115. package/src/__tests__/protocol.test.ts +15 -15
  116. package/src/__tests__/provisioning.test.ts +61 -61
  117. package/src/__tests__/schema.test.ts +7 -11
  118. package/src/__tests__/state-docs-integration.test.ts +162 -145
  119. package/src/__tests__/svelte-integration.test.ts +16 -19
  120. package/src/__tests__/tauri-integration.test.ts +149 -147
  121. package/src/__tests__/terminal-node.test.ts +12 -7
  122. package/src/__tests__/unum-integration.test.ts +68 -68
  123. package/src/adapters/cli.ts +21 -15
  124. package/src/cli/commands/auth.ts +82 -78
  125. package/src/cli/commands/build.ts +29 -27
  126. package/src/cli/commands/canvas.ts +338 -127
  127. package/src/cli/commands/cloud.ts +47 -47
  128. package/src/cli/commands/create.ts +59 -47
  129. package/src/cli/commands/dev.ts +12 -12
  130. package/src/cli/commands/generate.ts +29 -40
  131. package/src/cli/commands/orchestrate.ts +24 -24
  132. package/src/cli/commands/verify.ts +7 -8
  133. package/src/cli/index.ts +14 -10
  134. package/src/cloud/README.md +28 -15
  135. package/src/cloud/auth.ts +55 -70
  136. package/src/cloud/billing.ts +59 -58
  137. package/src/cloud/client.ts +29 -35
  138. package/src/cloud/index.ts +19 -40
  139. package/src/cloud/marketplace.ts +69 -78
  140. package/src/cloud/provisioning.ts +42 -51
  141. package/src/cloud/relay/endpoints.ts +30 -34
  142. package/src/cloud/relay/health/index.ts +1 -1
  143. package/src/cloud/relay/stats/index.ts +1 -1
  144. package/src/cloud/relay/sync/index.ts +1 -1
  145. package/src/cloud/relay/usage/index.ts +1 -1
  146. package/src/cloud/sponsors.ts +31 -34
  147. package/src/cloud/types.ts +4 -4
  148. package/src/components/README.md +1 -0
  149. package/src/components/TerminalNode.svelte +457 -457
  150. package/src/components/index.ts +3 -4
  151. package/src/core/actors.ts +7 -7
  152. package/src/core/component/generator.ts +10 -28
  153. package/src/core/engine.ts +51 -24
  154. package/src/core/introspection.ts +37 -35
  155. package/src/core/logic/generator.ts +62 -62
  156. package/src/core/pluresdb/adapter.ts +8 -8
  157. package/src/core/pluresdb/generator.ts +39 -35
  158. package/src/core/pluresdb/index.ts +9 -12
  159. package/src/core/pluresdb/schema-registry.ts +22 -25
  160. package/src/core/pluresdb/store.ts +57 -57
  161. package/src/core/protocol.ts +14 -14
  162. package/src/core/reactive-engine.svelte.ts +65 -0
  163. package/src/core/reactive-engine.ts +67 -0
  164. package/src/core/rules.ts +4 -4
  165. package/src/core/schema/loader.common.ts +150 -0
  166. package/src/core/schema/loader.ts +19 -149
  167. package/src/core/schema/normalize.ts +34 -51
  168. package/src/core/schema/types.ts +47 -11
  169. package/src/dsl/index.ts +8 -8
  170. package/src/dsl.ts +11 -17
  171. package/src/examples/advanced-todo/App.svelte +506 -506
  172. package/src/examples/advanced-todo/README.md +58 -40
  173. package/src/examples/advanced-todo/index.ts +3 -3
  174. package/src/examples/auth-basic/index.ts +30 -30
  175. package/src/examples/cart/index.ts +50 -50
  176. package/src/examples/hero-ecommerce/index.ts +130 -157
  177. package/src/examples/svelte-counter/index.ts +22 -26
  178. package/src/flows.ts +6 -17
  179. package/src/index.browser.ts +204 -0
  180. package/src/index.ts +37 -42
  181. package/src/integrations/code-canvas.ts +237 -193
  182. package/src/integrations/pluresdb.ts +55 -35
  183. package/src/integrations/state-docs.ts +104 -104
  184. package/src/integrations/svelte.ts +35 -35
  185. package/src/integrations/tauri.ts +75 -73
  186. package/src/integrations/unum.ts +68 -61
  187. package/src/registry.ts +7 -14
  188. package/src/runtime/terminal-adapter.ts +31 -26
  189. package/src/step.ts +10 -16
  190. package/src/types.ts +1 -1
  191. package/templates/basic-app/README.md +6 -9
  192. package/templates/fullstack-app/README.md +10 -0
  193. package/dist/core/codegen/docs-generator.d.ts +0 -123
  194. package/dist/core/codegen/docs-generator.d.ts.map +0 -1
  195. package/dist/core/codegen/docs-generator.js +0 -674
  196. package/dist/core/codegen/docs-generator.js.map +0 -1
  197. package/dist/core/codegen/index.d.ts +0 -11
  198. package/dist/core/codegen/index.d.ts.map +0 -1
  199. package/dist/core/codegen/index.js +0 -13
  200. package/dist/core/codegen/index.js.map +0 -1
  201. package/dist/core/codegen/ts-generator.d.ts +0 -8
  202. package/dist/core/codegen/ts-generator.d.ts.map +0 -1
  203. package/dist/core/codegen/ts-generator.js +0 -8
  204. package/dist/core/codegen/ts-generator.js.map +0 -1
  205. package/dist/core/db-adapter/index.d.ts +0 -18
  206. package/dist/core/db-adapter/index.d.ts.map +0 -1
  207. package/dist/core/db-adapter/index.js +0 -23
  208. package/dist/core/db-adapter/index.js.map +0 -1
  209. package/dist/core/db-adapter/sync-engine.d.ts +0 -180
  210. package/dist/core/db-adapter/sync-engine.d.ts.map +0 -1
  211. package/dist/core/db-adapter/sync-engine.js +0 -342
  212. package/dist/core/db-adapter/sync-engine.js.map +0 -1
  213. package/dist/core/logic-engine/engine.d.ts +0 -8
  214. package/dist/core/logic-engine/engine.d.ts.map +0 -1
  215. package/dist/core/logic-engine/engine.js +0 -8
  216. package/dist/core/logic-engine/engine.js.map +0 -1
  217. package/dist/core/logic-engine/index.d.ts +0 -16
  218. package/dist/core/logic-engine/index.d.ts.map +0 -1
  219. package/dist/core/logic-engine/index.js +0 -16
  220. package/dist/core/logic-engine/index.js.map +0 -1
  221. package/dist/core/logic-engine/protocol.d.ts +0 -7
  222. package/dist/core/logic-engine/protocol.d.ts.map +0 -1
  223. package/dist/core/logic-engine/protocol.js +0 -7
  224. package/dist/core/logic-engine/protocol.js.map +0 -1
  225. package/dist/core/logic-engine/psf-adapter.d.ts +0 -88
  226. package/dist/core/logic-engine/psf-adapter.d.ts.map +0 -1
  227. package/dist/core/logic-engine/psf-adapter.js +0 -207
  228. package/dist/core/logic-engine/psf-adapter.js.map +0 -1
  229. package/dist/core/logic-engine/rules.d.ts +0 -7
  230. package/dist/core/logic-engine/rules.d.ts.map +0 -1
  231. package/dist/core/logic-engine/rules.js +0 -7
  232. package/dist/core/logic-engine/rules.js.map +0 -1
  233. package/dist/core/schema-engine/compiler.d.ts +0 -198
  234. package/dist/core/schema-engine/compiler.d.ts.map +0 -1
  235. package/dist/core/schema-engine/compiler.js +0 -262
  236. package/dist/core/schema-engine/compiler.js.map +0 -1
  237. package/dist/core/schema-engine/generator.d.ts +0 -115
  238. package/dist/core/schema-engine/generator.d.ts.map +0 -1
  239. package/dist/core/schema-engine/generator.js +0 -506
  240. package/dist/core/schema-engine/generator.js.map +0 -1
  241. package/dist/core/schema-engine/index.d.ts +0 -18
  242. package/dist/core/schema-engine/index.d.ts.map +0 -1
  243. package/dist/core/schema-engine/index.js +0 -18
  244. package/dist/core/schema-engine/index.js.map +0 -1
  245. package/dist/core/schema-engine/psf.d.ts +0 -612
  246. package/dist/core/schema-engine/psf.d.ts.map +0 -1
  247. package/dist/core/schema-engine/psf.js +0 -45
  248. package/dist/core/schema-engine/psf.js.map +0 -1
  249. package/dist/core/schema-engine/types.d.ts +0 -10
  250. package/dist/core/schema-engine/types.d.ts.map +0 -1
  251. package/dist/core/schema-engine/types.js +0 -7
  252. package/dist/core/schema-engine/types.js.map +0 -1
  253. package/dist/core/schema-engine/validator.d.ts +0 -140
  254. package/dist/core/schema-engine/validator.d.ts.map +0 -1
  255. package/dist/core/schema-engine/validator.js +0 -407
  256. package/dist/core/schema-engine/validator.js.map +0 -1
  257. package/dist/src/adapters/cli.d.ts +0 -43
  258. package/dist/src/adapters/cli.d.ts.map +0 -1
  259. package/dist/src/adapters/cli.js +0 -126
  260. package/dist/src/adapters/cli.js.map +0 -1
  261. package/dist/src/cli/commands/auth.d.ts +0 -26
  262. package/dist/src/cli/commands/auth.d.ts.map +0 -1
  263. package/dist/src/cli/commands/auth.js +0 -233
  264. package/dist/src/cli/commands/auth.js.map +0 -1
  265. package/dist/src/cli/commands/build.d.ts +0 -23
  266. package/dist/src/cli/commands/build.d.ts.map +0 -1
  267. package/dist/src/cli/commands/build.js +0 -162
  268. package/dist/src/cli/commands/build.js.map +0 -1
  269. package/dist/src/cli/commands/canvas.d.ts +0 -23
  270. package/dist/src/cli/commands/canvas.d.ts.map +0 -1
  271. package/dist/src/cli/commands/canvas.js +0 -215
  272. package/dist/src/cli/commands/canvas.js.map +0 -1
  273. package/dist/src/cli/commands/cloud.d.ts +0 -27
  274. package/dist/src/cli/commands/cloud.d.ts.map +0 -1
  275. package/dist/src/cli/commands/cloud.js +0 -232
  276. package/dist/src/cli/commands/cloud.js.map +0 -1
  277. package/dist/src/cli/commands/create.d.ts +0 -21
  278. package/dist/src/cli/commands/create.d.ts.map +0 -1
  279. package/dist/src/cli/commands/create.js +0 -621
  280. package/dist/src/cli/commands/create.js.map +0 -1
  281. package/dist/src/cli/commands/dev.d.ts +0 -21
  282. package/dist/src/cli/commands/dev.d.ts.map +0 -1
  283. package/dist/src/cli/commands/dev.js +0 -71
  284. package/dist/src/cli/commands/dev.js.map +0 -1
  285. package/dist/src/cli/commands/generate.d.ts +0 -25
  286. package/dist/src/cli/commands/generate.d.ts.map +0 -1
  287. package/dist/src/cli/commands/generate.js +0 -168
  288. package/dist/src/cli/commands/generate.js.map +0 -1
  289. package/dist/src/cli/commands/orchestrate.d.ts +0 -44
  290. package/dist/src/cli/commands/orchestrate.d.ts.map +0 -1
  291. package/dist/src/cli/commands/orchestrate.js +0 -150
  292. package/dist/src/cli/commands/orchestrate.js.map +0 -1
  293. package/dist/src/cli/commands/verify.d.ts +0 -10
  294. package/dist/src/cli/commands/verify.d.ts.map +0 -1
  295. package/dist/src/cli/commands/verify.js +0 -39
  296. package/dist/src/cli/commands/verify.js.map +0 -1
  297. package/dist/src/cli/index.d.ts +0 -8
  298. package/dist/src/cli/index.d.ts.map +0 -1
  299. package/dist/src/cli/index.js +0 -226
  300. package/dist/src/cli/index.js.map +0 -1
  301. package/dist/src/cloud/auth.d.ts +0 -51
  302. package/dist/src/cloud/auth.d.ts.map +0 -1
  303. package/dist/src/cloud/auth.js +0 -194
  304. package/dist/src/cloud/auth.js.map +0 -1
  305. package/dist/src/cloud/billing.d.ts +0 -184
  306. package/dist/src/cloud/billing.d.ts.map +0 -1
  307. package/dist/src/cloud/billing.js +0 -179
  308. package/dist/src/cloud/billing.js.map +0 -1
  309. package/dist/src/cloud/client.d.ts +0 -39
  310. package/dist/src/cloud/client.d.ts.map +0 -1
  311. package/dist/src/cloud/client.js +0 -176
  312. package/dist/src/cloud/client.js.map +0 -1
  313. package/dist/src/cloud/index.d.ts +0 -44
  314. package/dist/src/cloud/index.d.ts.map +0 -1
  315. package/dist/src/cloud/index.js +0 -44
  316. package/dist/src/cloud/index.js.map +0 -1
  317. package/dist/src/cloud/marketplace.d.ts +0 -166
  318. package/dist/src/cloud/marketplace.d.ts.map +0 -1
  319. package/dist/src/cloud/marketplace.js +0 -159
  320. package/dist/src/cloud/marketplace.js.map +0 -1
  321. package/dist/src/cloud/provisioning.d.ts +0 -110
  322. package/dist/src/cloud/provisioning.d.ts.map +0 -1
  323. package/dist/src/cloud/provisioning.js +0 -148
  324. package/dist/src/cloud/provisioning.js.map +0 -1
  325. package/dist/src/cloud/relay/endpoints.d.ts +0 -62
  326. package/dist/src/cloud/relay/endpoints.d.ts.map +0 -1
  327. package/dist/src/cloud/relay/endpoints.js +0 -217
  328. package/dist/src/cloud/relay/endpoints.js.map +0 -1
  329. package/dist/src/cloud/relay/health/index.d.ts +0 -5
  330. package/dist/src/cloud/relay/health/index.d.ts.map +0 -1
  331. package/dist/src/cloud/relay/health/index.js +0 -9
  332. package/dist/src/cloud/relay/health/index.js.map +0 -1
  333. package/dist/src/cloud/relay/stats/index.d.ts +0 -5
  334. package/dist/src/cloud/relay/stats/index.d.ts.map +0 -1
  335. package/dist/src/cloud/relay/stats/index.js +0 -9
  336. package/dist/src/cloud/relay/stats/index.js.map +0 -1
  337. package/dist/src/cloud/relay/sync/index.d.ts +0 -5
  338. package/dist/src/cloud/relay/sync/index.d.ts.map +0 -1
  339. package/dist/src/cloud/relay/sync/index.js +0 -9
  340. package/dist/src/cloud/relay/sync/index.js.map +0 -1
  341. package/dist/src/cloud/relay/usage/index.d.ts +0 -5
  342. package/dist/src/cloud/relay/usage/index.d.ts.map +0 -1
  343. package/dist/src/cloud/relay/usage/index.js +0 -9
  344. package/dist/src/cloud/relay/usage/index.js.map +0 -1
  345. package/dist/src/cloud/sponsors.d.ts +0 -81
  346. package/dist/src/cloud/sponsors.d.ts.map +0 -1
  347. package/dist/src/cloud/sponsors.js +0 -130
  348. package/dist/src/cloud/sponsors.js.map +0 -1
  349. package/dist/src/cloud/types.d.ts +0 -169
  350. package/dist/src/cloud/types.d.ts.map +0 -1
  351. package/dist/src/cloud/types.js +0 -7
  352. package/dist/src/cloud/types.js.map +0 -1
  353. package/dist/src/components/index.d.ts.map +0 -1
  354. package/dist/src/components/index.js +0 -17
  355. package/dist/src/components/index.js.map +0 -1
  356. package/dist/src/core/actors.d.ts +0 -95
  357. package/dist/src/core/actors.d.ts.map +0 -1
  358. package/dist/src/core/actors.js +0 -158
  359. package/dist/src/core/actors.js.map +0 -1
  360. package/dist/src/core/component/generator.d.ts.map +0 -1
  361. package/dist/src/core/component/generator.js +0 -349
  362. package/dist/src/core/component/generator.js.map +0 -1
  363. package/dist/src/core/engine.d.ts +0 -92
  364. package/dist/src/core/engine.d.ts.map +0 -1
  365. package/dist/src/core/engine.js +0 -199
  366. package/dist/src/core/engine.js.map +0 -1
  367. package/dist/src/core/introspection.d.ts +0 -141
  368. package/dist/src/core/introspection.d.ts.map +0 -1
  369. package/dist/src/core/introspection.js +0 -208
  370. package/dist/src/core/introspection.js.map +0 -1
  371. package/dist/src/core/logic/generator.d.ts +0 -76
  372. package/dist/src/core/logic/generator.d.ts.map +0 -1
  373. package/dist/src/core/logic/generator.js +0 -370
  374. package/dist/src/core/logic/generator.js.map +0 -1
  375. package/dist/src/core/pluresdb/adapter.d.ts +0 -72
  376. package/dist/src/core/pluresdb/adapter.d.ts.map +0 -1
  377. package/dist/src/core/pluresdb/adapter.js +0 -73
  378. package/dist/src/core/pluresdb/adapter.js.map +0 -1
  379. package/dist/src/core/pluresdb/generator.d.ts +0 -58
  380. package/dist/src/core/pluresdb/generator.d.ts.map +0 -1
  381. package/dist/src/core/pluresdb/generator.js +0 -191
  382. package/dist/src/core/pluresdb/generator.js.map +0 -1
  383. package/dist/src/core/pluresdb/index.d.ts +0 -15
  384. package/dist/src/core/pluresdb/index.d.ts.map +0 -1
  385. package/dist/src/core/pluresdb/index.js +0 -11
  386. package/dist/src/core/pluresdb/index.js.map +0 -1
  387. package/dist/src/core/pluresdb/schema-registry.d.ts +0 -104
  388. package/dist/src/core/pluresdb/schema-registry.d.ts.map +0 -1
  389. package/dist/src/core/pluresdb/schema-registry.js +0 -130
  390. package/dist/src/core/pluresdb/schema-registry.js.map +0 -1
  391. package/dist/src/core/pluresdb/store.d.ts +0 -199
  392. package/dist/src/core/pluresdb/store.d.ts.map +0 -1
  393. package/dist/src/core/pluresdb/store.js +0 -344
  394. package/dist/src/core/pluresdb/store.js.map +0 -1
  395. package/dist/src/core/protocol.d.ts.map +0 -1
  396. package/dist/src/core/protocol.js +0 -46
  397. package/dist/src/core/protocol.js.map +0 -1
  398. package/dist/src/core/rules.d.ts +0 -120
  399. package/dist/src/core/rules.d.ts.map +0 -1
  400. package/dist/src/core/rules.js +0 -81
  401. package/dist/src/core/rules.js.map +0 -1
  402. package/dist/src/core/schema/loader.d.ts +0 -47
  403. package/dist/src/core/schema/loader.d.ts.map +0 -1
  404. package/dist/src/core/schema/loader.js +0 -189
  405. package/dist/src/core/schema/loader.js.map +0 -1
  406. package/dist/src/core/schema/normalize.d.ts +0 -72
  407. package/dist/src/core/schema/normalize.d.ts.map +0 -1
  408. package/dist/src/core/schema/normalize.js +0 -190
  409. package/dist/src/core/schema/normalize.js.map +0 -1
  410. package/dist/src/core/schema/types.d.ts.map +0 -1
  411. package/dist/src/core/schema/types.js +0 -161
  412. package/dist/src/core/schema/types.js.map +0 -1
  413. package/dist/src/dsl/index.d.ts +0 -152
  414. package/dist/src/dsl/index.d.ts.map +0 -1
  415. package/dist/src/dsl/index.js +0 -132
  416. package/dist/src/dsl/index.js.map +0 -1
  417. package/dist/src/dsl.d.ts +0 -124
  418. package/dist/src/dsl.d.ts.map +0 -1
  419. package/dist/src/dsl.js +0 -130
  420. package/dist/src/dsl.js.map +0 -1
  421. package/dist/src/examples/advanced-todo/index.d.ts +0 -55
  422. package/dist/src/examples/advanced-todo/index.d.ts.map +0 -1
  423. package/dist/src/examples/advanced-todo/index.js +0 -222
  424. package/dist/src/examples/advanced-todo/index.js.map +0 -1
  425. package/dist/src/examples/auth-basic/index.d.ts +0 -17
  426. package/dist/src/examples/auth-basic/index.d.ts.map +0 -1
  427. package/dist/src/examples/auth-basic/index.js +0 -122
  428. package/dist/src/examples/auth-basic/index.js.map +0 -1
  429. package/dist/src/examples/cart/index.d.ts +0 -19
  430. package/dist/src/examples/cart/index.d.ts.map +0 -1
  431. package/dist/src/examples/cart/index.js +0 -202
  432. package/dist/src/examples/cart/index.js.map +0 -1
  433. package/dist/src/examples/hero-ecommerce/index.d.ts +0 -39
  434. package/dist/src/examples/hero-ecommerce/index.d.ts.map +0 -1
  435. package/dist/src/examples/hero-ecommerce/index.js +0 -506
  436. package/dist/src/examples/hero-ecommerce/index.js.map +0 -1
  437. package/dist/src/examples/svelte-counter/index.d.ts +0 -31
  438. package/dist/src/examples/svelte-counter/index.d.ts.map +0 -1
  439. package/dist/src/examples/svelte-counter/index.js +0 -123
  440. package/dist/src/examples/svelte-counter/index.js.map +0 -1
  441. package/dist/src/flows.d.ts +0 -125
  442. package/dist/src/flows.d.ts.map +0 -1
  443. package/dist/src/flows.js +0 -160
  444. package/dist/src/flows.js.map +0 -1
  445. package/dist/src/index.d.ts +0 -77
  446. package/dist/src/index.d.ts.map +0 -1
  447. package/dist/src/index.js +0 -64
  448. package/dist/src/index.js.map +0 -1
  449. package/dist/src/integrations/code-canvas.d.ts +0 -265
  450. package/dist/src/integrations/code-canvas.d.ts.map +0 -1
  451. package/dist/src/integrations/code-canvas.js +0 -451
  452. package/dist/src/integrations/code-canvas.js.map +0 -1
  453. package/dist/src/integrations/pluresdb.d.ts +0 -117
  454. package/dist/src/integrations/pluresdb.d.ts.map +0 -1
  455. package/dist/src/integrations/pluresdb.js +0 -117
  456. package/dist/src/integrations/pluresdb.js.map +0 -1
  457. package/dist/src/integrations/state-docs.d.ts +0 -191
  458. package/dist/src/integrations/state-docs.d.ts.map +0 -1
  459. package/dist/src/integrations/state-docs.js +0 -515
  460. package/dist/src/integrations/state-docs.js.map +0 -1
  461. package/dist/src/integrations/svelte.d.ts.map +0 -1
  462. package/dist/src/integrations/svelte.js +0 -447
  463. package/dist/src/integrations/svelte.js.map +0 -1
  464. package/dist/src/integrations/tauri.d.ts +0 -360
  465. package/dist/src/integrations/tauri.d.ts.map +0 -1
  466. package/dist/src/integrations/tauri.js +0 -278
  467. package/dist/src/integrations/tauri.js.map +0 -1
  468. package/dist/src/integrations/unum.d.ts +0 -159
  469. package/dist/src/integrations/unum.d.ts.map +0 -1
  470. package/dist/src/integrations/unum.js +0 -240
  471. package/dist/src/integrations/unum.js.map +0 -1
  472. package/dist/src/registry.d.ts +0 -94
  473. package/dist/src/registry.d.ts.map +0 -1
  474. package/dist/src/registry.js +0 -181
  475. package/dist/src/registry.js.map +0 -1
  476. package/dist/src/runtime/terminal-adapter.d.ts.map +0 -1
  477. package/dist/src/runtime/terminal-adapter.js +0 -239
  478. package/dist/src/runtime/terminal-adapter.js.map +0 -1
  479. package/dist/src/step.d.ts +0 -34
  480. package/dist/src/step.d.ts.map +0 -1
  481. package/dist/src/step.js +0 -111
  482. package/dist/src/step.js.map +0 -1
  483. package/dist/src/types.d.ts +0 -63
  484. package/dist/src/types.d.ts.map +0 -1
  485. package/dist/src/types.js +0 -6
  486. package/dist/src/types.js.map +0 -1
  487. package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts +0 -8
  488. package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts.map +0 -1
  489. package/dist/tools/ast-analyzer/src/ast-analyzer.js +0 -119
  490. package/dist/tools/ast-analyzer/src/ast-analyzer.js.map +0 -1
  491. package/dist/tools/cli/commands/index.d.ts +0 -7
  492. package/dist/tools/cli/commands/index.d.ts.map +0 -1
  493. package/dist/tools/cli/commands/index.js +0 -7
  494. package/dist/tools/cli/commands/index.js.map +0 -1
  495. package/dist/tools/cli/index.d.ts +0 -8
  496. package/dist/tools/cli/index.d.ts.map +0 -1
  497. package/dist/tools/cli/index.js +0 -9
  498. package/dist/tools/cli/index.js.map +0 -1
  499. package/dist/tools/watcher/index.d.ts +0 -105
  500. package/dist/tools/watcher/index.d.ts.map +0 -1
  501. package/dist/tools/watcher/index.js +0 -213
  502. package/dist/tools/watcher/index.js.map +0 -1
  503. package/dist/ui/canvas/canvas-projection.d.ts +0 -78
  504. package/dist/ui/canvas/canvas-projection.d.ts.map +0 -1
  505. package/dist/ui/canvas/canvas-projection.js +0 -416
  506. package/dist/ui/canvas/canvas-projection.js.map +0 -1
  507. package/dist/ui/canvas/canvas-state.d.ts +0 -200
  508. package/dist/ui/canvas/canvas-state.d.ts.map +0 -1
  509. package/dist/ui/canvas/canvas-state.js +0 -464
  510. package/dist/ui/canvas/canvas-state.js.map +0 -1
  511. package/dist/ui/canvas/components/index.d.ts +0 -95
  512. package/dist/ui/canvas/components/index.d.ts.map +0 -1
  513. package/dist/ui/canvas/components/index.js +0 -19
  514. package/dist/ui/canvas/components/index.js.map +0 -1
  515. package/dist/ui/canvas/index.d.ts +0 -32
  516. package/dist/ui/canvas/index.d.ts.map +0 -1
  517. package/dist/ui/canvas/index.js +0 -32
  518. package/dist/ui/canvas/index.js.map +0 -1
  519. package/dist/ui/canvas-inspector/src/server.d.ts +0 -2
  520. package/dist/ui/canvas-inspector/src/server.d.ts.map +0 -1
  521. package/dist/ui/canvas-inspector/src/server.js +0 -248
  522. package/dist/ui/canvas-inspector/src/server.js.map +0 -1
  523. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts +0 -5
  524. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts.map +0 -1
  525. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js +0 -58
  526. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js.map +0 -1
  527. package/dist/ui/svelte-generator/index.d.ts +0 -9
  528. package/dist/ui/svelte-generator/index.d.ts.map +0 -1
  529. package/dist/ui/svelte-generator/index.js +0 -11
  530. package/dist/ui/svelte-generator/index.js.map +0 -1
  531. package/dist/ui/svelte-generator/psf-generator.d.ts +0 -128
  532. package/dist/ui/svelte-generator/psf-generator.d.ts.map +0 -1
  533. package/dist/ui/svelte-generator/psf-generator.js +0 -506
  534. package/dist/ui/svelte-generator/psf-generator.js.map +0 -1
@@ -1,18 +1,18 @@
1
1
  /**
2
2
  * Canvas Components Tests
3
- *
3
+ *
4
4
  * Tests for the Praxis Canvas Svelte components infrastructure.
5
5
  */
6
6
 
7
7
  import { describe, it, expect } from 'vitest';
8
- import {
9
- CanvasStateManager,
8
+ import {
9
+ CanvasStateManager,
10
10
  createCanvasStateManager,
11
11
  type CanvasState,
12
12
  type CanvasNodeState,
13
13
  } from '../../ui/canvas/canvas-state.js';
14
- import {
15
- CanvasProjection,
14
+ import {
15
+ CanvasProjection,
16
16
  createCanvasProjection,
17
17
  type LayoutResult,
18
18
  } from '../../ui/canvas/canvas-projection.js';
@@ -35,15 +35,26 @@ describe('Canvas State Manager', () => {
35
35
  { id: 'event2', tag: 'AddToCart', description: 'Add to cart event', payloadSchema: {} },
36
36
  ],
37
37
  rules: [
38
- { id: 'rule1', name: 'Login Rule', description: 'Handle login', triggers: ['Login'], actions: [] },
38
+ {
39
+ id: 'rule1',
40
+ name: 'Login Rule',
41
+ description: 'Handle login',
42
+ triggers: ['Login'],
43
+ actions: [],
44
+ },
39
45
  ],
40
46
  constraints: [
41
- { id: 'constraint1', name: 'Auth Required', description: 'User must be authenticated', expression: 'true' },
47
+ {
48
+ id: 'constraint1',
49
+ name: 'Auth Required',
50
+ description: 'User must be authenticated',
51
+ expression: 'true',
52
+ },
42
53
  ],
43
54
  models: [
44
- {
45
- id: 'model1',
46
- name: 'User',
55
+ {
56
+ id: 'model1',
57
+ name: 'User',
47
58
  description: 'User model',
48
59
  fields: [
49
60
  { name: 'id', type: 'string', required: true },
@@ -52,7 +63,13 @@ describe('Canvas State Manager', () => {
52
63
  },
53
64
  ],
54
65
  components: [
55
- { id: 'comp1', name: 'UserCard', type: 'display', model: 'User', description: 'User card component' },
66
+ {
67
+ id: 'comp1',
68
+ name: 'UserCard',
69
+ type: 'display',
70
+ model: 'User',
71
+ description: 'User card component',
72
+ },
56
73
  ],
57
74
  flows: [],
58
75
  };
@@ -65,7 +82,7 @@ describe('Canvas State Manager', () => {
65
82
  it('should have initial state', () => {
66
83
  const manager = createCanvasStateManager();
67
84
  const state = manager.getState();
68
-
85
+
69
86
  expect(state).toBeDefined();
70
87
  expect(state.nodes).toBeInstanceOf(Map);
71
88
  expect(state.edges).toBeInstanceOf(Map);
@@ -79,7 +96,7 @@ describe('Canvas State Manager', () => {
79
96
  const manager = createCanvasStateManager();
80
97
  manager.loadFromSchema(testSchema);
81
98
  const state = manager.getState();
82
-
99
+
83
100
  expect(state.loading).toBe(false);
84
101
  // 2 facts + 2 events + 1 rule + 1 constraint + 1 model + 1 component = 8 nodes
85
102
  expect(state.nodes.size).toBe(8);
@@ -89,7 +106,7 @@ describe('Canvas State Manager', () => {
89
106
  const manager = createCanvasStateManager();
90
107
  manager.loadFromSchema(testSchema);
91
108
  const state = manager.getState();
92
-
109
+
93
110
  const fact1 = state.nodes.get('fact1');
94
111
  expect(fact1).toBeDefined();
95
112
  expect(fact1?.type).toBe('fact');
@@ -100,7 +117,7 @@ describe('Canvas State Manager', () => {
100
117
  const manager = createCanvasStateManager();
101
118
  manager.loadFromSchema(testSchema);
102
119
  const state = manager.getState();
103
-
120
+
104
121
  const event1 = state.nodes.get('event1');
105
122
  expect(event1).toBeDefined();
106
123
  expect(event1?.type).toBe('event');
@@ -111,15 +128,15 @@ describe('Canvas State Manager', () => {
111
128
  const manager = createCanvasStateManager();
112
129
  manager.loadFromSchema(testSchema);
113
130
  const state = manager.getState();
114
-
131
+
115
132
  const rule1 = state.nodes.get('rule1');
116
133
  expect(rule1).toBeDefined();
117
134
  expect(rule1?.type).toBe('rule');
118
135
  expect(rule1?.label).toBe('Login Rule');
119
-
136
+
120
137
  // Check for trigger edge from event to rule
121
138
  const edges = Array.from(state.edges.values());
122
- const triggerEdge = edges.find(e => e.source === 'event1' && e.target === 'rule1');
139
+ const triggerEdge = edges.find((e) => e.source === 'event1' && e.target === 'rule1');
123
140
  expect(triggerEdge).toBeDefined();
124
141
  expect(triggerEdge?.type).toBe('event');
125
142
  expect(triggerEdge?.label).toBe('triggers');
@@ -128,10 +145,10 @@ describe('Canvas State Manager', () => {
128
145
  it('should select a node', () => {
129
146
  const manager = createCanvasStateManager();
130
147
  manager.loadFromSchema(testSchema);
131
-
148
+
132
149
  manager.selectNode('fact1');
133
150
  const state = manager.getState();
134
-
151
+
135
152
  expect(state.selection.nodes.has('fact1')).toBe(true);
136
153
  expect(state.nodes.get('fact1')?.selected).toBe(true);
137
154
  });
@@ -139,11 +156,11 @@ describe('Canvas State Manager', () => {
139
156
  it('should support multi-selection with addToSelection', () => {
140
157
  const manager = createCanvasStateManager();
141
158
  manager.loadFromSchema(testSchema);
142
-
159
+
143
160
  manager.selectNode('fact1');
144
161
  manager.selectNode('fact2', true);
145
162
  const state = manager.getState();
146
-
163
+
147
164
  expect(state.selection.nodes.has('fact1')).toBe(true);
148
165
  expect(state.selection.nodes.has('fact2')).toBe(true);
149
166
  });
@@ -151,10 +168,10 @@ describe('Canvas State Manager', () => {
151
168
  it('should move a node', () => {
152
169
  const manager = createCanvasStateManager();
153
170
  manager.loadFromSchema(testSchema);
154
-
171
+
155
172
  manager.moveNode('fact1', { x: 100, y: 200 });
156
173
  const state = manager.getState();
157
-
174
+
158
175
  const node = state.nodes.get('fact1');
159
176
  expect(node?.position.x).toBe(100);
160
177
  expect(node?.position.y).toBe(200);
@@ -163,11 +180,11 @@ describe('Canvas State Manager', () => {
163
180
  it('should snap to grid when moving', () => {
164
181
  const manager = createCanvasStateManager();
165
182
  manager.loadFromSchema(testSchema);
166
-
183
+
167
184
  // Grid snap is enabled by default with size 20
168
185
  manager.moveNode('fact1', { x: 105, y: 215 });
169
186
  const state = manager.getState();
170
-
187
+
171
188
  const node = state.nodes.get('fact1');
172
189
  // With grid snap, 105 rounds to 100 (nearest multiple of 20)
173
190
  // and 215 rounds to 220
@@ -178,11 +195,11 @@ describe('Canvas State Manager', () => {
178
195
  it('should clear selection', () => {
179
196
  const manager = createCanvasStateManager();
180
197
  manager.loadFromSchema(testSchema);
181
-
198
+
182
199
  manager.selectNode('fact1');
183
200
  manager.selectNode('fact2', true);
184
201
  manager.clearSelection();
185
-
202
+
186
203
  const state = manager.getState();
187
204
  expect(state.selection.nodes.size).toBe(0);
188
205
  expect(state.nodes.get('fact1')?.selected).toBe(false);
@@ -191,10 +208,10 @@ describe('Canvas State Manager', () => {
191
208
 
192
209
  it('should set viewport', () => {
193
210
  const manager = createCanvasStateManager();
194
-
211
+
195
212
  manager.setViewport({ x: 50, y: 100, zoom: 1.5 });
196
213
  const state = manager.getState();
197
-
214
+
198
215
  expect(state.viewport.x).toBe(50);
199
216
  expect(state.viewport.y).toBe(100);
200
217
  expect(state.viewport.zoom).toBe(1.5);
@@ -202,10 +219,10 @@ describe('Canvas State Manager', () => {
202
219
 
203
220
  it('should set mode', () => {
204
221
  const manager = createCanvasStateManager();
205
-
222
+
206
223
  manager.setMode('pan');
207
224
  expect(manager.getState().mode).toBe('pan');
208
-
225
+
209
226
  manager.setMode('connect');
210
227
  expect(manager.getState().mode).toBe('connect');
211
228
  });
@@ -213,10 +230,10 @@ describe('Canvas State Manager', () => {
213
230
  it('should toggle grid visibility', () => {
214
231
  const manager = createCanvasStateManager();
215
232
  const initialVisibility = manager.getState().grid.visible;
216
-
233
+
217
234
  manager.toggleGrid();
218
235
  expect(manager.getState().grid.visible).toBe(!initialVisibility);
219
-
236
+
220
237
  manager.toggleGrid();
221
238
  expect(manager.getState().grid.visible).toBe(initialVisibility);
222
239
  });
@@ -224,14 +241,14 @@ describe('Canvas State Manager', () => {
224
241
  it('should support undo/redo', () => {
225
242
  const manager = createCanvasStateManager();
226
243
  manager.loadFromSchema(testSchema);
227
-
244
+
228
245
  // Make a change with undo support
229
246
  manager.selectNode('fact1');
230
-
247
+
231
248
  // Undo should work
232
249
  const undoResult = manager.undo();
233
250
  expect(undoResult).toBe(true);
234
-
251
+
235
252
  // Redo should work
236
253
  const redoResult = manager.redo();
237
254
  expect(redoResult).toBe(true);
@@ -241,21 +258,21 @@ describe('Canvas State Manager', () => {
241
258
  const manager = createCanvasStateManager();
242
259
  let callCount = 0;
243
260
  let lastState: CanvasState | null = null;
244
-
261
+
245
262
  const unsubscribe = manager.subscribe((state) => {
246
263
  callCount++;
247
264
  lastState = state;
248
265
  });
249
-
266
+
250
267
  // Initial call happens immediately
251
268
  expect(callCount).toBe(1);
252
269
  expect(lastState).not.toBeNull();
253
-
270
+
254
271
  // Changes trigger subscriber
255
272
  manager.setMode('pan');
256
273
  expect(callCount).toBe(2);
257
274
  expect(lastState?.mode).toBe('pan');
258
-
275
+
259
276
  // Unsubscribe works
260
277
  unsubscribe();
261
278
  manager.setMode('select');
@@ -265,17 +282,17 @@ describe('Canvas State Manager', () => {
265
282
  it('should export canvas state to schema', () => {
266
283
  const manager = createCanvasStateManager();
267
284
  manager.loadFromSchema(testSchema);
268
-
285
+
269
286
  // Move a node
270
287
  manager.moveNode('fact1', { x: 150, y: 300 });
271
-
288
+
272
289
  // Export back to schema
273
290
  const updatedSchema = manager.exportToSchema(testSchema);
274
-
291
+
275
292
  expect(updatedSchema.modifiedAt).toBeDefined();
276
-
293
+
277
294
  // Check that position was updated (snapped to grid size of 20)
278
- const updatedFact = updatedSchema.facts.find(f => f.id === 'fact1');
295
+ const updatedFact = updatedSchema.facts.find((f) => f.id === 'fact1');
279
296
  // 150 rounded to nearest 20 = 160, 300 is already on grid
280
297
  expect(updatedFact?.position).toEqual({ x: 160, y: 300 });
281
298
  });
@@ -293,9 +310,7 @@ describe('Canvas Projection', () => {
293
310
  { id: 'fact1', tag: 'Fact1', description: 'Test fact', payloadSchema: {} },
294
311
  { id: 'fact2', tag: 'Fact2', description: 'Test fact 2', payloadSchema: {} },
295
312
  ],
296
- events: [
297
- { id: 'event1', tag: 'Event1', description: 'Test event', payloadSchema: {} },
298
- ],
313
+ events: [{ id: 'event1', tag: 'Event1', description: 'Test event', payloadSchema: {} }],
299
314
  rules: [
300
315
  { id: 'rule1', name: 'Rule1', description: 'Test rule', triggers: ['Event1'], actions: [] },
301
316
  ],
@@ -313,7 +328,7 @@ describe('Canvas Projection', () => {
313
328
  it('should project schema to layout', () => {
314
329
  const projection = createCanvasProjection();
315
330
  const result = projection.projectSchema(testSchema);
316
-
331
+
317
332
  expect(result).toBeDefined();
318
333
  expect(result.positions).toBeInstanceOf(Map);
319
334
  expect(result.viewport).toBeDefined();
@@ -323,10 +338,10 @@ describe('Canvas Projection', () => {
323
338
  it('should generate positions for all nodes', () => {
324
339
  const projection = createCanvasProjection();
325
340
  const result = projection.projectSchema(testSchema);
326
-
341
+
327
342
  // 2 facts + 1 event + 1 rule = 4 nodes
328
343
  expect(result.positions.size).toBe(4);
329
-
344
+
330
345
  expect(result.positions.has('fact1')).toBe(true);
331
346
  expect(result.positions.has('fact2')).toBe(true);
332
347
  expect(result.positions.has('event1')).toBe(true);
@@ -337,22 +352,28 @@ describe('Canvas Projection', () => {
337
352
  const schemaWithPositions: PSFSchema = {
338
353
  ...testSchema,
339
354
  facts: [
340
- { id: 'fact1', tag: 'Fact1', description: 'Test', payloadSchema: {}, position: { x: 500, y: 500 } },
355
+ {
356
+ id: 'fact1',
357
+ tag: 'Fact1',
358
+ description: 'Test',
359
+ payloadSchema: {},
360
+ position: { x: 500, y: 500 },
361
+ },
341
362
  ],
342
363
  events: [],
343
364
  rules: [],
344
365
  };
345
-
366
+
346
367
  const projection = createCanvasProjection({ respectExisting: true });
347
368
  const result = projection.projectSchema(schemaWithPositions);
348
-
369
+
349
370
  expect(result.positions.get('fact1')).toEqual({ x: 500, y: 500 });
350
371
  });
351
372
 
352
373
  it('should use hierarchical layout', () => {
353
374
  const projection = createCanvasProjection({ algorithm: 'hierarchical' });
354
375
  const result = projection.projectSchema(testSchema);
355
-
376
+
356
377
  expect(result.positions.size).toBe(4);
357
378
  // Each node should have a valid position
358
379
  for (const pos of result.positions.values()) {
@@ -364,12 +385,12 @@ describe('Canvas Projection', () => {
364
385
  it('should use grid layout', () => {
365
386
  const projection = createCanvasProjection({ algorithm: 'grid' });
366
387
  const result = projection.projectSchema(testSchema);
367
-
388
+
368
389
  expect(result.positions.size).toBe(4);
369
390
  // Grid layout should have evenly spaced positions
370
391
  const positions = Array.from(result.positions.values());
371
392
  // All positions should be defined
372
- positions.forEach(pos => {
393
+ positions.forEach((pos) => {
373
394
  expect(pos).toBeDefined();
374
395
  expect(typeof pos.x).toBe('number');
375
396
  expect(typeof pos.y).toBe('number');
@@ -379,12 +400,12 @@ describe('Canvas Projection', () => {
379
400
  it('should use circular layout', () => {
380
401
  const projection = createCanvasProjection({ algorithm: 'circular' });
381
402
  const result = projection.projectSchema(testSchema);
382
-
403
+
383
404
  expect(result.positions.size).toBe(4);
384
405
  // Circular layout positions should be centered around origin
385
406
  const positions = Array.from(result.positions.values());
386
407
  // Check that positions exist and are numbers
387
- positions.forEach(pos => {
408
+ positions.forEach((pos) => {
388
409
  expect(typeof pos.x).toBe('number');
389
410
  expect(typeof pos.y).toBe('number');
390
411
  });
@@ -393,11 +414,11 @@ describe('Canvas Projection', () => {
393
414
  it('should use force-directed layout', () => {
394
415
  const projection = createCanvasProjection({ algorithm: 'force' });
395
416
  const result = projection.projectSchema(testSchema);
396
-
417
+
397
418
  expect(result.positions.size).toBe(4);
398
419
  // Force layout should spread nodes apart
399
420
  const positions = Array.from(result.positions.values());
400
- positions.forEach(pos => {
421
+ positions.forEach((pos) => {
401
422
  expect(typeof pos.x).toBe('number');
402
423
  expect(typeof pos.y).toBe('number');
403
424
  });
@@ -406,7 +427,7 @@ describe('Canvas Projection', () => {
406
427
  it('should calculate bounds correctly', () => {
407
428
  const projection = createCanvasProjection({ algorithm: 'grid' });
408
429
  const result = projection.projectSchema(testSchema);
409
-
430
+
410
431
  expect(result.bounds.minX).toBeDefined();
411
432
  expect(result.bounds.minY).toBeDefined();
412
433
  expect(result.bounds.maxX).toBeDefined();
@@ -416,21 +437,22 @@ describe('Canvas Projection', () => {
416
437
  });
417
438
 
418
439
  it('should center layout when requested', () => {
419
- const projection = createCanvasProjection({
420
- algorithm: 'grid',
440
+ const projection = createCanvasProjection({
441
+ algorithm: 'grid',
421
442
  center: true,
422
443
  });
423
444
  const result = projection.projectSchema(testSchema);
424
-
445
+
425
446
  // With centering, the average position should be near (0, 0)
426
- let sumX = 0, sumY = 0;
447
+ let sumX = 0,
448
+ sumY = 0;
427
449
  for (const pos of result.positions.values()) {
428
450
  sumX += pos.x;
429
451
  sumY += pos.y;
430
452
  }
431
453
  const avgX = sumX / result.positions.size;
432
454
  const avgY = sumY / result.positions.size;
433
-
455
+
434
456
  // Average should be close to 0 (allowing for rounding)
435
457
  expect(Math.abs(avgX)).toBeLessThan(100);
436
458
  expect(Math.abs(avgY)).toBeLessThan(100);
@@ -439,11 +461,10 @@ describe('Canvas Projection', () => {
439
461
 
440
462
  describe('Canvas Component Props', () => {
441
463
  it('should export component prop types', async () => {
442
- const {
443
- createCanvasStateManager,
444
- createCanvasProjection,
445
- } = await import('../../ui/canvas/components/index.js');
446
-
464
+ const { createCanvasStateManager, createCanvasProjection } = await import(
465
+ '../../ui/canvas/components/index.js'
466
+ );
467
+
447
468
  expect(createCanvasStateManager).toBeDefined();
448
469
  expect(createCanvasProjection).toBeDefined();
449
470
  });
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * CLI Create Command Tests
3
- *
3
+ *
4
4
  * Tests for the praxis create command.
5
5
  */
6
6
 
@@ -19,7 +19,7 @@ describe('CLI Create Command', () => {
19
19
  await mkdir(TEST_DIR, { recursive: true });
20
20
  process.chdir(TEST_DIR);
21
21
  });
22
-
22
+
23
23
  afterEach(async () => {
24
24
  // Clean up test directory
25
25
  try {
@@ -28,19 +28,19 @@ describe('CLI Create Command', () => {
28
28
  // Ignore cleanup errors
29
29
  }
30
30
  });
31
-
31
+
32
32
  describe('create app', () => {
33
33
  test('should create a new app with basic template', async () => {
34
34
  const appName = 'my-test-app';
35
35
  const options: CreateOptions = { template: 'basic' };
36
-
36
+
37
37
  // Mock console.log to suppress output
38
38
  const originalLog = console.log;
39
39
  console.log = () => {};
40
-
40
+
41
41
  try {
42
42
  await create('app', appName, options);
43
-
43
+
44
44
  // Verify directory structure
45
45
  const appDir = join(TEST_DIR, appName);
46
46
  expect(existsSync(appDir)).toBe(true);
@@ -50,7 +50,7 @@ describe('CLI Create Command', () => {
50
50
  expect(existsSync(join(appDir, 'src', 'App.svelte'))).toBe(true);
51
51
  expect(existsSync(join(appDir, 'src', 'main.ts'))).toBe(true);
52
52
  expect(existsSync(join(appDir, 'src', 'schemas', 'app.schema.js'))).toBe(true);
53
-
53
+
54
54
  // Verify package.json content
55
55
  const packageJson = JSON.parse(await readFile(join(appDir, 'package.json'), 'utf-8'));
56
56
  expect(packageJson.name).toBe(appName);
@@ -61,21 +61,21 @@ describe('CLI Create Command', () => {
61
61
  console.log = originalLog;
62
62
  }
63
63
  });
64
-
64
+
65
65
  test('should fail for app with invalid name', async () => {
66
66
  const originalLog = console.log;
67
67
  const originalError = console.error;
68
68
  const originalExit = process.exit;
69
-
69
+
70
70
  console.log = () => {};
71
71
  console.error = () => {};
72
-
72
+
73
73
  let exitCode: number | undefined;
74
74
  process.exit = ((code?: number) => {
75
75
  exitCode = code;
76
76
  throw new Error('process.exit called');
77
77
  }) as never;
78
-
78
+
79
79
  try {
80
80
  await create('app', '123invalid', {});
81
81
  } catch (e) {
@@ -85,32 +85,32 @@ describe('CLI Create Command', () => {
85
85
  console.error = originalError;
86
86
  process.exit = originalExit;
87
87
  }
88
-
88
+
89
89
  expect(exitCode).toBe(1);
90
90
  });
91
91
  });
92
-
92
+
93
93
  describe('create component', () => {
94
94
  test('should create a new component', async () => {
95
95
  const componentName = 'MyButton';
96
96
  const componentDir = join(TEST_DIR, 'components');
97
97
  await mkdir(componentDir, { recursive: true });
98
-
98
+
99
99
  const options: CreateOptions = { directory: componentDir };
100
-
100
+
101
101
  // Mock console.log to suppress output
102
102
  const originalLog = console.log;
103
103
  console.log = () => {};
104
-
104
+
105
105
  try {
106
106
  await create('component', componentName, options);
107
-
107
+
108
108
  // Verify component files
109
109
  const outputDir = join(componentDir, componentName);
110
110
  expect(existsSync(join(outputDir, `${componentName}.svelte`))).toBe(true);
111
111
  expect(existsSync(join(outputDir, `${componentName}.schema.js`))).toBe(true);
112
112
  expect(existsSync(join(outputDir, 'index.ts'))).toBe(true);
113
-
113
+
114
114
  // Verify index.ts content
115
115
  const indexContent = await readFile(join(outputDir, 'index.ts'), 'utf-8');
116
116
  expect(indexContent).toContain(`export { default as ${componentName} }`);
@@ -118,21 +118,21 @@ describe('CLI Create Command', () => {
118
118
  console.log = originalLog;
119
119
  }
120
120
  });
121
-
121
+
122
122
  test('should fail without a name', async () => {
123
123
  const originalLog = console.log;
124
124
  const originalError = console.error;
125
125
  const originalExit = process.exit;
126
-
126
+
127
127
  console.log = () => {};
128
128
  console.error = () => {};
129
-
129
+
130
130
  let exitCode: number | undefined;
131
131
  process.exit = ((code?: number) => {
132
132
  exitCode = code;
133
133
  throw new Error('process.exit called');
134
134
  }) as never;
135
-
135
+
136
136
  try {
137
137
  await create('component', undefined, {});
138
138
  } catch (e) {
@@ -142,26 +142,26 @@ describe('CLI Create Command', () => {
142
142
  console.error = originalError;
143
143
  process.exit = originalExit;
144
144
  }
145
-
145
+
146
146
  expect(exitCode).toBe(1);
147
147
  });
148
148
  });
149
-
149
+
150
150
  describe('unknown type', () => {
151
151
  test('should fail for unknown type', async () => {
152
152
  const originalLog = console.log;
153
153
  const originalError = console.error;
154
154
  const originalExit = process.exit;
155
-
155
+
156
156
  console.log = () => {};
157
157
  console.error = () => {};
158
-
158
+
159
159
  let exitCode: number | undefined;
160
160
  process.exit = ((code?: number) => {
161
161
  exitCode = code;
162
162
  throw new Error('process.exit called');
163
163
  }) as never;
164
-
164
+
165
165
  try {
166
166
  await create('unknown', 'test', {});
167
167
  } catch (e) {
@@ -171,7 +171,7 @@ describe('CLI Create Command', () => {
171
171
  console.error = originalError;
172
172
  process.exit = originalExit;
173
173
  }
174
-
174
+
175
175
  expect(exitCode).toBe(1);
176
176
  });
177
177
  });