@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
@@ -5,6 +5,7 @@ A comprehensive example demonstrating Praxis's Svelte 5 integration with history
5
5
  ## Features
6
6
 
7
7
  ### Core Functionality
8
+
8
9
  - ✅ Add, complete, and remove todos
9
10
  - ✅ Filter by all, active, or completed
10
11
  - ✅ Complete all todos at once
@@ -12,6 +13,7 @@ A comprehensive example demonstrating Praxis's Svelte 5 integration with history
12
13
  - ✅ Real-time statistics
13
14
 
14
15
  ### Advanced Features
16
+
15
17
  - 🔄 **Undo/Redo**: Full history tracking with keyboard shortcuts
16
18
  - 🕰️ **Time-Travel Debugging**: Navigate through state snapshots
17
19
  - ⚡ **Svelte 5 Runes**: Modern reactive API
@@ -21,12 +23,14 @@ A comprehensive example demonstrating Praxis's Svelte 5 integration with history
21
23
  ## Architecture
22
24
 
23
25
  ### State Management
26
+
24
27
  - **Engine**: Praxis logic engine managing todo state
25
28
  - **Rules**: Pure functions handling events
26
29
  - **Facts**: Immutable history of what happened
27
30
  - **Context**: Current application state
28
31
 
29
32
  ### Svelte Integration
33
+
30
34
  - **usePraxisEngine**: Main composable with history support
31
35
  - **Reactive Derivations**: Computed values with `$:` syntax
32
36
  - **Event Dispatching**: Type-safe event handling
@@ -71,7 +75,7 @@ export function createTodoEngine() {
71
75
  const registry = new PraxisRegistry<TodoContext>();
72
76
  registry.registerRule(addTodoRule);
73
77
  // ... register more rules
74
-
78
+
75
79
  return createPraxisEngine({
76
80
  initialContext: { todos: [], filter: 'all', nextId: 1 },
77
81
  registry,
@@ -127,6 +131,7 @@ node dist/examples/advanced-todo/index.js
127
131
  ```
128
132
 
129
133
  Output:
134
+
130
135
  ```
131
136
  === Advanced Todo Example ===
132
137
 
@@ -157,11 +162,13 @@ Output:
157
162
  To use the Svelte component in your app:
158
163
 
159
164
  1. Install dependencies:
165
+
160
166
  ```bash
161
167
  npm install @plures/praxis svelte@^5.0.0
162
168
  ```
163
169
 
164
170
  2. Import and use the component:
171
+
165
172
  ```svelte
166
173
  <script>
167
174
  import TodoApp from '@plures/praxis/examples/advanced-todo/App.svelte';
@@ -179,7 +186,7 @@ Or create your own component using the engine:
179
186
 
180
187
  const engine = createTodoEngine();
181
188
  const { context, dispatch } = usePraxisEngine(engine);
182
-
189
+
183
190
  let text = '';
184
191
  </script>
185
192
 
@@ -226,9 +233,15 @@ const addTodoRule = defineRule({
226
233
  // - Testable
227
234
  const event = findEvent(events, AddTodo);
228
235
  if (!event) return [];
229
-
230
- state.context.todos.push({ /* ... */ });
231
- return [TodoAdded.create({ /* ... */ })];
236
+
237
+ state.context.todos.push({
238
+ /* ... */
239
+ });
240
+ return [
241
+ TodoAdded.create({
242
+ /* ... */
243
+ }),
244
+ ];
232
245
  },
233
246
  });
234
247
  ```
@@ -240,8 +253,8 @@ const addTodoRule = defineRule({
240
253
  const facts = engine.getFacts();
241
254
 
242
255
  // Find specific facts
243
- const added = facts.filter(f => f.tag === 'TodoAdded');
244
- const toggled = facts.filter(f => f.tag === 'TodoToggled');
256
+ const added = facts.filter((f) => f.tag === 'TodoAdded');
257
+ const toggled = facts.filter((f) => f.tag === 'TodoToggled');
245
258
 
246
259
  // Facts enable:
247
260
  // - Audit trails
@@ -270,10 +283,10 @@ const { undo, redo, snapshots, goToSnapshot } = usePraxisEngine(engine, {
270
283
  });
271
284
 
272
285
  // Navigate history
273
- undo(); // Go back
274
- redo(); // Go forward
275
- goToSnapshot(5); // Jump to specific snapshot
276
- console.log(snapshots); // View all snapshots
286
+ undo(); // Go back
287
+ redo(); // Go forward
288
+ goToSnapshot(5); // Jump to specific snapshot
289
+ console.log(snapshots); // View all snapshots
277
290
  ```
278
291
 
279
292
  ## Testing
@@ -287,7 +300,7 @@ describe('Todo Engine', () => {
287
300
  it('should add todos', () => {
288
301
  const engine = createTodoEngine();
289
302
  engine.step([AddTodo.create({ text: 'Test todo' })]);
290
-
303
+
291
304
  const context = engine.getContext();
292
305
  expect(context.todos.length).toBe(1);
293
306
  expect(context.todos[0].text).toBe('Test todo');
@@ -296,10 +309,10 @@ describe('Todo Engine', () => {
296
309
  it('should toggle todos', () => {
297
310
  const engine = createTodoEngine();
298
311
  engine.step([AddTodo.create({ text: 'Test' })]);
299
-
312
+
300
313
  const context = engine.getContext();
301
314
  const todoId = context.todos[0].id;
302
-
315
+
303
316
  engine.step([ToggleTodo.create({ id: todoId })]);
304
317
  expect(engine.getContext().todos[0].completed).toBe(true);
305
318
  });
@@ -309,55 +322,60 @@ describe('Todo Engine', () => {
309
322
  ## Performance Tips
310
323
 
311
324
  1. **Batch Events**: Dispatch multiple events at once
325
+
312
326
  ```typescript
313
- dispatch([
314
- AddTodo.create({ text: 'Todo 1' }),
315
- AddTodo.create({ text: 'Todo 2' }),
316
- AddTodo.create({ text: 'Todo 3' }),
317
- ], 'Batch Add');
327
+ dispatch(
328
+ [
329
+ AddTodo.create({ text: 'Todo 1' }),
330
+ AddTodo.create({ text: 'Todo 2' }),
331
+ AddTodo.create({ text: 'Todo 3' }),
332
+ ],
333
+ 'Batch Add'
334
+ );
318
335
  ```
319
336
 
320
337
  2. **Limit History**: Adjust history size based on needs
338
+
321
339
  ```typescript
322
340
  usePraxisEngine(engine, { maxHistorySize: 20 });
323
341
  ```
324
342
 
325
343
  3. **Selective Subscriptions**: Use derived stores for specific values
326
344
  ```typescript
327
- const count = createDerivedStore(engine, ctx => ctx.todos.length);
345
+ const count = createDerivedStore(engine, (ctx) => ctx.todos.length);
328
346
  ```
329
347
 
330
348
  ## Comparison with Other Libraries
331
349
 
332
350
  ### vs. Redux + Redux Toolkit
333
351
 
334
- | Feature | Redux + RTK | Praxis |
335
- |---------|-------------|--------|
336
- | State Updates | Reducers | Rules |
337
- | Side Effects | Thunks/Sagas | Actors |
338
- | Time-Travel | DevTools | Built-in |
339
- | TypeScript | Good | Excellent |
340
- | Learning Curve | Medium | Low |
352
+ | Feature | Redux + RTK | Praxis |
353
+ | -------------- | ------------ | --------- |
354
+ | State Updates | Reducers | Rules |
355
+ | Side Effects | Thunks/Sagas | Actors |
356
+ | Time-Travel | DevTools | Built-in |
357
+ | TypeScript | Good | Excellent |
358
+ | Learning Curve | Medium | Low |
341
359
 
342
360
  ### vs. XState
343
361
 
344
- | Feature | XState | Praxis |
345
- |---------|--------|--------|
346
- | State Machines | Native | Engine-based |
362
+ | Feature | XState | Praxis |
363
+ | ------------------ | -------------- | --------------------- |
364
+ | State Machines | Native | Engine-based |
347
365
  | Svelte Integration | @xstate/svelte | @plures/praxis/svelte |
348
- | History States | Built-in | Pattern-based |
349
- | Visual Tools | Stately | State-Docs (planned) |
350
- | Learning Curve | High | Medium |
366
+ | History States | Built-in | Pattern-based |
367
+ | Visual Tools | Stately | State-Docs (planned) |
368
+ | Learning Curve | High | Medium |
351
369
 
352
370
  ### vs. Svelte Stores
353
371
 
354
- | Feature | Svelte Stores | Praxis |
355
- |---------|---------------|--------|
356
- | Simplicity | Very High | High |
357
- | Structure | Manual | Built-in |
358
- | Time-Travel | Manual | Built-in |
359
- | Rules/Logic | Manual | Built-in |
360
- | TypeScript | Good | Excellent |
372
+ | Feature | Svelte Stores | Praxis |
373
+ | ----------- | ------------- | --------- |
374
+ | Simplicity | Very High | High |
375
+ | Structure | Manual | Built-in |
376
+ | Time-Travel | Manual | Built-in |
377
+ | Rules/Logic | Manual | Built-in |
378
+ | TypeScript | Good | Excellent |
361
379
 
362
380
  ## Next Steps
363
381
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Advanced Svelte 5 Integration Example
3
- *
3
+ *
4
4
  * Demonstrates the new Svelte 5 runes support with history state pattern.
5
5
  * This example shows a todo app with undo/redo and time-travel debugging.
6
6
  */
@@ -254,8 +254,8 @@ function runExample() {
254
254
 
255
255
  // Change filter
256
256
  console.log('3. Filtering to active todos:');
257
- engine.step([SetFilter.create({ filter: 'active' })])
258
-
257
+ engine.step([SetFilter.create({ filter: 'active' })]);
258
+
259
259
  const context3 = engine.getContext();
260
260
  const filtered = getFilteredTodos(context3.todos, context3.filter);
261
261
  console.log(` Filter: ${context3.filter}`);
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Auth Basic Example
3
- *
3
+ *
4
4
  * Demonstrates basic authentication logic with login/logout using Praxis.
5
5
  * Shows how to define facts, events, rules, and constraints.
6
6
  */
@@ -14,7 +14,7 @@ import {
14
14
  defineConstraint,
15
15
  findEvent,
16
16
  filterFacts,
17
- } from "../../index.js";
17
+ } from '../../index.js';
18
18
 
19
19
  // Define the context type
20
20
  interface AuthContext {
@@ -23,21 +23,21 @@ interface AuthContext {
23
23
  }
24
24
 
25
25
  // Define facts
26
- const UserLoggedIn = defineFact<"UserLoggedIn", { userId: string; timestamp: number }>(
27
- "UserLoggedIn"
26
+ const UserLoggedIn = defineFact<'UserLoggedIn', { userId: string; timestamp: number }>(
27
+ 'UserLoggedIn'
28
28
  );
29
- const UserLoggedOut = defineFact<"UserLoggedOut", { userId: string; timestamp: number }>(
30
- "UserLoggedOut"
29
+ const UserLoggedOut = defineFact<'UserLoggedOut', { userId: string; timestamp: number }>(
30
+ 'UserLoggedOut'
31
31
  );
32
32
 
33
33
  // Define events
34
- const Login = defineEvent<"LOGIN", { username: string; password: string }>("LOGIN");
35
- const Logout = defineEvent<"LOGOUT", {}>("LOGOUT");
34
+ const Login = defineEvent<'LOGIN', { username: string; password: string }>('LOGIN');
35
+ const Logout = defineEvent<'LOGOUT', {}>('LOGOUT');
36
36
 
37
37
  // Define rules
38
38
  const loginRule = defineRule<AuthContext>({
39
- id: "auth.login",
40
- description: "Process login event and create UserLoggedIn fact",
39
+ id: 'auth.login',
40
+ description: 'Process login event and create UserLoggedIn fact',
41
41
  impl: (_state, events) => {
42
42
  const loginEvent = findEvent(events, Login);
43
43
  if (!loginEvent) {
@@ -51,8 +51,8 @@ const loginRule = defineRule<AuthContext>({
51
51
  });
52
52
 
53
53
  const logoutRule = defineRule<AuthContext>({
54
- id: "auth.logout",
55
- description: "Process logout event and create UserLoggedOut fact",
54
+ id: 'auth.logout',
55
+ description: 'Process logout event and create UserLoggedOut fact',
56
56
  impl: (state, events) => {
57
57
  const logoutEvent = findEvent(events, Logout);
58
58
  if (!logoutEvent || !state.context.currentUser) {
@@ -69,8 +69,8 @@ const logoutRule = defineRule<AuthContext>({
69
69
  });
70
70
 
71
71
  const updateContextRule = defineRule<AuthContext>({
72
- id: "auth.updateContext",
73
- description: "Update context based on login/logout facts",
72
+ id: 'auth.updateContext',
73
+ description: 'Update context based on login/logout facts',
74
74
  impl: (state, _events) => {
75
75
  // This rule updates context based on facts (side effect on context)
76
76
  const loginFacts = filterFacts(state.facts, UserLoggedIn);
@@ -95,8 +95,8 @@ const updateContextRule = defineRule<AuthContext>({
95
95
 
96
96
  // Define constraints
97
97
  const singleSessionConstraint = defineConstraint<AuthContext>({
98
- id: "auth.singleSession",
99
- description: "Only one user can be logged in at a time",
98
+ id: 'auth.singleSession',
99
+ description: 'Only one user can be logged in at a time',
100
100
  impl: (state) => {
101
101
  const loginFacts = filterFacts(state.facts, UserLoggedIn);
102
102
  const logoutFacts = filterFacts(state.facts, UserLoggedOut);
@@ -127,31 +127,31 @@ function createAuthEngine() {
127
127
 
128
128
  // Example usage
129
129
  function runExample() {
130
- console.log("=== Auth Basic Example ===\n");
130
+ console.log('=== Auth Basic Example ===\n');
131
131
 
132
132
  const engine = createAuthEngine();
133
133
 
134
134
  // Login
135
- console.log("1. User logs in:");
136
- let result = engine.step([Login.create({ username: "alice", password: "secret123" })]);
137
- console.log(" Context:", engine.getContext());
138
- console.log(" Facts:", result.state.facts);
139
- console.log(" Diagnostics:", result.diagnostics);
135
+ console.log('1. User logs in:');
136
+ let result = engine.step([Login.create({ username: 'alice', password: 'secret123' })]);
137
+ console.log(' Context:', engine.getContext());
138
+ console.log(' Facts:', result.state.facts);
139
+ console.log(' Diagnostics:', result.diagnostics);
140
140
  console.log();
141
141
 
142
142
  // Try to login again (should violate constraint)
143
- console.log("2. Another user tries to log in:");
144
- result = engine.step([Login.create({ username: "bob", password: "secret456" })]);
145
- console.log(" Context:", engine.getContext());
146
- console.log(" Diagnostics:", result.diagnostics);
143
+ console.log('2. Another user tries to log in:');
144
+ result = engine.step([Login.create({ username: 'bob', password: 'secret456' })]);
145
+ console.log(' Context:', engine.getContext());
146
+ console.log(' Diagnostics:', result.diagnostics);
147
147
  console.log();
148
148
 
149
149
  // Logout
150
- console.log("3. User logs out:");
150
+ console.log('3. User logs out:');
151
151
  result = engine.step([Logout.create({})]);
152
- console.log(" Context:", engine.getContext());
153
- console.log(" Facts (last 3):", result.state.facts.slice(-3));
154
- console.log(" Diagnostics:", result.diagnostics);
152
+ console.log(' Context:', engine.getContext());
153
+ console.log(' Facts (last 3):', result.state.facts.slice(-3));
154
+ console.log(' Diagnostics:', result.diagnostics);
155
155
  console.log();
156
156
  }
157
157
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Cart Example
3
- *
3
+ *
4
4
  * Demonstrates shopping cart logic with flows and derived state.
5
5
  * Shows how to manage complex state with multiple rules and constraints.
6
6
  */
@@ -15,7 +15,7 @@ import {
15
15
  defineModule,
16
16
  findEvent,
17
17
  filterFacts,
18
- } from "../../index.js";
18
+ } from '../../index.js';
19
19
 
20
20
  // Define the context type
21
21
  interface CartContext {
@@ -25,25 +25,26 @@ interface CartContext {
25
25
  }
26
26
 
27
27
  // Define facts
28
- const ItemAdded = defineFact<"ItemAdded", { productId: string; quantity: number; price: number }>(
29
- "ItemAdded"
28
+ const ItemAdded = defineFact<'ItemAdded', { productId: string; quantity: number; price: number }>(
29
+ 'ItemAdded'
30
30
  );
31
- const ItemRemoved = defineFact<"ItemRemoved", { productId: string }>("ItemRemoved");
32
- const DiscountApplied = defineFact<"DiscountApplied", { percentage: number }>("DiscountApplied");
33
- const CartCleared = defineFact<"CartCleared", {}>("CartCleared");
31
+ const ItemRemoved = defineFact<'ItemRemoved', { productId: string }>('ItemRemoved');
32
+ const DiscountApplied = defineFact<'DiscountApplied', { percentage: number }>('DiscountApplied');
33
+ const CartCleared = defineFact<'CartCleared', {}>('CartCleared');
34
34
 
35
35
  // Define events
36
- const AddToCart = defineEvent<"ADD_TO_CART", { productId: string; quantity: number; price: number }>(
37
- "ADD_TO_CART"
38
- );
39
- const RemoveFromCart = defineEvent<"REMOVE_FROM_CART", { productId: string }>("REMOVE_FROM_CART");
40
- const ApplyDiscount = defineEvent<"APPLY_DISCOUNT", { code: string }>("APPLY_DISCOUNT");
41
- const ClearCart = defineEvent<"CLEAR_CART", {}>("CLEAR_CART");
36
+ const AddToCart = defineEvent<
37
+ 'ADD_TO_CART',
38
+ { productId: string; quantity: number; price: number }
39
+ >('ADD_TO_CART');
40
+ const RemoveFromCart = defineEvent<'REMOVE_FROM_CART', { productId: string }>('REMOVE_FROM_CART');
41
+ const ApplyDiscount = defineEvent<'APPLY_DISCOUNT', { code: string }>('APPLY_DISCOUNT');
42
+ const ClearCart = defineEvent<'CLEAR_CART', {}>('CLEAR_CART');
42
43
 
43
44
  // Define rules
44
45
  const addToCartRule = defineRule<CartContext>({
45
- id: "cart.addItem",
46
- description: "Add item to cart",
46
+ id: 'cart.addItem',
47
+ description: 'Add item to cart',
47
48
  impl: (_state, events) => {
48
49
  const addEvents = events.filter(AddToCart.is);
49
50
  return addEvents.map((event) =>
@@ -57,8 +58,8 @@ const addToCartRule = defineRule<CartContext>({
57
58
  });
58
59
 
59
60
  const removeFromCartRule = defineRule<CartContext>({
60
- id: "cart.removeItem",
61
- description: "Remove item from cart",
61
+ id: 'cart.removeItem',
62
+ description: 'Remove item from cart',
62
63
  impl: (_state, events) => {
63
64
  const removeEvent = findEvent(events, RemoveFromCart);
64
65
  if (!removeEvent) {
@@ -69,8 +70,8 @@ const removeFromCartRule = defineRule<CartContext>({
69
70
  });
70
71
 
71
72
  const applyDiscountRule = defineRule<CartContext>({
72
- id: "cart.applyDiscount",
73
- description: "Apply discount code",
73
+ id: 'cart.applyDiscount',
74
+ description: 'Apply discount code',
74
75
  impl: (state, events) => {
75
76
  const discountEvent = findEvent(events, ApplyDiscount);
76
77
  if (!discountEvent || state.context.discountApplied) {
@@ -78,7 +79,7 @@ const applyDiscountRule = defineRule<CartContext>({
78
79
  }
79
80
 
80
81
  // Simple discount logic: "SAVE10" = 10% off
81
- const percentage = discountEvent.payload.code === "SAVE10" ? 10 : 0;
82
+ const percentage = discountEvent.payload.code === 'SAVE10' ? 10 : 0;
82
83
  if (percentage > 0) {
83
84
  return [DiscountApplied.create({ percentage })];
84
85
  }
@@ -87,8 +88,8 @@ const applyDiscountRule = defineRule<CartContext>({
87
88
  });
88
89
 
89
90
  const clearCartRule = defineRule<CartContext>({
90
- id: "cart.clear",
91
- description: "Clear cart",
91
+ id: 'cart.clear',
92
+ description: 'Clear cart',
92
93
  impl: (_state, events) => {
93
94
  const clearEvent = findEvent(events, ClearCart);
94
95
  if (!clearEvent) {
@@ -99,8 +100,8 @@ const clearCartRule = defineRule<CartContext>({
99
100
  });
100
101
 
101
102
  const updateCartContextRule = defineRule<CartContext>({
102
- id: "cart.updateContext",
103
- description: "Update cart context based on facts",
103
+ id: 'cart.updateContext',
104
+ description: 'Update cart context based on facts',
104
105
  impl: (state, _events) => {
105
106
  const addedItems = filterFacts(state.facts, ItemAdded);
106
107
  const removedItems = filterFacts(state.facts, ItemRemoved);
@@ -145,10 +146,7 @@ const updateCartContextRule = defineRule<CartContext>({
145
146
  }));
146
147
 
147
148
  // Calculate total
148
- let total = state.context.items.reduce(
149
- (sum, item) => sum + item.quantity * item.price,
150
- 0
151
- );
149
+ let total = state.context.items.reduce((sum, item) => sum + item.quantity * item.price, 0);
152
150
 
153
151
  // Apply discount if any
154
152
  if (discountFacts.length > 0) {
@@ -165,8 +163,8 @@ const updateCartContextRule = defineRule<CartContext>({
165
163
 
166
164
  // Define constraints
167
165
  const maxItemsConstraint = defineConstraint<CartContext>({
168
- id: "cart.maxItems",
169
- description: "Cart cannot exceed 100 items",
166
+ id: 'cart.maxItems',
167
+ description: 'Cart cannot exceed 100 items',
170
168
  impl: (state) => {
171
169
  const totalQuantity = state.context.items.reduce((sum, item) => sum + item.quantity, 0);
172
170
  return totalQuantity <= 100 || `Cart has ${totalQuantity} items, maximum is 100`;
@@ -174,10 +172,12 @@ const maxItemsConstraint = defineConstraint<CartContext>({
174
172
  });
175
173
 
176
174
  const maxTotalConstraint = defineConstraint<CartContext>({
177
- id: "cart.maxTotal",
178
- description: "Cart total cannot exceed $10,000",
175
+ id: 'cart.maxTotal',
176
+ description: 'Cart total cannot exceed $10,000',
179
177
  impl: (state) => {
180
- return state.context.total <= 10000 || `Cart total $${state.context.total} exceeds maximum $10,000`;
178
+ return (
179
+ state.context.total <= 10000 || `Cart total $${state.context.total} exceeds maximum $10,000`
180
+ );
181
181
  },
182
182
  });
183
183
 
@@ -191,7 +191,7 @@ const cartModule = defineModule<CartContext>({
191
191
  updateCartContextRule,
192
192
  ],
193
193
  constraints: [maxItemsConstraint, maxTotalConstraint],
194
- meta: { version: "1.0.0" },
194
+ meta: { version: '1.0.0' },
195
195
  });
196
196
 
197
197
  // Create and configure the engine
@@ -213,41 +213,41 @@ function createCartEngine() {
213
213
 
214
214
  // Example usage
215
215
  function runExample() {
216
- console.log("=== Cart Example ===\n");
216
+ console.log('=== Cart Example ===\n');
217
217
 
218
218
  const engine = createCartEngine();
219
219
 
220
220
  // Add items
221
- console.log("1. Add items to cart:");
221
+ console.log('1. Add items to cart:');
222
222
  engine.step([
223
- AddToCart.create({ productId: "prod-1", quantity: 2, price: 29.99 }),
224
- AddToCart.create({ productId: "prod-2", quantity: 1, price: 49.99 }),
223
+ AddToCart.create({ productId: 'prod-1', quantity: 2, price: 29.99 }),
224
+ AddToCart.create({ productId: 'prod-2', quantity: 1, price: 49.99 }),
225
225
  ]);
226
- console.log(" Cart:", engine.getContext());
226
+ console.log(' Cart:', engine.getContext());
227
227
  console.log();
228
228
 
229
229
  // Apply discount
230
- console.log("2. Apply discount code:");
231
- engine.step([ApplyDiscount.create({ code: "SAVE10" })]);
232
- console.log(" Cart:", engine.getContext());
230
+ console.log('2. Apply discount code:');
231
+ engine.step([ApplyDiscount.create({ code: 'SAVE10' })]);
232
+ console.log(' Cart:', engine.getContext());
233
233
  console.log();
234
234
 
235
235
  // Remove item
236
- console.log("3. Remove an item:");
237
- engine.step([RemoveFromCart.create({ productId: "prod-1" })]);
238
- console.log(" Cart:", engine.getContext());
236
+ console.log('3. Remove an item:');
237
+ engine.step([RemoveFromCart.create({ productId: 'prod-1' })]);
238
+ console.log(' Cart:', engine.getContext());
239
239
  console.log();
240
240
 
241
241
  // Add more items
242
- console.log("4. Add more items:");
243
- engine.step([AddToCart.create({ productId: "prod-3", quantity: 3, price: 15.99 })]);
244
- console.log(" Cart:", engine.getContext());
242
+ console.log('4. Add more items:');
243
+ engine.step([AddToCart.create({ productId: 'prod-3', quantity: 3, price: 15.99 })]);
244
+ console.log(' Cart:', engine.getContext());
245
245
  console.log();
246
246
 
247
247
  // Clear cart
248
- console.log("5. Clear cart:");
248
+ console.log('5. Clear cart:');
249
249
  engine.step([ClearCart.create({})]);
250
- console.log(" Cart:", engine.getContext());
250
+ console.log(' Cart:', engine.getContext());
251
251
  console.log();
252
252
  }
253
253