@plures/praxis 1.0.2 → 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 (518) 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 -96
  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 +49 -0
  133. package/src/cli/index.ts +21 -2
  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/index.d.ts +0 -8
  294. package/dist/src/cli/index.d.ts.map +0 -1
  295. package/dist/src/cli/index.js +0 -211
  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/cli/commands/index.d.ts +0 -7
  484. package/dist/tools/cli/commands/index.d.ts.map +0 -1
  485. package/dist/tools/cli/commands/index.js +0 -7
  486. package/dist/tools/cli/commands/index.js.map +0 -1
  487. package/dist/tools/cli/index.d.ts +0 -8
  488. package/dist/tools/cli/index.d.ts.map +0 -1
  489. package/dist/tools/cli/index.js +0 -9
  490. package/dist/tools/cli/index.js.map +0 -1
  491. package/dist/tools/watcher/index.d.ts +0 -105
  492. package/dist/tools/watcher/index.d.ts.map +0 -1
  493. package/dist/tools/watcher/index.js +0 -213
  494. package/dist/tools/watcher/index.js.map +0 -1
  495. package/dist/ui/canvas/canvas-projection.d.ts +0 -78
  496. package/dist/ui/canvas/canvas-projection.d.ts.map +0 -1
  497. package/dist/ui/canvas/canvas-projection.js +0 -416
  498. package/dist/ui/canvas/canvas-projection.js.map +0 -1
  499. package/dist/ui/canvas/canvas-state.d.ts +0 -200
  500. package/dist/ui/canvas/canvas-state.d.ts.map +0 -1
  501. package/dist/ui/canvas/canvas-state.js +0 -464
  502. package/dist/ui/canvas/canvas-state.js.map +0 -1
  503. package/dist/ui/canvas/components/index.d.ts +0 -95
  504. package/dist/ui/canvas/components/index.d.ts.map +0 -1
  505. package/dist/ui/canvas/components/index.js +0 -19
  506. package/dist/ui/canvas/components/index.js.map +0 -1
  507. package/dist/ui/canvas/index.d.ts +0 -32
  508. package/dist/ui/canvas/index.d.ts.map +0 -1
  509. package/dist/ui/canvas/index.js +0 -32
  510. package/dist/ui/canvas/index.js.map +0 -1
  511. package/dist/ui/svelte-generator/index.d.ts +0 -9
  512. package/dist/ui/svelte-generator/index.d.ts.map +0 -1
  513. package/dist/ui/svelte-generator/index.js +0 -11
  514. package/dist/ui/svelte-generator/index.js.map +0 -1
  515. package/dist/ui/svelte-generator/psf-generator.d.ts +0 -128
  516. package/dist/ui/svelte-generator/psf-generator.d.ts.map +0 -1
  517. package/dist/ui/svelte-generator/psf-generator.js +0 -506
  518. package/dist/ui/svelte-generator/psf-generator.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ui/canvas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AAUvC,oCAAoC;AACpC,OAAO,EACL,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,kBAAkB,GAUnB,MAAM,uCAAuC,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Praxis Svelte Generator
3
- *
4
- * Generates Svelte components from PSF schema definitions.
5
- * Provides a complete UI generation pipeline from schema to components.
6
- */
7
- export { ComponentGenerator, createComponentGenerator, type GeneratorConfig, type GenerationResult, type GeneratedFile, type GenerationError, } from '../../src/core/component/generator.js';
8
- export * from './psf-generator.js';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ui/svelte-generator/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,uCAAuC,CAAC;AAG/C,cAAc,oBAAoB,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Praxis Svelte Generator
3
- *
4
- * Generates Svelte components from PSF schema definitions.
5
- * Provides a complete UI generation pipeline from schema to components.
6
- */
7
- // Re-export existing component generator
8
- export { ComponentGenerator, createComponentGenerator, } from '../../src/core/component/generator.js';
9
- // Export PSF-aware generator
10
- export * from './psf-generator.js';
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ui/svelte-generator/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yCAAyC;AACzC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GAKzB,MAAM,uCAAuC,CAAC;AAE/C,6BAA6B;AAC7B,cAAc,oBAAoB,CAAC"}
@@ -1,128 +0,0 @@
1
- /**
2
- * PSF-Aware Svelte Generator
3
- *
4
- * Generates Svelte components directly from PSF schema.
5
- */
6
- import type { PSFSchema, PSFComponent, PSFModel } from '../../core/schema-engine/psf.js';
7
- /**
8
- * Generated Svelte component
9
- */
10
- export interface GeneratedSvelteComponent {
11
- /** Component name */
12
- name: string;
13
- /** Svelte file content */
14
- svelte: string;
15
- /** TypeScript types */
16
- types?: string;
17
- /** Test file */
18
- test?: string;
19
- /** Documentation */
20
- docs?: string;
21
- }
22
- /**
23
- * Svelte generator options
24
- */
25
- export interface SvelteGeneratorOptions {
26
- /** Include TypeScript types */
27
- typescript?: boolean;
28
- /** Include tests */
29
- includeTests?: boolean;
30
- /** Include documentation */
31
- includeDocs?: boolean;
32
- /** Component style (Svelte 4 runes, Svelte 5 runes) */
33
- svelteVersion?: 4 | 5;
34
- /** CSS framework */
35
- cssFramework?: 'none' | 'tailwind' | 'pico';
36
- }
37
- /**
38
- * PSF Svelte Generator
39
- */
40
- export declare class PSFSvelteGenerator {
41
- private options;
42
- constructor(options?: SvelteGeneratorOptions);
43
- /**
44
- * Generate all components from schema
45
- */
46
- generateFromSchema(schema: PSFSchema): GeneratedSvelteComponent[];
47
- /**
48
- * Generate a single component
49
- */
50
- generateComponent(comp: PSFComponent, model?: PSFModel): GeneratedSvelteComponent;
51
- /**
52
- * Generate Svelte file content
53
- */
54
- private generateSvelteFile;
55
- /**
56
- * Generate script section
57
- */
58
- private generateScript;
59
- /**
60
- * Generate template section
61
- */
62
- private generateTemplate;
63
- /**
64
- * Generate form template
65
- */
66
- private generateFormTemplate;
67
- /**
68
- * Generate display template
69
- */
70
- private generateDisplayTemplate;
71
- /**
72
- * Generate list template
73
- */
74
- private generateListTemplate;
75
- /**
76
- * Generate navigation template
77
- */
78
- private generateNavigationTemplate;
79
- /**
80
- * Generate styles
81
- */
82
- private generateStyles;
83
- /**
84
- * Generate model form component
85
- */
86
- private generateModelForm;
87
- /**
88
- * Generate model display component
89
- */
90
- private generateModelDisplay;
91
- /**
92
- * Generate types file
93
- */
94
- private generateTypesFile;
95
- /**
96
- * Generate test file
97
- */
98
- private generateTestFile;
99
- /**
100
- * Generate documentation file
101
- */
102
- private generateDocsFile;
103
- /**
104
- * Get input type for field type
105
- */
106
- private getInputType;
107
- /**
108
- * Get default value for field type
109
- */
110
- private getDefaultValue;
111
- /**
112
- * Convert field type to TypeScript type
113
- */
114
- private fieldTypeToTS;
115
- /**
116
- * Convert to kebab-case
117
- */
118
- private toKebabCase;
119
- /**
120
- * Convert to Title Case
121
- */
122
- private toTitleCase;
123
- }
124
- /**
125
- * Create a PSF Svelte generator
126
- */
127
- export declare function createPSFSvelteGenerator(options?: SvelteGeneratorOptions): PSFSvelteGenerator;
128
- //# sourceMappingURL=psf-generator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"psf-generator.d.ts","sourceRoot":"","sources":["../../../ui/svelte-generator/psf-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAgB,MAAM,iCAAiC,CAAC;AAEvG;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACtB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;CAC7C;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAmC;gBAEtC,OAAO,GAAE,sBAA2B;IAUhD;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,wBAAwB,EAAE;IAwBjE;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,wBAAwB;IAejF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,cAAc;IA8EtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA0B/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA8B5B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAclC;;OAEG;IACH,OAAO,CAAC,cAAc;IAuBtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAsBpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAuBrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,WAAW;CAMpB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,kBAAkB,CAE7F"}
@@ -1,506 +0,0 @@
1
- /**
2
- * PSF-Aware Svelte Generator
3
- *
4
- * Generates Svelte components directly from PSF schema.
5
- */
6
- /**
7
- * PSF Svelte Generator
8
- */
9
- export class PSFSvelteGenerator {
10
- options;
11
- constructor(options = {}) {
12
- this.options = {
13
- typescript: options.typescript ?? true,
14
- includeTests: options.includeTests ?? false,
15
- includeDocs: options.includeDocs ?? false,
16
- svelteVersion: options.svelteVersion ?? 5,
17
- cssFramework: options.cssFramework ?? 'none',
18
- };
19
- }
20
- /**
21
- * Generate all components from schema
22
- */
23
- generateFromSchema(schema) {
24
- const components = [];
25
- // Generate components defined in schema
26
- for (const comp of schema.components) {
27
- const model = comp.model
28
- ? schema.models.find((m) => m.name === comp.model)
29
- : undefined;
30
- components.push(this.generateComponent(comp, model));
31
- }
32
- // Generate model-based components for models without explicit components
33
- for (const model of schema.models) {
34
- const hasComponent = schema.components.some((c) => c.model === model.name);
35
- if (!hasComponent) {
36
- // Generate default form and display components
37
- components.push(this.generateModelForm(model));
38
- components.push(this.generateModelDisplay(model));
39
- }
40
- }
41
- return components;
42
- }
43
- /**
44
- * Generate a single component
45
- */
46
- generateComponent(comp, model) {
47
- const svelte = this.generateSvelteFile(comp, model);
48
- const types = this.options.typescript ? this.generateTypesFile(comp, model) : undefined;
49
- const test = this.options.includeTests ? this.generateTestFile(comp) : undefined;
50
- const docs = this.options.includeDocs ? this.generateDocsFile(comp, model) : undefined;
51
- return {
52
- name: comp.name,
53
- svelte,
54
- types,
55
- test,
56
- docs,
57
- };
58
- }
59
- /**
60
- * Generate Svelte file content
61
- */
62
- generateSvelteFile(comp, model) {
63
- const lines = [];
64
- // Script section
65
- lines.push(`<script${this.options.typescript ? ' lang="ts"' : ''}>`);
66
- lines.push(this.generateScript(comp, model));
67
- lines.push('</script>');
68
- lines.push('');
69
- // Template section
70
- lines.push(this.generateTemplate(comp, model));
71
- lines.push('');
72
- // Style section
73
- const styles = this.generateStyles(comp);
74
- if (styles) {
75
- lines.push('<style>');
76
- lines.push(styles);
77
- lines.push('</style>');
78
- }
79
- return lines.join('\n');
80
- }
81
- /**
82
- * Generate script section
83
- */
84
- generateScript(comp, model) {
85
- const lines = [];
86
- const useSvelte5 = this.options.svelteVersion === 5;
87
- // Imports
88
- lines.push(` import { createEventDispatcher } from 'svelte';`);
89
- if (model) {
90
- lines.push(` import type { ${model.name} } from './types.js';`);
91
- }
92
- lines.push('');
93
- // Props
94
- if (useSvelte5) {
95
- // Svelte 5 runes
96
- lines.push(' // Props');
97
- for (const prop of comp.props) {
98
- const typeAnnotation = this.options.typescript ? `: ${prop.type}` : '';
99
- const defaultValue = prop.default !== undefined ? ` = ${JSON.stringify(prop.default)}` : '';
100
- lines.push(` let { ${prop.name}${typeAnnotation}${defaultValue} } = $props();`);
101
- }
102
- }
103
- else {
104
- // Svelte 4
105
- for (const prop of comp.props) {
106
- const typeAnnotation = this.options.typescript ? `: ${prop.type}` : '';
107
- const defaultValue = prop.default !== undefined ? ` = ${JSON.stringify(prop.default)}` : '';
108
- lines.push(` export let ${prop.name}${typeAnnotation}${defaultValue};`);
109
- }
110
- }
111
- lines.push('');
112
- // Event dispatcher
113
- lines.push(' const dispatch = createEventDispatcher();');
114
- lines.push('');
115
- // Component-specific logic
116
- switch (comp.type) {
117
- case 'form':
118
- lines.push(' // Form state');
119
- if (model) {
120
- lines.push(` let formData = ${useSvelte5 ? '$state' : ''}({`);
121
- for (const field of model.fields) {
122
- const defaultVal = this.getDefaultValue(field.type);
123
- lines.push(` ${field.name}: ${defaultVal},`);
124
- }
125
- lines.push(' });');
126
- }
127
- else {
128
- lines.push(` let formData = ${useSvelte5 ? '$state({})' : '{}'};`);
129
- }
130
- lines.push('');
131
- lines.push(' function handleSubmit(event: SubmitEvent) {');
132
- lines.push(' event.preventDefault();');
133
- lines.push(" dispatch('submit', formData);");
134
- lines.push(' }');
135
- break;
136
- case 'list':
137
- lines.push(' // List handling');
138
- lines.push(` export let items${this.options.typescript ? `: ${model?.name || 'unknown'}[]` : ''} = [];`);
139
- lines.push('');
140
- lines.push(` function handleSelect(item${this.options.typescript ? `: ${model?.name || 'unknown'}` : ''}) {`);
141
- lines.push(" dispatch('select', item);");
142
- lines.push(' }');
143
- break;
144
- case 'display':
145
- lines.push(' // Display formatting');
146
- if (model) {
147
- lines.push(` export let data${this.options.typescript ? `: ${model.name}` : ''};`);
148
- }
149
- break;
150
- default:
151
- lines.push(' // Component logic');
152
- }
153
- return lines.join('\n');
154
- }
155
- /**
156
- * Generate template section
157
- */
158
- generateTemplate(comp, model) {
159
- switch (comp.type) {
160
- case 'form':
161
- return this.generateFormTemplate(comp, model);
162
- case 'display':
163
- return this.generateDisplayTemplate(comp, model);
164
- case 'list':
165
- return this.generateListTemplate(comp, model);
166
- case 'navigation':
167
- return this.generateNavigationTemplate(comp);
168
- default:
169
- return `<div class="${this.toKebabCase(comp.name)}">\n <!-- ${comp.name} -->\n</div>`;
170
- }
171
- }
172
- /**
173
- * Generate form template
174
- */
175
- generateFormTemplate(comp, model) {
176
- const lines = [];
177
- const className = this.toKebabCase(comp.name);
178
- lines.push(`<form class="${className}" on:submit={handleSubmit}>`);
179
- if (model) {
180
- for (const field of model.fields) {
181
- const inputType = this.getInputType(field.type);
182
- const label = field.description || this.toTitleCase(field.name);
183
- lines.push(` <div class="field">`);
184
- lines.push(` <label for="${field.name}">${label}</label>`);
185
- if (inputType === 'textarea') {
186
- lines.push(` <textarea id="${field.name}" bind:value={formData.${field.name}}></textarea>`);
187
- }
188
- else if (inputType === 'checkbox') {
189
- lines.push(` <input type="checkbox" id="${field.name}" bind:checked={formData.${field.name}} />`);
190
- }
191
- else {
192
- lines.push(` <input type="${inputType}" id="${field.name}" bind:value={formData.${field.name}} />`);
193
- }
194
- lines.push(` </div>`);
195
- }
196
- }
197
- lines.push(` <button type="submit">Submit</button>`);
198
- lines.push(`</form>`);
199
- return lines.join('\n');
200
- }
201
- /**
202
- * Generate display template
203
- */
204
- generateDisplayTemplate(comp, model) {
205
- const lines = [];
206
- const className = this.toKebabCase(comp.name);
207
- lines.push(`<div class="${className}">`);
208
- if (model) {
209
- lines.push(` {#if data}`);
210
- for (const field of model.fields) {
211
- const label = field.description || this.toTitleCase(field.name);
212
- lines.push(` <div class="field">`);
213
- lines.push(` <strong>${label}:</strong> {data.${field.name}}`);
214
- lines.push(` </div>`);
215
- }
216
- lines.push(` {:else}`);
217
- lines.push(` <p>No data</p>`);
218
- lines.push(` {/if}`);
219
- }
220
- else {
221
- lines.push(` <slot></slot>`);
222
- }
223
- lines.push(`</div>`);
224
- return lines.join('\n');
225
- }
226
- /**
227
- * Generate list template
228
- */
229
- generateListTemplate(comp, model) {
230
- const lines = [];
231
- const className = this.toKebabCase(comp.name);
232
- lines.push(`<div class="${className}">`);
233
- lines.push(` {#if items.length > 0}`);
234
- lines.push(` <ul>`);
235
- lines.push(` {#each items as item}`);
236
- lines.push(` <li>`);
237
- lines.push(` <button on:click={() => handleSelect(item)}>`);
238
- if (model && model.fields.length > 0) {
239
- const displayField = model.fields.find((f) => f.name === 'name' || f.name === 'title') || model.fields[0];
240
- lines.push(` {item.${displayField.name}}`);
241
- }
242
- else {
243
- lines.push(` {item}`);
244
- }
245
- lines.push(` </button>`);
246
- lines.push(` </li>`);
247
- lines.push(` {/each}`);
248
- lines.push(` </ul>`);
249
- lines.push(` {:else}`);
250
- lines.push(` <p>No items</p>`);
251
- lines.push(` {/if}`);
252
- lines.push(`</div>`);
253
- return lines.join('\n');
254
- }
255
- /**
256
- * Generate navigation template
257
- */
258
- generateNavigationTemplate(comp) {
259
- const lines = [];
260
- const className = this.toKebabCase(comp.name);
261
- lines.push(`<nav class="${className}">`);
262
- lines.push(` <ul>`);
263
- lines.push(` <li><a href="/">Home</a></li>`);
264
- lines.push(` <slot></slot>`);
265
- lines.push(` </ul>`);
266
- lines.push(`</nav>`);
267
- return lines.join('\n');
268
- }
269
- /**
270
- * Generate styles
271
- */
272
- generateStyles(comp) {
273
- const lines = [];
274
- const className = this.toKebabCase(comp.name);
275
- lines.push(` .${className} {`);
276
- lines.push(` /* Component styles */`);
277
- lines.push(` }`);
278
- if (comp.type === 'form') {
279
- lines.push('');
280
- lines.push(` .field {`);
281
- lines.push(` margin-bottom: 1rem;`);
282
- lines.push(` }`);
283
- lines.push('');
284
- lines.push(` label {`);
285
- lines.push(` display: block;`);
286
- lines.push(` margin-bottom: 0.25rem;`);
287
- lines.push(` }`);
288
- }
289
- return lines.join('\n');
290
- }
291
- /**
292
- * Generate model form component
293
- */
294
- generateModelForm(model) {
295
- const comp = {
296
- id: `form_${model.id}`,
297
- name: `${model.name}Form`,
298
- type: 'form',
299
- description: `Form for ${model.name}`,
300
- model: model.name,
301
- props: [],
302
- events: [{ name: 'submit', payload: model.name }],
303
- };
304
- return this.generateComponent(comp, model);
305
- }
306
- /**
307
- * Generate model display component
308
- */
309
- generateModelDisplay(model) {
310
- const comp = {
311
- id: `display_${model.id}`,
312
- name: `${model.name}Display`,
313
- type: 'display',
314
- description: `Display for ${model.name}`,
315
- model: model.name,
316
- props: [{ name: 'data', type: model.name, required: true }],
317
- events: [],
318
- };
319
- return this.generateComponent(comp, model);
320
- }
321
- /**
322
- * Generate types file
323
- */
324
- generateTypesFile(comp, model) {
325
- const lines = [];
326
- // Component props interface
327
- if (comp.props.length > 0) {
328
- lines.push(`export interface ${comp.name}Props {`);
329
- for (const prop of comp.props) {
330
- const optional = prop.required ? '' : '?';
331
- lines.push(` ${prop.name}${optional}: ${prop.type};`);
332
- }
333
- lines.push(`}`);
334
- lines.push('');
335
- }
336
- // Model interface
337
- if (model) {
338
- lines.push(`export interface ${model.name} {`);
339
- for (const field of model.fields) {
340
- const optional = field.optional ? '?' : '';
341
- const type = this.fieldTypeToTS(field.type);
342
- lines.push(` ${field.name}${optional}: ${type};`);
343
- }
344
- lines.push(`}`);
345
- }
346
- return lines.join('\n');
347
- }
348
- /**
349
- * Generate test file
350
- */
351
- generateTestFile(comp) {
352
- return `import { describe, it, expect } from 'vitest';
353
- import { render } from '@testing-library/svelte';
354
- import ${comp.name} from './${comp.name}.svelte';
355
-
356
- describe('${comp.name}', () => {
357
- it('renders correctly', () => {
358
- const { container } = render(${comp.name});
359
- expect(container).toBeTruthy();
360
- });
361
- });
362
- `;
363
- }
364
- /**
365
- * Generate documentation file
366
- */
367
- generateDocsFile(comp, _model) {
368
- const lines = [];
369
- lines.push(`# ${comp.name}`);
370
- lines.push('');
371
- if (comp.description) {
372
- lines.push(comp.description);
373
- lines.push('');
374
- }
375
- lines.push('## Props');
376
- lines.push('');
377
- if (comp.props.length > 0) {
378
- lines.push('| Name | Type | Required | Description |');
379
- lines.push('| ---- | ---- | -------- | ----------- |');
380
- for (const prop of comp.props) {
381
- lines.push(`| ${prop.name} | \`${prop.type}\` | ${prop.required ? 'Yes' : 'No'} | ${prop.description || '-'} |`);
382
- }
383
- }
384
- else {
385
- lines.push('No props defined.');
386
- }
387
- lines.push('');
388
- lines.push('## Events');
389
- lines.push('');
390
- if (comp.events.length > 0) {
391
- for (const event of comp.events) {
392
- lines.push(`- \`${event.name}\`${event.payload ? `: ${event.payload}` : ''}`);
393
- if (event.description) {
394
- lines.push(` - ${event.description}`);
395
- }
396
- }
397
- }
398
- else {
399
- lines.push('No events defined.');
400
- }
401
- return lines.join('\n');
402
- }
403
- /**
404
- * Get input type for field type
405
- */
406
- getInputType(type) {
407
- if (typeof type === 'string') {
408
- switch (type) {
409
- case 'string':
410
- return 'text';
411
- case 'number':
412
- return 'number';
413
- case 'boolean':
414
- return 'checkbox';
415
- case 'date':
416
- return 'date';
417
- case 'datetime':
418
- return 'datetime-local';
419
- case 'uuid':
420
- return 'text';
421
- default:
422
- return 'text';
423
- }
424
- }
425
- return 'text';
426
- }
427
- /**
428
- * Get default value for field type
429
- */
430
- getDefaultValue(type) {
431
- if (typeof type === 'string') {
432
- switch (type) {
433
- case 'string':
434
- case 'uuid':
435
- return "''";
436
- case 'number':
437
- return '0';
438
- case 'boolean':
439
- return 'false';
440
- case 'date':
441
- case 'datetime':
442
- return 'null';
443
- default:
444
- return 'null';
445
- }
446
- }
447
- if ('array' in type)
448
- return '[]';
449
- if ('object' in type)
450
- return '{}';
451
- return 'null';
452
- }
453
- /**
454
- * Convert field type to TypeScript type
455
- */
456
- fieldTypeToTS(type) {
457
- if (typeof type === 'string') {
458
- switch (type) {
459
- case 'string':
460
- case 'uuid':
461
- return 'string';
462
- case 'number':
463
- return 'number';
464
- case 'boolean':
465
- return 'boolean';
466
- case 'date':
467
- case 'datetime':
468
- return 'Date';
469
- default:
470
- return 'unknown';
471
- }
472
- }
473
- if ('array' in type)
474
- return `${this.fieldTypeToTS(type.array)}[]`;
475
- if ('reference' in type)
476
- return type.reference;
477
- if ('enum' in type)
478
- return type.enum.map((v) => `'${v}'`).join(' | ');
479
- return 'unknown';
480
- }
481
- /**
482
- * Convert to kebab-case
483
- */
484
- toKebabCase(str) {
485
- return str
486
- .replace(/([a-z])([A-Z])/g, '$1-$2')
487
- .replace(/[\s_]+/g, '-')
488
- .toLowerCase();
489
- }
490
- /**
491
- * Convert to Title Case
492
- */
493
- toTitleCase(str) {
494
- return str
495
- .replace(/([A-Z])/g, ' $1')
496
- .replace(/^./, (s) => s.toUpperCase())
497
- .trim();
498
- }
499
- }
500
- /**
501
- * Create a PSF Svelte generator
502
- */
503
- export function createPSFSvelteGenerator(options) {
504
- return new PSFSvelteGenerator(options);
505
- }
506
- //# sourceMappingURL=psf-generator.js.map