@rocicorp/zero 0.7.2024120200 → 0.7.2024120400
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/out/advanced.js +1 -1
- package/out/{chunk-C7M3BJ3Z.js → chunk-6HXO6VMP.js} +13 -12
- package/out/chunk-6HXO6VMP.js.map +7 -0
- package/out/{chunk-KL66XOAW.js → chunk-WJCWI5I4.js} +76 -43
- package/out/{chunk-KL66XOAW.js.map → chunk-WJCWI5I4.js.map} +3 -3
- package/out/shared/src/asserts.d.ts +1 -1
- package/out/shared/src/asserts.d.ts.map +1 -1
- package/out/shared/src/asserts.js +2 -1
- package/out/shared/src/asserts.js.map +1 -1
- package/out/solid.js +2 -2
- package/out/zero-cache/src/auth/load-schema.d.ts.map +1 -1
- package/out/zero-cache/src/auth/load-schema.js +4 -20
- package/out/zero-cache/src/auth/load-schema.js.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +7 -2
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +11 -6
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +2 -2
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +4 -3
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +5 -3
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +5 -2
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +5 -195
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +2 -2
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-client/src/client/context.d.ts +1 -1
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/options.d.ts +9 -14
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.d.ts +5 -95
- package/out/zero-protocol/src/ast.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.js +7 -9
- package/out/zero-protocol/src/ast.js.map +1 -1
- package/out/zero-protocol/src/change-desired-queries.d.ts +2 -78
- package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
- package/out/zero-protocol/src/connect.d.ts +2 -78
- package/out/zero-protocol/src/connect.d.ts.map +1 -1
- package/out/zero-protocol/src/down.d.ts +2 -78
- package/out/zero-protocol/src/down.d.ts.map +1 -1
- package/out/zero-protocol/src/poke.d.ts +4 -156
- package/out/zero-protocol/src/poke.d.ts.map +1 -1
- package/out/zero-protocol/src/queries-patch.d.ts +3 -117
- package/out/zero-protocol/src/queries-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/up.d.ts +2 -78
- package/out/zero-protocol/src/up.d.ts.map +1 -1
- package/out/zero-schema/src/build-schema.d.ts.map +1 -1
- package/out/zero-schema/src/build-schema.js +2 -14
- package/out/zero-schema/src/build-schema.js.map +1 -1
- package/out/zero-schema/src/compiled-permissions.d.ts +17 -459
- package/out/zero-schema/src/compiled-permissions.d.ts.map +1 -1
- package/out/zero-schema/src/normalize-table-schema.d.ts +3 -2
- package/out/zero-schema/src/normalize-table-schema.d.ts.map +1 -1
- package/out/zero-schema/src/normalize-table-schema.js +39 -13
- package/out/zero-schema/src/normalize-table-schema.js.map +1 -1
- package/out/zero-schema/src/permissions.d.ts +1 -1
- package/out/zero-schema/src/permissions.d.ts.map +1 -1
- package/out/zero-schema/src/schema-config.d.ts +15 -29
- package/out/zero-schema/src/schema-config.d.ts.map +1 -1
- package/out/zero-schema/src/schema-config.js +39 -13
- package/out/zero-schema/src/schema-config.js.map +1 -1
- package/out/zero-schema/src/table-schema.d.ts +25 -36
- package/out/zero-schema/src/table-schema.d.ts.map +1 -1
- package/out/zero-schema/src/table-schema.js.map +1 -1
- package/out/zero.js +2 -2
- package/out/zql/src/ivm/memory-source.d.ts +1 -0
- package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-source.js +9 -9
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/schema.d.ts +6 -2
- package/out/zql/src/ivm/schema.d.ts.map +1 -1
- package/out/zql/src/ivm/source.d.ts +10 -0
- package/out/zql/src/ivm/source.d.ts.map +1 -1
- package/out/zql/src/ivm/view-apply-change.js +4 -2
- package/out/zql/src/ivm/view-apply-change.js.map +1 -1
- package/out/zql/src/query/expression.d.ts +3 -2
- package/out/zql/src/query/expression.d.ts.map +1 -1
- package/out/zql/src/query/expression.js.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +2 -2
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts +1 -0
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +9 -3
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +1 -1
- package/out/chunk-C7M3BJ3Z.js.map +0 -7
package/out/advanced.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// ../shared/src/asserts.ts
|
|
2
2
|
function assert(b, msg = "Assertion failed") {
|
|
3
3
|
if (!b) {
|
|
4
|
-
|
|
4
|
+
const msgStr = typeof msg === "string" ? msg : msg();
|
|
5
|
+
throw new Error(msgStr);
|
|
5
6
|
}
|
|
6
7
|
}
|
|
7
8
|
function assertString(v) {
|
|
@@ -182,16 +183,16 @@ function applyChange(parentEntry, change, schema, relationship, format) {
|
|
|
182
183
|
const childSchema = must(
|
|
183
184
|
schema.relationships[change.child.relationshipName]
|
|
184
185
|
);
|
|
185
|
-
const childFormat =
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
186
|
+
const childFormat = format.relationships[change.child.relationshipName];
|
|
187
|
+
if (childFormat !== void 0) {
|
|
188
|
+
applyChange(
|
|
189
|
+
existing,
|
|
190
|
+
change.child.change,
|
|
191
|
+
childSchema,
|
|
192
|
+
change.child.relationshipName,
|
|
193
|
+
childFormat
|
|
194
|
+
);
|
|
195
|
+
}
|
|
195
196
|
break;
|
|
196
197
|
}
|
|
197
198
|
case "edit": {
|
|
@@ -296,4 +297,4 @@ export {
|
|
|
296
297
|
must,
|
|
297
298
|
applyChange
|
|
298
299
|
};
|
|
299
|
-
//# sourceMappingURL=chunk-
|
|
300
|
+
//# sourceMappingURL=chunk-6HXO6VMP.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../shared/src/asserts.ts", "../../shared/src/must.ts", "../../zql/src/ivm/view-apply-change.ts"],
|
|
4
|
+
"sourcesContent": ["export function assert(\n b: unknown,\n msg: string | (() => string) = 'Assertion failed',\n): asserts b {\n if (!b) {\n const msgStr = typeof msg === 'string' ? msg : msg();\n throw new Error(msgStr);\n }\n}\n\nexport function assertString(v: unknown): asserts v is string {\n assertType(v, 'string');\n}\n\nexport function assertNumber(v: unknown): asserts v is number {\n assertType(v, 'number');\n}\n\nexport function assertBoolean(v: unknown): asserts v is boolean {\n assertType(v, 'boolean');\n}\n\nfunction assertType(v: unknown, t: string) {\n if (typeof v !== t) {\n throwInvalidType(v, t);\n }\n}\n\nexport function assertObject(v: unknown): asserts v is Record<string, unknown> {\n if (v === null) {\n throwInvalidType(v, 'object');\n }\n assertType(v, 'object');\n}\n\nexport function assertArray(v: unknown): asserts v is unknown[] {\n if (!Array.isArray(v)) {\n throwInvalidType(v, 'array');\n }\n}\n\nexport function invalidType(v: unknown, t: string): string {\n let s = 'Invalid type: ';\n if (v === null || v === undefined) {\n s += v;\n } else {\n s += `${typeof v} \\`${v}\\``;\n }\n return s + `, expected ${t}`;\n}\n\nexport function throwInvalidType(v: unknown, t: string): never {\n throw new Error(invalidType(v, t));\n}\n\nexport function assertNotNull<T>(v: T | null): asserts v is T {\n if (v === null) {\n throw new Error('Expected non-null value');\n }\n}\n\nexport function assertUndefined<T>(\n v: T | undefined,\n msg = 'Expected undefined value',\n): asserts v is T {\n if (v !== undefined) {\n throw new Error(msg);\n }\n}\n\nexport function assertNotUndefined<T>(\n v: T | undefined,\n msg = 'Expected non undefined value',\n): asserts v is T {\n if (v === undefined) {\n throw new Error(msg);\n }\n}\n\nexport function assertInstanceof<T>(\n v: unknown,\n t: new (...args: unknown[]) => T,\n): asserts v is T {\n if (!(v instanceof t)) {\n throw new Error(`Expected instanceof ${t.name}`);\n }\n}\n\nexport function assertUint8Array(v: unknown): asserts v is Uint8Array {\n assertInstanceof(v, Uint8Array);\n}\n\nexport function unreachable(): never;\nexport function unreachable(v: never): never;\nexport function unreachable(_?: never): never {\n throw new Error('Unreachable');\n}\n\nexport function notImplemented(): never {\n throw new Error('Not implemented');\n}\n", "export function must<T>(v: T | undefined | null, msg?: string): T {\n // eslint-disable-next-line eqeqeq\n if (v == null) {\n throw new Error(msg ?? `Unexpected ${v} value`);\n }\n return v;\n}\n", "import {\n assert,\n assertArray,\n assertObject,\n assertUndefined,\n unreachable,\n} from '../../../shared/src/asserts.js';\nimport {must} from '../../../shared/src/must.js';\nimport type {Row} from '../../../zero-protocol/src/data.js';\nimport type {Change} from './change.js';\nimport type {Node, Comparator} from './data.js';\nimport type {SourceSchema} from './schema.js';\nimport type {Entry, EntryList, Format} from './view.js';\n\nexport function applyChange(\n parentEntry: Entry,\n change: Change,\n schema: SourceSchema,\n relationship: string,\n format: Format,\n) {\n if (schema.isHidden) {\n switch (change.type) {\n case 'add':\n case 'remove':\n for (const [relationship, children] of Object.entries(\n change.node.relationships,\n )) {\n const childSchema = must(schema.relationships[relationship]);\n for (const node of children) {\n applyChange(\n parentEntry,\n {type: change.type, node},\n childSchema,\n relationship,\n format,\n );\n }\n }\n return;\n case 'edit':\n // If hidden at this level it means that the hidden row was changed. If\n // the row was changed in such a way that it would change the\n // relationships then the edit would have been split into remove and\n // add.\n return;\n case 'child': {\n const childSchema = must(\n schema.relationships[change.child.relationshipName],\n );\n applyChange(\n parentEntry,\n change.child.change,\n childSchema,\n relationship,\n format,\n );\n return;\n }\n default:\n unreachable(change);\n }\n }\n\n const {singular, relationships: childFormats} = format;\n switch (change.type) {\n case 'add': {\n // TODO: Only create a new entry if we need to mutate the existing one.\n const newEntry: Entry = {\n ...change.node.row,\n };\n if (singular) {\n assertUndefined(\n parentEntry[relationship],\n 'single output already exists',\n );\n parentEntry[relationship] = newEntry;\n } else {\n const view = parentEntry[relationship];\n assertArray(view);\n const {pos, found} = binarySearch(view, newEntry, schema.compareRows);\n assert(!found, 'node already exists');\n view.splice(pos, 0, newEntry);\n }\n for (const [relationship, children] of Object.entries(\n change.node.relationships,\n )) {\n // TODO: Is there a flag to make TypeScript complain that dictionary access might be undefined?\n const childSchema = must(schema.relationships[relationship]);\n const childFormat = childFormats[relationship];\n if (childFormat === undefined) {\n continue;\n }\n\n const newView = childFormat.singular ? undefined : ([] as EntryList);\n newEntry[relationship] = newView;\n for (const node of children) {\n applyChange(\n newEntry,\n {type: 'add', node},\n childSchema,\n relationship,\n childFormat,\n );\n }\n }\n break;\n }\n case 'remove': {\n if (singular) {\n assertObject(parentEntry[relationship]);\n parentEntry[relationship] = undefined;\n } else {\n assertArray(parentEntry[relationship]);\n const view = parentEntry[relationship];\n const {pos, found} = binarySearch(\n view,\n change.node.row,\n schema.compareRows,\n );\n assert(found, 'node does not exist');\n view.splice(pos, 1);\n }\n // Needed to ensure cleanup of operator state is fully done.\n drainStreams(change.node);\n break;\n }\n case 'child': {\n let existing: Entry;\n if (singular) {\n assertObject(parentEntry[relationship]);\n existing = parentEntry[relationship];\n } else {\n assertArray(parentEntry[relationship]);\n const list = parentEntry[relationship];\n const {pos, found} = binarySearch(list, change.row, schema.compareRows);\n assert(found, 'node does not exist');\n existing = list[pos];\n }\n\n const childSchema = must(\n schema.relationships[change.child.relationshipName],\n );\n const childFormat = format.relationships[change.child.relationshipName];\n if (childFormat !== undefined) {\n applyChange(\n existing,\n change.child.change,\n childSchema,\n change.child.relationshipName,\n childFormat,\n );\n }\n break;\n }\n case 'edit': {\n if (singular) {\n assertObject(parentEntry[relationship]);\n parentEntry[relationship] = {\n ...parentEntry[relationship],\n ...change.node.row,\n };\n } else {\n assertArray(parentEntry[relationship]);\n const view = parentEntry[relationship];\n // If the order changed due to the edit, we need to remove and reinsert.\n if (schema.compareRows(change.oldNode.row, change.node.row) === 0) {\n const {pos, found} = binarySearch(\n view,\n change.oldNode.row,\n schema.compareRows,\n );\n assert(found, 'node does not exists');\n view[pos] = makeEntryPreserveRelationships(\n change.node.row,\n view[pos],\n schema.relationships,\n );\n } else {\n // Remove\n const {pos, found} = binarySearch(\n view,\n change.oldNode.row,\n schema.compareRows,\n );\n assert(found, 'node does not exists');\n const oldEntry = view[pos];\n view.splice(pos, 1);\n\n // Insert\n {\n const {pos, found} = binarySearch(\n view,\n change.node.row,\n schema.compareRows,\n );\n assert(!found, 'node already exists');\n view.splice(\n pos,\n 0,\n makeEntryPreserveRelationships(\n change.node.row,\n oldEntry,\n schema.relationships,\n ),\n );\n }\n }\n }\n break;\n }\n default:\n unreachable(change);\n }\n}\n\n// TODO: Do not return an object. It puts unnecessary pressure on the GC.\nfunction binarySearch(view: EntryList, target: Entry, comparator: Comparator) {\n let low = 0;\n let high = view.length - 1;\n while (low <= high) {\n const mid = (low + high) >>> 1;\n const comparison = comparator(view[mid] as Row, target as Row);\n if (comparison < 0) {\n low = mid + 1;\n } else if (comparison > 0) {\n high = mid - 1;\n } else {\n return {pos: mid, found: true};\n }\n }\n return {pos: low, found: false};\n}\n\nfunction makeEntryPreserveRelationships(\n row: Row,\n entry: Entry,\n relationships: {[key: string]: SourceSchema},\n): Entry {\n const result: Entry = {...row};\n for (const relationship in relationships) {\n assert(!(relationship in row), 'Relationship already exists');\n result[relationship] = entry[relationship];\n }\n return result;\n}\n\nfunction drainStreams(node: Node) {\n for (const stream of Object.values(node.relationships)) {\n for (const node of stream) {\n drainStreams(node);\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["relationship", "pos", "found", "node"]
|
|
7
|
+
}
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
must,
|
|
15
15
|
throwInvalidType,
|
|
16
16
|
unreachable
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-6HXO6VMP.js";
|
|
18
18
|
import {
|
|
19
19
|
__export,
|
|
20
20
|
__reExport
|
|
@@ -9344,28 +9344,36 @@ function assertNoDuplicates(arr) {
|
|
|
9344
9344
|
"Primary key must not contain duplicates"
|
|
9345
9345
|
);
|
|
9346
9346
|
}
|
|
9347
|
-
function normalizePrimaryKey(
|
|
9348
|
-
|
|
9349
|
-
|
|
9347
|
+
function normalizePrimaryKey(primaryKey) {
|
|
9348
|
+
if (typeof primaryKey === "string") {
|
|
9349
|
+
return [primaryKey];
|
|
9350
|
+
}
|
|
9351
|
+
assertNoDuplicates(primaryKey);
|
|
9352
|
+
return primaryKey;
|
|
9350
9353
|
}
|
|
9351
9354
|
function normalizeColumns(columns, primaryKey) {
|
|
9352
9355
|
const rv = {};
|
|
9353
9356
|
for (const pk of primaryKey) {
|
|
9354
9357
|
const schemaValue = columns[pk];
|
|
9355
9358
|
assert(schemaValue, `Primary key column "${pk}" not found`);
|
|
9356
|
-
|
|
9357
|
-
|
|
9358
|
-
|
|
9359
|
-
|
|
9360
|
-
|
|
9361
|
-
|
|
9359
|
+
if (typeof schemaValue !== "string") {
|
|
9360
|
+
const { type, optional } = schemaValue;
|
|
9361
|
+
assert(!optional, `Primary key column "${pk}" cannot be optional`);
|
|
9362
|
+
assert(
|
|
9363
|
+
type === "string" || type === "number" || type === "boolean",
|
|
9364
|
+
`Primary key column "${pk}" must be a string, number, or boolean. Got ${type}`
|
|
9365
|
+
);
|
|
9366
|
+
}
|
|
9362
9367
|
}
|
|
9363
9368
|
for (const [name, column] of sortedEntries(columns)) {
|
|
9364
|
-
rv[name] =
|
|
9369
|
+
rv[name] = normalizeColumn(column);
|
|
9365
9370
|
}
|
|
9366
9371
|
return rv;
|
|
9367
9372
|
}
|
|
9368
|
-
function
|
|
9373
|
+
function normalizeColumn(value) {
|
|
9374
|
+
if (typeof value === "string") {
|
|
9375
|
+
return { type: value, optional: false };
|
|
9376
|
+
}
|
|
9369
9377
|
return {
|
|
9370
9378
|
type: value.type,
|
|
9371
9379
|
optional: value.optional ?? false
|
|
@@ -9373,8 +9381,10 @@ function normalizeSchemaValue(value) {
|
|
|
9373
9381
|
}
|
|
9374
9382
|
function normalizeRelationships(relationships, tableSchemaCache) {
|
|
9375
9383
|
const rv = {};
|
|
9376
|
-
|
|
9377
|
-
|
|
9384
|
+
if (relationships) {
|
|
9385
|
+
for (const [name, relationship] of sortedEntries(relationships)) {
|
|
9386
|
+
rv[name] = normalizeRelationship(relationship, tableSchemaCache);
|
|
9387
|
+
}
|
|
9378
9388
|
}
|
|
9379
9389
|
return rv;
|
|
9380
9390
|
}
|
|
@@ -9385,13 +9395,15 @@ function normalizeRelationship(relationship, tableSchemaCache) {
|
|
|
9385
9395
|
return normalizeJunctionRelationship(relationship, tableSchemaCache);
|
|
9386
9396
|
}
|
|
9387
9397
|
function normalizeFieldRelationship(relationship, tableSchemaCache) {
|
|
9398
|
+
const sourceField = normalizeFieldName(relationship.sourceField);
|
|
9399
|
+
const destField = normalizeFieldName(relationship.destField);
|
|
9388
9400
|
assert(
|
|
9389
|
-
|
|
9401
|
+
sourceField.length === destField.length,
|
|
9390
9402
|
"Source and destination fields must have the same length"
|
|
9391
9403
|
);
|
|
9392
9404
|
return {
|
|
9393
|
-
sourceField
|
|
9394
|
-
destField
|
|
9405
|
+
sourceField,
|
|
9406
|
+
destField,
|
|
9395
9407
|
destSchema: normalizeLazyTableSchema(
|
|
9396
9408
|
relationship.destSchema,
|
|
9397
9409
|
tableSchemaCache
|
|
@@ -9413,6 +9425,20 @@ function normalizeLazyTableSchema(tableSchema, buildCache) {
|
|
|
9413
9425
|
buildCache
|
|
9414
9426
|
);
|
|
9415
9427
|
}
|
|
9428
|
+
function normalizeFieldName(sourceField) {
|
|
9429
|
+
if (typeof sourceField === "string") {
|
|
9430
|
+
return [sourceField];
|
|
9431
|
+
}
|
|
9432
|
+
assert(sourceField.length > 0, "Expected at least one field");
|
|
9433
|
+
return sourceField;
|
|
9434
|
+
}
|
|
9435
|
+
function normalizeTables(tables) {
|
|
9436
|
+
const result = {};
|
|
9437
|
+
for (const [name, table] of sortedEntries(tables)) {
|
|
9438
|
+
result[name] = normalizeTableSchemaWithCache(table, name, /* @__PURE__ */ new Map());
|
|
9439
|
+
}
|
|
9440
|
+
return result;
|
|
9441
|
+
}
|
|
9416
9442
|
|
|
9417
9443
|
// ../zero-schema/src/normalized-schema.ts
|
|
9418
9444
|
function normalizeSchema(schema) {
|
|
@@ -9426,10 +9452,10 @@ var NormalizedSchema = class {
|
|
|
9426
9452
|
tables;
|
|
9427
9453
|
constructor(schema) {
|
|
9428
9454
|
this.version = schema.version;
|
|
9429
|
-
this.tables =
|
|
9455
|
+
this.tables = normalizeTables2(schema.tables);
|
|
9430
9456
|
}
|
|
9431
9457
|
};
|
|
9432
|
-
function
|
|
9458
|
+
function normalizeTables2(tables) {
|
|
9433
9459
|
const rv = {};
|
|
9434
9460
|
const tableSchemaCache = /* @__PURE__ */ new Map();
|
|
9435
9461
|
for (const [name, table] of sortedEntries(tables)) {
|
|
@@ -9657,7 +9683,7 @@ var simpleOperatorSchema = valita_exports.union(
|
|
|
9657
9683
|
likeOpsSchema,
|
|
9658
9684
|
inOpsSchema
|
|
9659
9685
|
);
|
|
9660
|
-
var literalReferenceSchema =
|
|
9686
|
+
var literalReferenceSchema = readonlyObject({
|
|
9661
9687
|
type: valita_exports.literal("literal"),
|
|
9662
9688
|
value: valita_exports.union(
|
|
9663
9689
|
valita_exports.string(),
|
|
@@ -9667,11 +9693,11 @@ var literalReferenceSchema = valita_exports.object({
|
|
|
9667
9693
|
readonlyArray(valita_exports.union(valita_exports.string(), valita_exports.number(), valita_exports.boolean()))
|
|
9668
9694
|
)
|
|
9669
9695
|
});
|
|
9670
|
-
var columnReferenceSchema =
|
|
9696
|
+
var columnReferenceSchema = readonlyObject({
|
|
9671
9697
|
type: valita_exports.literal("column"),
|
|
9672
9698
|
name: valita_exports.string()
|
|
9673
9699
|
});
|
|
9674
|
-
var parameterReferenceSchema =
|
|
9700
|
+
var parameterReferenceSchema = readonlyObject({
|
|
9675
9701
|
type: valita_exports.literal("static"),
|
|
9676
9702
|
anchor: valita_exports.union(valita_exports.literal("authData"), valita_exports.literal("preMutationRow")),
|
|
9677
9703
|
field: valita_exports.string()
|
|
@@ -9681,16 +9707,13 @@ var conditionValueSchema = valita_exports.union(
|
|
|
9681
9707
|
columnReferenceSchema,
|
|
9682
9708
|
parameterReferenceSchema
|
|
9683
9709
|
);
|
|
9684
|
-
var simpleConditionSchema =
|
|
9710
|
+
var simpleConditionSchema = readonlyObject({
|
|
9685
9711
|
type: valita_exports.literal("simple"),
|
|
9686
9712
|
op: simpleOperatorSchema,
|
|
9687
9713
|
left: conditionValueSchema,
|
|
9688
9714
|
right: valita_exports.union(parameterReferenceSchema, literalReferenceSchema)
|
|
9689
9715
|
});
|
|
9690
|
-
var correlatedSubqueryConditionOperatorSchema = valita_exports.union(
|
|
9691
|
-
valita_exports.literal("EXISTS"),
|
|
9692
|
-
valita_exports.literal("NOT EXISTS")
|
|
9693
|
-
);
|
|
9716
|
+
var correlatedSubqueryConditionOperatorSchema = valita_exports.union(valita_exports.literal("EXISTS"), valita_exports.literal("NOT EXISTS"));
|
|
9694
9717
|
var correlatedSubqueryConditionSchema = readonlyObject({
|
|
9695
9718
|
type: valita_exports.literal("correlatedSubquery"),
|
|
9696
9719
|
related: valita_exports.lazy(() => correlatedSubquerySchema),
|
|
@@ -9710,7 +9733,9 @@ var disjunctionSchema = readonlyObject({
|
|
|
9710
9733
|
type: valita_exports.literal("or"),
|
|
9711
9734
|
conditions: readonlyArray(conditionSchema)
|
|
9712
9735
|
});
|
|
9713
|
-
var compoundKeySchema =
|
|
9736
|
+
var compoundKeySchema = readonly(
|
|
9737
|
+
valita_exports.tuple([valita_exports.string()]).concat(valita_exports.array(valita_exports.string()))
|
|
9738
|
+
);
|
|
9714
9739
|
var correlationSchema = readonlyObject({
|
|
9715
9740
|
parentField: compoundKeySchema,
|
|
9716
9741
|
childField: compoundKeySchema
|
|
@@ -9722,7 +9747,7 @@ var correlatedSubquerySchemaOmitSubquery = readonlyObject({
|
|
|
9722
9747
|
var correlatedSubquerySchema = correlatedSubquerySchemaOmitSubquery.extend({
|
|
9723
9748
|
subquery: valita_exports.lazy(() => astSchema)
|
|
9724
9749
|
});
|
|
9725
|
-
var astSchema =
|
|
9750
|
+
var astSchema = readonlyObject({
|
|
9726
9751
|
schema: valita_exports.string().optional(),
|
|
9727
9752
|
table: valita_exports.string(),
|
|
9728
9753
|
alias: valita_exports.string().optional(),
|
|
@@ -9813,7 +9838,7 @@ function compareValuePosition(a, b) {
|
|
|
9813
9838
|
switch (a.type) {
|
|
9814
9839
|
case "literal":
|
|
9815
9840
|
assert(b.type === "literal");
|
|
9816
|
-
return
|
|
9841
|
+
return compareUTF83(String(a.value), String(b.value));
|
|
9817
9842
|
case "column":
|
|
9818
9843
|
assert(b.type === "column");
|
|
9819
9844
|
return compareUTF83(a.name, b.name);
|
|
@@ -14349,23 +14374,30 @@ var MemorySource = class {
|
|
|
14349
14374
|
return this.#fetch(req, connection);
|
|
14350
14375
|
}
|
|
14351
14376
|
push(change) {
|
|
14377
|
+
for (const _ of this.genPush(change)) {
|
|
14378
|
+
}
|
|
14379
|
+
}
|
|
14380
|
+
*genPush(change) {
|
|
14352
14381
|
const primaryIndex = this.#getPrimaryIndex();
|
|
14353
14382
|
const { data } = primaryIndex;
|
|
14354
14383
|
switch (change.type) {
|
|
14355
14384
|
case "add":
|
|
14356
|
-
|
|
14357
|
-
|
|
14358
|
-
|
|
14385
|
+
assert(
|
|
14386
|
+
!data.has(change.row),
|
|
14387
|
+
() => `Row already exists ${JSON.stringify(change)}`
|
|
14388
|
+
);
|
|
14359
14389
|
break;
|
|
14360
14390
|
case "remove":
|
|
14361
|
-
|
|
14362
|
-
|
|
14363
|
-
|
|
14391
|
+
assert(
|
|
14392
|
+
data.has(change.row),
|
|
14393
|
+
() => `Row not found ${JSON.stringify(change)}`
|
|
14394
|
+
);
|
|
14364
14395
|
break;
|
|
14365
14396
|
case "edit":
|
|
14366
|
-
|
|
14367
|
-
|
|
14368
|
-
|
|
14397
|
+
assert(
|
|
14398
|
+
data.has(change.oldRow),
|
|
14399
|
+
() => `Row not found ${JSON.stringify(change)}`
|
|
14400
|
+
);
|
|
14369
14401
|
break;
|
|
14370
14402
|
default:
|
|
14371
14403
|
unreachable(change);
|
|
@@ -14391,6 +14423,7 @@ var MemorySource = class {
|
|
|
14391
14423
|
if (output) {
|
|
14392
14424
|
this.#overlay = { outputIndex, change };
|
|
14393
14425
|
output.push(outputChange);
|
|
14426
|
+
yield;
|
|
14394
14427
|
}
|
|
14395
14428
|
}
|
|
14396
14429
|
this.#overlay = void 0;
|
|
@@ -14668,7 +14701,7 @@ var ZeroContext = class {
|
|
|
14668
14701
|
#commitListeners = /* @__PURE__ */ new Set();
|
|
14669
14702
|
staticQueryParameters = void 0;
|
|
14670
14703
|
constructor(tables, addQuery, batchViewUpdates) {
|
|
14671
|
-
this.#tables = tables;
|
|
14704
|
+
this.#tables = normalizeTables(tables);
|
|
14672
14705
|
this.#addQuery = addQuery;
|
|
14673
14706
|
this.#batchViewUpdates = batchViewUpdates;
|
|
14674
14707
|
}
|
|
@@ -15219,7 +15252,7 @@ function makeMessage(message, context, logLevel) {
|
|
|
15219
15252
|
}
|
|
15220
15253
|
|
|
15221
15254
|
// ../zero-client/src/client/version.ts
|
|
15222
|
-
var version2 = "0.7.
|
|
15255
|
+
var version2 = "0.7.2024120400+c18ae6";
|
|
15223
15256
|
|
|
15224
15257
|
// ../zero-client/src/client/log-options.ts
|
|
15225
15258
|
var LevelFilterLogSink = class {
|
|
@@ -16873,7 +16906,7 @@ var Zero = class {
|
|
|
16873
16906
|
}
|
|
16874
16907
|
async #updateAuthToken(lc, error) {
|
|
16875
16908
|
const { auth: authOption } = this.#options;
|
|
16876
|
-
const auth = await
|
|
16909
|
+
const auth = await authOption?.(error);
|
|
16877
16910
|
if (auth) {
|
|
16878
16911
|
lc.debug?.("Got auth token");
|
|
16879
16912
|
this.#rep.auth = auth;
|
|
@@ -17209,4 +17242,4 @@ export {
|
|
|
17209
17242
|
escapeLike,
|
|
17210
17243
|
Zero
|
|
17211
17244
|
};
|
|
17212
|
-
//# sourceMappingURL=chunk-
|
|
17245
|
+
//# sourceMappingURL=chunk-WJCWI5I4.js.map
|