@voltro/cli 0.53.0 → 0.54.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/CHANGELOG.md +195 -0
- package/dist/{agentsMd-0l980yhL.js → agentsMd-BaLC10Na.js} +110 -82
- package/dist/agentsMd-DCY1RSs8.js +2 -0
- package/dist/apiBuild-CeUN55uk.js +2 -0
- package/dist/{apiBuild-CaPfoWku.js → apiBuild-DTWp0S_q.js} +2 -2
- package/dist/bin.js +1 -1
- package/dist/{build-D-OnvNMf.js → build-D4ygSbnV.js} +114 -114
- package/dist/{checkCommand-C5elt0tW.js → checkCommand-Dg1G7Gwd.js} +6 -6
- package/dist/{checkCommand-D2ZduVlh.js → checkCommand-L7DTlpIF.js} +1 -1
- package/dist/{cloudCmd-QUXh-b5w.js → cloudCmd-DzKcSYuy.js} +1 -1
- package/dist/{codegen-FEk8AZHb.js → codegen-DSLM8Su9.js} +2 -2
- package/dist/codegen-DjgxEOnD.js +2 -0
- package/dist/codegenCommand-CG_Vx4lc.js +41 -0
- package/dist/{codemodRunner-BjtB2lq6.js → codemodRunner-Cd4xkC6u.js} +9 -9
- package/dist/{commands-DyxAmhP0.js → commands-6Kzi92Np.js} +96 -73
- package/dist/{dashboardCommand-BdKTyT13.js → dashboardCommand-Cq1PWvI1.js} +3 -3
- package/dist/{dataCommand-Bab9X7s8.js → dataCommand-DYzW8vkv.js} +3 -3
- package/dist/{dbCommand-06O2finM.js → dbCommand-B4NWZtGL.js} +3 -3
- package/dist/dbCommand-CSFWs9ev.js +2 -0
- package/dist/{dev-C6LGF4iY.js → dev-CmuvUKRq.js} +2236 -2219
- package/dist/{dev-GjJWAYo2.js → dev-cKUiZZsB.js} +1 -1
- package/dist/{doctorCommand-etMkflRc.js → doctorCommand-DCiFVMtZ.js} +21 -21
- package/dist/doctorCommand-J3qu4E0Y.js +2 -0
- package/dist/{dormancyCommand-UwZ1AZzB.js → dormancyCommand-w1TrmgYP.js} +1 -1
- package/dist/{embeddingsCommand-C70zWHwo.js → embeddingsCommand-CMgPyRTr.js} +1 -1
- package/dist/{envCommand-dSyKvRkM.js → envCommand-Cyynmcfa.js} +15 -15
- package/dist/{evolveCommand-CG0_ebO5.js → evolveCommand-BwvQ8dVH.js} +2 -2
- package/dist/fileConventions-l-RIXbx8.js +36 -0
- package/dist/{fileTaxonomy-B7uxipWS.js → fileTaxonomy-CbyMQYx_.js} +37 -37
- package/dist/{frameworkTableAssembly-DKx3ba3S.js → frameworkTableAssembly-D7LJuALW.js} +5 -5
- package/dist/frameworkTableAssembly-IPD1pUnZ.js +2 -0
- package/dist/index.js +2 -2
- package/dist/{infoCommand-_53iOc_j.js → infoCommand-DlYlUPqs.js} +1 -1
- package/dist/{metaCommands-Cn2oboG4.js → metaCommands-x7RCi2AF.js} +2 -2
- package/dist/{migrate-Cko9rswM.js → migrate-BK_Bbx-_.js} +2 -2
- package/dist/mobileCommand-D9O6iq3D.js +428 -0
- package/dist/mobileCommand-DAum7tsG.js +2 -0
- package/dist/{pageConvention-C938S8oC.js → pageConvention-CMpfDN6r.js} +1 -1
- package/dist/{privacyCommand-DWTQMC6R.js → privacyCommand-BCa2OoZG.js} +2 -2
- package/dist/{probeCommand-DkGGLknv.js → probeCommand-_C0YU207.js} +1 -1
- package/dist/{projectScaffold-EzlErR4E.js → projectScaffold-CJfP-xbT.js} +1 -1
- package/dist/{projectScaffold-B4dmTlwT.js → projectScaffold-CSN0OzBV.js} +2 -2
- package/dist/renderModeScan-43yQ2opo.js +147 -0
- package/dist/{renderProfile-CskIgAfn.js → renderProfile-DvrhVJHa.js} +2 -2
- package/dist/{runtimeTrace-c0APJz7E.js → runtimeTrace-CGWx1Q6l.js} +1 -1
- package/dist/{sdkgen-BiQCgIEr.js → sdkgen-CDGHQUFj.js} +1 -1
- package/dist/serveCommand-BiPe8BJm.js +2 -0
- package/dist/{serveCommand-CueKQgzl.js → serveCommand-Bje09q1v.js} +708 -708
- package/dist/serveEntry.js +1 -1
- package/dist/start-B0bnJgxI.js +3 -0
- package/dist/{start-ekPan8BT.js → start-Clz-1BHB.js} +511 -504
- package/dist/startEntry.js +1 -1
- package/dist/{staticCommand-xlSL-IWk.js → staticCommand-ey0kYmOT.js} +1 -1
- package/dist/{subcommandNames-DpYs3DXr.js → subcommandNames-CDzfEtKV.js} +3 -3
- package/dist/{templates-BR-fb4SP.js → templates-BTWZkJJT.js} +41 -9
- package/dist/{test-BWPQcRoB.js → test-D_kW4KMj.js} +1 -1
- package/dist/updateCommand-CIoVDKnj.js +2 -0
- package/dist/{updateCommand-C_8I8Rzo.js → updateCommand-CRJlAOaM.js} +1 -1
- package/dist/{webDev-oczpugbx.js → webDev-DSI9SOhs.js} +1127 -1090
- package/dist/{webDev-C7jWJ5dX.js → webDev-DlvZO30c.js} +1 -1
- package/dist/{webhooksCommand-4SVPDjKg.js → webhooksCommand-BvzXNHji.js} +1 -1
- package/dist/workspaceDeps-RKEkX92S.js +45 -0
- package/package.json +19 -19
- package/templates/AGENTS.core.md +2 -0
- package/templates/AGENTS.md +4 -2
- package/templates/agent-docs/_index.md +2 -2
- package/templates/agent-docs/_manifest.json +1 -1
- package/templates/agent-docs/ai.md +4 -4
- package/templates/agent-docs/authentication.md +72 -0
- package/templates/agent-docs/cli.md +4 -1
- package/templates/agent-docs/data.md +61 -12
- package/templates/agent-docs/database/advancedqueries.md +1 -1
- package/templates/agent-docs/database/migrations.md +1 -1
- package/templates/agent-docs/database/seedsdialects.md +64 -2
- package/templates/agent-docs/internationalization.md +2 -0
- package/templates/agent-docs/introduction.md +25 -0
- package/templates/agent-docs/local-first-mobile.md +139 -41
- package/templates/agent-docs/observability.md +4 -2
- package/templates/agent-docs/plugins/atlassian.md +2 -2
- package/templates/agent-docs/plugins/audit.md +2 -2
- package/templates/agent-docs/plugins/billing.md +1 -1
- package/templates/agent-docs/plugins/cdc-out.md +8 -3
- package/templates/agent-docs/plugins/comments.md +22 -0
- package/templates/agent-docs/plugins/presence.md +32 -3
- package/templates/agent-docs/plugins/prometheus.md +2 -0
- package/templates/agent-docs/plugins/queue.md +47 -4
- package/templates/agent-docs/plugins.md +6 -6
- package/templates/agent-docs/reference.md +20 -1
- package/templates/agent-docs/routing.md +63 -9
- package/templates/agent-docs/scheduling.md +1 -1
- package/templates/agent-docs/schema-driven-ui.md +12 -1
- package/templates/agent-docs/templates/appshells.md +36 -4
- package/templates/agent-docs/whats-new.md +109 -135
- package/templates/apps/api-ai/package.json +6 -6
- package/templates/apps/api-auth/package.json +8 -8
- package/templates/apps/api-backend/package.json +7 -7
- package/templates/apps/api-backend-deactivation/package.json +7 -7
- package/templates/apps/api-backend-mail/package.json +8 -8
- package/templates/apps/api-backend-mariadb/package.json +9 -9
- package/templates/apps/api-backend-sqlite/package.json +8 -8
- package/templates/apps/api-backend-storage/package.json +8 -8
- package/templates/apps/api-cms/package.json +9 -9
- package/templates/apps/api-collab/README.md +3 -3
- package/templates/apps/api-collab/app.config.ts +1 -1
- package/templates/apps/api-collab/database/schema.ts +12 -8
- package/templates/apps/api-collab/mutations/documents.create.mutation.server.ts +1 -1
- package/templates/apps/api-collab/mutations/documents.setBody.mutation.server.ts +1 -1
- package/templates/apps/api-collab/mutations/documents.setBody.mutation.ts +1 -1
- package/templates/apps/api-collab/package.json +8 -8
- package/templates/apps/api-collab/template.json +1 -1
- package/templates/apps/api-collab/tests/documents.setBody.test.ts +10 -2
- package/templates/apps/api-data-advanced/package.json +8 -8
- package/templates/apps/api-durable/package.json +8 -8
- package/templates/apps/api-feature-flags/package.json +9 -9
- package/templates/apps/api-governance/package.json +8 -8
- package/templates/apps/api-kv/package.json +8 -8
- package/templates/apps/api-moderation/package.json +8 -8
- package/templates/apps/api-observability/package.json +8 -8
- package/templates/apps/api-ratelimit/package.json +8 -8
- package/templates/apps/api-rbac/package.json +8 -8
- package/templates/apps/api-rest/package.json +7 -7
- package/templates/apps/api-row-history/package.json +8 -8
- package/templates/apps/api-saas/package.json +11 -10
- package/templates/apps/api-saas-starter/package.json +10 -10
- package/templates/apps/api-search/package.json +8 -8
- package/templates/apps/api-status/package.json +8 -8
- package/templates/apps/api-webhooks/package.json +9 -9
- package/templates/apps/changelog/package.json +7 -6
- package/templates/apps/edge-functions/package.json +2 -2
- package/templates/apps/frontend-admin/package.json +8 -8
- package/templates/apps/frontend-app/package.json +9 -9
- package/templates/apps/frontend-auth/package.json +8 -8
- package/templates/apps/frontend-blank/package.json +7 -7
- package/templates/apps/frontend-cms/package.json +9 -9
- package/templates/apps/frontend-collab/README.md +43 -24
- package/templates/apps/frontend-collab/app.config.ts +3 -3
- package/templates/apps/frontend-collab/package.json +14 -10
- package/templates/apps/frontend-collab/src/locales/de.ts +1 -2
- package/templates/apps/frontend-collab/src/locales/en.ts +1 -2
- package/templates/apps/frontend-collab/src/pages/page.test.tsx +72 -76
- package/templates/apps/frontend-collab/src/pages/page.tsx +45 -22
- package/templates/apps/frontend-collab/template.json +2 -2
- package/templates/apps/frontend-contact/package.json +7 -7
- package/templates/apps/frontend-dashboard/package.json +7 -7
- package/templates/apps/frontend-docs/package.json +8 -7
- package/templates/apps/frontend-i18n/package.json +6 -6
- package/templates/apps/frontend-landing/README.md +48 -0
- package/templates/apps/frontend-landing/app.config.ts +28 -0
- package/templates/apps/frontend-landing/package.json +7 -6
- package/templates/apps/frontend-landing/src/assets/hero.jpg +0 -0
- package/templates/apps/frontend-landing/src/fonts/Geist-Variable.woff2 +0 -0
- package/templates/apps/frontend-landing/src/fonts/LICENSE-Geist.txt +92 -0
- package/templates/apps/frontend-landing/src/globals.css +15 -0
- package/templates/apps/frontend-landing/src/globals.d.ts +17 -0
- package/templates/apps/frontend-landing/src/locales/de.ts +3 -2
- package/templates/apps/frontend-landing/src/locales/en.ts +5 -2
- package/templates/apps/frontend-landing/src/pages/page.test.tsx +79 -0
- package/templates/apps/frontend-landing/src/pages/page.tsx +26 -3
- package/templates/apps/frontend-landing/template.json +2 -2
- package/templates/apps/frontend-portal/package.json +8 -8
- package/templates/apps/frontend-saas/package.json +8 -8
- package/templates/apps/frontend-spa/package.json +7 -7
- package/templates/apps/frontend-ssr/package.json +7 -7
- package/templates/apps/frontend-ssr-api/package.json +8 -8
- package/templates/apps/frontend-static-blog/package.json +8 -7
- package/templates/apps/frontend-status/package.json +8 -8
- package/templates/apps/mobile-app/package.json +12 -11
- package/templates/apps/mobile-app/src/lib/deeplinks.ts +29 -17
- package/templates/apps/mobile-app/tests/deeplinks.test.ts +16 -0
- package/dist/agentsMd-SDDSkyl4.js +0 -2
- package/dist/apiBuild-DHtLXYx9.js +0 -2
- package/dist/codegen-BWpt3VgF.js +0 -2
- package/dist/codegenCommand-BOiWQ5hz.js +0 -137
- package/dist/dbCommand-B1EXBC6f.js +0 -2
- package/dist/doctorCommand-B0hX0tdz.js +0 -2
- package/dist/fileConventions-DASGEmj-.js +0 -35
- package/dist/frameworkTableAssembly-C_7Z-rMs.js +0 -2
- package/dist/renderModeScan-CUbOeOAg.js +0 -122
- package/dist/serveCommand-DsnrVN3U.js +0 -2
- package/dist/start-BJzZLbt8.js +0 -3
- package/dist/updateCommand-Bqql_rsQ.js +0 -2
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.97.0",
|
|
14
14
|
"@effect/rpc": "^0.76.0",
|
|
15
|
-
"@voltro/ai": "0.
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/database": "0.
|
|
18
|
-
"@voltro/env": "0.
|
|
19
|
-
"@voltro/protocol": "0.
|
|
20
|
-
"@voltro/runtime": "0.
|
|
15
|
+
"@voltro/ai": "0.54.0",
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/database": "0.54.0",
|
|
18
|
+
"@voltro/env": "0.54.0",
|
|
19
|
+
"@voltro/protocol": "0.54.0",
|
|
20
|
+
"@voltro/runtime": "0.54.0",
|
|
21
21
|
"effect": "^3.22.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
@@ -13,17 +13,17 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@effect/platform": "^0.97.0",
|
|
15
15
|
"@effect/rpc": "^0.76.0",
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/database": "0.
|
|
18
|
-
"@voltro/env": "0.
|
|
19
|
-
"@voltro/plugin-auth": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
22
|
-
"@voltro/sql-postgres": "0.
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/database": "0.54.0",
|
|
18
|
+
"@voltro/env": "0.54.0",
|
|
19
|
+
"@voltro/plugin-auth": "0.54.0",
|
|
20
|
+
"@voltro/protocol": "0.54.0",
|
|
21
|
+
"@voltro/runtime": "0.54.0",
|
|
22
|
+
"@voltro/sql-postgres": "0.54.0",
|
|
23
23
|
"effect": "^3.22.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.
|
|
26
|
+
"@voltro/testing": "0.54.0",
|
|
27
27
|
"typescript": "^6.0.3",
|
|
28
28
|
"@vitest/coverage-v8": "^4.1.10",
|
|
29
29
|
"vitest": "^4.1.10"
|
|
@@ -16,16 +16,16 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@effect/platform": "^0.97.0",
|
|
18
18
|
"@effect/rpc": "^0.76.0",
|
|
19
|
-
"@voltro/cli": "0.
|
|
20
|
-
"@voltro/database": "0.
|
|
21
|
-
"@voltro/env": "0.
|
|
22
|
-
"@voltro/plugin-multitenancy": "0.
|
|
23
|
-
"@voltro/protocol": "0.
|
|
24
|
-
"@voltro/runtime": "0.
|
|
19
|
+
"@voltro/cli": "0.54.0",
|
|
20
|
+
"@voltro/database": "0.54.0",
|
|
21
|
+
"@voltro/env": "0.54.0",
|
|
22
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
23
|
+
"@voltro/protocol": "0.54.0",
|
|
24
|
+
"@voltro/runtime": "0.54.0",
|
|
25
25
|
"effect": "^3.22.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@voltro/testing": "0.
|
|
28
|
+
"@voltro/testing": "0.54.0",
|
|
29
29
|
"typescript": "^6.0.3",
|
|
30
30
|
"@vitest/coverage-v8": "^4.1.10",
|
|
31
31
|
"vitest": "^4.1.10"
|
|
@@ -13,16 +13,16 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@effect/platform": "^0.97.0",
|
|
15
15
|
"@effect/rpc": "^0.76.0",
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/database": "0.
|
|
18
|
-
"@voltro/env": "0.
|
|
19
|
-
"@voltro/plugin-deactivation": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/database": "0.54.0",
|
|
18
|
+
"@voltro/env": "0.54.0",
|
|
19
|
+
"@voltro/plugin-deactivation": "0.54.0",
|
|
20
|
+
"@voltro/protocol": "0.54.0",
|
|
21
|
+
"@voltro/runtime": "0.54.0",
|
|
22
22
|
"effect": "^3.22.0"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.
|
|
25
|
+
"@voltro/testing": "0.54.0",
|
|
26
26
|
"typescript": "^6.0.3",
|
|
27
27
|
"@vitest/coverage-v8": "^4.1.10",
|
|
28
28
|
"vitest": "^4.1.10"
|
|
@@ -13,18 +13,18 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@react-email/components": "^1.0.12",
|
|
15
15
|
"@react-email/render": "^1.4.0",
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/database": "0.
|
|
18
|
-
"@voltro/env": "0.
|
|
19
|
-
"@voltro/plugin-mail": "0.
|
|
20
|
-
"@voltro/plugin-multitenancy": "0.
|
|
21
|
-
"@voltro/protocol": "0.
|
|
22
|
-
"@voltro/runtime": "0.
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/database": "0.54.0",
|
|
18
|
+
"@voltro/env": "0.54.0",
|
|
19
|
+
"@voltro/plugin-mail": "0.54.0",
|
|
20
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
21
|
+
"@voltro/protocol": "0.54.0",
|
|
22
|
+
"@voltro/runtime": "0.54.0",
|
|
23
23
|
"effect": "^3.22.0",
|
|
24
24
|
"react": "^19.0.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@voltro/testing": "0.
|
|
27
|
+
"@voltro/testing": "0.54.0",
|
|
28
28
|
"typescript": "^6.0.3",
|
|
29
29
|
"@vitest/coverage-v8": "^4.1.10",
|
|
30
30
|
"vitest": "^4.1.10"
|
|
@@ -13,18 +13,18 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@effect/platform": "^0.97.0",
|
|
15
15
|
"@effect/rpc": "^0.76.0",
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/database": "0.
|
|
18
|
-
"@voltro/env": "0.
|
|
19
|
-
"@voltro/plugin-multitenancy": "0.
|
|
20
|
-
"@voltro/plugin-storage": "0.
|
|
21
|
-
"@voltro/protocol": "0.
|
|
22
|
-
"@voltro/runtime": "0.
|
|
23
|
-
"@voltro/sql-mysql": "0.
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/database": "0.54.0",
|
|
18
|
+
"@voltro/env": "0.54.0",
|
|
19
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
20
|
+
"@voltro/plugin-storage": "0.54.0",
|
|
21
|
+
"@voltro/protocol": "0.54.0",
|
|
22
|
+
"@voltro/runtime": "0.54.0",
|
|
23
|
+
"@voltro/sql-mysql": "0.54.0",
|
|
24
24
|
"effect": "^3.22.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@voltro/testing": "0.
|
|
27
|
+
"@voltro/testing": "0.54.0",
|
|
28
28
|
"typescript": "^6.0.3",
|
|
29
29
|
"@vitest/coverage-v8": "^4.1.10",
|
|
30
30
|
"vitest": "^4.1.10"
|
|
@@ -13,17 +13,17 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@effect/platform": "^0.97.0",
|
|
15
15
|
"@effect/rpc": "^0.76.0",
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/database": "0.
|
|
18
|
-
"@voltro/env": "0.
|
|
19
|
-
"@voltro/plugin-multitenancy": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
22
|
-
"@voltro/sql-sqlite": "0.
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/database": "0.54.0",
|
|
18
|
+
"@voltro/env": "0.54.0",
|
|
19
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
20
|
+
"@voltro/protocol": "0.54.0",
|
|
21
|
+
"@voltro/runtime": "0.54.0",
|
|
22
|
+
"@voltro/sql-sqlite": "0.54.0",
|
|
23
23
|
"effect": "^3.22.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.
|
|
26
|
+
"@voltro/testing": "0.54.0",
|
|
27
27
|
"typescript": "^6.0.3",
|
|
28
28
|
"@vitest/coverage-v8": "^4.1.10",
|
|
29
29
|
"vitest": "^4.1.10"
|
|
@@ -11,17 +11,17 @@
|
|
|
11
11
|
"test": "voltro test"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@voltro/cli": "0.
|
|
15
|
-
"@voltro/database": "0.
|
|
16
|
-
"@voltro/env": "0.
|
|
17
|
-
"@voltro/plugin-multitenancy": "0.
|
|
18
|
-
"@voltro/plugin-storage": "0.
|
|
19
|
-
"@voltro/protocol": "0.
|
|
20
|
-
"@voltro/runtime": "0.
|
|
14
|
+
"@voltro/cli": "0.54.0",
|
|
15
|
+
"@voltro/database": "0.54.0",
|
|
16
|
+
"@voltro/env": "0.54.0",
|
|
17
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
18
|
+
"@voltro/plugin-storage": "0.54.0",
|
|
19
|
+
"@voltro/protocol": "0.54.0",
|
|
20
|
+
"@voltro/runtime": "0.54.0",
|
|
21
21
|
"effect": "^3.22.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@voltro/testing": "0.
|
|
24
|
+
"@voltro/testing": "0.54.0",
|
|
25
25
|
"typescript": "^6.0.3",
|
|
26
26
|
"@vitest/coverage-v8": "^4.1.10",
|
|
27
27
|
"vitest": "^4.1.10"
|
|
@@ -13,18 +13,18 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@effect/platform": "^0.97.0",
|
|
15
15
|
"@effect/rpc": "^0.76.0",
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/cms": "0.
|
|
18
|
-
"@voltro/database": "0.
|
|
19
|
-
"@voltro/env": "0.
|
|
20
|
-
"@voltro/plugin-auth": "0.
|
|
21
|
-
"@voltro/protocol": "0.
|
|
22
|
-
"@voltro/runtime": "0.
|
|
23
|
-
"@voltro/sql-postgres": "0.
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/cms": "0.54.0",
|
|
18
|
+
"@voltro/database": "0.54.0",
|
|
19
|
+
"@voltro/env": "0.54.0",
|
|
20
|
+
"@voltro/plugin-auth": "0.54.0",
|
|
21
|
+
"@voltro/protocol": "0.54.0",
|
|
22
|
+
"@voltro/runtime": "0.54.0",
|
|
23
|
+
"@voltro/sql-postgres": "0.54.0",
|
|
24
24
|
"effect": "^3.22.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@voltro/testing": "0.
|
|
27
|
+
"@voltro/testing": "0.54.0",
|
|
28
28
|
"typescript": "^6.0.3",
|
|
29
29
|
"@vitest/coverage-v8": "^4.1.10",
|
|
30
30
|
"vitest": "^4.1.10"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Voltro collaborative-editing backend (template: **api-collab**).
|
|
4
4
|
|
|
5
|
-
Real-time **convergent** editing on a `
|
|
5
|
+
Real-time **convergent** editing on a `crdtDoc()` column — concurrent edits
|
|
6
6
|
from many clients merge without a last-write-wins loser, authoritatively on the
|
|
7
7
|
server, then broadcast over the reactive engine. Zero infra (`store: 'memory'`):
|
|
8
8
|
the merge and the broadcast are both in-process, so two browser tabs pointed at
|
|
@@ -32,7 +32,7 @@ voltro create-project collab --api=api-collab --web=frontend-collab
|
|
|
32
32
|
| File | Role |
|
|
33
33
|
|---|---|
|
|
34
34
|
| `app.config.ts` | App declaration (`store: 'memory'`). |
|
|
35
|
-
| `database/schema.ts` | `documents` table — a `
|
|
35
|
+
| `database/schema.ts` | `documents` table — a `crdtDoc()` `body`, plus `tenant()` + `localFirst()`. |
|
|
36
36
|
| `mutations/documents.create.mutation.ts` | Create a document (title only; `body` starts empty). |
|
|
37
37
|
| `mutations/documents.setBody.mutation.ts` | The CRDT write — a client's encoded update; the runtime merges it. |
|
|
38
38
|
| `queries/documents.query.ts` | `documents.list` streaming subscription. |
|
|
@@ -40,7 +40,7 @@ voltro create-project collab --api=api-collab --web=frontend-collab
|
|
|
40
40
|
|
|
41
41
|
## How the CRDT merge works
|
|
42
42
|
|
|
43
|
-
`body:
|
|
43
|
+
`body: crdtDoc()` stores the encoded CRDT state as an opaque `bytes` blob. A
|
|
44
44
|
client edits its LOCAL handle and sends the encoded update to
|
|
45
45
|
`documents.setBody`. The handler writes it like any column — but because `body`
|
|
46
46
|
is CRDT-managed, the runtime's MutationStore intercepts the write, reads the
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Collaborative-editing backend for the {{projectName}} project. Read by `voltro dev`.
|
|
2
2
|
//
|
|
3
3
|
// This is the LOCAL-FIRST / CRDT template — it exposes a `documents` table
|
|
4
|
-
// whose `body` is a `
|
|
4
|
+
// whose `body` is a `crdtDoc()` column. When two clients edit the same body
|
|
5
5
|
// concurrently, the runtime folds each incoming update into the stored state
|
|
6
6
|
// with an authoritative SERVER-SIDE CRDT merge (on the write path, before the
|
|
7
7
|
// row is written) so their edits CONVERGE — no last-write-wins loser — and the
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// `audit()` / `tenant()` mixins reference, so they must be declared.
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
-
|
|
9
|
+
crdtDoc,
|
|
10
10
|
databaseHandle,
|
|
11
11
|
id,
|
|
12
12
|
localFirst,
|
|
@@ -34,10 +34,14 @@ export const tenants = table('tenants', {
|
|
|
34
34
|
|
|
35
35
|
// ---------- The collaborative document ----------
|
|
36
36
|
|
|
37
|
-
// `body` is a `
|
|
38
|
-
// CRDT state (an opaque `bytes` blob;
|
|
39
|
-
// There is no special DDL: to the
|
|
40
|
-
// `bytes` column, so it plans +
|
|
37
|
+
// `body` is a `crdtDoc()` column — a CRDT-managed WHOLE DOCUMENT (rich text,
|
|
38
|
+
// nested maps/arrays) stored as the encoded CRDT state (an opaque `bytes` blob;
|
|
39
|
+
// BYTEA / BLOB / VARBINARY per dialect). There is no special DDL: to the
|
|
40
|
+
// declarative differ it is an ordinary nullable `bytes` column, so it plans +
|
|
41
|
+
// round-trips like any other. `crdtText()` is the single-field specialisation
|
|
42
|
+
// over the same storage and the same server merge — the column definition is
|
|
43
|
+
// byte-identical, so the choice is about which client binding you want
|
|
44
|
+
// (`useCrdtDoc` + an editor, or `useCrdtText` + a plain field).
|
|
41
45
|
//
|
|
42
46
|
// The convergence guarantee is AUTHORITATIVE and SERVER-SIDE: when a client
|
|
43
47
|
// writes an encoded update to `body`, the runtime folds it into the STORED
|
|
@@ -46,12 +50,12 @@ export const tenants = table('tenants', {
|
|
|
46
50
|
// both survive, regardless of the order the server processes them.
|
|
47
51
|
//
|
|
48
52
|
// `localFirst()` marks the table local-first (client mirror + bi-directional
|
|
49
|
-
// sync + CRDT convergence for its
|
|
50
|
-
//
|
|
53
|
+
// sync + CRDT convergence for its CRDT fields). It adds no column — it is a
|
|
54
|
+
// property the framework reflects on (`isLocalFirst` / `hasLocalFirst`).
|
|
51
55
|
export const documents = table('documents', {
|
|
52
56
|
id: id({ prefix: 'doc' }),
|
|
53
57
|
title: text(),
|
|
54
|
-
body:
|
|
58
|
+
body: crdtDoc(), // CRDT-managed — Uint8Array | null; the web app binds it with useCrdtDoc
|
|
55
59
|
})
|
|
56
60
|
// tenant() pulls audit() transitively → adds tenantId + createdAt /
|
|
57
61
|
// updatedAt / createdBy / updatedBy (auto-stamped by the runtime), and
|
|
@@ -7,7 +7,7 @@ const execute = async (
|
|
|
7
7
|
) => {
|
|
8
8
|
assertOwnTenant(input.tenantId, ctx.request.subject)
|
|
9
9
|
// Framework auto-injects a `doc_…` id from the table's id() decl. `body` is
|
|
10
|
-
// omitted — a `
|
|
10
|
+
// omitted — a `crdtDoc()` column is nullable and the first setBody write
|
|
11
11
|
// establishes the document.
|
|
12
12
|
return ctx.store.insert('documents', {
|
|
13
13
|
title: input.title,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AppContext } from '@voltro/runtime'
|
|
2
2
|
|
|
3
3
|
// Write the incoming CRDT update to the `body` column. The handler looks like a
|
|
4
|
-
// plain overwrite — but `body` is a `
|
|
4
|
+
// plain overwrite — but `body` is a `crdtDoc()` column, so the runtime's
|
|
5
5
|
// MutationStore intercepts the write: it reads the STORED state and folds the
|
|
6
6
|
// incoming update in with `mergeCrdtStates` (from @voltro/local-first) BEFORE
|
|
7
7
|
// persisting. That authoritative server merge is what makes concurrent edits
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// The CRDT write. A client produces an encoded update from its local
|
|
2
|
-
//
|
|
2
|
+
// CRDT document handle (`handle.encode()`) and sends it here. The server does
|
|
3
3
|
// NOT overwrite `body` with it — the runtime folds the incoming update into the
|
|
4
4
|
// STORED state with `mergeCrdtStates` on the write path (see the `.server.ts`
|
|
5
5
|
// comment), so two clients that edited the same base CONVERGE. `update` is the
|
|
@@ -13,17 +13,17 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@effect/platform": "^0.97.0",
|
|
15
15
|
"@effect/rpc": "^0.76.0",
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/database": "0.
|
|
18
|
-
"@voltro/env": "0.
|
|
19
|
-
"@voltro/local-first": "0.
|
|
20
|
-
"@voltro/plugin-multitenancy": "0.
|
|
21
|
-
"@voltro/protocol": "0.
|
|
22
|
-
"@voltro/runtime": "0.
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/database": "0.54.0",
|
|
18
|
+
"@voltro/env": "0.54.0",
|
|
19
|
+
"@voltro/local-first": "0.54.0",
|
|
20
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
21
|
+
"@voltro/protocol": "0.54.0",
|
|
22
|
+
"@voltro/runtime": "0.54.0",
|
|
23
23
|
"effect": "^3.22.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.
|
|
26
|
+
"@voltro/testing": "0.54.0",
|
|
27
27
|
"typescript": "^6.0.3",
|
|
28
28
|
"@vitest/coverage-v8": "^4.1.10",
|
|
29
29
|
"vitest": "^4.1.10"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "api-collab",
|
|
3
3
|
"kind": "api",
|
|
4
|
-
"summary": "Real-time collaborative editing — a `documents` table whose `body` is a `
|
|
4
|
+
"summary": "Real-time collaborative editing — a `documents` table whose `body` is a `crdtDoc()` column. Concurrent edits from many clients CONVERGE via the runtime's authoritative server-side CRDT merge on the write path (no last-write-wins loser), then broadcast over the reactive engine. Zero infra (`store: 'memory'`). Pairs with frontend-collab: scaffold both with `create-project --api=api-collab --web=frontend-collab`.",
|
|
5
5
|
"tags": ["api", "backend", "local-first", "crdt", "collaborative", "realtime", "reactive", "subscription", "mutation", "frontend-collab"]
|
|
6
6
|
}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
-
// The property that matters for a `
|
|
1
|
+
// The property that matters for a `crdtDoc()` column is CONVERGENCE: two
|
|
2
2
|
// clients that edit the same document body concurrently must end at the same
|
|
3
|
-
//
|
|
3
|
+
// state, no matter which write the server processes first, with BOTH edits
|
|
4
4
|
// surviving (no last-write-wins loser).
|
|
5
5
|
//
|
|
6
|
+
// The updates below are produced with `crdtText()` handles rather than a whole
|
|
7
|
+
// editor document, deliberately: the write-path fold is BYTE-level and knows
|
|
8
|
+
// nothing about which fields a document holds, so a text handle is the smallest
|
|
9
|
+
// honest producer of real encoded updates — and `decodeCrdtText` then reads the
|
|
10
|
+
// merged result back without booting a browser editor. `crdtText()` and
|
|
11
|
+
// `crdtDoc()` share the column definition and the server merge; only the client
|
|
12
|
+
// binding differs.
|
|
13
|
+
//
|
|
6
14
|
// This runs the real thing with no database and no server: `ctx.store` from
|
|
7
15
|
// `makeTestContext` is the SAME `wrapStoreWithMixinBehaviour` store the handler
|
|
8
16
|
// gets in production, so the authoritative server-side CRDT merge on the write
|
|
@@ -12,17 +12,17 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.97.0",
|
|
14
14
|
"@effect/rpc": "^0.76.0",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/plugin-governance": "0.
|
|
19
|
-
"@voltro/plugin-multitenancy": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
15
|
+
"@voltro/cli": "0.54.0",
|
|
16
|
+
"@voltro/database": "0.54.0",
|
|
17
|
+
"@voltro/env": "0.54.0",
|
|
18
|
+
"@voltro/plugin-governance": "0.54.0",
|
|
19
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
20
|
+
"@voltro/protocol": "0.54.0",
|
|
21
|
+
"@voltro/runtime": "0.54.0",
|
|
22
22
|
"effect": "^3.22.0"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.
|
|
25
|
+
"@voltro/testing": "0.54.0",
|
|
26
26
|
"typescript": "^6.0.3",
|
|
27
27
|
"@vitest/coverage-v8": "^4.1.10",
|
|
28
28
|
"vitest": "^4.1.10"
|
|
@@ -12,17 +12,17 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.97.0",
|
|
14
14
|
"@effect/rpc": "^0.76.0",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.
|
|
19
|
-
"@voltro/protocol": "0.
|
|
20
|
-
"@voltro/runtime": "0.
|
|
21
|
-
"@voltro/workflow": "0.
|
|
15
|
+
"@voltro/cli": "0.54.0",
|
|
16
|
+
"@voltro/database": "0.54.0",
|
|
17
|
+
"@voltro/env": "0.54.0",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
19
|
+
"@voltro/protocol": "0.54.0",
|
|
20
|
+
"@voltro/runtime": "0.54.0",
|
|
21
|
+
"@voltro/workflow": "0.54.0",
|
|
22
22
|
"effect": "^3.22.0"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.
|
|
25
|
+
"@voltro/testing": "0.54.0",
|
|
26
26
|
"typescript": "^6.0.3",
|
|
27
27
|
"@vitest/coverage-v8": "^4.1.10",
|
|
28
28
|
"vitest": "^4.1.10"
|
|
@@ -13,18 +13,18 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@effect/platform": "^0.97.0",
|
|
15
15
|
"@effect/rpc": "^0.76.0",
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/database": "0.
|
|
18
|
-
"@voltro/env": "0.
|
|
19
|
-
"@voltro/plugin-flags": "0.
|
|
20
|
-
"@voltro/plugin-multitenancy": "0.
|
|
21
|
-
"@voltro/protocol": "0.
|
|
22
|
-
"@voltro/runtime": "0.
|
|
23
|
-
"@voltro/sql-postgres": "0.
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/database": "0.54.0",
|
|
18
|
+
"@voltro/env": "0.54.0",
|
|
19
|
+
"@voltro/plugin-flags": "0.54.0",
|
|
20
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
21
|
+
"@voltro/protocol": "0.54.0",
|
|
22
|
+
"@voltro/runtime": "0.54.0",
|
|
23
|
+
"@voltro/sql-postgres": "0.54.0",
|
|
24
24
|
"effect": "^3.22.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@voltro/testing": "0.
|
|
27
|
+
"@voltro/testing": "0.54.0",
|
|
28
28
|
"typescript": "^6.0.3",
|
|
29
29
|
"@vitest/coverage-v8": "^4.1.10",
|
|
30
30
|
"vitest": "^4.1.10"
|
|
@@ -13,17 +13,17 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@effect/platform": "^0.97.0",
|
|
15
15
|
"@effect/rpc": "^0.76.0",
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/database": "0.
|
|
18
|
-
"@voltro/env": "0.
|
|
19
|
-
"@voltro/plugin-audit": "0.
|
|
20
|
-
"@voltro/plugin-governance": "0.
|
|
21
|
-
"@voltro/protocol": "0.
|
|
22
|
-
"@voltro/runtime": "0.
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/database": "0.54.0",
|
|
18
|
+
"@voltro/env": "0.54.0",
|
|
19
|
+
"@voltro/plugin-audit": "0.54.0",
|
|
20
|
+
"@voltro/plugin-governance": "0.54.0",
|
|
21
|
+
"@voltro/protocol": "0.54.0",
|
|
22
|
+
"@voltro/runtime": "0.54.0",
|
|
23
23
|
"effect": "^3.22.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.
|
|
26
|
+
"@voltro/testing": "0.54.0",
|
|
27
27
|
"typescript": "^6.0.3",
|
|
28
28
|
"@vitest/coverage-v8": "^4.1.10",
|
|
29
29
|
"vitest": "^4.1.10"
|
|
@@ -12,17 +12,17 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.97.0",
|
|
14
14
|
"@effect/rpc": "^0.76.0",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/kv": "0.
|
|
19
|
-
"@voltro/plugin-multitenancy": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
15
|
+
"@voltro/cli": "0.54.0",
|
|
16
|
+
"@voltro/database": "0.54.0",
|
|
17
|
+
"@voltro/env": "0.54.0",
|
|
18
|
+
"@voltro/kv": "0.54.0",
|
|
19
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
20
|
+
"@voltro/protocol": "0.54.0",
|
|
21
|
+
"@voltro/runtime": "0.54.0",
|
|
22
22
|
"effect": "^3.22.0"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.
|
|
25
|
+
"@voltro/testing": "0.54.0",
|
|
26
26
|
"typescript": "^6.0.3",
|
|
27
27
|
"@vitest/coverage-v8": "^4.1.10",
|
|
28
28
|
"vitest": "^4.1.10"
|
|
@@ -13,17 +13,17 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@effect/platform": "^0.97.0",
|
|
15
15
|
"@effect/rpc": "^0.76.0",
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/database": "0.
|
|
18
|
-
"@voltro/env": "0.
|
|
19
|
-
"@voltro/plugin-moderation": "0.
|
|
20
|
-
"@voltro/plugin-multitenancy": "0.
|
|
21
|
-
"@voltro/protocol": "0.
|
|
22
|
-
"@voltro/runtime": "0.
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/database": "0.54.0",
|
|
18
|
+
"@voltro/env": "0.54.0",
|
|
19
|
+
"@voltro/plugin-moderation": "0.54.0",
|
|
20
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
21
|
+
"@voltro/protocol": "0.54.0",
|
|
22
|
+
"@voltro/runtime": "0.54.0",
|
|
23
23
|
"effect": "^3.22.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.
|
|
26
|
+
"@voltro/testing": "0.54.0",
|
|
27
27
|
"typescript": "^6.0.3",
|
|
28
28
|
"@vitest/coverage-v8": "^4.1.10",
|
|
29
29
|
"vitest": "^4.1.10"
|
|
@@ -13,17 +13,17 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@effect/platform": "^0.97.0",
|
|
15
15
|
"@effect/rpc": "^0.76.0",
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/database": "0.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.
|
|
19
|
-
"@voltro/plugin-prometheus": "0.
|
|
20
|
-
"@voltro/plugin-sentry": "0.
|
|
21
|
-
"@voltro/protocol": "0.
|
|
22
|
-
"@voltro/runtime": "0.
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/database": "0.54.0",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
19
|
+
"@voltro/plugin-prometheus": "0.54.0",
|
|
20
|
+
"@voltro/plugin-sentry": "0.54.0",
|
|
21
|
+
"@voltro/protocol": "0.54.0",
|
|
22
|
+
"@voltro/runtime": "0.54.0",
|
|
23
23
|
"effect": "^3.22.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.
|
|
26
|
+
"@voltro/testing": "0.54.0",
|
|
27
27
|
"typescript": "^6.0.3",
|
|
28
28
|
"@vitest/coverage-v8": "^4.1.10",
|
|
29
29
|
"vitest": "^4.1.10"
|
|
@@ -13,17 +13,17 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@effect/platform": "^0.97.0",
|
|
15
15
|
"@effect/rpc": "^0.76.0",
|
|
16
|
-
"@voltro/cli": "0.
|
|
17
|
-
"@voltro/database": "0.
|
|
18
|
-
"@voltro/env": "0.
|
|
19
|
-
"@voltro/plugin-multitenancy": "0.
|
|
20
|
-
"@voltro/plugin-ratelimit": "0.
|
|
21
|
-
"@voltro/protocol": "0.
|
|
22
|
-
"@voltro/runtime": "0.
|
|
16
|
+
"@voltro/cli": "0.54.0",
|
|
17
|
+
"@voltro/database": "0.54.0",
|
|
18
|
+
"@voltro/env": "0.54.0",
|
|
19
|
+
"@voltro/plugin-multitenancy": "0.54.0",
|
|
20
|
+
"@voltro/plugin-ratelimit": "0.54.0",
|
|
21
|
+
"@voltro/protocol": "0.54.0",
|
|
22
|
+
"@voltro/runtime": "0.54.0",
|
|
23
23
|
"effect": "^3.22.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.
|
|
26
|
+
"@voltro/testing": "0.54.0",
|
|
27
27
|
"typescript": "^6.0.3",
|
|
28
28
|
"@vitest/coverage-v8": "^4.1.10",
|
|
29
29
|
"vitest": "^4.1.10"
|