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.
- 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 +130 -17
- package/dist/permissions/index.js.map +1 -1
- package/dist/permissions/index.test.js +89 -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 +143 -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":"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
|
|
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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"}
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
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" &&
|