@plures/praxis 1.0.3 → 1.1.0

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