@rocicorp/zero 0.18.2025031401 → 0.18.2025031801

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/out/advanced.js +1 -1
  2. package/out/{chunk-4HTOMAT6.js → chunk-472VY5VS.js} +7 -22
  3. package/out/{chunk-4HTOMAT6.js.map → chunk-472VY5VS.js.map} +2 -2
  4. package/out/{chunk-SVJISXWE.js → chunk-MJCITZ5S.js} +80 -74
  5. package/out/chunk-MJCITZ5S.js.map +7 -0
  6. package/out/solid.js +4 -25
  7. package/out/solid.js.map +2 -2
  8. package/out/zero-cache/src/auth/jwt.d.ts +5 -1
  9. package/out/zero-cache/src/auth/jwt.d.ts.map +1 -1
  10. package/out/zero-cache/src/auth/jwt.js +13 -0
  11. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  12. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  13. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +3 -3
  14. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  15. package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts +1 -0
  16. package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts.map +1 -1
  17. package/out/zero-cache/src/services/change-source/protocol/current/data.js +11 -0
  18. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  19. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +3 -0
  20. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
  21. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +1 -0
  22. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  23. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +21 -3
  24. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  25. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +1 -0
  26. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  27. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
  28. package/out/zero-cache/src/services/replicator/change-processor.js +19 -12
  29. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  30. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +1 -3
  31. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  32. package/out/zero-cache/src/services/view-syncer/client-handler.js +4 -23
  33. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  34. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +1 -1
  35. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  36. package/out/zero-cache/src/services/view-syncer/cvr-store.js +4 -6
  37. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  38. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +2 -2
  39. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  40. package/out/zero-cache/src/services/view-syncer/cvr.js +4 -4
  41. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  42. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  43. package/out/zero-cache/src/services/view-syncer/view-syncer.js +6 -7
  44. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  45. package/out/zero-cache/src/types/lite.d.ts +6 -3
  46. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  47. package/out/zero-cache/src/types/lite.js +9 -7
  48. package/out/zero-cache/src/types/lite.js.map +1 -1
  49. package/out/zero-protocol/src/down.d.ts +0 -1
  50. package/out/zero-protocol/src/down.d.ts.map +1 -1
  51. package/out/zero-protocol/src/poke.d.ts +0 -2
  52. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  53. package/out/zero-protocol/src/poke.js +0 -2
  54. package/out/zero-protocol/src/poke.js.map +1 -1
  55. package/out/zero-protocol/src/protocol-version.d.ts +1 -8
  56. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  57. package/out/zero-protocol/src/protocol-version.js +4 -12
  58. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  59. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  60. package/out/zero.js +2 -2
  61. package/out/zql/src/ivm/array-view.d.ts.map +1 -1
  62. package/out/zql/src/ivm/array-view.js +2 -3
  63. package/out/zql/src/ivm/array-view.js.map +1 -1
  64. package/out/zql/src/ivm/view-apply-change.d.ts +5 -1
  65. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  66. package/out/zql/src/ivm/view-apply-change.js +68 -71
  67. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  68. package/out/zql/src/query/expression.d.ts +1 -1
  69. package/out/zql/src/query/expression.d.ts.map +1 -1
  70. package/out/zql/src/query/expression.js +1 -3
  71. package/out/zql/src/query/expression.js.map +1 -1
  72. package/package.json +2 -2
  73. package/out/chunk-SVJISXWE.js.map +0 -7
@@ -117,7 +117,8 @@ function drainStreams(node) {
117
117
  }
118
118
 
119
119
  // ../zql/src/ivm/view-apply-change.ts
120
- function applyChange(parentEntry, change, schema, relationship, format, refCountMap) {
120
+ var refCountSymbol = Symbol("rc");
121
+ function applyChange(parentEntry, change, schema, relationship, format) {
121
122
  if (schema.isHidden) {
122
123
  switch (change.type) {
123
124
  case "add":
@@ -132,8 +133,7 @@ function applyChange(parentEntry, change, schema, relationship, format, refCount
132
133
  { type: change.type, node },
133
134
  childSchema,
134
135
  relationship2,
135
- format,
136
- refCountMap
136
+ format
137
137
  );
138
138
  }
139
139
  }
@@ -149,8 +149,7 @@ function applyChange(parentEntry, change, schema, relationship, format, refCount
149
149
  change.child.change,
150
150
  childSchema,
151
151
  relationship,
152
- format,
153
- refCountMap
152
+ format
154
153
  );
155
154
  return;
156
155
  }
@@ -161,29 +160,23 @@ function applyChange(parentEntry, change, schema, relationship, format, refCount
161
160
  const { singular, relationships: childFormats } = format;
162
161
  switch (change.type) {
163
162
  case "add": {
164
- const newEntry = {
165
- ...change.node.row
166
- };
163
+ let newEntry;
164
+ let rc = 1;
167
165
  if (singular) {
168
166
  const oldEntry = parentEntry[relationship];
169
167
  if (oldEntry !== void 0) {
170
168
  assert(
171
- schema.compareRows(oldEntry, newEntry) === 0,
169
+ schema.compareRows(oldEntry, change.node.row) === 0,
172
170
  "single output already exists"
173
171
  );
174
- const rc = must(refCountMap.get(oldEntry));
175
- refCountMap.delete(oldEntry);
176
- parentEntry[relationship] = newEntry;
177
- refCountMap.set(newEntry, rc + 1);
178
- } else {
179
- parentEntry[relationship] = newEntry;
180
- refCountMap.set(newEntry, 1);
172
+ rc = oldEntry[refCountSymbol] + 1;
181
173
  }
174
+ newEntry = makeNewEntryWithRefCount(change.node.row, rc);
175
+ parentEntry[relationship] = newEntry;
182
176
  } else {
183
- insertAndUpdateRefCount(
184
- refCountMap,
177
+ newEntry = makeNewEntryAndInsert(
178
+ change.node.row,
185
179
  getChildEntryList(parentEntry, relationship),
186
- newEntry,
187
180
  schema.compareRows
188
181
  );
189
182
  }
@@ -203,8 +196,7 @@ function applyChange(parentEntry, change, schema, relationship, format, refCount
203
196
  { type: "add", node },
204
197
  childSchema,
205
198
  relationship2,
206
- childFormat,
207
- refCountMap
199
+ childFormat
208
200
  );
209
201
  }
210
202
  }
@@ -214,16 +206,13 @@ function applyChange(parentEntry, change, schema, relationship, format, refCount
214
206
  if (singular) {
215
207
  const oldEntry = parentEntry[relationship];
216
208
  assert(oldEntry !== void 0, "node does not exist");
217
- const rc = must(refCountMap.get(oldEntry));
209
+ const rc = oldEntry[refCountSymbol];
218
210
  if (rc === 1) {
219
- refCountMap.delete(oldEntry);
220
211
  parentEntry[relationship] = void 0;
221
- } else {
222
- refCountMap.set(oldEntry, rc - 1);
223
212
  }
213
+ oldEntry[refCountSymbol]--;
224
214
  } else {
225
- removeAndsUpdateRefCount(
226
- refCountMap,
215
+ removeAndUpdateRefCount(
227
216
  getChildEntryList(parentEntry, relationship),
228
217
  change.node.row,
229
218
  schema.compareRows
@@ -235,8 +224,7 @@ function applyChange(parentEntry, change, schema, relationship, format, refCount
235
224
  case "child": {
236
225
  let existing;
237
226
  if (singular) {
238
- assertObject(parentEntry[relationship]);
239
- existing = parentEntry[relationship];
227
+ existing = getSingularEntry(parentEntry, relationship);
240
228
  } else {
241
229
  const view = getChildEntryList(parentEntry, relationship);
242
230
  const { pos, found } = binarySearch(
@@ -257,8 +245,7 @@ function applyChange(parentEntry, change, schema, relationship, format, refCount
257
245
  change.child.change,
258
246
  childSchema,
259
247
  change.child.relationshipName,
260
- childFormat,
261
- refCountMap
248
+ childFormat
262
249
  );
263
250
  }
264
251
  break;
@@ -266,18 +253,17 @@ function applyChange(parentEntry, change, schema, relationship, format, refCount
266
253
  case "edit": {
267
254
  if (singular) {
268
255
  const existing = parentEntry[relationship];
269
- assertEntry(existing);
270
- const rc = must(refCountMap.get(existing));
256
+ assertRCEntry(existing);
257
+ const rc = existing[refCountSymbol];
271
258
  const newEntry = {
272
259
  ...existing,
273
- ...change.node.row
260
+ ...change.node.row,
261
+ [refCountSymbol]: rc
274
262
  };
275
- refCountMap.set(newEntry, rc);
276
- refCountMap.delete(existing);
263
+ existing[refCountSymbol] = 0;
277
264
  parentEntry[relationship] = newEntry;
278
265
  } else {
279
- const view = parentEntry[relationship];
280
- assertEntryList(view);
266
+ const view = getChildEntryList(parentEntry, relationship);
281
267
  if (schema.compareRows(change.oldNode.row, change.node.row) === 0) {
282
268
  const { pos, found } = binarySearch(
283
269
  view,
@@ -285,30 +271,27 @@ function applyChange(parentEntry, change, schema, relationship, format, refCount
285
271
  schema.compareRows
286
272
  );
287
273
  assert(found, "node does not exist");
288
- const rc = must(refCountMap.get(view[pos]));
289
- refCountMap.delete(view[pos]);
290
- view[pos] = makeEntryPreserveRelationships(
274
+ const oldEntry = view[pos];
275
+ const rc = oldEntry[refCountSymbol];
276
+ oldEntry[refCountSymbol] = 0;
277
+ const newEntry = makeEntryPreserveRelationships(
291
278
  change.node.row,
292
- view[pos],
293
- format.relationships
279
+ oldEntry,
280
+ format.relationships,
281
+ rc
294
282
  );
295
- refCountMap.set(view[pos], rc);
283
+ view[pos] = newEntry;
296
284
  } else {
297
- const oldEntry = removeAndsUpdateRefCount(
298
- refCountMap,
285
+ const oldEntry = removeAndUpdateRefCount(
299
286
  view,
300
287
  change.oldNode.row,
301
288
  schema.compareRows
302
289
  );
303
- const newEntry = makeEntryPreserveRelationships(
290
+ insertAndSetRefCount(
291
+ view,
304
292
  change.node.row,
305
293
  oldEntry,
306
- format.relationships
307
- );
308
- insertAndUpdateRefCount(
309
- refCountMap,
310
- view,
311
- newEntry,
294
+ format.relationships,
312
295
  schema.compareRows
313
296
  );
314
297
  }
@@ -319,29 +302,47 @@ function applyChange(parentEntry, change, schema, relationship, format, refCount
319
302
  unreachable(change);
320
303
  }
321
304
  }
322
- function insertAndUpdateRefCount(refCountMap, view, newEntry, compareRows) {
323
- const { pos, found } = binarySearch(view, newEntry, compareRows);
305
+ function makeNewEntryAndInsert(newRow, view, compareRows) {
306
+ const { pos, found } = binarySearch(view, newRow, compareRows);
307
+ let deleteCount = 0;
308
+ let rc = 1;
309
+ if (found) {
310
+ deleteCount = 1;
311
+ rc = view[pos][refCountSymbol];
312
+ view[pos][refCountSymbol] = rc - 1;
313
+ rc++;
314
+ }
315
+ const newEntry = makeNewEntryWithRefCount(newRow, rc);
316
+ view.splice(pos, deleteCount, newEntry);
317
+ return newEntry;
318
+ }
319
+ function insertAndSetRefCount(view, newRow, oldEntry, relationships, compareRows) {
320
+ const { pos, found } = binarySearch(view, newRow, compareRows);
324
321
  let deleteCount = 0;
325
322
  let rc = 1;
326
323
  if (found) {
327
324
  deleteCount = 1;
328
- rc = must(refCountMap.get(view[pos])) + 1;
329
- refCountMap.delete(view[pos]);
325
+ const oldEntry2 = view[pos];
326
+ rc = oldEntry2[refCountSymbol] + 1;
327
+ oldEntry2[refCountSymbol] = 0;
330
328
  }
329
+ const newEntry = makeEntryPreserveRelationships(
330
+ newRow,
331
+ oldEntry,
332
+ relationships,
333
+ rc
334
+ );
331
335
  view.splice(pos, deleteCount, newEntry);
332
- refCountMap.set(newEntry, rc);
333
336
  }
334
- function removeAndsUpdateRefCount(refCountMap, view, target, compareRows) {
335
- const { pos, found } = binarySearch(view, target, compareRows);
337
+ function removeAndUpdateRefCount(view, row, compareRows) {
338
+ const { pos, found } = binarySearch(view, row, compareRows);
336
339
  assert(found, "node does not exist");
337
340
  const oldEntry = view[pos];
338
- const rc = must(refCountMap.get(oldEntry));
341
+ const rc = oldEntry[refCountSymbol];
339
342
  if (rc === 1) {
340
- refCountMap.delete(oldEntry);
341
343
  view.splice(pos, 1);
342
- } else {
343
- refCountMap.set(oldEntry, rc - 1);
344
344
  }
345
+ oldEntry[refCountSymbol]--;
345
346
  return oldEntry;
346
347
  }
347
348
  function binarySearch(view, target, comparator) {
@@ -360,24 +361,29 @@ function binarySearch(view, target, comparator) {
360
361
  }
361
362
  return { pos: low, found: false };
362
363
  }
363
- function makeEntryPreserveRelationships(row, entry, relationships) {
364
- const result = { ...row };
364
+ function makeEntryPreserveRelationships(newRow, oldEntry, relationships, rc) {
365
+ const entry = makeNewEntryWithRefCount(newRow, rc);
365
366
  for (const relationship in relationships) {
366
- assert(!(relationship in row), "Relationship already exists");
367
- result[relationship] = entry[relationship];
367
+ assert(!(relationship in newRow), "Relationship already exists");
368
+ entry[relationship] = oldEntry[relationship];
368
369
  }
369
- return result;
370
+ return entry;
370
371
  }
371
372
  function getChildEntryList(parentEntry, relationship) {
372
373
  const view = parentEntry[relationship];
373
374
  assertArray(view);
374
375
  return view;
375
376
  }
376
- function assertEntryList(v) {
377
- assertArray(v);
377
+ function assertRCEntry(v) {
378
+ assertNumber(v[refCountSymbol]);
379
+ }
380
+ function getSingularEntry(parentEntry, relationship) {
381
+ const e = parentEntry[relationship];
382
+ assertNumber(e[refCountSymbol]);
383
+ return e;
378
384
  }
379
- function assertEntry(v) {
380
- assertObject(v);
385
+ function makeNewEntryWithRefCount(row, rc) {
386
+ return { ...row, [refCountSymbol]: rc };
381
387
  }
382
388
 
383
389
  export {
@@ -398,4 +404,4 @@ export {
398
404
  drainStreams,
399
405
  applyChange
400
406
  };
401
- //# sourceMappingURL=chunk-SVJISXWE.js.map
407
+ //# sourceMappingURL=chunk-MJCITZ5S.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../shared/src/asserts.ts", "../../shared/src/must.ts", "../../zql/src/ivm/data.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 throw new Error(typeof msg === 'string' ? msg : msg());\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 {compareUTF8} from 'compare-utf8';\nimport {\n assertBoolean,\n assertNumber,\n assertString,\n} from '../../../shared/src/asserts.ts';\nimport type {Ordering} from '../../../zero-protocol/src/ast.ts';\nimport type {Row, Value} from '../../../zero-protocol/src/data.ts';\nimport type {Stream} from './stream.ts';\n\n/**\n * A row flowing through the pipeline, plus its relationships.\n * Relationships are generated lazily as read.\n */\nexport type Node = {\n row: Row;\n relationships: Record<string, () => Stream<Node>>;\n};\n\n/**\n * Compare two values. The values must be of the same type. This function\n * throws at runtime if the types differ.\n *\n * Note, this function considers `null === null` and\n * `undefined === undefined`. This is different than SQL. In join code,\n * null must be treated separately.\n *\n * See: https://github.com/rocicorp/mono/pull/2116/files#r1704811479\n *\n * @returns < 0 if a < b, 0 if a === b, > 0 if a > b\n */\nexport function compareValues(a: Value, b: Value): number {\n a = normalizeUndefined(a);\n b = normalizeUndefined(b);\n\n if (a === b) {\n return 0;\n }\n if (a === null) {\n return -1;\n }\n if (b === null) {\n return 1;\n }\n if (typeof a === 'boolean') {\n assertBoolean(b);\n return a ? 1 : -1;\n }\n if (typeof a === 'number') {\n assertNumber(b);\n return a - b;\n }\n if (typeof a === 'string') {\n assertString(b);\n // We compare all strings in Zero as UTF-8. This is the default on SQLite\n // and we need to match it. See:\n // https://blog.replicache.dev/blog/replicache-11-adventures-in-text-encoding.\n //\n // TODO: We could change this since SQLite supports UTF-16. Microbenchmark\n // to see if there's a big win.\n //\n // https://www.sqlite.org/c3ref/create_collation.html\n return compareUTF8(a, b);\n }\n throw new Error(`Unsupported type: ${a}`);\n}\n\nexport type NormalizedValue = Exclude<Value, undefined>;\n\n/**\n * We allow undefined to be passed for the convenience of developers, but we\n * treat it equivalently to null. It's better for perf to not create an copy\n * of input values, so we just normalize at use when necessary.\n */\nexport function normalizeUndefined(v: Value): NormalizedValue {\n return v ?? null;\n}\n\nexport type Comparator = (r1: Row, r2: Row) => number;\n\nexport function makeComparator(\n order: Ordering,\n reverse?: boolean | undefined,\n): Comparator {\n return (a, b) => {\n // Skip destructuring here since it is hot code.\n for (const ord of order) {\n const field = ord[0];\n const comp = compareValues(a[field], b[field]);\n if (comp !== 0) {\n const result = ord[1] === 'asc' ? comp : -comp;\n return reverse ? -result : result;\n }\n }\n return 0;\n };\n}\n\n/**\n * Determine if two values are equal. Note that unlike compareValues() above,\n * this function treats `null` as unequal to itself (and same for `undefined`).\n * This is required to make joins work correctly, but may not be the right\n * semantic for your application.\n */\nexport function valuesEqual(a: Value, b: Value): boolean {\n // eslint-disable-next-line eqeqeq\n if (a == null || b == null) {\n return false;\n }\n return a === b;\n}\n\nexport function 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", "import {\n assert,\n assertArray,\n assertNumber,\n unreachable,\n} from '../../../shared/src/asserts.ts';\nimport {must} from '../../../shared/src/must.ts';\nimport type {Writable} from '../../../shared/src/writable.ts';\nimport type {Row} from '../../../zero-protocol/src/data.ts';\nimport {drainStreams, type Comparator, type Node} from './data.ts';\nimport type {SourceSchema} from './schema.ts';\nimport type {Entry, Format} from './view.ts';\n\nexport const refCountSymbol = Symbol('rc');\n\ntype RCEntry = Writable<Entry> & {[refCountSymbol]: number};\ntype RCEntryList = RCEntry[];\n\n/**\n * `applyChange` does not consume the `relationships` of `ChildChange#node`,\n * `EditChange#node` and `EditChange#oldNode`. The `ViewChange` type\n * documents and enforces this via the type system.\n */\nexport type ViewChange =\n | AddViewChange\n | RemoveViewChange\n | ChildViewChange\n | EditViewChange;\n\nexport type RowOnlyNode = {row: Row};\n\nexport type AddViewChange = {\n type: 'add';\n node: Node;\n};\n\nexport type RemoveViewChange = {\n type: 'remove';\n node: Node;\n};\n\ntype ChildViewChange = {\n type: 'child';\n node: RowOnlyNode;\n child: {\n relationshipName: string;\n change: ViewChange;\n };\n};\n\ntype EditViewChange = {\n type: 'edit';\n node: RowOnlyNode;\n oldNode: RowOnlyNode;\n};\n\n/**\n * This is a subset of WeakMap but restricted to what we need.\n * @deprecated Not used anymore. This will be removed in the future.\n */\nexport interface RefCountMap {\n get(entry: Entry): number | undefined;\n set(entry: Entry, refCount: number): void;\n delete(entry: Entry): boolean;\n}\n\nexport function applyChange(\n parentEntry: Entry,\n change: ViewChange,\n schema: SourceSchema,\n relationship: string,\n format: Format,\n): void;\n/** @deprecated Use the version without the `refCountMap` parameter. */\nexport function applyChange(\n parentEntry: Entry,\n change: ViewChange,\n schema: SourceSchema,\n relationship: string,\n format: Format,\n refCountMap?: unknown,\n): void;\nexport function applyChange(\n parentEntry: Entry,\n change: ViewChange,\n schema: SourceSchema,\n relationship: string,\n format: Format,\n): void {\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 let newEntry: RCEntry;\n\n let rc = 1;\n if (singular) {\n const oldEntry = parentEntry[relationship] as RCEntry | undefined;\n if (oldEntry !== undefined) {\n assert(\n schema.compareRows(oldEntry, change.node.row) === 0,\n 'single output already exists',\n );\n // adding same again.\n rc = oldEntry[refCountSymbol] + 1;\n }\n\n newEntry = makeNewEntryWithRefCount(change.node.row, rc);\n\n (parentEntry as Writable<Entry>)[relationship] = newEntry;\n } else {\n newEntry = makeNewEntryAndInsert(\n change.node.row,\n getChildEntryList(parentEntry, relationship),\n schema.compareRows,\n );\n }\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 RCEntryList);\n newEntry[relationship] = newView;\n\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 const oldEntry = parentEntry[relationship] as RCEntry | undefined;\n assert(oldEntry !== undefined, 'node does not exist');\n const rc = oldEntry[refCountSymbol];\n if (rc === 1) {\n (parentEntry as Writable<Entry>)[relationship] = undefined;\n }\n oldEntry[refCountSymbol]--;\n } else {\n removeAndUpdateRefCount(\n getChildEntryList(parentEntry, relationship),\n change.node.row,\n schema.compareRows,\n );\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: RCEntry;\n if (singular) {\n existing = getSingularEntry(parentEntry, relationship);\n } else {\n const view = getChildEntryList(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 existing = view[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 const existing = parentEntry[relationship];\n assertRCEntry(existing);\n const rc = existing[refCountSymbol];\n const newEntry = {\n ...existing,\n ...change.node.row,\n [refCountSymbol]: rc,\n };\n existing[refCountSymbol] = 0;\n (parentEntry as Writable<Entry>)[relationship] = newEntry;\n } else {\n const view = getChildEntryList(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 exist');\n const oldEntry = view[pos];\n const rc = oldEntry[refCountSymbol];\n oldEntry[refCountSymbol] = 0;\n\n const newEntry = makeEntryPreserveRelationships(\n change.node.row,\n oldEntry,\n format.relationships,\n rc,\n );\n\n view[pos] = newEntry;\n } else {\n // Remove\n const oldEntry = removeAndUpdateRefCount(\n view,\n change.oldNode.row,\n schema.compareRows,\n );\n\n // Insert\n insertAndSetRefCount(\n view,\n change.node.row,\n oldEntry,\n format.relationships,\n schema.compareRows,\n );\n }\n }\n\n break;\n }\n default:\n unreachable(change);\n }\n}\n\nfunction makeNewEntryAndInsert(\n newRow: Row,\n view: RCEntryList,\n compareRows: Comparator,\n): RCEntry {\n const {pos, found} = binarySearch(view, newRow, compareRows);\n\n let deleteCount = 0;\n let rc = 1;\n if (found) {\n deleteCount = 1;\n rc = view[pos][refCountSymbol];\n view[pos][refCountSymbol] = rc - 1;\n rc++;\n }\n\n const newEntry = makeNewEntryWithRefCount(newRow, rc);\n\n view.splice(pos, deleteCount, newEntry);\n\n return newEntry;\n}\n\nfunction insertAndSetRefCount(\n view: RCEntryList,\n newRow: Row,\n oldEntry: RCEntry,\n relationships: {[key: string]: Format},\n compareRows: Comparator,\n): void {\n const {pos, found} = binarySearch(view, newRow, compareRows);\n\n let deleteCount = 0;\n let rc = 1;\n if (found) {\n deleteCount = 1;\n const oldEntry = view[pos];\n rc = oldEntry[refCountSymbol] + 1;\n oldEntry[refCountSymbol] = 0;\n }\n\n const newEntry = makeEntryPreserveRelationships(\n newRow,\n oldEntry,\n relationships,\n rc,\n );\n\n view.splice(pos, deleteCount, newEntry);\n}\n\nfunction removeAndUpdateRefCount(\n view: RCEntryList,\n row: Row,\n compareRows: Comparator,\n): RCEntry {\n const {pos, found} = binarySearch(view, row, compareRows);\n assert(found, 'node does not exist');\n const oldEntry = view[pos];\n const rc = oldEntry[refCountSymbol];\n if (rc === 1) {\n view.splice(pos, 1);\n }\n oldEntry[refCountSymbol]--;\n\n return oldEntry;\n}\n\n// TODO: Do not return an object. It puts unnecessary pressure on the GC.\nfunction binarySearch(view: RCEntryList, target: Row, 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 newRow: Row,\n oldEntry: RCEntry,\n relationships: {[key: string]: Format},\n rc: number,\n): RCEntry {\n const entry = makeNewEntryWithRefCount(newRow, rc);\n for (const relationship in relationships) {\n assert(!(relationship in newRow), 'Relationship already exists');\n entry[relationship] = oldEntry[relationship];\n }\n return entry;\n}\n\nfunction getChildEntryList(\n parentEntry: Entry,\n relationship: string,\n): RCEntryList {\n const view = parentEntry[relationship];\n assertArray(view);\n return view as RCEntryList;\n}\n\nfunction assertRCEntry(v: unknown): asserts v is RCEntry {\n assertNumber((v as Partial<RCEntry>)[refCountSymbol]);\n}\n\nfunction getSingularEntry(parentEntry: Entry, relationship: string): RCEntry {\n const e = parentEntry[relationship];\n assertNumber((e as Partial<RCEntry>)[refCountSymbol]);\n return e as RCEntry;\n}\n\nfunction makeNewEntryWithRefCount(row: Row, rc: number): RCEntry {\n return {...row, [refCountSymbol]: rc};\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["node", "relationship", "oldEntry"]
7
+ }
package/out/solid.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  Zero
3
- } from "./chunk-4HTOMAT6.js";
3
+ } from "./chunk-472VY5VS.js";
4
4
  import {
5
5
  DEFAULT_TTL
6
6
  } from "./chunk-5X3DESC6.js";
7
7
  import "./chunk-ULOTOBTC.js";
8
8
  import {
9
9
  applyChange
10
- } from "./chunk-SVJISXWE.js";
10
+ } from "./chunk-MJCITZ5S.js";
11
11
  import "./chunk-424PT5DM.js";
12
12
 
13
13
  // ../zero-solid/src/create-zero.ts
@@ -26,23 +26,10 @@ import { createMemo, onCleanup } from "solid-js";
26
26
  // ../zero-solid/src/solid-view.ts
27
27
  import {
28
28
  createStore,
29
- produce,
30
- unwrap
29
+ produce
31
30
  } from "solid-js/store";
32
31
  var complete = { type: "complete" };
33
32
  var unknown = { type: "unknown" };
34
- var SolidRefCountMap = class {
35
- #map = /* @__PURE__ */ new WeakMap();
36
- get(entry) {
37
- return this.#map.get(unwrap(entry));
38
- }
39
- set(entry, refCount) {
40
- this.#map.set(unwrap(entry), refCount);
41
- }
42
- delete(entry) {
43
- return this.#map.delete(unwrap(entry));
44
- }
45
- };
46
33
  var SolidView = class {
47
34
  #input;
48
35
  #format;
@@ -59,7 +46,6 @@ var SolidView = class {
59
46
  // optimization reduced #applyChanges time from 743ms to 133ms.
60
47
  #builderRoot;
61
48
  #pendingChanges = [];
62
- #refCountMap = new SolidRefCountMap();
63
49
  constructor(input, onTransactionCommit, format, onDestroy, queryComplete) {
64
50
  this.#input = input;
65
51
  onTransactionCommit(this.#onTransactionCommit);
@@ -132,14 +118,7 @@ var SolidView = class {
132
118
  }
133
119
  }
134
120
  #applyChangeToRoot(change, root) {
135
- applyChange(
136
- root,
137
- change,
138
- this.#input.getSchema(),
139
- "",
140
- this.#format,
141
- this.#refCountMap
142
- );
121
+ applyChange(root, change, this.#input.getSchema(), "", this.#format);
143
122
  }
144
123
  #createEmptyRoot() {
145
124
  return {
package/out/solid.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../zero-solid/src/create-zero.ts", "../../zero-solid/src/use-query.ts", "../../zero-solid/src/solid-view.ts"],
4
- "sourcesContent": ["import {batch} from 'solid-js';\nimport type {ZeroAdvancedOptions} from '../../zero/src/advanced.ts';\nimport {Zero, type Schema, type ZeroOptions} from '../../zero/src/zero.ts';\n\nexport function createZero<S extends Schema>(options: ZeroOptions<S>): Zero<S> {\n const opts: ZeroAdvancedOptions<S> = {\n ...options,\n batchViewUpdates: batch,\n };\n return new Zero(opts);\n}\n", "import {createMemo, onCleanup, type Accessor} from 'solid-js';\nimport type {\n AdvancedQuery,\n HumanReadable,\n Query,\n} from '../../zero/src/advanced.ts';\nimport {DEFAULT_TTL, type Schema, type TTL} from '../../zero/src/zero.ts';\nimport {\n solidViewFactory,\n type QueryResultDetails,\n type SolidView,\n} from './solid-view.ts';\n\nexport type QueryResult<TReturn> = readonly [\n Accessor<HumanReadable<TReturn>>,\n Accessor<QueryResultDetails>,\n];\n\nexport type UseQueryOptions = {\n ttl?: TTL | undefined;\n};\n\nexport function useQuery<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n>(\n querySignal: () => Query<TSchema, TTable, TReturn>,\n options?: UseQueryOptions | Accessor<UseQueryOptions>,\n): QueryResult<TReturn> {\n // Wrap in in createMemo to ensure a new view is created if the querySignal changes.\n const view = createMemo(() => {\n const query = querySignal() as AdvancedQuery<TSchema, TTable, TReturn>;\n const ttl = normalize(options)?.ttl ?? DEFAULT_TTL;\n const view = getView(query, ttl);\n\n onCleanup(() => {\n view.destroy();\n });\n return view;\n });\n\n return [() => view().data, () => view().resultDetails];\n}\n\nconst views = new WeakMap<object, SolidView<HumanReadable<unknown>>>();\n\nfunction getView<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n>(\n query: AdvancedQuery<TSchema, TTable, TReturn>,\n ttl: TTL,\n): SolidView<HumanReadable<TReturn>> {\n // TODO(arv): Use the hash of the query instead of the query object itself... but\n // we need the clientID to do that in a reasonable way.\n let view = views.get(query);\n if (!view) {\n view = query.materialize(solidViewFactory, ttl);\n views.set(query, view);\n } else {\n query.updateTTL(ttl);\n }\n return view as SolidView<HumanReadable<TReturn>>;\n}\n\nfunction normalize<T>(\n options?: T | Accessor<T | undefined> | undefined,\n): T | undefined {\n return typeof options === 'function' ? (options as Accessor<T>)() : options;\n}\n", "import {\n createStore,\n produce,\n unwrap,\n type SetStoreFunction,\n type Store,\n} from 'solid-js/store';\nimport {\n applyChange,\n type Change,\n type Entry,\n type Format,\n type HumanReadable,\n type Input,\n type Node,\n type Output,\n type Query,\n type ResultType,\n type Stream,\n type ViewChange,\n type ViewFactory,\n} from '../../zero-advanced/src/mod.js';\nimport type {Schema} from '../../zero-schema/src/mod.js';\nimport type {RefCountMap} from '../../zql/src/ivm/view-apply-change.ts';\n\nexport type QueryResultDetails = {\n readonly type: ResultType;\n};\n\ntype State = [Entry, QueryResultDetails];\n\nconst complete = {type: 'complete'} as const;\nconst unknown = {type: 'unknown'} as const;\n\n/**\n * We need this class since Solid wraps the underlying object in a proxy\n * and we need to store the ref count on the underlying object.\n */\nclass SolidRefCountMap implements RefCountMap {\n readonly #map = new WeakMap<Entry, number>();\n\n get(entry: Entry): number | undefined {\n return this.#map.get(unwrap(entry));\n }\n set(entry: Entry, refCount: number): void {\n this.#map.set(unwrap(entry), refCount);\n }\n delete(entry: Entry): boolean {\n return this.#map.delete(unwrap(entry));\n }\n}\n\nexport class SolidView<V> implements Output {\n readonly #input: Input;\n readonly #format: Format;\n readonly #onDestroy: () => void;\n\n #state: Store<State>;\n #setState: SetStoreFunction<State>;\n\n // Optimization: if the store is currently empty we build up\n // the view on a plain old JS object stored at #builderRoot, and return\n // that for the new state on transaction commit. This avoids building up\n // large views from scratch via solid produce. The proxy object used by\n // solid produce is slow and in this case we don't care about solid tracking\n // the fine grained changes (everything has changed, it's all new). For a\n // test case with a view with 3000 rows, each row having 2 children, this\n // optimization reduced #applyChanges time from 743ms to 133ms.\n #builderRoot: Entry | undefined;\n #pendingChanges: ViewChange[] = [];\n readonly #refCountMap = new SolidRefCountMap();\n\n constructor(\n input: Input,\n onTransactionCommit: (cb: () => void) => void,\n format: Format,\n onDestroy: () => void,\n queryComplete: true | Promise<true>,\n ) {\n this.#input = input;\n onTransactionCommit(this.#onTransactionCommit);\n this.#format = format;\n this.#onDestroy = onDestroy;\n input.setOutput(this);\n\n const initialRoot = this.#createEmptyRoot();\n this.#applyChangesToRoot(\n input.fetch({}),\n node => ({type: 'add', node}),\n initialRoot,\n );\n [this.#state, this.#setState] = createStore<State>([\n initialRoot,\n queryComplete === true ? complete : unknown,\n ]);\n if (isEmptyRoot(initialRoot)) {\n this.#builderRoot = this.#createEmptyRoot();\n }\n\n if (queryComplete !== true) {\n void queryComplete.then(() => {\n this.#setState(oldState => [oldState[0], complete]);\n });\n }\n }\n\n get data(): V {\n return this.#state[0][''] as V;\n }\n\n get resultDetails(): QueryResultDetails {\n return this.#state[1];\n }\n\n destroy(): void {\n this.#onDestroy();\n }\n\n #onTransactionCommit = () => {\n const builderRoot = this.#builderRoot;\n if (builderRoot) {\n if (!isEmptyRoot(builderRoot)) {\n this.#setState(oldState => [builderRoot, oldState[1]]);\n this.#builderRoot = undefined;\n }\n } else {\n try {\n this.#applyChanges(this.#pendingChanges, c => c);\n } finally {\n this.#pendingChanges = [];\n }\n }\n };\n\n push(change: Change): void {\n // Delay updating the solid store state until the transaction commit\n // (because each update of the solid store is quite expensive). If\n // this.#builderRoot is defined apply the changes to it (we are building\n // from an empty root), otherwise queue the changes to be applied\n // using produce at the end of the transaction but read the relationships\n // now as they are only valid to read when the push is received.\n if (this.#builderRoot) {\n this.#applyChangeToRoot(change, this.#builderRoot);\n } else {\n this.#pendingChanges.push(materializeRelationships(change));\n }\n }\n\n #applyChanges<T>(changes: Iterable<T>, mapper: (v: T) => ViewChange): void {\n this.#setState(\n produce((draftState: State) => {\n this.#applyChangesToRoot<T>(changes, mapper, draftState[0]);\n if (isEmptyRoot(draftState[0])) {\n this.#builderRoot = this.#createEmptyRoot();\n }\n }),\n );\n }\n\n #applyChangesToRoot<T>(\n changes: Iterable<T>,\n mapper: (v: T) => ViewChange,\n root: Entry,\n ) {\n for (const change of changes) {\n this.#applyChangeToRoot(mapper(change), root);\n }\n }\n\n #applyChangeToRoot(change: ViewChange, root: Entry) {\n applyChange(\n root,\n change,\n this.#input.getSchema(),\n '',\n this.#format,\n this.#refCountMap,\n );\n }\n\n #createEmptyRoot(): Entry {\n return {\n '': this.#format.singular ? undefined : [],\n };\n }\n}\n\nfunction materializeRelationships(change: Change): ViewChange {\n switch (change.type) {\n case 'add':\n return {type: 'add', node: materializeNodeRelationships(change.node)};\n case 'remove':\n return {type: 'remove', node: materializeNodeRelationships(change.node)};\n case 'child':\n return {\n type: 'child',\n node: {row: change.node.row},\n child: {\n relationshipName: change.child.relationshipName,\n change: materializeRelationships(change.child.change),\n },\n };\n case 'edit':\n return {\n type: 'edit',\n node: {row: change.node.row},\n oldNode: {row: change.oldNode.row},\n };\n }\n}\n\nfunction materializeNodeRelationships(node: Node): Node {\n const relationships: Record<string, () => Stream<Node>> = {};\n for (const relationship in node.relationships) {\n const materialized: Node[] = [];\n for (const n of node.relationships[relationship]()) {\n materialized.push(materializeNodeRelationships(n));\n }\n relationships[relationship] = () => materialized;\n }\n return {\n row: node.row,\n relationships,\n };\n}\n\nfunction isEmptyRoot(entry: Entry) {\n const data = entry[''];\n return data === undefined || (Array.isArray(data) && data.length === 0);\n}\n\nexport function solidViewFactory<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n>(\n _query: Query<TSchema, TTable, TReturn>,\n input: Input,\n format: Format,\n onDestroy: () => void,\n onTransactionCommit: (cb: () => void) => void,\n queryComplete: true | Promise<true>,\n) {\n return new SolidView<HumanReadable<TReturn>>(\n input,\n onTransactionCommit,\n format,\n onDestroy,\n queryComplete,\n );\n}\n\nsolidViewFactory satisfies ViewFactory<Schema, string, unknown, unknown>;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {batch} from 'solid-js';\nimport type {ZeroAdvancedOptions} from '../../zero/src/advanced.ts';\nimport {Zero, type Schema, type ZeroOptions} from '../../zero/src/zero.ts';\n\nexport function createZero<S extends Schema>(options: ZeroOptions<S>): Zero<S> {\n const opts: ZeroAdvancedOptions<S> = {\n ...options,\n batchViewUpdates: batch,\n };\n return new Zero(opts);\n}\n", "import {createMemo, onCleanup, type Accessor} from 'solid-js';\nimport type {\n AdvancedQuery,\n HumanReadable,\n Query,\n} from '../../zero/src/advanced.ts';\nimport {DEFAULT_TTL, type Schema, type TTL} from '../../zero/src/zero.ts';\nimport {\n solidViewFactory,\n type QueryResultDetails,\n type SolidView,\n} from './solid-view.ts';\n\nexport type QueryResult<TReturn> = readonly [\n Accessor<HumanReadable<TReturn>>,\n Accessor<QueryResultDetails>,\n];\n\nexport type UseQueryOptions = {\n ttl?: TTL | undefined;\n};\n\nexport function useQuery<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n>(\n querySignal: () => Query<TSchema, TTable, TReturn>,\n options?: UseQueryOptions | Accessor<UseQueryOptions>,\n): QueryResult<TReturn> {\n // Wrap in in createMemo to ensure a new view is created if the querySignal changes.\n const view = createMemo(() => {\n const query = querySignal() as AdvancedQuery<TSchema, TTable, TReturn>;\n const ttl = normalize(options)?.ttl ?? DEFAULT_TTL;\n const view = getView(query, ttl);\n\n onCleanup(() => {\n view.destroy();\n });\n return view;\n });\n\n return [() => view().data, () => view().resultDetails];\n}\n\nconst views = new WeakMap<object, SolidView<HumanReadable<unknown>>>();\n\nfunction getView<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n>(\n query: AdvancedQuery<TSchema, TTable, TReturn>,\n ttl: TTL,\n): SolidView<HumanReadable<TReturn>> {\n // TODO(arv): Use the hash of the query instead of the query object itself... but\n // we need the clientID to do that in a reasonable way.\n let view = views.get(query);\n if (!view) {\n view = query.materialize(solidViewFactory, ttl);\n views.set(query, view);\n } else {\n query.updateTTL(ttl);\n }\n return view as SolidView<HumanReadable<TReturn>>;\n}\n\nfunction normalize<T>(\n options?: T | Accessor<T | undefined> | undefined,\n): T | undefined {\n return typeof options === 'function' ? (options as Accessor<T>)() : options;\n}\n", "import {\n createStore,\n produce,\n type SetStoreFunction,\n type Store,\n} from 'solid-js/store';\nimport {\n applyChange,\n type Change,\n type Entry,\n type Format,\n type HumanReadable,\n type Input,\n type Node,\n type Output,\n type Query,\n type ResultType,\n type Stream,\n type ViewChange,\n type ViewFactory,\n} from '../../zero-advanced/src/mod.js';\nimport type {Schema} from '../../zero-schema/src/mod.js';\n\nexport type QueryResultDetails = {\n readonly type: ResultType;\n};\n\ntype State = [Entry, QueryResultDetails];\n\nconst complete = {type: 'complete'} as const;\nconst unknown = {type: 'unknown'} as const;\n\nexport class SolidView<V> implements Output {\n readonly #input: Input;\n readonly #format: Format;\n readonly #onDestroy: () => void;\n\n #state: Store<State>;\n #setState: SetStoreFunction<State>;\n\n // Optimization: if the store is currently empty we build up\n // the view on a plain old JS object stored at #builderRoot, and return\n // that for the new state on transaction commit. This avoids building up\n // large views from scratch via solid produce. The proxy object used by\n // solid produce is slow and in this case we don't care about solid tracking\n // the fine grained changes (everything has changed, it's all new). For a\n // test case with a view with 3000 rows, each row having 2 children, this\n // optimization reduced #applyChanges time from 743ms to 133ms.\n #builderRoot: Entry | undefined;\n #pendingChanges: ViewChange[] = [];\n\n constructor(\n input: Input,\n onTransactionCommit: (cb: () => void) => void,\n format: Format,\n onDestroy: () => void,\n queryComplete: true | Promise<true>,\n ) {\n this.#input = input;\n onTransactionCommit(this.#onTransactionCommit);\n this.#format = format;\n this.#onDestroy = onDestroy;\n input.setOutput(this);\n\n const initialRoot = this.#createEmptyRoot();\n this.#applyChangesToRoot(\n input.fetch({}),\n node => ({type: 'add', node}),\n initialRoot,\n );\n [this.#state, this.#setState] = createStore<State>([\n initialRoot,\n queryComplete === true ? complete : unknown,\n ]);\n if (isEmptyRoot(initialRoot)) {\n this.#builderRoot = this.#createEmptyRoot();\n }\n\n if (queryComplete !== true) {\n void queryComplete.then(() => {\n this.#setState(oldState => [oldState[0], complete]);\n });\n }\n }\n\n get data(): V {\n return this.#state[0][''] as V;\n }\n\n get resultDetails(): QueryResultDetails {\n return this.#state[1];\n }\n\n destroy(): void {\n this.#onDestroy();\n }\n\n #onTransactionCommit = () => {\n const builderRoot = this.#builderRoot;\n if (builderRoot) {\n if (!isEmptyRoot(builderRoot)) {\n this.#setState(oldState => [builderRoot, oldState[1]]);\n this.#builderRoot = undefined;\n }\n } else {\n try {\n this.#applyChanges(this.#pendingChanges, c => c);\n } finally {\n this.#pendingChanges = [];\n }\n }\n };\n\n push(change: Change): void {\n // Delay updating the solid store state until the transaction commit\n // (because each update of the solid store is quite expensive). If\n // this.#builderRoot is defined apply the changes to it (we are building\n // from an empty root), otherwise queue the changes to be applied\n // using produce at the end of the transaction but read the relationships\n // now as they are only valid to read when the push is received.\n if (this.#builderRoot) {\n this.#applyChangeToRoot(change, this.#builderRoot);\n } else {\n this.#pendingChanges.push(materializeRelationships(change));\n }\n }\n\n #applyChanges<T>(changes: Iterable<T>, mapper: (v: T) => ViewChange): void {\n this.#setState(\n produce((draftState: State) => {\n this.#applyChangesToRoot<T>(changes, mapper, draftState[0]);\n if (isEmptyRoot(draftState[0])) {\n this.#builderRoot = this.#createEmptyRoot();\n }\n }),\n );\n }\n\n #applyChangesToRoot<T>(\n changes: Iterable<T>,\n mapper: (v: T) => ViewChange,\n root: Entry,\n ) {\n for (const change of changes) {\n this.#applyChangeToRoot(mapper(change), root);\n }\n }\n\n #applyChangeToRoot(change: ViewChange, root: Entry) {\n applyChange(root, change, this.#input.getSchema(), '', this.#format);\n }\n\n #createEmptyRoot(): Entry {\n return {\n '': this.#format.singular ? undefined : [],\n };\n }\n}\n\nfunction materializeRelationships(change: Change): ViewChange {\n switch (change.type) {\n case 'add':\n return {type: 'add', node: materializeNodeRelationships(change.node)};\n case 'remove':\n return {type: 'remove', node: materializeNodeRelationships(change.node)};\n case 'child':\n return {\n type: 'child',\n node: {row: change.node.row},\n child: {\n relationshipName: change.child.relationshipName,\n change: materializeRelationships(change.child.change),\n },\n };\n case 'edit':\n return {\n type: 'edit',\n node: {row: change.node.row},\n oldNode: {row: change.oldNode.row},\n };\n }\n}\n\nfunction materializeNodeRelationships(node: Node): Node {\n const relationships: Record<string, () => Stream<Node>> = {};\n for (const relationship in node.relationships) {\n const materialized: Node[] = [];\n for (const n of node.relationships[relationship]()) {\n materialized.push(materializeNodeRelationships(n));\n }\n relationships[relationship] = () => materialized;\n }\n return {\n row: node.row,\n relationships,\n };\n}\n\nfunction isEmptyRoot(entry: Entry) {\n const data = entry[''];\n return data === undefined || (Array.isArray(data) && data.length === 0);\n}\n\nexport function solidViewFactory<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n>(\n _query: Query<TSchema, TTable, TReturn>,\n input: Input,\n format: Format,\n onDestroy: () => void,\n onTransactionCommit: (cb: () => void) => void,\n queryComplete: true | Promise<true>,\n) {\n return new SolidView<HumanReadable<TReturn>>(\n input,\n onTransactionCommit,\n format,\n onDestroy,\n queryComplete,\n );\n}\n\nsolidViewFactory satisfies ViewFactory<Schema, string, unknown, unknown>;\n"],
5
+ "mappings": "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",
6
6
  "names": ["view"]
7
7
  }
@@ -1,4 +1,8 @@
1
- import { type JWTClaimVerificationOptions, type JWTPayload } from 'jose';
1
+ import { type JWK, type JWTClaimVerificationOptions, type JWTPayload } from 'jose';
2
2
  import type { AuthConfig } from '../config/zero-config.ts';
3
+ export declare function createJwkPair(): Promise<{
4
+ privateJwk: JWK;
5
+ publicJwk: JWK;
6
+ }>;
3
7
  export declare function verifyToken(config: AuthConfig, token: string, verifyOptions: JWTClaimVerificationOptions): Promise<JWTPayload>;
4
8
  //# sourceMappingURL=jwt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/auth/jwt.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,2BAA2B,EAChC,KAAK,UAAU,EAEhB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAYzD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,2BAA2B,GACzC,OAAO,CAAC,UAAU,CAAC,CA0BrB"}
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/auth/jwt.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,GAAG,EACR,KAAK,2BAA2B,EAChC,KAAK,UAAU,EAEhB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAIzD,wBAAsB,aAAa;;;GAelC;AAWD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,2BAA2B,GACzC,OAAO,CAAC,UAAU,CAAC,CA0BrB"}
@@ -1,5 +1,18 @@
1
1
  import { createRemoteJWKSet, jwtVerify, } from 'jose';
2
2
  import { assert } from "../../../shared/src/asserts.js";
3
+ import { exportJWK, generateKeyPair } from 'jose';
4
+ export async function createJwkPair() {
5
+ const { publicKey, privateKey } = await generateKeyPair('PS256');
6
+ const privateJwk = await exportJWK(privateKey);
7
+ const publicJwk = await exportJWK(publicKey);
8
+ privateJwk.kid = 'key-2024-001';
9
+ privateJwk.use = 'sig';
10
+ privateJwk.alg = 'PS256';
11
+ publicJwk.kid = privateJwk.kid;
12
+ publicJwk.use = privateJwk.use;
13
+ publicJwk.alg = privateJwk.alg;
14
+ return { privateJwk, publicJwk };
15
+ }
3
16
  let remoteKeyset;
4
17
  function getRemoteKeyset(jwksUrl) {
5
18
  if (remoteKeyset === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../../../../zero-cache/src/auth/jwt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,SAAS,GAKV,MAAM,MAAM,CAAC;AAEd,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAEtD,IAAI,YAA+D,CAAC;AACpE,SAAS,eAAe,CAAC,OAAe;IACtC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,YAAY,GAAG,kBAAkB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAkB,EAClB,KAAa,EACb,aAA0C;IAE1C,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CACtE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvC,CAAC,CACF,CAAC;IACF,MAAM,CACJ,aAAa,KAAK,CAAC,EACnB,8EAA8E,CAC/E,CAAC;IAEF,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;IACvE,CAAC;IAED,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,SAAiB;IAChC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAQ,CAAC;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,KAAa,EACb,SAAqC,EACrC,aAA0C;IAE1C,MAAM,EAAC,OAAO,EAAC,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAEnE,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../../../../zero-cache/src/auth/jwt.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"initial-sync.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-source/pg/initial-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAC,QAAQ,EAAC,MAAM,iCAAiC,CAAC;AAgBzD,OAAO,KAAK,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAiBnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,OAAO,GAAG,MAAM,CAElE;AAED,wBAAsB,WAAW,CAC/B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,kBAAkB,iBAwHhC;AA+GD,eAAO,MAAM,iBAAiB,KAAK,CAAC"}
1
+ {"version":3,"file":"initial-sync.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-source/pg/initial-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAC,QAAQ,EAAC,MAAM,iCAAiC,CAAC;AAoBzD,OAAO,KAAK,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAiBnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,OAAO,GAAG,MAAM,CAElE;AAED,wBAAsB,WAAW,CAC/B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,kBAAkB,iBAwHhC;AA+GD,eAAO,MAAM,iBAAiB,KAAK,CAAC"}
@@ -7,7 +7,7 @@ import { createIndexStatement, createTableStatement, } from "../../../db/create.
7
7
  import * as Mode from "../../../db/mode-enum.js";
8
8
  import { mapPostgresToLite, mapPostgresToLiteIndex, } from "../../../db/pg-to-lite.js";
9
9
  import { importSnapshot, TransactionPool } from "../../../db/transaction-pool.js";
10
- import { liteValues } from "../../../types/lite.js";
10
+ import { JSON_STRINGIFIED, liteValues, } from "../../../types/lite.js";
11
11
  import { liteTableName } from "../../../types/names.js";
12
12
  import { pgClient } from "../../../types/pg.js";
13
13
  import { ALLOWED_APP_ID_CHARACTERS } from "../../../types/shards.js";
@@ -209,14 +209,14 @@ async function copy(lc, table, from, to, initialVersion, rowBatchSize) {
209
209
  for (; i + INSERT_BATCH_SIZE < rows.length; i += INSERT_BATCH_SIZE) {
210
210
  const values = [];
211
211
  for (let j = i; j < i + INSERT_BATCH_SIZE; j++) {
212
- values.push(...liteValues(rows[j], table, 'json-as-string'), initialVersion);
212
+ values.push(...liteValues(rows[j], table, JSON_STRINGIFIED), initialVersion);
213
213
  }
214
214
  insertBatchStmt.run(values);
215
215
  }
216
216
  // Remaining set of rows is < INSERT_BATCH_SIZE
217
217
  for (; i < rows.length; i++) {
218
218
  insertStmt.run([
219
- ...liteValues(rows[i], table, 'json-as-string'),
219
+ ...liteValues(rows[i], table, JSON_STRINGIFIED),
220
220
  initialVersion,
221
221
  ]);
222
222
  }
@@ -1 +1 @@
1
- {"version":3,"file":"initial-sync.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-source/pg/initial-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initial-sync.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-source/pg/initial-sync.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { type JSONObject } from '../../../../types/bigint-json.ts';
8
8
  import type { Satisfies } from '../../../../types/satisfies.ts';
9
9
  export declare const beginSchema: v.ObjectType<{
10
10
  tag: v.Type<"begin">;
11
+ json: v.Optional<"p" | "s">;
11
12
  }, undefined>;
12
13
  export declare const commitSchema: v.ObjectType<{
13
14
  tag: v.Type<"commit">;