jazz-tools 2.0.0-alpha.38 → 2.0.0-alpha.39
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/bin/docs-index.db +0 -0
- package/bin/docs-index.txt +599 -157
- package/bin/native/jazz-tools-darwin-arm64 +0 -0
- package/bin/native/jazz-tools-darwin-x64 +0 -0
- package/bin/native/jazz-tools-linux-arm64 +0 -0
- package/bin/native/jazz-tools-linux-x64 +0 -0
- package/dist/mcp/build-index.test.js +0 -24
- package/dist/mcp/build-index.test.js.map +1 -1
- package/package.json +4 -4
package/bin/docs-index.db
CHANGED
|
Binary file
|
package/bin/docs-index.txt
CHANGED
|
@@ -256,15 +256,141 @@ function App() {
|
|
|
256
256
|
```
|
|
257
257
|
|
|
258
258
|
The secret is the user's identity. If it's lost (e.g. `localStorage` cleared), the identity is
|
|
259
|
-
gone and any data owned by that user becomes inaccessible
|
|
260
|
-
external provider.
|
|
259
|
+
gone and any data owned by that user becomes inaccessible unless you restore it from a recovery
|
|
260
|
+
passphrase, a passkey backup, or an external provider you linked earlier.
|
|
261
|
+
|
|
262
|
+
## Backing up and restoring the secret
|
|
263
|
+
|
|
264
|
+
You can keep local-first auth fully serverless and still make it recoverable. Jazz ships two backup
|
|
265
|
+
helpers for the same 32-byte secret:
|
|
266
|
+
|
|
267
|
+
| Method | Platforms | Best for | Trade-offs |
|
|
268
|
+
| --------------------------- | ------------- | ---------------------------------------------- | ---------------------------------------------------- |
|
|
269
|
+
| `jazz-tools/passphrase` | Browser, Expo | Manual backup users can carry anywhere | User must safely store a 24-word recovery passphrase |
|
|
270
|
+
| `jazz-tools/passkey-backup` | Browser only | Fast recovery on devices that support passkeys | Requires WebAuthn and a stable relying-party ID |
|
|
271
|
+
|
|
272
|
+
### Recovery passphrase
|
|
273
|
+
|
|
274
|
+
`jazz-tools/passphrase` converts the local-first secret into a 24-word English recovery
|
|
275
|
+
passphrase. Restoring that passphrase produces the exact same secret, so the user keeps the same
|
|
276
|
+
Jazz identity.
|
|
277
|
+
|
|
278
|
+
```tsx
|
|
279
|
+
|
|
280
|
+
isLoading: boolean;
|
|
281
|
+
recoveryPhrase: string | null;
|
|
282
|
+
} {
|
|
283
|
+
const { secret, isLoading } = useLocalFirstAuth();
|
|
284
|
+
|
|
285
|
+
return {
|
|
286
|
+
isLoading,
|
|
287
|
+
recoveryPhrase: secret ? RecoveryPhrase.fromSecret(secret) : null,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
```tsx
|
|
293
|
+
|
|
294
|
+
isLoading: boolean;
|
|
295
|
+
recoveryPhrase: string | null;
|
|
296
|
+
} {
|
|
297
|
+
const { secret, isLoading } = useLocalFirstAuth();
|
|
298
|
+
|
|
299
|
+
return {
|
|
300
|
+
isLoading,
|
|
301
|
+
recoveryPhrase: secret ? RecoveryPhrase.fromSecret(secret) : null,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
To restore, decode the user-provided passphrase back into a secret and hand it back to your
|
|
307
|
+
local-first auth flow:
|
|
308
|
+
|
|
309
|
+
```tsx
|
|
310
|
+
|
|
311
|
+
const { login } = useLocalFirstAuth();
|
|
312
|
+
|
|
313
|
+
return async (userInput: string) => {
|
|
314
|
+
const restoredSecret = RecoveryPhrase.toSecret(userInput);
|
|
315
|
+
await login(restoredSecret);
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
```tsx
|
|
321
|
+
|
|
322
|
+
const { login } = useLocalFirstAuth();
|
|
323
|
+
|
|
324
|
+
return async (userInput: string) => {
|
|
325
|
+
const restoredSecret = RecoveryPhrase.toSecret(userInput);
|
|
326
|
+
await login(restoredSecret);
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
The parser accepts upper-case input and extra whitespace. Invalid input throws
|
|
332
|
+
`RecoveryPhraseError` with codes like `invalid-length`, `invalid-word`, and
|
|
333
|
+
`invalid-checksum`.
|
|
334
|
+
|
|
335
|
+
In React and Expo, prefer `useLocalFirstAuth()` for backup and restore so the mounted
|
|
336
|
+
`JazzProvider` updates immediately. The lower-level `BrowserAuthSecretStore` and
|
|
337
|
+
`ExpoAuthSecretStore` APIs are still useful outside React-based UIs.
|
|
338
|
+
|
|
339
|
+
### Passkey backup
|
|
340
|
+
|
|
341
|
+
For browser apps, `jazz-tools/passkey-backup` stores the same secret in a resident WebAuthn
|
|
342
|
+
credential. That gives users passkey-style recovery without adding a server-side auth provider.
|
|
343
|
+
|
|
344
|
+
Create the passkey from the current local-first secret:
|
|
345
|
+
|
|
346
|
+
```tsx
|
|
347
|
+
|
|
348
|
+
isLoading: boolean;
|
|
349
|
+
backupWithPasskey: (displayName: string) => Promise<void>;
|
|
350
|
+
} {
|
|
351
|
+
const { secret, isLoading } = useLocalFirstAuth();
|
|
352
|
+
|
|
353
|
+
return {
|
|
354
|
+
isLoading,
|
|
355
|
+
backupWithPasskey: async (displayName: string) => {
|
|
356
|
+
if (!secret) {
|
|
357
|
+
throw new Error("Local-first secret is not ready yet");
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
await passkeyBackup.backup(secret, displayName);
|
|
361
|
+
},
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
Restore from the passkey by reading the secret back and passing it to `login(...)` from
|
|
367
|
+
`useLocalFirstAuth()`:
|
|
368
|
+
|
|
369
|
+
```tsx
|
|
370
|
+
|
|
371
|
+
const { login } = useLocalFirstAuth();
|
|
372
|
+
|
|
373
|
+
return async () => {
|
|
374
|
+
const restoredSecret = await passkeyBackup.restore();
|
|
375
|
+
await login(restoredSecret);
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
Use a stable `appHostname` everywhere you want passkey recovery to work. It becomes the WebAuthn
|
|
381
|
+
relying-party ID, so changing it creates a different passkey namespace. `backup(secret,
|
|
382
|
+
displayName)` also needs a user-visible name for the platform passkey sheet.
|
|
383
|
+
|
|
384
|
+
Handle `PasskeyBackupError` in your UI to surface cases like unsupported browsers, no saved
|
|
385
|
+
credential, or missing user verification. Keep a recovery passphrase or external sign-in as a
|
|
386
|
+
fallback if the user might lose access to their passkey provider.
|
|
261
387
|
|
|
262
388
|
## Server configuration
|
|
263
389
|
|
|
264
390
|
Local-first auth is enabled by default in development. In production, enable it explicitly:
|
|
265
391
|
|
|
266
392
|
```bash
|
|
267
|
-
jazz-tools server --allow-local-first-auth
|
|
393
|
+
pnpm dlx jazz-tools@alpha server --allow-local-first-auth
|
|
268
394
|
```
|
|
269
395
|
|
|
270
396
|
No JWKS endpoint is needed — the token is self-contained and the server can verify it on its own.
|
|
@@ -565,7 +691,7 @@ We can define permissions in `permissions.ts`:
|
|
|
565
691
|
|
|
566
692
|
Write your permissions policies in `permissions.ts` next to `schema.ts`. By default Jazz looks for both files at your project root — except in SvelteKit projects, where they should live in `src/lib/` (the standard location for shared app code).
|
|
567
693
|
|
|
568
|
-
Run `
|
|
694
|
+
Run `pnpm dlx jazz-tools@alpha validate` before publishing to surface warnings about tables with no explicit permission policy. You do not need to write a schema migration to update permissions policies. Push the updated policies by running `pnpm dlx jazz-tools@alpha deploy <appId>`.
|
|
569
695
|
|
|
570
696
|
Apps that do not need user-scoped filtering should still declare explicit grants (`policy.todos.allowRead.always()` or `policy.todos.allowRead.where({})`) once a compiled bundle is loaded.
|
|
571
697
|
|
|
@@ -1367,79 +1493,109 @@ DESCRIPTION:Set up Jazz in your app — works out of the box with most framework
|
|
|
1367
1493
|
|
|
1368
1494
|
## Zero-config client setup
|
|
1369
1495
|
|
|
1370
|
-
Every client needs an `appId`. Add a `serverUrl` to enable sync. For
|
|
1496
|
+
Every client needs an `appId` and a `secret` for [local-first auth](/docs/auth/local-first-auth). Without `secret`, the client runs in anonymous mode and every write is rejected with `AnonymousWriteDeniedError`. Add a `serverUrl` to enable sync. For the full auth matrix (anonymous, local-first, external JWT), see [Authentication](/docs/auth/authentication).
|
|
1371
1497
|
|
|
1372
1498
|
```tsx
|
|
1373
1499
|
|
|
1374
|
-
|
|
1500
|
+
const { secret, isLoading } = useLocalFirstAuth();
|
|
1375
1501
|
|
|
1376
|
-
|
|
1502
|
+
if (isLoading || !secret) return null;
|
|
1503
|
+
|
|
1504
|
+
return (
|
|
1377
1505
|
|
|
1378
1506
|
);
|
|
1379
1507
|
}
|
|
1380
1508
|
```
|
|
1381
1509
|
|
|
1382
|
-
|
|
1383
|
-
<script setup lang="ts">
|
|
1510
|
+
`useLocalFirstAuth()` from `jazz-tools/react` loads the device secret (or generates one on first run) and exposes `login` / `signOut` for switching identity.
|
|
1384
1511
|
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
}
|
|
1388
|
-
|
|
1512
|
+
```vue title="App.vue"
|
|
1513
|
+
<script setup lang="ts">
|
|
1514
|
+
import { createJazzClient, JazzProvider } from "jazz-tools/vue";
|
|
1515
|
+
import { BrowserAuthSecretStore } from "jazz-tools";
|
|
1516
|
+
import TodoList from "./TodoList.vue";
|
|
1389
1517
|
|
|
1390
|
-
|
|
1518
|
+
const secret = await BrowserAuthSecretStore.getOrCreateSecret();
|
|
1391
1519
|
|
|
1392
|
-
|
|
1520
|
+
const client = createJazzClient({
|
|
1521
|
+
appId: "<your-app-id>",
|
|
1522
|
+
secret,
|
|
1523
|
+
});
|
|
1524
|
+
</script>
|
|
1393
1525
|
|
|
1394
|
-
<template
|
|
1395
|
-
<p>Loading...</p>
|
|
1396
|
-
</template>
|
|
1526
|
+
<template>
|
|
1397
1527
|
|
|
1398
|
-
</
|
|
1528
|
+
<h1>Todos</h1>
|
|
1399
1529
|
|
|
1400
|
-
|
|
1530
|
+
</template>
|
|
1531
|
+
```
|
|
1401
1532
|
|
|
1402
|
-
```svelte
|
|
1533
|
+
```svelte title="App.svelte"
|
|
1534
|
+
<script lang="ts">
|
|
1535
|
+
import {
|
|
1536
|
+
createJazzClient,
|
|
1537
|
+
JazzSvelteProvider,
|
|
1538
|
+
BrowserAuthSecretStore,
|
|
1539
|
+
} from 'jazz-tools/svelte';
|
|
1540
|
+
import TodoList from './TodoList.svelte';
|
|
1403
1541
|
|
|
1404
|
-
|
|
1405
|
-
import { createJazzClient, JazzSvelteProvider } from 'jazz-tools/svelte';
|
|
1406
|
-
import TodoList from './TodoList.svelte';
|
|
1542
|
+
let client = $state | null>(null);
|
|
1407
1543
|
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
</script>
|
|
1544
|
+
BrowserAuthSecretStore.getOrCreateSecret().then((secret) => {
|
|
1545
|
+
client = createJazzClient({ appId: '<your-app-id>', secret });
|
|
1546
|
+
});
|
|
1547
|
+
</script>
|
|
1412
1548
|
|
|
1413
|
-
|
|
1414
|
-
<h1>Todos</h1>
|
|
1549
|
+
{#if client}
|
|
1415
1550
|
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
<p>Loading...</p>
|
|
1419
|
-
{/snippet}
|
|
1551
|
+
{#snippet children()}
|
|
1552
|
+
<h1>Todos</h1>
|
|
1420
1553
|
|
|
1421
|
-
|
|
1554
|
+
{/snippet}
|
|
1555
|
+
{#snippet fallback()}
|
|
1556
|
+
<p>Loading...</p>
|
|
1557
|
+
{/snippet}
|
|
1558
|
+
|
|
1559
|
+
{/if}
|
|
1560
|
+
```
|
|
1422
1561
|
|
|
1423
1562
|
```tsx
|
|
1424
1563
|
|
|
1564
|
+
const { secret, isLoading } = useLocalFirstAuth();
|
|
1565
|
+
|
|
1566
|
+
if (isLoading || !secret) return null;
|
|
1567
|
+
|
|
1425
1568
|
return (
|
|
1426
1569
|
|
|
1427
|
-
|
|
1570
|
+
My App
|
|
1428
1571
|
|
|
1429
1572
|
);
|
|
1430
1573
|
}
|
|
1431
1574
|
```
|
|
1432
1575
|
|
|
1576
|
+
`ExpoAuthSecretStore` persists the secret in the device's secure storage. Or use `useLocalFirstAuth()` from `jazz-tools/expo` for a hook-based API.
|
|
1577
|
+
|
|
1433
1578
|
```ts
|
|
1434
|
-
|
|
1435
|
-
|
|
1579
|
+
|
|
1580
|
+
const secret = await BrowserAuthSecretStore.getOrCreateSecret({ appId: "my-app" });
|
|
1581
|
+
|
|
1582
|
+
return createDb({
|
|
1583
|
+
appId: "my-app",
|
|
1436
1584
|
env: "dev",
|
|
1437
1585
|
userBranch: "main",
|
|
1438
|
-
|
|
1586
|
+
secret,
|
|
1439
1587
|
});
|
|
1588
|
+
}
|
|
1440
1589
|
```
|
|
1441
1590
|
|
|
1442
|
-
|
|
1591
|
+
The secret is generated on first load, persisted locally (`localStorage` in the browser, secure storage on Expo), and reused on every subsequent run — the same device keeps the same Jazz identity.
|
|
1592
|
+
|
|
1593
|
+
Using Jazz completely offline? Leave out `serverUrl` and everything above still works — writes
|
|
1594
|
+
stay on the device until a server is reachable.
|
|
1595
|
+
|
|
1596
|
+
The local-first secret **is** the user's identity. If it's lost (e.g. cleared `localStorage`), the
|
|
1597
|
+
identity is gone and any data owned by that user becomes inaccessible. Plan for recovery with
|
|
1598
|
+
[backup and restore](/docs/auth/local-first-auth#backing-up-and-restoring-the-secret).
|
|
1443
1599
|
|
|
1444
1600
|
Some bundlers and runtimes cannot automatically resolve Jazz's Wasm and worker assets. See [Runtime source overrides](#runtime-source-overrides) below.
|
|
1445
1601
|
|
|
@@ -1451,6 +1607,127 @@ For React Native and Expo clients, make sure `serverUrl` points to a host your r
|
|
|
1451
1607
|
|
|
1452
1608
|
Browser clients default to `driver: { type: "persistent" }`, which stores data locally for offline support. Set `driver: { type: "memory" }` to keep data in memory only. This option requires you to set a `serverUrl` since nothing is saved locally.
|
|
1453
1609
|
|
|
1610
|
+
## Dev plugins
|
|
1611
|
+
|
|
1612
|
+
Jazz ships bundler plugins that remove boilerplate in development. They start a local Jazz dev server, watch `schema.ts` and `permissions.ts`, auto-push both on change, and inject the app ID and server URL as framework-appropriate env vars so `createJazzClient({ appId, serverUrl })` picks them up without any manual wiring.
|
|
1613
|
+
|
|
1614
|
+
```ts title="vite.config.ts"
|
|
1615
|
+
import { defineConfig } from "vite";
|
|
1616
|
+
import react from "@vitejs/plugin-react";
|
|
1617
|
+
import { jazzPlugin } from "jazz-tools/dev/vite";
|
|
1618
|
+
|
|
1619
|
+
export default defineConfig({
|
|
1620
|
+
plugins: [react(), jazzPlugin()],
|
|
1621
|
+
});
|
|
1622
|
+
```
|
|
1623
|
+
|
|
1624
|
+
Injects `VITE_JAZZ_APP_ID` and `VITE_JAZZ_SERVER_URL` into `import.meta.env`.
|
|
1625
|
+
|
|
1626
|
+
```ts title="vite.config.ts"
|
|
1627
|
+
import { defineConfig } from "vite";
|
|
1628
|
+
import vue from "@vitejs/plugin-vue";
|
|
1629
|
+
import { jazzPlugin } from "jazz-tools/dev/vite";
|
|
1630
|
+
|
|
1631
|
+
export default defineConfig({
|
|
1632
|
+
plugins: [vue(), jazzPlugin()],
|
|
1633
|
+
});
|
|
1634
|
+
```
|
|
1635
|
+
|
|
1636
|
+
Injects `VITE_JAZZ_APP_ID` and `VITE_JAZZ_SERVER_URL` into `import.meta.env`.
|
|
1637
|
+
|
|
1638
|
+
```ts title="vite.config.ts"
|
|
1639
|
+
import { defineConfig } from "vite";
|
|
1640
|
+
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
1641
|
+
import { jazzSvelteKit } from "jazz-tools/dev/sveltekit";
|
|
1642
|
+
|
|
1643
|
+
export default defineConfig({
|
|
1644
|
+
plugins: [svelte(), jazzSvelteKit()],
|
|
1645
|
+
});
|
|
1646
|
+
```
|
|
1647
|
+
|
|
1648
|
+
Injects `PUBLIC_JAZZ_APP_ID` and `PUBLIC_JAZZ_SERVER_URL`. Use `jazzSvelteKit` for both Vite+Svelte and SvelteKit projects.
|
|
1649
|
+
|
|
1650
|
+
```ts title="vite.config.ts"
|
|
1651
|
+
import { sveltekit } from "@sveltejs/kit/vite";
|
|
1652
|
+
import { jazzSvelteKit } from "jazz-tools/dev/sveltekit";
|
|
1653
|
+
import { defineConfig } from "vite";
|
|
1654
|
+
|
|
1655
|
+
export default defineConfig({
|
|
1656
|
+
// jazzSvelteKit must come before sveltekit so it populates
|
|
1657
|
+
// process.env before SvelteKit captures $env/dynamic/public.
|
|
1658
|
+
plugins: [jazzSvelteKit(), sveltekit()],
|
|
1659
|
+
});
|
|
1660
|
+
```
|
|
1661
|
+
|
|
1662
|
+
Defaults `schemaDir` to `src/lib/`. Injects `PUBLIC_JAZZ_APP_ID` and `PUBLIC_JAZZ_SERVER_URL`.
|
|
1663
|
+
|
|
1664
|
+
```ts title="next.config.ts"
|
|
1665
|
+
import { withJazz } from "jazz-tools/dev/next";
|
|
1666
|
+
|
|
1667
|
+
export default withJazz({});
|
|
1668
|
+
```
|
|
1669
|
+
|
|
1670
|
+
Injects `NEXT_PUBLIC_JAZZ_APP_ID` and `NEXT_PUBLIC_JAZZ_SERVER_URL`. Only runs in the Next.js dev phase; production builds are untouched.
|
|
1671
|
+
|
|
1672
|
+
```js title="metro.config.js"
|
|
1673
|
+
import { getDefaultConfig } from "expo/metro-config";
|
|
1674
|
+
import { withJazz } from "jazz-tools/dev/expo";
|
|
1675
|
+
|
|
1676
|
+
const config = getDefaultConfig(__dirname);
|
|
1677
|
+
|
|
1678
|
+
await withJazz(config, { schemaDir: __dirname });
|
|
1679
|
+
|
|
1680
|
+
export default config;
|
|
1681
|
+
```
|
|
1682
|
+
|
|
1683
|
+
Injects `EXPO_PUBLIC_JAZZ_APP_ID` and `EXPO_PUBLIC_JAZZ_SERVER_URL` via `expoConfig.extra`. Skipped automatically when `NODE_ENV=production`.
|
|
1684
|
+
|
|
1685
|
+
On first run the plugin generates an app ID, persists it to `.env`, and starts a local Jazz server under `node_modules/.cache/jazz-dev-server/`. Every subsequent run reuses both.
|
|
1686
|
+
|
|
1687
|
+
### Env var names
|
|
1688
|
+
|
|
1689
|
+
Each plugin writes the same two values (`appId`, `serverUrl`) under the prefix its bundler uses to expose env vars to the client bundle. SvelteKit's `PUBLIC_*` prefix also covers Svelte+Vite via `jazzSvelteKit`. Secrets are always unprefixed — they're server-only: `JAZZ_ADMIN_SECRET` and `BACKEND_SECRET`.
|
|
1690
|
+
|
|
1691
|
+
| Bundler | App ID | Server URL |
|
|
1692
|
+
| --------- | ------------------------- | ----------------------------- |
|
|
1693
|
+
| Vite | `VITE_JAZZ_APP_ID` | `VITE_JAZZ_SERVER_URL` |
|
|
1694
|
+
| Next.js | `NEXT_PUBLIC_JAZZ_APP_ID` | `NEXT_PUBLIC_JAZZ_SERVER_URL` |
|
|
1695
|
+
| SvelteKit | `PUBLIC_JAZZ_APP_ID` | `PUBLIC_JAZZ_SERVER_URL` |
|
|
1696
|
+
| Expo | `EXPO_PUBLIC_JAZZ_APP_ID` | `EXPO_PUBLIC_JAZZ_SERVER_URL` |
|
|
1697
|
+
|
|
1698
|
+
Jazz Cloud sync URL: `https://v2.sync.jazz.tools/`. For self-hosted deployments, point the server URL at your own host.
|
|
1699
|
+
|
|
1700
|
+
### Plugin options
|
|
1701
|
+
|
|
1702
|
+
All plugins accept the same base options:
|
|
1703
|
+
|
|
1704
|
+
| Option | Description |
|
|
1705
|
+
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1706
|
+
| `server` | `true` (default) starts an embedded local server. `false` disables the plugin. A URL string connects to an existing server. An object configures the embedded server (see below). |
|
|
1707
|
+
| `schemaDir` | Directory containing `schema.ts` and `permissions.ts`. Defaults to the project root, or `src/lib/` for SvelteKit. |
|
|
1708
|
+
| `appId` | Override the app ID. Defaults to the value in `.env`, otherwise a generated UUID persisted on first run. |
|
|
1709
|
+
| `adminSecret` | Required when `server` is a URL. Ignored for the embedded server (a random secret is generated). |
|
|
1710
|
+
|
|
1711
|
+
When `server` is an object, the embedded server accepts: `port` (default: random), `dataDir` (default: `node_modules/.cache/jazz-dev-server`), `inMemory`, `allowLocalFirstAuth`, `jwksUrl`, and the catalogue authority forwarding fields. See [Server Setup](/docs/getting-started/server-setup) for the full semantics.
|
|
1712
|
+
|
|
1713
|
+
### Connecting to an existing server
|
|
1714
|
+
|
|
1715
|
+
Pass a URL to point the plugin at a server you already run — hosted cloud, staging, or a shared self-hosted instance. You must also provide `adminSecret` (or set `JAZZ_ADMIN_SECRET`) so the plugin can push schema and permissions.
|
|
1716
|
+
|
|
1717
|
+
```ts title="vite.config.ts"
|
|
1718
|
+
jazzPlugin({
|
|
1719
|
+
server: "https://my-jazz-server.example.com",
|
|
1720
|
+
adminSecret: process.env.JAZZ_ADMIN_SECRET,
|
|
1721
|
+
appId: process.env.VITE_JAZZ_APP_ID,
|
|
1722
|
+
});
|
|
1723
|
+
```
|
|
1724
|
+
|
|
1725
|
+
### What auto-pushes
|
|
1726
|
+
|
|
1727
|
+
On startup and on every change to `schema.ts` or `permissions.ts`, the plugin publishes the current structural schema and permissions bundle to the server. Structural schema push works without an admin secret in development, so a bare `schema.ts` edit is enough to see clients pick up the new shape. Permission pushes use the server's admin secret (generated for the embedded server, supplied by you for a remote server).
|
|
1728
|
+
|
|
1729
|
+
Auto-push covers the development loop. For production — or any change that needs a schema migration — run `pnpm dlx jazz-tools@alpha deploy <appId>` to publish the migration, the new schema, and the current permissions in one step. See [Migrations](/docs/schemas/migrations).
|
|
1730
|
+
|
|
1454
1731
|
## Runtime source overrides
|
|
1455
1732
|
|
|
1456
1733
|
Use `runtimeSources` when Jazz can't automatically find its internal assets. This usually only happens with non-standard bundler configurations or on edge runtimes like Cloudflare Workers.
|
|
@@ -1570,10 +1847,7 @@ DESCRIPTION:Hosted and self-hosted database server configuration, app provisioni
|
|
|
1570
1847
|
|
|
1571
1848
|
## Hosted database server
|
|
1572
1849
|
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
This manual provisioning process is temporary while Jazz 2 is under heavy development.
|
|
1576
|
-
Self-service onboarding is planned.
|
|
1850
|
+
Your app ID namespaces your data for storage and sync. Click below to generate one on the Jazz hosted cloud — you'll also get the secrets you need to deploy permissions later.
|
|
1577
1851
|
|
|
1578
1852
|
## Self-hosted database server
|
|
1579
1853
|
|
|
@@ -1587,7 +1861,7 @@ npx jazz-tools@alpha server "$JAZZ_APP_ID" \
|
|
|
1587
1861
|
|
|
1588
1862
|
```
|
|
1589
1863
|
|
|
1590
|
-
`jazz-tools server ` currently supports:
|
|
1864
|
+
`jazz-tools@alpha server ` currently supports:
|
|
1591
1865
|
|
|
1592
1866
|
| Option | Purpose | Environment variable | Default |
|
|
1593
1867
|
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | ------------------------- |
|
|
@@ -1694,6 +1968,105 @@ pub async fn list_todos_for_request(
|
|
|
1694
1968
|
}
|
|
1695
1969
|
```
|
|
1696
1970
|
|
|
1971
|
+
===PAGE:guides/better-auth-adapter===
|
|
1972
|
+
TITLE:Better Auth Adapter
|
|
1973
|
+
DESCRIPTION:Use Better Auth with Jazz as the database adapter.
|
|
1974
|
+
|
|
1975
|
+
The Jazz Better Auth adapter lets Better Auth store its tables in Jazz. For general Better Auth setup (route handlers, client, plugins), see the [Better Auth documentation](https://www.better-auth.com/docs).
|
|
1976
|
+
|
|
1977
|
+
## Schema Workflow
|
|
1978
|
+
|
|
1979
|
+
Better Auth tables live in a generated `schema-better-auth/` module that your app schema spreads into its own table map. This keeps Better Auth's tables in the same Jazz app as your own data, so a single backend context handles both.
|
|
1980
|
+
|
|
1981
|
+
```bash
|
|
1982
|
+
# Generate the Better Auth schema module into schema-better-auth/
|
|
1983
|
+
npx @better-auth/cli@latest generate \
|
|
1984
|
+
--config ./src/lib/auth.ts \
|
|
1985
|
+
--output ./schema-better-auth/schema.ts
|
|
1986
|
+
|
|
1987
|
+
# Validate the generated schema source alongside your own
|
|
1988
|
+
pnpm dlx jazz-tools@alpha validate
|
|
1989
|
+
```
|
|
1990
|
+
|
|
1991
|
+
Import the generated tables in your app's `schema.ts` and merge them into the app definition:
|
|
1992
|
+
|
|
1993
|
+
```ts title="schema.ts"
|
|
1994
|
+
|
|
1995
|
+
const schema = {
|
|
1996
|
+
...betterauthSchema,
|
|
1997
|
+
messages: s.table({
|
|
1998
|
+
author_name: s.string(),
|
|
1999
|
+
chat_id: s.string(),
|
|
2000
|
+
text: s.string(),
|
|
2001
|
+
sent_at: s.timestamp(),
|
|
2002
|
+
}),
|
|
2003
|
+
// ...your own tables
|
|
2004
|
+
};
|
|
2005
|
+
|
|
2006
|
+
type AppSchema = s.Schema<typeof schema>;
|
|
2007
|
+
|
|
2008
|
+
```
|
|
2009
|
+
|
|
2010
|
+
The generated `schema-better-auth/schema.ts` also ships a `permissions` export that denies all operations on the Better Auth tables. Merge it with your own permissions so regular client sessions can't read or write Better Auth rows — the adapter itself uses `context.asBackend()`, which authenticates with `backendSecret` and bypasses permission checks entirely.
|
|
2011
|
+
|
|
2012
|
+
## Database Adapter
|
|
2013
|
+
|
|
2014
|
+
Create a server-side [Jazz context](/docs/getting-started/server-setup#backend-context-setup), then pass it to `jazzAdapter(...)` as the `database` in your Better Auth config. Point both `db` and `schema` at the merged `app` — not at the generated module directly — so Better Auth and your own tables share a single Jazz app.
|
|
2015
|
+
|
|
2016
|
+
```ts title="src/lib/auth.ts"
|
|
2017
|
+
|
|
2018
|
+
const jazzContext = createJazzContext({
|
|
2019
|
+
appId: process.env.APP_ID!,
|
|
2020
|
+
driver: { type: "memory" },
|
|
2021
|
+
serverUrl: process.env.SYNC_SERVER_URL!,
|
|
2022
|
+
env: process.env.NODE_ENV === "production" ? "prod" : "dev",
|
|
2023
|
+
userBranch: "main",
|
|
2024
|
+
backendSecret: process.env.BACKEND_SECRET!,
|
|
2025
|
+
});
|
|
2026
|
+
|
|
2027
|
+
database: jazzAdapter({
|
|
2028
|
+
db: () => jazzContext.asBackend(app),
|
|
2029
|
+
schema: app.wasmSchema,
|
|
2030
|
+
}),
|
|
2031
|
+
// ...your Better Auth config
|
|
2032
|
+
});
|
|
2033
|
+
```
|
|
2034
|
+
|
|
2035
|
+
| Option | Description |
|
|
2036
|
+
| ----------- | ------------------------------------------------------------------------------------------------------ |
|
|
2037
|
+
| `db` | A function returning a `Db` handle via `context.asBackend(app)`. Use the merged app, not `authSchema`. |
|
|
2038
|
+
| `schema` | Typically `app.wasmSchema` from your merged schema. A raw `s.App` is also accepted. |
|
|
2039
|
+
| `debugLogs` | Better Auth adapter debug logging controls. |
|
|
2040
|
+
| `usePlural` | Whether Better Auth model names should use plural table names. |
|
|
2041
|
+
| `prefix` | Table name prefix (defaults to `"better_auth_"`). |
|
|
2042
|
+
|
|
2043
|
+
The Jazz adapter does not support Better Auth experimental joins yet, so do not enable
|
|
2044
|
+
`experimental.joins`.
|
|
2045
|
+
|
|
2046
|
+
### Publishing to a sync server
|
|
2047
|
+
|
|
2048
|
+
Because Better Auth tables are merged into your app schema, they ride on the same deploy as everything else — no separate push for `schema-better-auth/`. Publish schema, permissions, and migrations through the normal workflow:
|
|
2049
|
+
|
|
2050
|
+
```bash
|
|
2051
|
+
pnpm dlx jazz-tools@alpha deploy <appId>
|
|
2052
|
+
```
|
|
2053
|
+
|
|
2054
|
+
See [Migrations](/docs/schemas/migrations) for the full deploy flow and how schema changes produce migration edges.
|
|
2055
|
+
|
|
2056
|
+
## Compatibility
|
|
2057
|
+
|
|
2058
|
+
The adapter is currently aligned with Better Auth `1.5.5`.
|
|
2059
|
+
|
|
2060
|
+
| Plugin/Feature | Compatibility |
|
|
2061
|
+
| --------------------- | :-----------: |
|
|
2062
|
+
| Email & Password auth | ✅ |
|
|
2063
|
+
| Social Provider auth | ✅ |
|
|
2064
|
+
| Email OTP | ✅ |
|
|
2065
|
+
|
|
2066
|
+
This section reflects the adapter behavior currently covered by this repo's Better Auth
|
|
2067
|
+
integration and tests. If you add plugins that introduce extra tables or custom schema fields,
|
|
2068
|
+
regenerate `schema-better-auth/schema.ts` and re-run the Jazz schema workflow.
|
|
2069
|
+
|
|
1697
2070
|
===PAGE:index===
|
|
1698
2071
|
TITLE:Overview
|
|
1699
2072
|
DESCRIPTION:The database that syncs.
|
|
@@ -1722,13 +2095,17 @@ db.subscribeAll(app.todos.where({ done: false }), ({ all }) => {
|
|
|
1722
2095
|
|
|
1723
2096
|
Jazz works with React, Vue, Expo/React Native, Svelte, plain TypeScript, and Rust.
|
|
1724
2097
|
|
|
1725
|
-
|
|
2098
|
+
(Looking for [classic Jazz docs?](https://classic.jazz.tools/docs))
|
|
2099
|
+
|
|
2100
|
+
## Quickstart
|
|
2101
|
+
|
|
2102
|
+
## Install
|
|
1726
2103
|
|
|
1727
2104
|
## Setup
|
|
1728
2105
|
|
|
1729
2106
|
## Reference
|
|
1730
2107
|
|
|
1731
|
-
===PAGE:
|
|
2108
|
+
===PAGE:install/client===
|
|
1732
2109
|
TITLE:Client
|
|
1733
2110
|
DESCRIPTION:Build a local-first to-do app with Jazz, step by step.
|
|
1734
2111
|
|
|
@@ -1770,19 +2147,19 @@ Start with a fresh app. If you already have one, skip to [Install](#install).
|
|
|
1770
2147
|
## Install
|
|
1771
2148
|
|
|
1772
2149
|
```bash title="Terminal"
|
|
1773
|
-
pnpm add jazz-tools
|
|
2150
|
+
pnpm add jazz-tools@alpha
|
|
1774
2151
|
```
|
|
1775
2152
|
|
|
1776
2153
|
```bash title="Terminal"
|
|
1777
|
-
pnpm add jazz-tools
|
|
2154
|
+
pnpm add jazz-tools@alpha
|
|
1778
2155
|
```
|
|
1779
2156
|
|
|
1780
2157
|
```bash title="Terminal"
|
|
1781
|
-
pnpm add jazz-tools
|
|
2158
|
+
pnpm add jazz-tools@alpha
|
|
1782
2159
|
```
|
|
1783
2160
|
|
|
1784
2161
|
```bash title="Terminal"
|
|
1785
|
-
pnpm add jazz-tools jazz-rn expo
|
|
2162
|
+
pnpm add jazz-tools@alpha jazz-rn expo
|
|
1786
2163
|
pnpm add -D @babel/plugin-transform-flow-strip-types
|
|
1787
2164
|
```
|
|
1788
2165
|
|
|
@@ -1830,9 +2207,13 @@ Start with a fresh app. If you already have one, skip to [Install](#install).
|
|
|
1830
2207
|
```
|
|
1831
2208
|
|
|
1832
2209
|
```bash title="Terminal"
|
|
1833
|
-
pnpm add jazz-tools
|
|
2210
|
+
pnpm add jazz-tools@alpha
|
|
1834
2211
|
```
|
|
1835
2212
|
|
|
2213
|
+
## Get an app ID
|
|
2214
|
+
|
|
2215
|
+
Your app ID namespaces your data for storage and sync. Click below to generate one on [Jazz Cloud](https://v2.dashboard.jazz.tools) (sync URL: `https://v2.sync.jazz.tools/`) — you'll also get the secrets you need to deploy permissions later.
|
|
2216
|
+
|
|
1836
2217
|
## Define your schema
|
|
1837
2218
|
|
|
1838
2219
|
Create `schema.ts` at the root of your project (or `src/lib/schema.ts` for SvelteKit). This is the source of truth for your data model.
|
|
@@ -1865,7 +2246,9 @@ Create the basic structure for your app with Jazz and a to-do list.
|
|
|
1865
2246
|
```tsx
|
|
1866
2247
|
|
|
1867
2248
|
return (
|
|
1868
|
-
|
|
2249
|
+
",
|
|
2250
|
+
}}
|
|
2251
|
+
>
|
|
1869
2252
|
<h1>Todos</h1>
|
|
1870
2253
|
|
|
1871
2254
|
);
|
|
@@ -1876,7 +2259,7 @@ Create the basic structure for your app with Jazz and a to-do list.
|
|
|
1876
2259
|
<script setup lang="ts">
|
|
1877
2260
|
|
|
1878
2261
|
const client = createJazzClient({
|
|
1879
|
-
appId: "
|
|
2262
|
+
appId: "<your-app-id>",
|
|
1880
2263
|
});
|
|
1881
2264
|
</script>
|
|
1882
2265
|
|
|
@@ -1899,7 +2282,7 @@ const client = createJazzClient({
|
|
|
1899
2282
|
import TodoList from './TodoList.svelte';
|
|
1900
2283
|
|
|
1901
2284
|
const client = createJazzClient({
|
|
1902
|
-
appId: '
|
|
2285
|
+
appId: '<your-app-id>',
|
|
1903
2286
|
});
|
|
1904
2287
|
</script>
|
|
1905
2288
|
|
|
@@ -1916,6 +2299,9 @@ const client = createJazzClient({
|
|
|
1916
2299
|
```tsx
|
|
1917
2300
|
|
|
1918
2301
|
return (
|
|
2302
|
+
",
|
|
2303
|
+
}}
|
|
2304
|
+
>
|
|
1919
2305
|
|
|
1920
2306
|
Todos
|
|
1921
2307
|
|
|
@@ -1939,13 +2325,15 @@ const client = createJazzClient({
|
|
|
1939
2325
|
```ts
|
|
1940
2326
|
|
|
1941
2327
|
const db = await createDb({
|
|
1942
|
-
appId: "
|
|
2328
|
+
appId: "<your-app-id>",
|
|
1943
2329
|
});
|
|
1944
2330
|
// use db.shutdown() to clean up when finished
|
|
1945
2331
|
```
|
|
1946
2332
|
|
|
1947
|
-
`appId` identifies your app for storage and sync.
|
|
1948
|
-
|
|
2333
|
+
`appId` identifies your app for storage and sync. Use the UUID you generated
|
|
2334
|
+
above — not a human-readable name — so your local data is already
|
|
2335
|
+
correctly namespaced when you add a server. For all client config options and runtime source
|
|
2336
|
+
overrides, see [Client Setup](/docs/getting-started/client-setup#client-config-options).
|
|
1949
2337
|
|
|
1950
2338
|
## Add a to-do
|
|
1951
2339
|
|
|
@@ -2264,22 +2652,7 @@ Framework hooks return `undefined` while loading, then an array of matching rows
|
|
|
2264
2652
|
|
|
2265
2653
|
## Enable sync
|
|
2266
2654
|
|
|
2267
|
-
So far, your to-do list only works locally. To sync across devices, you need
|
|
2268
|
-
|
|
2269
|
-
### Start a server
|
|
2270
|
-
|
|
2271
|
-
Generate an app ID:
|
|
2272
|
-
|
|
2273
|
-
```bash title="Terminal"
|
|
2274
|
-
npx jazz-tools@alpha create app
|
|
2275
|
-
# outputs a UUID like: 019d0ba1-519a-7e01-b0eb-0059ee898e4d
|
|
2276
|
-
```
|
|
2277
|
-
|
|
2278
|
-
Start the server with that ID. In development mode, clients auto-publish the schema when they connect, so you don't need an admin secret just to sync schema changes. The default port is 1625.
|
|
2279
|
-
|
|
2280
|
-
```bash title="Terminal"
|
|
2281
|
-
npx jazz-tools@alpha server <your-app-id> --admin-secret secret
|
|
2282
|
-
```
|
|
2655
|
+
So far, your to-do list only works locally. To sync across devices, you need permissions published to the server.
|
|
2283
2656
|
|
|
2284
2657
|
### Add permissions
|
|
2285
2658
|
|
|
@@ -2294,33 +2667,17 @@ The server rejects all reads and writes unless you define [permissions](/docs/au
|
|
|
2294
2667
|
});
|
|
2295
2668
|
```
|
|
2296
2669
|
|
|
2297
|
-
Then publish the permissions bundle:
|
|
2298
|
-
|
|
2299
|
-
```bash title="Terminal"
|
|
2300
|
-
npx jazz-tools@alpha deploy \
|
|
2301
|
-
<your-app-id> \
|
|
2302
|
-
--server-url http://127.0.0.1:1625 \
|
|
2303
|
-
--admin-secret secret
|
|
2304
|
-
```
|
|
2670
|
+
Then publish the permissions bundle using the app ID and admin secret from above:
|
|
2305
2671
|
|
|
2306
2672
|
### Connect the client
|
|
2307
2673
|
|
|
2308
|
-
Update your client config to
|
|
2309
|
-
|
|
2310
|
-
```ts title="Client config"
|
|
2311
|
-
{
|
|
2312
|
-
appId: "<your-app-id>",
|
|
2313
|
-
// Use your machine's LAN IP for mobile devices.
|
|
2314
|
-
serverUrl: "http://127.0.0.1:1625",
|
|
2315
|
-
}
|
|
2316
|
-
```
|
|
2674
|
+
Update your client config to add `serverUrl` — Jazz Cloud is at `https://v2.sync.jazz.tools/`. If you generated an app ID above, these values are already filled in:
|
|
2317
2675
|
|
|
2318
2676
|
Clients pick up the schema from the server when they connect. If you update `schema.ts` you need to [create and push a migration to the new schema](/docs/schemas/migrations) so that clients can understand existing data with the new schema.
|
|
2319
2677
|
|
|
2320
|
-
Permissions can be updated without
|
|
2321
|
-
`npx jazz-tools@alpha deploy <your-app-id>`.
|
|
2678
|
+
Permissions can be updated without a schema migration by re-running `pnpm dlx jazz-tools@alpha deploy`.
|
|
2322
2679
|
|
|
2323
|
-
For
|
|
2680
|
+
For self-hosted deployments, see [Server Setup](/docs/getting-started/server-setup).
|
|
2324
2681
|
|
|
2325
2682
|
## Next steps
|
|
2326
2683
|
|
|
@@ -2331,11 +2688,11 @@ For production deployment and hosting options, see [Server Setup](/docs/getting-
|
|
|
2331
2688
|
|
|
2332
2689
|
## Example apps
|
|
2333
2690
|
|
|
2334
|
-
- [Todo app (React)](https://github.com/garden-co/jazz2/tree/main/docs/
|
|
2335
|
-
- [File upload (React)](https://github.com/garden-co/jazz2/tree/main/
|
|
2336
|
-
- [Wequencer (Svelte)](https://github.com/garden-co/jazz2/tree/main/
|
|
2691
|
+
- [Todo app (React)](https://github.com/garden-co/jazz2/tree/main/examples/docs/todo-client-localfirst-react) — the app you just built, as a complete project
|
|
2692
|
+
- [File upload (React)](https://github.com/garden-co/jazz2/tree/main/examples/file-upload-react) — image upload and rendering with Jazz
|
|
2693
|
+
- [Wequencer (Svelte)](https://github.com/garden-co/jazz2/tree/main/examples/wequencer) — collaborative real-time music sequencer
|
|
2337
2694
|
|
|
2338
|
-
===PAGE:
|
|
2695
|
+
===PAGE:install/typescript-server===
|
|
2339
2696
|
TITLE:TypeScript Server
|
|
2340
2697
|
DESCRIPTION:Build a server-side to-do API with Jazz and Hono, step by step.
|
|
2341
2698
|
|
|
@@ -2353,7 +2710,7 @@ pnpm init
|
|
|
2353
2710
|
`jazz-napi` is the native runtime for Jazz on Node.js. It bundles the query engine, storage, and sync layer as a Rust binary via NAPI. `jazz-tools` detects it automatically at runtime, but it must be listed as an explicit dependency.
|
|
2354
2711
|
|
|
2355
2712
|
```bash title="Terminal"
|
|
2356
|
-
pnpm add jazz-tools jazz-napi hono @hono/node-server
|
|
2713
|
+
pnpm add jazz-tools@alpha jazz-napi@alpha hono @hono/node-server
|
|
2357
2714
|
pnpm add -D typescript tsx
|
|
2358
2715
|
```
|
|
2359
2716
|
|
|
@@ -2403,7 +2760,7 @@ The server rejects all reads and writes unless you define [permissions](/docs/au
|
|
|
2403
2760
|
Generate an app ID:
|
|
2404
2761
|
|
|
2405
2762
|
```bash title="Terminal"
|
|
2406
|
-
|
|
2763
|
+
pnpm dlx jazz-tools@alpha create app
|
|
2407
2764
|
# outputs a UUID like: 019d0ba1-519a-7e01-b0eb-0059ee898e4d
|
|
2408
2765
|
```
|
|
2409
2766
|
|
|
@@ -2554,6 +2911,30 @@ curl -X DELETE http://localhost:3000/api/todos/<id> \
|
|
|
2554
2911
|
- [Queries](/docs/reading/queries) — filtering, sorting, pagination, and relations
|
|
2555
2912
|
- [Server Setup](/docs/getting-started/server-setup) — hosting, sync, and deployment
|
|
2556
2913
|
|
|
2914
|
+
===PAGE:quickstart===
|
|
2915
|
+
TITLE:Quickstart
|
|
2916
|
+
DESCRIPTION:Scaffold a synced local-first app in one command.
|
|
2917
|
+
|
|
2918
|
+
## Scaffold a new Jazz app
|
|
2919
|
+
|
|
2920
|
+
```bash title="Terminal"
|
|
2921
|
+
pnpm create jazz
|
|
2922
|
+
```
|
|
2923
|
+
|
|
2924
|
+
Pick a framework, hosting mode, and auth style when prompted. The scaffolder installs dependencies and — if you chose hosted — provisions an app on Jazz Cloud with env vars filled in for you.
|
|
2925
|
+
|
|
2926
|
+
## What you get
|
|
2927
|
+
|
|
2928
|
+
- `schema.ts` — the source of truth for your data. Tables, types, and queries all flow from here. See [Schemas](/docs/schemas/defining-tables).
|
|
2929
|
+
- `permissions.ts` — row-level access, pre-wired. See [Permissions](/docs/auth/permissions).
|
|
2930
|
+
- A Jazz provider and a todo UI you can reshape into your own app.
|
|
2931
|
+
|
|
2932
|
+
## Next steps
|
|
2933
|
+
|
|
2934
|
+
- **Model your own data** — edit `schema.ts`, then use `db.insert` and `db.subscribeAll` from your components. See [Writing Data](/docs/writing/writing-data) and [Queries](/docs/reading/queries).
|
|
2935
|
+
- **Add auth** — see [Authentication](/docs/auth/authentication) to go beyond an anonymous identity.
|
|
2936
|
+
- **Install into an existing app** — see [Install → Client](/docs/install/client) or [Install → TypeScript Server](/docs/install/typescript-server).
|
|
2937
|
+
|
|
2557
2938
|
===PAGE:reading/filters-and-sorting===
|
|
2558
2939
|
TITLE:Filters, Sorting & Pagination
|
|
2559
2940
|
DESCRIPTION:Filter rows with where(), sort with orderBy(), and paginate with limit/offset.
|
|
@@ -3283,10 +3664,10 @@ If you're unfamiliar with JWTs and JWKS, see the [explainer on the Authenticatio
|
|
|
3283
3664
|
Point the Jazz server at your Better Auth JWKS endpoint:
|
|
3284
3665
|
|
|
3285
3666
|
```bash
|
|
3286
|
-
jazz-tools server --jwks-url https://your-app.example.com/api/auth/jwks
|
|
3667
|
+
pnpm dlx jazz-tools@alpha server --jwks-url https://your-app.example.com/api/auth/jwks
|
|
3287
3668
|
```
|
|
3288
3669
|
|
|
3289
|
-
For a full working example, see the [Better Auth chat example](https://github.com/garden-co/
|
|
3670
|
+
For a full working example, see the [Better Auth chat example](https://github.com/garden-co/jazz2/tree/main/examples/auth-betterauth-chat).
|
|
3290
3671
|
|
|
3291
3672
|
If your users start unauthenticated and sign up later, see [Local-first auth](/docs/auth/local-first-auth#signing-up-with-betterauth) for how to preserve their identity across the transition.
|
|
3292
3673
|
|
|
@@ -3324,10 +3705,10 @@ function JazzWithWorkOS() {
|
|
|
3324
3705
|
Point the Jazz server at the WorkOS JWKS endpoint:
|
|
3325
3706
|
|
|
3326
3707
|
```bash
|
|
3327
|
-
jazz-tools server --jwks-url https://api.workos.com/sso/jwks/client_01ABC...
|
|
3708
|
+
pnpm dlx jazz-tools@alpha server --jwks-url https://api.workos.com/sso/jwks/client_01ABC...
|
|
3328
3709
|
```
|
|
3329
3710
|
|
|
3330
|
-
For a full working example, see the [WorkOS chat example](https://github.com/garden-co/
|
|
3711
|
+
For a full working example, see the [WorkOS chat example](https://github.com/garden-co/jazz2/tree/main/examples/auth-workos-chat).
|
|
3331
3712
|
|
|
3332
3713
|
See [Server setup](/docs/getting-started/server-setup) for the full set of server flags.
|
|
3333
3714
|
|
|
@@ -3359,7 +3740,7 @@ Any provider that issues JWTs and exposes a JWKS endpoint will work. The key pat
|
|
|
3359
3740
|
|
|
3360
3741
|
Jazz uses the JWT `sub` claim as `session.user_id`. If your provider keeps `sub` fixed to its own user ID, mint the JWT with `sub` set to the Jazz user ID yourself — either via a custom `getSubject` hook on the provider or by issuing the JWT directly from your server.
|
|
3361
3742
|
|
|
3362
|
-
Full working examples: [Better Auth chat](https://github.com/garden-co/
|
|
3743
|
+
Full working examples: [Better Auth chat](https://github.com/garden-co/jazz2/tree/main/examples/auth-betterauth-chat), [WorkOS chat](https://github.com/garden-co/jazz2/tree/main/examples/auth-workos-chat).
|
|
3363
3744
|
|
|
3364
3745
|
===PAGE:recipes/nested-data===
|
|
3365
3746
|
TITLE:"Nested data with permission inheritance"
|
|
@@ -3833,11 +4214,11 @@ See [Writing Data](/docs/writing/writing-data#write-durability-tiers) for detail
|
|
|
3833
4214
|
|
|
3834
4215
|
Read durability controls when the **first result** of a query or subscription is delivered.
|
|
3835
4216
|
|
|
3836
|
-
| Option | Values | Default
|
|
3837
|
-
| -------------- | ----------------------------------- |
|
|
3838
|
-
| `tier` | `"local"` \| `"edge"` \| `"global"` |
|
|
3839
|
-
| `localUpdates` | `"immediate"` \| `"deferred"` | `"immediate"`
|
|
3840
|
-
| `propagation` | `"full"` \| `"local-only"` | `"full"`
|
|
4217
|
+
| Option | Values | Default | What it does |
|
|
4218
|
+
| -------------- | ----------------------------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
4219
|
+
| `tier` | `"local"` \| `"edge"` \| `"global"` | `"local"` (browser/client) / `"edge"` (backend/server) | How far the first result must come from before the query delivers. |
|
|
4220
|
+
| `localUpdates` | `"immediate"` \| `"deferred"` | `"immediate"` | With `"immediate"`, your own local writes appear in the subscription while still waiting for the tier to confirm the initial snapshot. This only takes effect after the subscription has settled at least once. With `"deferred"`, all delivery is held until the tier confirms. |
|
|
4221
|
+
| `propagation` | `"full"` \| `"local-only"` | `"full"` | With `"full"`, the subscription is sent to upstream servers, which push matching data back. With `"local-only"`, only local storage is queried — no server communication. |
|
|
3841
4222
|
|
|
3842
4223
|
These options apply to:
|
|
3843
4224
|
|
|
@@ -4087,6 +4468,66 @@ const session = useSession(); // ShallowRef<{ user_id: string } | null>
|
|
|
4087
4468
|
const session = getSession(); // { user_id: string } | null
|
|
4088
4469
|
```
|
|
4089
4470
|
|
|
4471
|
+
===PAGE:reference/inspector===
|
|
4472
|
+
TITLE:Inspector
|
|
4473
|
+
DESCRIPTION:Standalone admin client for exploring Jazz sync servers, schemas, permissions, and live queries.
|
|
4474
|
+
|
|
4475
|
+
The [Jazz Inspector](https://v2.inspector.jazz.tools/) is a standalone client for inspecting a Jazz
|
|
4476
|
+
app through any reachable sync server. It is not tied to Jazz Cloud: if you have a server URL, app
|
|
4477
|
+
ID, and admin credential, you can connect to that app's sync server directly.
|
|
4478
|
+
|
|
4479
|
+
The inspector uses `adminSecret`, not an end-user session token. On the sync connection, that
|
|
4480
|
+
authenticates the client as the backend, so normal permission policies are bypassed. Treat it like
|
|
4481
|
+
production infrastructure access and never expose it to end users.
|
|
4482
|
+
|
|
4483
|
+
## Connecting
|
|
4484
|
+
|
|
4485
|
+
Open [v2.inspector.jazz.tools](https://v2.inspector.jazz.tools/) and enter:
|
|
4486
|
+
|
|
4487
|
+
- **Server URL** — base URL of the sync server
|
|
4488
|
+
- **App ID** — Jazz app namespace to inspect
|
|
4489
|
+
- **Admin secret** — app admin credential
|
|
4490
|
+
- **Env** — logical environment such as `dev`, `staging`, or `prod`
|
|
4491
|
+
- **Branch** — logical branch, usually `main`
|
|
4492
|
+
|
|
4493
|
+
After connecting, choose the published schema hash you want to inspect. The inspector stores the
|
|
4494
|
+
connection locally so you can reopen it without re-entering everything each time.
|
|
4495
|
+
|
|
4496
|
+
## Features
|
|
4497
|
+
|
|
4498
|
+
### Data Explorer
|
|
4499
|
+
|
|
4500
|
+
Browse every table in the selected schema, inspect rows reactively, sort columns, and add typed
|
|
4501
|
+
filters. Relation cells link to the referenced table, so you can follow relations without manually
|
|
4502
|
+
rebuilding the query.
|
|
4503
|
+
|
|
4504
|
+
The explorer also supports admin writes: edit cells inline, open a row sidebar for full-row edits,
|
|
4505
|
+
insert new rows, and delete existing ones.
|
|
4506
|
+
|
|
4507
|
+
### Schema and permissions view
|
|
4508
|
+
|
|
4509
|
+
Each table includes a schema view showing the stored structural schema for that table. In standalone
|
|
4510
|
+
mode, the same page also shows the currently published sync-server permissions for that table, which
|
|
4511
|
+
is useful when you want to confirm what policy bundle the server is enforcing.
|
|
4512
|
+
|
|
4513
|
+
### Live Query
|
|
4514
|
+
|
|
4515
|
+
The Live Query tab shows active server-managed subscriptions grouped by query on the connected sync
|
|
4516
|
+
server. You can inspect the table, propagation mode, branches, and compiled query JSON, then jump
|
|
4517
|
+
straight into the matching table view in Data Explorer.
|
|
4518
|
+
|
|
4519
|
+
### Schema switching
|
|
4520
|
+
|
|
4521
|
+
If an app has multiple published schema hashes, the inspector lets you switch between them without
|
|
4522
|
+
reconnecting. This is useful when checking migrations, comparing stored shapes, or debugging data
|
|
4523
|
+
that still lives on older schema branches.
|
|
4524
|
+
|
|
4525
|
+
## DevTools panel
|
|
4526
|
+
|
|
4527
|
+
The same inspector UI also exists as a browser DevTools panel for local debugging. The hosted
|
|
4528
|
+
client at [v2.inspector.jazz.tools](https://v2.inspector.jazz.tools/) is the easiest way to inspect
|
|
4529
|
+
a remote or self-hosted sync server directly.
|
|
4530
|
+
|
|
4090
4531
|
===PAGE:reference/internals===
|
|
4091
4532
|
TITLE:Advanced Internals
|
|
4092
4533
|
DESCRIPTION:"How Jazz works under the hood: raw tables, row histories, sync, the query pipeline, and the browser architecture."
|
|
@@ -4338,14 +4779,14 @@ uses that catalogue state to resolve schema context on demand.
|
|
|
4338
4779
|
|
|
4339
4780
|
Jazz separates two durability questions:
|
|
4340
4781
|
|
|
4341
|
-
| Signal | Gates
|
|
4342
|
-
| ----------------------- |
|
|
4343
|
-
| `QuerySettled` | First read delivery
|
|
4344
|
-
| Write tier confirmation |
|
|
4782
|
+
| Signal | Gates | Question it answers |
|
|
4783
|
+
| ----------------------- | ------------------------------------ | ------------------------------------------ |
|
|
4784
|
+
| `QuerySettled` | First read delivery | "Has the query result settled at tier T?" |
|
|
4785
|
+
| Write tier confirmation | `.wait({ tier })` promise completion | "Has this write been confirmed at tier T?" |
|
|
4345
4786
|
|
|
4346
4787
|
Both use the same tier lattice (`local` < `edge` < `global`), but they answer different
|
|
4347
4788
|
questions. A query's first callback is held until `QuerySettled` reaches the requested tier. A
|
|
4348
|
-
|
|
4789
|
+
`.wait({ tier })` promise resolves when the requested tier confirms the write.
|
|
4349
4790
|
|
|
4350
4791
|
The read durability tier only gates the **first** delivery of a subscription. After the initial
|
|
4351
4792
|
snapshot arrives at the requested tier, later updates are delivered as they reach the local node.
|
|
@@ -4361,7 +4802,7 @@ exposes the Jazz docs as tools any MCP-compatible AI assistant can call during a
|
|
|
4361
4802
|
|
|
4362
4803
|
The docs served are always matched to the version of `jazz-tools` you install, so your
|
|
4363
4804
|
assistant is reading documentation for the exact API you have available. To use a different
|
|
4364
|
-
version's docs, specify a version
|
|
4805
|
+
version's docs, specify a version tag instead (e.g. `pnpm dlx jazz-tools@2.0.0 mcp`).
|
|
4365
4806
|
|
|
4366
4807
|
Node 22.13 or later is recommended for the best search results. Earlier versions fall back to
|
|
4367
4808
|
basic keyword search.
|
|
@@ -4453,7 +4894,7 @@ get_doc(slug: string)
|
|
|
4453
4894
|
```
|
|
4454
4895
|
|
|
4455
4896
|
Slugs match the URL path under `/docs/` — for example `schemas/defining-tables`, `reading/queries`, or
|
|
4456
|
-
`
|
|
4897
|
+
`install/client`. Use `list_pages` to discover available slugs.
|
|
4457
4898
|
|
|
4458
4899
|
===PAGE:reference/where-operators===
|
|
4459
4900
|
TITLE:WHERE Operators
|
|
@@ -4704,34 +5145,34 @@ Traditional migration systems run a linear sequence and require peers to converg
|
|
|
4704
5145
|
1. If this is the first migration you are creating, run:
|
|
4705
5146
|
|
|
4706
5147
|
```bash
|
|
4707
|
-
|
|
5148
|
+
pnpm dlx jazz-tools@alpha migrations create
|
|
4708
5149
|
```
|
|
4709
5150
|
|
|
4710
5151
|
This creates an initial snapshot of your schema in `migrations/snapshots/`. No migration file is created yet because there is no previous schema to diff against.
|
|
4711
5152
|
|
|
4712
5153
|
2. **Edit `schema.ts`** — change the data shape as needed.
|
|
4713
|
-
3. **Validate locally** — optionally run `
|
|
4714
|
-
before
|
|
5154
|
+
3. **Validate locally** — optionally run `pnpm dlx jazz-tools@alpha validate` to ensure policies
|
|
5155
|
+
are valid before they are deployed. `deploy` does not run these checks.
|
|
4715
5156
|
4. **Create a migration stub for the updated schema** — run:
|
|
4716
5157
|
|
|
4717
5158
|
```bash
|
|
4718
|
-
|
|
5159
|
+
pnpm dlx jazz-tools@alpha migrations create --name <your-migration-name>
|
|
4719
5160
|
```
|
|
4720
5161
|
|
|
4721
5162
|
By default, Jazz diffs the latest committed snapshot in `migrations/snapshots/` against the
|
|
4722
5163
|
current schema and writes a stub migration file into `migrations/`. It also saves a snapshot of the generated schema.
|
|
4723
5164
|
|
|
4724
|
-
5. **Review and customise** — 
|
|
5165
|
+
5. **Review and customise** — the migration, if needed (see below).
|
|
4725
5166
|
6. **Publish** — push the migration to the server:
|
|
4726
5167
|
|
|
4727
5168
|
```bash
|
|
4728
|
-
|
|
5169
|
+
pnpm dlx jazz-tools@alpha migrations push <appId> <fromHash> <toHash>
|
|
4729
5170
|
```
|
|
4730
5171
|
|
|
4731
5172
|
If you also want to publish the current schema, the migration and permissions in one step, you can run:
|
|
4732
5173
|
|
|
4733
5174
|
```bash
|
|
4734
|
-
|
|
5175
|
+
pnpm dlx jazz-tools@alpha deploy <appId>
|
|
4735
5176
|
```
|
|
4736
5177
|
|
|
4737
5178
|
`deploy` publishes the current schema if the server does not already know it, checks whether the
|
|
@@ -4739,7 +5180,7 @@ Traditional migration systems run a linear sequence and require peers to converg
|
|
|
4739
5180
|
if needed, and then publishes the current permissions.
|
|
4740
5181
|
|
|
4741
5182
|
Permission-only changes in `permissions.ts` do not need migrations, but they do still require
|
|
4742
|
-
`
|
|
5183
|
+
`pnpm dlx jazz-tools@alpha deploy <appId>`. See [Permissions](/docs/auth/permissions) for details.
|
|
4743
5184
|
|
|
4744
5185
|
## Generated stub
|
|
4745
5186
|
|
|
@@ -4878,8 +5319,8 @@ The Jazz server will detect when there are rows that are not reachable from the
|
|
|
4878
5319
|
In order to do so, you'll need to **create the migration using explicit to/from schema hashes**:
|
|
4879
5320
|
|
|
4880
5321
|
```bash
|
|
4881
|
-
|
|
4882
|
-
|
|
5322
|
+
pnpm dlx jazz-tools@alpha migrations create <appId> --fromHash <fromHash>
|
|
5323
|
+
pnpm dlx jazz-tools@alpha migrations create <appId> --fromHash <fromHash> --toHash <toHash>
|
|
4883
5324
|
```
|
|
4884
5325
|
|
|
4885
5326
|
`--toHash` defaults to the current local schema. When a requested hash is not already saved locally, Jazz resolves it from the
|
|
@@ -4887,13 +5328,13 @@ server and saves a snapshot in `migrations/snapshots/`.
|
|
|
4887
5328
|
|
|
4888
5329
|
## Exporting the compiled schema
|
|
4889
5330
|
|
|
4890
|
-
`
|
|
5331
|
+
`pnpm dlx jazz-tools@alpha schema export` prints the compiled structural schema as JSON to stdout. It
|
|
4891
5332
|
also saves a snapshot of the schema in the local snapshot directory.
|
|
4892
5333
|
|
|
4893
5334
|
```bash
|
|
4894
|
-
|
|
4895
|
-
|
|
4896
|
-
|
|
5335
|
+
pnpm dlx jazz-tools@alpha schema export
|
|
5336
|
+
pnpm dlx jazz-tools@alpha schema export --schema-dir ./packages/app
|
|
5337
|
+
pnpm dlx jazz-tools@alpha schema export <appId> --schema-hash <hash> --server-url http://localhost:4200 --admin-secret <secret>
|
|
4897
5338
|
```
|
|
4898
5339
|
|
|
4899
5340
|
Without `--schema-hash`, Jazz exports the current local `schema.ts`. With `--schema-hash`, it
|
|
@@ -5003,14 +5444,13 @@ policies.
|
|
|
5003
5444
|
|
|
5004
5445
|
const file = await db.createFileFromBlob(app, blob, { tier: "edge" });
|
|
5005
5446
|
|
|
5006
|
-
return db
|
|
5007
|
-
app.uploads,
|
|
5008
|
-
{
|
|
5447
|
+
return db
|
|
5448
|
+
.insert(app.uploads, {
|
|
5009
5449
|
owner_id: EXAMPLE_OWNER_ID,
|
|
5010
5450
|
label: "Profile photo",
|
|
5011
5451
|
fileId: file.id,
|
|
5012
|
-
}
|
|
5013
|
-
|
|
5452
|
+
})
|
|
5453
|
+
.wait({ tier: "edge" });
|
|
5014
5454
|
}
|
|
5015
5455
|
```
|
|
5016
5456
|
|
|
@@ -5084,14 +5524,13 @@ Returns the file row; store its id on your own table.
|
|
|
5084
5524
|
mimeType: "application/octet-stream",
|
|
5085
5525
|
});
|
|
5086
5526
|
|
|
5087
|
-
return db
|
|
5088
|
-
app.uploads,
|
|
5089
|
-
{
|
|
5527
|
+
return db
|
|
5528
|
+
.insert(app.uploads, {
|
|
5090
5529
|
owner_id: EXAMPLE_OWNER_ID,
|
|
5091
5530
|
label: "Camera import",
|
|
5092
5531
|
fileId: file.id,
|
|
5093
|
-
}
|
|
5094
|
-
|
|
5532
|
+
})
|
|
5533
|
+
.wait({ tier: "edge" });
|
|
5095
5534
|
}
|
|
5096
5535
|
```
|
|
5097
5536
|
|
|
@@ -5377,7 +5816,7 @@ pub async fn write_todo_crud(client: &JazzClient, existing_id: ObjectId) -> jazz
|
|
|
5377
5816
|
|
|
5378
5817
|
### Partial updates and nullable fields
|
|
5379
5818
|
|
|
5380
|
-
`update(...)` only
|
|
5819
|
+
`update(...)` only modifies the keys you pass.
|
|
5381
5820
|
Omitted fields are left unchanged; explicitly passing `undefined` also leaves a field unchanged.
|
|
5382
5821
|
To clear a nullable column in TypeScript, pass `null`.
|
|
5383
5822
|
Required fields cannot be set to `null`.
|
|
@@ -5408,23 +5847,22 @@ pub async fn clear_nullable_fields(
|
|
|
5408
5847
|
|
|
5409
5848
|
When using `insert(...).wait({ tier })`, `update(...).wait({ tier })`, or `delete(...).wait({ tier })`, the tier controls how far the mutation must propagate before the promise resolves: locally on the client (`local`), the nearest edge server (`edge`), or the global core (`global`).
|
|
5410
5849
|
|
|
5411
|
-
| Tier | Resolves when |
|
|
5412
|
-
| -------- | ----------------------------------- |
|
|
5413
|
-
| `local` | Persisted to local OPFS |
|
|
5414
|
-
| `edge` | Acknowledged by nearest sync server |
|
|
5415
|
-
| `global` | Propagated to global core |
|
|
5850
|
+
| Tier | Resolves when | Default for |
|
|
5851
|
+
| -------- | ----------------------------------- | -------------- |
|
|
5852
|
+
| `local` | Persisted to local OPFS | Browser/client |
|
|
5853
|
+
| `edge` | Acknowledged by nearest sync server | Backend/server |
|
|
5854
|
+
| `global` | Propagated to global core | — |
|
|
5416
5855
|
|
|
5417
5856
|
```ts
|
|
5418
5857
|
|
|
5419
|
-
const { id } = await db
|
|
5420
|
-
app.todos,
|
|
5421
|
-
{
|
|
5858
|
+
const { id } = await db
|
|
5859
|
+
.insert(app.todos, {
|
|
5422
5860
|
title: "Write docs with durability tier",
|
|
5423
5861
|
done: false,
|
|
5424
5862
|
owner_id: EXAMPLE_OWNER_ID,
|
|
5425
5863
|
projectId: EXAMPLE_PROJECT_ID,
|
|
5426
|
-
}
|
|
5427
|
-
|
|
5864
|
+
})
|
|
5865
|
+
.wait({ tier: "edge" });
|
|
5428
5866
|
|
|
5429
5867
|
await db.update(app.todos, id, { done: true }).wait({ tier: "global" });
|
|
5430
5868
|
await db.delete(app.todos, id).wait({ tier: "global" });
|
|
@@ -5452,9 +5890,7 @@ See [Durability Tiers](/docs/reference/durability-tiers) for the full reference,
|
|
|
5452
5890
|
|
|
5453
5891
|
Need to clear local data during development? See [How do I reset browser storage?](/docs/faq#reset-browser-storage)
|
|
5454
5892
|
|
|
5455
|
-
|
|
5456
|
-
|
|
5457
|
-
Write handles let you wait for a write to persisted up to a specific durability tier, and also access the value (in the case of inserts).
|
|
5893
|
+
`wait({ tier })` resolves when the batch reaches the requested durability tier. If the batch is rejected, it rejects with `PersistedWriteRejectedError` instead of hanging.
|
|
5458
5894
|
|
|
5459
5895
|
```ts
|
|
5460
5896
|
const pending = db.insert(app.todos, {
|
|
@@ -5474,7 +5910,13 @@ try {
|
|
|
5474
5910
|
}
|
|
5475
5911
|
```
|
|
5476
5912
|
|
|
5477
|
-
|
|
5913
|
+
You can also set a global `onMutationError` handler that will be notified anytime a write that was not explicitly awaited fails:
|
|
5914
|
+
|
|
5915
|
+
```ts
|
|
5916
|
+
db.onMutationError((error) => {
|
|
5917
|
+
console.error("DB mutation failed: ", error);
|
|
5918
|
+
});
|
|
5919
|
+
```
|
|
5478
5920
|
|
|
5479
5921
|
## Explicit batches
|
|
5480
5922
|
|
|
@@ -5507,4 +5949,4 @@ batch.insert(app.todos, { title: "Grouped direct write", done: false });
|
|
|
5507
5949
|
batch.update(app.todos, todoId, { done: true });
|
|
5508
5950
|
|
|
5509
5951
|
console.log(batch.batchId());
|
|
5510
|
-
```
|
|
5952
|
+
```
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -353,29 +353,5 @@ describe("packaged docs index", () => {
|
|
|
353
353
|
expect(txt).not.toContain("allowSelfSigned");
|
|
354
354
|
expect(txt).not.toContain("jazz-server --jwks-url https://your-app.example.com/api/auth/jwks");
|
|
355
355
|
});
|
|
356
|
-
it("ships current auth docs in docs-index.db", () => {
|
|
357
|
-
const db = new DatabaseSync(join(packageBinDir, "docs-index.db"));
|
|
358
|
-
try {
|
|
359
|
-
const localFirstPage = db
|
|
360
|
-
.prepare("SELECT body FROM pages WHERE slug = 'auth/local-first-auth'")
|
|
361
|
-
.get();
|
|
362
|
-
const serverSetupPage = db
|
|
363
|
-
.prepare("SELECT body FROM pages WHERE slug = 'getting-started/server-setup'")
|
|
364
|
-
.get();
|
|
365
|
-
const quickstartPage = db
|
|
366
|
-
.prepare("SELECT body FROM pages WHERE slug = 'quickstarts/typescript-server'")
|
|
367
|
-
.get();
|
|
368
|
-
const authProviderPage = db
|
|
369
|
-
.prepare("SELECT body FROM pages WHERE slug = 'recipes/auth-provider-integration'")
|
|
370
|
-
.get();
|
|
371
|
-
expect(localFirstPage?.body).toContain("jazz-tools server --allow-local-first-auth");
|
|
372
|
-
expect(serverSetupPage?.body).toContain("--allow-local-first-auth");
|
|
373
|
-
expect(quickstartPage?.body).toContain('allowLocalFirstAuth: process.env.JAZZ_ALLOW_LOCAL_FIRST_AUTH !== "false"');
|
|
374
|
-
expect(authProviderPage?.body).toContain("jazz-tools server --jwks-url https://your-app.example.com/api/auth/jwks");
|
|
375
|
-
}
|
|
376
|
-
finally {
|
|
377
|
-
db.close();
|
|
378
|
-
}
|
|
379
|
-
});
|
|
380
356
|
});
|
|
381
357
|
//# sourceMappingURL=build-index.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-index.test.js","sourceRoot":"","sources":["../../src/mcp/build-index.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build-index.test.js","sourceRoot":"","sources":["../../src/mcp/build-index.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jazz-tools",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.39",
|
|
4
4
|
"description": "Jazz TypeScript SDK, React/Vue/Svelte bindings, and CLI tools",
|
|
5
5
|
"bin": {
|
|
6
6
|
"jazz-tools": "bin/jazz-tools.js"
|
|
@@ -109,8 +109,8 @@
|
|
|
109
109
|
"json-schema-to-ts": "^3.1.1",
|
|
110
110
|
"pluralize-esm": "^9.0.5",
|
|
111
111
|
"web-streams-polyfill": "^4.2.0",
|
|
112
|
-
"jazz-rn": "2.0.0-alpha.
|
|
113
|
-
"jazz-wasm": "2.0.0-alpha.
|
|
112
|
+
"jazz-rn": "2.0.0-alpha.39",
|
|
113
|
+
"jazz-wasm": "2.0.0-alpha.39"
|
|
114
114
|
},
|
|
115
115
|
"devDependencies": {
|
|
116
116
|
"@better-auth/test-utils": "^1.5.5",
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
}
|
|
173
173
|
},
|
|
174
174
|
"optionalDependencies": {
|
|
175
|
-
"jazz-napi": "2.0.0-alpha.
|
|
175
|
+
"jazz-napi": "2.0.0-alpha.39"
|
|
176
176
|
},
|
|
177
177
|
"engines": {
|
|
178
178
|
"node": ">=20"
|