@specverse/runtime 4.1.0 → 4.1.2
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/README.md +356 -0
- package/dist/runtime/views/core/atomic-components-registry.d.ts +63 -0
- package/dist/runtime/views/core/atomic-components-registry.d.ts.map +1 -0
- package/dist/runtime/views/core/atomic-components-registry.js +822 -0
- package/dist/runtime/views/core/atomic-components-registry.js.map +1 -0
- package/dist/runtime/views/core/composite-pattern-types.d.ts +171 -0
- package/dist/runtime/views/core/composite-pattern-types.d.ts.map +1 -0
- package/dist/runtime/views/core/composite-pattern-types.js +11 -0
- package/dist/runtime/views/core/composite-pattern-types.js.map +1 -0
- package/dist/runtime/views/core/composite-patterns.d.ts +67 -0
- package/dist/runtime/views/core/composite-patterns.d.ts.map +1 -0
- package/dist/runtime/views/core/composite-patterns.js +485 -0
- package/dist/runtime/views/core/composite-patterns.js.map +1 -0
- package/dist/runtime/views/core/entity-display.d.ts +28 -0
- package/dist/runtime/views/core/entity-display.d.ts.map +1 -1
- package/dist/runtime/views/core/entity-display.js +75 -0
- package/dist/runtime/views/core/entity-display.js.map +1 -1
- package/dist/runtime/views/core/index.d.ts +4 -1
- package/dist/runtime/views/core/index.d.ts.map +1 -1
- package/dist/runtime/views/core/index.js +5 -1
- package/dist/runtime/views/core/index.js.map +1 -1
- package/dist/runtime/views/core/pattern-engine.d.ts +2 -2
- package/dist/runtime/views/core/pattern-engine.d.ts.map +1 -1
- package/dist/runtime/views/core/pattern-engine.js.map +1 -1
- package/dist/runtime/views/core/types.d.ts +2 -0
- package/dist/runtime/views/core/types.d.ts.map +1 -1
- package/dist/runtime/views/index.d.ts +5 -2
- package/dist/runtime/views/index.d.ts.map +1 -1
- package/dist/runtime/views/index.js +5 -2
- package/dist/runtime/views/index.js.map +1 -1
- package/dist/runtime/views/react/components/DevShell.d.ts.map +1 -1
- package/dist/runtime/views/react/components/DevShell.js +6 -2
- package/dist/runtime/views/react/components/DevShell.js.map +1 -1
- package/dist/runtime/views/react/components/EntitySelect.d.ts +14 -0
- package/dist/runtime/views/react/components/EntitySelect.d.ts.map +1 -0
- package/dist/runtime/views/react/components/EntitySelect.js +29 -0
- package/dist/runtime/views/react/components/EntitySelect.js.map +1 -0
- package/dist/runtime/views/react/components/EventStream.d.ts +11 -0
- package/dist/runtime/views/react/components/EventStream.d.ts.map +1 -0
- package/dist/runtime/views/react/components/EventStream.js +49 -0
- package/dist/runtime/views/react/components/EventStream.js.map +1 -0
- package/dist/runtime/views/react/components/FieldInput.d.ts +23 -0
- package/dist/runtime/views/react/components/FieldInput.d.ts.map +1 -0
- package/dist/runtime/views/react/components/FieldInput.js +28 -0
- package/dist/runtime/views/react/components/FieldInput.js.map +1 -0
- package/dist/runtime/views/react/components/FormView.d.ts +21 -0
- package/dist/runtime/views/react/components/FormView.d.ts.map +1 -0
- package/dist/runtime/views/react/components/FormView.js +13 -0
- package/dist/runtime/views/react/components/FormView.js.map +1 -0
- package/dist/runtime/views/react/components/ModelManager.d.ts +6 -2
- package/dist/runtime/views/react/components/ModelManager.d.ts.map +1 -1
- package/dist/runtime/views/react/components/ModelManager.js +166 -61
- package/dist/runtime/views/react/components/ModelManager.js.map +1 -1
- package/dist/runtime/views/react/components/ModelSelector.d.ts.map +1 -1
- package/dist/runtime/views/react/components/ModelSelector.js +4 -1
- package/dist/runtime/views/react/components/ModelSelector.js.map +1 -1
- package/dist/runtime/views/react/components/OperationExecutor.d.ts +15 -0
- package/dist/runtime/views/react/components/OperationExecutor.d.ts.map +1 -0
- package/dist/runtime/views/react/components/OperationExecutor.js +86 -0
- package/dist/runtime/views/react/components/OperationExecutor.js.map +1 -0
- package/dist/runtime/views/react/components/OperationResultView.d.ts +10 -0
- package/dist/runtime/views/react/components/OperationResultView.d.ts.map +1 -0
- package/dist/runtime/views/react/components/OperationResultView.js +92 -0
- package/dist/runtime/views/react/components/OperationResultView.js.map +1 -0
- package/dist/runtime/views/react/components/OperationView.d.ts +21 -0
- package/dist/runtime/views/react/components/OperationView.d.ts.map +1 -0
- package/dist/runtime/views/react/components/OperationView.js +7 -0
- package/dist/runtime/views/react/components/OperationView.js.map +1 -0
- package/dist/runtime/views/react/components/RelationshipField.js +4 -4
- package/dist/runtime/views/react/components/RelationshipField.js.map +1 -1
- package/dist/runtime/views/react/components/RuntimeView.d.ts.map +1 -1
- package/dist/runtime/views/react/components/RuntimeView.js +93 -33
- package/dist/runtime/views/react/components/RuntimeView.js.map +1 -1
- package/dist/runtime/views/react/components/ViewRouter.d.ts +7 -1
- package/dist/runtime/views/react/components/ViewRouter.d.ts.map +1 -1
- package/dist/runtime/views/react/components/ViewRouter.js +57 -18
- package/dist/runtime/views/react/components/ViewRouter.js.map +1 -1
- package/dist/runtime/views/react/hooks/useEventStream.d.ts +29 -0
- package/dist/runtime/views/react/hooks/useEventStream.d.ts.map +1 -0
- package/dist/runtime/views/react/hooks/useEventStream.js +114 -0
- package/dist/runtime/views/react/hooks/useEventStream.js.map +1 -0
- package/dist/runtime/views/react/hooks/useResizableSidebar.d.ts.map +1 -1
- package/dist/runtime/views/react/hooks/useResizableSidebar.js +2 -0
- package/dist/runtime/views/react/hooks/useResizableSidebar.js.map +1 -1
- package/dist/runtime/views/react/index.d.ts +10 -1
- package/dist/runtime/views/react/index.d.ts.map +1 -1
- package/dist/runtime/views/react/index.js +11 -1
- package/dist/runtime/views/react/index.js.map +1 -1
- package/dist/runtime/views/react/react-pattern-adapter.d.ts +235 -0
- package/dist/runtime/views/react/react-pattern-adapter.d.ts.map +1 -0
- package/dist/runtime/views/react/react-pattern-adapter.js +1450 -0
- package/dist/runtime/views/react/react-pattern-adapter.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewRouter.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/ViewRouter.tsx"],"names":[],"mappings":";AAAA;;;;;;;GAOG;AAEH,OAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"ViewRouter.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/ViewRouter.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useEventStream — WebSocket event streaming hook
|
|
3
|
+
*
|
|
4
|
+
* Connects to the backend's WebSocket endpoint, subscribes to CURED events,
|
|
5
|
+
* and maintains a local event log. Derives WS URL from apiBaseUrl in context.
|
|
6
|
+
*
|
|
7
|
+
* Event flow: Backend EventBus → WS server → this hook → EventStream UI
|
|
8
|
+
*/
|
|
9
|
+
export interface StreamEvent {
|
|
10
|
+
eventName: string;
|
|
11
|
+
data: any;
|
|
12
|
+
timestamp: Date;
|
|
13
|
+
}
|
|
14
|
+
export interface UseEventStreamOptions {
|
|
15
|
+
/** Max events to keep in memory */
|
|
16
|
+
maxEvents?: number;
|
|
17
|
+
/** Auto-connect on mount */
|
|
18
|
+
autoConnect?: boolean;
|
|
19
|
+
/** Reconnect delay in ms */
|
|
20
|
+
reconnectDelay?: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function useEventStream(options?: UseEventStreamOptions): {
|
|
23
|
+
events: StreamEvent[];
|
|
24
|
+
isConnected: boolean;
|
|
25
|
+
connect: () => void;
|
|
26
|
+
disconnect: () => void;
|
|
27
|
+
clearEvents: () => void;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=useEventStream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEventStream.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/hooks/useEventStream.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4BAA4B;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B;;;;;;EAiHjE"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useEventStream — WebSocket event streaming hook
|
|
3
|
+
*
|
|
4
|
+
* Connects to the backend's WebSocket endpoint, subscribes to CURED events,
|
|
5
|
+
* and maintains a local event log. Derives WS URL from apiBaseUrl in context.
|
|
6
|
+
*
|
|
7
|
+
* Event flow: Backend EventBus → WS server → this hook → EventStream UI
|
|
8
|
+
*/
|
|
9
|
+
import { useState, useEffect, useRef, useCallback } from 'react';
|
|
10
|
+
import { useRuntimeContext } from '../context.js';
|
|
11
|
+
export function useEventStream(options = {}) {
|
|
12
|
+
const { maxEvents = 500, autoConnect = true, reconnectDelay = 3000 } = options;
|
|
13
|
+
const ctx = useRuntimeContext();
|
|
14
|
+
const [events, setEvents] = useState([]);
|
|
15
|
+
const [isConnected, setIsConnected] = useState(false);
|
|
16
|
+
const wsRef = useRef(null);
|
|
17
|
+
const reconnectTimerRef = useRef(null);
|
|
18
|
+
const intentionalCloseRef = useRef(false);
|
|
19
|
+
// Derive WebSocket URL from API base
|
|
20
|
+
const wsUrl = (() => {
|
|
21
|
+
const base = ctx.apiBaseUrl || '/api';
|
|
22
|
+
// /api → ws://host/ws, http://host:3000/api → ws://host:3000/ws
|
|
23
|
+
try {
|
|
24
|
+
if (base.startsWith('http')) {
|
|
25
|
+
const url = new URL(base);
|
|
26
|
+
url.protocol = url.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
27
|
+
url.pathname = '/ws';
|
|
28
|
+
return url.toString();
|
|
29
|
+
}
|
|
30
|
+
// Relative path — use current host
|
|
31
|
+
const protocol = typeof window !== 'undefined' && window.location.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
32
|
+
const host = typeof window !== 'undefined' ? window.location.host : 'localhost:3000';
|
|
33
|
+
return `${protocol}//${host}/ws`;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return 'ws://localhost:3000/ws';
|
|
37
|
+
}
|
|
38
|
+
})();
|
|
39
|
+
const addEvent = useCallback((event) => {
|
|
40
|
+
setEvents(prev => {
|
|
41
|
+
const next = [event, ...prev];
|
|
42
|
+
return next.length > maxEvents ? next.slice(0, maxEvents) : next;
|
|
43
|
+
});
|
|
44
|
+
}, [maxEvents]);
|
|
45
|
+
const connect = useCallback(() => {
|
|
46
|
+
if (wsRef.current) {
|
|
47
|
+
intentionalCloseRef.current = true;
|
|
48
|
+
wsRef.current.close();
|
|
49
|
+
}
|
|
50
|
+
const ws = new WebSocket(wsUrl);
|
|
51
|
+
ws.onopen = () => {
|
|
52
|
+
intentionalCloseRef.current = false;
|
|
53
|
+
setIsConnected(true);
|
|
54
|
+
};
|
|
55
|
+
ws.onclose = () => {
|
|
56
|
+
setIsConnected(false);
|
|
57
|
+
if (!intentionalCloseRef.current) {
|
|
58
|
+
reconnectTimerRef.current = window.setTimeout(connect, reconnectDelay);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
ws.onerror = () => { };
|
|
62
|
+
ws.onmessage = (event) => {
|
|
63
|
+
try {
|
|
64
|
+
const message = JSON.parse(event.data);
|
|
65
|
+
if (message.type === 'event') {
|
|
66
|
+
const payload = message.payload;
|
|
67
|
+
const eventName = payload.eventName || payload.event;
|
|
68
|
+
if (!eventName || eventName === 'connected')
|
|
69
|
+
return;
|
|
70
|
+
addEvent({
|
|
71
|
+
eventName,
|
|
72
|
+
data: payload.data || payload.payload,
|
|
73
|
+
timestamp: new Date(),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// On connected message, subscribe to all events
|
|
77
|
+
if (message.type === 'event' && (message.payload?.event === 'connected' || message.payload?.eventName === 'connected')) {
|
|
78
|
+
const runtime = message.payload?.runtime;
|
|
79
|
+
if (runtime?.models) {
|
|
80
|
+
for (const model of runtime.models) {
|
|
81
|
+
for (const suffix of ['Created', 'Updated', 'Deleted', 'Evolved']) {
|
|
82
|
+
ws.send(JSON.stringify({ type: 'subscribe', payload: { eventName: `${model}${suffix}` } }));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (runtime?.events) {
|
|
87
|
+
for (const evt of runtime.events) {
|
|
88
|
+
ws.send(JSON.stringify({ type: 'subscribe', payload: { eventName: evt } }));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch { }
|
|
94
|
+
};
|
|
95
|
+
wsRef.current = ws;
|
|
96
|
+
}, [wsUrl, reconnectDelay, addEvent]);
|
|
97
|
+
const disconnect = useCallback(() => {
|
|
98
|
+
intentionalCloseRef.current = true;
|
|
99
|
+
if (reconnectTimerRef.current)
|
|
100
|
+
clearTimeout(reconnectTimerRef.current);
|
|
101
|
+
if (wsRef.current)
|
|
102
|
+
wsRef.current.close();
|
|
103
|
+
wsRef.current = null;
|
|
104
|
+
setIsConnected(false);
|
|
105
|
+
}, []);
|
|
106
|
+
const clearEvents = useCallback(() => setEvents([]), []);
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
if (autoConnect)
|
|
109
|
+
connect();
|
|
110
|
+
return () => disconnect();
|
|
111
|
+
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
112
|
+
return { events, isConnected, connect, disconnect, clearEvents };
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=useEventStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEventStream.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/hooks/useEventStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResizableSidebar.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/hooks/useResizableSidebar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,uBAA4B;;;;
|
|
1
|
+
{"version":3,"file":"useResizableSidebar.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/hooks/useResizableSidebar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,uBAA4B;;;;EAmCxE"}
|
|
@@ -23,8 +23,10 @@ export function useResizableSidebar(options = {}) {
|
|
|
23
23
|
const handleMouseUp = () => {
|
|
24
24
|
setIsResizing(false);
|
|
25
25
|
document.body.style.cursor = '';
|
|
26
|
+
document.body.style.userSelect = '';
|
|
26
27
|
};
|
|
27
28
|
document.body.style.cursor = 'col-resize';
|
|
29
|
+
document.body.style.userSelect = 'none';
|
|
28
30
|
document.addEventListener('mousemove', handleMouseMove);
|
|
29
31
|
document.addEventListener('mouseup', handleMouseUp);
|
|
30
32
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResizableSidebar.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/hooks/useResizableSidebar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAQzD,MAAM,UAAU,mBAAmB,CAAC,UAAmC,EAAE;IACvE,MAAM,EAAE,YAAY,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IACvE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,eAAe,GAAG,CAAC,CAAa,EAAE,EAAE;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACnE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useResizableSidebar.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/hooks/useResizableSidebar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAQzD,MAAM,UAAU,mBAAmB,CAAC,UAAmC,EAAE;IACvE,MAAM,EAAE,YAAY,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IACvE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,eAAe,GAAG,CAAC,CAAa,EAAE,EAAE;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACnE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;QACtC,CAAC,CAAC;QAEF,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QACxC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAEpD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAErC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -8,13 +8,22 @@
|
|
|
8
8
|
export { RuntimeViewProvider, useRuntimeContext, } from './context.js';
|
|
9
9
|
export { useTheme } from './hooks/useTheme.js';
|
|
10
10
|
export { useResizableSidebar } from './hooks/useResizableSidebar.js';
|
|
11
|
-
export { useEntityHelpers } from './hooks/useEntityHelpers.js';
|
|
11
|
+
export { useEntityHelpers, useFieldSeparation, useRelationshipResolver, METADATA_FIELDS } from './hooks/useEntityHelpers.js';
|
|
12
|
+
export { useEventStream, type StreamEvent } from './hooks/useEventStream.js';
|
|
13
|
+
export { ReactPatternAdapter, usePatternAdapter, REACT_PROTOCOL_MAPPING, type ReactPatternAdapterConfig, type PatternRenderContext, } from './react-pattern-adapter.js';
|
|
12
14
|
export { RuntimeView } from './components/RuntimeView.js';
|
|
15
|
+
export { FormView } from './components/FormView.js';
|
|
13
16
|
export { DevShell } from './components/DevShell.js';
|
|
14
17
|
export { ViewRouter } from './components/ViewRouter.js';
|
|
15
18
|
export { ViewSidebar } from './components/ViewSidebar.js';
|
|
16
19
|
export { ModelSelector } from './components/ModelSelector.js';
|
|
17
20
|
export { ModelManager } from './components/ModelManager.js';
|
|
18
21
|
export { RelationshipField } from './components/RelationshipField.js';
|
|
22
|
+
export { FieldInput } from './components/FieldInput.js';
|
|
23
|
+
export { EntitySelect } from './components/EntitySelect.js';
|
|
24
|
+
export { OperationView } from './components/OperationView.js';
|
|
25
|
+
export { OperationExecutor } from './components/OperationExecutor.js';
|
|
26
|
+
export { OperationResultView } from './components/OperationResultView.js';
|
|
27
|
+
export { EventStream } from './components/EventStream.js';
|
|
19
28
|
export { ResizeHandle } from './components/ui/ResizeHandle.js';
|
|
20
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/views/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/views/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC7H,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7E,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,GAC1B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -10,14 +10,24 @@ export { RuntimeViewProvider, useRuntimeContext, } from './context.js';
|
|
|
10
10
|
// Hooks
|
|
11
11
|
export { useTheme } from './hooks/useTheme.js';
|
|
12
12
|
export { useResizableSidebar } from './hooks/useResizableSidebar.js';
|
|
13
|
-
export { useEntityHelpers } from './hooks/useEntityHelpers.js';
|
|
13
|
+
export { useEntityHelpers, useFieldSeparation, useRelationshipResolver, METADATA_FIELDS } from './hooks/useEntityHelpers.js';
|
|
14
|
+
export { useEventStream } from './hooks/useEventStream.js';
|
|
15
|
+
// Pattern adapter
|
|
16
|
+
export { ReactPatternAdapter, usePatternAdapter, REACT_PROTOCOL_MAPPING, } from './react-pattern-adapter.js';
|
|
14
17
|
// Components
|
|
15
18
|
export { RuntimeView } from './components/RuntimeView.js';
|
|
19
|
+
export { FormView } from './components/FormView.js';
|
|
16
20
|
export { DevShell } from './components/DevShell.js';
|
|
17
21
|
export { ViewRouter } from './components/ViewRouter.js';
|
|
18
22
|
export { ViewSidebar } from './components/ViewSidebar.js';
|
|
19
23
|
export { ModelSelector } from './components/ModelSelector.js';
|
|
20
24
|
export { ModelManager } from './components/ModelManager.js';
|
|
21
25
|
export { RelationshipField } from './components/RelationshipField.js';
|
|
26
|
+
export { FieldInput } from './components/FieldInput.js';
|
|
27
|
+
export { EntitySelect } from './components/EntitySelect.js';
|
|
28
|
+
export { OperationView } from './components/OperationView.js';
|
|
29
|
+
export { OperationExecutor } from './components/OperationExecutor.js';
|
|
30
|
+
export { OperationResultView } from './components/OperationResultView.js';
|
|
31
|
+
export { EventStream } from './components/EventStream.js';
|
|
22
32
|
export { ResizeHandle } from './components/ui/ResizeHandle.js';
|
|
23
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/runtime/views/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wEAAwE;AACxE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,QAAQ;AACR,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/runtime/views/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wEAAwE;AACxE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,QAAQ;AACR,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC7H,OAAO,EAAE,cAAc,EAAoB,MAAM,2BAA2B,CAAC;AAE7E,kBAAkB;AAClB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,GAGvB,MAAM,4BAA4B,CAAC;AAEpC,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Pattern Adapter
|
|
3
|
+
*
|
|
4
|
+
* Maps tech-independent composite view patterns from @specverse/lang
|
|
5
|
+
* to React-specific implementations with hooks and Tailwind styling.
|
|
6
|
+
*
|
|
7
|
+
* This adapter implements the unified view architecture by:
|
|
8
|
+
* 1. Using COMPOSITE_VIEW_PATTERNS as the single source of truth
|
|
9
|
+
* 2. Mapping semantic CURVED operations to React hooks/API calls
|
|
10
|
+
* 3. Rendering using ATOMIC_COMPONENTS_REGISTRY via Tailwind
|
|
11
|
+
*
|
|
12
|
+
* Stage 2: React Adapter Refactor
|
|
13
|
+
*/
|
|
14
|
+
import { COMPOSITE_VIEW_PATTERNS, ATOMIC_COMPONENTS_REGISTRY, type CompositeViewPattern, type CURVEDOperation } from '../core/index.js';
|
|
15
|
+
import { createUniversalTailwindAdapter } from '../tailwind/universal-adapter.js';
|
|
16
|
+
/**
|
|
17
|
+
* React-specific protocol mapping for CURVED operations
|
|
18
|
+
*
|
|
19
|
+
* Maps semantic operations to HTTP methods and endpoints.
|
|
20
|
+
* This is what lives in instance factories for code generation,
|
|
21
|
+
* but for runtime we need it here.
|
|
22
|
+
*/
|
|
23
|
+
export declare const REACT_PROTOCOL_MAPPING: Record<CURVEDOperation, {
|
|
24
|
+
method: string;
|
|
25
|
+
pathPattern: string;
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* React Pattern Adapter Configuration
|
|
29
|
+
*/
|
|
30
|
+
export interface ReactPatternAdapterConfig {
|
|
31
|
+
apiBaseUrl?: string;
|
|
32
|
+
protocolMapping?: Partial<typeof REACT_PROTOCOL_MAPPING>;
|
|
33
|
+
tailwindAdapter?: ReturnType<typeof createUniversalTailwindAdapter>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Pattern rendering context with React-specific data
|
|
37
|
+
*/
|
|
38
|
+
export interface PatternRenderContext {
|
|
39
|
+
pattern: CompositeViewPattern;
|
|
40
|
+
viewSpec: any;
|
|
41
|
+
modelData: Record<string, any[]>;
|
|
42
|
+
modelSchemas?: Record<string, any>;
|
|
43
|
+
primaryModel?: string;
|
|
44
|
+
selectedEntity?: any;
|
|
45
|
+
primaryEntities?: any[];
|
|
46
|
+
protocolMapping: typeof REACT_PROTOCOL_MAPPING;
|
|
47
|
+
tailwindAdapter: ReturnType<typeof createUniversalTailwindAdapter>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* React Pattern Adapter
|
|
51
|
+
*
|
|
52
|
+
* Provides React-specific rendering of tech-independent composite patterns.
|
|
53
|
+
*/
|
|
54
|
+
export declare class ReactPatternAdapter {
|
|
55
|
+
private tailwindAdapter;
|
|
56
|
+
constructor(config?: ReactPatternAdapterConfig);
|
|
57
|
+
/**
|
|
58
|
+
* Detect pattern type from view spec
|
|
59
|
+
*/
|
|
60
|
+
detectPattern(viewSpec: any): CompositeViewPattern | null;
|
|
61
|
+
/**
|
|
62
|
+
* Render a pattern to HTML
|
|
63
|
+
*/
|
|
64
|
+
renderPattern(context: PatternRenderContext, options?: {
|
|
65
|
+
enableListNavigation?: boolean;
|
|
66
|
+
enableRelatedNavigation?: boolean;
|
|
67
|
+
}): string;
|
|
68
|
+
/**
|
|
69
|
+
* Render FormView pattern
|
|
70
|
+
*/
|
|
71
|
+
private renderFormView;
|
|
72
|
+
/**
|
|
73
|
+
* Render ListView pattern
|
|
74
|
+
*/
|
|
75
|
+
private renderListView;
|
|
76
|
+
/**
|
|
77
|
+
* Render DetailView pattern
|
|
78
|
+
*/
|
|
79
|
+
private renderDetailView;
|
|
80
|
+
/**
|
|
81
|
+
* Render multiple list components in a tabbed interface
|
|
82
|
+
*/
|
|
83
|
+
private renderTabbedLists;
|
|
84
|
+
/**
|
|
85
|
+
* Render DashboardView pattern
|
|
86
|
+
*/
|
|
87
|
+
private renderDashboardView;
|
|
88
|
+
/**
|
|
89
|
+
* Render generic data display (fallback)
|
|
90
|
+
*/
|
|
91
|
+
private renderGenericDataDisplay;
|
|
92
|
+
/**
|
|
93
|
+
* Render fallback for unknown patterns
|
|
94
|
+
*/
|
|
95
|
+
private renderFallback;
|
|
96
|
+
/**
|
|
97
|
+
* Helper: Render form component
|
|
98
|
+
*
|
|
99
|
+
* Generates a complete form with:
|
|
100
|
+
* - Inferred field types from model data (text, number, boolean)
|
|
101
|
+
* - Proper input types and validation
|
|
102
|
+
* - Required field indicators
|
|
103
|
+
* - Submit and reset buttons
|
|
104
|
+
* - Professional styling matching admin-demo
|
|
105
|
+
*/
|
|
106
|
+
private renderFormComponent;
|
|
107
|
+
/**
|
|
108
|
+
* Helper: Infer relationship fields from model schema or data
|
|
109
|
+
*
|
|
110
|
+
* Reads relationship definitions from the model schema (like original FormView).
|
|
111
|
+
* Falls back to inferring from foreign keys in data if no schema available.
|
|
112
|
+
*
|
|
113
|
+
* Strategy:
|
|
114
|
+
* 1. Read from schema.relationships (preferred - matches original FormView)
|
|
115
|
+
* 2. If entities exist, scan their fields for foreign keys
|
|
116
|
+
* 3. If no entities, look at available models and infer common relationships
|
|
117
|
+
*/
|
|
118
|
+
private inferRelationshipFields;
|
|
119
|
+
/**
|
|
120
|
+
* Helper: Humanize field name
|
|
121
|
+
* Converts camelCase/snake_case to readable labels
|
|
122
|
+
*/
|
|
123
|
+
private humanizeFieldName;
|
|
124
|
+
/**
|
|
125
|
+
* Helper: Infer field types from model schema or data
|
|
126
|
+
* Prefers schema definitions, falls back to examining actual data
|
|
127
|
+
*/
|
|
128
|
+
private inferFieldTypes;
|
|
129
|
+
/**
|
|
130
|
+
* Helper: Infer field names from model schema
|
|
131
|
+
* Reads schema.attributes to get field definitions
|
|
132
|
+
* Includes belongsTo relationships for display
|
|
133
|
+
*/
|
|
134
|
+
private inferFieldsFromSchema;
|
|
135
|
+
/**
|
|
136
|
+
* Helper: Check if field is auto-generated (shouldn't show in forms)
|
|
137
|
+
*/
|
|
138
|
+
private isAutoGeneratedField;
|
|
139
|
+
/**
|
|
140
|
+
* Helper: Get smart display name for an entity
|
|
141
|
+
*
|
|
142
|
+
* Wrapper around shared getEntityDisplayName utility.
|
|
143
|
+
* Maintained for backward compatibility with excludeRelationship parameter.
|
|
144
|
+
*/
|
|
145
|
+
private getSmartDisplayName;
|
|
146
|
+
/**
|
|
147
|
+
* Helper: Resolve relationship value for display
|
|
148
|
+
*
|
|
149
|
+
* If fieldName is a belongsTo relationship, looks up the related entity
|
|
150
|
+
* and returns its display name. Otherwise returns the raw value.
|
|
151
|
+
*/
|
|
152
|
+
private resolveFieldValue;
|
|
153
|
+
/**
|
|
154
|
+
* Helper: Get navigation info for a relationship field
|
|
155
|
+
*
|
|
156
|
+
* Returns navigation attributes if the field is a belongsTo relationship,
|
|
157
|
+
* null otherwise. Used to make relationship values clickable.
|
|
158
|
+
*/
|
|
159
|
+
private getRelationshipNavInfo;
|
|
160
|
+
/**
|
|
161
|
+
* Helper: Render table component
|
|
162
|
+
*
|
|
163
|
+
* Generates a data table with:
|
|
164
|
+
* - Column headers with proper formatting
|
|
165
|
+
* - Data type-aware value rendering (objects, booleans, etc.)
|
|
166
|
+
* - Relationship field resolution (shows related entity names)
|
|
167
|
+
* - Empty state handling
|
|
168
|
+
* - Hover effects and professional styling
|
|
169
|
+
* - Responsive scrolling
|
|
170
|
+
*/
|
|
171
|
+
private renderTableComponent;
|
|
172
|
+
/**
|
|
173
|
+
* Helper: Render list component
|
|
174
|
+
*
|
|
175
|
+
* Generates a list view with:
|
|
176
|
+
* - Flexible field display (comma-separated or multi-line)
|
|
177
|
+
* - Data type-aware rendering
|
|
178
|
+
* - Relationship field resolution (shows related entity names)
|
|
179
|
+
* - Empty state handling
|
|
180
|
+
* - Professional card-based styling
|
|
181
|
+
*/
|
|
182
|
+
private renderListComponent;
|
|
183
|
+
/**
|
|
184
|
+
* Helper: Render content component (for detail views)
|
|
185
|
+
*
|
|
186
|
+
* Displays specific fields from an entity with rich formatting.
|
|
187
|
+
* Resolves relationship fields to show related entity names.
|
|
188
|
+
* This matches the original DetailView's "content" component behavior.
|
|
189
|
+
*/
|
|
190
|
+
private renderContentComponent;
|
|
191
|
+
/**
|
|
192
|
+
* Helper: Render list component in detail view (for related entities)
|
|
193
|
+
*
|
|
194
|
+
* Shows related entities in a table format.
|
|
195
|
+
* This matches the original DetailView's "list" component behavior.
|
|
196
|
+
*/
|
|
197
|
+
private renderDetailListComponent;
|
|
198
|
+
/**
|
|
199
|
+
* Helper: Render card component
|
|
200
|
+
*
|
|
201
|
+
* Displays entity fields with sophisticated formatting:
|
|
202
|
+
* - Objects: Formatted JSON in code block
|
|
203
|
+
* - Booleans: Yes/No badges
|
|
204
|
+
* - Other values: Plain text
|
|
205
|
+
*/
|
|
206
|
+
private renderCardComponent;
|
|
207
|
+
/**
|
|
208
|
+
* Helper: Render metric card
|
|
209
|
+
*/
|
|
210
|
+
private renderMetricCard;
|
|
211
|
+
/**
|
|
212
|
+
* Helper: Render atomic component
|
|
213
|
+
*/
|
|
214
|
+
private renderAtomicComponent;
|
|
215
|
+
/**
|
|
216
|
+
* Helper: Infer field names from model data
|
|
217
|
+
*
|
|
218
|
+
* Extracts field names from the first entity in modelData for the given model.
|
|
219
|
+
* Filters out system fields like id, createdAt, updatedAt, and foreign key fields.
|
|
220
|
+
*
|
|
221
|
+
* @param modelData - Map of model names to entity arrays
|
|
222
|
+
* @param modelName - Name of the model to extract fields from
|
|
223
|
+
* @returns Array of field names suitable for display
|
|
224
|
+
*/
|
|
225
|
+
private inferFieldsFromModel;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Hook: Use pattern adapter
|
|
229
|
+
*/
|
|
230
|
+
export declare function usePatternAdapter(config?: ReactPatternAdapterConfig): ReactPatternAdapter;
|
|
231
|
+
/**
|
|
232
|
+
* Export pattern registry for external use
|
|
233
|
+
*/
|
|
234
|
+
export { COMPOSITE_VIEW_PATTERNS, ATOMIC_COMPONENTS_REGISTRY };
|
|
235
|
+
//# sourceMappingURL=react-pattern-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-pattern-adapter.d.ts","sourceRoot":"","sources":["../../../../src/runtime/views/react/react-pattern-adapter.tsx"],"names":[],"mappings":"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"}
|