@voltro/cli 0.11.1 → 0.11.3
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 +95 -0
- package/dist/apiBuild-BmPdmhgi.js +2 -0
- package/dist/{apiBuild-D_kEJTxc.js → apiBuild-zFDv0u8y.js} +7 -3
- package/dist/bin.js +2 -2
- package/dist/{commands-BiQsbV50.js → commands-BDGYrBhK.js} +30 -7
- package/dist/{dev-zJGsTTNb.js → dev-CGt0PP1f.js} +1 -1
- package/dist/dev-D_PGP9Kx.js +2 -0
- package/dist/index.js +1 -1
- package/dist/{inspectMetrics-BuBwg1yW.js → inspectMetrics-SRtv8KDy.js} +8 -4
- package/dist/{serveCommand-BU454-ay.js → serveCommand-p6e5Ahgx.js} +3 -3
- package/dist/serveEntry.js +3 -3
- package/dist/{start-ChN6PO-c.js → start-Crl39M38.js} +1 -1
- package/dist/startEntry.js +2 -2
- package/package.json +17 -17
- package/templates/agent-docs/_manifest.json +1 -1
- package/templates/agent-docs/authentication.md +22 -0
- package/templates/agent-docs/data.md +68 -0
- package/templates/agent-docs/database/columntypes.md +7 -0
- package/templates/agent-docs/database/querying.md +16 -0
- package/templates/agent-docs/deployment.md +4 -2
- package/templates/agent-docs/internationalization.md +49 -2
- package/templates/agent-docs/routing.md +17 -0
- package/templates/agent-docs/testing.md +26 -0
- 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-BGd-BnHq.js +0 -2
- package/dist/dev-DH13Ysgs.js +0 -2
|
@@ -176,9 +176,56 @@ useT('header.search') // ✓ no placeholders → no values arg
|
|
|
176
176
|
useT('does.not.exist') // ✗ compile error — not a catalog key
|
|
177
177
|
```
|
|
178
178
|
|
|
179
|
-
It's pure type refinement — the runtime is the same `useT` / `useTFn` / `<T
|
|
179
|
+
It's almost pure type refinement — the runtime is the same `useT` / `useTFn` / `<T>` (plus a `.dynamic` escape, below), only the signatures narrow to your catalog. Requires the base catalog to be `as const` (so its message strings survive as literal types).
|
|
180
180
|
|
|
181
|
-
**Scope.** Simple `{name}` and single-argument `{count, number}` placeholders are extracted and required.
|
|
181
|
+
**Scope.** Simple `{name}` and single-argument `{count, number}` placeholders are extracted and required. For a *nested* inline ICU message (`{count, plural, one {…} other {…}}` / `select`), the **top-level arg** (`count`) is required and a branch's inner text is NOT mistaken for a var — so `t('duration', { count })` typechecks and renders. A REAL var nested inside a branch (`other {# blockers in {discipline}}`) is not collected, so it reads as *not required* rather than wrongly required; pass it via the loose values bag.
|
|
182
|
+
|
|
183
|
+
To get that nested var **compiler-required**, split the plural into simple sibling keys and pick with a JS branch — each key is then a plain message where every var is top-level:
|
|
184
|
+
|
|
185
|
+
```tsx
|
|
186
|
+
// catalog: 'blocker.one': '{count} blocker in {discipline}', 'blocker.other': '{count} blockers in {discipline}'
|
|
187
|
+
count === 1
|
|
188
|
+
? t('blocker.one', { count, discipline }) // ✓ both vars required
|
|
189
|
+
: t('blocker.other', { count, discipline })
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
(The [`plural()` helper](/docs/i18n/formatting) only substitutes `{count}`, so it doesn't type or fill a second var — use it for count-only messages.) `<T>` gets a typed key with loose values, because its rich-text `<tag>` renderers can't be modelled by placeholder extraction.
|
|
193
|
+
|
|
194
|
+
### Runtime-computed keys — `t.dynamic`
|
|
195
|
+
|
|
196
|
+
For a key you build at runtime, do NOT cast it to the catalog key union — that union spans placeholder-bearing keys, so the call then demands a spurious 2nd ICU arg. Use `t.dynamic`, a plain-string escape with no forced args, on both `useT` and the `useTFn()` result:
|
|
197
|
+
|
|
198
|
+
```tsx
|
|
199
|
+
import { useTFn } from '@app/messages' // your createTypedMessages() barrel — `.dynamic` lives on these
|
|
200
|
+
const t = useTFn()
|
|
201
|
+
t.dynamic(`status.${row.state}`) // ✓ plain string, no forced arg
|
|
202
|
+
t.dynamic(`greeting.${kind}`, { name }) // values still allowed, but loose
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Passing `t` across a package boundary — `LooseTFunction`
|
|
206
|
+
|
|
207
|
+
Type a `t` pass-through param as `TypedTFunction<C>` to keep it strict — the strict type propagates down through helper signatures. At a boundary that *can't* import your catalog (a shared UI package), type the param `LooseTFunction` (`(id: string, values?) => string`) instead of `(...args: any[]) => string`, and pass `t.dynamic` — which IS a `LooseTFunction`. A strict `TypedTFunction` is deliberately NOT assignable to the loose one (a narrowed key param can't satisfy a wider one, and silently allowing it would erase the checking).
|
|
208
|
+
|
|
209
|
+
```tsx
|
|
210
|
+
// a shared package that can't see the app catalog
|
|
211
|
+
import type { LooseTFunction } from '@voltro/i18n'
|
|
212
|
+
export const formatError = (t: LooseTFunction, e: AppError): string => t(e.messageKey)
|
|
213
|
+
|
|
214
|
+
// in the app, at the boundary:
|
|
215
|
+
formatError(t.dynamic, err)
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
A convenient app-wide barrel captures the bound types once:
|
|
219
|
+
|
|
220
|
+
```tsx
|
|
221
|
+
// src/i18n.ts
|
|
222
|
+
import { createTypedMessages, type TypedTFunction } from '@voltro/i18n'
|
|
223
|
+
import type en from './locales/en'
|
|
224
|
+
|
|
225
|
+
export const { useT, useTFn, T } = createTypedMessages<typeof en>()
|
|
226
|
+
export type AppTFunction = TypedTFunction<typeof en> // for helper / prop params
|
|
227
|
+
export type AppMessageKey = Parameters<AppTFunction>[0] // the catalog's key union
|
|
228
|
+
```
|
|
182
229
|
|
|
183
230
|
## Reading a message outside React — `meta({ locale })`
|
|
184
231
|
|
|
@@ -793,6 +793,23 @@ Two consequences worth designing around:
|
|
|
793
793
|
a side effect), put it in an effect or use `useSubscription` — do not rely on
|
|
794
794
|
the loader firing a second time.
|
|
795
795
|
|
|
796
|
+
#### SSR first paint, then live — `initialSnapshot`
|
|
797
|
+
|
|
798
|
+
When a page wants the SSR-rendered data AND a live subscription, hand the loader's value to `useSubscription` as its `initialSnapshot`. The loader fetches the data on the server with `ctx.query`; the subscription shows that value at the first paint with `loading: false` — it is real server data, not a placeholder — then swaps to the live stream the instant its first snapshot arrives:
|
|
799
|
+
|
|
800
|
+
```tsx
|
|
801
|
+
export const loader = async ({ query }) => query('employees.me', {})
|
|
802
|
+
|
|
803
|
+
export default function Profile() {
|
|
804
|
+
const seed = useLoaderData<Employee>()
|
|
805
|
+
// First paint shows the SSR value; the WS stream takes over seamlessly.
|
|
806
|
+
const { data } = useSubscription<Employee>('app', 'employees.me', {}, { initialSnapshot: seed })
|
|
807
|
+
return <ProfileCard employee={data} />
|
|
808
|
+
}
|
|
809
|
+
```
|
|
810
|
+
|
|
811
|
+
Because the SSR markup and the hydration render read the same loader value, they match — no hydration flicker — and you don't hand-build a seed store to bridge the two. This is distinct from `fallback`, whose value never came from the server and so keeps `loading: true`; use exactly one of the two.
|
|
812
|
+
|
|
796
813
|
Client-side navigation is unchanged: moving to another route runs that route's
|
|
797
814
|
loaders in the browser as usual. A `spa` page has no server render, so its
|
|
798
815
|
loader runs on the client on first mount.
|
|
@@ -320,6 +320,32 @@ Retries are always on and carry no backoff here. Production's jitter exists to d
|
|
|
320
320
|
- **Transport concerns** — connection info, rate limiting, the tenant header. Those are properties of the HTTP hop, not of the procedure; faking them here would only assert against the fake.
|
|
321
321
|
- **Undo capture and the metrics sample** — optional injections the serve entrypoint makes. Their absence changes nothing a handler can observe.
|
|
322
322
|
|
|
323
|
+
## Completing a fixture row — `fixtureRow`
|
|
324
|
+
|
|
325
|
+
`ctx.store` is the real mixin-wrapped store, so `store.insert` runs the same required-column validation production does: a payload that omits a NOT-NULL, no-default, non-auto-stamped column throws `TableValidationFailed` naming the column. That is deliberate — the test store is not laxer than Postgres, so a fixture can't pass on a row the database would reject. But it means a lean fixture (`insert('journal_entries', { id })`, an omitted required FK) now fails.
|
|
326
|
+
|
|
327
|
+
`fixtureRow(table, overrides)` completes the row for you. It fills every column the validator would flag with a schema-typed placeholder, then merges your overrides on top — so you write only the columns the test cares about and the rest are made valid:
|
|
328
|
+
|
|
329
|
+
```ts
|
|
330
|
+
import { fixtureRow, makeTestContext } from '@voltro/testing'
|
|
331
|
+
import { journalEntries } from '../schema/journal'
|
|
332
|
+
|
|
333
|
+
const ctx = makeTestContext({ subject, store: mockStore({ journal_entries: [] }) })
|
|
334
|
+
|
|
335
|
+
await ctx.store.insert('journal_entries', fixtureRow(journalEntries, {
|
|
336
|
+
amount: '100.00', // the columns THIS test asserts on
|
|
337
|
+
})) // entryNumber (unique), postedAt, … auto-filled
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
What it fills and what it leaves alone:
|
|
341
|
+
|
|
342
|
+
- **Fills** each required column with a value of the right shape — a `oneOf` column takes its first allowed value, a `unique` column gets a distinct value per call (so two fixtures don't collide on the key), `timestamp` / `date` get a fixed epoch, `decimal` / `bigint` a numeric string.
|
|
343
|
+
- **Leaves out** exactly what a caller may legitimately omit: nullable columns, defaulted columns, and the framework auto-stamped set (`id`, `tenantId`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy`, `deletedAt`, `deletedBy`) — the store stamps those from the subject and the table scheme.
|
|
344
|
+
- **Refuses to guess** a structured type (`json`, `bytes`, `vector`, `array`, `interval`, `raw`): it throws naming the column and telling you to pass it explicitly, rather than inventing a value that fails the codec obscurely.
|
|
345
|
+
- **Your override always wins** — including an explicit `null`. Don't assert on a synthesized placeholder; override anything the test inspects.
|
|
346
|
+
|
|
347
|
+
There is no flag to turn the validation off — a test store that accepts rows production rejects is a fake testing itself. `fixtureRow` is a runtime filler for the loose `store.insert(name, row)` path. For **compile-time** payload typing (a missing required column caught as a type error at the call), use [`insertRow` / `upsertRow`](/docs/data/mutations) from `@voltro/database`, which check against `InferInsertRow<T>`.
|
|
348
|
+
|
|
323
349
|
## Subject + tenant re-scoping
|
|
324
350
|
|
|
325
351
|
`withSubject` and `withTenant` re-scope to a different principal for one block, sharing the **same** underlying data — so cross-subject reads exercise real tenant scoping, not a closure stub. This is how you prove isolation: write as one tenant, then assert another tenant can't see the row.
|
|
@@ -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.11.
|
|
15
|
-
"@voltro/cli": "0.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/env": "0.11.
|
|
18
|
-
"@voltro/protocol": "0.11.
|
|
19
|
-
"@voltro/runtime": "0.11.
|
|
14
|
+
"@voltro/ai": "0.11.3",
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/env": "0.11.3",
|
|
18
|
+
"@voltro/protocol": "0.11.3",
|
|
19
|
+
"@voltro/runtime": "0.11.3",
|
|
20
20
|
"effect": "^3.21.2"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@voltro/testing": "0.11.
|
|
23
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/env": "0.11.
|
|
18
|
-
"@voltro/plugin-auth": "0.11.
|
|
19
|
-
"@voltro/protocol": "0.11.
|
|
20
|
-
"@voltro/runtime": "0.11.
|
|
21
|
-
"@voltro/sql-postgres": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/env": "0.11.3",
|
|
18
|
+
"@voltro/plugin-auth": "0.11.3",
|
|
19
|
+
"@voltro/protocol": "0.11.3",
|
|
20
|
+
"@voltro/runtime": "0.11.3",
|
|
21
|
+
"@voltro/sql-postgres": "0.11.3",
|
|
22
22
|
"effect": "^3.21.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.11.
|
|
25
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/env": "0.11.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
19
|
-
"@voltro/protocol": "0.11.
|
|
20
|
-
"@voltro/runtime": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/env": "0.11.3",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
19
|
+
"@voltro/protocol": "0.11.3",
|
|
20
|
+
"@voltro/runtime": "0.11.3",
|
|
21
21
|
"effect": "^3.21.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@voltro/testing": "0.11.
|
|
24
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/env": "0.11.
|
|
18
|
-
"@voltro/plugin-deactivation": "0.11.
|
|
19
|
-
"@voltro/protocol": "0.11.
|
|
20
|
-
"@voltro/runtime": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/env": "0.11.3",
|
|
18
|
+
"@voltro/plugin-deactivation": "0.11.3",
|
|
19
|
+
"@voltro/protocol": "0.11.3",
|
|
20
|
+
"@voltro/runtime": "0.11.3",
|
|
21
21
|
"effect": "^3.21.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@voltro/testing": "0.11.
|
|
24
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/env": "0.11.
|
|
18
|
-
"@voltro/plugin-mail": "0.11.
|
|
19
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
20
|
-
"@voltro/protocol": "0.11.
|
|
21
|
-
"@voltro/runtime": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/env": "0.11.3",
|
|
18
|
+
"@voltro/plugin-mail": "0.11.3",
|
|
19
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
20
|
+
"@voltro/protocol": "0.11.3",
|
|
21
|
+
"@voltro/runtime": "0.11.3",
|
|
22
22
|
"effect": "^3.21.2",
|
|
23
23
|
"react": "^19.0.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.11.
|
|
26
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/env": "0.11.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
19
|
-
"@voltro/plugin-storage": "0.11.
|
|
20
|
-
"@voltro/protocol": "0.11.
|
|
21
|
-
"@voltro/runtime": "0.11.
|
|
22
|
-
"@voltro/sql-mysql": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/env": "0.11.3",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
19
|
+
"@voltro/plugin-storage": "0.11.3",
|
|
20
|
+
"@voltro/protocol": "0.11.3",
|
|
21
|
+
"@voltro/runtime": "0.11.3",
|
|
22
|
+
"@voltro/sql-mysql": "0.11.3",
|
|
23
23
|
"effect": "^3.21.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.11.
|
|
26
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
14
|
-
"@voltro/database": "0.11.
|
|
15
|
-
"@voltro/env": "0.11.
|
|
16
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
17
|
-
"@voltro/plugin-storage": "0.11.
|
|
18
|
-
"@voltro/protocol": "0.11.
|
|
19
|
-
"@voltro/runtime": "0.11.
|
|
13
|
+
"@voltro/cli": "0.11.3",
|
|
14
|
+
"@voltro/database": "0.11.3",
|
|
15
|
+
"@voltro/env": "0.11.3",
|
|
16
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
17
|
+
"@voltro/plugin-storage": "0.11.3",
|
|
18
|
+
"@voltro/protocol": "0.11.3",
|
|
19
|
+
"@voltro/runtime": "0.11.3",
|
|
20
20
|
"effect": "^3.21.2"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@voltro/testing": "0.11.
|
|
23
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
15
|
-
"@voltro/database": "0.11.
|
|
16
|
-
"@voltro/env": "0.11.
|
|
17
|
-
"@voltro/plugin-governance": "0.11.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
19
|
-
"@voltro/protocol": "0.11.
|
|
20
|
-
"@voltro/runtime": "0.11.
|
|
14
|
+
"@voltro/cli": "0.11.3",
|
|
15
|
+
"@voltro/database": "0.11.3",
|
|
16
|
+
"@voltro/env": "0.11.3",
|
|
17
|
+
"@voltro/plugin-governance": "0.11.3",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
19
|
+
"@voltro/protocol": "0.11.3",
|
|
20
|
+
"@voltro/runtime": "0.11.3",
|
|
21
21
|
"effect": "^3.21.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@voltro/testing": "0.11.
|
|
24
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
15
|
-
"@voltro/database": "0.11.
|
|
16
|
-
"@voltro/env": "0.11.
|
|
17
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
18
|
-
"@voltro/protocol": "0.11.
|
|
19
|
-
"@voltro/runtime": "0.11.
|
|
20
|
-
"@voltro/workflow": "0.11.
|
|
14
|
+
"@voltro/cli": "0.11.3",
|
|
15
|
+
"@voltro/database": "0.11.3",
|
|
16
|
+
"@voltro/env": "0.11.3",
|
|
17
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
18
|
+
"@voltro/protocol": "0.11.3",
|
|
19
|
+
"@voltro/runtime": "0.11.3",
|
|
20
|
+
"@voltro/workflow": "0.11.3",
|
|
21
21
|
"effect": "^3.21.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@voltro/testing": "0.11.
|
|
24
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/env": "0.11.
|
|
18
|
-
"@voltro/plugin-flags": "0.11.
|
|
19
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
20
|
-
"@voltro/protocol": "0.11.
|
|
21
|
-
"@voltro/runtime": "0.11.
|
|
22
|
-
"@voltro/sql-postgres": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/env": "0.11.3",
|
|
18
|
+
"@voltro/plugin-flags": "0.11.3",
|
|
19
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
20
|
+
"@voltro/protocol": "0.11.3",
|
|
21
|
+
"@voltro/runtime": "0.11.3",
|
|
22
|
+
"@voltro/sql-postgres": "0.11.3",
|
|
23
23
|
"effect": "^3.21.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@voltro/testing": "0.11.
|
|
26
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/env": "0.11.
|
|
18
|
-
"@voltro/plugin-audit": "0.11.
|
|
19
|
-
"@voltro/plugin-governance": "0.11.
|
|
20
|
-
"@voltro/protocol": "0.11.
|
|
21
|
-
"@voltro/runtime": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/env": "0.11.3",
|
|
18
|
+
"@voltro/plugin-audit": "0.11.3",
|
|
19
|
+
"@voltro/plugin-governance": "0.11.3",
|
|
20
|
+
"@voltro/protocol": "0.11.3",
|
|
21
|
+
"@voltro/runtime": "0.11.3",
|
|
22
22
|
"effect": "^3.21.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.11.
|
|
25
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
15
|
-
"@voltro/database": "0.11.
|
|
16
|
-
"@voltro/env": "0.11.
|
|
17
|
-
"@voltro/kv": "0.11.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
19
|
-
"@voltro/protocol": "0.11.
|
|
20
|
-
"@voltro/runtime": "0.11.
|
|
14
|
+
"@voltro/cli": "0.11.3",
|
|
15
|
+
"@voltro/database": "0.11.3",
|
|
16
|
+
"@voltro/env": "0.11.3",
|
|
17
|
+
"@voltro/kv": "0.11.3",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
19
|
+
"@voltro/protocol": "0.11.3",
|
|
20
|
+
"@voltro/runtime": "0.11.3",
|
|
21
21
|
"effect": "^3.21.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@voltro/testing": "0.11.
|
|
24
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/env": "0.11.
|
|
18
|
-
"@voltro/plugin-moderation": "0.11.
|
|
19
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
20
|
-
"@voltro/protocol": "0.11.
|
|
21
|
-
"@voltro/runtime": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/env": "0.11.3",
|
|
18
|
+
"@voltro/plugin-moderation": "0.11.3",
|
|
19
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
20
|
+
"@voltro/protocol": "0.11.3",
|
|
21
|
+
"@voltro/runtime": "0.11.3",
|
|
22
22
|
"effect": "^3.21.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.11.
|
|
25
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
18
|
-
"@voltro/plugin-prometheus": "0.11.
|
|
19
|
-
"@voltro/plugin-sentry": "0.11.
|
|
20
|
-
"@voltro/protocol": "0.11.
|
|
21
|
-
"@voltro/runtime": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
18
|
+
"@voltro/plugin-prometheus": "0.11.3",
|
|
19
|
+
"@voltro/plugin-sentry": "0.11.3",
|
|
20
|
+
"@voltro/protocol": "0.11.3",
|
|
21
|
+
"@voltro/runtime": "0.11.3",
|
|
22
22
|
"effect": "^3.21.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.11.
|
|
25
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/env": "0.11.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
19
|
-
"@voltro/plugin-ratelimit": "0.11.
|
|
20
|
-
"@voltro/protocol": "0.11.
|
|
21
|
-
"@voltro/runtime": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/env": "0.11.3",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
19
|
+
"@voltro/plugin-ratelimit": "0.11.3",
|
|
20
|
+
"@voltro/protocol": "0.11.3",
|
|
21
|
+
"@voltro/runtime": "0.11.3",
|
|
22
22
|
"effect": "^3.21.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.11.
|
|
25
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/env": "0.11.
|
|
18
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
19
|
-
"@voltro/plugin-rbac": "0.11.
|
|
20
|
-
"@voltro/protocol": "0.11.
|
|
21
|
-
"@voltro/runtime": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/env": "0.11.3",
|
|
18
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
19
|
+
"@voltro/plugin-rbac": "0.11.3",
|
|
20
|
+
"@voltro/protocol": "0.11.3",
|
|
21
|
+
"@voltro/runtime": "0.11.3",
|
|
22
22
|
"effect": "^3.21.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@voltro/testing": "0.11.
|
|
25
|
+
"@voltro/testing": "0.11.3",
|
|
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.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/plugin-openapi": "0.11.
|
|
18
|
-
"@voltro/protocol": "0.11.
|
|
19
|
-
"@voltro/runtime": "0.11.
|
|
20
|
-
"@voltro/sql-postgres": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/plugin-openapi": "0.11.3",
|
|
18
|
+
"@voltro/protocol": "0.11.3",
|
|
19
|
+
"@voltro/runtime": "0.11.3",
|
|
20
|
+
"@voltro/sql-postgres": "0.11.3",
|
|
21
21
|
"effect": "^3.21.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@voltro/testing": "0.11.
|
|
24
|
+
"@voltro/testing": "0.11.3",
|
|
25
25
|
"typescript": "^5.7.0",
|
|
26
26
|
"vitest": "^3.0.0"
|
|
27
27
|
}
|
|
@@ -12,20 +12,20 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@effect/platform": "^0.96.1",
|
|
14
14
|
"@effect/rpc": "^0.75.1",
|
|
15
|
-
"@voltro/cli": "0.11.
|
|
16
|
-
"@voltro/database": "0.11.
|
|
17
|
-
"@voltro/plugin-analytics-postgres": "0.11.
|
|
18
|
-
"@voltro/plugin-billing": "0.11.
|
|
19
|
-
"@voltro/plugin-multitenancy": "0.11.
|
|
20
|
-
"@voltro/plugin-notifications": "0.11.
|
|
21
|
-
"@voltro/plugin-presence": "0.11.
|
|
22
|
-
"@voltro/protocol": "0.11.
|
|
23
|
-
"@voltro/runtime": "0.11.
|
|
24
|
-
"@voltro/sql-postgres": "0.11.
|
|
15
|
+
"@voltro/cli": "0.11.3",
|
|
16
|
+
"@voltro/database": "0.11.3",
|
|
17
|
+
"@voltro/plugin-analytics-postgres": "0.11.3",
|
|
18
|
+
"@voltro/plugin-billing": "0.11.3",
|
|
19
|
+
"@voltro/plugin-multitenancy": "0.11.3",
|
|
20
|
+
"@voltro/plugin-notifications": "0.11.3",
|
|
21
|
+
"@voltro/plugin-presence": "0.11.3",
|
|
22
|
+
"@voltro/protocol": "0.11.3",
|
|
23
|
+
"@voltro/runtime": "0.11.3",
|
|
24
|
+
"@voltro/sql-postgres": "0.11.3",
|
|
25
25
|
"effect": "^3.21.2"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@voltro/testing": "0.11.
|
|
28
|
+
"@voltro/testing": "0.11.3",
|
|
29
29
|
"typescript": "^5.7.0",
|
|
30
30
|
"vitest": "^3.0.0"
|
|
31
31
|
}
|