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

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 +130 -17
  13. package/dist/permissions/index.js.map +1 -1
  14. package/dist/permissions/index.test.js +89 -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 +143 -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":"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"}
@@ -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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"}
@@ -303,7 +303,7 @@ export function definePermissions(app, factory) {
303
303
  session: createSessionContext(),
304
304
  };
305
305
  factory(ctx);
306
- return compileRules(rules, fkReferencesByTable);
306
+ return compileRules(rules, fkReferencesByTable, relationsByTable);
307
307
  }
308
308
  function collectFkReferencesByTable(app) {
309
309
  const result = new Map();
@@ -516,6 +516,20 @@ function resolveQualifiedGatherStartRelation(relationsByTable, outputTable, qual
516
516
  }
517
517
  throw new Error(`gather(...) qualified start table "${qualifiedTable}" is ambiguous from "${outputTable}"; use an explicit relation seed instead.`);
518
518
  }
519
+ function resolveQualifiedRuleRelation(relationsByTable, outputTable, qualifiedTable, column) {
520
+ const candidates = (relationsByTable.get(outputTable) ?? []).filter((relation) => relation.toTable === qualifiedTable);
521
+ if (candidates.length === 0) {
522
+ throw new Error(`Qualified where(...) column "${qualifiedTable}.${column}" does not match a direct relation from "${outputTable}".`);
523
+ }
524
+ if (candidates.length === 1) {
525
+ return candidates[0];
526
+ }
527
+ const disambiguated = candidates.filter((relation) => relation.type === "forward" ? relation.fromColumn === column : relation.toColumn === column);
528
+ if (disambiguated.length === 1) {
529
+ return disambiguated[0];
530
+ }
531
+ throw new Error(`Qualified where(...) table "${qualifiedTable}" is ambiguous from "${outputTable}"; use an explicit relation instead.`);
532
+ }
519
533
  function relationToJoinSpec(relation) {
520
534
  if (relation.type === "forward") {
521
535
  return {
@@ -1015,19 +1029,89 @@ function resolveWhereInput(input) {
1015
1029
  return input;
1016
1030
  }
1017
1031
  if (isPlainObject(input)) {
1018
- return whereObjectToCondition(input, { allowRowRefs: false });
1032
+ return {
1033
+ __jazzPermissionKind: "where-object",
1034
+ where: normalizeWhereObject(input),
1035
+ };
1019
1036
  }
1020
1037
  throw new Error("Unsupported permission condition input.");
1021
1038
  }
1022
- function whereObjectToCondition(where, options) {
1039
+ function filtersToCondition(filters, options) {
1023
1040
  const exprs = [];
1041
+ for (const filter of filters) {
1042
+ exprs.push(...columnFilterToExprs(filter.column, filter.raw, options));
1043
+ }
1044
+ return andExpr(exprs);
1045
+ }
1046
+ function analyzeQualifiedWhereObject(table, where, relationsByTable) {
1047
+ const joins = [];
1048
+ const filters = [];
1049
+ const qualifiedRelationByPrefix = new Map();
1050
+ const qualifiedScopeByPrefix = new Map();
1051
+ let hasQualifiedFilters = false;
1024
1052
  for (const [column, raw] of Object.entries(where)) {
1025
1053
  if (raw === undefined) {
1026
1054
  continue;
1027
1055
  }
1028
- exprs.push(...columnFilterToExprs(column, raw, options));
1056
+ const [prefix, bare] = splitQualifiedColumn(column);
1057
+ if (!prefix || prefix === table) {
1058
+ filters.push({ column: bare, raw, scope: table });
1059
+ continue;
1060
+ }
1061
+ hasQualifiedFilters = true;
1062
+ const relation = resolveQualifiedRuleRelation(relationsByTable, table, prefix, bare);
1063
+ const existingRelation = qualifiedRelationByPrefix.get(prefix);
1064
+ if (existingRelation && existingRelation.name !== relation.name) {
1065
+ throw new Error(`Qualified where(...) table "${prefix}" is ambiguous from "${table}"; use an explicit relation instead.`);
1066
+ }
1067
+ qualifiedRelationByPrefix.set(prefix, relation);
1068
+ let scope = qualifiedScopeByPrefix.get(prefix);
1069
+ if (!scope) {
1070
+ const join = relationToJoinSpec(relation);
1071
+ joins.push(join);
1072
+ scope = relationJoinAlias("table", join, joins.length - 1);
1073
+ qualifiedScopeByPrefix.set(prefix, scope);
1074
+ }
1075
+ filters.push({ column: bare, raw, scope });
1029
1076
  }
1030
- return andExpr(exprs);
1077
+ return {
1078
+ hasQualifiedFilters,
1079
+ joins,
1080
+ filters,
1081
+ };
1082
+ }
1083
+ function compileQualifiedWhereRelation(table, where, relationsByTable, options) {
1084
+ const analysis = analyzeQualifiedWhereObject(table, where, relationsByTable);
1085
+ let relation = applyRelationTail({
1086
+ base: {
1087
+ TableScan: {
1088
+ table,
1089
+ },
1090
+ },
1091
+ initialScope: table,
1092
+ joins: analysis.joins,
1093
+ filters: analysis.filters,
1094
+ selectMap: undefined,
1095
+ joinAlias: (join, index) => relationJoinAlias("table", join, index),
1096
+ });
1097
+ if (!options.anchorOuterRow) {
1098
+ return relation;
1099
+ }
1100
+ relation = applyRelFilter(relation, [
1101
+ {
1102
+ Cmp: {
1103
+ left: {
1104
+ scope: table,
1105
+ column: "id",
1106
+ },
1107
+ op: "Eq",
1108
+ right: {
1109
+ RowId: "Outer",
1110
+ },
1111
+ },
1112
+ },
1113
+ ]);
1114
+ return relation;
1031
1115
  }
1032
1116
  function sessionWhereObjectToCondition(where) {
1033
1117
  const exprs = [];
@@ -1313,7 +1397,7 @@ function compoundCondition(op, inputs) {
1313
1397
  conditions: inputs.map((input) => resolveWhereInput(input)),
1314
1398
  };
1315
1399
  }
1316
- function compileRules(rules, fkReferencesByTable) {
1400
+ function compileRules(rules, fkReferencesByTable, relationsByTable) {
1317
1401
  const compiled = {};
1318
1402
  for (const ruleLike of rules) {
1319
1403
  const rule = isUpdateRuleBuilder(ruleLike) ? ruleLike.toRule() : ruleLike;
@@ -1324,23 +1408,23 @@ function compileRules(rules, fkReferencesByTable) {
1324
1408
  switch (rule.action) {
1325
1409
  case "read":
1326
1410
  tablePolicies.select = mergeOperationPolicy(tablePolicies.select, {
1327
- using: compileCondition(rule.using, rule.table, fkReferencesByTable),
1411
+ using: compileCondition(rule.using, rule.table, fkReferencesByTable, relationsByTable),
1328
1412
  });
1329
1413
  break;
1330
1414
  case "insert":
1331
1415
  tablePolicies.insert = mergeOperationPolicy(tablePolicies.insert, {
1332
- with_check: compileCondition(rule.withCheck, rule.table, fkReferencesByTable),
1416
+ with_check: compileCondition(rule.withCheck, rule.table, fkReferencesByTable, relationsByTable),
1333
1417
  });
1334
1418
  break;
1335
1419
  case "update":
1336
1420
  tablePolicies.update = mergeOperationPolicy(tablePolicies.update, {
1337
- using: compileCondition(rule.using, rule.table, fkReferencesByTable),
1338
- with_check: compileCondition(rule.withCheck, rule.table, fkReferencesByTable),
1421
+ using: compileCondition(rule.using, rule.table, fkReferencesByTable, relationsByTable),
1422
+ with_check: compileCondition(rule.withCheck, rule.table, fkReferencesByTable, relationsByTable),
1339
1423
  });
1340
1424
  break;
1341
1425
  case "delete":
1342
1426
  tablePolicies.delete = mergeOperationPolicy(tablePolicies.delete, {
1343
- using: compileCondition(rule.using, rule.table, fkReferencesByTable),
1427
+ using: compileCondition(rule.using, rule.table, fkReferencesByTable, relationsByTable),
1344
1428
  });
1345
1429
  break;
1346
1430
  default:
@@ -1388,10 +1472,26 @@ function mergeExprWithOr(left, right) {
1388
1472
  }
1389
1473
  return { type: "Or", exprs };
1390
1474
  }
1391
- function compileCondition(condition, table, fkReferencesByTable) {
1475
+ function compileCondition(condition, table, fkReferencesByTable, relationsByTable) {
1392
1476
  if (!condition) {
1393
1477
  return undefined;
1394
1478
  }
1479
+ if (isWhereObjectCondition(condition)) {
1480
+ const analysis = analyzeQualifiedWhereObject(table, condition.where, relationsByTable);
1481
+ if (analysis.hasQualifiedFilters) {
1482
+ return {
1483
+ type: "ExistsRel",
1484
+ rel: compileQualifiedWhereRelation(table, condition.where, relationsByTable, {
1485
+ anchorOuterRow: true,
1486
+ }),
1487
+ };
1488
+ }
1489
+ const compiledCondition = filtersToCondition(analysis.filters, {
1490
+ allowRowRefs: false,
1491
+ });
1492
+ resolveAndAssertInheritsColumns(compiledCondition, table, fkReferencesByTable);
1493
+ return compiledCondition;
1494
+ }
1395
1495
  if (isPolicyExpr(condition)) {
1396
1496
  resolveAndAssertInheritsColumns(condition, table, fkReferencesByTable);
1397
1497
  return condition;
@@ -1406,11 +1506,19 @@ function compileCondition(condition, table, fkReferencesByTable) {
1406
1506
  };
1407
1507
  }
1408
1508
  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`);
1509
+ const analysis = analyzeQualifiedWhereObject(condition.table, condition.where, relationsByTable);
1510
+ if (analysis.hasQualifiedFilters) {
1511
+ return {
1512
+ type: "ExistsRel",
1513
+ rel: compileQualifiedWhereRelation(condition.table, condition.where, relationsByTable, {
1514
+ anchorOuterRow: false,
1515
+ }),
1516
+ };
1413
1517
  }
1518
+ const compiledCondition = filtersToCondition(analysis.filters, {
1519
+ allowRowRefs: true,
1520
+ });
1521
+ resolveAndAssertInheritsColumns(compiledCondition, condition.table, fkReferencesByTable);
1414
1522
  return {
1415
1523
  type: "Exists",
1416
1524
  table: condition.table,
@@ -1418,7 +1526,7 @@ function compileCondition(condition, table, fkReferencesByTable) {
1418
1526
  };
1419
1527
  }
1420
1528
  if (isCompoundCondition(condition)) {
1421
- const compiledChildren = condition.conditions.map((child) => compileCondition(child, table, fkReferencesByTable));
1529
+ const compiledChildren = condition.conditions.map((child) => compileCondition(child, table, fkReferencesByTable, relationsByTable));
1422
1530
  const exprs = compiledChildren.filter((expr) => Boolean(expr));
1423
1531
  if (exprs.length === 0) {
1424
1532
  return condition.op === "And" ? { type: "True" } : { type: "False" };
@@ -1532,6 +1640,11 @@ function isExistsRelationCondition(input) {
1532
1640
  input.__jazzPermissionKind === "exists-relation" &&
1533
1641
  isPlainObject(input.relation));
1534
1642
  }
1643
+ function isWhereObjectCondition(input) {
1644
+ return (isPlainObject(input) &&
1645
+ input.__jazzPermissionKind === "where-object" &&
1646
+ isPlainObject(input.where));
1647
+ }
1535
1648
  function isCompoundCondition(input) {
1536
1649
  return (isPlainObject(input) &&
1537
1650
  input.__jazzPermissionKind === "compound" &&