@ontrails/core 1.0.0-beta.12 → 1.0.0-beta.14
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/.turbo/turbo-lint.log +1 -1
- package/CHANGELOG.md +65 -35
- package/README.md +21 -20
- package/dist/context.d.ts +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +5 -4
- package/dist/context.js.map +1 -1
- package/dist/derive.d.ts +14 -3
- package/dist/derive.d.ts.map +1 -1
- package/dist/derive.js +36 -12
- package/dist/derive.js.map +1 -1
- package/dist/draft.d.ts +28 -0
- package/dist/draft.d.ts.map +1 -0
- package/dist/draft.js +156 -0
- package/dist/draft.js.map +1 -0
- package/dist/event.d.ts +4 -41
- package/dist/event.d.ts.map +1 -1
- package/dist/event.js +4 -14
- package/dist/event.js.map +1 -1
- package/dist/execute.d.ts +10 -10
- package/dist/execute.d.ts.map +1 -1
- package/dist/execute.js +35 -28
- package/dist/execute.js.map +1 -1
- package/dist/gate.d.ts +17 -0
- package/dist/gate.d.ts.map +1 -0
- package/dist/gate.js +21 -0
- package/dist/gate.js.map +1 -0
- package/dist/index.d.ts +16 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -9
- package/dist/index.js.map +1 -1
- package/dist/internal/topo-saves.d.ts +47 -0
- package/dist/internal/topo-saves.d.ts.map +1 -0
- package/dist/internal/topo-saves.js +310 -0
- package/dist/internal/topo-saves.js.map +1 -0
- package/dist/internal/topo-store-read.d.ts +67 -0
- package/dist/internal/topo-store-read.d.ts.map +1 -0
- package/dist/internal/topo-store-read.js +222 -0
- package/dist/internal/topo-store-read.js.map +1 -0
- package/dist/internal/topo-store.d.ts +12 -0
- package/dist/internal/topo-store.d.ts.map +1 -0
- package/dist/internal/topo-store.js +571 -0
- package/dist/internal/topo-store.js.map +1 -0
- package/dist/internal/trails-db.d.ts +16 -0
- package/dist/internal/trails-db.d.ts.map +1 -0
- package/dist/internal/trails-db.js +118 -0
- package/dist/internal/trails-db.js.map +1 -0
- package/dist/layer.d.ts +5 -16
- package/dist/layer.d.ts.map +1 -1
- package/dist/layer.js +3 -20
- package/dist/layer.js.map +1 -1
- package/dist/provision-config.d.ts +22 -0
- package/dist/provision-config.d.ts.map +1 -0
- package/dist/provision-config.js +210 -0
- package/dist/provision-config.js.map +1 -0
- package/dist/provision.d.ts +71 -0
- package/dist/provision.d.ts.map +1 -0
- package/dist/provision.js +56 -0
- package/dist/provision.js.map +1 -0
- package/dist/run.d.ts +27 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +34 -0
- package/dist/run.js.map +1 -0
- package/dist/service-config.d.ts +7 -7
- package/dist/service-config.d.ts.map +1 -1
- package/dist/service-config.js +75 -73
- package/dist/service-config.js.map +1 -1
- package/dist/service.d.ts +32 -36
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +21 -21
- package/dist/service.js.map +1 -1
- package/dist/signal.d.ts +33 -0
- package/dist/signal.d.ts.map +1 -0
- package/dist/signal.js +17 -0
- package/dist/signal.js.map +1 -0
- package/dist/topo-store.d.ts +48 -0
- package/dist/topo-store.d.ts.map +1 -0
- package/dist/topo-store.js +175 -0
- package/dist/topo-store.js.map +1 -0
- package/dist/topo.d.ts +10 -10
- package/dist/topo.d.ts.map +1 -1
- package/dist/topo.js +48 -35
- package/dist/topo.js.map +1 -1
- package/dist/trail.d.ts +16 -16
- package/dist/trail.d.ts.map +1 -1
- package/dist/trail.js +5 -4
- package/dist/trail.js.map +1 -1
- package/dist/types.d.ts +10 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/dist/validate-established-topo.d.ts +76 -0
- package/dist/validate-established-topo.d.ts.map +1 -0
- package/dist/validate-established-topo.js +43 -0
- package/dist/validate-established-topo.js.map +1 -0
- package/dist/validate-topo.d.ts +2 -2
- package/dist/validate-topo.d.ts.map +1 -1
- package/dist/validate-topo.js +34 -32
- package/dist/validate-topo.js.map +1 -1
- package/package.json +4 -1
- package/src/__tests__/context.test.ts +8 -8
- package/src/__tests__/derive.test.ts +58 -1
- package/src/__tests__/execute.test.ts +124 -122
- package/src/__tests__/{layer.test.ts → gate.test.ts} +26 -26
- package/src/__tests__/{dispatch.test.ts → run.test.ts} +39 -39
- package/src/__tests__/service-config.test.ts +41 -37
- package/src/__tests__/service.test.ts +71 -71
- package/src/__tests__/{event.test.ts → signal.test.ts} +15 -15
- package/src/__tests__/topo-store-read.test.ts +251 -0
- package/src/__tests__/topo-store.test.ts +469 -0
- package/src/__tests__/topo.test.ts +54 -54
- package/src/__tests__/trail-permit.test.ts +4 -4
- package/src/__tests__/trail.test.ts +58 -58
- package/src/__tests__/trails-db.test.ts +191 -0
- package/src/__tests__/type-utils.test.ts +3 -3
- package/src/__tests__/validate-topo.test.ts +205 -38
- package/src/context.ts +5 -4
- package/src/derive.ts +47 -16
- package/src/draft.ts +334 -0
- package/src/event.ts +11 -73
- package/src/execute.ts +56 -40
- package/src/{layer.ts → gate.ts} +13 -13
- package/src/index.ts +54 -23
- package/src/internal/topo-saves.ts +429 -0
- package/src/internal/topo-store-read.ts +473 -0
- package/src/internal/topo-store.ts +1087 -0
- package/src/internal/trails-db.ts +189 -0
- package/src/{service-config.ts → provision-config.ts} +124 -105
- package/src/provision.ts +148 -0
- package/src/{dispatch.ts → run.ts} +8 -8
- package/src/signal.ts +65 -0
- package/src/topo-store.ts +301 -0
- package/src/topo.ts +74 -52
- package/src/trail.ts +23 -22
- package/src/types.ts +11 -11
- package/src/validate-established-topo.ts +63 -0
- package/src/validate-topo.ts +38 -34
- package/tsconfig.tsbuildinfo +1 -1
- package/src/service.ts +0 -145
package/dist/signal.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signal — a named payload schema with optional provenance meta.
|
|
3
|
+
*/
|
|
4
|
+
export function signal(idOrSpec, maybeSpec) {
|
|
5
|
+
const resolvedId = typeof idOrSpec === 'string' ? idOrSpec : idOrSpec.id;
|
|
6
|
+
// oxlint-disable-next-line no-non-null-assertion -- overload guarantees maybeSpec when idOrSpec is string
|
|
7
|
+
const resolvedSpec = typeof idOrSpec === 'string' ? maybeSpec : idOrSpec;
|
|
8
|
+
return Object.freeze({
|
|
9
|
+
description: resolvedSpec.description,
|
|
10
|
+
from: resolvedSpec.from ? Object.freeze([...resolvedSpec.from]) : undefined,
|
|
11
|
+
id: resolvedId,
|
|
12
|
+
kind: 'signal',
|
|
13
|
+
meta: resolvedSpec.meta,
|
|
14
|
+
payload: resolvedSpec.payload,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=signal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal.js","sourceRoot":"","sources":["../src/signal.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4CH,MAAM,UAAU,MAAM,CACpB,QAA4D,EAC5D,SAAyB;IAEzB,MAAM,UAAU,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzE,0GAA0G;IAC1G,MAAM,YAAY,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1E,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3E,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,QAAiB;QACvB,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,OAAO,EAAE,YAAY,CAAC,OAAO;KAC9B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { SQLQueryBindings } from 'bun:sqlite';
|
|
2
|
+
import type { TopoPinRecord, TopoSaveRecord } from './internal/topo-saves.js';
|
|
3
|
+
import type { TopoStoreExportRecord, TopoStoreProvisionRecord, TopoStoreRef, TopoStoreTrailDetailRecord, TopoStoreTrailRecord } from './internal/topo-store-read.js';
|
|
4
|
+
import type { TrailsDbLocationOptions } from './internal/trails-db.js';
|
|
5
|
+
export type { TopoStoreExportRecord, TopoStoreProvisionRecord, TopoStoreRef, TopoStoreTrailDetailRecord, TopoStoreTrailRecord, } from './internal/topo-store-read.js';
|
|
6
|
+
export interface ReadOnlyTopoStore {
|
|
7
|
+
readonly exports: {
|
|
8
|
+
get(ref?: TopoStoreRef): TopoStoreExportRecord | undefined;
|
|
9
|
+
};
|
|
10
|
+
readonly pins: {
|
|
11
|
+
get(name: string): TopoPinRecord | undefined;
|
|
12
|
+
list(): readonly TopoPinRecord[];
|
|
13
|
+
};
|
|
14
|
+
query<TRow extends Record<string, unknown>>(sql: string, bindings?: readonly SQLQueryBindings[]): readonly TRow[];
|
|
15
|
+
readonly provisions: {
|
|
16
|
+
get(id: string, options?: {
|
|
17
|
+
readonly save?: TopoStoreRef;
|
|
18
|
+
}): TopoStoreProvisionRecord | undefined;
|
|
19
|
+
list(options?: {
|
|
20
|
+
readonly save?: TopoStoreRef;
|
|
21
|
+
}): readonly TopoStoreProvisionRecord[];
|
|
22
|
+
};
|
|
23
|
+
readonly saves: {
|
|
24
|
+
get(ref?: TopoStoreRef): TopoSaveRecord | undefined;
|
|
25
|
+
latest(): TopoSaveRecord | undefined;
|
|
26
|
+
list(): readonly TopoSaveRecord[];
|
|
27
|
+
};
|
|
28
|
+
readonly trails: {
|
|
29
|
+
get(id: string, options?: {
|
|
30
|
+
readonly save?: TopoStoreRef;
|
|
31
|
+
}): TopoStoreTrailDetailRecord | undefined;
|
|
32
|
+
list(options?: {
|
|
33
|
+
readonly intent?: TopoStoreTrailRecord['intent'];
|
|
34
|
+
readonly save?: TopoStoreRef;
|
|
35
|
+
}): readonly TopoStoreTrailRecord[];
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export interface MockTopoStoreSeed {
|
|
39
|
+
readonly exports?: readonly TopoStoreExportRecord[];
|
|
40
|
+
readonly pins?: readonly TopoPinRecord[];
|
|
41
|
+
readonly provisions?: readonly TopoStoreProvisionRecord[];
|
|
42
|
+
readonly saves?: readonly TopoSaveRecord[];
|
|
43
|
+
readonly trails?: readonly TopoStoreTrailDetailRecord[];
|
|
44
|
+
}
|
|
45
|
+
export declare const createMockTopoStore: (seed?: MockTopoStoreSeed) => ReadOnlyTopoStore;
|
|
46
|
+
export declare const createTopoStore: (options?: TrailsDbLocationOptions) => ReadOnlyTopoStore;
|
|
47
|
+
export declare const topoStore: import("./provision.js").Provision<ReadOnlyTopoStore>;
|
|
48
|
+
//# sourceMappingURL=topo-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topo-store.d.ts","sourceRoot":"","sources":["../src/topo-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMnD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,KAAK,EACV,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AAavC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,YAAY,EACV,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE;QAChB,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,qBAAqB,GAAG,SAAS,CAAC;KAC5D,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE;QACb,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;QAC7C,IAAI,IAAI,SAAS,aAAa,EAAE,CAAC;KAClC,CAAC;IACF,KAAK,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,SAAS,gBAAgB,EAAE,GACrC,SAAS,IAAI,EAAE,CAAC;IACnB,QAAQ,CAAC,UAAU,EAAE;QACnB,GAAG,CACD,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAA;SAAE,GACzC,wBAAwB,GAAG,SAAS,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,EAAE;YACb,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;SAC9B,GAAG,SAAS,wBAAwB,EAAE,CAAC;KACzC,CAAC;IACF,QAAQ,CAAC,KAAK,EAAE;QACd,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;QACpD,MAAM,IAAI,cAAc,GAAG,SAAS,CAAC;QACrC,IAAI,IAAI,SAAS,cAAc,EAAE,CAAC;KACnC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,GAAG,CACD,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAA;SAAE,GACzC,0BAA0B,GAAG,SAAS,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,EAAE;YACb,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;SAC9B,GAAG,SAAS,oBAAoB,EAAE,CAAC;KACrC,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;CACzD;AAqED,eAAO,MAAM,mBAAmB,GAC9B,OAAO,iBAAiB,KACvB,iBA0EF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,uBAAuB,KAChC,iBA2DD,CAAC;AAEH,eAAO,MAAM,SAAS,uDASpB,CAAC"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { NotFoundError } from './errors.js';
|
|
3
|
+
import { provision } from './provision.js';
|
|
4
|
+
import { Result } from './result.js';
|
|
5
|
+
import { getTopoPin } from './internal/topo-saves.js';
|
|
6
|
+
import { getTopoStoreExport, getTopoStoreProvision, getTopoStoreTrail, listTopoStorePins, listTopoStoreProvisions, listTopoStoreSaves, listTopoStoreTrails, queryTopoStore, resolveTopoStoreSave, } from './internal/topo-store-read.js';
|
|
7
|
+
import { openReadTrailsDb, resolveTrailsDbPath } from './internal/trails-db.js';
|
|
8
|
+
const missingStoreMessage = 'No saved topo state found. Populate trails.db first or run a topo-backed surface.';
|
|
9
|
+
const resolveStoreRootDir = (options) => options?.rootDir ?? process.cwd();
|
|
10
|
+
const requireReadDb = (options) => {
|
|
11
|
+
const dbPath = resolveTrailsDbPath(options);
|
|
12
|
+
if (!existsSync(dbPath)) {
|
|
13
|
+
throw new NotFoundError(missingStoreMessage);
|
|
14
|
+
}
|
|
15
|
+
return openReadTrailsDb(options);
|
|
16
|
+
};
|
|
17
|
+
const requireSavedTopoState = (db) => {
|
|
18
|
+
if (resolveTopoStoreSave(db) === undefined) {
|
|
19
|
+
throw new NotFoundError(missingStoreMessage);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const withStoredTopoState = (options, run) => {
|
|
23
|
+
const db = requireReadDb(options);
|
|
24
|
+
try {
|
|
25
|
+
requireSavedTopoState(db);
|
|
26
|
+
return run(db);
|
|
27
|
+
}
|
|
28
|
+
finally {
|
|
29
|
+
db.close();
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const createSeedResolver = (seed) => {
|
|
33
|
+
const saves = [...(seed?.saves ?? [])];
|
|
34
|
+
const pins = [...(seed?.pins ?? [])];
|
|
35
|
+
const trails = [...(seed?.trails ?? [])];
|
|
36
|
+
const provisions = [...(seed?.provisions ?? [])];
|
|
37
|
+
const exports = [...(seed?.exports ?? [])];
|
|
38
|
+
const resolveSave = (ref) => {
|
|
39
|
+
if (ref?.saveId !== undefined) {
|
|
40
|
+
return saves.find((save) => save.id === ref.saveId);
|
|
41
|
+
}
|
|
42
|
+
if (ref?.pin !== undefined) {
|
|
43
|
+
const pin = pins.find((candidate) => candidate.name === ref.pin);
|
|
44
|
+
return pin === undefined
|
|
45
|
+
? undefined
|
|
46
|
+
: saves.find((save) => save.id === pin.saveId);
|
|
47
|
+
}
|
|
48
|
+
return saves[0];
|
|
49
|
+
};
|
|
50
|
+
return {
|
|
51
|
+
exports,
|
|
52
|
+
pins,
|
|
53
|
+
provisions,
|
|
54
|
+
resolveSave,
|
|
55
|
+
saves,
|
|
56
|
+
trails,
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
export const createMockTopoStore = (seed) => {
|
|
60
|
+
const resolved = createSeedResolver(seed);
|
|
61
|
+
return {
|
|
62
|
+
exports: {
|
|
63
|
+
get(ref) {
|
|
64
|
+
const save = resolved.resolveSave(ref);
|
|
65
|
+
return save === undefined
|
|
66
|
+
? undefined
|
|
67
|
+
: resolved.exports.find((entry) => entry.save.id === save.id);
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
pins: {
|
|
71
|
+
get(name) {
|
|
72
|
+
return resolved.pins.find((pin) => pin.name === name);
|
|
73
|
+
},
|
|
74
|
+
list() {
|
|
75
|
+
return resolved.pins;
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
provisions: {
|
|
79
|
+
get(id, options) {
|
|
80
|
+
const save = resolved.resolveSave(options?.save);
|
|
81
|
+
return resolved.provisions.find((item) => item.id === id && (save === undefined || item.saveId === save.id));
|
|
82
|
+
},
|
|
83
|
+
list(options) {
|
|
84
|
+
const save = resolved.resolveSave(options?.save);
|
|
85
|
+
return save === undefined
|
|
86
|
+
? []
|
|
87
|
+
: resolved.provisions.filter((item) => item.saveId === save.id);
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
query() {
|
|
91
|
+
throw new NotFoundError('Mock topoStore.query() is unsupported. Seed typed accessors instead.');
|
|
92
|
+
},
|
|
93
|
+
saves: {
|
|
94
|
+
get(ref) {
|
|
95
|
+
return resolved.resolveSave(ref);
|
|
96
|
+
},
|
|
97
|
+
latest() {
|
|
98
|
+
return resolved.saves[0];
|
|
99
|
+
},
|
|
100
|
+
list() {
|
|
101
|
+
return resolved.saves;
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
trails: {
|
|
105
|
+
get(id, options) {
|
|
106
|
+
const save = resolved.resolveSave(options?.save);
|
|
107
|
+
if (save === undefined) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
return resolved.trails.find((trail) => trail.id === id && trail.saveId === save.id);
|
|
111
|
+
},
|
|
112
|
+
list(options) {
|
|
113
|
+
const save = resolved.resolveSave(options?.save);
|
|
114
|
+
if (save === undefined) {
|
|
115
|
+
return [];
|
|
116
|
+
}
|
|
117
|
+
return resolved.trails.filter((trail) => trail.saveId === save.id &&
|
|
118
|
+
(options?.intent === undefined || trail.intent === options.intent));
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
export const createTopoStore = (options) => ({
|
|
124
|
+
exports: {
|
|
125
|
+
get(ref) {
|
|
126
|
+
return withStoredTopoState(options, (db) => getTopoStoreExport(db, ref));
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
pins: {
|
|
130
|
+
get(name) {
|
|
131
|
+
return withStoredTopoState(options, (db) => getTopoPin(db, name));
|
|
132
|
+
},
|
|
133
|
+
list() {
|
|
134
|
+
return withStoredTopoState(options, (db) => listTopoStorePins(db));
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
provisions: {
|
|
138
|
+
get(id, queryOptions) {
|
|
139
|
+
return withStoredTopoState(options, (db) => getTopoStoreProvision(db, id, queryOptions));
|
|
140
|
+
},
|
|
141
|
+
list(queryOptions) {
|
|
142
|
+
return withStoredTopoState(options, (db) => listTopoStoreProvisions(db, queryOptions));
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
query(sql, bindings) {
|
|
146
|
+
return withStoredTopoState(options, (db) => queryTopoStore(db, sql, bindings));
|
|
147
|
+
},
|
|
148
|
+
saves: {
|
|
149
|
+
get(ref) {
|
|
150
|
+
return withStoredTopoState(options, (db) => resolveTopoStoreSave(db, ref));
|
|
151
|
+
},
|
|
152
|
+
latest() {
|
|
153
|
+
return withStoredTopoState(options, (db) => resolveTopoStoreSave(db));
|
|
154
|
+
},
|
|
155
|
+
list() {
|
|
156
|
+
return withStoredTopoState(options, (db) => listTopoStoreSaves(db));
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
trails: {
|
|
160
|
+
get(id, queryOptions) {
|
|
161
|
+
return withStoredTopoState(options, (db) => getTopoStoreTrail(db, id, queryOptions));
|
|
162
|
+
},
|
|
163
|
+
list(queryOptions) {
|
|
164
|
+
return withStoredTopoState(options, (db) => listTopoStoreTrails(db, queryOptions));
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
export const topoStore = provision('topo.store', {
|
|
169
|
+
create: (svc) => Result.ok(createTopoStore({
|
|
170
|
+
rootDir: svc.workspaceRoot ?? svc.cwd ?? resolveStoreRootDir(),
|
|
171
|
+
})),
|
|
172
|
+
description: 'Read-only query access to saved topo state in trails.db',
|
|
173
|
+
mock: () => createMockTopoStore(),
|
|
174
|
+
});
|
|
175
|
+
//# sourceMappingURL=topo-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topo-store.js","sourceRoot":"","sources":["../src/topo-store.ts"],"names":[],"mappings":"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"}
|
package/dist/topo.d.ts
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Application entry point — scans module exports to build a topology graph.
|
|
3
3
|
*/
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
4
|
+
import type { AnySignal } from './event.js';
|
|
5
|
+
import type { AnyProvision } from './provision.js';
|
|
6
6
|
import type { AnyTrail } from './trail.js';
|
|
7
7
|
export interface Topo {
|
|
8
8
|
readonly name: string;
|
|
9
9
|
readonly trails: ReadonlyMap<string, AnyTrail>;
|
|
10
|
-
readonly
|
|
11
|
-
readonly
|
|
10
|
+
readonly signals: ReadonlyMap<string, AnySignal>;
|
|
11
|
+
readonly provisions: ReadonlyMap<string, AnyProvision>;
|
|
12
12
|
readonly count: number;
|
|
13
|
-
readonly
|
|
13
|
+
readonly provisionCount: number;
|
|
14
14
|
get(id: string): AnyTrail | undefined;
|
|
15
|
-
|
|
15
|
+
getProvision(id: string): AnyProvision | undefined;
|
|
16
16
|
has(id: string): boolean;
|
|
17
|
-
|
|
17
|
+
hasProvision(id: string): boolean;
|
|
18
18
|
ids(): string[];
|
|
19
|
-
|
|
19
|
+
provisionIds(): string[];
|
|
20
20
|
list(): AnyTrail[];
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
listSignals(): AnySignal[];
|
|
22
|
+
listProvisions(): AnyProvision[];
|
|
23
23
|
}
|
|
24
24
|
export declare const topo: (name: string, ...modules: Record<string, unknown>[]) => Topo;
|
|
25
25
|
//# sourceMappingURL=topo.d.ts.map
|
package/dist/topo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topo.d.ts","sourceRoot":"","sources":["../src/topo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"topo.d.ts","sourceRoot":"","sources":["../src/topo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IACnD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,GAAG,IAAI,MAAM,EAAE,CAAC;IAChB,YAAY,IAAI,MAAM,EAAE,CAAC;IACzB,IAAI,IAAI,QAAQ,EAAE,CAAC;IACnB,WAAW,IAAI,SAAS,EAAE,CAAC;IAC3B,cAAc,IAAI,YAAY,EAAE,CAAC;CAClC;AA4ID,eAAO,MAAM,IAAI,GACf,MAAM,MAAM,EACZ,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KACpC,IAUF,CAAC"}
|
package/dist/topo.js
CHANGED
|
@@ -2,31 +2,30 @@
|
|
|
2
2
|
* Application entry point — scans module exports to build a topology graph.
|
|
3
3
|
*/
|
|
4
4
|
import { ValidationError } from './errors.js';
|
|
5
|
-
import {
|
|
5
|
+
import { isProvision } from './provision.js';
|
|
6
6
|
const isRegistrable = (value) => {
|
|
7
7
|
if (typeof value !== 'object' || value === null) {
|
|
8
8
|
return false;
|
|
9
9
|
}
|
|
10
10
|
const { kind } = value;
|
|
11
|
-
return kind === 'trail' || kind === '
|
|
11
|
+
return kind === 'trail' || kind === 'signal';
|
|
12
12
|
};
|
|
13
13
|
// ---------------------------------------------------------------------------
|
|
14
14
|
// Topo implementation
|
|
15
15
|
// ---------------------------------------------------------------------------
|
|
16
|
-
const createTopo = (name, trails,
|
|
16
|
+
const createTopo = (name, trails, signals, provisions) => ({
|
|
17
17
|
count: trails.size,
|
|
18
|
-
events,
|
|
19
18
|
get(id) {
|
|
20
19
|
return trails.get(id);
|
|
21
20
|
},
|
|
22
|
-
|
|
23
|
-
return
|
|
21
|
+
getProvision(id) {
|
|
22
|
+
return provisions.get(id);
|
|
24
23
|
},
|
|
25
24
|
has(id) {
|
|
26
25
|
return trails.has(id);
|
|
27
26
|
},
|
|
28
|
-
|
|
29
|
-
return
|
|
27
|
+
hasProvision(id) {
|
|
28
|
+
return provisions.has(id);
|
|
30
29
|
},
|
|
31
30
|
ids() {
|
|
32
31
|
return [...trails.keys()];
|
|
@@ -34,38 +33,39 @@ const createTopo = (name, trails, events, services) => ({
|
|
|
34
33
|
list() {
|
|
35
34
|
return [...trails.values()];
|
|
36
35
|
},
|
|
37
|
-
|
|
38
|
-
return [...
|
|
36
|
+
listProvisions() {
|
|
37
|
+
return [...provisions.values()];
|
|
39
38
|
},
|
|
40
|
-
|
|
41
|
-
return [...
|
|
39
|
+
listSignals() {
|
|
40
|
+
return [...signals.values()];
|
|
42
41
|
},
|
|
43
42
|
name,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return [...
|
|
43
|
+
provisionCount: provisions.size,
|
|
44
|
+
provisionIds() {
|
|
45
|
+
return [...provisions.keys()];
|
|
47
46
|
},
|
|
48
|
-
|
|
47
|
+
provisions,
|
|
48
|
+
signals,
|
|
49
49
|
trails,
|
|
50
50
|
});
|
|
51
51
|
// ---------------------------------------------------------------------------
|
|
52
52
|
// topo()
|
|
53
53
|
// ---------------------------------------------------------------------------
|
|
54
54
|
/** Register a single registrable value into the appropriate map. */
|
|
55
|
-
const register = (value, trails,
|
|
55
|
+
const register = (value, trails, signals, provisions) => {
|
|
56
56
|
const { id } = value;
|
|
57
57
|
const registrars = {
|
|
58
|
-
|
|
59
|
-
if (
|
|
60
|
-
throw new ValidationError(`Duplicate
|
|
58
|
+
provision: () => {
|
|
59
|
+
if (provisions.has(id)) {
|
|
60
|
+
throw new ValidationError(`Duplicate provision ID: "${id}"`);
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
provisions.set(id, value);
|
|
63
63
|
},
|
|
64
|
-
|
|
65
|
-
if (
|
|
66
|
-
throw new ValidationError(`Duplicate
|
|
64
|
+
signal: () => {
|
|
65
|
+
if (signals.has(id)) {
|
|
66
|
+
throw new ValidationError(`Duplicate signal ID: "${id}"`);
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
signals.set(id, value);
|
|
69
69
|
},
|
|
70
70
|
trail: () => {
|
|
71
71
|
if (trails.has(id)) {
|
|
@@ -76,24 +76,37 @@ const register = (value, trails, events, services) => {
|
|
|
76
76
|
};
|
|
77
77
|
registrars[value.kind]?.();
|
|
78
78
|
};
|
|
79
|
-
const
|
|
79
|
+
const markUniqueObject = (value, seenValues) => {
|
|
80
|
+
if (typeof value !== 'object' || value === null) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
if (seenValues.has(value)) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
seenValues.add(value);
|
|
87
|
+
return true;
|
|
88
|
+
};
|
|
89
|
+
const registerModuleValue = (value, trails, signals, provisions) => {
|
|
90
|
+
if (isProvision(value) || isRegistrable(value)) {
|
|
91
|
+
register(value, trails, signals, provisions);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const registerModuleValues = (mod, trails, signals, provisions) => {
|
|
95
|
+
const seenValues = new WeakSet();
|
|
80
96
|
for (const value of Object.values(mod)) {
|
|
81
|
-
if (
|
|
82
|
-
register(value, trails, events, services);
|
|
97
|
+
if (!markUniqueObject(value, seenValues)) {
|
|
83
98
|
continue;
|
|
84
99
|
}
|
|
85
|
-
|
|
86
|
-
register(value, trails, events, services);
|
|
87
|
-
}
|
|
100
|
+
registerModuleValue(value, trails, signals, provisions);
|
|
88
101
|
}
|
|
89
102
|
};
|
|
90
103
|
export const topo = (name, ...modules) => {
|
|
91
104
|
const trails = new Map();
|
|
92
|
-
const
|
|
93
|
-
const
|
|
105
|
+
const signals = new Map();
|
|
106
|
+
const provisions = new Map();
|
|
94
107
|
for (const mod of modules) {
|
|
95
|
-
registerModuleValues(mod, trails,
|
|
108
|
+
registerModuleValues(mod, trails, signals, provisions);
|
|
96
109
|
}
|
|
97
|
-
return createTopo(name, trails,
|
|
110
|
+
return createTopo(name, trails, signals, provisions);
|
|
98
111
|
};
|
|
99
112
|
//# sourceMappingURL=topo.js.map
|
package/dist/topo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topo.js","sourceRoot":"","sources":["../src/topo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"topo.js","sourceRoot":"","sources":["../src/topo.ts"],"names":[],"mappings":"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"}
|
package/dist/trail.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { z } from 'zod';
|
|
2
2
|
import type { FieldOverride } from './derive.js';
|
|
3
3
|
import type { Result } from './result.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { AnyProvision } from './provision.js';
|
|
5
5
|
import type { Implementation, PermitRequirement, TrailContext } from './types.js';
|
|
6
6
|
/**
|
|
7
7
|
* A named example for documentation and testing.
|
|
@@ -29,7 +29,7 @@ export interface TrailSpec<I, O> {
|
|
|
29
29
|
/** Zod schema for validating output (optional — some trails are fire-and-forget) */
|
|
30
30
|
readonly output?: z.ZodType<O> | undefined;
|
|
31
31
|
/** The pure function that does the work (sync or async authoring) */
|
|
32
|
-
readonly
|
|
32
|
+
readonly blaze: Implementation<I, O>;
|
|
33
33
|
/** Human-readable description */
|
|
34
34
|
readonly description?: string | undefined;
|
|
35
35
|
/** Named examples for docs and testing */
|
|
@@ -38,30 +38,30 @@ export interface TrailSpec<I, O> {
|
|
|
38
38
|
readonly intent?: 'read' | 'write' | 'destroy' | undefined;
|
|
39
39
|
/** Trail is idempotent (safe to retry) */
|
|
40
40
|
readonly idempotent?: boolean | undefined;
|
|
41
|
-
/** Arbitrary
|
|
42
|
-
readonly
|
|
41
|
+
/** Arbitrary meta for tooling and filtering */
|
|
42
|
+
readonly meta?: Readonly<Record<string, unknown>> | undefined;
|
|
43
43
|
/** Named sets of downstream trail IDs that may be invoked */
|
|
44
44
|
readonly detours?: Readonly<Record<string, readonly string[]>> | undefined;
|
|
45
45
|
/** Per-field overrides for deriveFields() (labels, hints, options) */
|
|
46
46
|
readonly fields?: Readonly<Record<string, FieldOverride>> | undefined;
|
|
47
|
-
/** IDs of downstream trails this trail may invoke via ctx.
|
|
48
|
-
readonly
|
|
49
|
-
/**
|
|
50
|
-
readonly
|
|
47
|
+
/** IDs of downstream trails this trail may invoke via ctx.cross() */
|
|
48
|
+
readonly crosses?: readonly string[] | undefined;
|
|
49
|
+
/** Provisions this trail may access via provision.from(ctx) */
|
|
50
|
+
readonly provisions?: readonly AnyProvision[] | undefined;
|
|
51
51
|
/** Auth requirement: scopes object, 'public', or omitted (undeclared) */
|
|
52
52
|
readonly permit?: PermitRequirement | undefined;
|
|
53
53
|
}
|
|
54
54
|
/** Intent describes what a trail does to the world */
|
|
55
55
|
export type Intent = 'read' | 'write' | 'destroy';
|
|
56
56
|
/** A fully-defined trail — the unit of work in the Trails system */
|
|
57
|
-
export interface Trail<I, O> extends Omit<TrailSpec<I, O>, '
|
|
57
|
+
export interface Trail<I, O> extends Omit<TrailSpec<I, O>, 'blaze' | 'crosses' | 'intent' | 'provisions'> {
|
|
58
58
|
readonly kind: 'trail';
|
|
59
59
|
readonly id: string;
|
|
60
|
-
readonly
|
|
61
|
-
/** IDs of downstream trails this trail may invoke via ctx.
|
|
62
|
-
readonly
|
|
63
|
-
/**
|
|
64
|
-
readonly
|
|
60
|
+
readonly blaze: Implementation<I, O>;
|
|
61
|
+
/** IDs of downstream trails this trail may invoke via ctx.cross() (always present, default []) */
|
|
62
|
+
readonly crosses: readonly string[];
|
|
63
|
+
/** Provisions this trail may access via provision.from(ctx) (always present, default []) */
|
|
64
|
+
readonly provisions: readonly AnyProvision[];
|
|
65
65
|
/** What this trail does to the world (always present, default 'write') */
|
|
66
66
|
readonly intent: Intent;
|
|
67
67
|
}
|
|
@@ -76,14 +76,14 @@ export interface Trail<I, O> extends Omit<TrailSpec<I, O>, 'run' | 'follow' | 'i
|
|
|
76
76
|
* // ID as first argument (recommended for human authoring)
|
|
77
77
|
* const show = trail("entity.show", {
|
|
78
78
|
* input: z.object({ name: z.string() }),
|
|
79
|
-
*
|
|
79
|
+
* blaze: (input) => Result.ok(entity),
|
|
80
80
|
* });
|
|
81
81
|
*
|
|
82
82
|
* // Full spec object (for programmatic generation)
|
|
83
83
|
* const show = trail({
|
|
84
84
|
* id: "entity.show",
|
|
85
85
|
* input: z.object({ name: z.string() }),
|
|
86
|
-
*
|
|
86
|
+
* blaze: (input) => Result.ok(entity),
|
|
87
87
|
* });
|
|
88
88
|
* ```
|
|
89
89
|
*/
|
package/dist/trail.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trail.d.ts","sourceRoot":"","sources":["../src/trail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"trail.d.ts","sourceRoot":"","sources":["../src/trail.ts"],"names":[],"mappings":"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"}
|
package/dist/trail.js
CHANGED
|
@@ -5,15 +5,16 @@ export function trail(idOrSpec, maybeSpec) {
|
|
|
5
5
|
if (!resolved.spec) {
|
|
6
6
|
throw new TypeError('trail() requires a spec when an id is provided');
|
|
7
7
|
}
|
|
8
|
-
const {
|
|
8
|
+
const { blaze, crosses: rawCrosses, intent: rawIntent, provisions: rawProvisions, ...spec } = resolved.spec;
|
|
9
|
+
const provisions = Object.freeze([...(rawProvisions ?? [])]);
|
|
9
10
|
return Object.freeze({
|
|
10
11
|
...spec,
|
|
11
|
-
|
|
12
|
+
blaze: async (input, ctx) => await blaze(input, ctx),
|
|
13
|
+
crosses: Object.freeze([...(rawCrosses ?? [])]),
|
|
12
14
|
id: resolved.id,
|
|
13
15
|
intent: rawIntent ?? 'write',
|
|
14
16
|
kind: 'trail',
|
|
15
|
-
|
|
16
|
-
services: Object.freeze([...(rawServices ?? [])]),
|
|
17
|
+
provisions,
|
|
17
18
|
});
|
|
18
19
|
}
|
|
19
20
|
//# sourceMappingURL=trail.js.map
|
package/dist/trail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trail.js","sourceRoot":"","sources":["../src/trail.ts"],"names":[],"mappings":"AA0HA,MAAM,UAAU,KAAK,CACnB,QAA8D,EAC9D,SAA2B;IAE3B,MAAM,QAAQ,GACZ,OAAO,QAAQ,KAAK,QAAQ;QAC1B,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;QACnC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAE1C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,EACJ,
|
|
1
|
+
{"version":3,"file":"trail.js","sourceRoot":"","sources":["../src/trail.ts"],"names":[],"mappings":"AA0HA,MAAM,UAAU,KAAK,CACnB,QAA8D,EAC9D,SAA2B;IAE3B,MAAM,QAAQ,GACZ,OAAO,QAAQ,KAAK,QAAQ;QAC1B,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;QACnC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAE1C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,EACJ,KAAK,EACL,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,aAAa,EACzB,GAAG,IAAI,EACR,GAAG,QAAQ,CAAC,IAAI,CAAC;IAClB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE7D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,IAAI;QACP,KAAK,EAAE,KAAK,EAAE,KAAQ,EAAE,GAAiB,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;QACrE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/C,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,MAAM,EAAE,SAAS,IAAI,OAAO;QAC5B,IAAI,EAAE,OAAgB;QACtB,UAAU;KACX,CAAC,CAAC;AACL,CAAC"}
|