@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
@@ -2,14 +2,14 @@
2
2
  * Actor system tests
3
3
  */
4
4
 
5
- import { describe, it, expect, beforeEach, vi } from "vitest";
6
- import { ActorManager, createTimerActor, type Actor } from "../core/actors.js";
7
- import { createPraxisEngine } from "../core/engine.js";
8
- import { PraxisRegistry } from "../core/rules.js";
9
- import { defineEvent, defineRule, defineFact } from "../dsl/index.js";
10
-
11
- describe("Actor System", () => {
12
- describe("ActorManager", () => {
5
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
6
+ import { ActorManager, createTimerActor, type Actor } from '../core/actors.js';
7
+ import { createPraxisEngine } from '../core/engine.js';
8
+ import { PraxisRegistry } from '../core/rules.js';
9
+ import { defineEvent, defineRule, defineFact } from '../dsl/index.js';
10
+
11
+ describe('Actor System', () => {
12
+ describe('ActorManager', () => {
13
13
  let manager: ActorManager<{ count: number }>;
14
14
  let registry: PraxisRegistry<{ count: number }>;
15
15
  let engine: ReturnType<typeof createPraxisEngine<{ count: number }>>;
@@ -24,68 +24,68 @@ describe("Actor System", () => {
24
24
  manager.attachEngine(engine);
25
25
  });
26
26
 
27
- it("should register and start an actor", async () => {
27
+ it('should register and start an actor', async () => {
28
28
  const onStartSpy = vi.fn();
29
29
  const actor: Actor<{ count: number }> = {
30
- id: "test-actor",
31
- description: "Test actor",
30
+ id: 'test-actor',
31
+ description: 'Test actor',
32
32
  onStart: onStartSpy,
33
33
  };
34
34
 
35
35
  manager.register(actor);
36
- await manager.start("test-actor");
36
+ await manager.start('test-actor');
37
37
 
38
38
  expect(onStartSpy).toHaveBeenCalledWith(engine);
39
- expect(manager.isActive("test-actor")).toBe(true);
39
+ expect(manager.isActive('test-actor')).toBe(true);
40
40
  });
41
41
 
42
- it("should throw when registering duplicate actor IDs", () => {
42
+ it('should throw when registering duplicate actor IDs', () => {
43
43
  const actor: Actor<{ count: number }> = {
44
- id: "duplicate",
45
- description: "Test actor",
44
+ id: 'duplicate',
45
+ description: 'Test actor',
46
46
  };
47
47
 
48
48
  manager.register(actor);
49
49
  expect(() => manager.register(actor)).toThrow('Actor with id "duplicate" already registered');
50
50
  });
51
51
 
52
- it("should throw when starting already active actor", async () => {
52
+ it('should throw when starting already active actor', async () => {
53
53
  const actor: Actor<{ count: number }> = {
54
- id: "test",
55
- description: "Test",
54
+ id: 'test',
55
+ description: 'Test',
56
56
  };
57
57
 
58
58
  manager.register(actor);
59
- await manager.start("test");
60
- await expect(manager.start("test")).rejects.toThrow('Actor "test" is already started');
59
+ await manager.start('test');
60
+ await expect(manager.start('test')).rejects.toThrow('Actor "test" is already started');
61
61
  });
62
62
 
63
- it("should stop an actor", async () => {
63
+ it('should stop an actor', async () => {
64
64
  const onStopSpy = vi.fn();
65
65
  const actor: Actor<{ count: number }> = {
66
- id: "test-actor",
67
- description: "Test actor",
66
+ id: 'test-actor',
67
+ description: 'Test actor',
68
68
  onStop: onStopSpy,
69
69
  };
70
70
 
71
71
  manager.register(actor);
72
- await manager.start("test-actor");
73
- await manager.stop("test-actor");
72
+ await manager.start('test-actor');
73
+ await manager.stop('test-actor');
74
74
 
75
75
  expect(onStopSpy).toHaveBeenCalled();
76
- expect(manager.isActive("test-actor")).toBe(false);
76
+ expect(manager.isActive('test-actor')).toBe(false);
77
77
  });
78
78
 
79
- it("should notify actors of state changes", async () => {
79
+ it('should notify actors of state changes', async () => {
80
80
  const onStateChangeSpy = vi.fn();
81
81
  const actor: Actor<{ count: number }> = {
82
- id: "observer",
83
- description: "Observer actor",
82
+ id: 'observer',
83
+ description: 'Observer actor',
84
84
  onStateChange: onStateChangeSpy,
85
85
  };
86
86
 
87
87
  manager.register(actor);
88
- await manager.start("observer");
88
+ await manager.start('observer');
89
89
 
90
90
  const state = engine.getState();
91
91
  await manager.notifyStateChange(state);
@@ -93,12 +93,12 @@ describe("Actor System", () => {
93
93
  expect(onStateChangeSpy).toHaveBeenCalledWith(state, engine);
94
94
  });
95
95
 
96
- it("should start all registered actors", async () => {
96
+ it('should start all registered actors', async () => {
97
97
  const onStart1 = vi.fn();
98
98
  const onStart2 = vi.fn();
99
99
 
100
- manager.register({ id: "actor1", description: "Actor 1", onStart: onStart1 });
101
- manager.register({ id: "actor2", description: "Actor 2", onStart: onStart2 });
100
+ manager.register({ id: 'actor1', description: 'Actor 1', onStart: onStart1 });
101
+ manager.register({ id: 'actor2', description: 'Actor 2', onStart: onStart2 });
102
102
 
103
103
  await manager.startAll();
104
104
 
@@ -107,12 +107,12 @@ describe("Actor System", () => {
107
107
  expect(manager.getActiveActorIds()).toHaveLength(2);
108
108
  });
109
109
 
110
- it("should stop all active actors", async () => {
110
+ it('should stop all active actors', async () => {
111
111
  const onStop1 = vi.fn();
112
112
  const onStop2 = vi.fn();
113
113
 
114
- manager.register({ id: "actor1", description: "Actor 1", onStop: onStop1 });
115
- manager.register({ id: "actor2", description: "Actor 2", onStop: onStop2 });
114
+ manager.register({ id: 'actor1', description: 'Actor 1', onStop: onStop1 });
115
+ manager.register({ id: 'actor2', description: 'Actor 2', onStop: onStop2 });
116
116
 
117
117
  await manager.startAll();
118
118
  await manager.stopAll();
@@ -122,13 +122,13 @@ describe("Actor System", () => {
122
122
  expect(manager.getActiveActorIds()).toHaveLength(0);
123
123
  });
124
124
 
125
- it("should handle async actor methods", async () => {
125
+ it('should handle async actor methods', async () => {
126
126
  let startResolved = false;
127
127
  let stopResolved = false;
128
128
 
129
129
  const actor: Actor<{ count: number }> = {
130
- id: "async-actor",
131
- description: "Async actor",
130
+ id: 'async-actor',
131
+ description: 'Async actor',
132
132
  onStart: async () => {
133
133
  await new Promise((resolve) => setTimeout(resolve, 10));
134
134
  startResolved = true;
@@ -140,24 +140,24 @@ describe("Actor System", () => {
140
140
  };
141
141
 
142
142
  manager.register(actor);
143
- await manager.start("async-actor");
143
+ await manager.start('async-actor');
144
144
  expect(startResolved).toBe(true);
145
145
 
146
- await manager.stop("async-actor");
146
+ await manager.stop('async-actor');
147
147
  expect(stopResolved).toBe(true);
148
148
  });
149
149
 
150
- it("should not notify stopped actors of state changes", async () => {
150
+ it('should not notify stopped actors of state changes', async () => {
151
151
  const onStateChangeSpy = vi.fn();
152
152
  const actor: Actor<{ count: number }> = {
153
- id: "observer",
154
- description: "Observer",
153
+ id: 'observer',
154
+ description: 'Observer',
155
155
  onStateChange: onStateChangeSpy,
156
156
  };
157
157
 
158
158
  manager.register(actor);
159
- await manager.start("observer");
160
- await manager.stop("observer");
159
+ await manager.start('observer');
160
+ await manager.stop('observer');
161
161
 
162
162
  const state = engine.getState();
163
163
  await manager.notifyStateChange(state);
@@ -165,31 +165,31 @@ describe("Actor System", () => {
165
165
  expect(onStateChangeSpy).not.toHaveBeenCalled();
166
166
  });
167
167
 
168
- it("should throw when starting actor without attached engine", async () => {
168
+ it('should throw when starting actor without attached engine', async () => {
169
169
  const actor: Actor<{ count: number }> = {
170
- id: "test",
171
- description: "Test",
170
+ id: 'test',
171
+ description: 'Test',
172
172
  };
173
173
 
174
174
  const newManager = new ActorManager<{ count: number }>();
175
175
  newManager.register(actor);
176
176
 
177
- await expect(newManager.start("test")).rejects.toThrow(
178
- "Actor manager not attached to an engine"
177
+ await expect(newManager.start('test')).rejects.toThrow(
178
+ 'Actor manager not attached to an engine'
179
179
  );
180
180
  });
181
181
  });
182
182
 
183
- describe("createTimerActor", () => {
184
- it("should create a timer actor that dispatches events", async () => {
183
+ describe('createTimerActor', () => {
184
+ it('should create a timer actor that dispatches events', async () => {
185
185
  vi.useFakeTimers();
186
186
 
187
- const Tick = defineEvent<"TICK", {}>("TICK");
188
- const TickReceived = defineFact<"TickReceived", {}>("TickReceived");
187
+ const Tick = defineEvent<'TICK', {}>('TICK');
188
+ const TickReceived = defineFact<'TickReceived', {}>('TickReceived');
189
189
 
190
190
  const tickRule = defineRule<{ count: number }>({
191
- id: "tick.rule",
192
- description: "Count ticks",
191
+ id: 'tick.rule',
192
+ description: 'Count ticks',
193
193
  impl: (state, events) => {
194
194
  if (events.some(Tick.is)) {
195
195
  state.context.count += 1;
@@ -210,9 +210,9 @@ describe("Actor System", () => {
210
210
  const manager = new ActorManager<{ count: number }>();
211
211
  manager.attachEngine(engine);
212
212
 
213
- const timerActor = createTimerActor("timer", 100, () => Tick.create({}));
213
+ const timerActor = createTimerActor('timer', 100, () => Tick.create({}));
214
214
  manager.register(timerActor);
215
- await manager.start("timer");
215
+ await manager.start('timer');
216
216
 
217
217
  // Advance timers
218
218
  vi.advanceTimersByTime(250);
@@ -220,19 +220,19 @@ describe("Actor System", () => {
220
220
  // Should have ticked at least twice (at 100ms and 200ms)
221
221
  expect(engine.getContext().count).toBeGreaterThanOrEqual(2);
222
222
 
223
- await manager.stop("timer");
223
+ await manager.stop('timer');
224
224
  vi.useRealTimers();
225
225
  });
226
226
 
227
- it("should stop dispatching events after actor is stopped", async () => {
227
+ it('should stop dispatching events after actor is stopped', async () => {
228
228
  vi.useFakeTimers();
229
229
 
230
- const Tick = defineEvent<"TICK", {}>("TICK");
230
+ const Tick = defineEvent<'TICK', {}>('TICK');
231
231
  const registry = new PraxisRegistry<{ count: number }>();
232
232
 
233
233
  const tickRule = defineRule<{ count: number }>({
234
- id: "tick.rule",
235
- description: "Count ticks",
234
+ id: 'tick.rule',
235
+ description: 'Count ticks',
236
236
  impl: (state, events) => {
237
237
  if (events.some(Tick.is)) {
238
238
  state.context.count += 1;
@@ -250,14 +250,14 @@ describe("Actor System", () => {
250
250
  const manager = new ActorManager<{ count: number }>();
251
251
  manager.attachEngine(engine);
252
252
 
253
- const timerActor = createTimerActor("timer", 50, () => Tick.create({}));
253
+ const timerActor = createTimerActor('timer', 50, () => Tick.create({}));
254
254
  manager.register(timerActor);
255
- await manager.start("timer");
255
+ await manager.start('timer');
256
256
 
257
257
  vi.advanceTimersByTime(100);
258
258
  const countBeforeStop = engine.getContext().count;
259
259
 
260
- await manager.stop("timer");
260
+ await manager.stop('timer');
261
261
  vi.advanceTimersByTime(200);
262
262
  const countAfterStop = engine.getContext().count;
263
263
 
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Billing Tests
3
- *
3
+ *
4
4
  * Tests for billing types and utilities.
5
5
  */
6
6
 
7
- import { describe, it, expect } from "vitest";
7
+ import { describe, it, expect } from 'vitest';
8
8
  import {
9
9
  SubscriptionTier,
10
10
  SubscriptionStatus,
@@ -14,18 +14,18 @@ import {
14
14
  checkUsageLimits,
15
15
  createFreeSubscription,
16
16
  createSponsorSubscription,
17
- } from "../cloud/billing.js";
17
+ } from '../cloud/billing.js';
18
18
 
19
- describe("Billing", () => {
20
- describe("Tier Limits", () => {
21
- it("should have limits for all tiers", () => {
19
+ describe('Billing', () => {
20
+ describe('Tier Limits', () => {
21
+ it('should have limits for all tiers', () => {
22
22
  expect(TIER_LIMITS[SubscriptionTier.FREE]).toBeDefined();
23
23
  expect(TIER_LIMITS[SubscriptionTier.SOLO]).toBeDefined();
24
24
  expect(TIER_LIMITS[SubscriptionTier.TEAM]).toBeDefined();
25
25
  expect(TIER_LIMITS[SubscriptionTier.ENTERPRISE]).toBeDefined();
26
26
  });
27
27
 
28
- it("should have increasing limits for higher tiers", () => {
28
+ it('should have increasing limits for higher tiers', () => {
29
29
  expect(TIER_LIMITS[SubscriptionTier.SOLO].maxSyncsPerMonth).toBeGreaterThan(
30
30
  TIER_LIMITS[SubscriptionTier.FREE].maxSyncsPerMonth
31
31
  );
@@ -38,13 +38,13 @@ describe("Billing", () => {
38
38
  });
39
39
  });
40
40
 
41
- describe("hasAccessToTier", () => {
42
- it("should grant access to same tier", () => {
41
+ describe('hasAccessToTier', () => {
42
+ it('should grant access to same tier', () => {
43
43
  const subscription = createFreeSubscription();
44
44
  expect(hasAccessToTier(subscription, SubscriptionTier.FREE)).toBe(true);
45
45
  });
46
46
 
47
- it("should grant access to lower tiers", () => {
47
+ it('should grant access to lower tiers', () => {
48
48
  const subscription = {
49
49
  ...createFreeSubscription(),
50
50
  tier: SubscriptionTier.ENTERPRISE,
@@ -54,14 +54,14 @@ describe("Billing", () => {
54
54
  expect(hasAccessToTier(subscription, SubscriptionTier.TEAM)).toBe(true);
55
55
  });
56
56
 
57
- it("should deny access to higher tiers", () => {
57
+ it('should deny access to higher tiers', () => {
58
58
  const subscription = createFreeSubscription();
59
59
  expect(hasAccessToTier(subscription, SubscriptionTier.SOLO)).toBe(false);
60
60
  expect(hasAccessToTier(subscription, SubscriptionTier.TEAM)).toBe(false);
61
61
  expect(hasAccessToTier(subscription, SubscriptionTier.ENTERPRISE)).toBe(false);
62
62
  });
63
63
 
64
- it("should deny access if subscription is not active", () => {
64
+ it('should deny access if subscription is not active', () => {
65
65
  const subscription = {
66
66
  ...createFreeSubscription(),
67
67
  status: SubscriptionStatus.EXPIRED,
@@ -70,8 +70,8 @@ describe("Billing", () => {
70
70
  });
71
71
  });
72
72
 
73
- describe("checkUsageLimits", () => {
74
- it("should pass when usage is within limits", () => {
73
+ describe('checkUsageLimits', () => {
74
+ it('should pass when usage is within limits', () => {
75
75
  const subscription = createFreeSubscription();
76
76
  const result = checkUsageLimits(subscription, {
77
77
  syncCount: 500,
@@ -83,7 +83,7 @@ describe("Billing", () => {
83
83
  expect(result.violations).toHaveLength(0);
84
84
  });
85
85
 
86
- it("should fail when sync count exceeds limit", () => {
86
+ it('should fail when sync count exceeds limit', () => {
87
87
  const subscription = createFreeSubscription();
88
88
  const result = checkUsageLimits(subscription, {
89
89
  syncCount: 2000,
@@ -93,10 +93,10 @@ describe("Billing", () => {
93
93
  });
94
94
  expect(result.withinLimits).toBe(false);
95
95
  expect(result.violations.length).toBeGreaterThan(0);
96
- expect(result.violations[0]).toContain("Sync limit exceeded");
96
+ expect(result.violations[0]).toContain('Sync limit exceeded');
97
97
  });
98
98
 
99
- it("should fail when storage exceeds limit", () => {
99
+ it('should fail when storage exceeds limit', () => {
100
100
  const subscription = createFreeSubscription();
101
101
  const result = checkUsageLimits(subscription, {
102
102
  syncCount: 0,
@@ -106,10 +106,10 @@ describe("Billing", () => {
106
106
  });
107
107
  expect(result.withinLimits).toBe(false);
108
108
  expect(result.violations.length).toBeGreaterThan(0);
109
- expect(result.violations[0]).toContain("Storage limit exceeded");
109
+ expect(result.violations[0]).toContain('Storage limit exceeded');
110
110
  });
111
111
 
112
- it("should fail when team members exceed limit", () => {
112
+ it('should fail when team members exceed limit', () => {
113
113
  const subscription = createFreeSubscription();
114
114
  const result = checkUsageLimits(subscription, {
115
115
  syncCount: 0,
@@ -119,10 +119,10 @@ describe("Billing", () => {
119
119
  });
120
120
  expect(result.withinLimits).toBe(false);
121
121
  expect(result.violations.length).toBeGreaterThan(0);
122
- expect(result.violations[0]).toContain("Team member limit exceeded");
122
+ expect(result.violations[0]).toContain('Team member limit exceeded');
123
123
  });
124
124
 
125
- it("should allow unlimited team members for enterprise", () => {
125
+ it('should allow unlimited team members for enterprise', () => {
126
126
  const subscription = {
127
127
  ...createFreeSubscription(),
128
128
  tier: SubscriptionTier.ENTERPRISE,
@@ -138,8 +138,8 @@ describe("Billing", () => {
138
138
  });
139
139
  });
140
140
 
141
- describe("createFreeSubscription", () => {
142
- it("should create a free subscription", () => {
141
+ describe('createFreeSubscription', () => {
142
+ it('should create a free subscription', () => {
143
143
  const subscription = createFreeSubscription();
144
144
  expect(subscription.tier).toBe(SubscriptionTier.FREE);
145
145
  expect(subscription.status).toBe(SubscriptionStatus.ACTIVE);
@@ -148,27 +148,27 @@ describe("Billing", () => {
148
148
  });
149
149
  });
150
150
 
151
- describe("createSponsorSubscription", () => {
152
- it("should create solo tier for $5/month", () => {
153
- const subscription = createSponsorSubscription("Solo", 500);
151
+ describe('createSponsorSubscription', () => {
152
+ it('should create solo tier for $5/month', () => {
153
+ const subscription = createSponsorSubscription('Solo', 500);
154
154
  expect(subscription.tier).toBe(SubscriptionTier.SOLO);
155
155
  expect(subscription.provider).toBe(BillingProvider.SPONSORS);
156
156
  });
157
157
 
158
- it("should create team tier for $20/month", () => {
159
- const subscription = createSponsorSubscription("Team", 2000);
158
+ it('should create team tier for $20/month', () => {
159
+ const subscription = createSponsorSubscription('Team', 2000);
160
160
  expect(subscription.tier).toBe(SubscriptionTier.TEAM);
161
161
  expect(subscription.provider).toBe(BillingProvider.SPONSORS);
162
162
  });
163
163
 
164
- it("should create enterprise tier for $50/month", () => {
165
- const subscription = createSponsorSubscription("Enterprise", 5000);
164
+ it('should create enterprise tier for $50/month', () => {
165
+ const subscription = createSponsorSubscription('Enterprise', 5000);
166
166
  expect(subscription.tier).toBe(SubscriptionTier.ENTERPRISE);
167
167
  expect(subscription.provider).toBe(BillingProvider.SPONSORS);
168
168
  });
169
169
 
170
- it("should default to free tier for low amounts", () => {
171
- const subscription = createSponsorSubscription("Supporter", 100);
170
+ it('should default to free tier for low amounts', () => {
171
+ const subscription = createSponsorSubscription('Supporter', 100);
172
172
  expect(subscription.tier).toBe(SubscriptionTier.FREE);
173
173
  });
174
174
  });