@substrat-run/contract-tests 0.143.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.
@@ -8,6 +8,11 @@
8
8
  * - `dfolder` — the parent a page is scoped to.
9
9
  * - `dnote` — its child: derived get / list / update / delete. The writes that seed it, and the
10
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.
11
16
  */
12
17
  import { z } from 'zod';
13
18
  import { type ModuleRegistration } from '@substrat-run/kernel';
@@ -31,6 +36,43 @@ export declare const derivedEntities: {
31
36
  }, z.core.$strip>;
32
37
  readonly parents: readonly ["dfolder"];
33
38
  };
39
+ readonly dtag: {
40
+ readonly table: "derived_tags";
41
+ readonly fields: z.ZodObject<{
42
+ id: z.ZodString;
43
+ dfolder_id: z.ZodString;
44
+ label: z.ZodString;
45
+ note: z.ZodNullable<z.ZodString>;
46
+ created_at: z.ZodString;
47
+ created_by: z.ZodString;
48
+ }, z.core.$strip>;
49
+ readonly parents: readonly ["dfolder"];
50
+ readonly key: readonly ["dfolder_id", "label"];
51
+ readonly stamps: {
52
+ readonly created_at: "createdAt";
53
+ readonly created_by: "createdBy";
54
+ };
55
+ };
56
+ readonly dlabel: {
57
+ readonly table: "derived_labels";
58
+ readonly fields: z.ZodObject<{
59
+ id: z.ZodString;
60
+ name: z.ZodString;
61
+ }, z.core.$strip>;
62
+ };
63
+ readonly dshelf: {
64
+ readonly table: "derived_shelves";
65
+ readonly fields: z.ZodObject<{
66
+ id: z.ZodString;
67
+ label: z.ZodString;
68
+ }, z.core.$strip>;
69
+ readonly archive: {
70
+ readonly permission: "dshelf:archive";
71
+ };
72
+ readonly trash: {
73
+ readonly permission: "dshelf:trash";
74
+ };
75
+ };
34
76
  };
35
77
  export declare const derivedOperations: {
36
78
  readonly 'derived/add-folder': {
@@ -70,7 +112,7 @@ export declare const derivedOperations: {
70
112
  readonly summary: "One note";
71
113
  readonly derive: "get";
72
114
  readonly permission: {
73
- readonly key: "dnote:read" | "dnote:write";
115
+ readonly key: "dnote:read" | "dnote:write" | "dshelf:archive" | "dshelf:trash";
74
116
  readonly entity: 'dnote';
75
117
  readonly idFrom: 'noteId';
76
118
  };
@@ -125,7 +167,7 @@ export declare const derivedOperations: {
125
167
  readonly summary: "Change a note";
126
168
  readonly derive: "update";
127
169
  readonly permission: {
128
- readonly key: "dnote:read" | "dnote:write";
170
+ readonly key: "dnote:read" | "dnote:write" | "dshelf:archive" | "dshelf:trash";
129
171
  readonly entity: 'dnote';
130
172
  readonly idFrom: 'noteId';
131
173
  };
@@ -163,7 +205,7 @@ export declare const derivedOperations: {
163
205
  readonly summary: "Remove a note";
164
206
  readonly derive: "delete";
165
207
  readonly permission: {
166
- readonly key: "dnote:read" | "dnote:write";
208
+ readonly key: "dnote:read" | "dnote:write" | "dshelf:archive" | "dshelf:trash";
167
209
  readonly entity: 'dnote';
168
210
  readonly idFrom: 'noteId';
169
211
  };
@@ -187,6 +229,304 @@ export declare const derivedOperations: {
187
229
  readonly payload: readonly ["id"];
188
230
  };
189
231
  };
232
+ readonly 'derived/create-tag': {
233
+ readonly summary: "Tag a folder";
234
+ readonly derive: "create";
235
+ readonly permission: {
236
+ readonly key: "dnote:write";
237
+ readonly entity: "dfolder";
238
+ readonly idFrom: "dfolderId";
239
+ };
240
+ readonly input: z.ZodObject<{
241
+ dfolderId: z.ZodString;
242
+ label: z.ZodString;
243
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
244
+ }, z.core.$strip>;
245
+ readonly output: z.ZodObject<{
246
+ id: z.ZodString;
247
+ dfolder_id: z.ZodString;
248
+ label: z.ZodString;
249
+ note: z.ZodNullable<z.ZodString>;
250
+ created_at: z.ZodString;
251
+ created_by: z.ZodString;
252
+ }, z.core.$strip>;
253
+ readonly http: {
254
+ readonly method: "POST";
255
+ readonly path: "/folders/{dfolderId}/tags";
256
+ };
257
+ readonly emits: {
258
+ readonly entity: "dtag";
259
+ readonly entityIdFrom: "id";
260
+ readonly type: "dtag.created";
261
+ readonly schemaVersion: 1;
262
+ readonly piiClass: "none";
263
+ readonly payload: readonly ["id", "dfolder_id", "label", "created_at", "created_by"];
264
+ };
265
+ };
266
+ readonly 'derived/get-tag': {
267
+ readonly summary: "One tag — narrowed to the tag, so a grant on its folder reaches it only through the link";
268
+ readonly derive: "get";
269
+ readonly permission: {
270
+ readonly key: "dnote:read";
271
+ readonly entity: "dtag";
272
+ readonly idFrom: "tagId";
273
+ };
274
+ readonly input: z.ZodObject<{
275
+ tagId: z.ZodString;
276
+ }, z.core.$strip>;
277
+ readonly output: z.ZodObject<{
278
+ id: z.ZodString;
279
+ dfolder_id: z.ZodString;
280
+ label: z.ZodString;
281
+ note: z.ZodNullable<z.ZodString>;
282
+ created_at: z.ZodString;
283
+ created_by: z.ZodString;
284
+ }, z.core.$strip>;
285
+ readonly http: {
286
+ readonly method: "GET";
287
+ readonly path: "/tags/{tagId}";
288
+ };
289
+ };
290
+ readonly 'derived/update-tag': {
291
+ readonly summary: "Change a tag's note";
292
+ readonly derive: "update";
293
+ readonly permission: {
294
+ readonly key: "dnote:write";
295
+ readonly entity: "dtag";
296
+ readonly idFrom: "tagId";
297
+ };
298
+ readonly input: z.ZodObject<{
299
+ tagId: z.ZodString;
300
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
301
+ }, z.core.$strip>;
302
+ readonly output: z.ZodObject<{
303
+ id: z.ZodString;
304
+ dfolder_id: z.ZodString;
305
+ label: z.ZodString;
306
+ note: z.ZodNullable<z.ZodString>;
307
+ created_at: z.ZodString;
308
+ created_by: z.ZodString;
309
+ }, z.core.$strip>;
310
+ readonly http: {
311
+ readonly method: "PATCH";
312
+ readonly path: "/tags/{tagId}";
313
+ };
314
+ readonly concurrency: {
315
+ readonly over: "dtag";
316
+ readonly idFrom: "tagId";
317
+ };
318
+ readonly emits: {
319
+ readonly entity: "dtag";
320
+ readonly entityIdFrom: "id";
321
+ readonly type: "dtag.updated";
322
+ readonly schemaVersion: 1;
323
+ readonly piiClass: "none";
324
+ readonly payload: readonly ["id", "note", "created_by"];
325
+ };
326
+ };
327
+ readonly 'derived/create-label': {
328
+ readonly summary: "Add a label";
329
+ readonly derive: "create";
330
+ readonly permission: "dnote:write";
331
+ readonly input: z.ZodObject<{
332
+ name: z.ZodString;
333
+ }, z.core.$strip>;
334
+ readonly output: z.ZodObject<{
335
+ id: z.ZodString;
336
+ name: z.ZodString;
337
+ }, z.core.$strip>;
338
+ readonly http: {
339
+ readonly method: "POST";
340
+ readonly path: "/labels";
341
+ };
342
+ readonly emits: {
343
+ readonly entity: "dlabel";
344
+ readonly entityIdFrom: "id";
345
+ readonly type: "dlabel.created";
346
+ readonly schemaVersion: 1;
347
+ readonly piiClass: "none";
348
+ readonly payload: readonly ["id", "name"];
349
+ };
350
+ };
351
+ readonly 'derived/add-shelf': {
352
+ readonly summary: "Add a shelf";
353
+ readonly permission: "dnote:write";
354
+ readonly input: z.ZodObject<{
355
+ id: z.ZodString;
356
+ label: z.ZodString;
357
+ }, z.core.$strip>;
358
+ readonly output: z.ZodObject<{
359
+ ok: z.ZodBoolean;
360
+ }, z.core.$strip>;
361
+ };
362
+ readonly 'derived/create-shelf': {
363
+ readonly summary: "Add a shelf, its id minted";
364
+ readonly derive: "create";
365
+ readonly permission: "dnote:write";
366
+ readonly input: z.ZodObject<{
367
+ label: z.ZodString;
368
+ }, z.core.$strip>;
369
+ readonly output: z.ZodObject<{
370
+ id: z.ZodString;
371
+ label: z.ZodString;
372
+ }, z.core.$strip>;
373
+ readonly http: {
374
+ readonly method: "POST";
375
+ readonly path: "/shelves";
376
+ };
377
+ readonly emits: {
378
+ readonly entity: "dshelf";
379
+ readonly entityIdFrom: "id";
380
+ readonly type: "dshelf.created";
381
+ readonly schemaVersion: 1;
382
+ readonly piiClass: "none";
383
+ readonly payload: readonly ["id", "label"];
384
+ };
385
+ };
386
+ readonly 'derived/list-shelves': {
387
+ readonly summary: "The shelves, active unless the archive is asked for";
388
+ readonly derive: "list";
389
+ readonly permission: "dnote:read";
390
+ readonly input: z.ZodObject<{
391
+ view: z.ZodOptional<z.ZodEnum<{
392
+ active: "active";
393
+ archived: "archived";
394
+ }>>;
395
+ }, z.core.$strip>;
396
+ readonly output: z.ZodObject<{
397
+ id: z.ZodString;
398
+ label: z.ZodString;
399
+ }, z.core.$strip>;
400
+ readonly paged: {
401
+ readonly over: {
402
+ readonly entity: "dshelf";
403
+ readonly sortable: readonly ["label"];
404
+ };
405
+ };
406
+ readonly http: {
407
+ readonly method: "GET";
408
+ readonly path: "/shelves";
409
+ };
410
+ };
411
+ readonly 'derived/archive-shelf': {
412
+ readonly summary: "File a shelf away";
413
+ readonly derive: "archive";
414
+ readonly permission: {
415
+ readonly key: "dshelf:archive" | "dshelf:trash";
416
+ readonly entity: 'dshelf';
417
+ readonly idFrom: 'shelfId';
418
+ };
419
+ readonly input: z.ZodObject<{
420
+ shelfId: z.ZodString;
421
+ }, z.core.$strip>;
422
+ readonly output: z.ZodObject<{
423
+ id: z.ZodString;
424
+ state: z.ZodEnum<{
425
+ active: "active";
426
+ archived: "archived";
427
+ trashed: "trashed";
428
+ }>;
429
+ }, z.core.$strip>;
430
+ readonly http: {
431
+ readonly method: "POST";
432
+ readonly path: "/shelves/{shelfId}/archive";
433
+ };
434
+ };
435
+ readonly 'derived/unarchive-shelf': {
436
+ readonly summary: "Bring a shelf back from the archive";
437
+ readonly derive: "unarchive";
438
+ readonly permission: {
439
+ readonly key: "dshelf:archive" | "dshelf:trash";
440
+ readonly entity: 'dshelf';
441
+ readonly idFrom: 'shelfId';
442
+ };
443
+ readonly input: z.ZodObject<{
444
+ shelfId: z.ZodString;
445
+ }, z.core.$strip>;
446
+ readonly output: z.ZodObject<{
447
+ id: z.ZodString;
448
+ state: z.ZodEnum<{
449
+ active: "active";
450
+ archived: "archived";
451
+ trashed: "trashed";
452
+ }>;
453
+ }, z.core.$strip>;
454
+ readonly http: {
455
+ readonly method: "POST";
456
+ readonly path: "/shelves/{shelfId}/unarchive";
457
+ };
458
+ };
459
+ readonly 'derived/trash-shelf': {
460
+ readonly summary: "Bin a shelf";
461
+ readonly derive: "trash";
462
+ readonly permission: {
463
+ readonly key: "dshelf:archive" | "dshelf:trash";
464
+ readonly entity: 'dshelf';
465
+ readonly idFrom: 'shelfId';
466
+ };
467
+ readonly input: z.ZodObject<{
468
+ shelfId: z.ZodString;
469
+ }, z.core.$strip>;
470
+ readonly output: z.ZodObject<{
471
+ id: z.ZodString;
472
+ state: z.ZodEnum<{
473
+ active: "active";
474
+ archived: "archived";
475
+ trashed: "trashed";
476
+ }>;
477
+ }, z.core.$strip>;
478
+ readonly http: {
479
+ readonly method: "POST";
480
+ readonly path: "/shelves/{shelfId}/trash";
481
+ };
482
+ };
483
+ readonly 'derived/restore-shelf': {
484
+ readonly summary: "Take a shelf out of the bin";
485
+ readonly derive: "restore";
486
+ readonly permission: {
487
+ readonly key: "dshelf:archive" | "dshelf:trash";
488
+ readonly entity: 'dshelf';
489
+ readonly idFrom: 'shelfId';
490
+ };
491
+ readonly trashed: "admits";
492
+ readonly input: z.ZodObject<{
493
+ shelfId: z.ZodString;
494
+ }, z.core.$strip>;
495
+ readonly output: z.ZodObject<{
496
+ id: z.ZodString;
497
+ state: z.ZodEnum<{
498
+ active: "active";
499
+ archived: "archived";
500
+ trashed: "trashed";
501
+ }>;
502
+ }, z.core.$strip>;
503
+ readonly http: {
504
+ readonly method: "POST";
505
+ readonly path: "/shelves/{shelfId}/restore";
506
+ };
507
+ };
508
+ readonly 'derived/trashed-shelves': {
509
+ readonly summary: "The bin";
510
+ readonly derive: "trashed";
511
+ readonly narrows: {
512
+ readonly reason: "Only the binned shelves the caller may restore";
513
+ readonly checks: readonly ["dshelf:trash"];
514
+ };
515
+ readonly output: z.ZodObject<{
516
+ id: z.ZodString;
517
+ label: z.ZodString;
518
+ }, z.core.$strip>;
519
+ readonly paged: {
520
+ readonly over: {
521
+ readonly entity: "dshelf";
522
+ readonly sortable: readonly ["label"];
523
+ };
524
+ };
525
+ readonly http: {
526
+ readonly method: "GET";
527
+ readonly path: "/shelves/trash";
528
+ };
529
+ };
190
530
  readonly 'derived/history': {
191
531
  readonly summary: "A note's events, after it is gone too";
192
532
  readonly permission: "dnote:read";
@@ -1 +1 @@
1
- {"version":3,"file":"derived-module.d.ts","sourceRoot":"","sources":["../src/derived-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,OAAO,EAA6C,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1G,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;CAa1B,CAAC;AAMH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAHsC,OAAO;6BAAU,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuE3F,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAY7B,CAAC;AAMH,eAAO,MAAM,UAAU,EAAE,kBAkCxB,CAAC"}
1
+ {"version":3,"file":"derived-module.d.ts","sourceRoot":"","sources":["../src/derived-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,OAAO,EAA6C,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1G,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC1B,CAAC;AAQH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAHsC,OAAO;6BAAU,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAFnB,QAAQ;6BAAU,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8LnG,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiB7B,CAAC;AAMH,eAAO,MAAM,UAAU,EAAE,kBAkDxB,CAAC"}
@@ -8,9 +8,14 @@
8
8
  * - `dfolder` — the parent a page is scoped to.
9
9
  * - `dnote` — its child: derived get / list / update / delete. The writes that seed it, and the
10
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.
11
16
  */
12
17
  import { z } from 'zod';
13
- import { defineEntities, defineOperations, listsDeclaredBy, manifestEntities, manifestOperations, moduleManifest, permissionKey, } from '@substrat-run/contracts';
18
+ import { defineEntities, defineOperations, entityStateOutput, listsDeclaredBy, manifestEntities, manifestOperations, moduleManifest, permissionKey, } from '@substrat-run/contracts';
14
19
  import { assertAllowed, operationsFor, readHistory } from '@substrat-run/kernel';
15
20
  export const DERIVED_MODULE_ID = '@test/derived';
16
21
  export const derivedEntities = defineEntities({
@@ -26,8 +31,31 @@ export const derivedEntities = defineEntities({
26
31
  }),
27
32
  parents: ['dfolder'],
28
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
+ },
29
55
  });
30
- const PERMISSIONS = ['dnote:read', 'dnote:write'];
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() });
31
59
  const note = (key) => ({ key, entity: 'dnote', idFrom: 'noteId' });
32
60
  const ok = z.object({ ok: z.boolean() });
33
61
  export const derivedOperations = defineOperations(derivedEntities, PERMISSIONS)({
@@ -92,6 +120,123 @@ export const derivedOperations = defineOperations(derivedEntities, PERMISSIONS)(
92
120
  http: { method: 'DELETE', path: '/notes/{noteId}' },
93
121
  emits: { entity: 'dnote', entityIdFrom: 'id', type: 'dnote.deleted', schemaVersion: 1, piiClass: 'none', payload: ['id'] },
94
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
+ },
95
240
  'derived/history': {
96
241
  summary: "A note's events, after it is gone too",
97
242
  permission: 'dnote:read',
@@ -105,7 +250,12 @@ export const derivedModManifest = moduleManifest.parse({
105
250
  kernelContract: '^0.0.1',
106
251
  migrations: { journalDir: './migrations', compatibleFrom: '1.0.0' },
107
252
  ...manifestOperations(derivedOperations, {
108
- permissions: { 'dnote:read': 'read notes', 'dnote:write': 'write notes' },
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
+ },
109
259
  consumes: [],
110
260
  }),
111
261
  ...manifestEntities(derivedEntities, {}),
@@ -122,10 +272,16 @@ export const derivedMod = {
122
272
  version: '0001-init',
123
273
  sql: `CREATE TABLE derived_folders (id TEXT PRIMARY KEY, name TEXT NOT NULL);
124
274
  CREATE TABLE derived_notes (id TEXT PRIMARY KEY, dfolder_id TEXT NOT NULL, title TEXT NOT NULL,
125
- body TEXT, rank INTEGER 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);`,
126
282
  },
127
283
  ],
128
- // The four derived operations are absent here — and could not be present: the type refuses them.
284
+ // The derived operations are absent here — and could not be present: the type refuses them.
129
285
  ...operationsFor(derivedOperations)({
130
286
  'derived/add-folder': async (ctx, i) => {
131
287
  assertAllowed(await ctx.check(WRITE));
@@ -144,9 +300,20 @@ export const derivedMod = {
144
300
  ctx.emit({ type: 'dnote.added', schemaVersion: 1, entity: noteRef(i.id), piiClass: 'none', payload: { id: i.id } });
145
301
  return { id: i.id };
146
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
+ },
147
308
  'derived/history': async (ctx, i) => {
148
309
  assertAllowed(await ctx.check(READ));
149
- return { entries: readHistory({ sql: ctx.sql }, noteRef(i.noteId)).entries };
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: [] };
150
317
  },
151
318
  }),
152
319
  };
@@ -1 +1 @@
1
- {"version":3,"file":"derived-module.js","sourceRoot":"","sources":["../src/derived-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"derived-module.js","sourceRoot":"","sources":["../src/derived-module.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"derived-suite.d.ts","sourceRoot":"","sources":["../src/derived-suite.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAM9D,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAuPpH"}
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"}