@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.
- package/dist/attachment-text-fixtures.d.ts +17 -0
- package/dist/attachment-text-fixtures.d.ts.map +1 -1
- package/dist/attachment-text-fixtures.js +344 -4
- package/dist/attachment-text-fixtures.js.map +1 -1
- package/dist/attachment-text-suite.d.ts +16 -1
- package/dist/attachment-text-suite.d.ts.map +1 -1
- package/dist/attachment-text-suite.js +212 -28
- package/dist/attachment-text-suite.js.map +1 -1
- package/dist/caused-by-module.d.ts +23 -0
- package/dist/caused-by-module.d.ts.map +1 -0
- package/dist/caused-by-module.js +56 -0
- package/dist/caused-by-module.js.map +1 -0
- package/dist/caused-by-suite.d.ts +28 -0
- package/dist/caused-by-suite.d.ts.map +1 -0
- package/dist/caused-by-suite.js +179 -0
- package/dist/caused-by-suite.js.map +1 -0
- package/dist/directory-restore-suite.d.ts.map +1 -1
- package/dist/directory-restore-suite.js +40 -0
- package/dist/directory-restore-suite.js.map +1 -1
- package/dist/entity-state-module.d.ts +134 -0
- package/dist/entity-state-module.d.ts.map +1 -0
- package/dist/entity-state-module.js +140 -0
- package/dist/entity-state-module.js.map +1 -0
- package/dist/entity-state-suite.d.ts +9 -0
- package/dist/entity-state-suite.d.ts.map +1 -0
- package/dist/entity-state-suite.js +534 -0
- package/dist/entity-state-suite.js.map +1 -0
- package/dist/findings-atomic-suite.d.ts +21 -0
- package/dist/findings-atomic-suite.d.ts.map +1 -0
- package/dist/findings-atomic-suite.js +131 -0
- package/dist/findings-atomic-suite.js.map +1 -0
- package/dist/findings-suite.d.ts +11 -0
- package/dist/findings-suite.d.ts.map +1 -0
- package/dist/findings-suite.js +391 -0
- package/dist/findings-suite.js.map +1 -0
- package/dist/impersonation-suite.d.ts.map +1 -1
- package/dist/impersonation-suite.js +56 -0
- package/dist/impersonation-suite.js.map +1 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/job-run-suite.d.ts.map +1 -1
- package/dist/job-run-suite.js +263 -1
- package/dist/job-run-suite.js.map +1 -1
- package/dist/membership-executor-suite.d.ts +19 -0
- package/dist/membership-executor-suite.d.ts.map +1 -0
- package/dist/membership-executor-suite.js +866 -0
- package/dist/membership-executor-suite.js.map +1 -0
- package/dist/membership-module.d.ts +17 -0
- package/dist/membership-module.d.ts.map +1 -0
- package/dist/membership-module.js +128 -0
- package/dist/membership-module.js.map +1 -0
- package/dist/modules.d.ts +217 -0
- package/dist/modules.d.ts.map +1 -1
- package/dist/modules.js +23 -0
- package/dist/modules.js.map +1 -1
- package/dist/peer-suite.d.ts +10 -1
- package/dist/peer-suite.d.ts.map +1 -1
- package/dist/peer-suite.js +98 -0
- package/dist/peer-suite.js.map +1 -1
- package/dist/permission-suite.d.ts.map +1 -1
- package/dist/permission-suite.js +82 -7
- package/dist/permission-suite.js.map +1 -1
- package/dist/scope-host-suite.d.ts.map +1 -1
- package/dist/scope-host-suite.js +190 -34
- package/dist/scope-host-suite.js.map +1 -1
- package/dist/vertical-events-suite.d.ts +14 -0
- package/dist/vertical-events-suite.d.ts.map +1 -1
- package/dist/vertical-events-suite.js +74 -1
- package/dist/vertical-events-suite.js.map +1 -1
- 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,
|
|
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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"}
|