mindoodb 0.0.63 → 0.0.65
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/README.md +14 -1
- package/dist/browser/index.mjs +15 -0
- package/dist/core/BaseMindooDB.d.ts +19 -0
- package/dist/core/BaseMindooDB.d.ts.map +1 -1
- package/dist/core/BaseMindooDB.js +607 -323
- package/dist/core/BaseMindooDB.js.map +1 -1
- package/dist/core/accesscontrol/tier1Evaluator.d.ts +59 -0
- package/dist/core/accesscontrol/tier1Evaluator.d.ts.map +1 -0
- package/dist/core/accesscontrol/tier1Evaluator.js +77 -0
- package/dist/core/accesscontrol/tier1Evaluator.js.map +1 -0
- package/dist/core/appendonlystores/network/IrohNetworkTransport.d.ts +58 -5
- package/dist/core/appendonlystores/network/IrohNetworkTransport.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/IrohNetworkTransport.js +77 -8
- package/dist/core/appendonlystores/network/IrohNetworkTransport.js.map +1 -1
- package/dist/core/appendonlystores/network/IrohStreamIO.d.ts +32 -10
- package/dist/core/appendonlystores/network/IrohStreamIO.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/IrohStreamIO.js +26 -10
- package/dist/core/appendonlystores/network/IrohStreamIO.js.map +1 -1
- package/dist/core/appendonlystores/network/irohLocator.d.ts +16 -0
- package/dist/core/appendonlystores/network/irohLocator.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/irohLocator.js +36 -0
- package/dist/core/appendonlystores/network/irohLocator.js.map +1 -1
- package/dist/core/builtinDbInvariants.d.ts +12 -6
- package/dist/core/builtinDbInvariants.d.ts.map +1 -1
- package/dist/core/builtinDbInvariants.js +7 -1
- package/dist/core/builtinDbInvariants.js.map +1 -1
- package/dist/core/expressions/builder.d.ts +25 -0
- package/dist/core/expressions/builder.d.ts.map +1 -1
- package/dist/core/expressions/builder.js +33 -13
- package/dist/core/expressions/builder.js.map +1 -1
- package/dist/core/expressions/evaluateExpression.d.ts +55 -2
- package/dist/core/expressions/evaluateExpression.d.ts.map +1 -1
- package/dist/core/expressions/evaluateExpression.js +95 -3
- package/dist/core/expressions/evaluateExpression.js.map +1 -1
- package/dist/core/expressions/formulaSource.d.ts.map +1 -1
- package/dist/core/expressions/formulaSource.js +21 -2
- package/dist/core/expressions/formulaSource.js.map +1 -1
- package/dist/core/expressions/index.d.ts +1 -1
- package/dist/core/expressions/index.d.ts.map +1 -1
- package/dist/core/expressions/index.js +3 -1
- package/dist/core/expressions/index.js.map +1 -1
- package/dist/core/expressions/metadata.d.ts +1 -1
- package/dist/core/expressions/metadata.d.ts.map +1 -1
- package/dist/core/expressions/metadata.js +5 -0
- package/dist/core/expressions/metadata.js.map +1 -1
- package/dist/core/expressions/types.d.ts +17 -2
- package/dist/core/expressions/types.d.ts.map +1 -1
- package/dist/core/index.d.ts +7 -4
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +29 -11
- package/dist/core/index.js.map +1 -1
- package/dist/core/indexing/createViewDataProvider.d.ts.map +1 -1
- package/dist/core/indexing/createViewDataProvider.js +1 -0
- package/dist/core/indexing/createViewDataProvider.js.map +1 -1
- package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.d.ts.map +1 -1
- package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.js +1 -0
- package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.js.map +1 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js +1 -0
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js.map +1 -1
- package/dist/core/peerdevices/PeerDeviceDocument.d.ts +144 -0
- package/dist/core/peerdevices/PeerDeviceDocument.d.ts.map +1 -0
- package/dist/core/peerdevices/PeerDeviceDocument.js +209 -0
- package/dist/core/peerdevices/PeerDeviceDocument.js.map +1 -0
- package/dist/core/query/executeQuery.d.ts +1 -1
- package/dist/core/query/executeQuery.d.ts.map +1 -1
- package/dist/core/query/executeQuery.js +106 -71
- package/dist/core/query/executeQuery.js.map +1 -1
- package/dist/core/query/executeQueryInclude.d.ts +99 -0
- package/dist/core/query/executeQueryInclude.d.ts.map +1 -0
- package/dist/core/query/executeQueryInclude.js +447 -0
- package/dist/core/query/executeQueryInclude.js.map +1 -0
- package/dist/core/query/index.d.ts +2 -1
- package/dist/core/query/index.d.ts.map +1 -1
- package/dist/core/query/index.js +5 -1
- package/dist/core/query/index.js.map +1 -1
- package/dist/core/query/queryInternals.d.ts +45 -0
- package/dist/core/query/queryInternals.d.ts.map +1 -0
- package/dist/core/query/queryInternals.js +87 -0
- package/dist/core/query/queryInternals.js.map +1 -0
- package/dist/core/query/queryLive.d.ts.map +1 -1
- package/dist/core/query/queryLive.js +67 -8
- package/dist/core/query/queryLive.js.map +1 -1
- package/dist/core/query/queryView.d.ts.map +1 -1
- package/dist/core/query/queryView.js +19 -0
- package/dist/core/query/queryView.js.map +1 -1
- package/dist/core/query/types.d.ts +122 -7
- package/dist/core/query/types.d.ts.map +1 -1
- package/dist/core/query/types.js +13 -1
- package/dist/core/query/types.js.map +1 -1
- package/dist/core/types.d.ts +15 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/userkeys/fingerprint.d.ts +12 -4
- package/dist/core/userkeys/fingerprint.d.ts.map +1 -1
- package/dist/core/userkeys/fingerprint.js +14 -5
- package/dist/core/userkeys/fingerprint.js.map +1 -1
- package/dist/iroh/index.d.ts +3 -2
- package/dist/iroh/index.d.ts.map +1 -1
- package/dist/iroh/index.js +8 -1
- package/dist/iroh/index.js.map +1 -1
- package/dist/node/server/TenantManager.d.ts +5 -0
- package/dist/node/server/TenantManager.d.ts.map +1 -1
- package/dist/node/server/TenantManager.js +35 -56
- package/dist/node/server/TenantManager.js.map +1 -1
- package/dist/node/server/nativeIrohStreamIO.d.ts.map +1 -1
- package/dist/node/server/nativeIrohStreamIO.js +17 -4
- package/dist/node/server/nativeIrohStreamIO.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,6 +13,7 @@ exports.createLoopbackIrohPair = createLoopbackIrohPair;
|
|
|
13
13
|
* `mindoodb/sync-v5`). The Node server uses `@number0/iroh`. Tests use
|
|
14
14
|
* {@link createLoopbackIrohPair}.
|
|
15
15
|
*/
|
|
16
|
+
const irohLocator_1 = require("./irohLocator");
|
|
16
17
|
exports.MINDOODB_IROH_ALPN = "mindoodb/sync-v5";
|
|
17
18
|
const textEncoder = new TextEncoder();
|
|
18
19
|
const textDecoder = new TextDecoder();
|
|
@@ -38,8 +39,10 @@ function isBenignIrohClose(error) {
|
|
|
38
39
|
* message-oriented and do not use this.
|
|
39
40
|
*
|
|
40
41
|
* @param raw Unframed write/read/close used by `@number0/iroh` (and similar)
|
|
42
|
+
* @param remoteEndpointId Peer id from the QUIC handshake, forwarded onto the
|
|
43
|
+
* wrapped stream so listeners can authorize it
|
|
41
44
|
*/
|
|
42
|
-
function wrapLengthPrefixedByteStream(raw) {
|
|
45
|
+
function wrapLengthPrefixedByteStream(raw, remoteEndpointId) {
|
|
43
46
|
let pending = new Uint8Array(0);
|
|
44
47
|
const readExact = async (need) => {
|
|
45
48
|
while (pending.length < need) {
|
|
@@ -57,6 +60,7 @@ function wrapLengthPrefixedByteStream(raw) {
|
|
|
57
60
|
return out;
|
|
58
61
|
};
|
|
59
62
|
return {
|
|
63
|
+
remoteEndpointId,
|
|
60
64
|
async send(bytes) {
|
|
61
65
|
const header = new Uint8Array(4);
|
|
62
66
|
new DataView(header.buffer).setUint32(0, bytes.length);
|
|
@@ -122,7 +126,8 @@ function base64ToBytes(value) {
|
|
|
122
126
|
return out;
|
|
123
127
|
}
|
|
124
128
|
class LoopbackStream {
|
|
125
|
-
constructor() {
|
|
129
|
+
constructor(remoteEndpointId) {
|
|
130
|
+
this.remoteEndpointId = remoteEndpointId;
|
|
126
131
|
this.inbound = [];
|
|
127
132
|
this.waiter = null;
|
|
128
133
|
this.closed = false;
|
|
@@ -176,23 +181,33 @@ class LoopbackStream {
|
|
|
176
181
|
* spike without native Iroh. Streams are already message-oriented; do not
|
|
177
182
|
* wrap them with {@link wrapLengthPrefixedByteStream}.
|
|
178
183
|
*
|
|
179
|
-
*
|
|
184
|
+
* Each side also reports a synthetic {@link IrohStreamIO.endpointId} and stamps
|
|
185
|
+
* inbound streams with the dialer's id, so listener authorization can be tested
|
|
186
|
+
* without native Iroh. `connect` accepts either the peer's loopback ticket or
|
|
187
|
+
* its endpoint id, mirroring the real adapters.
|
|
188
|
+
*
|
|
189
|
+
* @returns Pair whose `connect` only accepts the other side's locator
|
|
180
190
|
*/
|
|
181
|
-
function createLoopbackIrohPair() {
|
|
191
|
+
function createLoopbackIrohPair(options) {
|
|
182
192
|
const listenersA = [];
|
|
183
193
|
const listenersB = [];
|
|
184
|
-
const
|
|
194
|
+
const endpointIdA = options?.endpointIdA ?? "a".repeat(64);
|
|
195
|
+
const endpointIdB = options?.endpointIdB ?? "b".repeat(64);
|
|
196
|
+
const makeIo = (ticket, peerTicket, endpointId, peerEndpointId, localListeners, remoteListeners) => ({
|
|
197
|
+
endpointId,
|
|
185
198
|
async getLocalTicket() {
|
|
186
199
|
return ticket;
|
|
187
200
|
},
|
|
188
201
|
async openConnection(target) {
|
|
189
|
-
|
|
202
|
+
const normalized = (0, irohLocator_1.normalizeIrohEndpointId)(target);
|
|
203
|
+
if (target !== peerTicket && normalized !== peerEndpointId) {
|
|
190
204
|
throw new Error(`Unknown loopback peer ${target}`);
|
|
191
205
|
}
|
|
192
206
|
return {
|
|
193
207
|
async openStream() {
|
|
194
|
-
|
|
195
|
-
const
|
|
208
|
+
// The dialer sees the listener's id and vice versa.
|
|
209
|
+
const local = new LoopbackStream(peerEndpointId);
|
|
210
|
+
const remote = new LoopbackStream(endpointId);
|
|
196
211
|
local.peer = remote;
|
|
197
212
|
remote.peer = local;
|
|
198
213
|
for (const listener of remoteListeners) {
|
|
@@ -209,6 +224,7 @@ function createLoopbackIrohPair() {
|
|
|
209
224
|
const connection = await this.openConnection(target);
|
|
210
225
|
const stream = await connection.openStream();
|
|
211
226
|
return {
|
|
227
|
+
remoteEndpointId: stream.remoteEndpointId,
|
|
212
228
|
send: (bytes) => stream.send(bytes),
|
|
213
229
|
recv: () => stream.recv(),
|
|
214
230
|
close: async () => {
|
|
@@ -238,8 +254,8 @@ function createLoopbackIrohPair() {
|
|
|
238
254
|
},
|
|
239
255
|
});
|
|
240
256
|
return {
|
|
241
|
-
a: makeIo("loopback:a", "loopback:b", listenersA, listenersB),
|
|
242
|
-
b: makeIo("loopback:b", "loopback:a", listenersB, listenersA),
|
|
257
|
+
a: makeIo("loopback:a", "loopback:b", endpointIdA, endpointIdB, listenersA, listenersB),
|
|
258
|
+
b: makeIo("loopback:b", "loopback:a", endpointIdB, endpointIdA, listenersB, listenersA),
|
|
243
259
|
};
|
|
244
260
|
}
|
|
245
261
|
//# sourceMappingURL=IrohStreamIO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrohStreamIO.js","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/IrohStreamIO.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"IrohStreamIO.js","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/IrohStreamIO.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,22 @@ export interface ParsedIrohLocator {
|
|
|
18
18
|
endpointId?: string;
|
|
19
19
|
}
|
|
20
20
|
export declare function isIrohLocator(value: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Bare lowercase endpoint id, or `null` when the value is not one.
|
|
23
|
+
*
|
|
24
|
+
* Accepts an optional `iroh:` prefix so the same string works as a locator
|
|
25
|
+
* (`iroh:<id>`) and as a directory key (`<id>`). Tickets are not accepted here
|
|
26
|
+
* — use {@link resolveIrohEndpointId} when the input may be either.
|
|
27
|
+
*/
|
|
28
|
+
export declare function normalizeIrohEndpointId(value: string | null | undefined): string | null;
|
|
29
|
+
/**
|
|
30
|
+
* Endpoint id behind any locator form — bare id, `iroh:<id>`, or a full
|
|
31
|
+
* `endpoint…` ticket — or `null` when it cannot be determined.
|
|
32
|
+
*
|
|
33
|
+
* Use this wherever a value has to stay stable across the peer's network
|
|
34
|
+
* changes: a ticket embeds the current relay and addresses, the id does not.
|
|
35
|
+
*/
|
|
36
|
+
export declare function resolveIrohEndpointId(value: string | null | undefined): string | null;
|
|
21
37
|
export declare function parseIrohLocator(value: string): ParsedIrohLocator;
|
|
22
38
|
/**
|
|
23
39
|
* Iroh endpoint tickets are `endpoint` + base32(postcard(EndpointAddr)).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"irohLocator.d.ts","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/irohLocator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CA4BjE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAc9E"}
|
|
1
|
+
{"version":3,"file":"irohLocator.d.ts","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/irohLocator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGpD;AAKD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAMvF;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAUrF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CA4BjE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAc9E"}
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.isIrohLocator = isIrohLocator;
|
|
14
|
+
exports.normalizeIrohEndpointId = normalizeIrohEndpointId;
|
|
15
|
+
exports.resolveIrohEndpointId = resolveIrohEndpointId;
|
|
14
16
|
exports.parseIrohLocator = parseIrohLocator;
|
|
15
17
|
exports.extractEndpointIdFromTicket = extractEndpointIdFromTicket;
|
|
16
18
|
const IROH_SCHEME = "iroh:";
|
|
@@ -19,6 +21,40 @@ function isIrohLocator(value) {
|
|
|
19
21
|
const trimmed = value.trim();
|
|
20
22
|
return trimmed.startsWith(IROH_SCHEME) || trimmed.startsWith(ENDPOINT_PREFIX);
|
|
21
23
|
}
|
|
24
|
+
/** An Iroh endpoint id is the 32-byte public key rendered as lowercase hex. */
|
|
25
|
+
const ENDPOINT_ID_PATTERN = /^[0-9a-f]{64}$/;
|
|
26
|
+
/**
|
|
27
|
+
* Bare lowercase endpoint id, or `null` when the value is not one.
|
|
28
|
+
*
|
|
29
|
+
* Accepts an optional `iroh:` prefix so the same string works as a locator
|
|
30
|
+
* (`iroh:<id>`) and as a directory key (`<id>`). Tickets are not accepted here
|
|
31
|
+
* — use {@link resolveIrohEndpointId} when the input may be either.
|
|
32
|
+
*/
|
|
33
|
+
function normalizeIrohEndpointId(value) {
|
|
34
|
+
if (!value) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const raw = value.trim().replace(/^iroh:/i, "").toLowerCase();
|
|
38
|
+
return ENDPOINT_ID_PATTERN.test(raw) ? raw : null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Endpoint id behind any locator form — bare id, `iroh:<id>`, or a full
|
|
42
|
+
* `endpoint…` ticket — or `null` when it cannot be determined.
|
|
43
|
+
*
|
|
44
|
+
* Use this wherever a value has to stay stable across the peer's network
|
|
45
|
+
* changes: a ticket embeds the current relay and addresses, the id does not.
|
|
46
|
+
*/
|
|
47
|
+
function resolveIrohEndpointId(value) {
|
|
48
|
+
const normalized = normalizeIrohEndpointId(value);
|
|
49
|
+
if (normalized) {
|
|
50
|
+
return normalized;
|
|
51
|
+
}
|
|
52
|
+
if (!value) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const ticket = value.trim().replace(/^iroh:/i, "");
|
|
56
|
+
return extractEndpointIdFromTicket(ticket) ?? null;
|
|
57
|
+
}
|
|
22
58
|
function parseIrohLocator(value) {
|
|
23
59
|
const trimmed = value.trim();
|
|
24
60
|
if (!trimmed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"irohLocator.js","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/irohLocator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAeH,sCAGC;AAED,4CA4BC;AAOD,kEAcC;
|
|
1
|
+
{"version":3,"file":"irohLocator.js","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/irohLocator.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
* public key cannot be swapped in after the fact. Anyone may read.
|
|
13
13
|
*
|
|
14
14
|
* Personal documents (see {@link PERSONAL_DOC_ID_PREFIXES}) are the exception
|
|
15
|
-
* inside `userdirectory`: they carry their owner's
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
15
|
+
* inside `userdirectory`: they carry their owner's own data and are not
|
|
16
|
+
* readable by the server, which means it cannot read `username_hash` out of
|
|
17
|
+
* them. Ownership for those is the person who signed `doc_create`, resolved
|
|
18
|
+
* from grants — no decryption involved. That person may change and delete
|
|
19
|
+
* their own document.
|
|
20
20
|
*/
|
|
21
21
|
export type BuiltinWriteOp = "doc_create" | "doc_change" | "doc_delete" | "doc_undelete" | "doc_snapshot";
|
|
22
22
|
/**
|
|
@@ -26,8 +26,14 @@ export type BuiltinWriteOp = "doc_create" | "doc_change" | "doc_delete" | "doc_u
|
|
|
26
26
|
* server, so any rule reading the payload could not be enforced there.
|
|
27
27
|
*
|
|
28
28
|
* `wks_` — roamed workspace and application list (one document per save id).
|
|
29
|
+
* `dev_` — one device's peer-sync record (Iroh endpoint id and label).
|
|
30
|
+
*
|
|
31
|
+
* The two differ in who may *read* them, which this rule does not care about:
|
|
32
|
+
* `wks_` documents are sealed to their owner, while `dev_` documents are
|
|
33
|
+
* encrypted with the tenant `default` key so every member can discover peers
|
|
34
|
+
* while the hoster still sees ciphertext. Ownership is the creator either way.
|
|
29
35
|
*/
|
|
30
|
-
export declare const PERSONAL_DOC_ID_PREFIXES: readonly ["wks_"];
|
|
36
|
+
export declare const PERSONAL_DOC_ID_PREFIXES: readonly ["wks_", "dev_"];
|
|
31
37
|
/** Is this a personal-data document id inside `userdirectory`? */
|
|
32
38
|
export declare function isPersonalUserdirectoryDocId(docId: string | undefined | null): boolean;
|
|
33
39
|
export interface BuiltinWriteInput {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtinDbInvariants.d.ts","sourceRoot":"","sources":["../../src/core/builtinDbInvariants.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,cAAc,CAAC;AAE1G
|
|
1
|
+
{"version":3,"file":"builtinDbInvariants.d.ts","sourceRoot":"","sources":["../../src/core/builtinDbInvariants.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,cAAc,CAAC;AAE1G;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,2BAA4B,CAAC;AAElE,kEAAkE;AAClE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAGtF;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,cAAc,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,oBAAoB,CAqEnF;AA4ED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAgBxF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAc7E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,GAAG,OAAO,CAsCV"}
|
|
@@ -17,8 +17,14 @@ const types_1 = require("./types");
|
|
|
17
17
|
* server, so any rule reading the payload could not be enforced there.
|
|
18
18
|
*
|
|
19
19
|
* `wks_` — roamed workspace and application list (one document per save id).
|
|
20
|
+
* `dev_` — one device's peer-sync record (Iroh endpoint id and label).
|
|
21
|
+
*
|
|
22
|
+
* The two differ in who may *read* them, which this rule does not care about:
|
|
23
|
+
* `wks_` documents are sealed to their owner, while `dev_` documents are
|
|
24
|
+
* encrypted with the tenant `default` key so every member can discover peers
|
|
25
|
+
* while the hoster still sees ciphertext. Ownership is the creator either way.
|
|
20
26
|
*/
|
|
21
|
-
exports.PERSONAL_DOC_ID_PREFIXES = ["wks_"];
|
|
27
|
+
exports.PERSONAL_DOC_ID_PREFIXES = ["wks_", "dev_"];
|
|
22
28
|
/** Is this a personal-data document id inside `userdirectory`? */
|
|
23
29
|
function isPersonalUserdirectoryDocId(docId) {
|
|
24
30
|
if (!docId)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtinDbInvariants.js","sourceRoot":"","sources":["../../src/core/builtinDbInvariants.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"builtinDbInvariants.js","sourceRoot":"","sources":["../../src/core/builtinDbInvariants.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,31 @@ export declare function createViewLanguage<TDocument extends Record<string, unkn
|
|
|
36
36
|
field<TPath extends MindooDBAppFieldPath<TDocument>>(path: TPath): MindooDBAppExpression<MindooDBAppPathValue<TDocument, TPath>>;
|
|
37
37
|
value<TPath extends MindooDBAppFieldPath<TValueContext>>(path: TPath): MindooDBAppExpression<MindooDBAppPathValue<TValueContext, TPath>>;
|
|
38
38
|
origin(): MindooDBAppExpression<string>;
|
|
39
|
+
/**
|
|
40
|
+
* Read a FIELD of the parent document of a nested query lookup
|
|
41
|
+
* (`MindooQuery.include`). Only valid inside an include filter; the
|
|
42
|
+
* query engine rejects it everywhere else. For the parent's id use
|
|
43
|
+
* {@link parentDocId} — `parent("docId")` is an ordinary field path
|
|
44
|
+
* and yields a value only if the parent really stores such a field.
|
|
45
|
+
*
|
|
46
|
+
* Untyped by design: the parent belongs to a different document type
|
|
47
|
+
* (often a different database) than the `TDocument` this builder was
|
|
48
|
+
* created for.
|
|
49
|
+
*/
|
|
50
|
+
parent<T = unknown>(path: string): MindooDBAppExpression<T>;
|
|
51
|
+
/**
|
|
52
|
+
* The current document's id. A document's id is metadata rather than
|
|
53
|
+
* one of its fields, so it is reachable only through this helper —
|
|
54
|
+
* `field("docId")` reads a field of that name, which normally does
|
|
55
|
+
* not exist.
|
|
56
|
+
*/
|
|
57
|
+
docId(): MindooDBAppExpression<string>;
|
|
58
|
+
/**
|
|
59
|
+
* The id of the parent row inside a nested query lookup — the
|
|
60
|
+
* {@link docId} counterpart of {@link parent}. `eq(docId(),
|
|
61
|
+
* parentDocId())` is the usual "child points at parent" join.
|
|
62
|
+
*/
|
|
63
|
+
parentDocId(): MindooDBAppExpression<string>;
|
|
39
64
|
createdAt(): MindooDBAppExpression<string | null>;
|
|
40
65
|
lastModifiedAt(): MindooDBAppExpression<string | null>;
|
|
41
66
|
decryptionKeyId(): MindooDBAppExpression<string | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/core/expressions/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,qBAAqB,EACrB,iCAAiC,EAClC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/core/expressions/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createViewLanguage = createViewLanguage;
|
|
4
|
-
const
|
|
5
|
-
"literal",
|
|
6
|
-
"field",
|
|
7
|
-
"value",
|
|
8
|
-
"origin",
|
|
9
|
-
"variable",
|
|
10
|
-
"operation",
|
|
11
|
-
"if",
|
|
12
|
-
"let",
|
|
13
|
-
"decrypt",
|
|
14
|
-
"json",
|
|
15
|
-
]);
|
|
4
|
+
const evaluateExpression_1 = require("./evaluateExpression");
|
|
16
5
|
function variable(name) {
|
|
17
6
|
return { kind: "variable", name };
|
|
18
7
|
}
|
|
@@ -22,7 +11,7 @@ function isExpression(value) {
|
|
|
22
11
|
&& value !== null
|
|
23
12
|
&& "kind" in value
|
|
24
13
|
&& typeof value.kind === "string"
|
|
25
|
-
&& EXPRESSION_KINDS.has(value.kind);
|
|
14
|
+
&& evaluateExpression_1.EXPRESSION_KINDS.has(value.kind);
|
|
26
15
|
}
|
|
27
16
|
/** Normalizes raw builder input into an expression node. */
|
|
28
17
|
function toExpression(value) {
|
|
@@ -63,6 +52,37 @@ function createViewLanguage() {
|
|
|
63
52
|
origin() {
|
|
64
53
|
return { kind: "origin" };
|
|
65
54
|
},
|
|
55
|
+
/**
|
|
56
|
+
* Read a FIELD of the parent document of a nested query lookup
|
|
57
|
+
* (`MindooQuery.include`). Only valid inside an include filter; the
|
|
58
|
+
* query engine rejects it everywhere else. For the parent's id use
|
|
59
|
+
* {@link parentDocId} — `parent("docId")` is an ordinary field path
|
|
60
|
+
* and yields a value only if the parent really stores such a field.
|
|
61
|
+
*
|
|
62
|
+
* Untyped by design: the parent belongs to a different document type
|
|
63
|
+
* (often a different database) than the `TDocument` this builder was
|
|
64
|
+
* created for.
|
|
65
|
+
*/
|
|
66
|
+
parent(path) {
|
|
67
|
+
return { kind: "parent", path };
|
|
68
|
+
},
|
|
69
|
+
/**
|
|
70
|
+
* The current document's id. A document's id is metadata rather than
|
|
71
|
+
* one of its fields, so it is reachable only through this helper —
|
|
72
|
+
* `field("docId")` reads a field of that name, which normally does
|
|
73
|
+
* not exist.
|
|
74
|
+
*/
|
|
75
|
+
docId() {
|
|
76
|
+
return { kind: "operation", op: "docId", args: [] };
|
|
77
|
+
},
|
|
78
|
+
/**
|
|
79
|
+
* The id of the parent row inside a nested query lookup — the
|
|
80
|
+
* {@link docId} counterpart of {@link parent}. `eq(docId(),
|
|
81
|
+
* parentDocId())` is the usual "child points at parent" join.
|
|
82
|
+
*/
|
|
83
|
+
parentDocId() {
|
|
84
|
+
return { kind: "operation", op: "parentDocId", args: [] };
|
|
85
|
+
},
|
|
66
86
|
createdAt() {
|
|
67
87
|
return { kind: "operation", op: "createdAt", args: [] };
|
|
68
88
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/core/expressions/builder.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/core/expressions/builder.ts"],"names":[],"mappings":";;AA8EA,gDA+PC;AAxUD,6DAAwD;AA0CxD,SAAS,QAAQ,CAAc,IAAY;IACzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,oFAAoF;AACpF,SAAS,YAAY,CAAc,KAAoC;IACrE,OAAO,OAAO,KAAK,KAAK,QAAQ;WAC3B,KAAK,KAAK,IAAI;WACd,MAAM,IAAI,KAAK;WACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;WAC9B,qCAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAsB,CAAC,CAAC;AAC1D,CAAC;AAED,4DAA4D;AAC5D,SAAS,YAAY,CAAI,KAAoC;IAC3D,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAClE,CAAC;AAED,gEAAgE;AAChE,SAAS,gBAAgB,CAAI,MAAuC;IAClE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB;IAIhC,OAAO;QACL,OAAO,CAAI,KAAQ;YACjB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,KAAa;YAClB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,KAAa;YAClB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,KAAc;YACpB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;QACD,KAAK,CAAgD,IAAW;YAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;QACD,KAAK,CAAoD,IAAW;YAClE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;QACD,MAAM;YACJ,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,CAAC;QACD;;;;;;;;;;WAUG;QACH,MAAM,CAAc,IAAY;YAC9B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAClC,CAAC;QACD;;;;;WAKG;QACH,KAAK;YACH,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACtD,CAAC;QACD;;;;WAIG;QACH,WAAW;YACT,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC5D,CAAC;QACD,SAAS;YACP,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC1D,CAAC;QACD,cAAc;YACZ,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC/D,CAAC;QACD,eAAe;YACb,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAChE,CAAC;QACD,WAAW;YACT,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC5D,CAAC;QACD,iBAAiB;YACf,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAClE,CAAC;QACD,eAAe;YACb,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAChE,CAAC;QACD,iBAAiB;YACf,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAClE,CAAC;QACD,eAAe;YACb,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAChE,CAAC;QACD,UAAU;YACR,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC3D,CAAC;QACD,kBAAkB;YAChB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACnE,CAAC;QACD,kBAAkB;YAChB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACnE,CAAC;QACD,eAAe;YACb,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAChE,CAAC;QACD,uBAAuB;YACrB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACxE,CAAC;QACD,uBAAuB;YACrB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACxE,CAAC;QACD,YAAY;YACV,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC7D,CAAC;QACD,GAAG,CAAC,IAAgC,EAAE,KAAiC;YACrE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3F,CAAC;QACD,GAAG,CAAC,IAAgC,EAAE,KAAiC;YACrE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3F,CAAC;QACD,GAAG,CAAC,IAAgC,EAAE,KAAiC;YACrE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3F,CAAC;QACD,GAAG,CAAC,IAAgC,EAAE,KAAiC;YACrE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3F,CAAC;QACD,GAAG,CAAC,IAAgC,EAAE,KAAiC;YACrE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3F,CAAC;QACD,EAAE,CAAC,IAAgC,EAAE,KAAiC;YACpE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1F,CAAC;QACD,GAAG,CAAC,IAAgC,EAAE,KAAiC;YACrE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3F,CAAC;QACD,EAAE,CAAC,IAAgC,EAAE,KAAiC;YACpE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1F,CAAC;QACD,GAAG,CAAC,IAAgC,EAAE,KAAiC;YACrE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3F,CAAC;QACD,EAAE,CAAC,IAAgC,EAAE,KAAiC;YACpE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1F,CAAC;QACD,GAAG,CAAC,IAAgC,EAAE,KAAiC;YACrE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3F,CAAC;QACD,GAAG,CAAC,GAAG,IAA2C;YAChD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,CAAC;QACD,EAAE,CAAC,GAAG,IAA2C;YAC/C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QACvE,CAAC;QACD,GAAG,CAAC,KAA0C;YAC5C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACvE,CAAC;QACD,MAAM,CAAC,GAAG,IAAkC;YAC1C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3E,CAAC;QACD,KAAK,CAAC,KAAiC;YACrC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACzE,CAAC;QACD,KAAK,CAAC,KAAiC;YACrC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,KAAiC;YACpC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,KAAiC,EAAE,EAA8B;YACpE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC1F,CAAC;QACD,KAAK,CAAC,KAAiC,EAAE,EAA8B;YACrE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3F,CAAC;QACD,QAAQ,CAAC,KAAiC;YACxC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1E,CAAC;QACD,QAAQ,CAAC,KAAiC;YACxC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1E,CAAC;QACD,SAAS,CAAC,KAAiC;YACzC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3E,CAAC;QACD,QAAQ,CAAC,IAAgC,EAAE,KAAiC;YAC1E,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAChG,CAAC;QACD,UAAU,CAAC,IAAgC,EAAE,KAAiC;YAC5E,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAClG,CAAC;QACD,QAAQ,CAAC,IAAgC,EAAE,KAAiC;YAC1E,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAChG,CAAC;QACD,QAAQ,CAAI,GAAG,IAAqC;YAClD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7E,CAAC;QACD,MAAM,CAAC,KAAiC;YACtC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1E,CAAC;QACD,SAAS,CAAC,KAAiC;YACzC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC7E,CAAC;QACD,QAAQ,CAAC,GAAG,IAAkC;YAC5C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7E,CAAC;QACD,QAAQ,CAAC,KAAiC,EAAE,IAAuC;YACjF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAClF,CAAC;QACD,YAAY,CAAC,KAAa,EAAE,GAAwC;YAClE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5F,CAAC;QACD,WAAW,CAAC,KAAa,EAAE,IAAa,EAAE,GAAwC;YAChF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9G,CAAC;QACD,IAAI,CAAC,KAAa,EAAE,IAAa;YAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACvC,CAAC;QACD;;;;;;;;;;WAUG;QACH,MAAM,CACJ,SAA8C,EAC9C,QAAuC,EACvC,GAAG,sBAAoD;YAEvD,MAAM,IAAI,GAAiC,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,sBAAsB,CAAC,CAAC;YAC5F,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CACb,qEAAqE;oBACrE,4EAA4E,CAC7E,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACjD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,MAAM,GAAG;oBACP,IAAI,EAAE,IAAI;oBACV,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAiC;oBAChE,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnC,SAAS,EAAE,MAAM;iBAClB,CAAC;YACJ,CAAC;YACD,OAAO,MAAkC,CAAC;QAC5C,CAAC;QACD,GAAG,CACD,QAAmB,EACnB,KAA+E;YAE/E,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAC3C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CACpC,CAAC;YAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CACzC,CAAC;YAC/B,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,kBAAkB;gBAC5B,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAClC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -18,6 +18,12 @@ export type ExpressionEvaluationContext = {
|
|
|
18
18
|
doc: Record<string, unknown>;
|
|
19
19
|
values: Record<string, unknown>;
|
|
20
20
|
origin: string;
|
|
21
|
+
/**
|
|
22
|
+
* The document's id, which is metadata rather than one of its fields and
|
|
23
|
+
* therefore not part of `doc`. Hosts populate it so `docId()` resolves;
|
|
24
|
+
* where it is missing the operation yields `null`.
|
|
25
|
+
*/
|
|
26
|
+
docId?: string | null;
|
|
21
27
|
createdAt?: string | null;
|
|
22
28
|
/** ISO-8601 last-modified timestamp from the host runtime (`getLastModified()`). */
|
|
23
29
|
lastModifiedAt?: string | null;
|
|
@@ -28,6 +34,22 @@ export type ExpressionEvaluationContext = {
|
|
|
28
34
|
variables: Record<string, unknown>;
|
|
29
35
|
/** Pre-resolved plaintext for `decrypt` nodes, keyed by field name. */
|
|
30
36
|
decrypted?: Record<string, unknown>;
|
|
37
|
+
/**
|
|
38
|
+
* Second evaluation context for `parent` nodes: the parent row of a
|
|
39
|
+
* nested query lookup (`MindooQuery.include`). Only populated while an
|
|
40
|
+
* include filter is evaluated; `parent` nodes yield `undefined` without
|
|
41
|
+
* it.
|
|
42
|
+
*/
|
|
43
|
+
parent?: ExpressionParentContext;
|
|
44
|
+
};
|
|
45
|
+
/** The parent row a `parent` node reads from inside an include filter. */
|
|
46
|
+
export type ExpressionParentContext = {
|
|
47
|
+
docId: string;
|
|
48
|
+
/**
|
|
49
|
+
* The parent's field values in evaluation form (`buildSummaryEvaluationDoc`),
|
|
50
|
+
* i.e. unprojected and with `_lastModified` mirrored in.
|
|
51
|
+
*/
|
|
52
|
+
doc: Record<string, unknown>;
|
|
31
53
|
};
|
|
32
54
|
/** A field whose ciphertext a view/query definition needs decrypted before evaluation. */
|
|
33
55
|
export type DecryptRequest = {
|
|
@@ -54,6 +76,26 @@ export declare function expressionToBoolean(value: unknown): boolean;
|
|
|
54
76
|
* context. This is the runtime counterpart of the builder and parser.
|
|
55
77
|
*/
|
|
56
78
|
export declare function evaluateExpression(expression: MindooDBAppExpression, context: ExpressionEvaluationContext): unknown;
|
|
79
|
+
/**
|
|
80
|
+
* Every node kind {@link evaluateExpression} understands — the runtime
|
|
81
|
+
* mirror of the `MindooDBAppExpression` union, and the one list both the
|
|
82
|
+
* builder (telling nodes from literals) and the query engine (rejecting a
|
|
83
|
+
* node the evaluator cannot run) work from. A new node kind belongs here.
|
|
84
|
+
*/
|
|
85
|
+
export declare const EXPRESSION_KINDS: ReadonlySet<MindooDBAppExpression["kind"]>;
|
|
86
|
+
/**
|
|
87
|
+
* Describes the first node of an expression tree that the evaluator would
|
|
88
|
+
* not recognize, or `null` when every node is a known kind.
|
|
89
|
+
*
|
|
90
|
+
* The evaluator's switch is exhaustive over the node union and deliberately
|
|
91
|
+
* has no `default`, so anything else — formula *source text* passed where a
|
|
92
|
+
* node was expected, a hand-built node with a typo'd `kind`, a value that
|
|
93
|
+
* survived a JSON round trip badly — evaluates to `undefined` rather than
|
|
94
|
+
* failing. As a filter that means "matches nothing", with no error and full
|
|
95
|
+
* coverage reported: the worst way to be wrong. Entry points that accept an
|
|
96
|
+
* expression from a caller check it with this first.
|
|
97
|
+
*/
|
|
98
|
+
export declare function findUnknownExpressionNode(expression: MindooDBAppExpression): string | null;
|
|
57
99
|
/**
|
|
58
100
|
* Walks an expression tree and collects every `decrypt` node so the host
|
|
59
101
|
* runtime knows which `_encrypted` fields it must decrypt before evaluation.
|
|
@@ -67,14 +109,25 @@ export declare function collectDecryptRequests(expression: MindooDBAppExpression
|
|
|
67
109
|
* `_attachments` — they read that managed field even without a field node.
|
|
68
110
|
*/
|
|
69
111
|
export declare function getReferencedFields(expression: MindooDBAppExpression): string[];
|
|
112
|
+
/**
|
|
113
|
+
* Collects every PARENT field path (`parent` nodes) an expression
|
|
114
|
+
* references. The counterpart of {@link getReferencedFields} for nested
|
|
115
|
+
* query lookups: both sets are coverage-checked, but against different
|
|
116
|
+
* summaries — `field` paths against the child database's, these against
|
|
117
|
+
* the parent's. `parentDocId()` contributes nothing here: an id is not a
|
|
118
|
+
* summary field and so has nothing to cover.
|
|
119
|
+
*/
|
|
120
|
+
export declare function getReferencedParentFields(expression: MindooDBAppExpression): string[];
|
|
70
121
|
/**
|
|
71
122
|
* Collects expression capabilities relevant for the query engine's
|
|
72
|
-
* guardrails: whether the expression needs decryption
|
|
73
|
-
* context (neither can be answered from the summary buffer)
|
|
123
|
+
* guardrails: whether the expression needs decryption, a view-tree
|
|
124
|
+
* context (neither can be answered from the summary buffer), or a parent
|
|
125
|
+
* row (only exists inside a nested query lookup).
|
|
74
126
|
*/
|
|
75
127
|
export declare function analyzeExpressionRequirements(expression: MindooDBAppExpression): {
|
|
76
128
|
needsDecryption: boolean;
|
|
77
129
|
needsViewContext: boolean;
|
|
78
130
|
viewContextOperations: string[];
|
|
131
|
+
needsParentContext: boolean;
|
|
79
132
|
};
|
|
80
133
|
//# sourceMappingURL=evaluateExpression.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluateExpression.d.ts","sourceRoot":"","sources":["../../../src/core/expressions/evaluateExpression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD;;;;;;;;;GASG;AAEH;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluateExpression.d.ts","sourceRoot":"","sources":["../../../src/core/expressions/evaluateExpression.ts"],"names":[],"mappings":"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"}
|