@substrat-run/contract-tests 0.143.0 → 0.145.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 (65) hide show
  1. package/dist/attachment-refusal-suite.d.ts +3 -0
  2. package/dist/attachment-refusal-suite.d.ts.map +1 -0
  3. package/dist/attachment-refusal-suite.js +128 -0
  4. package/dist/attachment-refusal-suite.js.map +1 -0
  5. package/dist/bind-module.d.ts +220 -0
  6. package/dist/bind-module.d.ts.map +1 -0
  7. package/dist/bind-module.js +135 -0
  8. package/dist/bind-module.js.map +1 -0
  9. package/dist/binding-invite-suite.d.ts +12 -0
  10. package/dist/binding-invite-suite.d.ts.map +1 -0
  11. package/dist/binding-invite-suite.js +560 -0
  12. package/dist/binding-invite-suite.js.map +1 -0
  13. package/dist/derived-module.d.ts +414 -3
  14. package/dist/derived-module.d.ts.map +1 -1
  15. package/dist/derived-module.js +201 -6
  16. package/dist/derived-module.js.map +1 -1
  17. package/dist/derived-suite.d.ts.map +1 -1
  18. package/dist/derived-suite.js +351 -4
  19. package/dist/derived-suite.js.map +1 -1
  20. package/dist/entity-state-module.d.ts +16 -0
  21. package/dist/entity-state-module.d.ts.map +1 -1
  22. package/dist/entity-trash-module.d.ts +80 -0
  23. package/dist/entity-trash-module.d.ts.map +1 -1
  24. package/dist/entity-trash-module.js +73 -0
  25. package/dist/entity-trash-module.js.map +1 -1
  26. package/dist/entity-trash-suite.d.ts.map +1 -1
  27. package/dist/entity-trash-suite.js +94 -2
  28. package/dist/entity-trash-suite.js.map +1 -1
  29. package/dist/erasure-module.d.ts +8 -0
  30. package/dist/erasure-module.d.ts.map +1 -1
  31. package/dist/findings-suite.d.ts.map +1 -1
  32. package/dist/findings-suite.js +55 -1
  33. package/dist/findings-suite.js.map +1 -1
  34. package/dist/index.d.ts +5 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +5 -0
  37. package/dist/index.js.map +1 -1
  38. package/dist/modules.d.ts +248 -0
  39. package/dist/modules.d.ts.map +1 -1
  40. package/dist/modules.js +11 -1
  41. package/dist/modules.js.map +1 -1
  42. package/dist/scope-host-suite.d.ts.map +1 -1
  43. package/dist/scope-host-suite.js +501 -0
  44. package/dist/scope-host-suite.js.map +1 -1
  45. package/dist/shape-backfill-ties.d.ts +29 -0
  46. package/dist/shape-backfill-ties.d.ts.map +1 -0
  47. package/dist/shape-backfill-ties.js +113 -0
  48. package/dist/shape-backfill-ties.js.map +1 -0
  49. package/dist/shape-reconcile-plan.d.ts +19 -5
  50. package/dist/shape-reconcile-plan.d.ts.map +1 -1
  51. package/dist/shape-reconcile-plan.js +76 -20
  52. package/dist/shape-reconcile-plan.js.map +1 -1
  53. package/dist/stamps-module.d.ts +462 -0
  54. package/dist/stamps-module.d.ts.map +1 -0
  55. package/dist/stamps-module.js +242 -0
  56. package/dist/stamps-module.js.map +1 -0
  57. package/dist/stamps-suite.d.ts +3 -0
  58. package/dist/stamps-suite.d.ts.map +1 -0
  59. package/dist/stamps-suite.js +170 -0
  60. package/dist/stamps-suite.js.map +1 -0
  61. package/dist/vertical-events-suite.d.ts +16 -0
  62. package/dist/vertical-events-suite.d.ts.map +1 -1
  63. package/dist/vertical-events-suite.js +30 -3
  64. package/dist/vertical-events-suite.js.map +1 -1
  65. package/package.json +3 -3
@@ -5,16 +5,24 @@
5
5
  * The declared check comes first, so a caller without the key learns `permission_denied` and nothing about
6
6
  * whether the row exists. A missing row is `not_found`. A PATCH writes only the fields sent, and
7
7
  * `null` clears. The host's 412 holds in front of it. Every write emits one event whose payload
8
- * is the declared fields of the row as written. A page is scoped to its parent and walks whole.
8
+ * is the declared fields of the row as written. A page is scoped to its parent and walks whole,
9
+ * and a parent that does not exist is `not_found` (#2157). A create mints the id, fills the parent
10
+ * link and links the row to it, stamps the time and the caller, and answers the row that already
11
+ * holds its natural key without writing (#2157).
9
12
  *
10
13
  * The DEFAULT tuple checker, so a denial is a real one: `dave` holds no key at all, and every
11
- * refusal has its positive twin from `alice`, who holds both.
14
+ * refusal has its positive twin from `alice`, who holds every key.
15
+ *
16
+ * The moves and the bin (#119) owe what todo's hand-written ones did: the entity's declared key,
17
+ * per move, checked on the row; `conflict` for a wrong move; the active view by default; the
18
+ * bin walked row by row under the trash key, so a key narrowed to one binned row shows that row.
12
19
  */
13
20
  import { describe, it, expect, beforeAll, afterAll } from 'vitest';
14
- import { errorCodeOf, etagOf, permissionKey, platformActorId, principalId, scopeId, tenantId, } from '@substrat-run/contracts';
21
+ import { defineEntities, defineOperations, entityStateOutput, errorCodeOf, etagOf, permissionKey, platformActorId, principalId, scopeId, tenantId, } from '@substrat-run/contracts';
15
22
  import { ulid } from '@substrat-run/kernel';
23
+ import { z } from 'zod';
16
24
  import { derivedMod } from './derived-module.js';
17
- const KEYS = ['dnote:read', 'dnote:write'].map((k) => permissionKey.parse(k));
25
+ const KEYS = ['dnote:read', 'dnote:write', 'dshelf:archive', 'dshelf:trash'].map((k) => permissionKey.parse(k));
18
26
  export function derivedHandlersContractSuite(adapterName, makeFixture) {
19
27
  describe(`derived handlers (#1773): ${adapterName}`, () => {
20
28
  let fixture;
@@ -24,8 +32,10 @@ export function derivedHandlersContractSuite(adapterName, makeFixture) {
24
32
  const staff = platformActorId.parse(ulid());
25
33
  const alice = principalId.parse(ulid());
26
34
  const dave = principalId.parse(ulid());
35
+ const carl = principalId.parse(ulid());
27
36
  let as;
28
37
  let asDave;
38
+ let asCarl;
29
39
  /** Every version the host reported, newest last — what an HTTP mount would set as `ETag`. */
30
40
  let tags = [];
31
41
  const sink = { onEntityVersion: (version) => tags.push(version) };
@@ -46,12 +56,15 @@ export function derivedHandlersContractSuite(adapterName, makeFixture) {
46
56
  await host.admin.grantEntitlement(staff, t, 'derived');
47
57
  await host.admin.defineRole(staff, t, { key: 'derived-admin', permissions: KEYS, source: 'vertical' });
48
58
  await host.admin.assignRole(staff, { principalId: alice, roleKey: 'derived-admin', node: { tenantId: t, scopeId: null } });
59
+ await host.admin.assignRole(staff, { principalId: carl, roleKey: 'derived-admin', node: { tenantId: t, scopeId: null } });
49
60
  await host.provisionScope(staff, { tenantId: t, scopeId: s, vertical: 'derived-vertical' });
50
61
  await host.admin.activateScope(staff, t, s);
51
62
  as = await host.getScope(alice, t, s);
52
63
  asDave = await host.getScope(dave, t, s);
64
+ asCarl = await host.getScope(carl, t, s);
53
65
  await as.invoke('derived/add-folder', { id: 'fa', name: 'A' });
54
66
  await as.invoke('derived/add-folder', { id: 'fb', name: 'B' });
67
+ await as.invoke('derived/add-folder', { id: 'fc', name: 'C, empty' });
55
68
  });
56
69
  afterAll(async () => {
57
70
  await fixture.cleanup();
@@ -169,6 +182,340 @@ export function derivedHandlersContractSuite(adapterName, makeFixture) {
169
182
  it('is permission_denied to a caller without the key', async () => {
170
183
  expect(await codeOf(asDave.invoke('derived/list-notes', { dfolderId: 'fb' }))).toBe('permission_denied');
171
184
  });
185
+ it('answers not_found for a parent that does not exist, and an empty page for one with no rows (#2157)', async () => {
186
+ const list = (who, dfolderId) => who.invoke('derived/list-notes', { dfolderId });
187
+ expect(await codeOf(list(as, 'nope'))).toBe('not_found');
188
+ expect(await messageOf(list(as, 'nope'))).toContain('dfolder not found: nope');
189
+ expect(await list(as, 'fc')).toMatchObject({ entries: [], nextCursor: null, total: 0 });
190
+ // Checked first: a caller without the key learns nothing about whether the parent exists.
191
+ expect(await codeOf(list(asDave, 'nope'))).toBe('permission_denied');
192
+ });
193
+ });
194
+ describe('create (#2157)', () => {
195
+ const create = (who, input) => who.invoke('derived/create-tag', input);
196
+ const getTag = (who, tagId) => who.invoke('derived/get-tag', { tagId });
197
+ const isoNow = (value) => !Number.isNaN(Date.parse(value)) && new Date(value).toISOString() === value;
198
+ /** Neither adapter's fixture moves its clock, so `ctx.now()` is the wall clock around the call. */
199
+ const during = async (call) => {
200
+ const from = new Date().toISOString();
201
+ const result = await call();
202
+ return { result, from, to: new Date().toISOString() };
203
+ };
204
+ it('inserts the row: a minted id, the parent link, the input, NULL for what was left out, the stamps', async () => {
205
+ const { result: tag, from, to } = await during(() => create(as, { dfolderId: 'fa', label: 'red' }));
206
+ expect(tag.created_at >= from && tag.created_at <= to).toBe(true);
207
+ expect(tag).toEqual({
208
+ id: expect.any(String),
209
+ dfolder_id: 'fa',
210
+ label: 'red',
211
+ note: null,
212
+ created_at: expect.any(String),
213
+ created_by: alice,
214
+ });
215
+ expect(isoNow(tag.created_at)).toBe(true);
216
+ expect(tag.id).toMatch(/^[0-9A-HJKMNP-TV-Z]{26}$/);
217
+ expect(await getTag(as, tag.id)).toEqual(tag);
218
+ });
219
+ it('emits one event about the new row, its payload the declared fields as written', async () => {
220
+ const tag = await create(as, { dfolderId: 'fa', label: 'green', note: 'n' });
221
+ const events = (await history(tag.id)).filter((e) => e.type === 'dtag.created');
222
+ expect(events).toHaveLength(1);
223
+ expect(events[0]?.payload).toEqual({
224
+ id: tag.id,
225
+ dfolder_id: 'fa',
226
+ label: 'green',
227
+ created_at: tag.created_at,
228
+ created_by: alice,
229
+ });
230
+ });
231
+ it('answers the row already holding the natural key, unchanged, with no write and no event', async () => {
232
+ const first = await create(as, { dfolderId: 'fa', label: 'blue', note: 'first' });
233
+ const again = await create(asCarl, { dfolderId: 'fa', label: 'blue', note: 'second' });
234
+ expect(again).toEqual(first);
235
+ expect((await history(first.id)).filter((e) => e.type === 'dtag.created')).toHaveLength(1);
236
+ // The key is the pair: the same label under another folder is another row.
237
+ const elsewhere = await create(as, { dfolderId: 'fb', label: 'blue' });
238
+ expect(elsewhere.id).not.toBe(first.id);
239
+ });
240
+ it('answers not_found for a parent that does not exist, and denied first to a caller without the key', async () => {
241
+ expect(await codeOf(create(as, { dfolderId: 'nope', label: 'x' }))).toBe('not_found');
242
+ expect(await messageOf(create(as, { dfolderId: 'nope', label: 'x' }))).toContain('dfolder not found: nope');
243
+ expect(await codeOf(create(asDave, { dfolderId: 'nope', label: 'x' }))).toBe('permission_denied');
244
+ expect(await codeOf(create(asDave, { dfolderId: 'fa', label: 'daves' }))).toBe('permission_denied');
245
+ // Nothing was written by the refusals: the label is still free in that folder.
246
+ expect((await create(as, { dfolderId: 'fa', label: 'daves' })).created_by).toBe(alice);
247
+ });
248
+ it('links the new row to its parent, so a grant on the folder reaches the tag', async () => {
249
+ const reader = principalId.parse(ulid());
250
+ await host.admin.grant(staff, {
251
+ principalId: reader,
252
+ permission: permissionKey.parse('dnote:read'),
253
+ node: { tenantId: t, scopeId: s },
254
+ entity: { entityType: 'dfolder', entityId: 'fa' },
255
+ grantedBy: alice,
256
+ });
257
+ const asReader = await host.getScope(reader, t, s);
258
+ const inA = await create(as, { dfolderId: 'fa', label: 'linked' });
259
+ const inB = await create(as, { dfolderId: 'fb', label: 'linked' });
260
+ expect(await getTag(asReader, inA.id)).toEqual(inA);
261
+ expect(await codeOf(getTag(asReader, inB.id))).toBe('permission_denied');
262
+ });
263
+ // The round-1 review's reproduction (#2162): a key without the folder let a caller holding
264
+ // write on folder A replay folder B's row by guessing its label, and read it in full. Such a
265
+ // declaration no longer loads; the fixture's key includes the link, and stays in its folder.
266
+ it('a natural key without the parent link is refused at load, so a replay cannot cross parents', async () => {
267
+ const crossing = defineEntities({
268
+ folder: { table: 'x_folders', fields: z.object({ id: z.string() }) },
269
+ item: {
270
+ table: 'x_items',
271
+ fields: z.object({ id: z.string(), folder_id: z.string(), label: z.string(), secret: z.string() }),
272
+ parents: ['folder'],
273
+ key: ['label'],
274
+ },
275
+ });
276
+ const declare = () => defineOperations(crossing, ['item:write'])({
277
+ 'x/create-item': {
278
+ summary: 'Add an item',
279
+ derive: 'create',
280
+ permission: { key: 'item:write', entity: 'folder', idFrom: 'folderId' },
281
+ input: z.object({ folderId: z.string(), label: z.string(), secret: z.string() }),
282
+ output: crossing.item.fields,
283
+ http: { method: 'POST', path: '/folders/{folderId}/items' },
284
+ emits: { entity: 'item', entityIdFrom: 'id', type: 'x.item-created', schemaVersion: 1, piiClass: 'none', payload: ['id'] },
285
+ },
286
+ });
287
+ expect(declare).toThrow("its natural key does not include the link to 'folder' ('folder_id')");
288
+ // The twin, on this adapter: the same label in another folder is that folder's own row.
289
+ const inA = await create(as, { dfolderId: 'fa', label: 'payroll', note: 'salaries.xlsx' });
290
+ const inB = await create(asCarl, { dfolderId: 'fb', label: 'payroll', note: 'guess' });
291
+ expect(inB.id).not.toBe(inA.id);
292
+ expect(inB).toMatchObject({ dfolder_id: 'fb', note: 'guess' });
293
+ });
294
+ it('creates scope-wide with no parent, and without a natural key every call is a new row', async () => {
295
+ const one = await as.invoke('derived/create-label', { name: 'same' });
296
+ const two = await as.invoke('derived/create-label', { name: 'same' });
297
+ expect(one).toEqual({ id: expect.any(String), name: 'same' });
298
+ expect(two.id).not.toBe(one.id);
299
+ expect(await codeOf(asDave.invoke('derived/create-label', { name: 'x' }))).toBe('permission_denied');
300
+ });
301
+ it('a derived update by someone else leaves the create stamps as they were', async () => {
302
+ const tag = await create(as, { dfolderId: 'fa', label: 'restamped' });
303
+ const changed = await asCarl.invoke('derived/update-tag', { tagId: tag.id, note: 'by carl' });
304
+ expect(changed).toEqual({ ...tag, note: 'by carl' });
305
+ const events = (await history(tag.id)).filter((e) => e.type === 'dtag.updated');
306
+ expect(events[0]?.payload).toEqual({ id: tag.id, note: 'by carl', created_by: alice });
307
+ });
308
+ });
309
+ describe('archive and trash (#119)', () => {
310
+ const addShelf = async (label) => {
311
+ const id = ulid();
312
+ await as.invoke('derived/add-shelf', { id, label });
313
+ return { id, label };
314
+ };
315
+ const move = (who, verb, shelfId) => who.invoke(`derived/${verb}-shelf`, { shelfId });
316
+ const ids = async (who, op, input = {}) => (await who.invoke(op, { ...input, limit: 100 })).entries.map((r) => r.id);
317
+ const grantOn = (principal, key, shelfId) => host.admin.grant(staff, {
318
+ principalId: principal,
319
+ permission: permissionKey.parse(key),
320
+ node: { tenantId: t, scopeId: s },
321
+ entity: { entityType: 'dshelf', entityId: shelfId },
322
+ grantedBy: alice,
323
+ });
324
+ // The round-3 review's reproduction (#2162): with a natural key, a derived create on a
325
+ // trashable entity replayed a BINNED row — its contents included — to a caller who got
326
+ // `not_found` reading it, and "succeeded" with nothing to show. Such a declaration no
327
+ // longer loads, for `archive` too; without a key the create derives, and is seen.
328
+ it('a keyed derived create over an entity that hides rows is refused at load; without the key it derives', async () => {
329
+ for (const hides of [{ trash: { permission: 'dshelf:trash' } }, { archive: { permission: 'dshelf:archive' } }]) {
330
+ const keyed = defineEntities({
331
+ xshelf: { table: 'x_shelves', fields: z.object({ id: z.string(), label: z.string() }), key: ['label'], ...hides },
332
+ });
333
+ const declare = () => defineOperations(keyed, ['dshelf:write', 'dshelf:trash', 'dshelf:archive'])({
334
+ 'x/create-shelf': {
335
+ summary: 'Add a shelf',
336
+ derive: 'create',
337
+ permission: 'dshelf:write',
338
+ input: z.object({ label: z.string() }),
339
+ output: keyed.xshelf.fields,
340
+ http: { method: 'POST', path: '/shelves' },
341
+ emits: { entity: 'xshelf', entityIdFrom: 'id', type: 'x.shelf-created', schemaVersion: 1, piiClass: 'none', payload: ['id'] },
342
+ },
343
+ });
344
+ expect(declare).toThrow('and a natural key, so a replay could answer a row the kernel hides');
345
+ }
346
+ const made = await as.invoke('derived/create-shelf', { label: 'minted' });
347
+ expect(made).toEqual({ id: expect.any(String), label: 'minted' });
348
+ expect(await ids(as, 'derived/list-shelves')).toContain(made.id);
349
+ await move(as, 'trash', made.id);
350
+ // No key, no replay: the same label again is a new, visible shelf, never the binned one.
351
+ const again = await as.invoke('derived/create-shelf', { label: 'minted' });
352
+ expect(again.id).not.toBe(made.id);
353
+ expect(await ids(as, 'derived/list-shelves')).toEqual(expect.arrayContaining([again.id]));
354
+ expect(await ids(as, 'derived/list-shelves')).not.toContain(made.id);
355
+ });
356
+ it('archives out of the active view and into the archived one, and back', async () => {
357
+ const sh = await addShelf('filed');
358
+ expect(await move(as, 'archive', sh.id)).toEqual({ id: sh.id, state: 'archived' });
359
+ expect(await ids(as, 'derived/list-shelves')).not.toContain(sh.id);
360
+ expect(await ids(as, 'derived/list-shelves', { view: 'archived' })).toContain(sh.id);
361
+ expect(await move(as, 'unarchive', sh.id)).toEqual({ id: sh.id, state: 'active' });
362
+ expect(await ids(as, 'derived/list-shelves')).toContain(sh.id);
363
+ expect(await ids(as, 'derived/list-shelves', { view: 'archived' })).not.toContain(sh.id);
364
+ });
365
+ it('bins out of every view and into the bin, and a restore puts back the archive it came from', async () => {
366
+ const sh = await addShelf('binned');
367
+ await move(as, 'archive', sh.id);
368
+ expect(await move(as, 'trash', sh.id)).toEqual({ id: sh.id, state: 'trashed' });
369
+ expect(await ids(as, 'derived/list-shelves')).not.toContain(sh.id);
370
+ expect(await ids(as, 'derived/list-shelves', { view: 'archived' })).not.toContain(sh.id);
371
+ expect(await ids(as, 'derived/trashed-shelves')).toContain(sh.id);
372
+ expect(await move(as, 'restore', sh.id)).toEqual({ id: sh.id, state: 'archived' });
373
+ expect(await ids(as, 'derived/trashed-shelves')).not.toContain(sh.id);
374
+ });
375
+ it('refuses a move out of the wrong state as conflict, and a missing row as not_found', async () => {
376
+ const sh = await addShelf('twice');
377
+ expect(await codeOf(move(as, 'unarchive', sh.id))).toBe('conflict');
378
+ expect(await codeOf(move(as, 'restore', sh.id))).toBe('conflict');
379
+ await move(as, 'archive', sh.id);
380
+ expect(await codeOf(move(as, 'archive', sh.id))).toBe('conflict');
381
+ expect(await codeOf(move(as, 'archive', 'missing'))).toBe('not_found');
382
+ expect(await codeOf(move(as, 'trash', 'missing'))).toBe('not_found');
383
+ });
384
+ it('lets only restore reach a binned row: the host refuses the other moves as not_found', async () => {
385
+ const sh = await addShelf('gone');
386
+ await move(as, 'trash', sh.id);
387
+ expect(await codeOf(move(as, 'archive', sh.id))).toBe('not_found');
388
+ expect(await codeOf(move(as, 'trash', sh.id))).toBe('not_found');
389
+ expect(await move(as, 'restore', sh.id)).toEqual({ id: sh.id, state: 'active' });
390
+ });
391
+ it('checks each move under its own key: archive authority is not trash authority', async () => {
392
+ const archivist = principalId.parse(ulid());
393
+ const binner = principalId.parse(ulid());
394
+ const a = await addShelf('a');
395
+ await grantOn(archivist, 'dshelf:archive', a.id);
396
+ await grantOn(binner, 'dshelf:trash', a.id);
397
+ const asArchivist = await host.getScope(archivist, t, s);
398
+ const asBinner = await host.getScope(binner, t, s);
399
+ expect(await codeOf(move(asBinner, 'archive', a.id))).toBe('permission_denied');
400
+ expect(await codeOf(move(asArchivist, 'trash', a.id))).toBe('permission_denied');
401
+ expect(await move(asArchivist, 'archive', a.id)).toEqual({ id: a.id, state: 'archived' });
402
+ expect(await move(asBinner, 'trash', a.id)).toEqual({ id: a.id, state: 'trashed' });
403
+ expect(await codeOf(move(asArchivist, 'restore', a.id))).toBe('permission_denied');
404
+ expect(await move(asBinner, 'restore', a.id)).toEqual({ id: a.id, state: 'archived' });
405
+ });
406
+ it('denies a caller without the key first, whether or not the row exists', async () => {
407
+ const sh = await addShelf('guarded');
408
+ for (const verb of ['archive', 'unarchive', 'trash', 'restore']) {
409
+ expect(await codeOf(move(asDave, verb, sh.id))).toBe('permission_denied');
410
+ expect(await codeOf(move(asDave, verb, 'missing'))).toBe('permission_denied');
411
+ }
412
+ });
413
+ // #2191: a state move changes no content, so it leaves the version where it was. A tag the
414
+ // client read before a move still admits its next guarded write — and a real edit in between
415
+ // still refuses it, so the guard is narrower by exactly the moves and no more.
416
+ describe('a state move keeps the version (#2191)', () => {
417
+ const createShelf = (label) => as.invoke('derived/create-shelf', { label });
418
+ const rename = (who, shelfId, label, opts = {}) => who.invoke('derived/rename-shelf', { shelfId, label }, { ...sink, ...opts });
419
+ /** Rename once with no precondition, and return the tag it handed back. */
420
+ const held = async (shelfId, label) => {
421
+ tags = [];
422
+ await rename(as, shelfId, label);
423
+ const tag = tags.at(-1);
424
+ expect(typeof tag).toBe('string');
425
+ return etagOf(tag);
426
+ };
427
+ it('admits a write with a tag read before a trash and a restore', async () => {
428
+ const sh = await createShelf('binned and back');
429
+ const tag = await held(sh.id, 'read');
430
+ await move(as, 'trash', sh.id);
431
+ await move(as, 'restore', sh.id);
432
+ tags = [];
433
+ expect(await rename(as, sh.id, 'written', { ifMatch: tag })).toEqual({ id: sh.id, label: 'written' });
434
+ // The write moved the version: the tag it hands back is a new one.
435
+ expect(etagOf(tags.at(-1))).not.toBe(tag);
436
+ });
437
+ it('admits a write with a tag read before an archive, onto the archived row, which stays archived', async () => {
438
+ const sh = await createShelf('filed away');
439
+ const tag = await held(sh.id, 'read');
440
+ await move(as, 'archive', sh.id);
441
+ expect(await rename(as, sh.id, 'edited while archived', { ifMatch: tag })).toEqual({
442
+ id: sh.id,
443
+ label: 'edited while archived',
444
+ });
445
+ expect(await ids(as, 'derived/list-shelves', { view: 'archived' })).toContain(sh.id);
446
+ // And across the unarchive too.
447
+ const again = await held(sh.id, 'read again');
448
+ await move(as, 'unarchive', sh.id);
449
+ await expect(rename(as, sh.id, 'back', { ifMatch: again })).resolves.toEqual({ id: sh.id, label: 'back' });
450
+ });
451
+ it('still refuses the tag when someone edited between the moves', async () => {
452
+ const sh = await createShelf('edited between');
453
+ const asCarlNow = await host.getScope(carl, t, s);
454
+ const tag = await held(sh.id, 'mine');
455
+ await move(as, 'trash', sh.id);
456
+ await move(as, 'restore', sh.id);
457
+ await rename(asCarlNow, sh.id, 'carl’s');
458
+ await move(as, 'trash', sh.id);
459
+ await move(as, 'restore', sh.id);
460
+ expect(await codeOf(rename(as, sh.id, 'over carl', { ifMatch: tag }))).toBe('precondition_failed');
461
+ const { entries } = await as.invoke('derived/list-shelves', { limit: 100 });
462
+ expect(entries.find((r) => r.id === sh.id)?.label).toBe('carl’s');
463
+ });
464
+ it('replays a recorded write with a tag the moves since have not made stale', async () => {
465
+ const sh = await createShelf('replayed');
466
+ const key = `k-${ulid()}`;
467
+ tags = [];
468
+ await rename(as, sh.id, 'once', { idempotencyKey: key });
469
+ const recorded = tags.at(-1);
470
+ await move(as, 'trash', sh.id);
471
+ await move(as, 'restore', sh.id);
472
+ tags = [];
473
+ expect(await rename(as, sh.id, 'once', { idempotencyKey: key })).toEqual({ id: sh.id, label: 'once' });
474
+ expect(tags.at(-1)).toBe(recorded);
475
+ await expect(rename(as, sh.id, 'next', { ifMatch: etagOf(recorded) })).resolves.toEqual({
476
+ id: sh.id,
477
+ label: 'next',
478
+ });
479
+ });
480
+ it('hands back the content write’s version from a call that edits and moves at once', async () => {
481
+ const sh = await createShelf('both');
482
+ tags = [];
483
+ await as.invoke('derived/relabel-and-archive', { shelfId: sh.id, label: 'relabelled' }, sink);
484
+ const tag = etagOf(tags.at(-1));
485
+ expect(await ids(as, 'derived/list-shelves', { view: 'archived' })).toContain(sh.id);
486
+ // The tag is the content event's id, not the archive's that followed it in the same call.
487
+ const [updated, archived] = (await history(sh.id)).slice(-2);
488
+ expect([updated?.type, archived?.type]).toEqual(['dshelf.updated', 'entity.archived']);
489
+ expect(tag).toBe(etagOf(updated?.id));
490
+ // And the archive did not move it past the tag it handed back.
491
+ await expect(rename(as, sh.id, 'after', { ifMatch: tag })).resolves.toEqual({ id: sh.id, label: 'after' });
492
+ });
493
+ it('gives a row whose only events are moves no version', async () => {
494
+ // `add-shelf` emits nothing, so the row has no history; the moves do not give it one.
495
+ const sh = await addShelf('silent');
496
+ await move(as, 'archive', sh.id);
497
+ await move(as, 'unarchive', sh.id);
498
+ tags = [];
499
+ expect(await codeOf(rename(as, sh.id, 'any', { ifMatch: '*' }))).toBe('precondition_failed');
500
+ await rename(as, sh.id, 'first event');
501
+ expect(typeof tags.at(-1)).toBe('string');
502
+ });
503
+ });
504
+ it('walks the bin row by row: a trash key narrowed to one row shows that row and no other', async () => {
505
+ const nell = principalId.parse(ulid());
506
+ const mine = await addShelf('mine');
507
+ const theirs = await addShelf('theirs');
508
+ await move(as, 'trash', mine.id);
509
+ await move(as, 'trash', theirs.id);
510
+ await grantOn(nell, 'dshelf:trash', mine.id);
511
+ const asNell = await host.getScope(nell, t, s);
512
+ // A scope-wide check in front of the walk would deny nell outright.
513
+ const seen = await ids(asNell, 'derived/trashed-shelves');
514
+ expect(seen).toContain(mine.id);
515
+ expect(seen).not.toContain(theirs.id);
516
+ expect(await ids(as, 'derived/trashed-shelves')).toEqual(expect.arrayContaining([mine.id, theirs.id]));
517
+ expect(await ids(asDave, 'derived/trashed-shelves')).toEqual([]);
518
+ });
172
519
  });
173
520
  // The check is on the entity the declaration names, not the scope: a principal holding the
174
521
  // key on ONE row (or one parent) reaches that row and no other. A check that dropped the
@@ -1 +1 @@
1
- {"version":3,"file":"derived-suite.js","sourceRoot":"","sources":["../src/derived-suite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"derived-suite.js","sourceRoot":"","sources":["../src/derived-suite.ts"],"names":[],"mappings":"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"}
@@ -102,6 +102,7 @@ export declare const stateModManifest: {
102
102
  archivePermission?: (string & import("zod").$brand<"PermissionKey">) | undefined;
103
103
  trashPermission?: (string & import("zod").$brand<"PermissionKey">) | undefined;
104
104
  purgeAfterDays?: number | undefined;
105
+ purgeEarly?: boolean | undefined;
105
106
  table?: string | undefined;
106
107
  idColumn?: string | undefined;
107
108
  entityType: string;
@@ -119,6 +120,13 @@ export declare const stateModManifest: {
119
120
  }[];
120
121
  }[];
121
122
  } | undefined;
123
+ updatedStamps?: {
124
+ table: string;
125
+ idColumn: string;
126
+ at?: string | undefined;
127
+ by?: string | undefined;
128
+ entityType: string;
129
+ }[] | undefined;
122
130
  ui?: {
123
131
  routes?: {
124
132
  path: string;
@@ -268,6 +276,7 @@ export declare const rebuildModManifest: {
268
276
  archivePermission?: (string & import("zod").$brand<"PermissionKey">) | undefined;
269
277
  trashPermission?: (string & import("zod").$brand<"PermissionKey">) | undefined;
270
278
  purgeAfterDays?: number | undefined;
279
+ purgeEarly?: boolean | undefined;
271
280
  table?: string | undefined;
272
281
  idColumn?: string | undefined;
273
282
  entityType: string;
@@ -285,6 +294,13 @@ export declare const rebuildModManifest: {
285
294
  }[];
286
295
  }[];
287
296
  } | undefined;
297
+ updatedStamps?: {
298
+ table: string;
299
+ idColumn: string;
300
+ at?: string | undefined;
301
+ by?: string | undefined;
302
+ entityType: string;
303
+ }[] | undefined;
288
304
  ui?: {
289
305
  routes?: {
290
306
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"entity-state-module.d.ts","sourceRoot":"","sources":["../src/entity-state-module.ts"],"names":[],"mappings":"AAaA,OAAO,EAML,KAAK,kBAAkB,EAExB,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3B,CAAC;AAcH,eAAO,MAAM,QAAQ,EAAE,kBA2FtB,CAAC;AAWF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyB7B,CAAC;AAQH,eAAO,MAAM,UAAU,EAAE,kBAgFxB,CAAC"}
1
+ {"version":3,"file":"entity-state-module.d.ts","sourceRoot":"","sources":["../src/entity-state-module.ts"],"names":[],"mappings":"AAaA,OAAO,EAML,KAAK,kBAAkB,EAExB,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3B,CAAC;AAcH,eAAO,MAAM,QAAQ,EAAE,kBA2FtB,CAAC;AAWF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyB7B,CAAC;AAQH,eAAO,MAAM,UAAU,EAAE,kBAgFxB,CAAC"}