jazz-tools 2.0.0-alpha.31 → 2.0.0-alpha.34

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.
Files changed (57) hide show
  1. package/bin/docs-index.txt +17 -17
  2. package/bin/native/jazz-tools-darwin-arm64 +0 -0
  3. package/bin/native/jazz-tools-darwin-x64 +0 -0
  4. package/bin/native/jazz-tools-linux-arm64 +0 -0
  5. package/bin/native/jazz-tools-linux-x64 +0 -0
  6. package/dist/backend/create-jazz-context.d.ts +1 -1
  7. package/dist/backend/create-jazz-context.d.ts.map +1 -1
  8. package/dist/dev-tools/dev-tools.test.js +3 -3
  9. package/dist/dev-tools/dev-tools.test.js.map +1 -1
  10. package/dist/permissions/index.d.ts +13 -3
  11. package/dist/permissions/index.d.ts.map +1 -1
  12. package/dist/permissions/index.js +167 -23
  13. package/dist/permissions/index.js.map +1 -1
  14. package/dist/permissions/index.test.js +131 -0
  15. package/dist/permissions/index.test.js.map +1 -1
  16. package/dist/permissions/type-inference.test.js +3 -0
  17. package/dist/permissions/type-inference.test.js.map +1 -1
  18. package/dist/react-native/db.js +2 -2
  19. package/dist/react-native/db.js.map +1 -1
  20. package/dist/react-native/db.test.js +1 -1
  21. package/dist/react-native/db.test.js.map +1 -1
  22. package/dist/react-native/jazz-rn-runtime-adapter.js +2 -2
  23. package/dist/react-native/jazz-rn-runtime-adapter.js.map +1 -1
  24. package/dist/react-native/jazz-rn-runtime-adapter.test.js +8 -8
  25. package/dist/react-native/jazz-rn-runtime-adapter.test.js.map +1 -1
  26. package/dist/runtime/client.d.ts +2 -2
  27. package/dist/runtime/client.d.ts.map +1 -1
  28. package/dist/runtime/client.js +4 -4
  29. package/dist/runtime/client.js.map +1 -1
  30. package/dist/runtime/client.test.js +9 -1
  31. package/dist/runtime/client.test.js.map +1 -1
  32. package/dist/runtime/context.d.ts +2 -2
  33. package/dist/runtime/context.d.ts.map +1 -1
  34. package/dist/runtime/db.dev-mode.test.js +1 -1
  35. package/dist/runtime/db.dev-mode.test.js.map +1 -1
  36. package/dist/runtime/db.js +3 -3
  37. package/dist/runtime/db.js.map +1 -1
  38. package/dist/runtime/db.persisted.test.js +2 -2
  39. package/dist/runtime/db.persisted.test.js.map +1 -1
  40. package/dist/runtime/db.transaction.test.js +4 -4
  41. package/dist/runtime/db.transaction.test.js.map +1 -1
  42. package/dist/runtime/file-storage.test.js +1 -1
  43. package/dist/runtime/file-storage.test.js.map +1 -1
  44. package/dist/runtime/napi.for-request.test.js +1 -1
  45. package/dist/runtime/napi.for-request.test.js.map +1 -1
  46. package/dist/runtime/napi.integration.test.js +7 -7
  47. package/dist/runtime/napi.integration.test.js.map +1 -1
  48. package/dist/runtime/permissions.repro.test.d.ts +2 -0
  49. package/dist/runtime/permissions.repro.test.d.ts.map +1 -0
  50. package/dist/runtime/permissions.repro.test.js +200 -0
  51. package/dist/runtime/permissions.repro.test.js.map +1 -0
  52. package/dist/vue/use-all.test.js +3 -3
  53. package/dist/vue/use-all.test.js.map +1 -1
  54. package/dist/worker/jazz-worker.js +2 -2
  55. package/dist/worker/jazz-worker.js.map +1 -1
  56. package/dist/worker/jazz-worker.ts +2 -2
  57. package/package.json +4 -4
@@ -1082,13 +1082,13 @@ Jazz sync runs across three tiers:
1082
1082
  ```mermaid
1083
1083
  graph TD
1084
1084
  G["Global\n(global core)"] --- E1["Edge\n(sync server)"] & E2["Edge\n(sync server)"]
1085
- E1 --- W1["Worker"] & W2["Worker"]
1086
- E2 --- W3["Worker"]
1085
+ E1 --- W1["Local"] & W2["Local"]
1086
+ E2 --- W3["Local"]
1087
1087
  ```
1088
1088
 
1089
- **Worker** runs on the client itself, making it the first tier to respond to queries. The worker
1090
- keeps the locally durable copy of subscribed data so it can respond immediately while updates from
1091
- higher tiers stream in.
1089
+ **Local** is the first tier on the client itself. In browser persistent mode, a dedicated worker
1090
+ hosts that local durable copy in OPFS so it can respond immediately while updates from higher tiers
1091
+ stream in.
1092
1092
 
1093
1093
  **Edge** is the first server hop after the client. In cloud configurations it is usually a nearby
1094
1094
  node. Edge servers hold the data needed to serve the queries currently flowing through them.
@@ -1101,7 +1101,7 @@ updates eventually spread to every subscribed client.
1101
1101
  Writes flow **upward**:
1102
1102
 
1103
1103
  ```text
1104
- app -> worker -> edge -> global
1104
+ app -> local -> edge -> global
1105
1105
  ```
1106
1106
 
1107
1107
  As a write flows through the network, each tier can confirm that it has durably received it. That
@@ -1116,10 +1116,10 @@ them. As a rough guide:
1116
1116
 
1117
1117
  - waiting for the global core is only necessary if you want the strongest cross-region visibility
1118
1118
  - waiting for edge is useful when you want to know data has left the user's device
1119
- - the default worker tier is right for most local-first interactions
1119
+ - the default local tier is right for most local-first interactions
1120
1120
 
1121
1121
  Sync happens whenever a node is online. Writes keep propagating upward even if your promise
1122
- resolves at the worker tier. Reads similarly propagate downward as each tier registers the query
1122
+ resolves at the local tier. Reads similarly propagate downward as each tier registers the query
1123
1123
  with the next one up. If higher tiers have newer rows, they stream down automatically.
1124
1124
 
1125
1125
  ## Consistency model
@@ -1129,7 +1129,7 @@ replicated upward, and contributes to the current visible state for that row.
1129
1129
 
1130
1130
  Because sync is local-first, different tiers can temporarily disagree:
1131
1131
 
1132
- - your worker may already have a newer row version than edge
1132
+ - your local tier may already have a newer row version than edge
1133
1133
  - one edge may have data another edge has not fetched yet
1134
1134
  - another client may have its own concurrent local write
1135
1135
 
@@ -2797,7 +2797,7 @@ For background on how data flows between tiers, see [How Sync Works](/docs/conce
2797
2797
 
2798
2798
  Pass a tier when you need the first result to be authoritative at a specific level — for example, when a user has just navigated to a page and a stale local snapshot would mislead them.
2799
2799
 
2800
- - `"worker"` — Local storage only. The default on browsers and clients. Fastest, but reflects only what this device has already synced.
2800
+ - `"local"` — Local storage only. The default on browsers and clients. Fastest, but reflects only what this device has already synced.
2801
2801
  - `"edge"` — Wait for the nearest sync server to respond. The default on backends and servers. A good middle ground when you want confirmation that the query has fetched data from the network.
2802
2802
  - `"global"` — Wait for the central server. Use when you need a globally-consistent snapshot, accepting the extra round-trip latency.
2803
2803
 
@@ -3722,8 +3722,8 @@ For background on how data flows between tiers, see [How Sync Works](/docs/conce
3722
3722
 
3723
3723
  Options:
3724
3724
 
3725
- - `options.tier`: `"worker"` \| `"edge"` \| `"global"`
3726
- - Browser/client default: `"worker"`
3725
+ - `options.tier`: `"local"` \| `"edge"` \| `"global"`
3726
+ - Browser/client default: `"local"`
3727
3727
  - Backend/server default: `"edge"`
3728
3728
 
3729
3729
  See [Writing Data](/docs/writing/writing-data#write-durability-tiers) for detailed guidance on which tier to use and code examples.
@@ -3734,7 +3734,7 @@ Read durability controls when the **first result** of a query or subscription is
3734
3734
 
3735
3735
  | Option | Values | Default | What it does |
3736
3736
  | -------------- | ------------------------------------ | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
3737
- | `tier` | `"worker"` \| `"edge"` \| `"global"` | Same as writes | How far the first result must come from before the query delivers. |
3737
+ | `tier` | `"local"` \| `"edge"` \| `"global"` | Same as writes | How far the first result must come from before the query delivers. |
3738
3738
  | `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. |
3739
3739
  | `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. |
3740
3740
 
@@ -4285,7 +4285,7 @@ Jazz separates two durability questions:
4285
4285
  | `QuerySettled` | First read delivery | "Has the query result settled at tier T?" |
4286
4286
  | Write tier confirmation | Durable write completion | "Has this write been confirmed at tier T?" |
4287
4287
 
4288
- Both use the same tier lattice (`worker` < `edge` < `global`), but they answer different
4288
+ Both use the same tier lattice (`local` < `edge` < `global`), but they answer different
4289
4289
  questions. A query's first callback is held until `QuerySettled` reaches the requested tier. A
4290
4290
  durable write promise resolves when the requested tier confirms the write.
4291
4291
 
@@ -5347,11 +5347,11 @@ pub async fn clear_nullable_fields(
5347
5347
 
5348
5348
  ## Write durability tiers
5349
5349
 
5350
- When using `insertDurable`, `updateDurable`, or `deleteDurable`, you can pass a tier option to control how far the mutation must propagate before the promise resolves: locally on the client (`worker`), the nearest edge server (`edge`), or the global core (`global`). If omitted, the tier defaults based on environment (see table).
5350
+ When using `insertDurable`, `updateDurable`, or `deleteDurable`, you can pass a tier option to control 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`). If omitted, the tier defaults based on environment (see table).
5351
5351
 
5352
5352
  | Tier | Resolves when | Default for |
5353
5353
  | -------- | ----------------------------------- | -------------- |
5354
- | `worker` | Persisted to local OPFS | Browser/client |
5354
+ | `local` | Persisted to local OPFS | Browser/client |
5355
5355
  | `edge` | Acknowledged by nearest sync server | Backend/server |
5356
5356
  | `global` | Propagated to global core | — |
5357
5357
 
@@ -5445,4 +5445,4 @@ batch.update(app.todos, todoId, { done: true });
5445
5445
  console.log(batch.batchId());
5446
5446
  ```
5447
5447
 
5448
- Both builders can also issue persisted writes, expose `localBatchRecord()` / `localBatchRecords()`, and let you acknowledge replayable rejections by batch id.
5448
+ Both builders can also issue persisted writes, expose `localBatchRecord()` / `localBatchRecords()`, and let you acknowledge replayable rejections by batch id.
Binary file
Binary file
Binary file
Binary file
@@ -30,7 +30,7 @@ export type BackendContextConfig = Omit<AppContext, "schema" | "driver" | "clien
30
30
  /** Server runtime driver mode and storage location. */
31
31
  driver: BackendDriver;
32
32
  /** Optional node durability tier identity. */
33
- tier?: "worker" | "edge" | "global";
33
+ tier?: "local" | "edge" | "global";
34
34
  /** JWKS endpoint used to verify external bearer JWTs in `forRequest()`. */
35
35
  jwksUrl?: string;
36
36
  /** Whether local-first bearer JWTs are accepted in `forRequest()`. Defaults to `true`. */
@@ -1 +1 @@
1
- {"version":3,"file":"create-jazz-context.d.ts","sourceRoot":"","sources":["../../src/backend/create-jazz-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-jazz-context.d.ts","sourceRoot":"","sources":["../../src/backend/create-jazz-context.ts"],"names":[],"mappings":"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"}
@@ -86,7 +86,7 @@ describe("attachDevTools active query subscription bridge", () => {
86
86
  query: '{"table":"todos"}',
87
87
  table: "todos",
88
88
  branches: ["main"],
89
- tier: "worker",
89
+ tier: "local",
90
90
  propagation: "full",
91
91
  createdAt: "2026-03-10T10:00:00.000Z",
92
92
  stack: "Error\n at demo",
@@ -179,13 +179,13 @@ describe("attachDevTools mutation bridge", () => {
179
179
  payload: {
180
180
  table: "todos",
181
181
  values: { title: { type: "Text", value: "hello" } },
182
- tier: "worker",
182
+ tier: "local",
183
183
  },
184
184
  });
185
185
  const response = await responsePromise;
186
186
  expect(response.ok).toBe(true);
187
187
  expect(response.payload).toEqual(insertedRow);
188
- expect(createDurable).toHaveBeenCalledWith("todos", { title: { type: "Text", value: "hello" } }, { tier: "worker" });
188
+ expect(createDurable).toHaveBeenCalledWith("todos", { title: { type: "Text", value: "hello" } }, { tier: "local" });
189
189
  });
190
190
  it("routes client.updateDurable to runtime updateDurable", async () => {
191
191
  const fakeWindow = new FakeWindow();
@@ -1 +1 @@
1
- {"version":3,"file":"dev-tools.test.js","sourceRoot":"","sources":["../../src/dev-tools/dev-tools.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev-tools.test.js","sourceRoot":"","sources":["../../src/dev-tools/dev-tools.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,GAGhB,MAAM,eAAe,CAAC;AAKvB,MAAM,UAAU;IACG,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IAExD,gBAAgB,CAAC,IAAY,EAAE,QAAyB;QACtD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,IAAY,EAAE,QAAyB;QACzD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,WAAW,CAAC,IAAa;QACvB,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAClD,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF;AAED,MAAM,cAAc,GAAI,UAAmC,CAAC,MAAM,CAAC;AAEnE,SAAS,CAAC,GAAG,EAAE;IACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACrB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAQ,UAAmC,CAAC,MAAM,CAAC;IACrD,CAAC;SAAM,CAAC;QACL,UAAmC,CAAC,MAAM,GAAG,cAAc,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,SAAS,eAAe,CACtB,UAAsB,EACtB,SAAiB;IAEjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAoB,CAAC,KAAK,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAyC,CAAC;YAChE,IACE,OAAO,CAAC,OAAO,KAAK,uBAAuB;gBAC3C,OAAO,CAAC,IAAI,KAAK,UAAU;gBAC3B,OAAO,CAAC,SAAS,KAAK,SAAS,EAC/B,CAAC;gBACD,OAAO;YACT,CAAC;YACD,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACpD,OAAO,CAAC,OAAmC,CAAC,CAAC;QAC/C,CAAC,CAAC;QACF,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CACnB,UAAsB,EACtB,SAAiB;IAIjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAoB,CAAC,KAAK,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAsC,CAAC;YAC7D,IACE,OAAO,CAAC,OAAO,KAAK,uBAAuB;gBAC3C,OAAO,CAAC,IAAI,KAAK,OAAO;gBACxB,OAAO,CAAC,KAAK,KAAK,SAAS,EAC3B,CAAC;gBACD,OAAO;YACT,CAAC;YACD,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACpD,OAAO,CACL,OAEC,CACF,CAAC;QACJ,CAAC,CAAC;QACF,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAC/D,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,UAAmC,CAAC,MAAM,GAAG,UAAqB,CAAC;QAEpE,MAAM,MAAM,GAAG;YACb,MAAM,EAAE;gBACN,KAAK,EAAE,eAAe;aACvB;YACD,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,UAAmD,OAAgB;gBACnF,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YAChC,CAAC,CAAC;YACF,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACnC,2BAA2B,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC5C,gCAAgC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SACxD,CAAC;QAEF,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,MAAa,EAAE,EAAE,EAAS,CAAC,CAAC;QAEvD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,UAAmC,CAAC,MAAM,GAAG,UAAqB,CAAC;QAEpE,MAAM,oBAAoB,GAAmC;YAC3D;gBACE,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,mBAAmB;gBAC1B,KAAK,EAAE,OAAO;gBACd,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,MAAM;gBACnB,SAAS,EAAE,0BAA0B;gBACrC,KAAK,EAAE,kBAAkB;aAC1B;SACF,CAAC;QACF,MAAM,iBAAiB,GAAmC;YACxD;gBACE,GAAG,oBAAoB,CAAC,CAAC,CAAE;gBAC3B,EAAE,EAAE,OAAO;aACZ;SACF,CAAC;QAEF,IAAI,oBAAoB,GAAG,oBAAoB,CAAC;QAChD,IAAI,yBAAyB,GAElB,IAAI,CAAC;QAEhB,MAAM,MAAM,GAAG;YACb,MAAM,EAAE;gBACN,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,IAAI;aACd;YACD,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACnC,2BAA2B,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC;YAC9D,gCAAgC,EAAE,EAAE,CAAC,EAAE,CACrC,CAAC,QAA0E,EAAE,EAAE;gBAC7E,yBAAyB,GAAG,QAAQ,CAAC;gBACrC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;gBAC/B,OAAO,GAAG,EAAE;oBACV,yBAAyB,GAAG,IAAI,CAAC;gBACnC,CAAC,CAAC;YACJ,CAAC,CACF;SACF,CAAC;QAEF,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,MAAa,EAAE,EAAE,EAAS,CAAC,CAAC;QAEvD,MAAM,iBAAiB,GAAG,YAAY,CAAC;QACvC,MAAM,uBAAuB,GAAG,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAC/E,UAAU,CAAC,WAAW,CAAC;YACrB,OAAO,EAAE,uBAAuB;YAChC,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,iBAAiB;YAC5B,OAAO,EAAE,iBAAiB,CAAC,QAAQ;YACnC,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,MAAM,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtD,MAAM,aAAa,GAAG,QAAQ,CAAC;QAC/B,MAAM,mBAAmB,GAAG,eAAe,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACvE,UAAU,CAAC,WAAW,CAAC;YACrB,OAAO,EAAE,uBAAuB;YAChC,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,aAAa;YACxB,OAAO,EAAE,iBAAiB,CAAC,sCAAsC;YACjE,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,MAAM,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAE1E,MAAM,YAAY,GAAG,YAAY,CAC/B,UAAU,EACV,eAAe,CAAC,yCAAyC,CAC1D,CAAC;QACF,oBAAoB,GAAG,iBAAiB,CAAC;QACzC,IAAI,yBAAyB,EAAE,CAAC;YAC9B,mBAAmB;YACnB,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,UAAmC,CAAC,MAAM,GAAG,UAAqB,CAAC;QAEpE,MAAM,WAAW,GAAG;YAClB,EAAE,EAAE,OAAO;YACX,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;SAC3C,CAAC;QACF,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG;YACjB,aAAa;YACb,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;YAC3C,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;YAC3C,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;SACrB,CAAC;QACF,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;YAClC,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YAC3C,2BAA2B,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC5C,gCAAgC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SACxD,CAAC;QAEF,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,MAAa,EAAE,EAAE,EAAS,CAAC,CAAC;QAEvD,MAAM,SAAS,GAAG,UAAU,CAAC;QAC7B,MAAM,eAAe,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC/D,UAAU,CAAC,WAAW,CAAC;YACrB,OAAO,EAAE,uBAAuB;YAChC,IAAI,EAAE,SAAS;YACf,SAAS;YACT,OAAO,EAAE,iBAAiB,CAAC,qBAAqB;YAChD,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBACnD,IAAI,EAAE,OAAO;aACd;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CACxC,OAAO,EACP,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAC3C,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,UAAmC,CAAC,MAAM,GAAG,UAAqB,CAAC;QAEpE,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG;YACjB,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/D,aAAa;YACb,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;YAC3C,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;SACrB,CAAC;QACF,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;YAClC,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YAC3C,2BAA2B,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC5C,gCAAgC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SACxD,CAAC;QAEF,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,MAAa,EAAE,EAAE,EAAS,CAAC,CAAC;QAEvD,MAAM,SAAS,GAAG,UAAU,CAAC;QAC7B,MAAM,eAAe,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC/D,UAAU,CAAC,WAAW,CAAC;YACrB,OAAO,EAAE,uBAAuB;YAChC,IAAI,EAAE,SAAS;YACf,SAAS;YACT,OAAO,EAAE,iBAAiB,CAAC,qBAAqB;YAChD,OAAO,EAAE;gBACP,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE;oBACP,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;iBAC1C;gBACD,IAAI,EAAE,MAAM;aACb;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CACxC,OAAO,EACP,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,UAAmC,CAAC,MAAM,GAAG,UAAqB,CAAC;QAEpE,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG;YACjB,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/D,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;YAC3C,aAAa;YACb,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;SACrB,CAAC;QACF,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;YAClC,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YAC3C,2BAA2B,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC5C,gCAAgC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SACxD,CAAC;QAEF,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,MAAa,EAAE,EAAE,EAAS,CAAC,CAAC;QAEvD,MAAM,SAAS,GAAG,UAAU,CAAC;QAC7B,MAAM,eAAe,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC/D,UAAU,CAAC,WAAW,CAAC;YACrB,OAAO,EAAE,uBAAuB;YAChC,IAAI,EAAE,SAAS;YACf,SAAS;YACT,OAAO,EAAE,iBAAiB,CAAC,qBAAqB;YAChD,OAAO,EAAE;gBACP,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,QAAQ;aACf;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,UAAmC,CAAC,MAAM,GAAG,UAAqB,CAAC;QAEpE,MAAM,UAAU,GAAG;YACjB,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/D,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;YAC3C,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;YAC3C,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;SACrB,CAAC;QACF,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;YAClC,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YAC3C,2BAA2B,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC5C,gCAAgC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SACxD,CAAC;QAEF,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,MAAa,EAAE,EAAE,EAAS,CAAC,CAAC;QAEvD,MAAM,YAAY,GAAG;YACnB;gBACE,SAAS,EAAE,gBAAgB;gBAC3B,OAAO,EAAE,iBAAiB,CAAC,qBAAqB;gBAChD,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;gBACnC,eAAe,EAAE,2CAA2C;aAC7D;YACD;gBACE,SAAS,EAAE,gBAAgB;gBAC3B,OAAO,EAAE,iBAAiB,CAAC,qBAAqB;gBAChD,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;gBAC7C,eAAe,EAAE,2CAA2C;aAC7D;YACD;gBACE,SAAS,EAAE,gBAAgB;gBAC3B,OAAO,EAAE,iBAAiB,CAAC,qBAAqB;gBAChD,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;gBAC1B,eAAe,EAAE,2CAA2C;aAC7D;SACF,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,eAAe,GAAG,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACxE,UAAU,CAAC,WAAW,CAAC;gBACrB,OAAO,EAAE,uBAAuB;gBAChC,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;aAC1B,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC;YACvC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -24,6 +24,10 @@ interface SessionWhereCondition {
24
24
  readonly __jazzPermissionKind: "session-where";
25
25
  readonly where: Record<string, unknown>;
26
26
  }
27
+ interface WhereObjectCondition {
28
+ readonly __jazzPermissionKind: "where-object";
29
+ readonly where: Record<string, unknown>;
30
+ }
27
31
  type SessionWhereBuilder = SessionRefValue & ((input: Record<string, unknown>) => SessionWhereCondition);
28
32
  interface RecursiveDepthOptions {
29
33
  maxDepth?: number;
@@ -46,7 +50,7 @@ interface CompoundCondition {
46
50
  readonly op: "And" | "Or";
47
51
  readonly conditions: Condition[];
48
52
  }
49
- type Condition = PolicyExpr | CompoundCondition | ExistsCondition | ExistsRelationCondition | SessionWhereCondition;
53
+ type Condition = PolicyExpr | CompoundCondition | ExistsCondition | ExistsRelationCondition | WhereObjectCondition | SessionWhereCondition;
50
54
  interface TableJoinTarget {
51
55
  readonly __jazzPermissionKind: "table-builder";
52
56
  readonly __jazzPermissionTable: string;
@@ -135,9 +139,15 @@ export type PolicyContext<TApp extends AppLike> = {
135
139
  session: SessionContext;
136
140
  };
137
141
  export type CompiledPermissions = Record<string, TablePolicies>;
138
- type PermissionWhereInput<T> = T extends Array<infer U> ? Array<PermissionWhereInput<U>> : T extends object ? {
142
+ type PermissionWhereLeaf<T> = T | SessionRefValue | RowRefValue | RecursiveCurrentValue;
143
+ type PermissionWhereObjectBase<T> = {
139
144
  [K in keyof T]?: PermissionWhereInput<T[K]> | SessionRefValue | RowRefValue | RecursiveCurrentValue;
140
- } : T | SessionRefValue | RowRefValue | RecursiveCurrentValue;
145
+ };
146
+ type QualifiedPermissionWhereEntries = {
147
+ [K in `${string}.${string}`]?: unknown | SessionRefValue | RowRefValue | RecursiveCurrentValue;
148
+ };
149
+ type PermissionWhereObject<T> = PermissionWhereObjectBase<T> | (PermissionWhereObjectBase<T> & QualifiedPermissionWhereEntries);
150
+ type PermissionWhereInput<T> = T extends Array<infer U> ? Array<PermissionWhereInput<U>> : T extends object ? PermissionWhereObject<T> : PermissionWhereLeaf<T>;
141
151
  declare class UpdateRuleBuilder<WhereInput, Row> {
142
152
  private readonly table;
143
153
  private readonly registerRule?;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":"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"}
@@ -29,10 +29,7 @@ class PermissionRelationBuilder {
29
29
  throw new Error("where(...) does not support union(...) relations in MVP.");
30
30
  }
31
31
  const where = resolveRelationWhereInput(input);
32
- const filters = [
33
- ...this.state.filters,
34
- ...extractRelationFilters(where, currentRelationScope(this.state)),
35
- ];
32
+ const filters = [...this.state.filters, ...extractRelationFilters(where, this.state)];
36
33
  return new PermissionRelationBuilder({
37
34
  ...this.state,
38
35
  filters,
@@ -303,7 +300,7 @@ export function definePermissions(app, factory) {
303
300
  session: createSessionContext(),
304
301
  };
305
302
  factory(ctx);
306
- return compileRules(rules, fkReferencesByTable);
303
+ return compileRules(rules, fkReferencesByTable, relationsByTable);
307
304
  }
308
305
  function collectFkReferencesByTable(app) {
309
306
  const result = new Map();
@@ -516,6 +513,20 @@ function resolveQualifiedGatherStartRelation(relationsByTable, outputTable, qual
516
513
  }
517
514
  throw new Error(`gather(...) qualified start table "${qualifiedTable}" is ambiguous from "${outputTable}"; use an explicit relation seed instead.`);
518
515
  }
516
+ function resolveQualifiedRuleRelation(relationsByTable, outputTable, qualifiedTable, column) {
517
+ const candidates = (relationsByTable.get(outputTable) ?? []).filter((relation) => relation.toTable === qualifiedTable);
518
+ if (candidates.length === 0) {
519
+ throw new Error(`Qualified where(...) column "${qualifiedTable}.${column}" does not match a direct relation from "${outputTable}".`);
520
+ }
521
+ if (candidates.length === 1) {
522
+ return candidates[0];
523
+ }
524
+ const disambiguated = candidates.filter((relation) => relation.type === "forward" ? relation.fromColumn === column : relation.toColumn === column);
525
+ if (disambiguated.length === 1) {
526
+ return disambiguated[0];
527
+ }
528
+ throw new Error(`Qualified where(...) table "${qualifiedTable}" is ambiguous from "${outputTable}"; use an explicit relation instead.`);
529
+ }
519
530
  function relationToJoinSpec(relation) {
520
531
  if (relation.type === "forward") {
521
532
  return {
@@ -573,16 +584,50 @@ function currentRelationScope(state) {
573
584
  const join = state.joins[joinIndex];
574
585
  return relationJoinAlias(state.kind, join, joinIndex);
575
586
  }
576
- function extractRelationFilters(where, scope) {
587
+ function extractRelationFilters(where, state) {
577
588
  const filters = [];
589
+ const defaultScope = currentRelationScope(state);
578
590
  for (const [column, raw] of Object.entries(where)) {
579
591
  if (raw === undefined) {
580
592
  continue;
581
593
  }
582
- filters.push({ column, raw, scope });
594
+ const [prefix, bare] = splitQualifiedColumn(column);
595
+ filters.push({
596
+ column: bare,
597
+ raw,
598
+ scope: prefix ? resolveQualifiedRelationFilterScope(state, prefix, bare) : defaultScope,
599
+ });
583
600
  }
584
601
  return filters;
585
602
  }
603
+ function relationBaseScopeBinding(state) {
604
+ if (!state.initialScope) {
605
+ return null;
606
+ }
607
+ return {
608
+ table: state.initialScope,
609
+ scope: state.initialScope,
610
+ };
611
+ }
612
+ function resolveQualifiedRelationFilterScope(state, qualifiedTable, column) {
613
+ const scopes = new Set();
614
+ const baseBinding = relationBaseScopeBinding(state);
615
+ if (baseBinding && baseBinding.table === qualifiedTable) {
616
+ scopes.add(baseBinding.scope);
617
+ }
618
+ state.joins.forEach((join, index) => {
619
+ if (join.table === qualifiedTable) {
620
+ scopes.add(relationJoinAlias(state.kind, join, index));
621
+ }
622
+ });
623
+ if (scopes.size === 0) {
624
+ throw new Error(`Qualified relation where(...) column "${qualifiedTable}.${column}" does not match the current relation scopes.`);
625
+ }
626
+ if (scopes.size > 1) {
627
+ throw new Error(`Qualified relation where(...) table "${qualifiedTable}" is ambiguous in the current relation; use an unambiguous relation shape instead.`);
628
+ }
629
+ return scopes.values().next().value;
630
+ }
586
631
  function normalizeRelationSelectMap(columns) {
587
632
  if (!isPlainObject(columns)) {
588
633
  throw new Error("select(...) expects an object map: { alias: column }.");
@@ -1015,19 +1060,89 @@ function resolveWhereInput(input) {
1015
1060
  return input;
1016
1061
  }
1017
1062
  if (isPlainObject(input)) {
1018
- return whereObjectToCondition(input, { allowRowRefs: false });
1063
+ return {
1064
+ __jazzPermissionKind: "where-object",
1065
+ where: normalizeWhereObject(input),
1066
+ };
1019
1067
  }
1020
1068
  throw new Error("Unsupported permission condition input.");
1021
1069
  }
1022
- function whereObjectToCondition(where, options) {
1070
+ function filtersToCondition(filters, options) {
1023
1071
  const exprs = [];
1072
+ for (const filter of filters) {
1073
+ exprs.push(...columnFilterToExprs(filter.column, filter.raw, options));
1074
+ }
1075
+ return andExpr(exprs);
1076
+ }
1077
+ function analyzeQualifiedWhereObject(table, where, relationsByTable) {
1078
+ const joins = [];
1079
+ const filters = [];
1080
+ const qualifiedRelationByPrefix = new Map();
1081
+ const qualifiedScopeByPrefix = new Map();
1082
+ let hasQualifiedFilters = false;
1024
1083
  for (const [column, raw] of Object.entries(where)) {
1025
1084
  if (raw === undefined) {
1026
1085
  continue;
1027
1086
  }
1028
- exprs.push(...columnFilterToExprs(column, raw, options));
1087
+ const [prefix, bare] = splitQualifiedColumn(column);
1088
+ if (!prefix || prefix === table) {
1089
+ filters.push({ column: bare, raw, scope: table });
1090
+ continue;
1091
+ }
1092
+ hasQualifiedFilters = true;
1093
+ const relation = resolveQualifiedRuleRelation(relationsByTable, table, prefix, bare);
1094
+ const existingRelation = qualifiedRelationByPrefix.get(prefix);
1095
+ if (existingRelation && existingRelation.name !== relation.name) {
1096
+ throw new Error(`Qualified where(...) table "${prefix}" is ambiguous from "${table}"; use an explicit relation instead.`);
1097
+ }
1098
+ qualifiedRelationByPrefix.set(prefix, relation);
1099
+ let scope = qualifiedScopeByPrefix.get(prefix);
1100
+ if (!scope) {
1101
+ const join = relationToJoinSpec(relation);
1102
+ joins.push(join);
1103
+ scope = relationJoinAlias("table", join, joins.length - 1);
1104
+ qualifiedScopeByPrefix.set(prefix, scope);
1105
+ }
1106
+ filters.push({ column: bare, raw, scope });
1029
1107
  }
1030
- return andExpr(exprs);
1108
+ return {
1109
+ hasQualifiedFilters,
1110
+ joins,
1111
+ filters,
1112
+ };
1113
+ }
1114
+ function compileQualifiedWhereRelation(table, where, relationsByTable, options) {
1115
+ const analysis = analyzeQualifiedWhereObject(table, where, relationsByTable);
1116
+ let relation = applyRelationTail({
1117
+ base: {
1118
+ TableScan: {
1119
+ table,
1120
+ },
1121
+ },
1122
+ initialScope: table,
1123
+ joins: analysis.joins,
1124
+ filters: analysis.filters,
1125
+ selectMap: undefined,
1126
+ joinAlias: (join, index) => relationJoinAlias("table", join, index),
1127
+ });
1128
+ if (!options.anchorOuterRow) {
1129
+ return relation;
1130
+ }
1131
+ relation = applyRelFilter(relation, [
1132
+ {
1133
+ Cmp: {
1134
+ left: {
1135
+ scope: table,
1136
+ column: "id",
1137
+ },
1138
+ op: "Eq",
1139
+ right: {
1140
+ RowId: "Outer",
1141
+ },
1142
+ },
1143
+ },
1144
+ ]);
1145
+ return relation;
1031
1146
  }
1032
1147
  function sessionWhereObjectToCondition(where) {
1033
1148
  const exprs = [];
@@ -1313,7 +1428,7 @@ function compoundCondition(op, inputs) {
1313
1428
  conditions: inputs.map((input) => resolveWhereInput(input)),
1314
1429
  };
1315
1430
  }
1316
- function compileRules(rules, fkReferencesByTable) {
1431
+ function compileRules(rules, fkReferencesByTable, relationsByTable) {
1317
1432
  const compiled = {};
1318
1433
  for (const ruleLike of rules) {
1319
1434
  const rule = isUpdateRuleBuilder(ruleLike) ? ruleLike.toRule() : ruleLike;
@@ -1324,23 +1439,23 @@ function compileRules(rules, fkReferencesByTable) {
1324
1439
  switch (rule.action) {
1325
1440
  case "read":
1326
1441
  tablePolicies.select = mergeOperationPolicy(tablePolicies.select, {
1327
- using: compileCondition(rule.using, rule.table, fkReferencesByTable),
1442
+ using: compileCondition(rule.using, rule.table, fkReferencesByTable, relationsByTable),
1328
1443
  });
1329
1444
  break;
1330
1445
  case "insert":
1331
1446
  tablePolicies.insert = mergeOperationPolicy(tablePolicies.insert, {
1332
- with_check: compileCondition(rule.withCheck, rule.table, fkReferencesByTable),
1447
+ with_check: compileCondition(rule.withCheck, rule.table, fkReferencesByTable, relationsByTable),
1333
1448
  });
1334
1449
  break;
1335
1450
  case "update":
1336
1451
  tablePolicies.update = mergeOperationPolicy(tablePolicies.update, {
1337
- using: compileCondition(rule.using, rule.table, fkReferencesByTable),
1338
- with_check: compileCondition(rule.withCheck, rule.table, fkReferencesByTable),
1452
+ using: compileCondition(rule.using, rule.table, fkReferencesByTable, relationsByTable),
1453
+ with_check: compileCondition(rule.withCheck, rule.table, fkReferencesByTable, relationsByTable),
1339
1454
  });
1340
1455
  break;
1341
1456
  case "delete":
1342
1457
  tablePolicies.delete = mergeOperationPolicy(tablePolicies.delete, {
1343
- using: compileCondition(rule.using, rule.table, fkReferencesByTable),
1458
+ using: compileCondition(rule.using, rule.table, fkReferencesByTable, relationsByTable),
1344
1459
  });
1345
1460
  break;
1346
1461
  default:
@@ -1388,10 +1503,26 @@ function mergeExprWithOr(left, right) {
1388
1503
  }
1389
1504
  return { type: "Or", exprs };
1390
1505
  }
1391
- function compileCondition(condition, table, fkReferencesByTable) {
1506
+ function compileCondition(condition, table, fkReferencesByTable, relationsByTable) {
1392
1507
  if (!condition) {
1393
1508
  return undefined;
1394
1509
  }
1510
+ if (isWhereObjectCondition(condition)) {
1511
+ const analysis = analyzeQualifiedWhereObject(table, condition.where, relationsByTable);
1512
+ if (analysis.hasQualifiedFilters) {
1513
+ return {
1514
+ type: "ExistsRel",
1515
+ rel: compileQualifiedWhereRelation(table, condition.where, relationsByTable, {
1516
+ anchorOuterRow: true,
1517
+ }),
1518
+ };
1519
+ }
1520
+ const compiledCondition = filtersToCondition(analysis.filters, {
1521
+ allowRowRefs: false,
1522
+ });
1523
+ resolveAndAssertInheritsColumns(compiledCondition, table, fkReferencesByTable);
1524
+ return compiledCondition;
1525
+ }
1395
1526
  if (isPolicyExpr(condition)) {
1396
1527
  resolveAndAssertInheritsColumns(condition, table, fkReferencesByTable);
1397
1528
  return condition;
@@ -1406,11 +1537,19 @@ function compileCondition(condition, table, fkReferencesByTable) {
1406
1537
  };
1407
1538
  }
1408
1539
  if (isExistsCondition(condition)) {
1409
- const compiledCondition = whereObjectToCondition(condition.where, { allowRowRefs: true });
1410
- resolveAndAssertInheritsColumns(compiledCondition, table, fkReferencesByTable);
1411
- if (!compiledCondition) {
1412
- throw new Error(`Failed to compile exists(...) condition for table "${condition.table}" in permissions.ts`);
1540
+ const analysis = analyzeQualifiedWhereObject(condition.table, condition.where, relationsByTable);
1541
+ if (analysis.hasQualifiedFilters) {
1542
+ return {
1543
+ type: "ExistsRel",
1544
+ rel: compileQualifiedWhereRelation(condition.table, condition.where, relationsByTable, {
1545
+ anchorOuterRow: false,
1546
+ }),
1547
+ };
1413
1548
  }
1549
+ const compiledCondition = filtersToCondition(analysis.filters, {
1550
+ allowRowRefs: true,
1551
+ });
1552
+ resolveAndAssertInheritsColumns(compiledCondition, condition.table, fkReferencesByTable);
1414
1553
  return {
1415
1554
  type: "Exists",
1416
1555
  table: condition.table,
@@ -1418,7 +1557,7 @@ function compileCondition(condition, table, fkReferencesByTable) {
1418
1557
  };
1419
1558
  }
1420
1559
  if (isCompoundCondition(condition)) {
1421
- const compiledChildren = condition.conditions.map((child) => compileCondition(child, table, fkReferencesByTable));
1560
+ const compiledChildren = condition.conditions.map((child) => compileCondition(child, table, fkReferencesByTable, relationsByTable));
1422
1561
  const exprs = compiledChildren.filter((expr) => Boolean(expr));
1423
1562
  if (exprs.length === 0) {
1424
1563
  return condition.op === "And" ? { type: "True" } : { type: "False" };
@@ -1532,6 +1671,11 @@ function isExistsRelationCondition(input) {
1532
1671
  input.__jazzPermissionKind === "exists-relation" &&
1533
1672
  isPlainObject(input.relation));
1534
1673
  }
1674
+ function isWhereObjectCondition(input) {
1675
+ return (isPlainObject(input) &&
1676
+ input.__jazzPermissionKind === "where-object" &&
1677
+ isPlainObject(input.where));
1678
+ }
1535
1679
  function isCompoundCondition(input) {
1536
1680
  return (isPlainObject(input) &&
1537
1681
  input.__jazzPermissionKind === "compound" &&