@r-a-i-t-h/viz-host 0.1.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/LICENSE +21 -0
- package/dist/bridge/hostBridge.d.ts +44 -0
- package/dist/bridge/hostBridge.d.ts.map +1 -0
- package/dist/bridge/hostBridge.js +160 -0
- package/dist/bridge/hostBridge.js.map +1 -0
- package/dist/contextAges.d.ts +5 -0
- package/dist/contextAges.d.ts.map +1 -0
- package/dist/contextAges.js +25 -0
- package/dist/contextAges.js.map +1 -0
- package/dist/contextDeps.d.ts +6 -0
- package/dist/contextDeps.d.ts.map +1 -0
- package/dist/contextDeps.js +394 -0
- package/dist/contextDeps.js.map +1 -0
- package/dist/createVisualizerHost.d.ts +69 -0
- package/dist/createVisualizerHost.d.ts.map +1 -0
- package/dist/createVisualizerHost.js +135 -0
- package/dist/createVisualizerHost.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/nextEvents.d.ts +8 -0
- package/dist/nextEvents.d.ts.map +1 -0
- package/dist/nextEvents.js +61 -0
- package/dist/nextEvents.js.map +1 -0
- package/dist/project.d.ts +48 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.js +607 -0
- package/dist/project.js.map +1 -0
- package/package.json +38 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host library: inspect + project live XState logic → Viz*, open popup bridge.
|
|
3
|
+
*
|
|
4
|
+
* Depends on `@r-a-i-t-h/viz-protocol` for the shared model/wire types.
|
|
5
|
+
* Peer: `xstate` v5.
|
|
6
|
+
*/
|
|
7
|
+
export { createVisualizerHost, } from './createVisualizerHost.js';
|
|
8
|
+
export { machineLogicFromEvent, projectFrame, projectMachine, portableizeContext, activePaths, } from './project.js';
|
|
9
|
+
export { normalizeStateNodeId } from '@r-a-i-t-h/viz-protocol';
|
|
10
|
+
export { collectNextEvents } from './nextEvents.js';
|
|
11
|
+
export { computeContextKeyAges } from './contextAges.js';
|
|
12
|
+
export { analyzeContextDeps, } from './contextDeps.js';
|
|
13
|
+
export { isVizActorRefMarker } from '@r-a-i-t-h/viz-protocol';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,oBAAoB,GAIrB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,WAAW,GACZ,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACL,kBAAkB,GAQnB,MAAM,kBAAkB,CAAC;AAsB1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { VizNextEvent, VizNode } from '@r-a-i-t-h/viz-protocol';
|
|
2
|
+
/**
|
|
3
|
+
* Events the active configuration can handle, including handlers on active
|
|
4
|
+
* ancestors (XState bubbling). Provider ids are the states that declare `on`.
|
|
5
|
+
* Candidates preserve definition order within each provider (cond cascade).
|
|
6
|
+
*/
|
|
7
|
+
export declare function collectNextEvents(root: VizNode, activePaths: string[]): VizNextEvent[];
|
|
8
|
+
//# sourceMappingURL=nextEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextEvents.d.ts","sourceRoot":"","sources":["../src/nextEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,OAAO,EACR,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,MAAM,EAAE,GACpB,YAAY,EAAE,CA4DhB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Events the active configuration can handle, including handlers on active
|
|
3
|
+
* ancestors (XState bubbling). Provider ids are the states that declare `on`.
|
|
4
|
+
* Candidates preserve definition order within each provider (cond cascade).
|
|
5
|
+
*/
|
|
6
|
+
export function collectNextEvents(root, activePaths) {
|
|
7
|
+
const active = new Set(activePaths);
|
|
8
|
+
const providersByType = new Map();
|
|
9
|
+
const candidatesByType = new Map();
|
|
10
|
+
function visit(node) {
|
|
11
|
+
const path = node.details.path;
|
|
12
|
+
const isActive = path === ''
|
|
13
|
+
? active.size > 0 || activePaths.length === 0
|
|
14
|
+
: active.has(path);
|
|
15
|
+
if (isActive) {
|
|
16
|
+
for (const event of node.events) {
|
|
17
|
+
let providers = providersByType.get(event.type);
|
|
18
|
+
if (!providers) {
|
|
19
|
+
providers = [];
|
|
20
|
+
providersByType.set(event.type, providers);
|
|
21
|
+
}
|
|
22
|
+
if (!providers.includes(node.id)) {
|
|
23
|
+
providers.push(node.id);
|
|
24
|
+
}
|
|
25
|
+
let candidates = candidatesByType.get(event.type);
|
|
26
|
+
if (!candidates) {
|
|
27
|
+
candidates = [];
|
|
28
|
+
candidatesByType.set(event.type, candidates);
|
|
29
|
+
}
|
|
30
|
+
for (const transition of event.transitions) {
|
|
31
|
+
candidates.push({
|
|
32
|
+
providerId: node.id,
|
|
33
|
+
targetIds: transition.targetIds,
|
|
34
|
+
guard: transition.guard,
|
|
35
|
+
actions: transition.actions,
|
|
36
|
+
line: transition.line,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
for (const child of node.children)
|
|
42
|
+
visit(child);
|
|
43
|
+
}
|
|
44
|
+
visit(root);
|
|
45
|
+
return [...providersByType.entries()].map(([type, providerIds]) => {
|
|
46
|
+
const candidates = candidatesByType.get(type) ?? [];
|
|
47
|
+
const highlightIds = [
|
|
48
|
+
...new Set([
|
|
49
|
+
...providerIds,
|
|
50
|
+
...candidates.flatMap((c) => c.targetIds),
|
|
51
|
+
]),
|
|
52
|
+
];
|
|
53
|
+
return {
|
|
54
|
+
type,
|
|
55
|
+
providerIds,
|
|
56
|
+
candidates,
|
|
57
|
+
highlightIds,
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=nextEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextEvents.js","sourceRoot":"","sources":["../src/nextEvents.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAa,EACb,WAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACpC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAoB,CAAC;IACpD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAmC,CAAC;IAEpE,SAAS,KAAK,CAAC,IAAa;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/B,MAAM,QAAQ,GACZ,IAAI,KAAK,EAAE;YACT,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAC7C,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEvB,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,IAAI,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,SAAS,GAAG,EAAE,CAAC;oBACf,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC7C,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;oBACjC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1B,CAAC;gBAED,IAAI,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,UAAU,GAAG,EAAE,CAAC;oBAChB,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC/C,CAAC;gBACD,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBAC3C,UAAU,CAAC,IAAI,CAAC;wBACd,UAAU,EAAE,IAAI,CAAC,EAAE;wBACnB,SAAS,EAAE,UAAU,CAAC,SAAS;wBAC/B,KAAK,EAAE,UAAU,CAAC,KAAK;wBACvB,OAAO,EAAE,UAAU,CAAC,OAAO;wBAC3B,IAAI,EAAE,UAAU,CAAC,IAAI;qBACtB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,CAAC;IAEZ,OAAO,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE;QAChE,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG;YACnB,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,WAAW;gBACd,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;aAC1C,CAAC;SACH,CAAC;QACF,OAAO;YACL,IAAI;YACJ,WAAW;YACX,UAAU;YACV,YAAY;SACb,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-side projection: walk live XState machine logic (official types) into
|
|
3
|
+
* the shared Viz* model. This is the only module that should import XState
|
|
4
|
+
* structural types (`StateNodeDefinition`, transition shapes, etc.).
|
|
5
|
+
*/
|
|
6
|
+
import type { AnyStateMachine, InspectionEvent, StateValue } from 'xstate';
|
|
7
|
+
import type { VizFrame, VizMachine } from '@r-a-i-t-h/viz-protocol';
|
|
8
|
+
export interface ResolvedMachineActor {
|
|
9
|
+
sessionId: string;
|
|
10
|
+
logic: AnyStateMachine;
|
|
11
|
+
parentSessionId?: string;
|
|
12
|
+
input?: unknown;
|
|
13
|
+
}
|
|
14
|
+
/** Resolve machine logic from an `@xstate.actor` inspection event. */
|
|
15
|
+
export declare function machineLogicFromEvent(event: InspectionEvent): ResolvedMachineActor | null;
|
|
16
|
+
export declare function projectMachine(logic: AnyStateMachine, sessionId: string, options?: {
|
|
17
|
+
parentSessionId?: string;
|
|
18
|
+
input?: unknown;
|
|
19
|
+
}): VizMachine;
|
|
20
|
+
export declare function projectFrame(sessionId: string, snapshot: {
|
|
21
|
+
value?: unknown;
|
|
22
|
+
context?: unknown;
|
|
23
|
+
status?: string;
|
|
24
|
+
output?: unknown;
|
|
25
|
+
children?: Record<string, unknown>;
|
|
26
|
+
}, options?: {
|
|
27
|
+
eventType?: string;
|
|
28
|
+
previousContext?: unknown;
|
|
29
|
+
previousAges?: Record<string, number>;
|
|
30
|
+
machine?: VizMachine;
|
|
31
|
+
/**
|
|
32
|
+
* Optional scrub after actor-ref enrichment (host sanitizeContext).
|
|
33
|
+
* Receives already-portable context.
|
|
34
|
+
*/
|
|
35
|
+
sanitizeContext?: (context: unknown) => unknown;
|
|
36
|
+
}): VizFrame;
|
|
37
|
+
/**
|
|
38
|
+
* Replace live ActorRefs with {@link VizActorRefMarker} so sessionId survives
|
|
39
|
+
* JSON / postMessage. Uses live sessionId when present; falls back to
|
|
40
|
+
* snapshot.children lookup via `id` / toJSON shape.
|
|
41
|
+
*/
|
|
42
|
+
export declare function portableizeContext(context: unknown, childSessionById?: Map<string, string>): unknown;
|
|
43
|
+
/**
|
|
44
|
+
* Flatten a StateValue into dot-delimited active state paths.
|
|
45
|
+
* Host-only; popup receives the result on VizFrame.activePaths.
|
|
46
|
+
*/
|
|
47
|
+
export declare function activePaths(value: StateValue, prefix?: string): string[];
|
|
48
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EAEf,UAAU,EACX,MAAM,QAAQ,CAAC;AAGhB,OAAO,KAAK,EAIV,QAAQ,EAER,UAAU,EAOX,MAAM,yBAAyB,CAAC;AA+BjC,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,eAAe,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AASD,sEAAsE;AACtE,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,GACrB,oBAAoB,GAAG,IAAI,CAgB7B;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IACR,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,UAAU,CAkBZ;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE;IACR,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,EACD,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;CACjD,GACA,QAAQ,CA+BV;AAiBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,gBAAgB,GAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAa,GAChD,OAAO,CAET;AAuDD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,SAAK,GAAG,MAAM,EAAE,CAcpE"}
|