@haverstack/core 0.32.0 → 0.34.0

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 (46) hide show
  1. package/dist/adapter-entry.d.ts +2 -2
  2. package/dist/adapter-entry.d.ts.map +1 -1
  3. package/dist/adapter-entry.js +1 -1
  4. package/dist/adapter-entry.js.map +1 -1
  5. package/dist/changes.d.ts +62 -14
  6. package/dist/changes.d.ts.map +1 -1
  7. package/dist/changes.js +94 -33
  8. package/dist/changes.js.map +1 -1
  9. package/dist/combine.d.ts.map +1 -1
  10. package/dist/combine.js +2 -1
  11. package/dist/combine.js.map +1 -1
  12. package/dist/index.d.ts +2 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/query-validation.d.ts +25 -1
  16. package/dist/query-validation.d.ts.map +1 -1
  17. package/dist/query-validation.js +48 -1
  18. package/dist/query-validation.js.map +1 -1
  19. package/dist/record-changes.d.ts +55 -1
  20. package/dist/record-changes.d.ts.map +1 -1
  21. package/dist/record-changes.js +82 -4
  22. package/dist/record-changes.js.map +1 -1
  23. package/dist/scoped-stack.d.ts +12 -5
  24. package/dist/scoped-stack.d.ts.map +1 -1
  25. package/dist/scoped-stack.js +17 -14
  26. package/dist/scoped-stack.js.map +1 -1
  27. package/dist/stack.d.ts +113 -27
  28. package/dist/stack.d.ts.map +1 -1
  29. package/dist/stack.js +202 -53
  30. package/dist/stack.js.map +1 -1
  31. package/dist/testing.d.ts +41 -16
  32. package/dist/testing.d.ts.map +1 -1
  33. package/dist/testing.js +144 -27
  34. package/dist/testing.js.map +1 -1
  35. package/dist/types.d.ts +172 -41
  36. package/dist/types.d.ts.map +1 -1
  37. package/dist/types.js.map +1 -1
  38. package/dist/wire-entry.d.ts +1 -1
  39. package/dist/wire-entry.d.ts.map +1 -1
  40. package/dist/wire-entry.js +4 -3
  41. package/dist/wire-entry.js.map +1 -1
  42. package/dist/wire-request.d.ts +11 -1
  43. package/dist/wire-request.d.ts.map +1 -1
  44. package/dist/wire-request.js +19 -0
  45. package/dist/wire-request.js.map +1 -1
  46. package/package.json +1 -1
package/dist/testing.js CHANGED
@@ -1,11 +1,13 @@
1
1
  import { SYSTEM_TYPES } from './types.js';
2
2
  import { applyMergePatch } from './merge.js';
3
3
  import { compareSortEntries, contentSortEntry } from './sort.js';
4
- import { StackVersionConflictError, StackConflictError, StackNotFoundError } from './errors.js';
4
+ import { StackVersionConflictError, StackConflictError, StackNotFoundError, StackQueryError, } from './errors.js';
5
5
  import { parseContentFilterKey } from './query-validation.js';
6
6
  import { targetEqual } from './record-changes.js';
7
7
  /** An array stands for its elements; anything else stands for itself. */
8
8
  const spreadValue = (value) => (Array.isArray(value) ? value : [value]);
9
+ /** A FileId is the SHA-256 hex digest of its bytes — see docs/spec/attachments.md. */
10
+ const SHA256_HEX_RE = /^[0-9a-f]{64}$/;
9
11
  /**
10
12
  * Every value reachable by walking `segments`, spreading arrays
11
13
  * element-wise at each step — the same walk sqlite-shared's
@@ -60,18 +62,20 @@ export class MemoryAdapter {
60
62
  records = new Map();
61
63
  order = [];
62
64
  versions = new Map();
65
+ journals = new Map();
63
66
  types = new Map();
64
67
  blobs = new Map();
65
68
  constructor({ ownerEntityId = '', timezone, } = {}) {
66
69
  this.ownerEntityId = ownerEntityId;
67
70
  this.timezone = timezone;
68
71
  }
69
- async createRecord(record) {
72
+ async createRecord(record, opts = {}) {
70
73
  if (this.records.has(record.id)) {
71
74
  throw new StackConflictError(`Record already exists: "${record.id}"`);
72
75
  }
73
76
  this.records.set(record.id, { ...record });
74
77
  this.order.push(record.id);
78
+ this.appendJournal(record.id, opts.journal, record);
75
79
  return record;
76
80
  }
77
81
  async getRecord(id) {
@@ -115,7 +119,7 @@ export class MemoryAdapter {
115
119
  async mutateRecord(id, changes, opts = {}) {
116
120
  const existing = this.records.get(id);
117
121
  if (!existing)
118
- throw new Error(`Not found: ${id}`);
122
+ throw new StackNotFoundError(`Record not found: "${id}"`);
119
123
  this.checkExpectedVersion(existing, opts.expectedVersion);
120
124
  if (opts.snapshot)
121
125
  this.snapshotBeforeMutation(id, opts.snapshot);
@@ -138,8 +142,12 @@ export class MemoryAdapter {
138
142
  const unlisted = changes.unlisted !== undefined ? changes.unlisted : Boolean(existing.unlistedAt);
139
143
  if (unlisted)
140
144
  next = { ...next, unlistedAt: existing.unlistedAt ?? new Date() };
141
- const updated = this.bump(next, opts);
145
+ // A change set touching only `associations` doesn't bump — see
146
+ // docs/spec/versioning.md § Version history. `next` already carries
147
+ // the prior version/updatedAt/updatedBy/updatedVia untouched.
148
+ const updated = opts.bumpsVersion === false ? next : this.bump(next, opts);
142
149
  this.records.set(id, updated);
150
+ this.appendJournal(id, opts.journal, updated);
143
151
  return updated;
144
152
  }
145
153
  async deleteRecord(id, opts = {}) {
@@ -157,24 +165,31 @@ export class MemoryAdapter {
157
165
  if (opts.hard) {
158
166
  this.records.delete(id);
159
167
  this.order.splice(this.order.indexOf(id), 1);
168
+ // A purge takes the version history and the journal with it: what a
169
+ // destroyed record once held is exactly the residue this verb exists
170
+ // to leave nothing of.
171
+ this.versions.delete(id);
172
+ this.journals.delete(id);
160
173
  return record;
161
174
  }
162
175
  if (opts.snapshot)
163
176
  this.snapshotBeforeMutation(id, opts.snapshot);
164
177
  const deleted = this.bump({ ...record, deletedAt: new Date() }, opts);
165
178
  this.records.set(id, deleted);
179
+ this.appendJournal(id, opts.journal, deleted);
166
180
  return deleted;
167
181
  }
168
182
  async undeleteRecord(id, opts = {}) {
169
183
  const record = this.records.get(id);
170
184
  if (!record)
171
- throw new Error(`Not found: ${id}`);
185
+ throw new StackNotFoundError(`Record not found: "${id}"`);
172
186
  this.checkExpectedVersion(record, opts.expectedVersion);
173
187
  if (opts.snapshot)
174
188
  this.snapshotBeforeMutation(id, opts.snapshot);
175
189
  const { deletedAt: _deletedAt, ...rest } = record;
176
190
  const updated = this.bump(rest, opts);
177
191
  this.records.set(id, updated);
192
+ this.appendJournal(id, opts.journal, updated);
178
193
  return updated;
179
194
  }
180
195
  /** Cursor is a stringified offset into insertion order. */
@@ -255,12 +270,70 @@ export class MemoryAdapter {
255
270
  results = results.filter((r) => paths.every((segments) => valuesAtContentPath(r.content, segments).some((v) => v !== null && v !== undefined)));
256
271
  }
257
272
  const limit = query.limit ?? 50;
258
- const start = query.cursor ? Number(query.cursor) : 0;
273
+ const start = query.cursor ? this.decodeCursor(query.cursor, query.sort) : 0;
259
274
  const page = results.slice(start, start + limit);
260
275
  const nextStart = start + limit;
261
- const cursor = nextStart < results.length ? String(nextStart) : null;
276
+ const cursor = nextStart < results.length ? this.encodeCursor(query.sort, nextStart) : null;
262
277
  return { records: page, cursor };
263
278
  }
279
+ /** The sort a cursor was minted under, as an opaque comparable descriptor. */
280
+ sortDescriptor(sort) {
281
+ return JSON.stringify([
282
+ sort?.contentField ?? null,
283
+ sort?.contentField === undefined ? (sort?.field ?? 'createdAt') : null,
284
+ sort?.direction ?? 'desc',
285
+ ]);
286
+ }
287
+ /**
288
+ * Stringified offset into insertion order, paired with the sort it was
289
+ * minted under — mirroring the real adapters' cursor stability guarantee
290
+ * (docs/spec/data-model.md § Sorting and pagination) rather than the
291
+ * bare, sort-blind offset this used to be.
292
+ */
293
+ encodeCursor(sort, offset) {
294
+ const json = JSON.stringify({ d: this.sortDescriptor(sort), o: offset });
295
+ // Explicit UTF-8 step before btoa, matching sqlite-shared's codec: the
296
+ // descriptor embeds `sort.contentField` verbatim, and a non-Latin-1
297
+ // field name would otherwise make btoa throw an InvalidCharacterError
298
+ // (a DOMException, not a StackError) out of an otherwise valid query.
299
+ const bytes = new TextEncoder().encode(json);
300
+ let binary = '';
301
+ for (const byte of bytes)
302
+ binary += String.fromCharCode(byte);
303
+ return btoa(binary);
304
+ }
305
+ /**
306
+ * Throws StackQueryError for a cursor that doesn't decode at all, or one
307
+ * minted under a different sort than `sort` names — the same refusal a
308
+ * cursor replayed under a changed sort gets from the real adapters,
309
+ * rather than silently paging through the wrong order.
310
+ */
311
+ decodeCursor(cursor, sort) {
312
+ let parsed;
313
+ try {
314
+ const binary = atob(cursor);
315
+ const bytes = new Uint8Array(binary.length);
316
+ for (let i = 0; i < binary.length; i++)
317
+ bytes[i] = binary.charCodeAt(i);
318
+ parsed = JSON.parse(new TextDecoder().decode(bytes));
319
+ }
320
+ catch {
321
+ throw new StackQueryError(`Malformed cursor: "${cursor}"`);
322
+ }
323
+ const { d, o } = (parsed ?? {});
324
+ // `o >= 0` is part of being well-formed, not a nicety: a crafted
325
+ // negative offset would reach `results.slice(-3, ...)` and hand back
326
+ // the tail of the result set as "the next page". Cursors arrive from
327
+ // the wire uninspected (wire-request copies `?cursor=` verbatim), so
328
+ // this is the only place the offset is checked at all.
329
+ if (typeof d !== 'string' || typeof o !== 'number' || !Number.isInteger(o) || o < 0) {
330
+ throw new StackQueryError(`Malformed cursor: "${cursor}"`);
331
+ }
332
+ if (d !== this.sortDescriptor(sort)) {
333
+ throw new StackQueryError(`Cursor was minted under a different sort than this query names.`);
334
+ }
335
+ return o;
336
+ }
264
337
  /**
265
338
  * Order a result set the way a materialized sort index does: absent
266
339
  * values last in both directions, numbers before text, and `id` as the
@@ -295,13 +368,15 @@ export class MemoryAdapter {
295
368
  return null;
296
369
  return contentSortEntry(def.kind, record.content[field]);
297
370
  }
371
+ /**
372
+ * Never bumps `version`/`updatedAt` — a set-add composes correctly
373
+ * regardless of write order, so it needs neither OCC nor a snapshot.
374
+ * See docs/spec/versioning.md § Version history.
375
+ */
298
376
  async associate(id, association, opts = {}) {
299
377
  const record = this.records.get(id);
300
378
  if (!record)
301
- throw new Error(`Not found: ${id}`);
302
- this.checkExpectedVersion(record, opts.expectedVersion);
303
- if (opts.snapshot)
304
- this.snapshotBeforeMutation(id, opts.snapshot);
379
+ throw new StackNotFoundError(`Record not found: "${id}"`);
305
380
  // Upsert on identity, mirroring the SQLite adapters' ON CONFLICT: a
306
381
  // re-pointed `attachmentRecordId` lands on the association already
307
382
  // there rather than adding a second reference to the same file.
@@ -309,20 +384,20 @@ export class MemoryAdapter {
309
384
  const next = assocs.some((a) => associationEqual(a, association))
310
385
  ? assocs.map((a) => (associationEqual(a, association) ? association : a))
311
386
  : [...assocs, association];
312
- const updated = this.bump(withAssociations(record, next), opts);
387
+ const updated = withAssociations(record, next);
313
388
  this.records.set(id, updated);
389
+ this.appendJournal(id, opts.journal, updated);
314
390
  return updated;
315
391
  }
392
+ /** Never bumps `version`/`updatedAt` — see associate(). */
316
393
  async dissociate(id, association, opts = {}) {
317
394
  const record = this.records.get(id);
318
395
  if (!record)
319
- throw new Error(`Not found: ${id}`);
320
- this.checkExpectedVersion(record, opts.expectedVersion);
321
- if (opts.snapshot)
322
- this.snapshotBeforeMutation(id, opts.snapshot);
396
+ throw new StackNotFoundError(`Record not found: "${id}"`);
323
397
  const assocs = (record.associations ?? []).filter((a) => !associationEqual(a, association));
324
- const updated = this.bump(withAssociations(record, assocs), opts);
398
+ const updated = withAssociations(record, assocs);
325
399
  this.records.set(id, updated);
400
+ this.appendJournal(id, opts.journal, updated);
326
401
  return updated;
327
402
  }
328
403
  async getVersions(id) {
@@ -376,37 +451,65 @@ export class MemoryAdapter {
376
451
  async restoreVersion(id, version, opts = {}) {
377
452
  const record = this.records.get(id);
378
453
  if (!record)
379
- throw new Error(`Not found: ${id}`);
454
+ throw new StackNotFoundError(`Record not found: "${id}"`);
380
455
  this.checkExpectedVersion(record, opts.expectedVersion);
381
456
  const target = (this.versions.get(id) ?? []).find((v) => v.version === version);
382
457
  if (!target)
383
- throw new Error(`Version not found: ${id}@${version}`);
458
+ throw new StackNotFoundError(`Version not found: "${id}"@${version}`);
384
459
  if (opts.snapshot)
385
460
  this.snapshotBeforeMutation(id, opts.snapshot);
386
461
  const merged = { ...record, typeId: target.typeId, content: target.content };
387
462
  // A snapshot always settles containment: absent is the root, so a
388
463
  // restore moves the record there rather than leaving it where it sits.
464
+ // Associations are never restored — a snapshot never carries them.
389
465
  const withParent = withParentId(merged, target.parentId ?? null);
390
- // Whether a restore rolls associations back at all is decided where the
391
- // record's meaning is known; the snapshot's list is the only one that
392
- // ever lands here. See StackRecordAdapter.restoreVersion().
393
- const applied = opts.restoreAssociations === false ? undefined : target.associations;
394
- const withAssoc = applied !== undefined ? withAssociations(withParent, applied) : withParent;
395
- const updated = this.bump(withAssoc, opts);
466
+ const updated = this.bump(withParent, opts);
396
467
  this.records.set(id, updated);
468
+ this.appendJournal(id, opts.journal, updated);
397
469
  return updated;
398
470
  }
399
471
  async commitMigration(id, toTypeId, content, opts = {}) {
400
472
  const record = this.records.get(id);
401
473
  if (!record)
402
- throw new Error(`Not found: ${id}`);
474
+ throw new StackNotFoundError(`Record not found: "${id}"`);
403
475
  this.checkExpectedVersion(record, opts.expectedVersion);
404
476
  if (opts.snapshot)
405
477
  this.snapshotBeforeMutation(id, opts.snapshot);
406
478
  const updated = this.bump({ ...record, typeId: toTypeId, content }, opts);
407
479
  this.records.set(id, updated);
480
+ this.appendJournal(id, opts.journal, updated);
408
481
  return updated;
409
482
  }
483
+ /**
484
+ * Append one entry, stamping the record-derived half from the row as it
485
+ * now stands. `seq` is allocated here rather than by the caller, which
486
+ * is what keeps the journal free of the collision healing a snapshot's
487
+ * caller-computed version number needs.
488
+ */
489
+ appendJournal(id, entry, record) {
490
+ if (!entry)
491
+ return;
492
+ const log = this.journals.get(id) ?? [];
493
+ log.push({
494
+ ...entry,
495
+ seq: log.length + 1,
496
+ at: new Date(),
497
+ version: record.version,
498
+ typeId: record.typeId,
499
+ ...(record.parentId !== undefined && { parentId: record.parentId }),
500
+ });
501
+ this.journals.set(id, log);
502
+ }
503
+ async getJournal(id, query = {}) {
504
+ // An empty log means "nothing changed" unconditionally, so a record
505
+ // that isn't there cannot be spelled that way.
506
+ // See docs/spec/journal.md § Reading it.
507
+ if (!this.records.has(id))
508
+ throw new StackNotFoundError(`Record not found: "${id}"`);
509
+ const log = this.journals.get(id) ?? [];
510
+ const after = query.sinceSeq === undefined ? log : log.filter((e) => e.seq > query.sinceSeq);
511
+ return query.limit === undefined ? after : after.slice(0, query.limit);
512
+ }
410
513
  async saveType(type) {
411
514
  this.types.set(type.id, type);
412
515
  }
@@ -428,6 +531,9 @@ export class MemoryAdapter {
428
531
  return fileId;
429
532
  }
430
533
  async getAttachment(fileId) {
534
+ if (!SHA256_HEX_RE.test(fileId)) {
535
+ throw new StackQueryError(`Invalid fileId: expected 64-character lowercase hex string`);
536
+ }
431
537
  const blob = this.blobs.get(fileId);
432
538
  if (!blob)
433
539
  throw new StackNotFoundError(`Attachment not found: "${fileId}"`);
@@ -478,9 +584,20 @@ export class IncapableMemoryAdapter extends MemoryAdapter {
478
584
  * mirroring the SQL adapters' rowToRecord, so the same mutation sequence
479
585
  * produces identically-shaped records on the test double and real storage.
480
586
  */
587
+ /**
588
+ * Sets a record's association set, keyed by identity as every adapter's
589
+ * association table is: a list naming one identity twice collapses to one
590
+ * entry, last wins. Core refuses such a list before an adapter sees it —
591
+ * this is what keeps a direct caller from reaching a state a SQL store
592
+ * cannot represent. See docs/spec/adapters.md § Associations are keyed by
593
+ * identity.
594
+ */
481
595
  function withAssociations(record, associations) {
482
596
  const { associations: _drop, ...rest } = record;
483
- return associations.length ? { ...rest, associations } : rest;
597
+ const keyed = associations.reduce((acc, a) => acc.some((b) => associationEqual(a, b))
598
+ ? acc.map((b) => (associationEqual(a, b) ? a : b))
599
+ : [...acc, a], []);
600
+ return keyed.length ? { ...rest, associations: keyed } : rest;
484
601
  }
485
602
  /**
486
603
  * Sets a record's container, omitting the key at the root — the same shape
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}