@plures/praxis 1.0.3 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (530) hide show
  1. package/FRAMEWORK.md +55 -5
  2. package/README.md +162 -375
  3. package/core/codegen/docs-generator.ts +5 -2
  4. package/core/codegen/index.ts +1 -1
  5. package/core/db-adapter/index.ts +2 -2
  6. package/core/db-adapter/sync-engine.ts +17 -6
  7. package/core/logic-engine/engine.ts +1 -1
  8. package/core/logic-engine/index.ts +2 -2
  9. package/core/logic-engine/protocol.ts +1 -1
  10. package/core/logic-engine/psf-adapter.ts +8 -4
  11. package/core/logic-engine/rules.ts +1 -1
  12. package/core/schema-engine/compiler.ts +53 -11
  13. package/core/schema-engine/generator.ts +17 -7
  14. package/core/schema-engine/index.ts +2 -2
  15. package/core/schema-engine/psf.ts +12 -3
  16. package/core/schema-engine/types.ts +3 -11
  17. package/core/schema-engine/validator.ts +112 -22
  18. package/dist/browser/engine-BjdqxeXG.d.ts +333 -0
  19. package/dist/browser/index.d.ts +3004 -0
  20. package/dist/browser/index.js +2892 -0
  21. package/dist/{src → browser}/integrations/svelte.d.ts +19 -17
  22. package/dist/browser/integrations/svelte.js +298 -0
  23. package/dist/node/auth-STARLY7I.js +207 -0
  24. package/dist/node/build-Y7OT5VBF.js +144 -0
  25. package/dist/node/canvas-UERZHJYW.js +362 -0
  26. package/dist/node/chunk-DSDC2JWZ.js +256 -0
  27. package/dist/node/chunk-FXQZXAWF.js +175 -0
  28. package/dist/node/chunk-N5Y37EUV.js +202 -0
  29. package/dist/node/chunk-QGM4M3NI.js +37 -0
  30. package/dist/node/chunk-RJMWCNHR.js +175 -0
  31. package/dist/node/chunk-SRM3OPPM.js +404 -0
  32. package/dist/node/chunk-UATVJBNV.js +175 -0
  33. package/dist/node/chunk-UY7YEBE2.js +159 -0
  34. package/dist/node/chunk-XCY2VIFX.js +143 -0
  35. package/dist/node/chunk-YXH4Y7ZZ.js +349 -0
  36. package/dist/node/cli/index.cjs +215139 -0
  37. package/dist/node/cli/index.d.cts +1 -0
  38. package/dist/node/cli/index.d.ts +1 -0
  39. package/dist/node/cli/index.js +690 -0
  40. package/dist/node/cloud/index.cjs +1043 -0
  41. package/dist/node/cloud/index.d.cts +864 -0
  42. package/dist/node/cloud/index.d.ts +864 -0
  43. package/dist/node/cloud/index.js +456 -0
  44. package/dist/node/cloud-AXOK4PSN.js +212 -0
  45. package/dist/node/component.cjs +374 -0
  46. package/dist/node/component.d.cts +125 -0
  47. package/dist/{src/core/component/generator.d.ts → node/component.d.ts} +11 -8
  48. package/dist/node/component.js +9 -0
  49. package/dist/node/components/index.cjs +216 -0
  50. package/dist/node/components/index.d.cts +43 -0
  51. package/dist/{src → node}/components/index.d.ts +8 -8
  52. package/dist/node/components/index.js +7 -0
  53. package/dist/node/create-TRLSVCNQ.js +584 -0
  54. package/dist/node/dev-PMJZUYGE.js +65 -0
  55. package/dist/node/engine-1iqLe6_P.d.ts +214 -0
  56. package/dist/node/engine-CVJobhHm.d.cts +214 -0
  57. package/dist/node/index.cjs +3247 -0
  58. package/dist/node/index.d.cts +2579 -0
  59. package/dist/node/index.d.ts +2579 -0
  60. package/dist/node/index.js +2098 -0
  61. package/dist/node/integrations/svelte.cjs +330 -0
  62. package/dist/node/integrations/svelte.d.cts +309 -0
  63. package/dist/node/integrations/svelte.d.ts +309 -0
  64. package/dist/node/integrations/svelte.js +300 -0
  65. package/dist/node/orchestrate-737TCL5H.js +127 -0
  66. package/dist/{src/core/protocol.d.ts → node/protocol-Qek7ebBl.d.cts} +11 -10
  67. package/dist/node/protocol-Qek7ebBl.d.ts +122 -0
  68. package/dist/node/schema.cjs +200 -0
  69. package/dist/{src/core/schema/types.d.ts → node/schema.d.cts} +30 -29
  70. package/dist/node/schema.d.ts +371 -0
  71. package/dist/node/schema.js +9 -0
  72. package/dist/{src/runtime/terminal-adapter.d.ts → node/terminal-adapter-07HGftGQ.d.ts} +86 -11
  73. package/dist/node/terminal-adapter-XLtCjjb_.d.cts +231 -0
  74. package/dist/node/verify-QRYKRIDU.js +210960 -0
  75. package/docs/MONETIZATION.md +21 -16
  76. package/docs/REACTIVE_REDESIGN.md +132 -0
  77. package/docs/README.md +47 -36
  78. package/docs/SVELTE_INTEGRATION_STRATEGY.md +68 -0
  79. package/docs/TERMINAL_NODE.md +27 -24
  80. package/docs/core/building-extensions.md +58 -61
  81. package/docs/core/cli-usage.md +59 -59
  82. package/docs/core/code-canvas-sync.md +28 -16
  83. package/docs/core/logic-engine.md +77 -82
  84. package/docs/core/pluresdb-integration.md +29 -39
  85. package/docs/core/schema-model.md +66 -52
  86. package/docs/core/ui-generation.md +57 -49
  87. package/docs/core/what-is-praxis.md +32 -15
  88. package/docs/guides/canvas.md +21 -5
  89. package/docs/guides/getting-started.md +13 -7
  90. package/docs/guides/history-state-pattern.md +65 -51
  91. package/docs/guides/orchestration.md +46 -32
  92. package/docs/guides/parallel-state-pattern.md +56 -72
  93. package/docs/guides/svelte-integration.md +45 -53
  94. package/docs/tutorials/README.md +16 -0
  95. package/docs/tutorials/ecommerce-cart.md +177 -95
  96. package/docs/tutorials/first-app.md +26 -41
  97. package/docs/tutorials/form-builder.md +191 -138
  98. package/docs/tutorials/todo-pluresdb.md +71 -69
  99. package/package.json +58 -23
  100. package/src/__tests__/actors.test.ts +68 -68
  101. package/src/__tests__/billing.test.ts +32 -32
  102. package/src/__tests__/canvas-components.test.ts +94 -73
  103. package/src/__tests__/cli-create.test.ts +28 -28
  104. package/src/__tests__/cloud.test.ts +36 -36
  105. package/src/__tests__/code-canvas-integration.test.ts +132 -141
  106. package/src/__tests__/docs-generator.test.ts +3 -9
  107. package/src/__tests__/dsl.test.ts +58 -64
  108. package/src/__tests__/edge-cases.test.ts +106 -108
  109. package/src/__tests__/engine.test.ts +51 -25
  110. package/src/__tests__/generators.test.ts +42 -44
  111. package/src/__tests__/introspection.test.ts +104 -114
  112. package/src/__tests__/pluresdb.test.ts +189 -187
  113. package/src/__tests__/protocol.test.ts +15 -15
  114. package/src/__tests__/provisioning.test.ts +61 -61
  115. package/src/__tests__/schema.test.ts +7 -11
  116. package/src/__tests__/state-docs-integration.test.ts +162 -145
  117. package/src/__tests__/svelte-integration.test.ts +16 -19
  118. package/src/__tests__/tauri-integration.test.ts +149 -147
  119. package/src/__tests__/terminal-node.test.ts +12 -7
  120. package/src/__tests__/unum-integration.test.ts +68 -68
  121. package/src/adapters/cli.ts +21 -15
  122. package/src/cli/commands/auth.ts +82 -78
  123. package/src/cli/commands/build.ts +29 -27
  124. package/src/cli/commands/canvas.ts +338 -127
  125. package/src/cli/commands/cloud.ts +47 -47
  126. package/src/cli/commands/create.ts +59 -47
  127. package/src/cli/commands/dev.ts +12 -12
  128. package/src/cli/commands/generate.ts +29 -40
  129. package/src/cli/commands/orchestrate.ts +24 -24
  130. package/src/cli/commands/verify.ts +7 -8
  131. package/src/cli/index.ts +14 -10
  132. package/src/cloud/README.md +28 -15
  133. package/src/cloud/auth.ts +55 -70
  134. package/src/cloud/billing.ts +59 -58
  135. package/src/cloud/client.ts +29 -35
  136. package/src/cloud/index.ts +19 -40
  137. package/src/cloud/marketplace.ts +69 -78
  138. package/src/cloud/provisioning.ts +42 -51
  139. package/src/cloud/relay/endpoints.ts +30 -34
  140. package/src/cloud/relay/health/index.ts +1 -1
  141. package/src/cloud/relay/stats/index.ts +1 -1
  142. package/src/cloud/relay/sync/index.ts +1 -1
  143. package/src/cloud/relay/usage/index.ts +1 -1
  144. package/src/cloud/sponsors.ts +31 -34
  145. package/src/cloud/types.ts +4 -4
  146. package/src/components/README.md +1 -0
  147. package/src/components/index.ts +3 -4
  148. package/src/core/actors.ts +7 -7
  149. package/src/core/component/generator.ts +10 -28
  150. package/src/core/engine.ts +51 -24
  151. package/src/core/introspection.ts +37 -35
  152. package/src/core/logic/generator.ts +62 -62
  153. package/src/core/pluresdb/adapter.ts +8 -8
  154. package/src/core/pluresdb/generator.ts +39 -35
  155. package/src/core/pluresdb/index.ts +9 -12
  156. package/src/core/pluresdb/schema-registry.ts +22 -25
  157. package/src/core/pluresdb/store.ts +57 -57
  158. package/src/core/protocol.ts +14 -14
  159. package/src/core/reactive-engine.svelte.ts +65 -0
  160. package/src/core/reactive-engine.ts +67 -0
  161. package/src/core/rules.ts +4 -4
  162. package/src/core/schema/loader.common.ts +150 -0
  163. package/src/core/schema/loader.ts +19 -149
  164. package/src/core/schema/normalize.ts +34 -51
  165. package/src/core/schema/types.ts +47 -11
  166. package/src/dsl/index.ts +8 -8
  167. package/src/dsl.ts +11 -17
  168. package/src/examples/advanced-todo/README.md +58 -40
  169. package/src/examples/advanced-todo/index.ts +3 -3
  170. package/src/examples/auth-basic/index.ts +30 -30
  171. package/src/examples/cart/index.ts +50 -50
  172. package/src/examples/hero-ecommerce/index.ts +130 -157
  173. package/src/examples/svelte-counter/index.ts +22 -26
  174. package/src/flows.ts +6 -17
  175. package/src/index.browser.ts +204 -0
  176. package/src/index.ts +37 -42
  177. package/src/integrations/code-canvas.ts +237 -193
  178. package/src/integrations/pluresdb.ts +55 -35
  179. package/src/integrations/state-docs.ts +104 -104
  180. package/src/integrations/svelte.ts +35 -35
  181. package/src/integrations/tauri.ts +75 -73
  182. package/src/integrations/unum.ts +68 -61
  183. package/src/registry.ts +7 -14
  184. package/src/runtime/terminal-adapter.ts +31 -26
  185. package/src/step.ts +10 -16
  186. package/src/types.ts +1 -1
  187. package/templates/basic-app/README.md +6 -9
  188. package/templates/fullstack-app/README.md +10 -0
  189. package/dist/core/codegen/docs-generator.d.ts +0 -123
  190. package/dist/core/codegen/docs-generator.d.ts.map +0 -1
  191. package/dist/core/codegen/docs-generator.js +0 -674
  192. package/dist/core/codegen/docs-generator.js.map +0 -1
  193. package/dist/core/codegen/index.d.ts +0 -11
  194. package/dist/core/codegen/index.d.ts.map +0 -1
  195. package/dist/core/codegen/index.js +0 -13
  196. package/dist/core/codegen/index.js.map +0 -1
  197. package/dist/core/codegen/ts-generator.d.ts +0 -8
  198. package/dist/core/codegen/ts-generator.d.ts.map +0 -1
  199. package/dist/core/codegen/ts-generator.js +0 -8
  200. package/dist/core/codegen/ts-generator.js.map +0 -1
  201. package/dist/core/db-adapter/index.d.ts +0 -18
  202. package/dist/core/db-adapter/index.d.ts.map +0 -1
  203. package/dist/core/db-adapter/index.js +0 -23
  204. package/dist/core/db-adapter/index.js.map +0 -1
  205. package/dist/core/db-adapter/sync-engine.d.ts +0 -180
  206. package/dist/core/db-adapter/sync-engine.d.ts.map +0 -1
  207. package/dist/core/db-adapter/sync-engine.js +0 -342
  208. package/dist/core/db-adapter/sync-engine.js.map +0 -1
  209. package/dist/core/logic-engine/engine.d.ts +0 -8
  210. package/dist/core/logic-engine/engine.d.ts.map +0 -1
  211. package/dist/core/logic-engine/engine.js +0 -8
  212. package/dist/core/logic-engine/engine.js.map +0 -1
  213. package/dist/core/logic-engine/index.d.ts +0 -16
  214. package/dist/core/logic-engine/index.d.ts.map +0 -1
  215. package/dist/core/logic-engine/index.js +0 -16
  216. package/dist/core/logic-engine/index.js.map +0 -1
  217. package/dist/core/logic-engine/protocol.d.ts +0 -7
  218. package/dist/core/logic-engine/protocol.d.ts.map +0 -1
  219. package/dist/core/logic-engine/protocol.js +0 -7
  220. package/dist/core/logic-engine/protocol.js.map +0 -1
  221. package/dist/core/logic-engine/psf-adapter.d.ts +0 -88
  222. package/dist/core/logic-engine/psf-adapter.d.ts.map +0 -1
  223. package/dist/core/logic-engine/psf-adapter.js +0 -207
  224. package/dist/core/logic-engine/psf-adapter.js.map +0 -1
  225. package/dist/core/logic-engine/rules.d.ts +0 -7
  226. package/dist/core/logic-engine/rules.d.ts.map +0 -1
  227. package/dist/core/logic-engine/rules.js +0 -7
  228. package/dist/core/logic-engine/rules.js.map +0 -1
  229. package/dist/core/schema-engine/compiler.d.ts +0 -198
  230. package/dist/core/schema-engine/compiler.d.ts.map +0 -1
  231. package/dist/core/schema-engine/compiler.js +0 -262
  232. package/dist/core/schema-engine/compiler.js.map +0 -1
  233. package/dist/core/schema-engine/generator.d.ts +0 -115
  234. package/dist/core/schema-engine/generator.d.ts.map +0 -1
  235. package/dist/core/schema-engine/generator.js +0 -506
  236. package/dist/core/schema-engine/generator.js.map +0 -1
  237. package/dist/core/schema-engine/index.d.ts +0 -18
  238. package/dist/core/schema-engine/index.d.ts.map +0 -1
  239. package/dist/core/schema-engine/index.js +0 -18
  240. package/dist/core/schema-engine/index.js.map +0 -1
  241. package/dist/core/schema-engine/psf.d.ts +0 -612
  242. package/dist/core/schema-engine/psf.d.ts.map +0 -1
  243. package/dist/core/schema-engine/psf.js +0 -45
  244. package/dist/core/schema-engine/psf.js.map +0 -1
  245. package/dist/core/schema-engine/types.d.ts +0 -10
  246. package/dist/core/schema-engine/types.d.ts.map +0 -1
  247. package/dist/core/schema-engine/types.js +0 -7
  248. package/dist/core/schema-engine/types.js.map +0 -1
  249. package/dist/core/schema-engine/validator.d.ts +0 -140
  250. package/dist/core/schema-engine/validator.d.ts.map +0 -1
  251. package/dist/core/schema-engine/validator.js +0 -407
  252. package/dist/core/schema-engine/validator.js.map +0 -1
  253. package/dist/src/adapters/cli.d.ts +0 -43
  254. package/dist/src/adapters/cli.d.ts.map +0 -1
  255. package/dist/src/adapters/cli.js +0 -126
  256. package/dist/src/adapters/cli.js.map +0 -1
  257. package/dist/src/cli/commands/auth.d.ts +0 -26
  258. package/dist/src/cli/commands/auth.d.ts.map +0 -1
  259. package/dist/src/cli/commands/auth.js +0 -233
  260. package/dist/src/cli/commands/auth.js.map +0 -1
  261. package/dist/src/cli/commands/build.d.ts +0 -23
  262. package/dist/src/cli/commands/build.d.ts.map +0 -1
  263. package/dist/src/cli/commands/build.js +0 -162
  264. package/dist/src/cli/commands/build.js.map +0 -1
  265. package/dist/src/cli/commands/canvas.d.ts +0 -23
  266. package/dist/src/cli/commands/canvas.d.ts.map +0 -1
  267. package/dist/src/cli/commands/canvas.js +0 -215
  268. package/dist/src/cli/commands/canvas.js.map +0 -1
  269. package/dist/src/cli/commands/cloud.d.ts +0 -27
  270. package/dist/src/cli/commands/cloud.d.ts.map +0 -1
  271. package/dist/src/cli/commands/cloud.js +0 -232
  272. package/dist/src/cli/commands/cloud.js.map +0 -1
  273. package/dist/src/cli/commands/create.d.ts +0 -21
  274. package/dist/src/cli/commands/create.d.ts.map +0 -1
  275. package/dist/src/cli/commands/create.js +0 -621
  276. package/dist/src/cli/commands/create.js.map +0 -1
  277. package/dist/src/cli/commands/dev.d.ts +0 -21
  278. package/dist/src/cli/commands/dev.d.ts.map +0 -1
  279. package/dist/src/cli/commands/dev.js +0 -71
  280. package/dist/src/cli/commands/dev.js.map +0 -1
  281. package/dist/src/cli/commands/generate.d.ts +0 -25
  282. package/dist/src/cli/commands/generate.d.ts.map +0 -1
  283. package/dist/src/cli/commands/generate.js +0 -168
  284. package/dist/src/cli/commands/generate.js.map +0 -1
  285. package/dist/src/cli/commands/orchestrate.d.ts +0 -44
  286. package/dist/src/cli/commands/orchestrate.d.ts.map +0 -1
  287. package/dist/src/cli/commands/orchestrate.js +0 -150
  288. package/dist/src/cli/commands/orchestrate.js.map +0 -1
  289. package/dist/src/cli/commands/verify.d.ts +0 -10
  290. package/dist/src/cli/commands/verify.d.ts.map +0 -1
  291. package/dist/src/cli/commands/verify.js +0 -39
  292. package/dist/src/cli/commands/verify.js.map +0 -1
  293. package/dist/src/cli/index.d.ts +0 -8
  294. package/dist/src/cli/index.d.ts.map +0 -1
  295. package/dist/src/cli/index.js +0 -226
  296. package/dist/src/cli/index.js.map +0 -1
  297. package/dist/src/cloud/auth.d.ts +0 -51
  298. package/dist/src/cloud/auth.d.ts.map +0 -1
  299. package/dist/src/cloud/auth.js +0 -194
  300. package/dist/src/cloud/auth.js.map +0 -1
  301. package/dist/src/cloud/billing.d.ts +0 -184
  302. package/dist/src/cloud/billing.d.ts.map +0 -1
  303. package/dist/src/cloud/billing.js +0 -179
  304. package/dist/src/cloud/billing.js.map +0 -1
  305. package/dist/src/cloud/client.d.ts +0 -39
  306. package/dist/src/cloud/client.d.ts.map +0 -1
  307. package/dist/src/cloud/client.js +0 -176
  308. package/dist/src/cloud/client.js.map +0 -1
  309. package/dist/src/cloud/index.d.ts +0 -44
  310. package/dist/src/cloud/index.d.ts.map +0 -1
  311. package/dist/src/cloud/index.js +0 -44
  312. package/dist/src/cloud/index.js.map +0 -1
  313. package/dist/src/cloud/marketplace.d.ts +0 -166
  314. package/dist/src/cloud/marketplace.d.ts.map +0 -1
  315. package/dist/src/cloud/marketplace.js +0 -159
  316. package/dist/src/cloud/marketplace.js.map +0 -1
  317. package/dist/src/cloud/provisioning.d.ts +0 -110
  318. package/dist/src/cloud/provisioning.d.ts.map +0 -1
  319. package/dist/src/cloud/provisioning.js +0 -148
  320. package/dist/src/cloud/provisioning.js.map +0 -1
  321. package/dist/src/cloud/relay/endpoints.d.ts +0 -62
  322. package/dist/src/cloud/relay/endpoints.d.ts.map +0 -1
  323. package/dist/src/cloud/relay/endpoints.js +0 -217
  324. package/dist/src/cloud/relay/endpoints.js.map +0 -1
  325. package/dist/src/cloud/relay/health/index.d.ts +0 -5
  326. package/dist/src/cloud/relay/health/index.d.ts.map +0 -1
  327. package/dist/src/cloud/relay/health/index.js +0 -9
  328. package/dist/src/cloud/relay/health/index.js.map +0 -1
  329. package/dist/src/cloud/relay/stats/index.d.ts +0 -5
  330. package/dist/src/cloud/relay/stats/index.d.ts.map +0 -1
  331. package/dist/src/cloud/relay/stats/index.js +0 -9
  332. package/dist/src/cloud/relay/stats/index.js.map +0 -1
  333. package/dist/src/cloud/relay/sync/index.d.ts +0 -5
  334. package/dist/src/cloud/relay/sync/index.d.ts.map +0 -1
  335. package/dist/src/cloud/relay/sync/index.js +0 -9
  336. package/dist/src/cloud/relay/sync/index.js.map +0 -1
  337. package/dist/src/cloud/relay/usage/index.d.ts +0 -5
  338. package/dist/src/cloud/relay/usage/index.d.ts.map +0 -1
  339. package/dist/src/cloud/relay/usage/index.js +0 -9
  340. package/dist/src/cloud/relay/usage/index.js.map +0 -1
  341. package/dist/src/cloud/sponsors.d.ts +0 -81
  342. package/dist/src/cloud/sponsors.d.ts.map +0 -1
  343. package/dist/src/cloud/sponsors.js +0 -130
  344. package/dist/src/cloud/sponsors.js.map +0 -1
  345. package/dist/src/cloud/types.d.ts +0 -169
  346. package/dist/src/cloud/types.d.ts.map +0 -1
  347. package/dist/src/cloud/types.js +0 -7
  348. package/dist/src/cloud/types.js.map +0 -1
  349. package/dist/src/components/index.d.ts.map +0 -1
  350. package/dist/src/components/index.js +0 -17
  351. package/dist/src/components/index.js.map +0 -1
  352. package/dist/src/core/actors.d.ts +0 -95
  353. package/dist/src/core/actors.d.ts.map +0 -1
  354. package/dist/src/core/actors.js +0 -158
  355. package/dist/src/core/actors.js.map +0 -1
  356. package/dist/src/core/component/generator.d.ts.map +0 -1
  357. package/dist/src/core/component/generator.js +0 -349
  358. package/dist/src/core/component/generator.js.map +0 -1
  359. package/dist/src/core/engine.d.ts +0 -92
  360. package/dist/src/core/engine.d.ts.map +0 -1
  361. package/dist/src/core/engine.js +0 -199
  362. package/dist/src/core/engine.js.map +0 -1
  363. package/dist/src/core/introspection.d.ts +0 -141
  364. package/dist/src/core/introspection.d.ts.map +0 -1
  365. package/dist/src/core/introspection.js +0 -208
  366. package/dist/src/core/introspection.js.map +0 -1
  367. package/dist/src/core/logic/generator.d.ts +0 -76
  368. package/dist/src/core/logic/generator.d.ts.map +0 -1
  369. package/dist/src/core/logic/generator.js +0 -370
  370. package/dist/src/core/logic/generator.js.map +0 -1
  371. package/dist/src/core/pluresdb/adapter.d.ts +0 -72
  372. package/dist/src/core/pluresdb/adapter.d.ts.map +0 -1
  373. package/dist/src/core/pluresdb/adapter.js +0 -73
  374. package/dist/src/core/pluresdb/adapter.js.map +0 -1
  375. package/dist/src/core/pluresdb/generator.d.ts +0 -58
  376. package/dist/src/core/pluresdb/generator.d.ts.map +0 -1
  377. package/dist/src/core/pluresdb/generator.js +0 -191
  378. package/dist/src/core/pluresdb/generator.js.map +0 -1
  379. package/dist/src/core/pluresdb/index.d.ts +0 -15
  380. package/dist/src/core/pluresdb/index.d.ts.map +0 -1
  381. package/dist/src/core/pluresdb/index.js +0 -11
  382. package/dist/src/core/pluresdb/index.js.map +0 -1
  383. package/dist/src/core/pluresdb/schema-registry.d.ts +0 -104
  384. package/dist/src/core/pluresdb/schema-registry.d.ts.map +0 -1
  385. package/dist/src/core/pluresdb/schema-registry.js +0 -130
  386. package/dist/src/core/pluresdb/schema-registry.js.map +0 -1
  387. package/dist/src/core/pluresdb/store.d.ts +0 -199
  388. package/dist/src/core/pluresdb/store.d.ts.map +0 -1
  389. package/dist/src/core/pluresdb/store.js +0 -344
  390. package/dist/src/core/pluresdb/store.js.map +0 -1
  391. package/dist/src/core/protocol.d.ts.map +0 -1
  392. package/dist/src/core/protocol.js +0 -46
  393. package/dist/src/core/protocol.js.map +0 -1
  394. package/dist/src/core/rules.d.ts +0 -120
  395. package/dist/src/core/rules.d.ts.map +0 -1
  396. package/dist/src/core/rules.js +0 -81
  397. package/dist/src/core/rules.js.map +0 -1
  398. package/dist/src/core/schema/loader.d.ts +0 -47
  399. package/dist/src/core/schema/loader.d.ts.map +0 -1
  400. package/dist/src/core/schema/loader.js +0 -189
  401. package/dist/src/core/schema/loader.js.map +0 -1
  402. package/dist/src/core/schema/normalize.d.ts +0 -72
  403. package/dist/src/core/schema/normalize.d.ts.map +0 -1
  404. package/dist/src/core/schema/normalize.js +0 -190
  405. package/dist/src/core/schema/normalize.js.map +0 -1
  406. package/dist/src/core/schema/types.d.ts.map +0 -1
  407. package/dist/src/core/schema/types.js +0 -161
  408. package/dist/src/core/schema/types.js.map +0 -1
  409. package/dist/src/dsl/index.d.ts +0 -152
  410. package/dist/src/dsl/index.d.ts.map +0 -1
  411. package/dist/src/dsl/index.js +0 -132
  412. package/dist/src/dsl/index.js.map +0 -1
  413. package/dist/src/dsl.d.ts +0 -124
  414. package/dist/src/dsl.d.ts.map +0 -1
  415. package/dist/src/dsl.js +0 -130
  416. package/dist/src/dsl.js.map +0 -1
  417. package/dist/src/examples/advanced-todo/index.d.ts +0 -55
  418. package/dist/src/examples/advanced-todo/index.d.ts.map +0 -1
  419. package/dist/src/examples/advanced-todo/index.js +0 -222
  420. package/dist/src/examples/advanced-todo/index.js.map +0 -1
  421. package/dist/src/examples/auth-basic/index.d.ts +0 -17
  422. package/dist/src/examples/auth-basic/index.d.ts.map +0 -1
  423. package/dist/src/examples/auth-basic/index.js +0 -122
  424. package/dist/src/examples/auth-basic/index.js.map +0 -1
  425. package/dist/src/examples/cart/index.d.ts +0 -19
  426. package/dist/src/examples/cart/index.d.ts.map +0 -1
  427. package/dist/src/examples/cart/index.js +0 -202
  428. package/dist/src/examples/cart/index.js.map +0 -1
  429. package/dist/src/examples/hero-ecommerce/index.d.ts +0 -39
  430. package/dist/src/examples/hero-ecommerce/index.d.ts.map +0 -1
  431. package/dist/src/examples/hero-ecommerce/index.js +0 -506
  432. package/dist/src/examples/hero-ecommerce/index.js.map +0 -1
  433. package/dist/src/examples/svelte-counter/index.d.ts +0 -31
  434. package/dist/src/examples/svelte-counter/index.d.ts.map +0 -1
  435. package/dist/src/examples/svelte-counter/index.js +0 -123
  436. package/dist/src/examples/svelte-counter/index.js.map +0 -1
  437. package/dist/src/flows.d.ts +0 -125
  438. package/dist/src/flows.d.ts.map +0 -1
  439. package/dist/src/flows.js +0 -160
  440. package/dist/src/flows.js.map +0 -1
  441. package/dist/src/index.d.ts +0 -77
  442. package/dist/src/index.d.ts.map +0 -1
  443. package/dist/src/index.js +0 -64
  444. package/dist/src/index.js.map +0 -1
  445. package/dist/src/integrations/code-canvas.d.ts +0 -265
  446. package/dist/src/integrations/code-canvas.d.ts.map +0 -1
  447. package/dist/src/integrations/code-canvas.js +0 -451
  448. package/dist/src/integrations/code-canvas.js.map +0 -1
  449. package/dist/src/integrations/pluresdb.d.ts +0 -117
  450. package/dist/src/integrations/pluresdb.d.ts.map +0 -1
  451. package/dist/src/integrations/pluresdb.js +0 -117
  452. package/dist/src/integrations/pluresdb.js.map +0 -1
  453. package/dist/src/integrations/state-docs.d.ts +0 -191
  454. package/dist/src/integrations/state-docs.d.ts.map +0 -1
  455. package/dist/src/integrations/state-docs.js +0 -515
  456. package/dist/src/integrations/state-docs.js.map +0 -1
  457. package/dist/src/integrations/svelte.d.ts.map +0 -1
  458. package/dist/src/integrations/svelte.js +0 -447
  459. package/dist/src/integrations/svelte.js.map +0 -1
  460. package/dist/src/integrations/tauri.d.ts +0 -360
  461. package/dist/src/integrations/tauri.d.ts.map +0 -1
  462. package/dist/src/integrations/tauri.js +0 -278
  463. package/dist/src/integrations/tauri.js.map +0 -1
  464. package/dist/src/integrations/unum.d.ts +0 -159
  465. package/dist/src/integrations/unum.d.ts.map +0 -1
  466. package/dist/src/integrations/unum.js +0 -240
  467. package/dist/src/integrations/unum.js.map +0 -1
  468. package/dist/src/registry.d.ts +0 -94
  469. package/dist/src/registry.d.ts.map +0 -1
  470. package/dist/src/registry.js +0 -181
  471. package/dist/src/registry.js.map +0 -1
  472. package/dist/src/runtime/terminal-adapter.d.ts.map +0 -1
  473. package/dist/src/runtime/terminal-adapter.js +0 -239
  474. package/dist/src/runtime/terminal-adapter.js.map +0 -1
  475. package/dist/src/step.d.ts +0 -34
  476. package/dist/src/step.d.ts.map +0 -1
  477. package/dist/src/step.js +0 -111
  478. package/dist/src/step.js.map +0 -1
  479. package/dist/src/types.d.ts +0 -63
  480. package/dist/src/types.d.ts.map +0 -1
  481. package/dist/src/types.js +0 -6
  482. package/dist/src/types.js.map +0 -1
  483. package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts +0 -8
  484. package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts.map +0 -1
  485. package/dist/tools/ast-analyzer/src/ast-analyzer.js +0 -119
  486. package/dist/tools/ast-analyzer/src/ast-analyzer.js.map +0 -1
  487. package/dist/tools/cli/commands/index.d.ts +0 -7
  488. package/dist/tools/cli/commands/index.d.ts.map +0 -1
  489. package/dist/tools/cli/commands/index.js +0 -7
  490. package/dist/tools/cli/commands/index.js.map +0 -1
  491. package/dist/tools/cli/index.d.ts +0 -8
  492. package/dist/tools/cli/index.d.ts.map +0 -1
  493. package/dist/tools/cli/index.js +0 -9
  494. package/dist/tools/cli/index.js.map +0 -1
  495. package/dist/tools/watcher/index.d.ts +0 -105
  496. package/dist/tools/watcher/index.d.ts.map +0 -1
  497. package/dist/tools/watcher/index.js +0 -213
  498. package/dist/tools/watcher/index.js.map +0 -1
  499. package/dist/ui/canvas/canvas-projection.d.ts +0 -78
  500. package/dist/ui/canvas/canvas-projection.d.ts.map +0 -1
  501. package/dist/ui/canvas/canvas-projection.js +0 -416
  502. package/dist/ui/canvas/canvas-projection.js.map +0 -1
  503. package/dist/ui/canvas/canvas-state.d.ts +0 -200
  504. package/dist/ui/canvas/canvas-state.d.ts.map +0 -1
  505. package/dist/ui/canvas/canvas-state.js +0 -464
  506. package/dist/ui/canvas/canvas-state.js.map +0 -1
  507. package/dist/ui/canvas/components/index.d.ts +0 -95
  508. package/dist/ui/canvas/components/index.d.ts.map +0 -1
  509. package/dist/ui/canvas/components/index.js +0 -19
  510. package/dist/ui/canvas/components/index.js.map +0 -1
  511. package/dist/ui/canvas/index.d.ts +0 -32
  512. package/dist/ui/canvas/index.d.ts.map +0 -1
  513. package/dist/ui/canvas/index.js +0 -32
  514. package/dist/ui/canvas/index.js.map +0 -1
  515. package/dist/ui/canvas-inspector/src/server.d.ts +0 -2
  516. package/dist/ui/canvas-inspector/src/server.d.ts.map +0 -1
  517. package/dist/ui/canvas-inspector/src/server.js +0 -248
  518. package/dist/ui/canvas-inspector/src/server.js.map +0 -1
  519. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts +0 -5
  520. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts.map +0 -1
  521. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js +0 -58
  522. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js.map +0 -1
  523. package/dist/ui/svelte-generator/index.d.ts +0 -9
  524. package/dist/ui/svelte-generator/index.d.ts.map +0 -1
  525. package/dist/ui/svelte-generator/index.js +0 -11
  526. package/dist/ui/svelte-generator/index.js.map +0 -1
  527. package/dist/ui/svelte-generator/psf-generator.d.ts +0 -128
  528. package/dist/ui/svelte-generator/psf-generator.d.ts.map +0 -1
  529. package/dist/ui/svelte-generator/psf-generator.js +0 -506
  530. package/dist/ui/svelte-generator/psf-generator.js.map +0 -1
@@ -1,217 +0,0 @@
1
- /**
2
- * Azure Functions Relay Endpoints
3
- *
4
- * HTTP-triggered Azure Functions for Praxis Cloud Relay.
5
- */
6
- /**
7
- * In-memory storage for demo (replace with Azure Storage in production)
8
- */
9
- const storage = {
10
- syncs: new Map(),
11
- usage: new Map(),
12
- };
13
- /**
14
- * Health check endpoint
15
- * GET /health
16
- */
17
- export async function healthEndpoint(context, _req) {
18
- context.log("Health check requested");
19
- const response = {
20
- status: "healthy",
21
- timestamp: Date.now(),
22
- version: "0.1.0",
23
- services: {
24
- relay: true,
25
- eventGrid: true,
26
- storage: true,
27
- auth: true,
28
- },
29
- };
30
- return {
31
- status: 200,
32
- headers: { "Content-Type": "application/json" },
33
- body: response,
34
- };
35
- }
36
- /**
37
- * CRDT sync endpoint
38
- * POST /sync
39
- */
40
- export async function syncEndpoint(context, req) {
41
- context.log("Sync request received");
42
- // Validate request
43
- if (req.method !== "POST") {
44
- return {
45
- status: 405,
46
- body: { error: "Method not allowed" },
47
- };
48
- }
49
- const message = req.body;
50
- if (!message || !message.appId) {
51
- return {
52
- status: 400,
53
- body: { error: "Invalid sync message" },
54
- };
55
- }
56
- // Store sync message
57
- const appSyncs = storage.syncs.get(message.appId) || [];
58
- appSyncs.push(message);
59
- storage.syncs.set(message.appId, appSyncs);
60
- // Update usage metrics
61
- const usage = storage.usage.get(message.appId) || {
62
- appId: message.appId,
63
- syncCount: 0,
64
- eventCount: 0,
65
- factCount: 0,
66
- storageBytes: 0,
67
- periodStart: Date.now(),
68
- periodEnd: Date.now(),
69
- };
70
- usage.syncCount++;
71
- usage.eventCount += message.events?.length || 0;
72
- usage.factCount += message.facts?.length || 0;
73
- usage.storageBytes += JSON.stringify(message).length;
74
- usage.periodEnd = Date.now();
75
- storage.usage.set(message.appId, usage);
76
- context.log(`Synced for app ${message.appId}: ${usage.syncCount} total syncs`);
77
- // Return updated vector clock
78
- return {
79
- status: 200,
80
- headers: { "Content-Type": "application/json" },
81
- body: {
82
- success: true,
83
- clock: message.clock,
84
- timestamp: Date.now(),
85
- },
86
- };
87
- }
88
- /**
89
- * Usage metrics endpoint
90
- * GET /usage?appId=<appId>
91
- */
92
- export async function usageEndpoint(context, req) {
93
- context.log("Usage metrics requested");
94
- const appId = req.query.appId;
95
- if (!appId) {
96
- return {
97
- status: 400,
98
- body: { error: "appId query parameter is required" },
99
- };
100
- }
101
- const usage = storage.usage.get(appId);
102
- if (!usage) {
103
- return {
104
- status: 404,
105
- body: { error: "No usage data found for this app" },
106
- };
107
- }
108
- return {
109
- status: 200,
110
- headers: { "Content-Type": "application/json" },
111
- body: usage,
112
- };
113
- }
114
- /**
115
- * Stats endpoint for aggregated metrics
116
- * GET /stats?appId=<appId>
117
- */
118
- export async function statsEndpoint(context, req) {
119
- context.log("Stats requested");
120
- const appId = req.query.appId;
121
- if (!appId) {
122
- return {
123
- status: 400,
124
- body: { error: "appId query parameter is required" },
125
- };
126
- }
127
- const usage = storage.usage.get(appId);
128
- const syncs = storage.syncs.get(appId) || [];
129
- return {
130
- status: 200,
131
- headers: { "Content-Type": "application/json" },
132
- body: {
133
- appId,
134
- totalSyncs: syncs.length,
135
- usage: usage || null,
136
- lastSync: syncs.length > 0 ? syncs[syncs.length - 1].timestamp : null,
137
- },
138
- };
139
- }
140
- /**
141
- * Event forwarding endpoint
142
- * POST /events
143
- */
144
- export async function eventsEndpoint(context, req) {
145
- context.log("Event forwarding requested");
146
- if (req.method !== "POST") {
147
- return {
148
- status: 405,
149
- body: { error: "Method not allowed" },
150
- };
151
- }
152
- const { appId, events } = req.body;
153
- if (!appId || !events) {
154
- return {
155
- status: 400,
156
- body: { error: "Invalid event forwarding request" },
157
- };
158
- }
159
- context.log(`Forwarding ${events.length} events for app ${appId}`);
160
- // In production, publish to Azure Event Grid / Service Bus
161
- // For now, just acknowledge receipt
162
- return {
163
- status: 200,
164
- headers: { "Content-Type": "application/json" },
165
- body: {
166
- success: true,
167
- forwarded: events.length,
168
- timestamp: Date.now(),
169
- },
170
- };
171
- }
172
- /**
173
- * Schema registry endpoint
174
- * GET /schema?appId=<appId>
175
- * POST /schema (to register a schema)
176
- */
177
- export async function schemaEndpoint(context, req) {
178
- context.log("Schema registry requested");
179
- if (req.method === "POST") {
180
- const { appId, schema } = req.body;
181
- if (!appId || !schema) {
182
- return {
183
- status: 400,
184
- body: { error: "Invalid schema registration request" },
185
- };
186
- }
187
- context.log(`Schema registered for app ${appId}`);
188
- return {
189
- status: 200,
190
- headers: { "Content-Type": "application/json" },
191
- body: {
192
- success: true,
193
- schemaId: `${appId}-${Date.now()}`,
194
- timestamp: Date.now(),
195
- },
196
- };
197
- }
198
- // GET request
199
- const appId = req.query.appId;
200
- if (!appId) {
201
- return {
202
- status: 400,
203
- body: { error: "appId query parameter is required" },
204
- };
205
- }
206
- // Return placeholder schema
207
- return {
208
- status: 200,
209
- headers: { "Content-Type": "application/json" },
210
- body: {
211
- appId,
212
- schema: null,
213
- message: "Schema not found",
214
- },
215
- };
216
- }
217
- //# sourceMappingURL=endpoints.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../../../src/cloud/relay/endpoints.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Azure Function: Health Check
3
- */
4
- export default function (context: any, req: any): Promise<void>;
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cloud/relay/health/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,yBAA+B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,iBAGpD"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Azure Function: Health Check
3
- */
4
- import { healthEndpoint } from "../endpoints.js";
5
- export default async function (context, req) {
6
- const response = await healthEndpoint(context, req);
7
- context.res = response;
8
- }
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cloud/relay/health/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,OAAY,EAAE,GAAQ;IACnD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC;AACzB,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Azure Function: Stats
3
- */
4
- export default function (context: any, req: any): Promise<void>;
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cloud/relay/stats/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,yBAA+B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,iBAGpD"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Azure Function: Stats
3
- */
4
- import { statsEndpoint } from "../endpoints.js";
5
- export default async function (context, req) {
6
- const response = await statsEndpoint(context, req);
7
- context.res = response;
8
- }
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cloud/relay/stats/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,OAAY,EAAE,GAAQ;IACnD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC;AACzB,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Azure Function: CRDT Sync
3
- */
4
- export default function (context: any, req: any): Promise<void>;
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cloud/relay/sync/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,yBAA+B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,iBAGpD"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Azure Function: CRDT Sync
3
- */
4
- import { syncEndpoint } from "../endpoints.js";
5
- export default async function (context, req) {
6
- const response = await syncEndpoint(context, req);
7
- context.res = response;
8
- }
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cloud/relay/sync/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,OAAY,EAAE,GAAQ;IACnD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC;AACzB,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Azure Function: Usage Metrics
3
- */
4
- export default function (context: any, req: any): Promise<void>;
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cloud/relay/usage/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,yBAA+B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,iBAGpD"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Azure Function: Usage Metrics
3
- */
4
- import { usageEndpoint } from "../endpoints.js";
5
- export default async function (context, req) {
6
- const response = await usageEndpoint(context, req);
7
- context.res = response;
8
- }
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cloud/relay/usage/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,OAAY,EAAE,GAAQ;IACnD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC;AACzB,CAAC"}
@@ -1,81 +0,0 @@
1
- /**
2
- * GitHub Sponsors API Client
3
- *
4
- * Client for checking GitHub Sponsors subscription status.
5
- */
6
- import type { Subscription } from "./billing.js";
7
- /**
8
- * GitHub Sponsors tier information
9
- */
10
- export interface SponsorTier {
11
- /**
12
- * Tier ID
13
- */
14
- id: string;
15
- /**
16
- * Tier name
17
- */
18
- name: string;
19
- /**
20
- * Monthly price in cents
21
- */
22
- monthlyPriceInCents: number;
23
- /**
24
- * Tier description
25
- */
26
- description?: string;
27
- /**
28
- * Whether this is a one-time sponsorship
29
- */
30
- isOneTime: boolean;
31
- }
32
- /**
33
- * Sponsorship information
34
- */
35
- export interface Sponsorship {
36
- /**
37
- * Sponsor login
38
- */
39
- sponsorLogin: string;
40
- /**
41
- * Sponsor ID
42
- */
43
- sponsorId: number;
44
- /**
45
- * Tier information
46
- */
47
- tier: SponsorTier;
48
- /**
49
- * Creation date
50
- */
51
- createdAt: string;
52
- /**
53
- * Whether sponsorship is active
54
- */
55
- isActive: boolean;
56
- }
57
- /**
58
- * GitHub Sponsors API client
59
- */
60
- export declare class GitHubSponsorsClient {
61
- private token;
62
- private accountLogin;
63
- constructor(token: string, accountLogin: string);
64
- /**
65
- * Get current user's sponsorship of the Praxis account
66
- */
67
- getSponsorship(userLogin: string): Promise<Sponsorship | null>;
68
- /**
69
- * Get subscription from sponsorship
70
- */
71
- getSubscription(userLogin: string): Promise<Subscription>;
72
- /**
73
- * Check if user is a sponsor
74
- */
75
- isSponsor(userLogin: string): Promise<boolean>;
76
- }
77
- /**
78
- * Create a GitHub Sponsors client
79
- */
80
- export declare function createSponsorsClient(token: string, accountLogin?: string): GitHubSponsorsClient;
81
- //# sourceMappingURL=sponsors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sponsors.d.ts","sourceRoot":"","sources":["../../../src/cloud/sponsors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,EAAE,WAAW,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAS;gBAEjB,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAK/C;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IA+FpE;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAa/D;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAIrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,YAAY,GAAE,MAAiB,GAC9B,oBAAoB,CAEtB"}
@@ -1,130 +0,0 @@
1
- /**
2
- * GitHub Sponsors API Client
3
- *
4
- * Client for checking GitHub Sponsors subscription status.
5
- */
6
- import { createSponsorSubscription, createFreeSubscription } from "./billing.js";
7
- /**
8
- * GitHub Sponsors API client
9
- */
10
- export class GitHubSponsorsClient {
11
- token;
12
- accountLogin;
13
- constructor(token, accountLogin) {
14
- this.token = token;
15
- this.accountLogin = accountLogin;
16
- }
17
- /**
18
- * Get current user's sponsorship of the Praxis account
19
- */
20
- async getSponsorship(userLogin) {
21
- try {
22
- const query = `
23
- query($accountLogin: String!, $userLogin: String!) {
24
- user(login: $userLogin) {
25
- sponsorshipForViewerAsSponsor(activeOnly: true) {
26
- tier {
27
- id
28
- name
29
- monthlyPriceInCents
30
- description
31
- isOneTime
32
- }
33
- createdAt
34
- isActive
35
- }
36
- sponsorshipsAsSponsor(first: 100, activeOnly: true) {
37
- nodes {
38
- sponsorable {
39
- ... on User {
40
- login
41
- }
42
- ... on Organization {
43
- login
44
- }
45
- }
46
- tier {
47
- id
48
- name
49
- monthlyPriceInCents
50
- description
51
- isOneTime
52
- }
53
- createdAt
54
- isActive
55
- }
56
- }
57
- }
58
- }
59
- `;
60
- const response = await fetch("https://api.github.com/graphql", {
61
- method: "POST",
62
- headers: {
63
- Authorization: `Bearer ${this.token}`,
64
- "Content-Type": "application/json",
65
- },
66
- body: JSON.stringify({
67
- query,
68
- variables: {
69
- accountLogin: this.accountLogin,
70
- userLogin,
71
- },
72
- }),
73
- });
74
- if (!response.ok) {
75
- throw new Error(`GitHub API error: ${response.statusText}`);
76
- }
77
- const data = await response.json();
78
- if (data.errors) {
79
- throw new Error(`GraphQL error: ${JSON.stringify(data.errors)}`);
80
- }
81
- // Check if user sponsors the Praxis account
82
- const sponsorships = data.data?.user?.sponsorshipsAsSponsor?.nodes || [];
83
- const praxisSponsorship = sponsorships.find((s) => s.sponsorable?.login === this.accountLogin);
84
- if (!praxisSponsorship) {
85
- return null;
86
- }
87
- return {
88
- sponsorLogin: userLogin,
89
- sponsorId: data.data.user.id,
90
- tier: {
91
- id: praxisSponsorship.tier.id,
92
- name: praxisSponsorship.tier.name,
93
- monthlyPriceInCents: praxisSponsorship.tier.monthlyPriceInCents,
94
- description: praxisSponsorship.tier.description,
95
- isOneTime: praxisSponsorship.tier.isOneTime,
96
- },
97
- createdAt: praxisSponsorship.createdAt,
98
- isActive: praxisSponsorship.isActive,
99
- };
100
- }
101
- catch (error) {
102
- console.error("Failed to get sponsorship:", error);
103
- return null;
104
- }
105
- }
106
- /**
107
- * Get subscription from sponsorship
108
- */
109
- async getSubscription(userLogin) {
110
- const sponsorship = await this.getSponsorship(userLogin);
111
- if (!sponsorship || !sponsorship.isActive) {
112
- return createFreeSubscription();
113
- }
114
- return createSponsorSubscription(sponsorship.tier.name, sponsorship.tier.monthlyPriceInCents);
115
- }
116
- /**
117
- * Check if user is a sponsor
118
- */
119
- async isSponsor(userLogin) {
120
- const sponsorship = await this.getSponsorship(userLogin);
121
- return sponsorship !== null && sponsorship.isActive;
122
- }
123
- }
124
- /**
125
- * Create a GitHub Sponsors client
126
- */
127
- export function createSponsorsClient(token, accountLogin = "plures") {
128
- return new GitHubSponsorsClient(token, accountLogin);
129
- }
130
- //# sourceMappingURL=sponsors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sponsors.js","sourceRoot":"","sources":["../../../src/cloud/sponsors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AA8DjF;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACvB,KAAK,CAAS;IACd,YAAY,CAAS;IAE7B,YAAY,KAAa,EAAE,YAAoB;QAC7C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCb,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gCAAgC,EAAE;gBAC7D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;oBACrC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK;oBACL,SAAS,EAAE;wBACT,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,SAAS;qBACV;iBACF,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAC;YAE1C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnE,CAAC;YAED,4CAA4C;YAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC;YACzE,MAAM,iBAAiB,GAAG,YAAY,CAAC,IAAI,CACzC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,CAAC,YAAY,CACvD,CAAC;YAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO;gBACL,YAAY,EAAE,SAAS;gBACvB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC5B,IAAI,EAAE;oBACJ,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE;oBAC7B,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI;oBACjC,mBAAmB,EAAE,iBAAiB,CAAC,IAAI,CAAC,mBAAmB;oBAC/D,WAAW,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW;oBAC/C,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS;iBAC5C;gBACD,SAAS,EAAE,iBAAiB,CAAC,SAAS;gBACtC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;aACrC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAEzD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO,sBAAsB,EAAE,CAAC;QAClC,CAAC;QAED,OAAO,yBAAyB,CAC9B,WAAW,CAAC,IAAI,CAAC,IAAI,EACrB,WAAW,CAAC,IAAI,CAAC,mBAAmB,CACrC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACzD,OAAO,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC;IACtD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,eAAuB,QAAQ;IAE/B,OAAO,IAAI,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACvD,CAAC"}