@substrat-run/contract-tests 0.142.0 → 0.144.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 (73) 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 +199 -0
  6. package/dist/bind-module.d.ts.map +1 -0
  7. package/dist/bind-module.js +104 -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 +507 -0
  12. package/dist/binding-invite-suite.js.map +1 -0
  13. package/dist/caused-by-module.d.ts.map +1 -1
  14. package/dist/caused-by-module.js +3 -2
  15. package/dist/caused-by-module.js.map +1 -1
  16. package/dist/derived-module.d.ts +690 -0
  17. package/dist/derived-module.d.ts.map +1 -0
  18. package/dist/derived-module.js +320 -0
  19. package/dist/derived-module.js.map +1 -0
  20. package/dist/derived-suite.d.ts +3 -0
  21. package/dist/derived-suite.d.ts.map +1 -0
  22. package/dist/derived-suite.js +481 -0
  23. package/dist/derived-suite.js.map +1 -0
  24. package/dist/entity-state-module.d.ts.map +1 -1
  25. package/dist/entity-state-module.js +12 -6
  26. package/dist/entity-state-module.js.map +1 -1
  27. package/dist/entity-trash-module.d.ts.map +1 -1
  28. package/dist/entity-trash-module.js +4 -4
  29. package/dist/entity-trash-module.js.map +1 -1
  30. package/dist/entity-trash-suite.d.ts.map +1 -1
  31. package/dist/entity-trash-suite.js +17 -8
  32. package/dist/entity-trash-suite.js.map +1 -1
  33. package/dist/erasure-module.d.ts.map +1 -1
  34. package/dist/erasure-module.js +3 -2
  35. package/dist/erasure-module.js.map +1 -1
  36. package/dist/index.d.ts +8 -0
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +8 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/input-parse-suite.d.ts.map +1 -1
  41. package/dist/input-parse-suite.js +33 -2
  42. package/dist/input-parse-suite.js.map +1 -1
  43. package/dist/membership-module.d.ts.map +1 -1
  44. package/dist/membership-module.js +3 -2
  45. package/dist/membership-module.js.map +1 -1
  46. package/dist/migration-comments.d.ts.map +1 -1
  47. package/dist/migration-comments.js +3 -2
  48. package/dist/migration-comments.js.map +1 -1
  49. package/dist/modules.d.ts.map +1 -1
  50. package/dist/modules.js +78 -68
  51. package/dist/modules.js.map +1 -1
  52. package/dist/permission-suite.d.ts.map +1 -1
  53. package/dist/permission-suite.js +28 -0
  54. package/dist/permission-suite.js.map +1 -1
  55. package/dist/scope-host-suite.d.ts.map +1 -1
  56. package/dist/scope-host-suite.js +151 -31
  57. package/dist/scope-host-suite.js.map +1 -1
  58. package/dist/shape-backfill-ties.d.ts +29 -0
  59. package/dist/shape-backfill-ties.d.ts.map +1 -0
  60. package/dist/shape-backfill-ties.js +113 -0
  61. package/dist/shape-backfill-ties.js.map +1 -0
  62. package/dist/shape-reconcile-plan.d.ts +37 -0
  63. package/dist/shape-reconcile-plan.d.ts.map +1 -0
  64. package/dist/shape-reconcile-plan.js +143 -0
  65. package/dist/shape-reconcile-plan.js.map +1 -0
  66. package/dist/test-operations.d.ts +25 -0
  67. package/dist/test-operations.d.ts.map +1 -0
  68. package/dist/test-operations.js +22 -0
  69. package/dist/test-operations.js.map +1 -0
  70. package/dist/vertical-events-suite.d.ts.map +1 -1
  71. package/dist/vertical-events-suite.js +72 -7
  72. package/dist/vertical-events-suite.js.map +1 -1
  73. package/package.json +3 -3
@@ -0,0 +1,320 @@
1
+ /**
2
+ * The fixture behind `derivedHandlersContractSuite` (#1773): one module whose get, list, update
3
+ * and delete are DERIVED — declared with `derive` and handed no handler — bound through
4
+ * `operationsFor`, the path a vertical takes. So the suite holds the handlers the platform writes,
5
+ * on each adapter's SQL, to the behaviour a hand-written one owes: the check first, `not_found`,
6
+ * the partial PATCH, the 412, the event and its payload, the paged walk scoped to its parent.
7
+ *
8
+ * - `dfolder` — the parent a page is scoped to.
9
+ * - `dnote` — its child: derived get / list / update / delete. The writes that seed it, and the
10
+ * read of its history, are authored — none of them is a derivable shape.
11
+ * - `dtag` — another child of `dfolder`, made by a derived CREATE (#2157): keyed per folder, its
12
+ * time and author stamped, linked to the folder it was checked on; read and changed derived too.
13
+ * - `dlabel` — a scope-wide derived create, with no parent and no natural key.
14
+ * - `dshelf` — archivable and trashable, each under its own key (#119): derived archive /
15
+ * unarchive / trash / restore, the bin page, and a list with the archive view.
16
+ */
17
+ import { z } from 'zod';
18
+ import { defineEntities, defineOperations, entityStateOutput, listsDeclaredBy, manifestEntities, manifestOperations, moduleManifest, permissionKey, } from '@substrat-run/contracts';
19
+ import { assertAllowed, operationsFor, readHistory } from '@substrat-run/kernel';
20
+ export const DERIVED_MODULE_ID = '@test/derived';
21
+ export const derivedEntities = defineEntities({
22
+ dfolder: { table: 'derived_folders', fields: z.object({ id: z.string(), name: z.string() }) },
23
+ dnote: {
24
+ table: 'derived_notes',
25
+ fields: z.object({
26
+ id: z.string(),
27
+ dfolder_id: z.string(),
28
+ title: z.string(),
29
+ body: z.string().nullable(),
30
+ rank: z.number(),
31
+ }),
32
+ parents: ['dfolder'],
33
+ },
34
+ dtag: {
35
+ table: 'derived_tags',
36
+ fields: z.object({
37
+ id: z.string(),
38
+ dfolder_id: z.string(),
39
+ label: z.string(),
40
+ note: z.string().nullable(),
41
+ created_at: z.string(),
42
+ created_by: z.string(),
43
+ }),
44
+ parents: ['dfolder'],
45
+ key: ['dfolder_id', 'label'],
46
+ stamps: { created_at: 'createdAt', created_by: 'createdBy' },
47
+ },
48
+ dlabel: { table: 'derived_labels', fields: z.object({ id: z.string(), name: z.string() }) },
49
+ dshelf: {
50
+ table: 'derived_shelves',
51
+ fields: z.object({ id: z.string(), label: z.string() }),
52
+ archive: { permission: 'dshelf:archive' },
53
+ trash: { permission: 'dshelf:trash' },
54
+ },
55
+ });
56
+ const PERMISSIONS = ['dnote:read', 'dnote:write', 'dshelf:archive', 'dshelf:trash'];
57
+ const shelf = (key) => ({ key, entity: 'dshelf', idFrom: 'shelfId' });
58
+ const byShelf = z.object({ shelfId: z.string() });
59
+ const note = (key) => ({ key, entity: 'dnote', idFrom: 'noteId' });
60
+ const ok = z.object({ ok: z.boolean() });
61
+ export const derivedOperations = defineOperations(derivedEntities, PERMISSIONS)({
62
+ 'derived/add-folder': {
63
+ summary: 'Add a folder',
64
+ permission: 'dnote:write',
65
+ input: z.object({ id: z.string(), name: z.string() }),
66
+ output: ok,
67
+ },
68
+ 'derived/add-note': {
69
+ summary: 'Add a note — authored, and emitting, so the note has a version to hold',
70
+ permission: 'dnote:write',
71
+ input: z.object({ id: z.string(), folderId: z.string(), title: z.string(), body: z.string().nullable(), rank: z.number() }),
72
+ output: z.object({ id: z.string() }),
73
+ emits: { entity: 'dnote', entityIdFrom: 'id', type: 'dnote.added', schemaVersion: 1, piiClass: 'none', payload: ['id'] },
74
+ },
75
+ 'derived/get-note': {
76
+ summary: 'One note',
77
+ derive: 'get',
78
+ permission: note('dnote:read'),
79
+ input: z.object({ noteId: z.string() }),
80
+ output: derivedEntities.dnote.fields,
81
+ http: { method: 'GET', path: '/notes/{noteId}' },
82
+ },
83
+ 'derived/list-notes': {
84
+ summary: "A folder's notes",
85
+ derive: 'list',
86
+ permission: { key: 'dnote:read', entity: 'dfolder', idFrom: 'dfolderId' },
87
+ input: z.object({ dfolderId: z.string(), title: z.string().optional() }),
88
+ output: derivedEntities.dnote.fields,
89
+ paged: { over: { entity: 'dnote', sortable: ['rank'], filterable: ['dfolder_id', 'title'] }, total: true },
90
+ http: { method: 'GET', path: '/folders/{dfolderId}/notes' },
91
+ },
92
+ 'derived/update-note': {
93
+ summary: 'Change a note',
94
+ derive: 'update',
95
+ permission: note('dnote:write'),
96
+ input: z.object({
97
+ noteId: z.string(),
98
+ title: z.string().optional(),
99
+ body: z.string().nullable().optional(),
100
+ rank: z.number().optional(),
101
+ }),
102
+ output: derivedEntities.dnote.fields,
103
+ http: { method: 'PATCH', path: '/notes/{noteId}' },
104
+ concurrency: { over: 'dnote', idFrom: 'noteId' },
105
+ emits: {
106
+ entity: 'dnote',
107
+ entityIdFrom: 'id',
108
+ type: 'dnote.updated',
109
+ schemaVersion: 1,
110
+ piiClass: 'none',
111
+ payload: ['id', 'title', 'body', 'rank'],
112
+ },
113
+ },
114
+ 'derived/delete-note': {
115
+ summary: 'Remove a note',
116
+ derive: 'delete',
117
+ permission: note('dnote:write'),
118
+ input: z.object({ noteId: z.string() }),
119
+ output: z.object({ id: z.string(), deleted: z.boolean() }),
120
+ http: { method: 'DELETE', path: '/notes/{noteId}' },
121
+ emits: { entity: 'dnote', entityIdFrom: 'id', type: 'dnote.deleted', schemaVersion: 1, piiClass: 'none', payload: ['id'] },
122
+ },
123
+ 'derived/create-tag': {
124
+ summary: 'Tag a folder',
125
+ derive: 'create',
126
+ permission: { key: 'dnote:write', entity: 'dfolder', idFrom: 'dfolderId' },
127
+ input: z.object({ dfolderId: z.string(), label: z.string(), note: z.string().nullable().optional() }),
128
+ output: derivedEntities.dtag.fields,
129
+ http: { method: 'POST', path: '/folders/{dfolderId}/tags' },
130
+ emits: {
131
+ entity: 'dtag',
132
+ entityIdFrom: 'id',
133
+ type: 'dtag.created',
134
+ schemaVersion: 1,
135
+ piiClass: 'none',
136
+ payload: ['id', 'dfolder_id', 'label', 'created_at', 'created_by'],
137
+ },
138
+ },
139
+ 'derived/get-tag': {
140
+ summary: 'One tag — narrowed to the tag, so a grant on its folder reaches it only through the link',
141
+ derive: 'get',
142
+ permission: { key: 'dnote:read', entity: 'dtag', idFrom: 'tagId' },
143
+ input: z.object({ tagId: z.string() }),
144
+ output: derivedEntities.dtag.fields,
145
+ http: { method: 'GET', path: '/tags/{tagId}' },
146
+ },
147
+ 'derived/update-tag': {
148
+ summary: "Change a tag's note",
149
+ derive: 'update',
150
+ permission: { key: 'dnote:write', entity: 'dtag', idFrom: 'tagId' },
151
+ input: z.object({ tagId: z.string(), note: z.string().nullable().optional() }),
152
+ output: derivedEntities.dtag.fields,
153
+ http: { method: 'PATCH', path: '/tags/{tagId}' },
154
+ concurrency: { over: 'dtag', idFrom: 'tagId' },
155
+ emits: {
156
+ entity: 'dtag',
157
+ entityIdFrom: 'id',
158
+ type: 'dtag.updated',
159
+ schemaVersion: 1,
160
+ piiClass: 'none',
161
+ payload: ['id', 'note', 'created_by'],
162
+ },
163
+ },
164
+ 'derived/create-label': {
165
+ summary: 'Add a label',
166
+ derive: 'create',
167
+ permission: 'dnote:write',
168
+ input: z.object({ name: z.string() }),
169
+ output: derivedEntities.dlabel.fields,
170
+ http: { method: 'POST', path: '/labels' },
171
+ emits: { entity: 'dlabel', entityIdFrom: 'id', type: 'dlabel.created', schemaVersion: 1, piiClass: 'none', payload: ['id', 'name'] },
172
+ },
173
+ 'derived/add-shelf': {
174
+ summary: 'Add a shelf',
175
+ permission: 'dnote:write',
176
+ input: z.object({ id: z.string(), label: z.string() }),
177
+ output: ok,
178
+ },
179
+ // A derived create on an archivable, trashable entity with no natural key (#2162): there is no
180
+ // replay to answer a hidden row, so it derives. With a key it would not (`createPlan`).
181
+ 'derived/create-shelf': {
182
+ summary: 'Add a shelf, its id minted',
183
+ derive: 'create',
184
+ permission: 'dnote:write',
185
+ input: z.object({ label: z.string() }),
186
+ output: derivedEntities.dshelf.fields,
187
+ http: { method: 'POST', path: '/shelves' },
188
+ emits: { entity: 'dshelf', entityIdFrom: 'id', type: 'dshelf.created', schemaVersion: 1, piiClass: 'none', payload: ['id', 'label'] },
189
+ },
190
+ 'derived/list-shelves': {
191
+ summary: 'The shelves, active unless the archive is asked for',
192
+ derive: 'list',
193
+ permission: 'dnote:read',
194
+ input: z.object({ view: z.enum(['active', 'archived']).optional() }),
195
+ output: derivedEntities.dshelf.fields,
196
+ paged: { over: { entity: 'dshelf', sortable: ['label'] } },
197
+ http: { method: 'GET', path: '/shelves' },
198
+ },
199
+ 'derived/archive-shelf': {
200
+ summary: 'File a shelf away',
201
+ derive: 'archive',
202
+ permission: shelf('dshelf:archive'),
203
+ input: byShelf,
204
+ output: entityStateOutput,
205
+ http: { method: 'POST', path: '/shelves/{shelfId}/archive' },
206
+ },
207
+ 'derived/unarchive-shelf': {
208
+ summary: 'Bring a shelf back from the archive',
209
+ derive: 'unarchive',
210
+ permission: shelf('dshelf:archive'),
211
+ input: byShelf,
212
+ output: entityStateOutput,
213
+ http: { method: 'POST', path: '/shelves/{shelfId}/unarchive' },
214
+ },
215
+ 'derived/trash-shelf': {
216
+ summary: 'Bin a shelf',
217
+ derive: 'trash',
218
+ permission: shelf('dshelf:trash'),
219
+ input: byShelf,
220
+ output: entityStateOutput,
221
+ http: { method: 'POST', path: '/shelves/{shelfId}/trash' },
222
+ },
223
+ 'derived/restore-shelf': {
224
+ summary: 'Take a shelf out of the bin',
225
+ derive: 'restore',
226
+ permission: shelf('dshelf:trash'),
227
+ trashed: 'admits',
228
+ input: byShelf,
229
+ output: entityStateOutput,
230
+ http: { method: 'POST', path: '/shelves/{shelfId}/restore' },
231
+ },
232
+ 'derived/trashed-shelves': {
233
+ summary: 'The bin',
234
+ derive: 'trashed',
235
+ narrows: { reason: 'Only the binned shelves the caller may restore', checks: ['dshelf:trash'] },
236
+ output: derivedEntities.dshelf.fields,
237
+ paged: { over: { entity: 'dshelf', sortable: ['label'] } },
238
+ http: { method: 'GET', path: '/shelves/trash' },
239
+ },
240
+ 'derived/history': {
241
+ summary: "A note's events, after it is gone too",
242
+ permission: 'dnote:read',
243
+ input: z.object({ noteId: z.string() }),
244
+ output: z.object({ entries: z.array(z.unknown()) }),
245
+ },
246
+ });
247
+ export const derivedModManifest = moduleManifest.parse({
248
+ id: DERIVED_MODULE_ID,
249
+ version: '1.0.0',
250
+ kernelContract: '^0.0.1',
251
+ migrations: { journalDir: './migrations', compatibleFrom: '1.0.0' },
252
+ ...manifestOperations(derivedOperations, {
253
+ permissions: {
254
+ 'dnote:read': 'read notes',
255
+ 'dnote:write': 'write notes',
256
+ 'dshelf:archive': 'archive shelves',
257
+ 'dshelf:trash': 'bin and restore shelves',
258
+ },
259
+ consumes: [],
260
+ }),
261
+ ...manifestEntities(derivedEntities, {}),
262
+ lists: listsDeclaredBy(derivedOperations, derivedEntities),
263
+ entitlementKey: 'derived',
264
+ });
265
+ const WRITE = permissionKey.parse('dnote:write');
266
+ const READ = permissionKey.parse('dnote:read');
267
+ const noteRef = (id) => ({ entityType: 'dnote', entityId: id });
268
+ export const derivedMod = {
269
+ manifest: derivedModManifest,
270
+ migrations: [
271
+ {
272
+ version: '0001-init',
273
+ sql: `CREATE TABLE derived_folders (id TEXT PRIMARY KEY, name TEXT NOT NULL);
274
+ CREATE TABLE derived_notes (id TEXT PRIMARY KEY, dfolder_id TEXT NOT NULL, title TEXT NOT NULL,
275
+ body TEXT, rank INTEGER NOT NULL);
276
+ CREATE TABLE derived_tags (id TEXT PRIMARY KEY, dfolder_id TEXT NOT NULL, label TEXT NOT NULL, note TEXT,
277
+ created_at TEXT NOT NULL, created_by TEXT NOT NULL,
278
+ UNIQUE (dfolder_id, label));
279
+ CREATE TABLE derived_labels (id TEXT PRIMARY KEY, name TEXT NOT NULL);
280
+
281
+ CREATE TABLE derived_shelves (id TEXT PRIMARY KEY, label TEXT NOT NULL);`,
282
+ },
283
+ ],
284
+ // The derived operations are absent here — and could not be present: the type refuses them.
285
+ ...operationsFor(derivedOperations)({
286
+ 'derived/add-folder': async (ctx, i) => {
287
+ assertAllowed(await ctx.check(WRITE));
288
+ ctx.sql.exec('INSERT INTO derived_folders (id, name) VALUES (?, ?)', [i.id, i.name]);
289
+ return { ok: true };
290
+ },
291
+ 'derived/add-note': async (ctx, i) => {
292
+ assertAllowed(await ctx.check(WRITE));
293
+ ctx.sql.exec('INSERT INTO derived_notes (id, dfolder_id, title, body, rank) VALUES (?, ?, ?, ?, ?)', [
294
+ i.id,
295
+ i.folderId,
296
+ i.title,
297
+ i.body,
298
+ i.rank,
299
+ ]);
300
+ ctx.emit({ type: 'dnote.added', schemaVersion: 1, entity: noteRef(i.id), piiClass: 'none', payload: { id: i.id } });
301
+ return { id: i.id };
302
+ },
303
+ 'derived/add-shelf': async (ctx, i) => {
304
+ assertAllowed(await ctx.check(WRITE));
305
+ ctx.sql.exec('INSERT INTO derived_shelves (id, label) VALUES (?, ?)', [i.id, i.label]);
306
+ return { ok: true };
307
+ },
308
+ 'derived/history': async (ctx, i) => {
309
+ assertAllowed(await ctx.check(READ));
310
+ // Any entity's history: a note's, a tag's or a label's — the id is enough to find it.
311
+ for (const entityType of ['dnote', 'dtag', 'dlabel']) {
312
+ const { entries } = readHistory({ sql: ctx.sql }, { entityType, entityId: i.noteId });
313
+ if (entries.length > 0)
314
+ return { entries };
315
+ }
316
+ return { entries: [] };
317
+ },
318
+ }),
319
+ };
320
+ //# sourceMappingURL=derived-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derived-module.js","sourceRoot":"","sources":["../src/derived-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ScopeHostFixture } from './scope-host-suite.js';
2
+ export declare function derivedHandlersContractSuite(adapterName: string, makeFixture: () => Promise<ScopeHostFixture>): void;
3
+ //# sourceMappingURL=derived-suite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derived-suite.d.ts","sourceRoot":"","sources":["../src/derived-suite.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAgB9D,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAugBpH"}