@plures/praxis 1.0.3 → 1.1.1

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 (530) hide show
  1. package/FRAMEWORK.md +55 -5
  2. package/README.md +162 -375
  3. package/core/codegen/docs-generator.ts +5 -2
  4. package/core/codegen/index.ts +1 -1
  5. package/core/db-adapter/index.ts +2 -2
  6. package/core/db-adapter/sync-engine.ts +17 -6
  7. package/core/logic-engine/engine.ts +1 -1
  8. package/core/logic-engine/index.ts +2 -2
  9. package/core/logic-engine/protocol.ts +1 -1
  10. package/core/logic-engine/psf-adapter.ts +8 -4
  11. package/core/logic-engine/rules.ts +1 -1
  12. package/core/schema-engine/compiler.ts +53 -11
  13. package/core/schema-engine/generator.ts +17 -7
  14. package/core/schema-engine/index.ts +2 -2
  15. package/core/schema-engine/psf.ts +12 -3
  16. package/core/schema-engine/types.ts +3 -11
  17. package/core/schema-engine/validator.ts +112 -22
  18. package/dist/browser/engine-BjdqxeXG.d.ts +333 -0
  19. package/dist/browser/index.d.ts +3004 -0
  20. package/dist/browser/index.js +2892 -0
  21. package/dist/{src → browser}/integrations/svelte.d.ts +19 -17
  22. package/dist/browser/integrations/svelte.js +298 -0
  23. package/dist/node/auth-STARLY7I.js +207 -0
  24. package/dist/node/build-Y7OT5VBF.js +144 -0
  25. package/dist/node/canvas-UERZHJYW.js +362 -0
  26. package/dist/node/chunk-DSDC2JWZ.js +256 -0
  27. package/dist/node/chunk-FXQZXAWF.js +175 -0
  28. package/dist/node/chunk-N5Y37EUV.js +202 -0
  29. package/dist/node/chunk-QGM4M3NI.js +37 -0
  30. package/dist/node/chunk-RJMWCNHR.js +175 -0
  31. package/dist/node/chunk-SRM3OPPM.js +404 -0
  32. package/dist/node/chunk-UATVJBNV.js +175 -0
  33. package/dist/node/chunk-UY7YEBE2.js +159 -0
  34. package/dist/node/chunk-XCY2VIFX.js +143 -0
  35. package/dist/node/chunk-YXH4Y7ZZ.js +349 -0
  36. package/dist/node/cli/index.cjs +215139 -0
  37. package/dist/node/cli/index.d.cts +1 -0
  38. package/dist/node/cli/index.d.ts +1 -0
  39. package/dist/node/cli/index.js +690 -0
  40. package/dist/node/cloud/index.cjs +1043 -0
  41. package/dist/node/cloud/index.d.cts +864 -0
  42. package/dist/node/cloud/index.d.ts +864 -0
  43. package/dist/node/cloud/index.js +456 -0
  44. package/dist/node/cloud-AXOK4PSN.js +212 -0
  45. package/dist/node/component.cjs +374 -0
  46. package/dist/node/component.d.cts +125 -0
  47. package/dist/{src/core/component/generator.d.ts → node/component.d.ts} +11 -8
  48. package/dist/node/component.js +9 -0
  49. package/dist/node/components/index.cjs +216 -0
  50. package/dist/node/components/index.d.cts +43 -0
  51. package/dist/{src → node}/components/index.d.ts +8 -8
  52. package/dist/node/components/index.js +7 -0
  53. package/dist/node/create-TRLSVCNQ.js +584 -0
  54. package/dist/node/dev-PMJZUYGE.js +65 -0
  55. package/dist/node/engine-1iqLe6_P.d.ts +214 -0
  56. package/dist/node/engine-CVJobhHm.d.cts +214 -0
  57. package/dist/node/index.cjs +3247 -0
  58. package/dist/node/index.d.cts +2579 -0
  59. package/dist/node/index.d.ts +2579 -0
  60. package/dist/node/index.js +2098 -0
  61. package/dist/node/integrations/svelte.cjs +330 -0
  62. package/dist/node/integrations/svelte.d.cts +309 -0
  63. package/dist/node/integrations/svelte.d.ts +309 -0
  64. package/dist/node/integrations/svelte.js +300 -0
  65. package/dist/node/orchestrate-737TCL5H.js +127 -0
  66. package/dist/{src/core/protocol.d.ts → node/protocol-Qek7ebBl.d.cts} +11 -10
  67. package/dist/node/protocol-Qek7ebBl.d.ts +122 -0
  68. package/dist/node/schema.cjs +200 -0
  69. package/dist/{src/core/schema/types.d.ts → node/schema.d.cts} +30 -29
  70. package/dist/node/schema.d.ts +371 -0
  71. package/dist/node/schema.js +9 -0
  72. package/dist/{src/runtime/terminal-adapter.d.ts → node/terminal-adapter-07HGftGQ.d.ts} +86 -11
  73. package/dist/node/terminal-adapter-XLtCjjb_.d.cts +231 -0
  74. package/dist/node/verify-QRYKRIDU.js +210960 -0
  75. package/docs/MONETIZATION.md +21 -16
  76. package/docs/REACTIVE_REDESIGN.md +132 -0
  77. package/docs/README.md +47 -36
  78. package/docs/SVELTE_INTEGRATION_STRATEGY.md +68 -0
  79. package/docs/TERMINAL_NODE.md +27 -24
  80. package/docs/core/building-extensions.md +58 -61
  81. package/docs/core/cli-usage.md +59 -59
  82. package/docs/core/code-canvas-sync.md +28 -16
  83. package/docs/core/logic-engine.md +77 -82
  84. package/docs/core/pluresdb-integration.md +29 -39
  85. package/docs/core/schema-model.md +66 -52
  86. package/docs/core/ui-generation.md +57 -49
  87. package/docs/core/what-is-praxis.md +32 -15
  88. package/docs/guides/canvas.md +21 -5
  89. package/docs/guides/getting-started.md +13 -7
  90. package/docs/guides/history-state-pattern.md +65 -51
  91. package/docs/guides/orchestration.md +46 -32
  92. package/docs/guides/parallel-state-pattern.md +56 -72
  93. package/docs/guides/svelte-integration.md +45 -53
  94. package/docs/tutorials/README.md +16 -0
  95. package/docs/tutorials/ecommerce-cart.md +177 -95
  96. package/docs/tutorials/first-app.md +26 -41
  97. package/docs/tutorials/form-builder.md +191 -138
  98. package/docs/tutorials/todo-pluresdb.md +71 -69
  99. package/package.json +58 -23
  100. package/src/__tests__/actors.test.ts +68 -68
  101. package/src/__tests__/billing.test.ts +32 -32
  102. package/src/__tests__/canvas-components.test.ts +94 -73
  103. package/src/__tests__/cli-create.test.ts +28 -28
  104. package/src/__tests__/cloud.test.ts +36 -36
  105. package/src/__tests__/code-canvas-integration.test.ts +132 -141
  106. package/src/__tests__/docs-generator.test.ts +3 -9
  107. package/src/__tests__/dsl.test.ts +58 -64
  108. package/src/__tests__/edge-cases.test.ts +106 -108
  109. package/src/__tests__/engine.test.ts +51 -25
  110. package/src/__tests__/generators.test.ts +42 -44
  111. package/src/__tests__/introspection.test.ts +104 -114
  112. package/src/__tests__/pluresdb.test.ts +189 -187
  113. package/src/__tests__/protocol.test.ts +15 -15
  114. package/src/__tests__/provisioning.test.ts +61 -61
  115. package/src/__tests__/schema.test.ts +7 -11
  116. package/src/__tests__/state-docs-integration.test.ts +162 -145
  117. package/src/__tests__/svelte-integration.test.ts +16 -19
  118. package/src/__tests__/tauri-integration.test.ts +149 -147
  119. package/src/__tests__/terminal-node.test.ts +12 -7
  120. package/src/__tests__/unum-integration.test.ts +68 -68
  121. package/src/adapters/cli.ts +21 -15
  122. package/src/cli/commands/auth.ts +82 -78
  123. package/src/cli/commands/build.ts +29 -27
  124. package/src/cli/commands/canvas.ts +338 -127
  125. package/src/cli/commands/cloud.ts +47 -47
  126. package/src/cli/commands/create.ts +59 -47
  127. package/src/cli/commands/dev.ts +12 -12
  128. package/src/cli/commands/generate.ts +29 -40
  129. package/src/cli/commands/orchestrate.ts +24 -24
  130. package/src/cli/commands/verify.ts +7 -8
  131. package/src/cli/index.ts +14 -10
  132. package/src/cloud/README.md +28 -15
  133. package/src/cloud/auth.ts +55 -70
  134. package/src/cloud/billing.ts +59 -58
  135. package/src/cloud/client.ts +29 -35
  136. package/src/cloud/index.ts +19 -40
  137. package/src/cloud/marketplace.ts +69 -78
  138. package/src/cloud/provisioning.ts +42 -51
  139. package/src/cloud/relay/endpoints.ts +30 -34
  140. package/src/cloud/relay/health/index.ts +1 -1
  141. package/src/cloud/relay/stats/index.ts +1 -1
  142. package/src/cloud/relay/sync/index.ts +1 -1
  143. package/src/cloud/relay/usage/index.ts +1 -1
  144. package/src/cloud/sponsors.ts +31 -34
  145. package/src/cloud/types.ts +4 -4
  146. package/src/components/README.md +1 -0
  147. package/src/components/index.ts +3 -4
  148. package/src/core/actors.ts +7 -7
  149. package/src/core/component/generator.ts +10 -28
  150. package/src/core/engine.ts +51 -24
  151. package/src/core/introspection.ts +37 -35
  152. package/src/core/logic/generator.ts +62 -62
  153. package/src/core/pluresdb/adapter.ts +8 -8
  154. package/src/core/pluresdb/generator.ts +39 -35
  155. package/src/core/pluresdb/index.ts +9 -12
  156. package/src/core/pluresdb/schema-registry.ts +22 -25
  157. package/src/core/pluresdb/store.ts +57 -57
  158. package/src/core/protocol.ts +14 -14
  159. package/src/core/reactive-engine.svelte.ts +65 -0
  160. package/src/core/reactive-engine.ts +67 -0
  161. package/src/core/rules.ts +4 -4
  162. package/src/core/schema/loader.common.ts +150 -0
  163. package/src/core/schema/loader.ts +19 -149
  164. package/src/core/schema/normalize.ts +34 -51
  165. package/src/core/schema/types.ts +47 -11
  166. package/src/dsl/index.ts +8 -8
  167. package/src/dsl.ts +11 -17
  168. package/src/examples/advanced-todo/README.md +58 -40
  169. package/src/examples/advanced-todo/index.ts +3 -3
  170. package/src/examples/auth-basic/index.ts +30 -30
  171. package/src/examples/cart/index.ts +50 -50
  172. package/src/examples/hero-ecommerce/index.ts +130 -157
  173. package/src/examples/svelte-counter/index.ts +22 -26
  174. package/src/flows.ts +6 -17
  175. package/src/index.browser.ts +204 -0
  176. package/src/index.ts +37 -42
  177. package/src/integrations/code-canvas.ts +237 -193
  178. package/src/integrations/pluresdb.ts +55 -35
  179. package/src/integrations/state-docs.ts +104 -104
  180. package/src/integrations/svelte.ts +35 -35
  181. package/src/integrations/tauri.ts +75 -73
  182. package/src/integrations/unum.ts +68 -61
  183. package/src/registry.ts +7 -14
  184. package/src/runtime/terminal-adapter.ts +31 -26
  185. package/src/step.ts +10 -16
  186. package/src/types.ts +1 -1
  187. package/templates/basic-app/README.md +6 -9
  188. package/templates/fullstack-app/README.md +10 -0
  189. package/dist/core/codegen/docs-generator.d.ts +0 -123
  190. package/dist/core/codegen/docs-generator.d.ts.map +0 -1
  191. package/dist/core/codegen/docs-generator.js +0 -674
  192. package/dist/core/codegen/docs-generator.js.map +0 -1
  193. package/dist/core/codegen/index.d.ts +0 -11
  194. package/dist/core/codegen/index.d.ts.map +0 -1
  195. package/dist/core/codegen/index.js +0 -13
  196. package/dist/core/codegen/index.js.map +0 -1
  197. package/dist/core/codegen/ts-generator.d.ts +0 -8
  198. package/dist/core/codegen/ts-generator.d.ts.map +0 -1
  199. package/dist/core/codegen/ts-generator.js +0 -8
  200. package/dist/core/codegen/ts-generator.js.map +0 -1
  201. package/dist/core/db-adapter/index.d.ts +0 -18
  202. package/dist/core/db-adapter/index.d.ts.map +0 -1
  203. package/dist/core/db-adapter/index.js +0 -23
  204. package/dist/core/db-adapter/index.js.map +0 -1
  205. package/dist/core/db-adapter/sync-engine.d.ts +0 -180
  206. package/dist/core/db-adapter/sync-engine.d.ts.map +0 -1
  207. package/dist/core/db-adapter/sync-engine.js +0 -342
  208. package/dist/core/db-adapter/sync-engine.js.map +0 -1
  209. package/dist/core/logic-engine/engine.d.ts +0 -8
  210. package/dist/core/logic-engine/engine.d.ts.map +0 -1
  211. package/dist/core/logic-engine/engine.js +0 -8
  212. package/dist/core/logic-engine/engine.js.map +0 -1
  213. package/dist/core/logic-engine/index.d.ts +0 -16
  214. package/dist/core/logic-engine/index.d.ts.map +0 -1
  215. package/dist/core/logic-engine/index.js +0 -16
  216. package/dist/core/logic-engine/index.js.map +0 -1
  217. package/dist/core/logic-engine/protocol.d.ts +0 -7
  218. package/dist/core/logic-engine/protocol.d.ts.map +0 -1
  219. package/dist/core/logic-engine/protocol.js +0 -7
  220. package/dist/core/logic-engine/protocol.js.map +0 -1
  221. package/dist/core/logic-engine/psf-adapter.d.ts +0 -88
  222. package/dist/core/logic-engine/psf-adapter.d.ts.map +0 -1
  223. package/dist/core/logic-engine/psf-adapter.js +0 -207
  224. package/dist/core/logic-engine/psf-adapter.js.map +0 -1
  225. package/dist/core/logic-engine/rules.d.ts +0 -7
  226. package/dist/core/logic-engine/rules.d.ts.map +0 -1
  227. package/dist/core/logic-engine/rules.js +0 -7
  228. package/dist/core/logic-engine/rules.js.map +0 -1
  229. package/dist/core/schema-engine/compiler.d.ts +0 -198
  230. package/dist/core/schema-engine/compiler.d.ts.map +0 -1
  231. package/dist/core/schema-engine/compiler.js +0 -262
  232. package/dist/core/schema-engine/compiler.js.map +0 -1
  233. package/dist/core/schema-engine/generator.d.ts +0 -115
  234. package/dist/core/schema-engine/generator.d.ts.map +0 -1
  235. package/dist/core/schema-engine/generator.js +0 -506
  236. package/dist/core/schema-engine/generator.js.map +0 -1
  237. package/dist/core/schema-engine/index.d.ts +0 -18
  238. package/dist/core/schema-engine/index.d.ts.map +0 -1
  239. package/dist/core/schema-engine/index.js +0 -18
  240. package/dist/core/schema-engine/index.js.map +0 -1
  241. package/dist/core/schema-engine/psf.d.ts +0 -612
  242. package/dist/core/schema-engine/psf.d.ts.map +0 -1
  243. package/dist/core/schema-engine/psf.js +0 -45
  244. package/dist/core/schema-engine/psf.js.map +0 -1
  245. package/dist/core/schema-engine/types.d.ts +0 -10
  246. package/dist/core/schema-engine/types.d.ts.map +0 -1
  247. package/dist/core/schema-engine/types.js +0 -7
  248. package/dist/core/schema-engine/types.js.map +0 -1
  249. package/dist/core/schema-engine/validator.d.ts +0 -140
  250. package/dist/core/schema-engine/validator.d.ts.map +0 -1
  251. package/dist/core/schema-engine/validator.js +0 -407
  252. package/dist/core/schema-engine/validator.js.map +0 -1
  253. package/dist/src/adapters/cli.d.ts +0 -43
  254. package/dist/src/adapters/cli.d.ts.map +0 -1
  255. package/dist/src/adapters/cli.js +0 -126
  256. package/dist/src/adapters/cli.js.map +0 -1
  257. package/dist/src/cli/commands/auth.d.ts +0 -26
  258. package/dist/src/cli/commands/auth.d.ts.map +0 -1
  259. package/dist/src/cli/commands/auth.js +0 -233
  260. package/dist/src/cli/commands/auth.js.map +0 -1
  261. package/dist/src/cli/commands/build.d.ts +0 -23
  262. package/dist/src/cli/commands/build.d.ts.map +0 -1
  263. package/dist/src/cli/commands/build.js +0 -162
  264. package/dist/src/cli/commands/build.js.map +0 -1
  265. package/dist/src/cli/commands/canvas.d.ts +0 -23
  266. package/dist/src/cli/commands/canvas.d.ts.map +0 -1
  267. package/dist/src/cli/commands/canvas.js +0 -215
  268. package/dist/src/cli/commands/canvas.js.map +0 -1
  269. package/dist/src/cli/commands/cloud.d.ts +0 -27
  270. package/dist/src/cli/commands/cloud.d.ts.map +0 -1
  271. package/dist/src/cli/commands/cloud.js +0 -232
  272. package/dist/src/cli/commands/cloud.js.map +0 -1
  273. package/dist/src/cli/commands/create.d.ts +0 -21
  274. package/dist/src/cli/commands/create.d.ts.map +0 -1
  275. package/dist/src/cli/commands/create.js +0 -621
  276. package/dist/src/cli/commands/create.js.map +0 -1
  277. package/dist/src/cli/commands/dev.d.ts +0 -21
  278. package/dist/src/cli/commands/dev.d.ts.map +0 -1
  279. package/dist/src/cli/commands/dev.js +0 -71
  280. package/dist/src/cli/commands/dev.js.map +0 -1
  281. package/dist/src/cli/commands/generate.d.ts +0 -25
  282. package/dist/src/cli/commands/generate.d.ts.map +0 -1
  283. package/dist/src/cli/commands/generate.js +0 -168
  284. package/dist/src/cli/commands/generate.js.map +0 -1
  285. package/dist/src/cli/commands/orchestrate.d.ts +0 -44
  286. package/dist/src/cli/commands/orchestrate.d.ts.map +0 -1
  287. package/dist/src/cli/commands/orchestrate.js +0 -150
  288. package/dist/src/cli/commands/orchestrate.js.map +0 -1
  289. package/dist/src/cli/commands/verify.d.ts +0 -10
  290. package/dist/src/cli/commands/verify.d.ts.map +0 -1
  291. package/dist/src/cli/commands/verify.js +0 -39
  292. package/dist/src/cli/commands/verify.js.map +0 -1
  293. package/dist/src/cli/index.d.ts +0 -8
  294. package/dist/src/cli/index.d.ts.map +0 -1
  295. package/dist/src/cli/index.js +0 -226
  296. package/dist/src/cli/index.js.map +0 -1
  297. package/dist/src/cloud/auth.d.ts +0 -51
  298. package/dist/src/cloud/auth.d.ts.map +0 -1
  299. package/dist/src/cloud/auth.js +0 -194
  300. package/dist/src/cloud/auth.js.map +0 -1
  301. package/dist/src/cloud/billing.d.ts +0 -184
  302. package/dist/src/cloud/billing.d.ts.map +0 -1
  303. package/dist/src/cloud/billing.js +0 -179
  304. package/dist/src/cloud/billing.js.map +0 -1
  305. package/dist/src/cloud/client.d.ts +0 -39
  306. package/dist/src/cloud/client.d.ts.map +0 -1
  307. package/dist/src/cloud/client.js +0 -176
  308. package/dist/src/cloud/client.js.map +0 -1
  309. package/dist/src/cloud/index.d.ts +0 -44
  310. package/dist/src/cloud/index.d.ts.map +0 -1
  311. package/dist/src/cloud/index.js +0 -44
  312. package/dist/src/cloud/index.js.map +0 -1
  313. package/dist/src/cloud/marketplace.d.ts +0 -166
  314. package/dist/src/cloud/marketplace.d.ts.map +0 -1
  315. package/dist/src/cloud/marketplace.js +0 -159
  316. package/dist/src/cloud/marketplace.js.map +0 -1
  317. package/dist/src/cloud/provisioning.d.ts +0 -110
  318. package/dist/src/cloud/provisioning.d.ts.map +0 -1
  319. package/dist/src/cloud/provisioning.js +0 -148
  320. package/dist/src/cloud/provisioning.js.map +0 -1
  321. package/dist/src/cloud/relay/endpoints.d.ts +0 -62
  322. package/dist/src/cloud/relay/endpoints.d.ts.map +0 -1
  323. package/dist/src/cloud/relay/endpoints.js +0 -217
  324. package/dist/src/cloud/relay/endpoints.js.map +0 -1
  325. package/dist/src/cloud/relay/health/index.d.ts +0 -5
  326. package/dist/src/cloud/relay/health/index.d.ts.map +0 -1
  327. package/dist/src/cloud/relay/health/index.js +0 -9
  328. package/dist/src/cloud/relay/health/index.js.map +0 -1
  329. package/dist/src/cloud/relay/stats/index.d.ts +0 -5
  330. package/dist/src/cloud/relay/stats/index.d.ts.map +0 -1
  331. package/dist/src/cloud/relay/stats/index.js +0 -9
  332. package/dist/src/cloud/relay/stats/index.js.map +0 -1
  333. package/dist/src/cloud/relay/sync/index.d.ts +0 -5
  334. package/dist/src/cloud/relay/sync/index.d.ts.map +0 -1
  335. package/dist/src/cloud/relay/sync/index.js +0 -9
  336. package/dist/src/cloud/relay/sync/index.js.map +0 -1
  337. package/dist/src/cloud/relay/usage/index.d.ts +0 -5
  338. package/dist/src/cloud/relay/usage/index.d.ts.map +0 -1
  339. package/dist/src/cloud/relay/usage/index.js +0 -9
  340. package/dist/src/cloud/relay/usage/index.js.map +0 -1
  341. package/dist/src/cloud/sponsors.d.ts +0 -81
  342. package/dist/src/cloud/sponsors.d.ts.map +0 -1
  343. package/dist/src/cloud/sponsors.js +0 -130
  344. package/dist/src/cloud/sponsors.js.map +0 -1
  345. package/dist/src/cloud/types.d.ts +0 -169
  346. package/dist/src/cloud/types.d.ts.map +0 -1
  347. package/dist/src/cloud/types.js +0 -7
  348. package/dist/src/cloud/types.js.map +0 -1
  349. package/dist/src/components/index.d.ts.map +0 -1
  350. package/dist/src/components/index.js +0 -17
  351. package/dist/src/components/index.js.map +0 -1
  352. package/dist/src/core/actors.d.ts +0 -95
  353. package/dist/src/core/actors.d.ts.map +0 -1
  354. package/dist/src/core/actors.js +0 -158
  355. package/dist/src/core/actors.js.map +0 -1
  356. package/dist/src/core/component/generator.d.ts.map +0 -1
  357. package/dist/src/core/component/generator.js +0 -349
  358. package/dist/src/core/component/generator.js.map +0 -1
  359. package/dist/src/core/engine.d.ts +0 -92
  360. package/dist/src/core/engine.d.ts.map +0 -1
  361. package/dist/src/core/engine.js +0 -199
  362. package/dist/src/core/engine.js.map +0 -1
  363. package/dist/src/core/introspection.d.ts +0 -141
  364. package/dist/src/core/introspection.d.ts.map +0 -1
  365. package/dist/src/core/introspection.js +0 -208
  366. package/dist/src/core/introspection.js.map +0 -1
  367. package/dist/src/core/logic/generator.d.ts +0 -76
  368. package/dist/src/core/logic/generator.d.ts.map +0 -1
  369. package/dist/src/core/logic/generator.js +0 -370
  370. package/dist/src/core/logic/generator.js.map +0 -1
  371. package/dist/src/core/pluresdb/adapter.d.ts +0 -72
  372. package/dist/src/core/pluresdb/adapter.d.ts.map +0 -1
  373. package/dist/src/core/pluresdb/adapter.js +0 -73
  374. package/dist/src/core/pluresdb/adapter.js.map +0 -1
  375. package/dist/src/core/pluresdb/generator.d.ts +0 -58
  376. package/dist/src/core/pluresdb/generator.d.ts.map +0 -1
  377. package/dist/src/core/pluresdb/generator.js +0 -191
  378. package/dist/src/core/pluresdb/generator.js.map +0 -1
  379. package/dist/src/core/pluresdb/index.d.ts +0 -15
  380. package/dist/src/core/pluresdb/index.d.ts.map +0 -1
  381. package/dist/src/core/pluresdb/index.js +0 -11
  382. package/dist/src/core/pluresdb/index.js.map +0 -1
  383. package/dist/src/core/pluresdb/schema-registry.d.ts +0 -104
  384. package/dist/src/core/pluresdb/schema-registry.d.ts.map +0 -1
  385. package/dist/src/core/pluresdb/schema-registry.js +0 -130
  386. package/dist/src/core/pluresdb/schema-registry.js.map +0 -1
  387. package/dist/src/core/pluresdb/store.d.ts +0 -199
  388. package/dist/src/core/pluresdb/store.d.ts.map +0 -1
  389. package/dist/src/core/pluresdb/store.js +0 -344
  390. package/dist/src/core/pluresdb/store.js.map +0 -1
  391. package/dist/src/core/protocol.d.ts.map +0 -1
  392. package/dist/src/core/protocol.js +0 -46
  393. package/dist/src/core/protocol.js.map +0 -1
  394. package/dist/src/core/rules.d.ts +0 -120
  395. package/dist/src/core/rules.d.ts.map +0 -1
  396. package/dist/src/core/rules.js +0 -81
  397. package/dist/src/core/rules.js.map +0 -1
  398. package/dist/src/core/schema/loader.d.ts +0 -47
  399. package/dist/src/core/schema/loader.d.ts.map +0 -1
  400. package/dist/src/core/schema/loader.js +0 -189
  401. package/dist/src/core/schema/loader.js.map +0 -1
  402. package/dist/src/core/schema/normalize.d.ts +0 -72
  403. package/dist/src/core/schema/normalize.d.ts.map +0 -1
  404. package/dist/src/core/schema/normalize.js +0 -190
  405. package/dist/src/core/schema/normalize.js.map +0 -1
  406. package/dist/src/core/schema/types.d.ts.map +0 -1
  407. package/dist/src/core/schema/types.js +0 -161
  408. package/dist/src/core/schema/types.js.map +0 -1
  409. package/dist/src/dsl/index.d.ts +0 -152
  410. package/dist/src/dsl/index.d.ts.map +0 -1
  411. package/dist/src/dsl/index.js +0 -132
  412. package/dist/src/dsl/index.js.map +0 -1
  413. package/dist/src/dsl.d.ts +0 -124
  414. package/dist/src/dsl.d.ts.map +0 -1
  415. package/dist/src/dsl.js +0 -130
  416. package/dist/src/dsl.js.map +0 -1
  417. package/dist/src/examples/advanced-todo/index.d.ts +0 -55
  418. package/dist/src/examples/advanced-todo/index.d.ts.map +0 -1
  419. package/dist/src/examples/advanced-todo/index.js +0 -222
  420. package/dist/src/examples/advanced-todo/index.js.map +0 -1
  421. package/dist/src/examples/auth-basic/index.d.ts +0 -17
  422. package/dist/src/examples/auth-basic/index.d.ts.map +0 -1
  423. package/dist/src/examples/auth-basic/index.js +0 -122
  424. package/dist/src/examples/auth-basic/index.js.map +0 -1
  425. package/dist/src/examples/cart/index.d.ts +0 -19
  426. package/dist/src/examples/cart/index.d.ts.map +0 -1
  427. package/dist/src/examples/cart/index.js +0 -202
  428. package/dist/src/examples/cart/index.js.map +0 -1
  429. package/dist/src/examples/hero-ecommerce/index.d.ts +0 -39
  430. package/dist/src/examples/hero-ecommerce/index.d.ts.map +0 -1
  431. package/dist/src/examples/hero-ecommerce/index.js +0 -506
  432. package/dist/src/examples/hero-ecommerce/index.js.map +0 -1
  433. package/dist/src/examples/svelte-counter/index.d.ts +0 -31
  434. package/dist/src/examples/svelte-counter/index.d.ts.map +0 -1
  435. package/dist/src/examples/svelte-counter/index.js +0 -123
  436. package/dist/src/examples/svelte-counter/index.js.map +0 -1
  437. package/dist/src/flows.d.ts +0 -125
  438. package/dist/src/flows.d.ts.map +0 -1
  439. package/dist/src/flows.js +0 -160
  440. package/dist/src/flows.js.map +0 -1
  441. package/dist/src/index.d.ts +0 -77
  442. package/dist/src/index.d.ts.map +0 -1
  443. package/dist/src/index.js +0 -64
  444. package/dist/src/index.js.map +0 -1
  445. package/dist/src/integrations/code-canvas.d.ts +0 -265
  446. package/dist/src/integrations/code-canvas.d.ts.map +0 -1
  447. package/dist/src/integrations/code-canvas.js +0 -451
  448. package/dist/src/integrations/code-canvas.js.map +0 -1
  449. package/dist/src/integrations/pluresdb.d.ts +0 -117
  450. package/dist/src/integrations/pluresdb.d.ts.map +0 -1
  451. package/dist/src/integrations/pluresdb.js +0 -117
  452. package/dist/src/integrations/pluresdb.js.map +0 -1
  453. package/dist/src/integrations/state-docs.d.ts +0 -191
  454. package/dist/src/integrations/state-docs.d.ts.map +0 -1
  455. package/dist/src/integrations/state-docs.js +0 -515
  456. package/dist/src/integrations/state-docs.js.map +0 -1
  457. package/dist/src/integrations/svelte.d.ts.map +0 -1
  458. package/dist/src/integrations/svelte.js +0 -447
  459. package/dist/src/integrations/svelte.js.map +0 -1
  460. package/dist/src/integrations/tauri.d.ts +0 -360
  461. package/dist/src/integrations/tauri.d.ts.map +0 -1
  462. package/dist/src/integrations/tauri.js +0 -278
  463. package/dist/src/integrations/tauri.js.map +0 -1
  464. package/dist/src/integrations/unum.d.ts +0 -159
  465. package/dist/src/integrations/unum.d.ts.map +0 -1
  466. package/dist/src/integrations/unum.js +0 -240
  467. package/dist/src/integrations/unum.js.map +0 -1
  468. package/dist/src/registry.d.ts +0 -94
  469. package/dist/src/registry.d.ts.map +0 -1
  470. package/dist/src/registry.js +0 -181
  471. package/dist/src/registry.js.map +0 -1
  472. package/dist/src/runtime/terminal-adapter.d.ts.map +0 -1
  473. package/dist/src/runtime/terminal-adapter.js +0 -239
  474. package/dist/src/runtime/terminal-adapter.js.map +0 -1
  475. package/dist/src/step.d.ts +0 -34
  476. package/dist/src/step.d.ts.map +0 -1
  477. package/dist/src/step.js +0 -111
  478. package/dist/src/step.js.map +0 -1
  479. package/dist/src/types.d.ts +0 -63
  480. package/dist/src/types.d.ts.map +0 -1
  481. package/dist/src/types.js +0 -6
  482. package/dist/src/types.js.map +0 -1
  483. package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts +0 -8
  484. package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts.map +0 -1
  485. package/dist/tools/ast-analyzer/src/ast-analyzer.js +0 -119
  486. package/dist/tools/ast-analyzer/src/ast-analyzer.js.map +0 -1
  487. package/dist/tools/cli/commands/index.d.ts +0 -7
  488. package/dist/tools/cli/commands/index.d.ts.map +0 -1
  489. package/dist/tools/cli/commands/index.js +0 -7
  490. package/dist/tools/cli/commands/index.js.map +0 -1
  491. package/dist/tools/cli/index.d.ts +0 -8
  492. package/dist/tools/cli/index.d.ts.map +0 -1
  493. package/dist/tools/cli/index.js +0 -9
  494. package/dist/tools/cli/index.js.map +0 -1
  495. package/dist/tools/watcher/index.d.ts +0 -105
  496. package/dist/tools/watcher/index.d.ts.map +0 -1
  497. package/dist/tools/watcher/index.js +0 -213
  498. package/dist/tools/watcher/index.js.map +0 -1
  499. package/dist/ui/canvas/canvas-projection.d.ts +0 -78
  500. package/dist/ui/canvas/canvas-projection.d.ts.map +0 -1
  501. package/dist/ui/canvas/canvas-projection.js +0 -416
  502. package/dist/ui/canvas/canvas-projection.js.map +0 -1
  503. package/dist/ui/canvas/canvas-state.d.ts +0 -200
  504. package/dist/ui/canvas/canvas-state.d.ts.map +0 -1
  505. package/dist/ui/canvas/canvas-state.js +0 -464
  506. package/dist/ui/canvas/canvas-state.js.map +0 -1
  507. package/dist/ui/canvas/components/index.d.ts +0 -95
  508. package/dist/ui/canvas/components/index.d.ts.map +0 -1
  509. package/dist/ui/canvas/components/index.js +0 -19
  510. package/dist/ui/canvas/components/index.js.map +0 -1
  511. package/dist/ui/canvas/index.d.ts +0 -32
  512. package/dist/ui/canvas/index.d.ts.map +0 -1
  513. package/dist/ui/canvas/index.js +0 -32
  514. package/dist/ui/canvas/index.js.map +0 -1
  515. package/dist/ui/canvas-inspector/src/server.d.ts +0 -2
  516. package/dist/ui/canvas-inspector/src/server.d.ts.map +0 -1
  517. package/dist/ui/canvas-inspector/src/server.js +0 -248
  518. package/dist/ui/canvas-inspector/src/server.js.map +0 -1
  519. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts +0 -5
  520. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts.map +0 -1
  521. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js +0 -58
  522. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js.map +0 -1
  523. package/dist/ui/svelte-generator/index.d.ts +0 -9
  524. package/dist/ui/svelte-generator/index.d.ts.map +0 -1
  525. package/dist/ui/svelte-generator/index.js +0 -11
  526. package/dist/ui/svelte-generator/index.js.map +0 -1
  527. package/dist/ui/svelte-generator/psf-generator.d.ts +0 -128
  528. package/dist/ui/svelte-generator/psf-generator.d.ts.map +0 -1
  529. package/dist/ui/svelte-generator/psf-generator.js +0 -506
  530. 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
  });