@voltro/cli 0.8.0 → 0.9.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 +19 -0
- package/THIRD-PARTY-NOTICES.md +2 -2
- package/dist/apiBuild-Ba4njm9m.js +2 -0
- package/dist/{apiBuild-OrDkXGFX.js → apiBuild-eInHm_bJ.js} +2 -2
- package/dist/bin.js +2 -2
- package/dist/{commands-DT4PipBz.js → commands-Cxs97AFp.js} +1685 -1592
- package/dist/{dev-Ga65K4jc.js → dev-63Ehpw2p.js} +179 -179
- package/dist/dev-CXsR8Zgo.js +2 -0
- package/dist/index.js +1 -1
- package/dist/{inspectMetrics-EK0CcHyu.js → inspectMetrics-DVCKKSPk.js} +930 -839
- package/dist/{serveCommand-CR5xnYZt.js → serveCommand-Cq7BhtpB.js} +5 -5
- package/dist/serveEntry.js +3 -3
- package/dist/{start-DuyBQxW3.js → start-CYe-7ueh.js} +296 -267
- package/dist/startEntry.js +2 -2
- package/package.json +18 -17
- package/templates/agent-docs/cli.md +49 -1
- package/templates/agent-docs/routing.md +26 -2
- package/templates/apps/api-ai/package.json +7 -7
- 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-storage/package.json +8 -8
- 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-saas/package.json +11 -11
- package/templates/apps/api-search/package.json +8 -8
- package/templates/apps/api-versioning/package.json +8 -8
- package/templates/apps/api-webhooks/package.json +8 -8
- package/templates/apps/changelog/package.json +6 -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 +8 -8
- package/templates/apps/frontend-blank/package.json +7 -7
- 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 +7 -7
- package/templates/apps/frontend-i18n/package.json +6 -6
- package/templates/apps/frontend-landing/package.json +7 -7
- 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 +6 -6
- package/dist/apiBuild-CmtI6Ygh.js +0 -2
- package/dist/dev-Ca1jdwnt.js +0 -2
package/dist/startEntry.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t } from "./start-
|
|
1
|
+
import { I as e } from "./inspectMetrics-DVCKKSPk.js";
|
|
2
|
+
import { t } from "./start-CYe-7ueh.js";
|
|
3
3
|
export { e as loadDotEnv, t as runStartCommand };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voltro/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "The `voltro` CLI — dev server, codegen, migrations, project scaffolding, agent-docs seeding, and production serve.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"voltro",
|
|
@@ -57,24 +57,25 @@
|
|
|
57
57
|
"@effect/platform-node": "^0.107.0",
|
|
58
58
|
"@effect/sql": "^0.51.1",
|
|
59
59
|
"@effect/workflow": "^0.18.2",
|
|
60
|
-
"@voltro/ai": "0.
|
|
61
|
-
"@voltro/cache": "0.
|
|
62
|
-
"@voltro/data-transfer": "0.
|
|
63
|
-
"@voltro/database": "0.
|
|
64
|
-
"@voltro/env": "0.
|
|
65
|
-
"@voltro/kv": "0.
|
|
66
|
-
"@voltro/logger": "0.
|
|
67
|
-
"@voltro/plugin-auth": "0.
|
|
68
|
-
"@voltro/plugin-broadcast": "0.
|
|
69
|
-
"@voltro/plugin-mail": "0.
|
|
70
|
-
"@voltro/plugin-storage": "0.
|
|
71
|
-
"@voltro/plugin-webhooks": "0.
|
|
72
|
-
"@voltro/protocol": "0.
|
|
73
|
-
"@voltro/runtime": "0.
|
|
74
|
-
"@voltro/serverless": "0.
|
|
75
|
-
"@voltro/workflow": "0.
|
|
60
|
+
"@voltro/ai": "0.9.0",
|
|
61
|
+
"@voltro/cache": "0.9.0",
|
|
62
|
+
"@voltro/data-transfer": "0.9.0",
|
|
63
|
+
"@voltro/database": "0.9.0",
|
|
64
|
+
"@voltro/env": "0.9.0",
|
|
65
|
+
"@voltro/kv": "0.9.0",
|
|
66
|
+
"@voltro/logger": "0.9.0",
|
|
67
|
+
"@voltro/plugin-auth": "0.9.0",
|
|
68
|
+
"@voltro/plugin-broadcast": "0.9.0",
|
|
69
|
+
"@voltro/plugin-mail": "0.9.0",
|
|
70
|
+
"@voltro/plugin-storage": "0.9.0",
|
|
71
|
+
"@voltro/plugin-webhooks": "0.9.0",
|
|
72
|
+
"@voltro/protocol": "0.9.0",
|
|
73
|
+
"@voltro/runtime": "0.9.0",
|
|
74
|
+
"@voltro/serverless": "0.9.0",
|
|
75
|
+
"@voltro/workflow": "0.9.0",
|
|
76
76
|
"chokidar": "^5.0.0",
|
|
77
77
|
"ioredis": "^5.11.1",
|
|
78
|
+
"tinyglobby": "^0.2.17",
|
|
78
79
|
"ts-morph": "^28.0.0"
|
|
79
80
|
},
|
|
80
81
|
"optionalDependencies": {
|
|
@@ -432,6 +432,14 @@ voltro dev apps/acme/api # explicit path
|
|
|
432
432
|
- CSS changes → swap stylesheets in place.
|
|
433
433
|
- New page file → regen the entry files → reload the route tree.
|
|
434
434
|
|
|
435
|
+
`renderMode: 'ssr'` pages compile on demand the first time each route is hit. To
|
|
436
|
+
keep a burst of cold pages — several browser tabs, or a health-check sweep across
|
|
437
|
+
many routes — from spiking memory, `voltro dev` compiles at most **4** of them at
|
|
438
|
+
once and collapses duplicate concurrent requests for the same route into a single
|
|
439
|
+
compile. Already-compiled (warm) pages are never throttled, so a hot app stays
|
|
440
|
+
fully concurrent. Tune the cap with `VOLTRO_DEV_SSR_COMPILE_CONCURRENCY` (below) —
|
|
441
|
+
drop it on a low-memory box, raise it on a big machine.
|
|
442
|
+
|
|
435
443
|
|
|
436
444
|
### Fast Refresh: what hot-updates and what reloads
|
|
437
445
|
|
|
@@ -515,6 +523,7 @@ A `<DevtoolsStringsProvider strings={…}>` mounted above the overlay works too;
|
|
|
515
523
|
| `PORT=4001` | Override the listen port (api or web). Both kinds read `PORT`, then `app.config.ts` `port:`, then the default. |
|
|
516
524
|
| `VOLTRO_DASHBOARD_PORT=5180` | Override the auto-launched dashboard port (default `5179`). |
|
|
517
525
|
| `VOLTRO_LOG_LEVEL=debug` | Verbose framework logs. |
|
|
526
|
+
| `VOLTRO_DEV_SSR_COMPILE_CONCURRENCY=4` | Max `ssr` pages compiled on demand at once (default `4`). Lower it (`1`/`2`) on a low-memory box if a burst of first-time `ssr` page loads spikes memory; raise it on a big machine. Warm (already-compiled) pages are never throttled. |
|
|
518
527
|
|
|
519
528
|
## Multi-app dev (turbo)
|
|
520
529
|
|
|
@@ -873,13 +882,52 @@ voltro doctor . --json # the complete scan: every file path, machine-re
|
|
|
873
882
|
"use": ".one() — fails with the typed NoRowFound on zero rows AND on more than one",
|
|
874
883
|
"files": ["queries/team.get.ts", "queries/user.get.ts", "…"]
|
|
875
884
|
}
|
|
876
|
-
]
|
|
885
|
+
],
|
|
886
|
+
"spaCandidates": []
|
|
877
887
|
}
|
|
878
888
|
```
|
|
879
889
|
|
|
880
890
|
That is the form to hand an agent, or to pipe into a script that works the list
|
|
881
891
|
file by file.
|
|
882
892
|
|
|
893
|
+
### `renderMode:'spa'` candidates
|
|
894
|
+
|
|
895
|
+
`voltro doctor` also flags web pages that could adopt `renderMode: 'spa'` without
|
|
896
|
+
losing their server-rendered shell. A page under a layout renders that LAYOUT
|
|
897
|
+
chain on the server — nav, sidebar, auth gate, via the layout's own loader — even
|
|
898
|
+
when the page itself is `'spa'`. So a page whose BODY needs no SSR can skip its
|
|
899
|
+
per-page SSR compile while the shell still server-renders. Like the hand-roll
|
|
900
|
+
detector, this is **advisory and never blocking**.
|
|
901
|
+
|
|
902
|
+
A page is listed when ALL of these hold:
|
|
903
|
+
|
|
904
|
+
- it is a **page file** — not `layout.tsx` / `loading.tsx` / `error.tsx` /
|
|
905
|
+
`not-found.tsx`;
|
|
906
|
+
- it exports **no `loader`** (so `'spa'` loses nothing the page contributed
|
|
907
|
+
server-side);
|
|
908
|
+
- its `renderMode` is **`'ssr'` or unset/default** — not a page that already
|
|
909
|
+
opted into a non-SSR render (`'spa'` / `'static'` / `'isr'`, or any other
|
|
910
|
+
explicit mode);
|
|
911
|
+
- a **`layout.tsx` sits somewhere in its directory chain** — root, an ancestor, or
|
|
912
|
+
the page's own dir. This is the load-bearing condition: only then does a layout
|
|
913
|
+
still SSR the shell. A page with no layout would, as `'spa'`, ship no server
|
|
914
|
+
HTML at all — so it is never flagged.
|
|
915
|
+
|
|
916
|
+
```text
|
|
917
|
+
• renderMode:'spa' candidates (2 pages — loader-free, under a layout, currently ssr/default):
|
|
918
|
+
src/pages/dashboard/index.tsx (/dashboard) — default renderMode
|
|
919
|
+
src/pages/admin/settings.tsx (/admin/settings) — renderMode:'ssr'
|
|
920
|
+
→ renderMode:'spa' skips this page's SSR compile while its layout shell still renders server-side — adopt it if the page BODY does not need SSR (internal/authenticated pages); keep 'ssr' if the page content needs SEO or server first-paint.
|
|
921
|
+
```
|
|
922
|
+
|
|
923
|
+
Adopt `'spa'` for internal or authenticated pages whose content needs no SEO or
|
|
924
|
+
server first-paint; keep `'ssr'` (or the `'static'` default) when it does. There
|
|
925
|
+
is deliberately **no codemod** to flip pages automatically — dropping a page
|
|
926
|
+
body's server render is a per-page product decision, not a mechanically-safe
|
|
927
|
+
transform. Every candidate (with its `file`, `pattern`, and `currentMode`) is
|
|
928
|
+
also in `voltro doctor --json` under a `spaCandidates` array; the human view
|
|
929
|
+
above caps at ten pages and points to `--json` for the rest.
|
|
930
|
+
|
|
883
931
|
## `voltro capabilities` — what the framework actually exports
|
|
884
932
|
|
|
885
933
|
Asked "what does this framework export", a language model will produce a
|
|
@@ -625,6 +625,20 @@ The framework reads Postgres logical replication; writes to `posts` or `comments
|
|
|
625
625
|
|
|
626
626
|
Requires `SSR_CACHE=postgres` and a `wal_level=logical` Postgres.
|
|
627
627
|
|
|
628
|
+
## spa (client-only, with an optional SSR layout shell)
|
|
629
|
+
|
|
630
|
+
```tsx
|
|
631
|
+
export const renderMode = 'spa' as const
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
A `spa` page renders entirely in the browser — the page itself is never server-rendered. Reach for it when a page genuinely needs a fresh client render every load (most reactive dashboards) and doesn't need its own first-paint HTML or SEO.
|
|
635
|
+
|
|
636
|
+
**If the page's route has a layout, that layout is still server-rendered.** The server renders the layout chain — running its layout loaders — around an empty page slot (`<div data-voltro-page-slot>`), inlines the layout data, and marks the page client-only. The browser hydrates that shell and mounts the page into the slot after hydration. So the shell (nav, sidebar, auth gate) gets an instant first paint while the page stays client-only. The page's own `loader` still runs in the browser.
|
|
637
|
+
|
|
638
|
+
Because a layout now runs on the server for spa routes too, a layout used **only** by spa pages must be SSR-safe — no unguarded `window` / `document` in its render or its `loader`. Layouts shared with any `static` / `ssr` / `isr` page already render server-side (and `static` is the default), so they are unaffected. A spa page with **no** layout is a pure client mount, unchanged.
|
|
639
|
+
|
|
640
|
+
> **Deferred (follow-ups, not yet shipped):** `voltro build` does not prerender the spa layout shell to a file — `voltro start` renders it on demand. `defer()` / streaming inside a spa-shell layout is unsupported (the shell is buffered). Fast Refresh of the shell path is not yet specialised.
|
|
641
|
+
|
|
628
642
|
## Picking between them
|
|
629
643
|
|
|
630
644
|
| You have… | Use |
|
|
@@ -663,7 +677,8 @@ A request to `/foo`:
|
|
|
663
677
|
1. **Pre-rendered HTML exists at `dist/foo/index.html`?** Serve it. (static + isr-already-cached.)
|
|
664
678
|
2. **No pre-render, page is `ssr`?** Render fresh, serve.
|
|
665
679
|
3. **No pre-render, page is `isr`?** Cache lookup → MISS → render → store → serve.
|
|
666
|
-
4. **No pre-render, page is `
|
|
680
|
+
4. **No pre-render, page is `spa` with a layout?** Render the SSR layout shell (layouts + an empty page slot) on demand; the client mounts the page into the slot.
|
|
681
|
+
5. **No pre-render, page is `spa` with no layout, or `static`?** Serve the SPA shell — the client router takes over.
|
|
667
682
|
|
|
668
683
|
That last case is how dynamic `static` routes work in dev / when `getStaticPaths` didn't include the URL.
|
|
669
684
|
|
|
@@ -789,7 +804,7 @@ export const loader = async ({ query }: { query?: <T>(tag: string, input?: Recor
|
|
|
789
804
|
// EAGER — awaited before the shell renders. Keep this fast.
|
|
790
805
|
{ user: await query?.<User>('users.me') },
|
|
791
806
|
// DEFERRED — NOT awaited. Each becomes a promise on useLoaderData().
|
|
792
|
-
{ report: query!<
|
|
807
|
+
{ report: query!<QuarterlyReport>('reports.quarterly') },
|
|
793
808
|
)
|
|
794
809
|
|
|
795
810
|
export default function Dashboard() {
|
|
@@ -931,6 +946,15 @@ Two rules that fall out of this:
|
|
|
931
946
|
|
|
932
947
|
Under the hood, `ctx.query` is a one-shot `POST /rpc` call (see [Wire protocol](/docs/data/wire-protocol#http-one-shot-rpc-post-rpc)).
|
|
933
948
|
|
|
949
|
+
### Authentication in loaders
|
|
950
|
+
|
|
951
|
+
Auth is resolved by the **api**, never the web app. Two rules follow:
|
|
952
|
+
|
|
953
|
+
- **Strategies live on the `type:'api'` app.** A `type:'web'` app has no auth middleware, so `auth.strategies` in a web `app.config.ts` does nothing. Configure your IdP (`supabaseStrategy`, `workosStrategy`, the built-in password strategy, …) on the api's `app.config.ts`.
|
|
954
|
+
- **`ctx.query` forwards the request's cookie automatically.** A server-side loader's `ctx.query` sends the browser's `Cookie` header on the one-shot `POST /rpc`, so the api resolves the SAME Subject + tenant it would over the WebSocket. You never thread a token through by hand — a logged-in user's cookie-mode session (e.g. `@supabase/ssr`'s `sb-<ref>-auth-token`) is verified by the api's strategies, and tenant-scoped queries return that user's rows during SSR.
|
|
955
|
+
|
|
956
|
+
So a cookie-mode Supabase app configures `supabaseStrategy({ cookieName: 'sb-<ref>-auth-token' })` on the **api**; the web loader's `ctx.query` then authenticates for free. See [Supabase Auth](/docs/plugins/auth-supabase).
|
|
957
|
+
|
|
934
958
|
## Errors from loaders
|
|
935
959
|
|
|
936
960
|
If the loader throws, the framework:
|
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@effect/platform": "^0.96.1",
|
|
13
13
|
"@effect/rpc": "^0.75.1",
|
|
14
|
-
"@voltro/ai": "0.
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/protocol": "0.
|
|
19
|
-
"@voltro/runtime": "0.
|
|
14
|
+
"@voltro/ai": "0.9.0",
|
|
15
|
+
"@voltro/cli": "0.9.0",
|
|
16
|
+
"@voltro/database": "0.9.0",
|
|
17
|
+
"@voltro/env": "0.9.0",
|
|
18
|
+
"@voltro/protocol": "0.9.0",
|
|
19
|
+
"@voltro/runtime": "0.9.0",
|
|
20
20
|
"effect": "^3.21.2"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@voltro/testing": "0.
|
|
23
|
+
"@voltro/testing": "0.9.0",
|
|
24
24
|
"typescript": "^5.7.0",
|
|
25
25
|
"vitest": "^3.0.0"
|
|
26
26
|
}
|
|
@@ -12,17 +12,17 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.96.1",
|
|
14
14
|
"@effect/rpc": "^0.75.1",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/plugin-auth": "0.
|
|
19
|
-
"@voltro/protocol": "0.
|
|
20
|
-
"@voltro/runtime": "0.
|
|
21
|
-
"@voltro/sql-postgres": "0.
|
|
15
|
+
"@voltro/cli": "0.9.0",
|
|
16
|
+
"@voltro/database": "0.9.0",
|
|
17
|
+
"@voltro/env": "0.9.0",
|
|
18
|
+
"@voltro/plugin-auth": "0.9.0",
|
|
19
|
+
"@voltro/protocol": "0.9.0",
|
|
20
|
+
"@voltro/runtime": "0.9.0",
|
|
21
|
+
"@voltro/sql-postgres": "0.9.0",
|
|
22
22
|
"effect": "^3.21.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.
|
|
25
|
+
"@voltro/testing": "0.9.0",
|
|
26
26
|
"typescript": "^5.7.0",
|
|
27
27
|
"vitest": "^3.0.0"
|
|
28
28
|
}
|
|
@@ -12,16 +12,16 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.96.1",
|
|
14
14
|
"@effect/rpc": "^0.75.1",
|
|
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.
|
|
15
|
+
"@voltro/cli": "0.9.0",
|
|
16
|
+
"@voltro/database": "0.9.0",
|
|
17
|
+
"@voltro/env": "0.9.0",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.9.0",
|
|
19
|
+
"@voltro/protocol": "0.9.0",
|
|
20
|
+
"@voltro/runtime": "0.9.0",
|
|
21
21
|
"effect": "^3.21.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@voltro/testing": "0.
|
|
24
|
+
"@voltro/testing": "0.9.0",
|
|
25
25
|
"typescript": "^5.7.0",
|
|
26
26
|
"vitest": "^3.0.0"
|
|
27
27
|
}
|
|
@@ -12,16 +12,16 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.96.1",
|
|
14
14
|
"@effect/rpc": "^0.75.1",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/plugin-deactivation": "0.
|
|
19
|
-
"@voltro/protocol": "0.
|
|
20
|
-
"@voltro/runtime": "0.
|
|
15
|
+
"@voltro/cli": "0.9.0",
|
|
16
|
+
"@voltro/database": "0.9.0",
|
|
17
|
+
"@voltro/env": "0.9.0",
|
|
18
|
+
"@voltro/plugin-deactivation": "0.9.0",
|
|
19
|
+
"@voltro/protocol": "0.9.0",
|
|
20
|
+
"@voltro/runtime": "0.9.0",
|
|
21
21
|
"effect": "^3.21.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@voltro/testing": "0.
|
|
24
|
+
"@voltro/testing": "0.9.0",
|
|
25
25
|
"typescript": "^5.7.0",
|
|
26
26
|
"vitest": "^3.0.0"
|
|
27
27
|
}
|
|
@@ -12,18 +12,18 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@react-email/components": "^1.0.12",
|
|
14
14
|
"@react-email/render": "^1.4.0",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/plugin-mail": "0.
|
|
19
|
-
"@voltro/plugin-multitenancy": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
15
|
+
"@voltro/cli": "0.9.0",
|
|
16
|
+
"@voltro/database": "0.9.0",
|
|
17
|
+
"@voltro/env": "0.9.0",
|
|
18
|
+
"@voltro/plugin-mail": "0.9.0",
|
|
19
|
+
"@voltro/plugin-multitenancy": "0.9.0",
|
|
20
|
+
"@voltro/protocol": "0.9.0",
|
|
21
|
+
"@voltro/runtime": "0.9.0",
|
|
22
22
|
"effect": "^3.21.2",
|
|
23
23
|
"react": "^19.0.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.
|
|
26
|
+
"@voltro/testing": "0.9.0",
|
|
27
27
|
"typescript": "^5.7.0",
|
|
28
28
|
"vitest": "^3.0.0"
|
|
29
29
|
}
|
|
@@ -12,18 +12,18 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.96.1",
|
|
14
14
|
"@effect/rpc": "^0.75.1",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.
|
|
19
|
-
"@voltro/plugin-storage": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
22
|
-
"@voltro/sql-mysql": "0.
|
|
15
|
+
"@voltro/cli": "0.9.0",
|
|
16
|
+
"@voltro/database": "0.9.0",
|
|
17
|
+
"@voltro/env": "0.9.0",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.9.0",
|
|
19
|
+
"@voltro/plugin-storage": "0.9.0",
|
|
20
|
+
"@voltro/protocol": "0.9.0",
|
|
21
|
+
"@voltro/runtime": "0.9.0",
|
|
22
|
+
"@voltro/sql-mysql": "0.9.0",
|
|
23
23
|
"effect": "^3.21.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.
|
|
26
|
+
"@voltro/testing": "0.9.0",
|
|
27
27
|
"typescript": "^5.7.0",
|
|
28
28
|
"vitest": "^3.0.0"
|
|
29
29
|
}
|
|
@@ -10,17 +10,17 @@
|
|
|
10
10
|
"test": "voltro test"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@voltro/cli": "0.
|
|
14
|
-
"@voltro/database": "0.
|
|
15
|
-
"@voltro/env": "0.
|
|
16
|
-
"@voltro/plugin-multitenancy": "0.
|
|
17
|
-
"@voltro/plugin-storage": "0.
|
|
18
|
-
"@voltro/protocol": "0.
|
|
19
|
-
"@voltro/runtime": "0.
|
|
13
|
+
"@voltro/cli": "0.9.0",
|
|
14
|
+
"@voltro/database": "0.9.0",
|
|
15
|
+
"@voltro/env": "0.9.0",
|
|
16
|
+
"@voltro/plugin-multitenancy": "0.9.0",
|
|
17
|
+
"@voltro/plugin-storage": "0.9.0",
|
|
18
|
+
"@voltro/protocol": "0.9.0",
|
|
19
|
+
"@voltro/runtime": "0.9.0",
|
|
20
20
|
"effect": "^3.21.2"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@voltro/testing": "0.
|
|
23
|
+
"@voltro/testing": "0.9.0",
|
|
24
24
|
"typescript": "^5.7.0",
|
|
25
25
|
"vitest": "^3.0.0"
|
|
26
26
|
}
|
|
@@ -11,17 +11,17 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@effect/platform": "^0.96.1",
|
|
13
13
|
"@effect/rpc": "^0.75.1",
|
|
14
|
-
"@voltro/cli": "0.
|
|
15
|
-
"@voltro/database": "0.
|
|
16
|
-
"@voltro/env": "0.
|
|
17
|
-
"@voltro/plugin-governance": "0.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.
|
|
19
|
-
"@voltro/protocol": "0.
|
|
20
|
-
"@voltro/runtime": "0.
|
|
14
|
+
"@voltro/cli": "0.9.0",
|
|
15
|
+
"@voltro/database": "0.9.0",
|
|
16
|
+
"@voltro/env": "0.9.0",
|
|
17
|
+
"@voltro/plugin-governance": "0.9.0",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.9.0",
|
|
19
|
+
"@voltro/protocol": "0.9.0",
|
|
20
|
+
"@voltro/runtime": "0.9.0",
|
|
21
21
|
"effect": "^3.21.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@voltro/testing": "0.
|
|
24
|
+
"@voltro/testing": "0.9.0",
|
|
25
25
|
"typescript": "^5.7.0",
|
|
26
26
|
"vitest": "^3.0.0"
|
|
27
27
|
}
|
|
@@ -11,17 +11,17 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@effect/platform": "^0.96.1",
|
|
13
13
|
"@effect/rpc": "^0.75.1",
|
|
14
|
-
"@voltro/cli": "0.
|
|
15
|
-
"@voltro/database": "0.
|
|
16
|
-
"@voltro/env": "0.
|
|
17
|
-
"@voltro/plugin-multitenancy": "0.
|
|
18
|
-
"@voltro/protocol": "0.
|
|
19
|
-
"@voltro/runtime": "0.
|
|
20
|
-
"@voltro/workflow": "0.
|
|
14
|
+
"@voltro/cli": "0.9.0",
|
|
15
|
+
"@voltro/database": "0.9.0",
|
|
16
|
+
"@voltro/env": "0.9.0",
|
|
17
|
+
"@voltro/plugin-multitenancy": "0.9.0",
|
|
18
|
+
"@voltro/protocol": "0.9.0",
|
|
19
|
+
"@voltro/runtime": "0.9.0",
|
|
20
|
+
"@voltro/workflow": "0.9.0",
|
|
21
21
|
"effect": "^3.21.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@voltro/testing": "0.
|
|
24
|
+
"@voltro/testing": "0.9.0",
|
|
25
25
|
"typescript": "^5.7.0",
|
|
26
26
|
"vitest": "^3.0.0"
|
|
27
27
|
}
|
|
@@ -12,18 +12,18 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.96.1",
|
|
14
14
|
"@effect/rpc": "^0.75.1",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/plugin-flags": "0.
|
|
19
|
-
"@voltro/plugin-multitenancy": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
22
|
-
"@voltro/sql-postgres": "0.
|
|
15
|
+
"@voltro/cli": "0.9.0",
|
|
16
|
+
"@voltro/database": "0.9.0",
|
|
17
|
+
"@voltro/env": "0.9.0",
|
|
18
|
+
"@voltro/plugin-flags": "0.9.0",
|
|
19
|
+
"@voltro/plugin-multitenancy": "0.9.0",
|
|
20
|
+
"@voltro/protocol": "0.9.0",
|
|
21
|
+
"@voltro/runtime": "0.9.0",
|
|
22
|
+
"@voltro/sql-postgres": "0.9.0",
|
|
23
23
|
"effect": "^3.21.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.
|
|
26
|
+
"@voltro/testing": "0.9.0",
|
|
27
27
|
"typescript": "^5.7.0",
|
|
28
28
|
"vitest": "^3.0.0"
|
|
29
29
|
}
|
|
@@ -12,17 +12,17 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.96.1",
|
|
14
14
|
"@effect/rpc": "^0.75.1",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/plugin-audit": "0.
|
|
19
|
-
"@voltro/plugin-governance": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
15
|
+
"@voltro/cli": "0.9.0",
|
|
16
|
+
"@voltro/database": "0.9.0",
|
|
17
|
+
"@voltro/env": "0.9.0",
|
|
18
|
+
"@voltro/plugin-audit": "0.9.0",
|
|
19
|
+
"@voltro/plugin-governance": "0.9.0",
|
|
20
|
+
"@voltro/protocol": "0.9.0",
|
|
21
|
+
"@voltro/runtime": "0.9.0",
|
|
22
22
|
"effect": "^3.21.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.
|
|
25
|
+
"@voltro/testing": "0.9.0",
|
|
26
26
|
"typescript": "^5.7.0",
|
|
27
27
|
"vitest": "^3.0.0"
|
|
28
28
|
}
|
|
@@ -11,17 +11,17 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@effect/platform": "^0.96.1",
|
|
13
13
|
"@effect/rpc": "^0.75.1",
|
|
14
|
-
"@voltro/cli": "0.
|
|
15
|
-
"@voltro/database": "0.
|
|
16
|
-
"@voltro/env": "0.
|
|
17
|
-
"@voltro/kv": "0.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.
|
|
19
|
-
"@voltro/protocol": "0.
|
|
20
|
-
"@voltro/runtime": "0.
|
|
14
|
+
"@voltro/cli": "0.9.0",
|
|
15
|
+
"@voltro/database": "0.9.0",
|
|
16
|
+
"@voltro/env": "0.9.0",
|
|
17
|
+
"@voltro/kv": "0.9.0",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.9.0",
|
|
19
|
+
"@voltro/protocol": "0.9.0",
|
|
20
|
+
"@voltro/runtime": "0.9.0",
|
|
21
21
|
"effect": "^3.21.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@voltro/testing": "0.
|
|
24
|
+
"@voltro/testing": "0.9.0",
|
|
25
25
|
"typescript": "^5.7.0",
|
|
26
26
|
"vitest": "^3.0.0"
|
|
27
27
|
}
|
|
@@ -12,17 +12,17 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.96.1",
|
|
14
14
|
"@effect/rpc": "^0.75.1",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/plugin-moderation": "0.
|
|
19
|
-
"@voltro/plugin-multitenancy": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
15
|
+
"@voltro/cli": "0.9.0",
|
|
16
|
+
"@voltro/database": "0.9.0",
|
|
17
|
+
"@voltro/env": "0.9.0",
|
|
18
|
+
"@voltro/plugin-moderation": "0.9.0",
|
|
19
|
+
"@voltro/plugin-multitenancy": "0.9.0",
|
|
20
|
+
"@voltro/protocol": "0.9.0",
|
|
21
|
+
"@voltro/runtime": "0.9.0",
|
|
22
22
|
"effect": "^3.21.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.
|
|
25
|
+
"@voltro/testing": "0.9.0",
|
|
26
26
|
"typescript": "^5.7.0",
|
|
27
27
|
"vitest": "^3.0.0"
|
|
28
28
|
}
|
|
@@ -12,17 +12,17 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.96.1",
|
|
14
14
|
"@effect/rpc": "^0.75.1",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/plugin-multitenancy": "0.
|
|
18
|
-
"@voltro/plugin-prometheus": "0.
|
|
19
|
-
"@voltro/plugin-sentry": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
15
|
+
"@voltro/cli": "0.9.0",
|
|
16
|
+
"@voltro/database": "0.9.0",
|
|
17
|
+
"@voltro/plugin-multitenancy": "0.9.0",
|
|
18
|
+
"@voltro/plugin-prometheus": "0.9.0",
|
|
19
|
+
"@voltro/plugin-sentry": "0.9.0",
|
|
20
|
+
"@voltro/protocol": "0.9.0",
|
|
21
|
+
"@voltro/runtime": "0.9.0",
|
|
22
22
|
"effect": "^3.21.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.
|
|
25
|
+
"@voltro/testing": "0.9.0",
|
|
26
26
|
"typescript": "^5.7.0",
|
|
27
27
|
"vitest": "^3.0.0"
|
|
28
28
|
}
|
|
@@ -12,17 +12,17 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.96.1",
|
|
14
14
|
"@effect/rpc": "^0.75.1",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.
|
|
19
|
-
"@voltro/plugin-ratelimit": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
15
|
+
"@voltro/cli": "0.9.0",
|
|
16
|
+
"@voltro/database": "0.9.0",
|
|
17
|
+
"@voltro/env": "0.9.0",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.9.0",
|
|
19
|
+
"@voltro/plugin-ratelimit": "0.9.0",
|
|
20
|
+
"@voltro/protocol": "0.9.0",
|
|
21
|
+
"@voltro/runtime": "0.9.0",
|
|
22
22
|
"effect": "^3.21.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.
|
|
25
|
+
"@voltro/testing": "0.9.0",
|
|
26
26
|
"typescript": "^5.7.0",
|
|
27
27
|
"vitest": "^3.0.0"
|
|
28
28
|
}
|
|
@@ -12,17 +12,17 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.96.1",
|
|
14
14
|
"@effect/rpc": "^0.75.1",
|
|
15
|
-
"@voltro/cli": "0.
|
|
16
|
-
"@voltro/database": "0.
|
|
17
|
-
"@voltro/env": "0.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.
|
|
19
|
-
"@voltro/plugin-rbac": "0.
|
|
20
|
-
"@voltro/protocol": "0.
|
|
21
|
-
"@voltro/runtime": "0.
|
|
15
|
+
"@voltro/cli": "0.9.0",
|
|
16
|
+
"@voltro/database": "0.9.0",
|
|
17
|
+
"@voltro/env": "0.9.0",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.9.0",
|
|
19
|
+
"@voltro/plugin-rbac": "0.9.0",
|
|
20
|
+
"@voltro/protocol": "0.9.0",
|
|
21
|
+
"@voltro/runtime": "0.9.0",
|
|
22
22
|
"effect": "^3.21.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.
|
|
25
|
+
"@voltro/testing": "0.9.0",
|
|
26
26
|
"typescript": "^5.7.0",
|
|
27
27
|
"vitest": "^3.0.0"
|
|
28
28
|
}
|