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.
- package/bin/docs-index.txt +17 -17
- 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/backend/create-jazz-context.d.ts +1 -1
- package/dist/backend/create-jazz-context.d.ts.map +1 -1
- package/dist/dev-tools/dev-tools.test.js +3 -3
- package/dist/dev-tools/dev-tools.test.js.map +1 -1
- package/dist/permissions/index.d.ts +13 -3
- package/dist/permissions/index.d.ts.map +1 -1
- package/dist/permissions/index.js +167 -23
- package/dist/permissions/index.js.map +1 -1
- package/dist/permissions/index.test.js +131 -0
- package/dist/permissions/index.test.js.map +1 -1
- package/dist/permissions/type-inference.test.js +3 -0
- package/dist/permissions/type-inference.test.js.map +1 -1
- package/dist/react-native/db.js +2 -2
- package/dist/react-native/db.js.map +1 -1
- package/dist/react-native/db.test.js +1 -1
- package/dist/react-native/db.test.js.map +1 -1
- package/dist/react-native/jazz-rn-runtime-adapter.js +2 -2
- package/dist/react-native/jazz-rn-runtime-adapter.js.map +1 -1
- package/dist/react-native/jazz-rn-runtime-adapter.test.js +8 -8
- package/dist/react-native/jazz-rn-runtime-adapter.test.js.map +1 -1
- package/dist/runtime/client.d.ts +2 -2
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/client.js +4 -4
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/client.test.js +9 -1
- package/dist/runtime/client.test.js.map +1 -1
- package/dist/runtime/context.d.ts +2 -2
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/db.dev-mode.test.js +1 -1
- package/dist/runtime/db.dev-mode.test.js.map +1 -1
- package/dist/runtime/db.js +3 -3
- package/dist/runtime/db.js.map +1 -1
- package/dist/runtime/db.persisted.test.js +2 -2
- package/dist/runtime/db.persisted.test.js.map +1 -1
- package/dist/runtime/db.transaction.test.js +4 -4
- package/dist/runtime/db.transaction.test.js.map +1 -1
- package/dist/runtime/file-storage.test.js +1 -1
- package/dist/runtime/file-storage.test.js.map +1 -1
- package/dist/runtime/napi.for-request.test.js +1 -1
- package/dist/runtime/napi.for-request.test.js.map +1 -1
- package/dist/runtime/napi.integration.test.js +7 -7
- package/dist/runtime/napi.integration.test.js.map +1 -1
- package/dist/runtime/permissions.repro.test.d.ts +2 -0
- package/dist/runtime/permissions.repro.test.d.ts.map +1 -0
- package/dist/runtime/permissions.repro.test.js +200 -0
- package/dist/runtime/permissions.repro.test.js.map +1 -0
- package/dist/vue/use-all.test.js +3 -3
- package/dist/vue/use-all.test.js.map +1 -1
- package/dist/worker/jazz-worker.js +2 -2
- package/dist/worker/jazz-worker.js.map +1 -1
- package/dist/worker/jazz-worker.ts +2 -2
- package/package.json +4 -4
package/bin/docs-index.txt
CHANGED
|
@@ -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["
|
|
1086
|
-
E2 --- W3["
|
|
1085
|
+
E1 --- W1["Local"] & W2["Local"]
|
|
1086
|
+
E2 --- W3["Local"]
|
|
1087
1087
|
```
|
|
1088
1088
|
|
|
1089
|
-
**
|
|
1090
|
-
|
|
1091
|
-
|
|
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 ->
|
|
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
|
|
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
|
|
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
|
|
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
|
-
- `"
|
|
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`: `"
|
|
3726
|
-
- Browser/client default: `"
|
|
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` | `"
|
|
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 (`
|
|
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 (`
|
|
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
|
-
| `
|
|
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?: "
|
|
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":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAsB,KAAK,EAAE,EAAiB,MAAM,kBAAkB,CAAC;AAI9E,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,mBAAmB,GAAG,wBAAwB,CAAC;AAE7F,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEN,KAAK,0BAA0B,GAC3B;IACE,iDAAiD;IACjD,GAAG,EAAE,mBAAmB,CAAC;IACzB,iEAAiE;IACjE,WAAW,EAAE,mBAAmB,CAAC;CAClC,GACD;IACE,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC,GAAG;IAC/F,uDAAuD;IACvD,MAAM,EAAE,aAAa,CAAC;IACtB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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
|
|
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
|
-
}
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
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" &&
|