@plures/praxis 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FRAMEWORK.md +55 -5
- package/LICENSE +21 -21
- package/README.md +162 -375
- package/core/codegen/docs-generator.ts +5 -2
- package/core/codegen/index.ts +1 -1
- package/core/codegen/ts-generator.ts +15 -15
- package/core/db-adapter/index.ts +2 -2
- package/core/db-adapter/sync-engine.ts +17 -6
- package/core/logic-engine/engine.ts +1 -1
- package/core/logic-engine/index.ts +2 -2
- package/core/logic-engine/protocol.ts +1 -1
- package/core/logic-engine/psf-adapter.ts +8 -4
- package/core/logic-engine/rules.ts +1 -1
- package/core/schema-engine/compiler.ts +53 -11
- package/core/schema-engine/generator.ts +17 -7
- package/core/schema-engine/index.ts +2 -2
- package/core/schema-engine/psf.ts +12 -3
- package/core/schema-engine/types.ts +3 -11
- package/core/schema-engine/validator.ts +112 -22
- package/dist/browser/engine-BjdqxeXG.d.ts +333 -0
- package/dist/browser/index.d.ts +3004 -0
- package/dist/browser/index.js +2892 -0
- package/dist/{src → browser}/integrations/svelte.d.ts +19 -17
- package/dist/browser/integrations/svelte.js +298 -0
- package/dist/node/auth-STARLY7I.js +207 -0
- package/dist/node/build-Y7OT5VBF.js +144 -0
- package/dist/node/canvas-UERZHJYW.js +362 -0
- package/dist/node/chunk-DSDC2JWZ.js +256 -0
- package/dist/node/chunk-FXQZXAWF.js +175 -0
- package/dist/node/chunk-N5Y37EUV.js +202 -0
- package/dist/node/chunk-QGM4M3NI.js +37 -0
- package/dist/node/chunk-RJMWCNHR.js +175 -0
- package/dist/node/chunk-SRM3OPPM.js +404 -0
- package/dist/node/chunk-UATVJBNV.js +175 -0
- package/dist/node/chunk-UY7YEBE2.js +159 -0
- package/dist/node/chunk-XCY2VIFX.js +143 -0
- package/dist/node/chunk-YXH4Y7ZZ.js +349 -0
- package/dist/node/cli/index.cjs +217418 -0
- package/dist/node/cli/index.d.cts +1 -0
- package/dist/node/cli/index.d.ts +1 -0
- package/dist/node/cli/index.js +690 -0
- package/dist/node/cloud/index.cjs +1043 -0
- package/dist/node/cloud/index.d.cts +864 -0
- package/dist/node/cloud/index.d.ts +864 -0
- package/dist/node/cloud/index.js +456 -0
- package/dist/node/cloud-AXOK4PSN.js +212 -0
- package/dist/node/component.cjs +374 -0
- package/dist/node/component.d.cts +125 -0
- package/dist/{src/core/component/generator.d.ts → node/component.d.ts} +11 -8
- package/dist/node/component.js +9 -0
- package/dist/node/components/index.cjs +216 -0
- package/dist/node/components/index.d.cts +43 -0
- package/dist/{src → node}/components/index.d.ts +8 -8
- package/dist/node/components/index.js +7 -0
- package/dist/node/create-TRLSVCNQ.js +584 -0
- package/dist/node/dev-PMJZUYGE.js +65 -0
- package/dist/node/engine-1iqLe6_P.d.ts +214 -0
- package/dist/node/engine-CVJobhHm.d.cts +214 -0
- package/dist/node/index.cjs +3247 -0
- package/dist/node/index.d.cts +2579 -0
- package/dist/node/index.d.ts +2579 -0
- package/dist/node/index.js +2098 -0
- package/dist/node/integrations/svelte.cjs +330 -0
- package/dist/node/integrations/svelte.d.cts +309 -0
- package/dist/node/integrations/svelte.d.ts +309 -0
- package/dist/node/integrations/svelte.js +300 -0
- package/dist/node/orchestrate-737TCL5H.js +127 -0
- package/dist/{src/core/protocol.d.ts → node/protocol-Qek7ebBl.d.cts} +11 -10
- package/dist/node/protocol-Qek7ebBl.d.ts +122 -0
- package/dist/node/schema.cjs +200 -0
- package/dist/{src/core/schema/types.d.ts → node/schema.d.cts} +30 -29
- package/dist/node/schema.d.ts +371 -0
- package/dist/node/schema.js +9 -0
- package/dist/{src/runtime/terminal-adapter.d.ts → node/terminal-adapter-07HGftGQ.d.ts} +86 -11
- package/dist/node/terminal-adapter-XLtCjjb_.d.cts +231 -0
- package/dist/node/verify-YBZ7W24H.js +213239 -0
- package/docs/MONETIZATION.md +21 -16
- package/docs/REACTIVE_REDESIGN.md +132 -0
- package/docs/README.md +47 -36
- package/docs/SVELTE_INTEGRATION_STRATEGY.md +68 -0
- package/docs/TERMINAL_NODE.md +27 -24
- package/docs/core/building-extensions.md +58 -61
- package/docs/core/cli-usage.md +59 -59
- package/docs/core/code-canvas-sync.md +28 -16
- package/docs/core/logic-engine.md +77 -82
- package/docs/core/pluresdb-integration.md +29 -39
- package/docs/core/schema-model.md +66 -52
- package/docs/core/ui-generation.md +57 -49
- package/docs/core/what-is-praxis.md +32 -15
- package/docs/guides/canvas.md +21 -5
- package/docs/guides/getting-started.md +13 -7
- package/docs/guides/history-state-pattern.md +65 -51
- package/docs/guides/orchestration.md +46 -32
- package/docs/guides/parallel-state-pattern.md +56 -72
- package/docs/guides/svelte-integration.md +45 -53
- package/docs/tutorials/README.md +16 -0
- package/docs/tutorials/ecommerce-cart.md +177 -95
- package/docs/tutorials/first-app.md +26 -41
- package/docs/tutorials/form-builder.md +191 -138
- package/docs/tutorials/todo-pluresdb.md +71 -69
- package/package.json +132 -96
- package/src/__tests__/actors.test.ts +68 -68
- package/src/__tests__/billing.test.ts +32 -32
- package/src/__tests__/canvas-components.test.ts +94 -73
- package/src/__tests__/cli-create.test.ts +28 -28
- package/src/__tests__/cloud.test.ts +36 -36
- package/src/__tests__/code-canvas-integration.test.ts +132 -141
- package/src/__tests__/docs-generator.test.ts +3 -9
- package/src/__tests__/dsl.test.ts +58 -64
- package/src/__tests__/edge-cases.test.ts +106 -108
- package/src/__tests__/engine.test.ts +51 -25
- package/src/__tests__/generators.test.ts +42 -44
- package/src/__tests__/introspection.test.ts +104 -114
- package/src/__tests__/pluresdb.test.ts +189 -187
- package/src/__tests__/protocol.test.ts +15 -15
- package/src/__tests__/provisioning.test.ts +61 -61
- package/src/__tests__/schema.test.ts +7 -11
- package/src/__tests__/state-docs-integration.test.ts +162 -145
- package/src/__tests__/svelte-integration.test.ts +16 -19
- package/src/__tests__/tauri-integration.test.ts +149 -147
- package/src/__tests__/terminal-node.test.ts +12 -7
- package/src/__tests__/unum-integration.test.ts +68 -68
- package/src/adapters/cli.ts +21 -15
- package/src/cli/commands/auth.ts +82 -78
- package/src/cli/commands/build.ts +29 -27
- package/src/cli/commands/canvas.ts +338 -127
- package/src/cli/commands/cloud.ts +47 -47
- package/src/cli/commands/create.ts +59 -47
- package/src/cli/commands/dev.ts +12 -12
- package/src/cli/commands/generate.ts +29 -40
- package/src/cli/commands/orchestrate.ts +24 -24
- package/src/cli/commands/verify.ts +49 -0
- package/src/cli/index.ts +21 -2
- package/src/cloud/README.md +28 -15
- package/src/cloud/auth.ts +55 -70
- package/src/cloud/billing.ts +59 -58
- package/src/cloud/client.ts +29 -35
- package/src/cloud/index.ts +19 -40
- package/src/cloud/marketplace.ts +69 -78
- package/src/cloud/provisioning.ts +42 -51
- package/src/cloud/relay/endpoints.ts +30 -34
- package/src/cloud/relay/health/index.ts +1 -1
- package/src/cloud/relay/stats/index.ts +1 -1
- package/src/cloud/relay/sync/index.ts +1 -1
- package/src/cloud/relay/usage/index.ts +1 -1
- package/src/cloud/sponsors.ts +31 -34
- package/src/cloud/types.ts +4 -4
- package/src/components/README.md +1 -0
- package/src/components/TerminalNode.svelte +457 -457
- package/src/components/index.ts +3 -4
- package/src/core/actors.ts +7 -7
- package/src/core/component/generator.ts +10 -28
- package/src/core/engine.ts +51 -24
- package/src/core/introspection.ts +37 -35
- package/src/core/logic/generator.ts +62 -62
- package/src/core/pluresdb/adapter.ts +8 -8
- package/src/core/pluresdb/generator.ts +39 -35
- package/src/core/pluresdb/index.ts +9 -12
- package/src/core/pluresdb/schema-registry.ts +22 -25
- package/src/core/pluresdb/store.ts +57 -57
- package/src/core/protocol.ts +14 -14
- package/src/core/reactive-engine.svelte.ts +65 -0
- package/src/core/reactive-engine.ts +67 -0
- package/src/core/rules.ts +4 -4
- package/src/core/schema/loader.common.ts +150 -0
- package/src/core/schema/loader.ts +19 -149
- package/src/core/schema/normalize.ts +34 -51
- package/src/core/schema/types.ts +47 -11
- package/src/dsl/index.ts +8 -8
- package/src/dsl.ts +11 -17
- package/src/examples/advanced-todo/App.svelte +506 -506
- package/src/examples/advanced-todo/README.md +58 -40
- package/src/examples/advanced-todo/index.ts +3 -3
- package/src/examples/auth-basic/index.ts +30 -30
- package/src/examples/cart/index.ts +50 -50
- package/src/examples/hero-ecommerce/index.ts +130 -157
- package/src/examples/svelte-counter/index.ts +22 -26
- package/src/flows.ts +6 -17
- package/src/index.browser.ts +204 -0
- package/src/index.ts +37 -42
- package/src/integrations/code-canvas.ts +237 -193
- package/src/integrations/pluresdb.ts +55 -35
- package/src/integrations/state-docs.ts +104 -104
- package/src/integrations/svelte.ts +35 -35
- package/src/integrations/tauri.ts +75 -73
- package/src/integrations/unum.ts +68 -61
- package/src/registry.ts +7 -14
- package/src/runtime/terminal-adapter.ts +31 -26
- package/src/step.ts +10 -16
- package/src/types.ts +1 -1
- package/templates/basic-app/README.md +6 -9
- package/templates/fullstack-app/README.md +10 -0
- package/dist/core/codegen/docs-generator.d.ts +0 -123
- package/dist/core/codegen/docs-generator.d.ts.map +0 -1
- package/dist/core/codegen/docs-generator.js +0 -674
- package/dist/core/codegen/docs-generator.js.map +0 -1
- package/dist/core/codegen/index.d.ts +0 -11
- package/dist/core/codegen/index.d.ts.map +0 -1
- package/dist/core/codegen/index.js +0 -13
- package/dist/core/codegen/index.js.map +0 -1
- package/dist/core/codegen/ts-generator.d.ts +0 -8
- package/dist/core/codegen/ts-generator.d.ts.map +0 -1
- package/dist/core/codegen/ts-generator.js +0 -8
- package/dist/core/codegen/ts-generator.js.map +0 -1
- package/dist/core/db-adapter/index.d.ts +0 -18
- package/dist/core/db-adapter/index.d.ts.map +0 -1
- package/dist/core/db-adapter/index.js +0 -23
- package/dist/core/db-adapter/index.js.map +0 -1
- package/dist/core/db-adapter/sync-engine.d.ts +0 -180
- package/dist/core/db-adapter/sync-engine.d.ts.map +0 -1
- package/dist/core/db-adapter/sync-engine.js +0 -342
- package/dist/core/db-adapter/sync-engine.js.map +0 -1
- package/dist/core/logic-engine/engine.d.ts +0 -8
- package/dist/core/logic-engine/engine.d.ts.map +0 -1
- package/dist/core/logic-engine/engine.js +0 -8
- package/dist/core/logic-engine/engine.js.map +0 -1
- package/dist/core/logic-engine/index.d.ts +0 -16
- package/dist/core/logic-engine/index.d.ts.map +0 -1
- package/dist/core/logic-engine/index.js +0 -16
- package/dist/core/logic-engine/index.js.map +0 -1
- package/dist/core/logic-engine/protocol.d.ts +0 -7
- package/dist/core/logic-engine/protocol.d.ts.map +0 -1
- package/dist/core/logic-engine/protocol.js +0 -7
- package/dist/core/logic-engine/protocol.js.map +0 -1
- package/dist/core/logic-engine/psf-adapter.d.ts +0 -88
- package/dist/core/logic-engine/psf-adapter.d.ts.map +0 -1
- package/dist/core/logic-engine/psf-adapter.js +0 -207
- package/dist/core/logic-engine/psf-adapter.js.map +0 -1
- package/dist/core/logic-engine/rules.d.ts +0 -7
- package/dist/core/logic-engine/rules.d.ts.map +0 -1
- package/dist/core/logic-engine/rules.js +0 -7
- package/dist/core/logic-engine/rules.js.map +0 -1
- package/dist/core/schema-engine/compiler.d.ts +0 -198
- package/dist/core/schema-engine/compiler.d.ts.map +0 -1
- package/dist/core/schema-engine/compiler.js +0 -262
- package/dist/core/schema-engine/compiler.js.map +0 -1
- package/dist/core/schema-engine/generator.d.ts +0 -115
- package/dist/core/schema-engine/generator.d.ts.map +0 -1
- package/dist/core/schema-engine/generator.js +0 -506
- package/dist/core/schema-engine/generator.js.map +0 -1
- package/dist/core/schema-engine/index.d.ts +0 -18
- package/dist/core/schema-engine/index.d.ts.map +0 -1
- package/dist/core/schema-engine/index.js +0 -18
- package/dist/core/schema-engine/index.js.map +0 -1
- package/dist/core/schema-engine/psf.d.ts +0 -612
- package/dist/core/schema-engine/psf.d.ts.map +0 -1
- package/dist/core/schema-engine/psf.js +0 -45
- package/dist/core/schema-engine/psf.js.map +0 -1
- package/dist/core/schema-engine/types.d.ts +0 -10
- package/dist/core/schema-engine/types.d.ts.map +0 -1
- package/dist/core/schema-engine/types.js +0 -7
- package/dist/core/schema-engine/types.js.map +0 -1
- package/dist/core/schema-engine/validator.d.ts +0 -140
- package/dist/core/schema-engine/validator.d.ts.map +0 -1
- package/dist/core/schema-engine/validator.js +0 -407
- package/dist/core/schema-engine/validator.js.map +0 -1
- package/dist/src/adapters/cli.d.ts +0 -43
- package/dist/src/adapters/cli.d.ts.map +0 -1
- package/dist/src/adapters/cli.js +0 -126
- package/dist/src/adapters/cli.js.map +0 -1
- package/dist/src/cli/commands/auth.d.ts +0 -26
- package/dist/src/cli/commands/auth.d.ts.map +0 -1
- package/dist/src/cli/commands/auth.js +0 -233
- package/dist/src/cli/commands/auth.js.map +0 -1
- package/dist/src/cli/commands/build.d.ts +0 -23
- package/dist/src/cli/commands/build.d.ts.map +0 -1
- package/dist/src/cli/commands/build.js +0 -162
- package/dist/src/cli/commands/build.js.map +0 -1
- package/dist/src/cli/commands/canvas.d.ts +0 -23
- package/dist/src/cli/commands/canvas.d.ts.map +0 -1
- package/dist/src/cli/commands/canvas.js +0 -215
- package/dist/src/cli/commands/canvas.js.map +0 -1
- package/dist/src/cli/commands/cloud.d.ts +0 -27
- package/dist/src/cli/commands/cloud.d.ts.map +0 -1
- package/dist/src/cli/commands/cloud.js +0 -232
- package/dist/src/cli/commands/cloud.js.map +0 -1
- package/dist/src/cli/commands/create.d.ts +0 -21
- package/dist/src/cli/commands/create.d.ts.map +0 -1
- package/dist/src/cli/commands/create.js +0 -621
- package/dist/src/cli/commands/create.js.map +0 -1
- package/dist/src/cli/commands/dev.d.ts +0 -21
- package/dist/src/cli/commands/dev.d.ts.map +0 -1
- package/dist/src/cli/commands/dev.js +0 -71
- package/dist/src/cli/commands/dev.js.map +0 -1
- package/dist/src/cli/commands/generate.d.ts +0 -25
- package/dist/src/cli/commands/generate.d.ts.map +0 -1
- package/dist/src/cli/commands/generate.js +0 -168
- package/dist/src/cli/commands/generate.js.map +0 -1
- package/dist/src/cli/commands/orchestrate.d.ts +0 -44
- package/dist/src/cli/commands/orchestrate.d.ts.map +0 -1
- package/dist/src/cli/commands/orchestrate.js +0 -150
- package/dist/src/cli/commands/orchestrate.js.map +0 -1
- package/dist/src/cli/index.d.ts +0 -8
- package/dist/src/cli/index.d.ts.map +0 -1
- package/dist/src/cli/index.js +0 -211
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cloud/auth.d.ts +0 -51
- package/dist/src/cloud/auth.d.ts.map +0 -1
- package/dist/src/cloud/auth.js +0 -194
- package/dist/src/cloud/auth.js.map +0 -1
- package/dist/src/cloud/billing.d.ts +0 -184
- package/dist/src/cloud/billing.d.ts.map +0 -1
- package/dist/src/cloud/billing.js +0 -179
- package/dist/src/cloud/billing.js.map +0 -1
- package/dist/src/cloud/client.d.ts +0 -39
- package/dist/src/cloud/client.d.ts.map +0 -1
- package/dist/src/cloud/client.js +0 -176
- package/dist/src/cloud/client.js.map +0 -1
- package/dist/src/cloud/index.d.ts +0 -44
- package/dist/src/cloud/index.d.ts.map +0 -1
- package/dist/src/cloud/index.js +0 -44
- package/dist/src/cloud/index.js.map +0 -1
- package/dist/src/cloud/marketplace.d.ts +0 -166
- package/dist/src/cloud/marketplace.d.ts.map +0 -1
- package/dist/src/cloud/marketplace.js +0 -159
- package/dist/src/cloud/marketplace.js.map +0 -1
- package/dist/src/cloud/provisioning.d.ts +0 -110
- package/dist/src/cloud/provisioning.d.ts.map +0 -1
- package/dist/src/cloud/provisioning.js +0 -148
- package/dist/src/cloud/provisioning.js.map +0 -1
- package/dist/src/cloud/relay/endpoints.d.ts +0 -62
- package/dist/src/cloud/relay/endpoints.d.ts.map +0 -1
- package/dist/src/cloud/relay/endpoints.js +0 -217
- package/dist/src/cloud/relay/endpoints.js.map +0 -1
- package/dist/src/cloud/relay/health/index.d.ts +0 -5
- package/dist/src/cloud/relay/health/index.d.ts.map +0 -1
- package/dist/src/cloud/relay/health/index.js +0 -9
- package/dist/src/cloud/relay/health/index.js.map +0 -1
- package/dist/src/cloud/relay/stats/index.d.ts +0 -5
- package/dist/src/cloud/relay/stats/index.d.ts.map +0 -1
- package/dist/src/cloud/relay/stats/index.js +0 -9
- package/dist/src/cloud/relay/stats/index.js.map +0 -1
- package/dist/src/cloud/relay/sync/index.d.ts +0 -5
- package/dist/src/cloud/relay/sync/index.d.ts.map +0 -1
- package/dist/src/cloud/relay/sync/index.js +0 -9
- package/dist/src/cloud/relay/sync/index.js.map +0 -1
- package/dist/src/cloud/relay/usage/index.d.ts +0 -5
- package/dist/src/cloud/relay/usage/index.d.ts.map +0 -1
- package/dist/src/cloud/relay/usage/index.js +0 -9
- package/dist/src/cloud/relay/usage/index.js.map +0 -1
- package/dist/src/cloud/sponsors.d.ts +0 -81
- package/dist/src/cloud/sponsors.d.ts.map +0 -1
- package/dist/src/cloud/sponsors.js +0 -130
- package/dist/src/cloud/sponsors.js.map +0 -1
- package/dist/src/cloud/types.d.ts +0 -169
- package/dist/src/cloud/types.d.ts.map +0 -1
- package/dist/src/cloud/types.js +0 -7
- package/dist/src/cloud/types.js.map +0 -1
- package/dist/src/components/index.d.ts.map +0 -1
- package/dist/src/components/index.js +0 -17
- package/dist/src/components/index.js.map +0 -1
- package/dist/src/core/actors.d.ts +0 -95
- package/dist/src/core/actors.d.ts.map +0 -1
- package/dist/src/core/actors.js +0 -158
- package/dist/src/core/actors.js.map +0 -1
- package/dist/src/core/component/generator.d.ts.map +0 -1
- package/dist/src/core/component/generator.js +0 -349
- package/dist/src/core/component/generator.js.map +0 -1
- package/dist/src/core/engine.d.ts +0 -92
- package/dist/src/core/engine.d.ts.map +0 -1
- package/dist/src/core/engine.js +0 -199
- package/dist/src/core/engine.js.map +0 -1
- package/dist/src/core/introspection.d.ts +0 -141
- package/dist/src/core/introspection.d.ts.map +0 -1
- package/dist/src/core/introspection.js +0 -208
- package/dist/src/core/introspection.js.map +0 -1
- package/dist/src/core/logic/generator.d.ts +0 -76
- package/dist/src/core/logic/generator.d.ts.map +0 -1
- package/dist/src/core/logic/generator.js +0 -370
- package/dist/src/core/logic/generator.js.map +0 -1
- package/dist/src/core/pluresdb/adapter.d.ts +0 -72
- package/dist/src/core/pluresdb/adapter.d.ts.map +0 -1
- package/dist/src/core/pluresdb/adapter.js +0 -73
- package/dist/src/core/pluresdb/adapter.js.map +0 -1
- package/dist/src/core/pluresdb/generator.d.ts +0 -58
- package/dist/src/core/pluresdb/generator.d.ts.map +0 -1
- package/dist/src/core/pluresdb/generator.js +0 -191
- package/dist/src/core/pluresdb/generator.js.map +0 -1
- package/dist/src/core/pluresdb/index.d.ts +0 -15
- package/dist/src/core/pluresdb/index.d.ts.map +0 -1
- package/dist/src/core/pluresdb/index.js +0 -11
- package/dist/src/core/pluresdb/index.js.map +0 -1
- package/dist/src/core/pluresdb/schema-registry.d.ts +0 -104
- package/dist/src/core/pluresdb/schema-registry.d.ts.map +0 -1
- package/dist/src/core/pluresdb/schema-registry.js +0 -130
- package/dist/src/core/pluresdb/schema-registry.js.map +0 -1
- package/dist/src/core/pluresdb/store.d.ts +0 -199
- package/dist/src/core/pluresdb/store.d.ts.map +0 -1
- package/dist/src/core/pluresdb/store.js +0 -344
- package/dist/src/core/pluresdb/store.js.map +0 -1
- package/dist/src/core/protocol.d.ts.map +0 -1
- package/dist/src/core/protocol.js +0 -46
- package/dist/src/core/protocol.js.map +0 -1
- package/dist/src/core/rules.d.ts +0 -120
- package/dist/src/core/rules.d.ts.map +0 -1
- package/dist/src/core/rules.js +0 -81
- package/dist/src/core/rules.js.map +0 -1
- package/dist/src/core/schema/loader.d.ts +0 -47
- package/dist/src/core/schema/loader.d.ts.map +0 -1
- package/dist/src/core/schema/loader.js +0 -189
- package/dist/src/core/schema/loader.js.map +0 -1
- package/dist/src/core/schema/normalize.d.ts +0 -72
- package/dist/src/core/schema/normalize.d.ts.map +0 -1
- package/dist/src/core/schema/normalize.js +0 -190
- package/dist/src/core/schema/normalize.js.map +0 -1
- package/dist/src/core/schema/types.d.ts.map +0 -1
- package/dist/src/core/schema/types.js +0 -161
- package/dist/src/core/schema/types.js.map +0 -1
- package/dist/src/dsl/index.d.ts +0 -152
- package/dist/src/dsl/index.d.ts.map +0 -1
- package/dist/src/dsl/index.js +0 -132
- package/dist/src/dsl/index.js.map +0 -1
- package/dist/src/dsl.d.ts +0 -124
- package/dist/src/dsl.d.ts.map +0 -1
- package/dist/src/dsl.js +0 -130
- package/dist/src/dsl.js.map +0 -1
- package/dist/src/examples/advanced-todo/index.d.ts +0 -55
- package/dist/src/examples/advanced-todo/index.d.ts.map +0 -1
- package/dist/src/examples/advanced-todo/index.js +0 -222
- package/dist/src/examples/advanced-todo/index.js.map +0 -1
- package/dist/src/examples/auth-basic/index.d.ts +0 -17
- package/dist/src/examples/auth-basic/index.d.ts.map +0 -1
- package/dist/src/examples/auth-basic/index.js +0 -122
- package/dist/src/examples/auth-basic/index.js.map +0 -1
- package/dist/src/examples/cart/index.d.ts +0 -19
- package/dist/src/examples/cart/index.d.ts.map +0 -1
- package/dist/src/examples/cart/index.js +0 -202
- package/dist/src/examples/cart/index.js.map +0 -1
- package/dist/src/examples/hero-ecommerce/index.d.ts +0 -39
- package/dist/src/examples/hero-ecommerce/index.d.ts.map +0 -1
- package/dist/src/examples/hero-ecommerce/index.js +0 -506
- package/dist/src/examples/hero-ecommerce/index.js.map +0 -1
- package/dist/src/examples/svelte-counter/index.d.ts +0 -31
- package/dist/src/examples/svelte-counter/index.d.ts.map +0 -1
- package/dist/src/examples/svelte-counter/index.js +0 -123
- package/dist/src/examples/svelte-counter/index.js.map +0 -1
- package/dist/src/flows.d.ts +0 -125
- package/dist/src/flows.d.ts.map +0 -1
- package/dist/src/flows.js +0 -160
- package/dist/src/flows.js.map +0 -1
- package/dist/src/index.d.ts +0 -77
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -64
- package/dist/src/index.js.map +0 -1
- package/dist/src/integrations/code-canvas.d.ts +0 -265
- package/dist/src/integrations/code-canvas.d.ts.map +0 -1
- package/dist/src/integrations/code-canvas.js +0 -451
- package/dist/src/integrations/code-canvas.js.map +0 -1
- package/dist/src/integrations/pluresdb.d.ts +0 -117
- package/dist/src/integrations/pluresdb.d.ts.map +0 -1
- package/dist/src/integrations/pluresdb.js +0 -117
- package/dist/src/integrations/pluresdb.js.map +0 -1
- package/dist/src/integrations/state-docs.d.ts +0 -191
- package/dist/src/integrations/state-docs.d.ts.map +0 -1
- package/dist/src/integrations/state-docs.js +0 -515
- package/dist/src/integrations/state-docs.js.map +0 -1
- package/dist/src/integrations/svelte.d.ts.map +0 -1
- package/dist/src/integrations/svelte.js +0 -447
- package/dist/src/integrations/svelte.js.map +0 -1
- package/dist/src/integrations/tauri.d.ts +0 -360
- package/dist/src/integrations/tauri.d.ts.map +0 -1
- package/dist/src/integrations/tauri.js +0 -278
- package/dist/src/integrations/tauri.js.map +0 -1
- package/dist/src/integrations/unum.d.ts +0 -159
- package/dist/src/integrations/unum.d.ts.map +0 -1
- package/dist/src/integrations/unum.js +0 -240
- package/dist/src/integrations/unum.js.map +0 -1
- package/dist/src/registry.d.ts +0 -94
- package/dist/src/registry.d.ts.map +0 -1
- package/dist/src/registry.js +0 -181
- package/dist/src/registry.js.map +0 -1
- package/dist/src/runtime/terminal-adapter.d.ts.map +0 -1
- package/dist/src/runtime/terminal-adapter.js +0 -239
- package/dist/src/runtime/terminal-adapter.js.map +0 -1
- package/dist/src/step.d.ts +0 -34
- package/dist/src/step.d.ts.map +0 -1
- package/dist/src/step.js +0 -111
- package/dist/src/step.js.map +0 -1
- package/dist/src/types.d.ts +0 -63
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -6
- package/dist/src/types.js.map +0 -1
- package/dist/tools/cli/commands/index.d.ts +0 -7
- package/dist/tools/cli/commands/index.d.ts.map +0 -1
- package/dist/tools/cli/commands/index.js +0 -7
- package/dist/tools/cli/commands/index.js.map +0 -1
- package/dist/tools/cli/index.d.ts +0 -8
- package/dist/tools/cli/index.d.ts.map +0 -1
- package/dist/tools/cli/index.js +0 -9
- package/dist/tools/cli/index.js.map +0 -1
- package/dist/tools/watcher/index.d.ts +0 -105
- package/dist/tools/watcher/index.d.ts.map +0 -1
- package/dist/tools/watcher/index.js +0 -213
- package/dist/tools/watcher/index.js.map +0 -1
- package/dist/ui/canvas/canvas-projection.d.ts +0 -78
- package/dist/ui/canvas/canvas-projection.d.ts.map +0 -1
- package/dist/ui/canvas/canvas-projection.js +0 -416
- package/dist/ui/canvas/canvas-projection.js.map +0 -1
- package/dist/ui/canvas/canvas-state.d.ts +0 -200
- package/dist/ui/canvas/canvas-state.d.ts.map +0 -1
- package/dist/ui/canvas/canvas-state.js +0 -464
- package/dist/ui/canvas/canvas-state.js.map +0 -1
- package/dist/ui/canvas/components/index.d.ts +0 -95
- package/dist/ui/canvas/components/index.d.ts.map +0 -1
- package/dist/ui/canvas/components/index.js +0 -19
- package/dist/ui/canvas/components/index.js.map +0 -1
- package/dist/ui/canvas/index.d.ts +0 -32
- package/dist/ui/canvas/index.d.ts.map +0 -1
- package/dist/ui/canvas/index.js +0 -32
- package/dist/ui/canvas/index.js.map +0 -1
- package/dist/ui/svelte-generator/index.d.ts +0 -9
- package/dist/ui/svelte-generator/index.d.ts.map +0 -1
- package/dist/ui/svelte-generator/index.js +0 -11
- package/dist/ui/svelte-generator/index.js.map +0 -1
- package/dist/ui/svelte-generator/psf-generator.d.ts +0 -128
- package/dist/ui/svelte-generator/psf-generator.d.ts.map +0 -1
- package/dist/ui/svelte-generator/psf-generator.js +0 -506
- package/dist/ui/svelte-generator/psf-generator.js.map +0 -1
package/src/cloud/auth.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GitHub OAuth Authentication
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* GitHub OAuth integration for Praxis Cloud Relay identity.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type { AuthResult, GitHubUser } from
|
|
7
|
+
import type { AuthResult, GitHubUser } from './types.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* GitHub OAuth configuration
|
|
@@ -32,12 +32,12 @@ export class GitHubOAuth {
|
|
|
32
32
|
getAuthorizationUrl(state?: string): string {
|
|
33
33
|
const params = new URLSearchParams({
|
|
34
34
|
client_id: this.config.clientId,
|
|
35
|
-
scope: this.config.scope ||
|
|
35
|
+
scope: this.config.scope || 'read:user user:email',
|
|
36
36
|
state: state || this.generateState(),
|
|
37
37
|
});
|
|
38
38
|
|
|
39
39
|
if (this.config.redirectUri) {
|
|
40
|
-
params.set(
|
|
40
|
+
params.set('redirect_uri', this.config.redirectUri);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
return `https://github.com/login/oauth/authorize?${params.toString()}`;
|
|
@@ -48,31 +48,28 @@ export class GitHubOAuth {
|
|
|
48
48
|
*/
|
|
49
49
|
async exchangeCode(code: string): Promise<AuthResult> {
|
|
50
50
|
if (!this.config.clientSecret) {
|
|
51
|
-
throw new Error(
|
|
51
|
+
throw new Error('Client secret is required for code exchange');
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
try {
|
|
55
|
-
const response = await fetch(
|
|
56
|
-
|
|
57
|
-
{
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}),
|
|
68
|
-
}
|
|
69
|
-
);
|
|
55
|
+
const response = await fetch('https://github.com/login/oauth/access_token', {
|
|
56
|
+
method: 'POST',
|
|
57
|
+
headers: {
|
|
58
|
+
'Content-Type': 'application/json',
|
|
59
|
+
Accept: 'application/json',
|
|
60
|
+
},
|
|
61
|
+
body: JSON.stringify({
|
|
62
|
+
client_id: this.config.clientId,
|
|
63
|
+
client_secret: this.config.clientSecret,
|
|
64
|
+
code,
|
|
65
|
+
}),
|
|
66
|
+
});
|
|
70
67
|
|
|
71
68
|
if (!response.ok) {
|
|
72
69
|
throw new Error(`Token exchange failed: ${response.statusText}`);
|
|
73
70
|
}
|
|
74
71
|
|
|
75
|
-
const data = await response.json() as any;
|
|
72
|
+
const data = (await response.json()) as any;
|
|
76
73
|
|
|
77
74
|
if (data.error) {
|
|
78
75
|
throw new Error(`GitHub OAuth error: ${data.error_description || data.error}`);
|
|
@@ -85,9 +82,7 @@ export class GitHubOAuth {
|
|
|
85
82
|
success: true,
|
|
86
83
|
token: data.access_token,
|
|
87
84
|
user,
|
|
88
|
-
expiresAt: data.expires_in
|
|
89
|
-
? Date.now() + data.expires_in * 1000
|
|
90
|
-
: undefined,
|
|
85
|
+
expiresAt: data.expires_in ? Date.now() + data.expires_in * 1000 : undefined,
|
|
91
86
|
};
|
|
92
87
|
} catch (error) {
|
|
93
88
|
return {
|
|
@@ -100,10 +95,10 @@ export class GitHubOAuth {
|
|
|
100
95
|
* Get user information from GitHub
|
|
101
96
|
*/
|
|
102
97
|
async getUserInfo(token: string): Promise<GitHubUser> {
|
|
103
|
-
const response = await fetch(
|
|
98
|
+
const response = await fetch('https://api.github.com/user', {
|
|
104
99
|
headers: {
|
|
105
100
|
Authorization: `Bearer ${token}`,
|
|
106
|
-
Accept:
|
|
101
|
+
Accept: 'application/vnd.github.v3+json',
|
|
107
102
|
},
|
|
108
103
|
});
|
|
109
104
|
|
|
@@ -111,7 +106,7 @@ export class GitHubOAuth {
|
|
|
111
106
|
throw new Error(`Failed to get user info: ${response.statusText}`);
|
|
112
107
|
}
|
|
113
108
|
|
|
114
|
-
const data = await response.json() as any;
|
|
109
|
+
const data = (await response.json()) as any;
|
|
115
110
|
|
|
116
111
|
return {
|
|
117
112
|
id: data.id,
|
|
@@ -139,7 +134,7 @@ export class GitHubOAuth {
|
|
|
139
134
|
*/
|
|
140
135
|
private generateState(): string {
|
|
141
136
|
const array = new Uint8Array(16);
|
|
142
|
-
if (typeof crypto !==
|
|
137
|
+
if (typeof crypto !== 'undefined' && crypto.getRandomValues) {
|
|
143
138
|
crypto.getRandomValues(array);
|
|
144
139
|
} else {
|
|
145
140
|
// Fallback for Node.js
|
|
@@ -147,9 +142,7 @@ export class GitHubOAuth {
|
|
|
147
142
|
array[i] = Math.floor(Math.random() * 256);
|
|
148
143
|
}
|
|
149
144
|
}
|
|
150
|
-
return Array.from(array, (byte) => byte.toString(16).padStart(2,
|
|
151
|
-
""
|
|
152
|
-
);
|
|
145
|
+
return Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
153
146
|
}
|
|
154
147
|
}
|
|
155
148
|
|
|
@@ -163,36 +156,31 @@ export function createGitHubOAuth(config: GitHubOAuthConfig): GitHubOAuth {
|
|
|
163
156
|
/**
|
|
164
157
|
* Authenticate with GitHub OAuth device flow (for CLI)
|
|
165
158
|
*/
|
|
166
|
-
export async function authenticateWithDeviceFlow(
|
|
167
|
-
clientId: string
|
|
168
|
-
): Promise<AuthResult> {
|
|
159
|
+
export async function authenticateWithDeviceFlow(clientId: string): Promise<AuthResult> {
|
|
169
160
|
try {
|
|
170
161
|
// Request device code
|
|
171
|
-
const deviceResponse = await fetch(
|
|
172
|
-
|
|
173
|
-
{
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}),
|
|
183
|
-
}
|
|
184
|
-
);
|
|
162
|
+
const deviceResponse = await fetch('https://github.com/login/device/code', {
|
|
163
|
+
method: 'POST',
|
|
164
|
+
headers: {
|
|
165
|
+
'Content-Type': 'application/json',
|
|
166
|
+
Accept: 'application/json',
|
|
167
|
+
},
|
|
168
|
+
body: JSON.stringify({
|
|
169
|
+
client_id: clientId,
|
|
170
|
+
scope: 'read:user user:email',
|
|
171
|
+
}),
|
|
172
|
+
});
|
|
185
173
|
|
|
186
174
|
if (!deviceResponse.ok) {
|
|
187
175
|
throw new Error(`Device flow initiation failed: ${deviceResponse.statusText}`);
|
|
188
176
|
}
|
|
189
177
|
|
|
190
|
-
const deviceData = await deviceResponse.json() as any;
|
|
178
|
+
const deviceData = (await deviceResponse.json()) as any;
|
|
191
179
|
|
|
192
|
-
console.log(
|
|
180
|
+
console.log('\nTo authenticate with GitHub:');
|
|
193
181
|
console.log(`1. Visit: ${deviceData.verification_uri}`);
|
|
194
182
|
console.log(`2. Enter code: ${deviceData.user_code}`);
|
|
195
|
-
console.log(
|
|
183
|
+
console.log('\nWaiting for authentication...\n');
|
|
196
184
|
|
|
197
185
|
// Poll for access token
|
|
198
186
|
const interval = deviceData.interval * 1000 || 5000;
|
|
@@ -201,23 +189,20 @@ export async function authenticateWithDeviceFlow(
|
|
|
201
189
|
while (Date.now() < expiresAt) {
|
|
202
190
|
await new Promise((resolve) => setTimeout(resolve, interval));
|
|
203
191
|
|
|
204
|
-
const tokenResponse = await fetch(
|
|
205
|
-
|
|
206
|
-
{
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
);
|
|
219
|
-
|
|
220
|
-
const tokenData = await tokenResponse.json() as any;
|
|
192
|
+
const tokenResponse = await fetch('https://github.com/login/oauth/access_token', {
|
|
193
|
+
method: 'POST',
|
|
194
|
+
headers: {
|
|
195
|
+
'Content-Type': 'application/json',
|
|
196
|
+
Accept: 'application/json',
|
|
197
|
+
},
|
|
198
|
+
body: JSON.stringify({
|
|
199
|
+
client_id: clientId,
|
|
200
|
+
device_code: deviceData.device_code,
|
|
201
|
+
grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
|
|
202
|
+
}),
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
const tokenData = (await tokenResponse.json()) as any;
|
|
221
206
|
|
|
222
207
|
if (tokenData.access_token) {
|
|
223
208
|
// Get user info
|
|
@@ -231,12 +216,12 @@ export async function authenticateWithDeviceFlow(
|
|
|
231
216
|
};
|
|
232
217
|
}
|
|
233
218
|
|
|
234
|
-
if (tokenData.error && tokenData.error !==
|
|
219
|
+
if (tokenData.error && tokenData.error !== 'authorization_pending') {
|
|
235
220
|
throw new Error(`Authentication failed: ${tokenData.error_description || tokenData.error}`);
|
|
236
221
|
}
|
|
237
222
|
}
|
|
238
223
|
|
|
239
|
-
throw new Error(
|
|
224
|
+
throw new Error('Authentication timeout');
|
|
240
225
|
} catch (error) {
|
|
241
226
|
return {
|
|
242
227
|
success: false,
|
package/src/cloud/billing.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GitHub Sponsors and Marketplace Billing
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Types and utilities for GitHub-based monetization.
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -11,22 +11,22 @@ export enum SubscriptionTier {
|
|
|
11
11
|
/**
|
|
12
12
|
* Free tier - limited usage
|
|
13
13
|
*/
|
|
14
|
-
FREE =
|
|
15
|
-
|
|
14
|
+
FREE = 'free',
|
|
15
|
+
|
|
16
16
|
/**
|
|
17
17
|
* Solo tier - individual developers via GitHub Sponsors
|
|
18
18
|
*/
|
|
19
|
-
SOLO =
|
|
20
|
-
|
|
19
|
+
SOLO = 'solo',
|
|
20
|
+
|
|
21
21
|
/**
|
|
22
22
|
* Team tier - small teams via GitHub Sponsors
|
|
23
23
|
*/
|
|
24
|
-
TEAM =
|
|
25
|
-
|
|
24
|
+
TEAM = 'team',
|
|
25
|
+
|
|
26
26
|
/**
|
|
27
27
|
* Enterprise tier - self-service enterprise via GitHub Sponsors/Marketplace
|
|
28
28
|
*/
|
|
29
|
-
ENTERPRISE =
|
|
29
|
+
ENTERPRISE = 'enterprise',
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
/**
|
|
@@ -36,17 +36,17 @@ export enum BillingProvider {
|
|
|
36
36
|
/**
|
|
37
37
|
* GitHub Sponsors
|
|
38
38
|
*/
|
|
39
|
-
SPONSORS =
|
|
40
|
-
|
|
39
|
+
SPONSORS = 'sponsors',
|
|
40
|
+
|
|
41
41
|
/**
|
|
42
42
|
* GitHub Marketplace (SaaS)
|
|
43
43
|
*/
|
|
44
|
-
MARKETPLACE =
|
|
45
|
-
|
|
44
|
+
MARKETPLACE = 'marketplace',
|
|
45
|
+
|
|
46
46
|
/**
|
|
47
47
|
* Free tier (no billing)
|
|
48
48
|
*/
|
|
49
|
-
NONE =
|
|
49
|
+
NONE = 'none',
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
/**
|
|
@@ -56,22 +56,22 @@ export enum SubscriptionStatus {
|
|
|
56
56
|
/**
|
|
57
57
|
* Active subscription
|
|
58
58
|
*/
|
|
59
|
-
ACTIVE =
|
|
60
|
-
|
|
59
|
+
ACTIVE = 'active',
|
|
60
|
+
|
|
61
61
|
/**
|
|
62
62
|
* Subscription cancelled, but still valid until period end
|
|
63
63
|
*/
|
|
64
|
-
CANCELLED =
|
|
65
|
-
|
|
64
|
+
CANCELLED = 'cancelled',
|
|
65
|
+
|
|
66
66
|
/**
|
|
67
67
|
* Subscription expired or payment failed
|
|
68
68
|
*/
|
|
69
|
-
EXPIRED =
|
|
70
|
-
|
|
69
|
+
EXPIRED = 'expired',
|
|
70
|
+
|
|
71
71
|
/**
|
|
72
72
|
* No subscription
|
|
73
73
|
*/
|
|
74
|
-
NONE =
|
|
74
|
+
NONE = 'none',
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
/**
|
|
@@ -82,26 +82,26 @@ export interface TierLimits {
|
|
|
82
82
|
* Maximum sync operations per month
|
|
83
83
|
*/
|
|
84
84
|
maxSyncsPerMonth: number;
|
|
85
|
-
|
|
85
|
+
|
|
86
86
|
/**
|
|
87
87
|
* Maximum storage in bytes
|
|
88
88
|
*/
|
|
89
89
|
maxStorageBytes: number;
|
|
90
|
-
|
|
90
|
+
|
|
91
91
|
/**
|
|
92
92
|
* Maximum number of team members (null = unlimited)
|
|
93
93
|
*/
|
|
94
94
|
maxTeamMembers: number | null;
|
|
95
|
-
|
|
95
|
+
|
|
96
96
|
/**
|
|
97
97
|
* Maximum number of apps/projects
|
|
98
98
|
*/
|
|
99
99
|
maxApps: number;
|
|
100
|
-
|
|
100
|
+
|
|
101
101
|
/**
|
|
102
102
|
* Support level
|
|
103
103
|
*/
|
|
104
|
-
supportLevel:
|
|
104
|
+
supportLevel: 'community' | 'standard' | 'priority';
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
/**
|
|
@@ -112,42 +112,42 @@ export interface Subscription {
|
|
|
112
112
|
* Subscription tier
|
|
113
113
|
*/
|
|
114
114
|
tier: SubscriptionTier;
|
|
115
|
-
|
|
115
|
+
|
|
116
116
|
/**
|
|
117
117
|
* Subscription status
|
|
118
118
|
*/
|
|
119
119
|
status: SubscriptionStatus;
|
|
120
|
-
|
|
120
|
+
|
|
121
121
|
/**
|
|
122
122
|
* Billing provider
|
|
123
123
|
*/
|
|
124
124
|
provider: BillingProvider;
|
|
125
|
-
|
|
125
|
+
|
|
126
126
|
/**
|
|
127
127
|
* GitHub sponsor tier ID (if applicable)
|
|
128
128
|
*/
|
|
129
129
|
sponsorTierId?: string;
|
|
130
|
-
|
|
130
|
+
|
|
131
131
|
/**
|
|
132
132
|
* GitHub Marketplace plan ID (if applicable)
|
|
133
133
|
*/
|
|
134
134
|
marketplacePlanId?: number;
|
|
135
|
-
|
|
135
|
+
|
|
136
136
|
/**
|
|
137
137
|
* Subscription start date
|
|
138
138
|
*/
|
|
139
139
|
startDate: number;
|
|
140
|
-
|
|
140
|
+
|
|
141
141
|
/**
|
|
142
142
|
* Current period end date
|
|
143
143
|
*/
|
|
144
144
|
periodEnd?: number;
|
|
145
|
-
|
|
145
|
+
|
|
146
146
|
/**
|
|
147
147
|
* Whether subscription auto-renews
|
|
148
148
|
*/
|
|
149
149
|
autoRenew: boolean;
|
|
150
|
-
|
|
150
|
+
|
|
151
151
|
/**
|
|
152
152
|
* Usage limits for this tier
|
|
153
153
|
*/
|
|
@@ -161,23 +161,23 @@ export interface BillingEvent {
|
|
|
161
161
|
/**
|
|
162
162
|
* Event type
|
|
163
163
|
*/
|
|
164
|
-
type:
|
|
165
|
-
|
|
164
|
+
type: 'subscription_created' | 'subscription_cancelled' | 'subscription_renewed' | 'tier_changed';
|
|
165
|
+
|
|
166
166
|
/**
|
|
167
167
|
* Timestamp
|
|
168
168
|
*/
|
|
169
169
|
timestamp: number;
|
|
170
|
-
|
|
170
|
+
|
|
171
171
|
/**
|
|
172
172
|
* User/organization ID
|
|
173
173
|
*/
|
|
174
174
|
userId: number;
|
|
175
|
-
|
|
175
|
+
|
|
176
176
|
/**
|
|
177
177
|
* Old subscription (for changes)
|
|
178
178
|
*/
|
|
179
179
|
oldSubscription?: Subscription;
|
|
180
|
-
|
|
180
|
+
|
|
181
181
|
/**
|
|
182
182
|
* New subscription
|
|
183
183
|
*/
|
|
@@ -193,28 +193,28 @@ export const TIER_LIMITS: Record<SubscriptionTier, TierLimits> = {
|
|
|
193
193
|
maxStorageBytes: 10 * 1024 * 1024, // 10 MB
|
|
194
194
|
maxTeamMembers: 1,
|
|
195
195
|
maxApps: 1,
|
|
196
|
-
supportLevel:
|
|
196
|
+
supportLevel: 'community',
|
|
197
197
|
},
|
|
198
198
|
[SubscriptionTier.SOLO]: {
|
|
199
199
|
maxSyncsPerMonth: 50000,
|
|
200
200
|
maxStorageBytes: 1024 * 1024 * 1024, // 1 GB
|
|
201
201
|
maxTeamMembers: 1,
|
|
202
202
|
maxApps: 10,
|
|
203
|
-
supportLevel:
|
|
203
|
+
supportLevel: 'standard',
|
|
204
204
|
},
|
|
205
205
|
[SubscriptionTier.TEAM]: {
|
|
206
206
|
maxSyncsPerMonth: 500000,
|
|
207
207
|
maxStorageBytes: 10 * 1024 * 1024 * 1024, // 10 GB
|
|
208
208
|
maxTeamMembers: 10,
|
|
209
209
|
maxApps: 50,
|
|
210
|
-
supportLevel:
|
|
210
|
+
supportLevel: 'standard',
|
|
211
211
|
},
|
|
212
212
|
[SubscriptionTier.ENTERPRISE]: {
|
|
213
213
|
maxSyncsPerMonth: 5000000,
|
|
214
214
|
maxStorageBytes: 100 * 1024 * 1024 * 1024, // 100 GB
|
|
215
215
|
maxTeamMembers: null, // unlimited
|
|
216
216
|
maxApps: 1000,
|
|
217
|
-
supportLevel:
|
|
217
|
+
supportLevel: 'priority',
|
|
218
218
|
},
|
|
219
219
|
};
|
|
220
220
|
|
|
@@ -228,17 +228,17 @@ export function hasAccessToTier(
|
|
|
228
228
|
if (subscription.status !== SubscriptionStatus.ACTIVE) {
|
|
229
229
|
return false;
|
|
230
230
|
}
|
|
231
|
-
|
|
231
|
+
|
|
232
232
|
const tierOrder = [
|
|
233
233
|
SubscriptionTier.FREE,
|
|
234
234
|
SubscriptionTier.SOLO,
|
|
235
235
|
SubscriptionTier.TEAM,
|
|
236
236
|
SubscriptionTier.ENTERPRISE,
|
|
237
237
|
];
|
|
238
|
-
|
|
238
|
+
|
|
239
239
|
const currentTierIndex = tierOrder.indexOf(subscription.tier);
|
|
240
240
|
const requiredTierIndex = tierOrder.indexOf(requiredTier);
|
|
241
|
-
|
|
241
|
+
|
|
242
242
|
return currentTierIndex >= requiredTierIndex;
|
|
243
243
|
}
|
|
244
244
|
|
|
@@ -258,19 +258,19 @@ export function checkUsageLimits(
|
|
|
258
258
|
violations: string[];
|
|
259
259
|
} {
|
|
260
260
|
const violations: string[] = [];
|
|
261
|
-
|
|
261
|
+
|
|
262
262
|
if (usage.syncCount > subscription.limits.maxSyncsPerMonth) {
|
|
263
263
|
violations.push(
|
|
264
264
|
`Sync limit exceeded: ${usage.syncCount}/${subscription.limits.maxSyncsPerMonth}`
|
|
265
265
|
);
|
|
266
266
|
}
|
|
267
|
-
|
|
267
|
+
|
|
268
268
|
if (usage.storageBytes > subscription.limits.maxStorageBytes) {
|
|
269
269
|
violations.push(
|
|
270
270
|
`Storage limit exceeded: ${(usage.storageBytes / 1024 / 1024).toFixed(2)}MB/${(subscription.limits.maxStorageBytes / 1024 / 1024).toFixed(2)}MB`
|
|
271
271
|
);
|
|
272
272
|
}
|
|
273
|
-
|
|
273
|
+
|
|
274
274
|
if (
|
|
275
275
|
subscription.limits.maxTeamMembers !== null &&
|
|
276
276
|
usage.teamMembers > subscription.limits.maxTeamMembers
|
|
@@ -279,13 +279,11 @@ export function checkUsageLimits(
|
|
|
279
279
|
`Team member limit exceeded: ${usage.teamMembers}/${subscription.limits.maxTeamMembers}`
|
|
280
280
|
);
|
|
281
281
|
}
|
|
282
|
-
|
|
282
|
+
|
|
283
283
|
if (usage.appCount > subscription.limits.maxApps) {
|
|
284
|
-
violations.push(
|
|
285
|
-
`App limit exceeded: ${usage.appCount}/${subscription.limits.maxApps}`
|
|
286
|
-
);
|
|
284
|
+
violations.push(`App limit exceeded: ${usage.appCount}/${subscription.limits.maxApps}`);
|
|
287
285
|
}
|
|
288
|
-
|
|
286
|
+
|
|
289
287
|
return {
|
|
290
288
|
withinLimits: violations.length === 0,
|
|
291
289
|
violations,
|
|
@@ -314,16 +312,19 @@ export function createSponsorSubscription(
|
|
|
314
312
|
monthlyPriceInCents: number
|
|
315
313
|
): Subscription {
|
|
316
314
|
let tier = SubscriptionTier.FREE;
|
|
317
|
-
|
|
315
|
+
|
|
318
316
|
// Map price to tier (example pricing)
|
|
319
|
-
if (monthlyPriceInCents >= 5000) {
|
|
317
|
+
if (monthlyPriceInCents >= 5000) {
|
|
318
|
+
// $50/month
|
|
320
319
|
tier = SubscriptionTier.ENTERPRISE;
|
|
321
|
-
} else if (monthlyPriceInCents >= 2000) {
|
|
320
|
+
} else if (monthlyPriceInCents >= 2000) {
|
|
321
|
+
// $20/month
|
|
322
322
|
tier = SubscriptionTier.TEAM;
|
|
323
|
-
} else if (monthlyPriceInCents >= 500) {
|
|
323
|
+
} else if (monthlyPriceInCents >= 500) {
|
|
324
|
+
// $5/month
|
|
324
325
|
tier = SubscriptionTier.SOLO;
|
|
325
326
|
}
|
|
326
|
-
|
|
327
|
+
|
|
327
328
|
return {
|
|
328
329
|
tier,
|
|
329
330
|
status: SubscriptionStatus.ACTIVE,
|