@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,14 +1,10 @@
1
1
  /**
2
2
  * Praxis Logic Generator
3
- *
3
+ *
4
4
  * Generates logic module code from schema definitions.
5
5
  */
6
6
 
7
- import type {
8
- FactDefinition,
9
- EventDefinition,
10
- RuleDefinition,
11
- } from '../schema/types.js';
7
+ import type { FactDefinition, EventDefinition, RuleDefinition } from '../schema/types.js';
12
8
  import type { NormalizedSchema } from '../schema/normalize.js';
13
9
 
14
10
  /**
@@ -40,7 +36,7 @@ export interface GeneratedLogicFile {
40
36
  */
41
37
  export class LogicGenerator {
42
38
  private options: LogicGeneratorOptions;
43
-
39
+
44
40
  constructor(options: LogicGeneratorOptions) {
45
41
  this.options = {
46
42
  typescript: true,
@@ -48,16 +44,16 @@ export class LogicGenerator {
48
44
  ...options,
49
45
  };
50
46
  }
51
-
47
+
52
48
  /**
53
49
  * Generate all logic files from schema
54
50
  */
55
51
  generateLogic(schema: NormalizedSchema): GeneratedLogicFile[] {
56
52
  const files: GeneratedLogicFile[] = [];
57
-
53
+
58
54
  // Collect all logic definitions
59
55
  const allLogic = schema.logic || [];
60
-
56
+
61
57
  if (allLogic.length === 0) {
62
58
  // Generate minimal structure even without logic definitions
63
59
  files.push(this.generateFactsFile([]));
@@ -67,49 +63,51 @@ export class LogicGenerator {
67
63
  files.push(this.generateIndexFile());
68
64
  return files;
69
65
  }
70
-
66
+
71
67
  // Collect all facts, events, and rules from logic definitions
72
68
  const allFacts = allLogic.flatMap((logic) => logic.facts || []);
73
69
  const allEvents = allLogic.flatMap((logic) => logic.events || []);
74
70
  const allRules = allLogic.flatMap((logic) => logic.rules || []);
75
-
71
+
76
72
  // Generate individual files
77
73
  files.push(this.generateFactsFile(allFacts));
78
74
  files.push(this.generateEventsFile(allEvents));
79
75
  files.push(this.generateRulesFile(allRules));
80
76
  files.push(this.generateEngineFile(schema));
81
77
  files.push(this.generateIndexFile());
82
-
78
+
83
79
  return files;
84
80
  }
85
-
81
+
86
82
  /**
87
83
  * Generate facts.ts file
88
84
  */
89
85
  private generateFactsFile(facts: FactDefinition[]): GeneratedLogicFile {
90
86
  const ext = this.options.typescript ? 'ts' : 'js';
91
87
  const lines: string[] = [];
92
-
88
+
93
89
  lines.push("import { defineFact } from '@plures/praxis';");
94
90
  lines.push('');
95
-
91
+
96
92
  if (this.options.includeDocs) {
97
93
  lines.push('/**');
98
94
  lines.push(' * Fact definitions');
99
95
  lines.push(' */');
100
96
  lines.push('');
101
97
  }
102
-
98
+
103
99
  if (facts.length === 0) {
104
100
  lines.push('// No facts defined in schema');
105
101
  lines.push('// Example:');
106
- lines.push('// export const UserCreated = defineFact<"UserCreated", { userId: string }>("UserCreated");');
102
+ lines.push(
103
+ '// export const UserCreated = defineFact<"UserCreated", { userId: string }>("UserCreated");'
104
+ );
107
105
  } else {
108
106
  for (const fact of facts) {
109
107
  if (this.options.includeDocs && fact.description) {
110
108
  lines.push(`/** ${fact.description} */`);
111
109
  }
112
-
110
+
113
111
  const payloadType = this.generatePayloadType(fact.payload);
114
112
  lines.push(
115
113
  `export const ${fact.tag} = defineFact<"${fact.tag}", ${payloadType}>("${fact.tag}");`
@@ -117,41 +115,43 @@ export class LogicGenerator {
117
115
  lines.push('');
118
116
  }
119
117
  }
120
-
118
+
121
119
  return {
122
120
  path: `${this.options.outputDir}/facts.${ext}`,
123
121
  content: lines.join('\n'),
124
122
  type: 'facts',
125
123
  };
126
124
  }
127
-
125
+
128
126
  /**
129
127
  * Generate events.ts file
130
128
  */
131
129
  private generateEventsFile(events: EventDefinition[]): GeneratedLogicFile {
132
130
  const ext = this.options.typescript ? 'ts' : 'js';
133
131
  const lines: string[] = [];
134
-
132
+
135
133
  lines.push("import { defineEvent } from '@plures/praxis';");
136
134
  lines.push('');
137
-
135
+
138
136
  if (this.options.includeDocs) {
139
137
  lines.push('/**');
140
138
  lines.push(' * Event definitions');
141
139
  lines.push(' */');
142
140
  lines.push('');
143
141
  }
144
-
142
+
145
143
  if (events.length === 0) {
146
144
  lines.push('// No events defined in schema');
147
145
  lines.push('// Example:');
148
- lines.push('// export const CreateUser = defineEvent<"CREATE_USER", { name: string; email: string }>("CREATE_USER");');
146
+ lines.push(
147
+ '// export const CreateUser = defineEvent<"CREATE_USER", { name: string; email: string }>("CREATE_USER");'
148
+ );
149
149
  } else {
150
150
  for (const event of events) {
151
151
  if (this.options.includeDocs && event.description) {
152
152
  lines.push(`/** ${event.description} */`);
153
153
  }
154
-
154
+
155
155
  const payloadType = this.generatePayloadType(event.payload);
156
156
  lines.push(
157
157
  `export const ${event.tag} = defineEvent<"${event.tag}", ${payloadType}>("${event.tag}");`
@@ -159,33 +159,33 @@ export class LogicGenerator {
159
159
  lines.push('');
160
160
  }
161
161
  }
162
-
162
+
163
163
  return {
164
164
  path: `${this.options.outputDir}/events.${ext}`,
165
165
  content: lines.join('\n'),
166
166
  type: 'events',
167
167
  };
168
168
  }
169
-
169
+
170
170
  /**
171
171
  * Generate rules.ts file
172
172
  */
173
173
  private generateRulesFile(rules: RuleDefinition[]): GeneratedLogicFile {
174
174
  const ext = this.options.typescript ? 'ts' : 'js';
175
175
  const lines: string[] = [];
176
-
176
+
177
177
  lines.push("import { defineRule } from '@plures/praxis';");
178
178
  lines.push("import * as Facts from './facts.js';");
179
179
  lines.push("import * as Events from './events.js';");
180
180
  lines.push('');
181
-
181
+
182
182
  if (this.options.includeDocs) {
183
183
  lines.push('/**');
184
184
  lines.push(' * Rule definitions');
185
185
  lines.push(' */');
186
186
  lines.push('');
187
187
  }
188
-
188
+
189
189
  if (rules.length === 0) {
190
190
  lines.push('// No rules defined in schema');
191
191
  lines.push('// Example:');
@@ -207,42 +207,42 @@ export class LogicGenerator {
207
207
  if (this.options.includeDocs && rule.description) {
208
208
  lines.push(`/** ${rule.description} */`);
209
209
  }
210
-
210
+
211
211
  lines.push(`export const ${this.sanitizeIdentifier(rule.id)}Rule = defineRule({`);
212
212
  lines.push(` id: '${rule.id}',`);
213
213
  lines.push(` description: '${rule.description}',`);
214
-
214
+
215
215
  if (rule.priority !== undefined) {
216
216
  lines.push(` priority: ${rule.priority},`);
217
217
  }
218
-
218
+
219
219
  // Generate implementation based on rule definition
220
220
  const eventTriggers = rule.on || [];
221
221
  const condition = rule.when || 'true';
222
222
  const action = rule.then;
223
-
223
+
224
224
  lines.push(' impl: (state, events) => {');
225
-
225
+
226
226
  // Add event filtering if triggers are specified
227
227
  if (eventTriggers.length > 0) {
228
228
  lines.push(` // Filter for triggering events: ${eventTriggers.join(', ')}`);
229
229
  lines.push(` const triggerEvents = events.filter(e => `);
230
- lines.push(` [${eventTriggers.map(e => `'${e}'`).join(', ')}].includes(e.tag)`);
230
+ lines.push(` [${eventTriggers.map((e) => `'${e}'`).join(', ')}].includes(e.tag)`);
231
231
  lines.push(' );');
232
232
  lines.push(' if (triggerEvents.length === 0) return [];');
233
233
  lines.push('');
234
234
  }
235
-
235
+
236
236
  // Add condition check
237
237
  if (condition && condition !== 'true') {
238
238
  lines.push(` // Condition: ${condition}`);
239
239
  lines.push(` // Implement condition logic here`);
240
240
  lines.push('');
241
241
  }
242
-
242
+
243
243
  // Parse action to generate appropriate response
244
244
  lines.push(` // Action: ${action}`);
245
-
245
+
246
246
  // Try to generate a fact from the action
247
247
  const factMatch = action.match(/emit\s*\(\s*['"](\w+)['"]/);
248
248
  if (factMatch) {
@@ -255,12 +255,12 @@ export class LogicGenerator {
255
255
  // Default: return empty array
256
256
  lines.push(' return [];');
257
257
  }
258
-
258
+
259
259
  lines.push(' },');
260
260
  lines.push('});');
261
261
  lines.push('');
262
262
  }
263
-
263
+
264
264
  // Export all rules as array
265
265
  lines.push('export const rules = [');
266
266
  for (const rule of rules) {
@@ -268,25 +268,25 @@ export class LogicGenerator {
268
268
  }
269
269
  lines.push('];');
270
270
  }
271
-
271
+
272
272
  return {
273
273
  path: `${this.options.outputDir}/rules.${ext}`,
274
274
  content: lines.join('\n'),
275
275
  type: 'rules',
276
276
  };
277
277
  }
278
-
278
+
279
279
  /**
280
280
  * Generate engine.ts file
281
281
  */
282
282
  private generateEngineFile(schema: NormalizedSchema): GeneratedLogicFile {
283
283
  const ext = this.options.typescript ? 'ts' : 'js';
284
284
  const lines: string[] = [];
285
-
285
+
286
286
  lines.push("import { createPraxisEngine, PraxisRegistry } from '@plures/praxis';");
287
287
  lines.push("import { rules } from './rules.js';");
288
288
  lines.push('');
289
-
289
+
290
290
  if (this.options.includeDocs) {
291
291
  lines.push('/**');
292
292
  lines.push(` * ${schema.name} Logic Engine`);
@@ -296,14 +296,14 @@ export class LogicGenerator {
296
296
  lines.push(' */');
297
297
  lines.push('');
298
298
  }
299
-
299
+
300
300
  // Generate context type from models
301
301
  if (this.options.typescript) {
302
302
  lines.push('/**');
303
303
  lines.push(' * Application context type');
304
304
  lines.push(' */');
305
305
  lines.push('export interface AppContext {');
306
-
306
+
307
307
  if (schema.models && schema.models.length > 0) {
308
308
  for (const model of schema.models) {
309
309
  lines.push(` ${model.name.toLowerCase()}s: ${model.name}[];`);
@@ -311,10 +311,10 @@ export class LogicGenerator {
311
311
  } else {
312
312
  lines.push(' // Add your context properties here');
313
313
  }
314
-
314
+
315
315
  lines.push('}');
316
316
  lines.push('');
317
-
317
+
318
318
  // Generate model types
319
319
  if (schema.models && schema.models.length > 0) {
320
320
  for (const model of schema.models) {
@@ -329,7 +329,7 @@ export class LogicGenerator {
329
329
  }
330
330
  }
331
331
  }
332
-
332
+
333
333
  // Create registry and engine
334
334
  lines.push('/**');
335
335
  lines.push(' * Create the logic engine');
@@ -344,7 +344,7 @@ export class LogicGenerator {
344
344
  lines.push('');
345
345
  lines.push(' // Create engine with initial context');
346
346
  lines.push(' const initialContext: AppContext = {');
347
-
347
+
348
348
  if (schema.models && schema.models.length > 0) {
349
349
  for (const model of schema.models) {
350
350
  lines.push(` ${model.name.toLowerCase()}s: [],`);
@@ -352,7 +352,7 @@ export class LogicGenerator {
352
352
  } else {
353
353
  lines.push(' // Initialize your context here');
354
354
  }
355
-
355
+
356
356
  lines.push(' };');
357
357
  lines.push('');
358
358
  lines.push(' return createPraxisEngine({');
@@ -360,33 +360,33 @@ export class LogicGenerator {
360
360
  lines.push(' registry,');
361
361
  lines.push(' });');
362
362
  lines.push('}');
363
-
363
+
364
364
  return {
365
365
  path: `${this.options.outputDir}/engine.${ext}`,
366
366
  content: lines.join('\n'),
367
367
  type: 'engine',
368
368
  };
369
369
  }
370
-
370
+
371
371
  /**
372
372
  * Generate index.ts file
373
373
  */
374
374
  private generateIndexFile(): GeneratedLogicFile {
375
375
  const ext = this.options.typescript ? 'ts' : 'js';
376
376
  const lines: string[] = [];
377
-
377
+
378
378
  lines.push("export * from './facts.js';");
379
379
  lines.push("export * from './events.js';");
380
380
  lines.push("export * from './rules.js';");
381
381
  lines.push("export * from './engine.js';");
382
-
382
+
383
383
  return {
384
384
  path: `${this.options.outputDir}/index.${ext}`,
385
385
  content: lines.join('\n'),
386
386
  type: 'index',
387
387
  };
388
388
  }
389
-
389
+
390
390
  /**
391
391
  * Generate TypeScript type from payload definition
392
392
  */
@@ -396,7 +396,7 @@ export class LogicGenerator {
396
396
  .join('; ');
397
397
  return `{ ${fields} }`;
398
398
  }
399
-
399
+
400
400
  /**
401
401
  * Map field type to TypeScript type
402
402
  */
@@ -419,7 +419,7 @@ export class LogicGenerator {
419
419
  return 'unknown';
420
420
  }
421
421
  }
422
-
422
+
423
423
  if (typeof type === 'object') {
424
424
  if ('array' in type) {
425
425
  const innerType = this.mapFieldType(type.array);
@@ -429,10 +429,10 @@ export class LogicGenerator {
429
429
  return type.reference;
430
430
  }
431
431
  }
432
-
432
+
433
433
  return 'unknown';
434
434
  }
435
-
435
+
436
436
  /**
437
437
  * Sanitize identifier for variable names
438
438
  */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * PraxisDB Adapter
3
- *
3
+ *
4
4
  * Provides a minimal adapter layer for PluresDB integration.
5
5
  * This module defines the core interface and an in-memory implementation.
6
6
  */
@@ -12,7 +12,7 @@ export type UnsubscribeFn = () => void;
12
12
 
13
13
  /**
14
14
  * Core database interface for Praxis
15
- *
15
+ *
16
16
  * Provides a minimal API for get/set/watch operations.
17
17
  * Can be backed by in-memory storage or PluresDB.
18
18
  */
@@ -42,7 +42,7 @@ export interface PraxisDB {
42
42
 
43
43
  /**
44
44
  * In-memory implementation of PraxisDB
45
- *
45
+ *
46
46
  * Provides a simple in-memory store for development and testing.
47
47
  * Suitable for proxying to PluresDB later.
48
48
  */
@@ -56,7 +56,7 @@ export class InMemoryPraxisDB implements PraxisDB {
56
56
 
57
57
  async set<T>(key: string, value: T): Promise<void> {
58
58
  this.store.set(key, value);
59
-
59
+
60
60
  // Notify watchers
61
61
  const keyWatchers = this.watchers.get(key);
62
62
  if (keyWatchers) {
@@ -70,11 +70,11 @@ export class InMemoryPraxisDB implements PraxisDB {
70
70
  if (!this.watchers.has(key)) {
71
71
  this.watchers.set(key, new Set());
72
72
  }
73
-
73
+
74
74
  const watchers = this.watchers.get(key)!;
75
75
  const wrappedCallback = (val: unknown) => callback(val as T);
76
76
  watchers.add(wrappedCallback);
77
-
77
+
78
78
  // Return unsubscribe function
79
79
  return () => {
80
80
  watchers.delete(wrappedCallback);
@@ -102,9 +102,9 @@ export class InMemoryPraxisDB implements PraxisDB {
102
102
 
103
103
  /**
104
104
  * Create a new in-memory PraxisDB instance
105
- *
105
+ *
106
106
  * @returns InMemoryPraxisDB instance
107
- *
107
+ *
108
108
  * @example
109
109
  * ```typescript
110
110
  * const db = createInMemoryDB();
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * PluresDB Config Generator
3
- *
3
+ *
4
4
  * Generates PluresDB configuration from schema definitions.
5
5
  */
6
6
 
@@ -49,7 +49,7 @@ interface StoreDefinition {
49
49
  */
50
50
  export class PluresDBGenerator {
51
51
  private options: PluresDBGeneratorOptions;
52
-
52
+
53
53
  constructor(options: PluresDBGeneratorOptions) {
54
54
  this.options = {
55
55
  dbVersion: 1,
@@ -58,41 +58,41 @@ export class PluresDBGenerator {
58
58
  ...options,
59
59
  };
60
60
  }
61
-
61
+
62
62
  /**
63
63
  * Generate PluresDB configuration from schema
64
64
  */
65
65
  generateConfig(schema: NormalizedSchema): GeneratedPluresDBFile[] {
66
66
  const files: GeneratedPluresDBFile[] = [];
67
-
67
+
68
68
  // Generate the main config file
69
69
  files.push(this.generateConfigFile(schema));
70
-
70
+
71
71
  return files;
72
72
  }
73
-
73
+
74
74
  /**
75
75
  * Generate pluresdb-config.ts file
76
76
  */
77
77
  private generateConfigFile(schema: NormalizedSchema): GeneratedPluresDBFile {
78
78
  const lines: string[] = [];
79
79
  const dbName = this.options.dbName || schema.name.toLowerCase();
80
-
80
+
81
81
  lines.push('/**');
82
82
  lines.push(` * PluresDB Configuration for ${schema.name}`);
83
83
  lines.push(' * Generated from Praxis schema');
84
84
  lines.push(' */');
85
85
  lines.push('');
86
-
86
+
87
87
  // Import statement (for future PluresDB integration)
88
- lines.push('// import { createPluresDB } from \'@plures/pluresdb\';');
88
+ lines.push("// import { createPluresDB } from '@plures/pluresdb';");
89
89
  lines.push('');
90
-
90
+
91
91
  // Generate store definitions
92
92
  lines.push('/**');
93
93
  lines.push(' * Database store configuration');
94
94
  lines.push(' * ');
95
-
95
+
96
96
  // Document indexing behavior based on configuration
97
97
  const autoIndexStrategy = this.options.autoIndex || 'all';
98
98
  if (autoIndexStrategy === 'all') {
@@ -106,28 +106,28 @@ export class PluresDBGenerator {
106
106
  }
107
107
  lines.push(' */');
108
108
  lines.push('export const stores = {');
109
-
109
+
110
110
  if (schema.models && schema.models.length > 0) {
111
111
  for (const model of schema.models) {
112
112
  const storeName = model.name.toLowerCase() + 's';
113
113
  const storeConfig = this.generateStoreConfig(model);
114
-
114
+
115
115
  lines.push(` ${storeName}: {`);
116
116
  lines.push(` keyPath: '${storeConfig.keyPath}',`);
117
-
117
+
118
118
  if (storeConfig.indexes.length > 0) {
119
- lines.push(` indexes: [${storeConfig.indexes.map(idx => `'${idx}'`).join(', ')}],`);
119
+ lines.push(` indexes: [${storeConfig.indexes.map((idx) => `'${idx}'`).join(', ')}],`);
120
120
  }
121
-
121
+
122
122
  lines.push(' },');
123
123
  }
124
124
  } else {
125
125
  lines.push(' // No models defined in schema');
126
126
  }
127
-
127
+
128
128
  lines.push('};');
129
129
  lines.push('');
130
-
130
+
131
131
  // Generate main config
132
132
  lines.push('/**');
133
133
  lines.push(' * Database configuration');
@@ -136,24 +136,24 @@ export class PluresDBGenerator {
136
136
  lines.push(` name: '${dbName}',`);
137
137
  lines.push(` version: ${this.options.dbVersion},`);
138
138
  lines.push(' stores,');
139
-
139
+
140
140
  if (this.options.enableSync) {
141
141
  lines.push(' sync: {');
142
142
  lines.push(' enabled: true,');
143
-
143
+
144
144
  if (this.options.syncEndpoint) {
145
145
  lines.push(` endpoint: '${this.options.syncEndpoint}',`);
146
146
  } else {
147
- lines.push(' endpoint: \'ws://localhost:8080/sync\',');
147
+ lines.push(" endpoint: 'ws://localhost:8080/sync',");
148
148
  }
149
-
150
- lines.push(' conflictResolution: \'last-write-wins\',');
149
+
150
+ lines.push(" conflictResolution: 'last-write-wins',");
151
151
  lines.push(' },');
152
152
  }
153
-
153
+
154
154
  lines.push('};');
155
155
  lines.push('');
156
-
156
+
157
157
  // Generate initialization function
158
158
  lines.push('/**');
159
159
  lines.push(' * Initialize PluresDB');
@@ -180,40 +180,44 @@ export class PluresDBGenerator {
180
180
  lines.push('/**');
181
181
  lines.push(' * Get store by name');
182
182
  lines.push(' */');
183
- lines.push('export function getStore(db: ReturnType<typeof createInMemoryDB>, storeName: string) {');
183
+ lines.push(
184
+ 'export function getStore(db: ReturnType<typeof createInMemoryDB>, storeName: string) {'
185
+ );
184
186
  lines.push(' const storeDef = dbConfig.stores.find(s => s.name === storeName);');
185
187
  lines.push(' if (!storeDef) {');
186
188
  lines.push(' throw new Error(`Store "${storeName}" not found in configuration`);');
187
189
  lines.push(' }');
188
190
  lines.push(' return {');
189
191
  lines.push(' get: (key: string) => db.get(`stores/${storeName}/${key}`),');
190
- lines.push(' set: (key: string, value: unknown) => db.set(`stores/${storeName}/${key}`, value),');
192
+ lines.push(
193
+ ' set: (key: string, value: unknown) => db.set(`stores/${storeName}/${key}`, value),'
194
+ );
191
195
  lines.push(' delete: (key: string) => db.delete(`stores/${storeName}/${key}`),');
192
196
  lines.push(' watch: (key: string, callback: (data: unknown) => void) => ');
193
197
  lines.push(' db.watch(`stores/${storeName}/${key}`, callback),');
194
198
  lines.push(' };');
195
199
  lines.push('}');
196
-
200
+
197
201
  return {
198
202
  path: `${this.options.outputDir}/pluresdb-config.ts`,
199
203
  content: lines.join('\n'),
200
204
  type: 'config',
201
205
  };
202
206
  }
203
-
207
+
204
208
  /**
205
209
  * Generate store configuration for a model
206
210
  */
207
211
  private generateStoreConfig(model: NormalizedModel): StoreDefinition {
208
212
  // Find the ID field (or use 'id' as default)
209
- const idField = model.fields.find(f => f.name === 'id' || f.name === '_id');
213
+ const idField = model.fields.find((f) => f.name === 'id' || f.name === '_id');
210
214
  const keyPath = idField ? idField.name : 'id';
211
-
215
+
212
216
  const indexes: string[] = [];
213
-
217
+
214
218
  // Apply auto-indexing based on configuration
215
219
  const autoIndexStrategy = this.options.autoIndex || 'all';
216
-
220
+
217
221
  if (autoIndexStrategy === 'all') {
218
222
  // Auto-index all string, number, and date fields for query performance
219
223
  for (const field of model.fields) {
@@ -225,7 +229,7 @@ export class PluresDBGenerator {
225
229
  }
226
230
  }
227
231
  // For 'explicit' and 'none', we only add indexes explicitly defined in the schema
228
-
232
+
229
233
  // Always add indexes from schema index definitions (overrides auto-indexing)
230
234
  if (model.indexes) {
231
235
  for (const indexDef of model.indexes) {
@@ -236,7 +240,7 @@ export class PluresDBGenerator {
236
240
  }
237
241
  }
238
242
  }
239
-
243
+
240
244
  return {
241
245
  keyPath,
242
246
  indexes,