@substrat-run/contract-tests 0.137.0 → 0.139.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 (72) hide show
  1. package/dist/attachment-text-fixtures.d.ts +17 -0
  2. package/dist/attachment-text-fixtures.d.ts.map +1 -1
  3. package/dist/attachment-text-fixtures.js +344 -4
  4. package/dist/attachment-text-fixtures.js.map +1 -1
  5. package/dist/attachment-text-suite.d.ts +16 -1
  6. package/dist/attachment-text-suite.d.ts.map +1 -1
  7. package/dist/attachment-text-suite.js +212 -28
  8. package/dist/attachment-text-suite.js.map +1 -1
  9. package/dist/caused-by-module.d.ts +23 -0
  10. package/dist/caused-by-module.d.ts.map +1 -0
  11. package/dist/caused-by-module.js +56 -0
  12. package/dist/caused-by-module.js.map +1 -0
  13. package/dist/caused-by-suite.d.ts +28 -0
  14. package/dist/caused-by-suite.d.ts.map +1 -0
  15. package/dist/caused-by-suite.js +179 -0
  16. package/dist/caused-by-suite.js.map +1 -0
  17. package/dist/directory-restore-suite.d.ts.map +1 -1
  18. package/dist/directory-restore-suite.js +40 -0
  19. package/dist/directory-restore-suite.js.map +1 -1
  20. package/dist/entity-state-module.d.ts +134 -0
  21. package/dist/entity-state-module.d.ts.map +1 -0
  22. package/dist/entity-state-module.js +140 -0
  23. package/dist/entity-state-module.js.map +1 -0
  24. package/dist/entity-state-suite.d.ts +9 -0
  25. package/dist/entity-state-suite.d.ts.map +1 -0
  26. package/dist/entity-state-suite.js +534 -0
  27. package/dist/entity-state-suite.js.map +1 -0
  28. package/dist/findings-atomic-suite.d.ts +21 -0
  29. package/dist/findings-atomic-suite.d.ts.map +1 -0
  30. package/dist/findings-atomic-suite.js +131 -0
  31. package/dist/findings-atomic-suite.js.map +1 -0
  32. package/dist/findings-suite.d.ts +11 -0
  33. package/dist/findings-suite.d.ts.map +1 -0
  34. package/dist/findings-suite.js +391 -0
  35. package/dist/findings-suite.js.map +1 -0
  36. package/dist/impersonation-suite.d.ts.map +1 -1
  37. package/dist/impersonation-suite.js +56 -0
  38. package/dist/impersonation-suite.js.map +1 -1
  39. package/dist/index.d.ts +11 -2
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +10 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/job-run-suite.d.ts.map +1 -1
  44. package/dist/job-run-suite.js +263 -1
  45. package/dist/job-run-suite.js.map +1 -1
  46. package/dist/membership-executor-suite.d.ts +19 -0
  47. package/dist/membership-executor-suite.d.ts.map +1 -0
  48. package/dist/membership-executor-suite.js +866 -0
  49. package/dist/membership-executor-suite.js.map +1 -0
  50. package/dist/membership-module.d.ts +17 -0
  51. package/dist/membership-module.d.ts.map +1 -0
  52. package/dist/membership-module.js +128 -0
  53. package/dist/membership-module.js.map +1 -0
  54. package/dist/modules.d.ts +217 -0
  55. package/dist/modules.d.ts.map +1 -1
  56. package/dist/modules.js +23 -0
  57. package/dist/modules.js.map +1 -1
  58. package/dist/peer-suite.d.ts +10 -1
  59. package/dist/peer-suite.d.ts.map +1 -1
  60. package/dist/peer-suite.js +98 -0
  61. package/dist/peer-suite.js.map +1 -1
  62. package/dist/permission-suite.d.ts.map +1 -1
  63. package/dist/permission-suite.js +82 -7
  64. package/dist/permission-suite.js.map +1 -1
  65. package/dist/scope-host-suite.d.ts.map +1 -1
  66. package/dist/scope-host-suite.js +190 -34
  67. package/dist/scope-host-suite.js.map +1 -1
  68. package/dist/vertical-events-suite.d.ts +14 -0
  69. package/dist/vertical-events-suite.d.ts.map +1 -1
  70. package/dist/vertical-events-suite.js +74 -1
  71. package/dist/vertical-events-suite.js.map +1 -1
  72. package/package.json +4 -4
@@ -0,0 +1,179 @@
1
+ import { describe, it, expect, beforeAll, afterAll } from 'vitest';
2
+ import { orgId, platformActorId, principalId, scopeId, tenantId, } from '@substrat-run/contracts';
3
+ import { ulid } from '@substrat-run/kernel';
4
+ import { connectorMod } from './modules.js';
5
+ import { CAUSED_BY_HOLD, causedByMod, tick } from './caused-by-module.js';
6
+ /**
7
+ * #2055: an executor's admin rows name the event they are the effect of (K-22, `causedBy`),
8
+ * and no other admin row does — in particular not one some other caller writes on the same
9
+ * host while the handler is suspended. The SQLite host used to keep the event in a host-wide
10
+ * field set around the handler's `await`, so a staff call landing in that window was recorded
11
+ * as caused by an event it had nothing to do with.
12
+ *
13
+ * Each door an executor runs through is held here with a staff write landing inside the hold:
14
+ * a plain executor (`registerExecutor`, through the `admin` it is handed), an in-process
15
+ * connector (`registerConnector`, through `ctx.admin`), and a routed connector delivery
16
+ * (`dispatchConnector`). Every case asserts both halves — the staff row carries no cause, and
17
+ * the handler's own row still carries its event — because either alone is also what dropping
18
+ * `causedBy` everywhere looks like.
19
+ */
20
+ export function causedByContractSuite(adapterName, makeFixture) {
21
+ describe(`causedBy is per call, never host-wide (#2055): ${adapterName}`, () => {
22
+ let fixture;
23
+ let host;
24
+ const staff = platformActorId.parse(ulid());
25
+ const alice = principalId.parse(ulid());
26
+ const t = tenantId.parse(ulid());
27
+ const s = scopeId.parse(ulid());
28
+ /** Every handler waits here, after it was entered and before it writes. */
29
+ let gate = Promise.resolve();
30
+ let release = () => undefined;
31
+ let entered = Promise.resolve();
32
+ let enter = () => undefined;
33
+ const shut = () => {
34
+ gate = new Promise((r) => (release = r));
35
+ entered = new Promise((r) => (enter = r));
36
+ };
37
+ /** The handlers' one write: an org named by the event's tag, so its row is findable. */
38
+ const heldWrite = async (admin, event) => {
39
+ enter();
40
+ await gate;
41
+ const tag = event.payload.tag;
42
+ await admin.createOrg(staff, { id: orgId.parse(ulid()), tenantId: event.tenantId, slug: tag, name: tag });
43
+ };
44
+ const tagOf = (kind) => `${kind}-${ulid().slice(-8).toLowerCase()}`;
45
+ /**
46
+ * Start a handler with `start` (handed a fresh tag; answers the id of the event the handler
47
+ * runs for once it is done), make a staff write while it is held, release it, and assert both
48
+ * halves: the staff row carries no cause, the handler's own row carries its event.
49
+ */
50
+ const expectCausedPerCall = async (start, kind) => {
51
+ shut();
52
+ const tag = tagOf(kind);
53
+ const done = start(tag);
54
+ await entered;
55
+ const staffSlug = tagOf('staff');
56
+ await host.admin.createOrg(staff, { id: orgId.parse(ulid()), tenantId: t, slug: staffSlug, name: staffSlug });
57
+ release();
58
+ const eventId = await done;
59
+ const created = await host.admin.auditLog(staff, { tenantId: t, action: 'createOrg', limit: 500 });
60
+ const causeOf = (slug) => created.find((r) => r.after?.slug === slug)?.causedBy;
61
+ expect(causeOf(staffSlug)).toBeNull();
62
+ expect(causeOf(tag)).toBe(eventId);
63
+ };
64
+ /** Invoke `operation` for `tag`; answers the event id the one executor delivered. */
65
+ const invoked = (operation) => async (tag) => {
66
+ const outcomes = [];
67
+ await (await host.getScope(alice, t, s)).invoke(operation, { tag }, { onExecutorOutcomes: (o) => outcomes.push(...o) });
68
+ expect(outcomes.map((o) => o.outcome)).toEqual(['delivered']);
69
+ return outcomes[0].eventId;
70
+ };
71
+ beforeAll(async () => {
72
+ fixture = await makeFixture();
73
+ host = fixture.host;
74
+ host.registerModule(connectorMod);
75
+ host.registerExecutor('held-effector', 'effect.requested', (admin, event) => heldWrite(admin, event));
76
+ host.registerConnector('held-caller', 'outbound.requested', (ctx, event) => heldWrite(ctx.admin, event));
77
+ await host.admin.createTenant(staff, { id: t, slug: `caused-${t.slice(-10).toLowerCase()}`, name: 'Caused' });
78
+ await host.admin.grantEntitlement(staff, t, 'connector');
79
+ await host.provisionScope(staff, { tenantId: t, scopeId: s, vertical: 'connector-vertical' });
80
+ await host.admin.activateScope(staff, t, s);
81
+ });
82
+ afterAll(async () => {
83
+ await fixture.cleanup();
84
+ });
85
+ it('an executor: a staff write while its handler awaits carries no cause; the handler\'s own row carries its event', async () => {
86
+ await expectCausedPerCall(invoked('connector/request-effect'), 'effect');
87
+ });
88
+ it('an in-process connector: the same, through `ctx.admin`', async () => {
89
+ await expectCausedPerCall(invoked('connector/request-outbound'), 'outbound');
90
+ });
91
+ it('a routed connector delivery (`dispatchConnector`): the same', async () => {
92
+ await expectCausedPerCall(async (tag) => {
93
+ const event = { id: ulid(), tenantId: t, type: 'outbound.requested', payload: { tag } };
94
+ await host.dispatchConnector(t, s, (ctx, e) => heldWrite(ctx.admin, e), event);
95
+ return event.id;
96
+ }, 'routed');
97
+ });
98
+ it('two views with two causes, their writes interleaved across awaits: each row carries its own', async () => {
99
+ // A null cause beside a non-null one cannot catch two causes trading places, so both are
100
+ // set here. Both views are made before either's admin is first read (it is built lazily),
101
+ // and each is written through twice.
102
+ const e1 = ulid();
103
+ const e2 = ulid();
104
+ const a = host.attributed({ principal: alice, tenantId: t }, { causedBy: e1 });
105
+ const b = host.attributed({ principal: alice, tenantId: t }, { causedBy: e2 });
106
+ const [a1, a2, b1, b2] = [tagOf('a1'), tagOf('a2'), tagOf('b1'), tagOf('b2')];
107
+ const write = (view, slug) => view.admin.createOrg(staff, { id: orgId.parse(ulid()), tenantId: t, slug, name: slug });
108
+ const first = write(a, a1); // A starts…
109
+ await write(b, b1); // …B writes while A's write is in flight…
110
+ await first;
111
+ await write(a, a2); // …A writes again…
112
+ await write(b, b2); // …and B again.
113
+ const created = await host.admin.auditLog(staff, { tenantId: t, action: 'createOrg', limit: 500 });
114
+ const causeOf = (slug) => created.find((r) => r.after?.slug === slug)?.causedBy;
115
+ expect([a1, a2, b1, b2].map(causeOf)).toEqual([e1, e1, e2, e2]);
116
+ });
117
+ });
118
+ }
119
+ /**
120
+ * #2055, the scope's half: what a consumer emits names the event it consumed (#1237), and no
121
+ * other emit in the scope does — in particular not one another call makes while the consumer
122
+ * awaits. Each adapter serializes a scope's emitting work (the SQLite `ScopeActor`, the
123
+ * Durable Object's `OperationQueue`), and the cause is passed into the consumer's context
124
+ * rather than read off a field, so neither guarantee leans on the other.
125
+ *
126
+ * The fixture's host must carry `causedByMod` in the scope it reaches: the suite registers it
127
+ * on the host, and a code-time module set (a Cloudflare ScopeDO's) must already include it.
128
+ */
129
+ export function scopeCausedByContractSuite(adapterName, makeFixture) {
130
+ describe(`a consumer's cause stamps its own emits, never another call's (#2055): ${adapterName}`, () => {
131
+ let fixture;
132
+ let host;
133
+ const staff = platformActorId.parse(ulid());
134
+ const alice = principalId.parse(ulid());
135
+ const bob = principalId.parse(ulid());
136
+ const t = tenantId.parse(ulid());
137
+ const s = scopeId.parse(ulid());
138
+ beforeAll(async () => {
139
+ fixture = await makeFixture();
140
+ host = fixture.host;
141
+ host.registerModule(causedByMod);
142
+ await host.admin.createTenant(staff, { id: t, slug: `scope-caused-${t.slice(-10).toLowerCase()}`, name: 'Scope caused' });
143
+ await host.admin.grantEntitlement(staff, t, 'causedby');
144
+ await host.provisionScope(staff, { tenantId: t, scopeId: s });
145
+ await host.admin.activateScope(staff, t, s);
146
+ });
147
+ afterAll(async () => {
148
+ delete globalThis[CAUSED_BY_HOLD];
149
+ await fixture.cleanup();
150
+ });
151
+ it('a call emitting while a consumer awaits is caused by nothing; the consumer\'s own emit is caused by its event', async () => {
152
+ const hold = { shut: true, entered: false };
153
+ globalThis[CAUSED_BY_HOLD] = hold;
154
+ const tag = ulid().slice(-8).toLowerCase();
155
+ const starting = (await host.getScope(alice, t, s)).invoke('causedby/start', { tag });
156
+ while (!hold.entered)
157
+ await tick();
158
+ // Another caller, the same scope, while the consumer is suspended. Where the scope's
159
+ // work is serialized it waits for the consumer; either way, its event is its own.
160
+ // Not awaited before the release: on a host whose scope work is queued, reaching the
161
+ // scope at all waits for the consumer.
162
+ const other = host.getScope(bob, t, s).then((stub) => stub.invoke('causedby/other', { tag }));
163
+ await tick(20);
164
+ hold.shut = false;
165
+ await Promise.all([starting, other]);
166
+ const events = await host.admin.readUndrainedEvents(staff, t, s, 200);
167
+ const one = (type) => {
168
+ const found = events.filter((e) => e.type === type && e.entity.entityId === tag);
169
+ expect(found).toHaveLength(1);
170
+ return found[0];
171
+ };
172
+ const requested = one('causedby.requested');
173
+ expect(one('causedby.other').causedBy).toBeNull();
174
+ expect(one('causedby.effected').causedBy).toBe(requested.id);
175
+ expect(requested.causedBy).toBeNull();
176
+ });
177
+ });
178
+ }
179
+ //# sourceMappingURL=caused-by-suite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caused-by-suite.js","sourceRoot":"","sources":["../src/caused-by-suite.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"directory-restore-suite.d.ts","sourceRoot":"","sources":["../src/directory-restore-suite.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG/E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,6FAA6F;IAC7F,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACtC,uCAAuC;IACvC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,2FAA2F;IAC3F,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,+FAA+F;IAC/F,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,oEAAoE;IACpE,IAAI,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACtC;AAmFD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG,IAAI,CA8P1F"}
1
+ {"version":3,"file":"directory-restore-suite.d.ts","sourceRoot":"","sources":["../src/directory-restore-suite.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG/E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,6FAA6F;IAC7F,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACtC,uCAAuC;IACvC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,2FAA2F;IAC3F,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,+FAA+F;IAC/F,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,oEAAoE;IACpE,IAAI,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACtC;AAmFD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG,IAAI,CA8S1F"}
@@ -241,6 +241,46 @@ export function directoryRestoreSuite(name, harness) {
241
241
  }
242
242
  });
243
243
  });
244
+ it('a removal fence survives the round trip, row for row (#1184)', async () => {
245
+ await using(async (dir, fresh) => {
246
+ const fence = { tenant_id: 'tenant-a', principal: '01JZ00000000000000000000F1', removed_at: '2026-09-29T00:00:00.000Z' };
247
+ await dir.restore(withTable(fresh, '_substrat_membership_fences', (t) => ({ ...t, rows: [rowOf(t.columns, fence)] })));
248
+ await dir.settle();
249
+ const before = await dir.snapshot();
250
+ expect(recordsOf(find(before, '_substrat_membership_fences'))).toEqual([fence]);
251
+ await dir.restore(before);
252
+ await dir.settle();
253
+ expect(recordsOf(find(await dir.snapshot(), '_substrat_membership_fences'))).toEqual([fence]);
254
+ });
255
+ });
256
+ it('a dump from before the removal fence: the fence is backfilled from its admin log, standing at the restore (#1184)', async () => {
257
+ await using(async (dir, fresh) => {
258
+ const P = '01JZ00000000000000000000F2';
259
+ const Q = '01JZ00000000000000000000F3';
260
+ const log = (id, action, scope, before, at) => ({ id, actor: 'staff', action, tenant_id: 'tenant-a', scope_id: scope, before: JSON.stringify(before), at });
261
+ const rows = [
262
+ // Two tenant-level removals of P: the later one is the fence.
263
+ log('01JZ0000000000000000000L01', 'unassignRole', null, { principalId: P, roleKey: 'member', node: { tenantId: 'tenant-a', scopeId: null } }, '2026-09-01T00:00:00.000Z'),
264
+ log('01JZ0000000000000000000L02', 'removeMember', null, { principal: P, orgId: 'o1' }, '2026-09-02T00:00:00.000Z'),
265
+ // A removal at one scope is not a tenant removal: Q gets no fence.
266
+ log('01JZ0000000000000000000L03', 'unassignRole', 's1', { principalId: Q, roleKey: 'member', node: { tenantId: 'tenant-a', scopeId: 's1' } }, '2026-09-03T00:00:00.000Z'),
267
+ ];
268
+ const dump = withTable(fresh.filter((t) => t.name !== '_substrat_membership_fences'), '_substrat_admin_log', (t) => ({ ...t, rows: rows.map((r) => rowOf(t.columns, r)) }));
269
+ // The audit rows' own times are in the clock domain of whoever wrote them; the fence
270
+ // stands at the restoring adapter's clock instead, so it cannot sit below a request the
271
+ // dump's scopes still hold (Codex round 4).
272
+ const before = new Date().toISOString();
273
+ await dir.restore(dump);
274
+ await dir.settle();
275
+ const fences = recordsOf(find(await dir.snapshot(), '_substrat_membership_fences'));
276
+ expect(fences.map((f) => [f.tenant_id, f.principal])).toEqual([['tenant-a', P]]);
277
+ expect(String(fences[0].removed_at) >= before).toBe(true);
278
+ // Twin: a dump that carries the table, empty, is taken as it is — never backfilled over.
279
+ await dir.restore(withTable(dump.concat(find(fresh, '_substrat_membership_fences')), '_substrat_admin_log', (t) => t));
280
+ await dir.settle();
281
+ expect(recordsOf(find(await dir.snapshot(), '_substrat_membership_fences'))).toEqual([]);
282
+ });
283
+ });
244
284
  describe('refused, and the directory is left exactly as it was', () => {
245
285
  const refusals = [
246
286
  [
@@ -1 +1 @@
1
- {"version":3,"file":"directory-restore-suite.js","sourceRoot":"","sources":["../src/directory-restore-suite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"directory-restore-suite.js","sourceRoot":"","sources":["../src/directory-restore-suite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ import { type ModuleRegistration } from '@substrat-run/kernel';
2
+ export declare const stateModManifest: {
3
+ id: string & import("zod").$brand<"ModuleId">;
4
+ version: string;
5
+ kernelContract: string;
6
+ permissions: {
7
+ key: string & import("zod").$brand<"PermissionKey">;
8
+ description: string;
9
+ }[];
10
+ events: {
11
+ emits: {
12
+ type: string;
13
+ schemaVersion: number;
14
+ }[];
15
+ consumes: {
16
+ type: string;
17
+ schemaVersion: number;
18
+ from?: string | undefined;
19
+ }[];
20
+ exports?: {
21
+ type: string;
22
+ schemaVersion: number;
23
+ readPermission: string & import("zod").$brand<"PermissionKey">;
24
+ }[] | undefined;
25
+ };
26
+ migrations: {
27
+ journalDir: string;
28
+ compatibleFrom: string;
29
+ };
30
+ attachmentTargets: {
31
+ entityType: string;
32
+ readPermission: string & import("zod").$brand<"PermissionKey">;
33
+ writePermission?: (string & import("zod").$brand<"PermissionKey">) | undefined;
34
+ }[];
35
+ liveTargets?: {
36
+ entityType: string;
37
+ readPermission: string & import("zod").$brand<"PermissionKey">;
38
+ }[] | undefined;
39
+ entityRelations?: {
40
+ entityType: string;
41
+ parentType: string;
42
+ }[] | undefined;
43
+ guards?: {
44
+ before: string;
45
+ predicate: string;
46
+ config: Record<string, unknown>;
47
+ }[] | undefined;
48
+ schedules?: {
49
+ operation: string;
50
+ cadence: {
51
+ everyMinutes: number;
52
+ };
53
+ input?: Record<string, unknown> | undefined;
54
+ permissions: (string & import("zod").$brand<"PermissionKey">)[];
55
+ }[] | undefined;
56
+ peers?: {
57
+ vertical: string;
58
+ operations: string[];
59
+ permissions: (string & import("zod").$brand<"PermissionKey">)[];
60
+ }[] | undefined;
61
+ freshness?: {
62
+ eventType: string;
63
+ within: {
64
+ hours: number;
65
+ };
66
+ }[] | undefined;
67
+ withdraws?: string[] | undefined;
68
+ entitlementKey: string;
69
+ envSpec?: {
70
+ key: string;
71
+ label?: string | undefined;
72
+ description: string;
73
+ placeholder?: string | undefined;
74
+ required: boolean;
75
+ secret: boolean;
76
+ default?: string | undefined;
77
+ group?: string | undefined;
78
+ }[] | undefined;
79
+ ownerGrants?: (string & import("zod").$brand<"PermissionKey">)[] | undefined;
80
+ entitlements?: string[] | undefined;
81
+ provides?: string[] | undefined;
82
+ requires?: string[] | undefined;
83
+ api?: string | undefined;
84
+ searchables?: {
85
+ entityType: string;
86
+ fields: string[];
87
+ table?: string | undefined;
88
+ idColumn?: string | undefined;
89
+ tokenizer?: "prefix" | "substring" | undefined;
90
+ }[] | undefined;
91
+ lists?: {
92
+ entityType: string;
93
+ sortable: string[];
94
+ filterable?: string[] | undefined;
95
+ table?: string | undefined;
96
+ idColumn?: string | undefined;
97
+ }[] | undefined;
98
+ entityStates?: {
99
+ archivePermission?: (string & import("zod").$brand<"PermissionKey">) | undefined;
100
+ trashPermission?: (string & import("zod").$brand<"PermissionKey">) | undefined;
101
+ table?: string | undefined;
102
+ idColumn?: string | undefined;
103
+ entityType: string;
104
+ }[] | undefined;
105
+ ui?: {
106
+ routes?: {
107
+ path: string;
108
+ screen: string;
109
+ permission: string & import("zod").$brand<"PermissionKey">;
110
+ }[] | undefined;
111
+ nav?: {
112
+ label: string;
113
+ icon?: string | undefined;
114
+ to: string;
115
+ permission: string & import("zod").$brand<"PermissionKey">;
116
+ }[] | undefined;
117
+ entityViews?: {
118
+ entityType: string;
119
+ view: string;
120
+ }[] | undefined;
121
+ widgets?: {
122
+ slot: string;
123
+ component: string;
124
+ permission: string & import("zod").$brand<"PermissionKey">;
125
+ }[] | undefined;
126
+ settingsPanels?: {
127
+ label: string;
128
+ component: string;
129
+ permission: string & import("zod").$brand<"PermissionKey">;
130
+ }[] | undefined;
131
+ } | undefined;
132
+ };
133
+ export declare const stateMod: ModuleRegistration;
134
+ //# sourceMappingURL=entity-state-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-state-module.d.ts","sourceRoot":"","sources":["../src/entity-state-module.ts"],"names":[],"mappings":"AAaA,OAAO,EAIL,KAAK,kBAAkB,EAExB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3B,CAAC;AAQH,eAAO,MAAM,QAAQ,EAAE,kBA2FtB,CAAC"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * The fixture behind `entityStateContractSuite` (#119): a module whose entities differ in
3
+ * exactly what they declare.
4
+ *
5
+ * - `stdoc` — archive AND trash, each with its own key; paged, filterable and searchable.
6
+ * - `stnote` — archive only, so the suite can see a trash refused on it and a one-column
7
+ * partial index.
8
+ * - `stplain` — neither, so the verbs and the views are refused on it rather than guessed at.
9
+ *
10
+ * Every operation is a thin pass-through to the verb or read under test, and checks nothing
11
+ * itself: the KERNEL's check of the declared key is what the suite is asserting on.
12
+ */
13
+ import { moduleManifest } from '@substrat-run/contracts';
14
+ import { listIndexPlans, listQuery, readHistory, } from '@substrat-run/kernel';
15
+ export const stateModManifest = moduleManifest.parse({
16
+ id: '@test/state',
17
+ version: '1.0.0',
18
+ kernelContract: '^0.0.1',
19
+ permissions: [
20
+ { key: 'doc:read', description: 'read the documents' },
21
+ { key: 'doc:archive', description: 'archive a document or bring it back' },
22
+ { key: 'doc:trash', description: 'bin a document or restore it' },
23
+ ],
24
+ events: { emits: [], consumes: [] },
25
+ migrations: { journalDir: './migrations', compatibleFrom: '1.0.0' },
26
+ attachmentTargets: [],
27
+ entitlementKey: 'state',
28
+ searchables: [{ entityType: 'stdoc', fields: ['title'], table: 'state_docs', idColumn: 'id' }],
29
+ lists: [
30
+ { entityType: 'stdoc', sortable: ['title', 'id'], filterable: ['owner'], table: 'state_docs', idColumn: 'id' },
31
+ { entityType: 'stnote', sortable: ['title'], table: 'state_notes', idColumn: 'id' },
32
+ { entityType: 'stplain', sortable: ['title'], table: 'state_plain', idColumn: 'id' },
33
+ ],
34
+ entityStates: [
35
+ {
36
+ entityType: 'stdoc',
37
+ archivePermission: 'doc:archive',
38
+ trashPermission: 'doc:trash',
39
+ table: 'state_docs',
40
+ idColumn: 'id',
41
+ },
42
+ { entityType: 'stnote', archivePermission: 'doc:archive', table: 'state_notes', idColumn: 'id' },
43
+ ],
44
+ });
45
+ const ref = (input) => {
46
+ const i = input;
47
+ return { entityType: i.entityType ?? 'stdoc', entityId: i.id };
48
+ };
49
+ export const stateMod = {
50
+ manifest: stateModManifest,
51
+ migrations: [
52
+ {
53
+ version: '0001-init',
54
+ sql: `CREATE TABLE state_docs (id TEXT PRIMARY KEY, title TEXT NOT NULL, owner TEXT NOT NULL);
55
+ CREATE TABLE state_notes (id TEXT PRIMARY KEY, title TEXT NOT NULL);
56
+ CREATE TABLE state_plain (id TEXT PRIMARY KEY, title TEXT NOT NULL);`,
57
+ },
58
+ ],
59
+ operations: {
60
+ 'state/add': (async (ctx, input) => {
61
+ const i = input;
62
+ const table = { stdoc: 'state_docs', stnote: 'state_notes', stplain: 'state_plain' }[i.entityType ?? 'stdoc'];
63
+ if (table === 'state_docs') {
64
+ ctx.sql.exec('INSERT INTO state_docs (id, title, owner) VALUES (?, ?, ?)', [i.id, i.title, i.owner ?? 'o1']);
65
+ }
66
+ else {
67
+ ctx.sql.exec(`INSERT INTO ${table} (id, title) VALUES (?, ?)`, [i.id, i.title]);
68
+ }
69
+ return { id: i.id };
70
+ }),
71
+ 'state/archive': (async (ctx, input) => {
72
+ await ctx.archive(ref(input));
73
+ return ctx.entityState(ref(input));
74
+ }),
75
+ 'state/unarchive': (async (ctx, input) => {
76
+ await ctx.unarchive(ref(input));
77
+ return ctx.entityState(ref(input));
78
+ }),
79
+ 'state/trash': (async (ctx, input) => {
80
+ await ctx.trash(ref(input));
81
+ return ctx.entityState(ref(input));
82
+ }),
83
+ 'state/restore': (async (ctx, input) => {
84
+ await ctx.restore(ref(input));
85
+ return ctx.entityState(ref(input));
86
+ }),
87
+ // Transactional with the operation: an archive whose operation then throws never happened.
88
+ 'state/archive-then-throw': (async (ctx, input) => {
89
+ await ctx.archive(ref(input));
90
+ throw new Error('the operation failed after archiving');
91
+ }),
92
+ 'state/state': (async (ctx, input) => ctx.entityState(ref(input))),
93
+ 'state/page': (async (ctx, input) => {
94
+ const i = input;
95
+ return ctx.page(i.entityType ?? 'stdoc', {
96
+ limit: i.limit ?? 50,
97
+ cursor: i.cursor,
98
+ filters: i.filters,
99
+ total: i.total,
100
+ view: i.view,
101
+ });
102
+ }),
103
+ 'state/page-trashed': (async (ctx, input) => {
104
+ const i = input;
105
+ return ctx.pageTrashed(i.entityType ?? 'stdoc', {
106
+ limit: i.limit ?? 50,
107
+ cursor: i.cursor,
108
+ ...(i.total ? { total: true } : {}),
109
+ });
110
+ }),
111
+ 'state/search': (async (ctx, input) => {
112
+ const i = input;
113
+ return ctx.search('stdoc', i.term, i.view ? { view: i.view } : undefined);
114
+ }),
115
+ 'state/search-trashed': (async (ctx, input) => ctx.searchTrashed('stdoc', input.term)),
116
+ 'state/history': (async (ctx, input) => readHistory({ sql: ctx.sql }, ref(input)).entries),
117
+ // The guard's subject: any statement, run through the module's own `ctx.sql`.
118
+ 'state/sql': (async (ctx, input) => {
119
+ const i = input;
120
+ // A write goes through `exec`, as module code would send it; a read through `query`.
121
+ if (!/^\s*select\b/i.test(i.sql))
122
+ return ctx.sql.exec(i.sql, i.params ?? []);
123
+ return ctx.sql.query(i.sql, i.params ?? []);
124
+ }),
125
+ /**
126
+ * The plan SQLite chooses for the walk `ctx.page` composes — the same `listQuery`, over the
127
+ * same plan, so the suite reads which index the real query uses rather than trusting that
128
+ * the partial index exists.
129
+ */
130
+ 'state/explain': (async (ctx, input) => {
131
+ const i = input;
132
+ const plan = listIndexPlans(stateModManifest.id, stateModManifest.lists, stateModManifest.entityStates).find((p) => p.entityType === (i.entityType ?? 'stdoc'));
133
+ const q = listQuery(plan, { limit: 10, view: i.view, filters: i.filters });
134
+ return ctx.sql
135
+ .query(`EXPLAIN QUERY PLAN ${q.sql}`, q.params)
136
+ .map((row) => row.detail);
137
+ }),
138
+ },
139
+ };
140
+ //# sourceMappingURL=entity-state-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-state-module.js","sourceRoot":"","sources":["../src/entity-state-module.ts"],"names":[],"mappings":"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"}