@substrat-run/contract-tests 0.82.0 → 0.84.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/index.d.ts CHANGED
@@ -3,9 +3,10 @@ export type { ScopeHostFixture, ScopeHostSuiteOptions } from './scope-host-suite
3
3
  export { permissionContractSuite } from './permission-suite.js';
4
4
  export { atomicContractSuite } from './atomic-suite.js';
5
5
  export { searchContractSuite } from './search-suite.js';
6
+ export { listContractSuite } from './list-suite.js';
6
7
  export { scheduleContractSuite } from './schedule-suite.js';
7
8
  export { entityCheckConformanceSuite, planEntityCheckCoverage } from './entity-check-suite.js';
8
9
  export type { EntityCheckFixture, EntityCheckSuiteOptions, PlannedCheck } from './entity-check-suite.js';
9
- export { atomicMod, billedMod, brokenMod, connectorMod, contractTestBareOps, contractTestInitialModules, contractTestModules, permMod, scheduleMod, searchMod, searchModManifest, } from './modules.js';
10
+ export { atomicMod, billedMod, brokenMod, connectorMod, contractTestBareOps, contractTestInitialModules, contractTestModules, permMod, scheduleMod, searchMod, searchModManifest, listMod, listModManifest, } from './modules.js';
10
11
  export { connectorCalls, connectorTestFetch, resetConnectorCalls, type ConnectorCall, } from './connector-fixture.js';
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzG,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,SAAS,EACT,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzG,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -2,8 +2,9 @@ export { scopeHostContractSuite } from './scope-host-suite.js';
2
2
  export { permissionContractSuite } from './permission-suite.js';
3
3
  export { atomicContractSuite } from './atomic-suite.js';
4
4
  export { searchContractSuite } from './search-suite.js';
5
+ export { listContractSuite } from './list-suite.js';
5
6
  export { scheduleContractSuite } from './schedule-suite.js';
6
7
  export { entityCheckConformanceSuite, planEntityCheckCoverage } from './entity-check-suite.js';
7
- export { atomicMod, billedMod, brokenMod, connectorMod, contractTestBareOps, contractTestInitialModules, contractTestModules, permMod, scheduleMod, searchMod, searchModManifest, } from './modules.js';
8
+ export { atomicMod, billedMod, brokenMod, connectorMod, contractTestBareOps, contractTestInitialModules, contractTestModules, permMod, scheduleMod, searchMod, searchModManifest, listMod, listModManifest, } from './modules.js';
8
9
  export { connectorCalls, connectorTestFetch, resetConnectorCalls, } from './connector-fixture.js';
9
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,SAAS,EACT,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ScopeHostFixture } from './scope-host-suite.js';
2
+ export declare function listContractSuite(adapterName: string, makeFixture: () => Promise<ScopeHostFixture>): void;
3
+ //# sourceMappingURL=list-suite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-suite.d.ts","sourceRoot":"","sources":["../src/list-suite.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAO9D,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAC3C,IAAI,CAoLN"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Contract suite for `ctx.page` — the kernel-composed paged read (#811, K-18).
3
+ *
4
+ * What it pins: **a declaration is enough.** A module says which columns are
5
+ * sortable and filterable and gets a correct keyset walk in every scope, on every
6
+ * adapter, over indexes it never wrote — with the count matching the filter and
7
+ * the cursor never skipping or repeating a row.
8
+ *
9
+ * The assertions are behavioural rather than structural, and that is the point
10
+ * here more than anywhere: the failure this feature exists to prevent — a walk
11
+ * that drops rows tied on a non-unique sort column — produces SQL that reads
12
+ * perfectly. A string comparison against the emitted `WHERE` would have called
13
+ * the broken version a pass, which is the lesson the FK that shipped behind
14
+ * passing string assertions already taught once.
15
+ *
16
+ * So `status` in the fixture is deliberately non-unique, and the walks below run
17
+ * at page sizes that force ties to straddle a page boundary.
18
+ */
19
+ import { describe, it, expect, beforeAll, afterAll } from 'vitest';
20
+ import { permissionKey, platformActorId, principalId, scopeId, tenantId, } from '@substrat-run/contracts';
21
+ import { ulid } from '@substrat-run/kernel';
22
+ import { listMod } from './modules.js';
23
+ const PERM_USE = permissionKey.parse('list:use');
24
+ export function listContractSuite(adapterName, makeFixture) {
25
+ describe(`paged reads (ctx.page): ${adapterName}`, () => {
26
+ let fixture;
27
+ let host;
28
+ let stub;
29
+ const t1 = tenantId.parse(ulid());
30
+ const alice = principalId.parse(ulid());
31
+ const staff = platformActorId.parse(ulid());
32
+ const page = (params) => stub.invoke('list/page', params);
33
+ /** Walk the whole list one page at a time, following the cursor as a client would. */
34
+ const walkAll = async (params, limit) => {
35
+ const seen = [];
36
+ let cursor;
37
+ for (let guard = 0; guard < 50; guard++) {
38
+ const got = await page({ ...params, limit, cursor });
39
+ seen.push(...got.entries.map((r) => String(r['id'])));
40
+ if (got.nextCursor === null)
41
+ return seen;
42
+ cursor = got.nextCursor;
43
+ }
44
+ throw new Error('walk did not terminate — the cursor is not advancing');
45
+ };
46
+ beforeAll(async () => {
47
+ fixture = await makeFixture();
48
+ host = fixture.host;
49
+ host.registerModule(listMod);
50
+ await host.admin.createTenant(staff, { id: t1, slug: 'list-tenant', name: 'List Tenant' });
51
+ await host.admin.grantEntitlement(staff, t1, 'list');
52
+ await host.admin.defineRole(staff, t1, {
53
+ key: 'list-admin',
54
+ permissions: [PERM_USE],
55
+ source: 'vertical',
56
+ });
57
+ await host.admin.assignRole(staff, {
58
+ principalId: alice,
59
+ roleKey: 'list-admin',
60
+ node: { tenantId: t1, scopeId: null },
61
+ });
62
+ const source = scopeId.parse(ulid());
63
+ await host.provisionScope(staff, { tenantId: t1, scopeId: source, vertical: 'list-vertical' });
64
+ await host.admin.activateScope(staff, t1, source);
65
+ stub = await host.getScope(alice, t1, source);
66
+ // Six rows, four `open`. Ids ascend with numbers so a walk by id and a walk
67
+ // by number agree — which makes a DISAGREEMENT in the status walk meaningful.
68
+ const rows = [
69
+ { id: '01A', number: '1001', status: 'open', kind: 'repair' },
70
+ { id: '01B', number: '1002', status: 'open', kind: 'repair' },
71
+ { id: '01C', number: '1003', status: 'open', kind: 'service' },
72
+ { id: '01D', number: '1004', status: 'closed', kind: 'repair' },
73
+ { id: '01E', number: '1005', status: 'open', kind: 'service' },
74
+ { id: '01F', number: '1006', status: 'closed', kind: 'service' },
75
+ ];
76
+ for (const r of rows)
77
+ await stub.invoke('list/add', r);
78
+ });
79
+ afterAll(async () => {
80
+ await fixture.cleanup();
81
+ });
82
+ it('defaults to the first declared sort, ascending', async () => {
83
+ const got = await page({ limit: 50 });
84
+ expect(got.entries.map((r) => r['number'])).toEqual([
85
+ '1001',
86
+ '1002',
87
+ '1003',
88
+ '1004',
89
+ '1005',
90
+ '1006',
91
+ ]);
92
+ });
93
+ it('ends the walk with a null cursor on a short page', async () => {
94
+ const got = await page({ limit: 50 });
95
+ expect(got.nextCursor).toBeNull();
96
+ });
97
+ it('hands back a cursor when the page comes back full', async () => {
98
+ const got = await page({ limit: 2 });
99
+ expect(got.entries).toHaveLength(2);
100
+ expect(got.nextCursor).not.toBeNull();
101
+ });
102
+ /**
103
+ * The case the tie-break exists for. `status` has four `open` rows, so a walk
104
+ * in pages of two puts a tie across every boundary; a keyset over the column
105
+ * alone would emit `status > 'open'` and lose the rest of its own ties.
106
+ */
107
+ it('walks a NON-UNIQUE sort column without skipping or repeating a row', async () => {
108
+ const seen = await walkAll({ sort: 'status' }, 2);
109
+ expect(seen).toHaveLength(6);
110
+ expect(new Set(seen).size).toBe(6);
111
+ });
112
+ it('walks a non-unique column identically at every page size', async () => {
113
+ const byOne = await walkAll({ sort: 'status' }, 1);
114
+ const byFour = await walkAll({ sort: 'status' }, 4);
115
+ const whole = await walkAll({ sort: 'status' }, 50);
116
+ expect(byOne).toEqual(whole);
117
+ expect(byFour).toEqual(whole);
118
+ });
119
+ it('walks descending without skipping or repeating a row', async () => {
120
+ const seen = await walkAll({ sort: 'status', order: 'desc' }, 2);
121
+ expect(seen).toHaveLength(6);
122
+ expect(new Set(seen).size).toBe(6);
123
+ expect(seen).toEqual([...(await walkAll({ sort: 'status' }, 50))].reverse());
124
+ });
125
+ it('filters by a declared column, and the filter survives the whole walk', async () => {
126
+ const seen = await walkAll({ filters: { status: 'open' } }, 2);
127
+ expect(seen).toEqual(['01A', '01B', '01C', '01E']);
128
+ });
129
+ it('applies two filters together', async () => {
130
+ const got = await page({ limit: 50, filters: { status: 'open', kind: 'service' } });
131
+ expect(got.entries.map((r) => r['id'])).toEqual(['01C', '01E']);
132
+ });
133
+ it('ignores an undefined filter rather than matching NULL', async () => {
134
+ const got = await page({ limit: 50, filters: { status: undefined } });
135
+ expect(got.entries).toHaveLength(6);
136
+ });
137
+ it('counts the FILTERED set, not the table', async () => {
138
+ const got = (await page({ limit: 2, filters: { status: 'open' }, total: true }));
139
+ expect(got.total).toBe(4);
140
+ expect(got.entries).toHaveLength(2);
141
+ });
142
+ /**
143
+ * A total describes the set the filter selects, and a cursor selects a PAGE of
144
+ * it. Narrowing the count by the cursor would make `1–20 of 340` count down as
145
+ * the user walks, which is the kind of wrong nobody notices until a customer does.
146
+ */
147
+ it('does not narrow the total as the walk advances', async () => {
148
+ const first = (await page({ limit: 2, filters: { status: 'open' }, total: true }));
149
+ const second = (await page({
150
+ limit: 2,
151
+ filters: { status: 'open' },
152
+ total: true,
153
+ cursor: first.nextCursor,
154
+ }));
155
+ expect(second.total).toBe(4);
156
+ });
157
+ it('omits the total unless it was asked for', async () => {
158
+ const got = await page({ limit: 2 });
159
+ expect('total' in got).toBe(false);
160
+ });
161
+ it('refuses a sort the declaration does not offer', async () => {
162
+ await expect(page({ limit: 2, sort: 'kind' })).rejects.toThrow(/not a declared sort/);
163
+ });
164
+ it('refuses a filter the declaration does not offer', async () => {
165
+ await expect(page({ limit: 2, filters: { number: '1001' } })).rejects.toThrow(/not a declared filter/);
166
+ });
167
+ it('refuses an entity type no module declared listable', async () => {
168
+ await expect(stub.invoke('list/page-of', { entityType: 'nothing', limit: 2 })).rejects.toThrow(/declares no paged list/);
169
+ });
170
+ it('sees a row written in the same transaction', async () => {
171
+ const got = (await stub.invoke('list/add-then-page', {
172
+ id: '01Z',
173
+ number: '1099',
174
+ status: 'open',
175
+ kind: 'repair',
176
+ }));
177
+ expect(got.entries.map((r) => r['id'])).toContain('01Z');
178
+ });
179
+ });
180
+ }
181
+ //# sourceMappingURL=list-suite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-suite.js","sourceRoot":"","sources":["../src/list-suite.ts"],"names":[],"mappings":"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"}
package/dist/modules.d.ts CHANGED
@@ -67,6 +67,13 @@ export declare const testModManifest: {
67
67
  idColumn?: string | undefined;
68
68
  tokenizer?: "prefix" | "substring" | undefined;
69
69
  }[] | undefined;
70
+ lists?: {
71
+ entityType: string;
72
+ sortable: string[];
73
+ filterable?: string[] | undefined;
74
+ table?: string | undefined;
75
+ idColumn?: string | undefined;
76
+ }[] | undefined;
70
77
  ui?: {
71
78
  routes?: {
72
79
  path: string;
@@ -163,6 +170,13 @@ export declare const scheduleModManifest: {
163
170
  idColumn?: string | undefined;
164
171
  tokenizer?: "prefix" | "substring" | undefined;
165
172
  }[] | undefined;
173
+ lists?: {
174
+ entityType: string;
175
+ sortable: string[];
176
+ filterable?: string[] | undefined;
177
+ table?: string | undefined;
178
+ idColumn?: string | undefined;
179
+ }[] | undefined;
166
180
  ui?: {
167
181
  routes?: {
168
182
  path: string;
@@ -259,6 +273,13 @@ export declare const flowModManifest: {
259
273
  idColumn?: string | undefined;
260
274
  tokenizer?: "prefix" | "substring" | undefined;
261
275
  }[] | undefined;
276
+ lists?: {
277
+ entityType: string;
278
+ sortable: string[];
279
+ filterable?: string[] | undefined;
280
+ table?: string | undefined;
281
+ idColumn?: string | undefined;
282
+ }[] | undefined;
262
283
  ui?: {
263
284
  routes?: {
264
285
  path: string;
@@ -355,6 +376,13 @@ export declare const atomicModManifest: {
355
376
  idColumn?: string | undefined;
356
377
  tokenizer?: "prefix" | "substring" | undefined;
357
378
  }[] | undefined;
379
+ lists?: {
380
+ entityType: string;
381
+ sortable: string[];
382
+ filterable?: string[] | undefined;
383
+ table?: string | undefined;
384
+ idColumn?: string | undefined;
385
+ }[] | undefined;
358
386
  ui?: {
359
387
  routes?: {
360
388
  path: string;
@@ -451,6 +479,13 @@ export declare const lateModManifest: {
451
479
  idColumn?: string | undefined;
452
480
  tokenizer?: "prefix" | "substring" | undefined;
453
481
  }[] | undefined;
482
+ lists?: {
483
+ entityType: string;
484
+ sortable: string[];
485
+ filterable?: string[] | undefined;
486
+ table?: string | undefined;
487
+ idColumn?: string | undefined;
488
+ }[] | undefined;
454
489
  ui?: {
455
490
  routes?: {
456
491
  path: string;
@@ -547,6 +582,13 @@ export declare const billedModManifest: {
547
582
  idColumn?: string | undefined;
548
583
  tokenizer?: "prefix" | "substring" | undefined;
549
584
  }[] | undefined;
585
+ lists?: {
586
+ entityType: string;
587
+ sortable: string[];
588
+ filterable?: string[] | undefined;
589
+ table?: string | undefined;
590
+ idColumn?: string | undefined;
591
+ }[] | undefined;
550
592
  ui?: {
551
593
  routes?: {
552
594
  path: string;
@@ -643,6 +685,13 @@ export declare const guardedModManifest: {
643
685
  idColumn?: string | undefined;
644
686
  tokenizer?: "prefix" | "substring" | undefined;
645
687
  }[] | undefined;
688
+ lists?: {
689
+ entityType: string;
690
+ sortable: string[];
691
+ filterable?: string[] | undefined;
692
+ table?: string | undefined;
693
+ idColumn?: string | undefined;
694
+ }[] | undefined;
646
695
  ui?: {
647
696
  routes?: {
648
697
  path: string;
@@ -739,6 +788,13 @@ export declare const withdrawEarlyManifest: {
739
788
  idColumn?: string | undefined;
740
789
  tokenizer?: "prefix" | "substring" | undefined;
741
790
  }[] | undefined;
791
+ lists?: {
792
+ entityType: string;
793
+ sortable: string[];
794
+ filterable?: string[] | undefined;
795
+ table?: string | undefined;
796
+ idColumn?: string | undefined;
797
+ }[] | undefined;
742
798
  ui?: {
743
799
  routes?: {
744
800
  path: string;
@@ -835,6 +891,13 @@ export declare const victimModManifest: {
835
891
  idColumn?: string | undefined;
836
892
  tokenizer?: "prefix" | "substring" | undefined;
837
893
  }[] | undefined;
894
+ lists?: {
895
+ entityType: string;
896
+ sortable: string[];
897
+ filterable?: string[] | undefined;
898
+ table?: string | undefined;
899
+ idColumn?: string | undefined;
900
+ }[] | undefined;
838
901
  ui?: {
839
902
  routes?: {
840
903
  path: string;
@@ -931,6 +994,13 @@ export declare const withdrawLateManifest: {
931
994
  idColumn?: string | undefined;
932
995
  tokenizer?: "prefix" | "substring" | undefined;
933
996
  }[] | undefined;
997
+ lists?: {
998
+ entityType: string;
999
+ sortable: string[];
1000
+ filterable?: string[] | undefined;
1001
+ table?: string | undefined;
1002
+ idColumn?: string | undefined;
1003
+ }[] | undefined;
934
1004
  ui?: {
935
1005
  routes?: {
936
1006
  path: string;
@@ -1027,6 +1097,13 @@ export declare const gateModManifest: {
1027
1097
  idColumn?: string | undefined;
1028
1098
  tokenizer?: "prefix" | "substring" | undefined;
1029
1099
  }[] | undefined;
1100
+ lists?: {
1101
+ entityType: string;
1102
+ sortable: string[];
1103
+ filterable?: string[] | undefined;
1104
+ table?: string | undefined;
1105
+ idColumn?: string | undefined;
1106
+ }[] | undefined;
1030
1107
  ui?: {
1031
1108
  routes?: {
1032
1109
  path: string;
@@ -1123,6 +1200,13 @@ export declare const permModManifest: {
1123
1200
  idColumn?: string | undefined;
1124
1201
  tokenizer?: "prefix" | "substring" | undefined;
1125
1202
  }[] | undefined;
1203
+ lists?: {
1204
+ entityType: string;
1205
+ sortable: string[];
1206
+ filterable?: string[] | undefined;
1207
+ table?: string | undefined;
1208
+ idColumn?: string | undefined;
1209
+ }[] | undefined;
1126
1210
  ui?: {
1127
1211
  routes?: {
1128
1212
  path: string;
@@ -1232,6 +1316,13 @@ export declare const connectorModManifest: {
1232
1316
  idColumn?: string | undefined;
1233
1317
  tokenizer?: "prefix" | "substring" | undefined;
1234
1318
  }[] | undefined;
1319
+ lists?: {
1320
+ entityType: string;
1321
+ sortable: string[];
1322
+ filterable?: string[] | undefined;
1323
+ table?: string | undefined;
1324
+ idColumn?: string | undefined;
1325
+ }[] | undefined;
1235
1326
  ui?: {
1236
1327
  routes?: {
1237
1328
  path: string;
@@ -1291,6 +1382,110 @@ export declare const contractTestInitialModules: ModuleRegistration[];
1291
1382
  * there — written out longhand here rather than pulling the registry into a
1292
1383
  * fixture, which is the one place the enrichment is worth restating.
1293
1384
  */
1385
+ export declare const listModManifest: {
1386
+ id: string & import("zod").$brand<"ModuleId">;
1387
+ version: string;
1388
+ kernelContract: string;
1389
+ permissions: {
1390
+ key: string & import("zod").$brand<"PermissionKey">;
1391
+ description: string;
1392
+ }[];
1393
+ events: {
1394
+ emits: {
1395
+ type: string;
1396
+ schemaVersion: number;
1397
+ }[];
1398
+ consumes: {
1399
+ type: string;
1400
+ schemaVersion: number;
1401
+ }[];
1402
+ };
1403
+ migrations: {
1404
+ journalDir: string;
1405
+ compatibleFrom: string;
1406
+ };
1407
+ attachmentTargets: {
1408
+ entityType: string;
1409
+ readPermission: string & import("zod").$brand<"PermissionKey">;
1410
+ writePermission?: (string & import("zod").$brand<"PermissionKey">) | undefined;
1411
+ }[];
1412
+ entityRelations?: {
1413
+ entityType: string;
1414
+ parentType: string;
1415
+ }[] | undefined;
1416
+ guards?: {
1417
+ before: string;
1418
+ predicate: string;
1419
+ config: Record<string, unknown>;
1420
+ }[] | undefined;
1421
+ schedules?: {
1422
+ operation: string;
1423
+ cadence: {
1424
+ everyMinutes: number;
1425
+ };
1426
+ input?: Record<string, unknown> | undefined;
1427
+ permissions: (string & import("zod").$brand<"PermissionKey">)[];
1428
+ }[] | undefined;
1429
+ withdraws?: string[] | undefined;
1430
+ entitlementKey: string;
1431
+ envSpec?: {
1432
+ key: string;
1433
+ label?: string | undefined;
1434
+ description: string;
1435
+ placeholder?: string | undefined;
1436
+ required: boolean;
1437
+ secret: boolean;
1438
+ default?: string | undefined;
1439
+ group?: string | undefined;
1440
+ }[] | undefined;
1441
+ ownerGrants?: (string & import("zod").$brand<"PermissionKey">)[] | undefined;
1442
+ entitlements?: string[] | undefined;
1443
+ provides?: string[] | undefined;
1444
+ requires?: string[] | undefined;
1445
+ api?: string | undefined;
1446
+ searchables?: {
1447
+ entityType: string;
1448
+ fields: string[];
1449
+ table?: string | undefined;
1450
+ idColumn?: string | undefined;
1451
+ tokenizer?: "prefix" | "substring" | undefined;
1452
+ }[] | undefined;
1453
+ lists?: {
1454
+ entityType: string;
1455
+ sortable: string[];
1456
+ filterable?: string[] | undefined;
1457
+ table?: string | undefined;
1458
+ idColumn?: string | undefined;
1459
+ }[] | undefined;
1460
+ ui?: {
1461
+ routes?: {
1462
+ path: string;
1463
+ screen: string;
1464
+ permission: string & import("zod").$brand<"PermissionKey">;
1465
+ }[] | undefined;
1466
+ nav?: {
1467
+ label: string;
1468
+ icon?: string | undefined;
1469
+ to: string;
1470
+ permission: string & import("zod").$brand<"PermissionKey">;
1471
+ }[] | undefined;
1472
+ entityViews?: {
1473
+ entityType: string;
1474
+ view: string;
1475
+ }[] | undefined;
1476
+ widgets?: {
1477
+ slot: string;
1478
+ component: string;
1479
+ permission: string & import("zod").$brand<"PermissionKey">;
1480
+ }[] | undefined;
1481
+ settingsPanels?: {
1482
+ label: string;
1483
+ component: string;
1484
+ permission: string & import("zod").$brand<"PermissionKey">;
1485
+ }[] | undefined;
1486
+ } | undefined;
1487
+ };
1488
+ export declare const listMod: ModuleRegistration;
1294
1489
  export declare const searchModManifest: {
1295
1490
  id: string & import("zod").$brand<"ModuleId">;
1296
1491
  version: string;
@@ -1359,6 +1554,13 @@ export declare const searchModManifest: {
1359
1554
  idColumn?: string | undefined;
1360
1555
  tokenizer?: "prefix" | "substring" | undefined;
1361
1556
  }[] | undefined;
1557
+ lists?: {
1558
+ entityType: string;
1559
+ sortable: string[];
1560
+ filterable?: string[] | undefined;
1561
+ table?: string | undefined;
1562
+ idColumn?: string | undefined;
1563
+ }[] | undefined;
1362
1564
  ui?: {
1363
1565
  routes?: {
1364
1566
  path: string;
@@ -1457,6 +1659,13 @@ export declare const brokenModManifest: {
1457
1659
  idColumn?: string | undefined;
1458
1660
  tokenizer?: "prefix" | "substring" | undefined;
1459
1661
  }[] | undefined;
1662
+ lists?: {
1663
+ entityType: string;
1664
+ sortable: string[];
1665
+ filterable?: string[] | undefined;
1666
+ table?: string | undefined;
1667
+ idColumn?: string | undefined;
1668
+ }[] | undefined;
1460
1669
  ui?: {
1461
1670
  routes?: {
1462
1671
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"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"}