@clusterenvision/ui-framework 1.0.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/README.md +295 -0
- package/dist/ai-assistant-Db002XYC.d.ts +92 -0
- package/dist/ai-assistant-EobSUV70.d.cts +92 -0
- package/dist/browser-DnHpnWwE.d.cts +354 -0
- package/dist/browser-Dx4oKf5e.d.ts +354 -0
- package/dist/browser-signals-07qodpYT.d.cts +66 -0
- package/dist/browser-signals-07qodpYT.d.ts +66 -0
- package/dist/browser-signals.cjs +32 -0
- package/dist/browser-signals.cjs.map +1 -0
- package/dist/browser-signals.d.cts +1 -0
- package/dist/browser-signals.d.ts +1 -0
- package/dist/browser-signals.js +3 -0
- package/dist/browser-signals.js.map +1 -0
- package/dist/browser.cjs +197 -0
- package/dist/browser.cjs.map +1 -0
- package/dist/browser.d.cts +13 -0
- package/dist/browser.d.ts +13 -0
- package/dist/browser.js +12 -0
- package/dist/browser.js.map +1 -0
- package/dist/chunk-22HQL2Y4.js +568 -0
- package/dist/chunk-22HQL2Y4.js.map +1 -0
- package/dist/chunk-3ZBRNFEE.js +1525 -0
- package/dist/chunk-3ZBRNFEE.js.map +1 -0
- package/dist/chunk-4HRORR2Q.js +1953 -0
- package/dist/chunk-4HRORR2Q.js.map +1 -0
- package/dist/chunk-4L3UXVL5.cjs +68 -0
- package/dist/chunk-4L3UXVL5.cjs.map +1 -0
- package/dist/chunk-6BYWFGQY.cjs +226 -0
- package/dist/chunk-6BYWFGQY.cjs.map +1 -0
- package/dist/chunk-7SCIB5HP.js +57 -0
- package/dist/chunk-7SCIB5HP.js.map +1 -0
- package/dist/chunk-BBAUALNU.js +888 -0
- package/dist/chunk-BBAUALNU.js.map +1 -0
- package/dist/chunk-CHLDE4JQ.js +715 -0
- package/dist/chunk-CHLDE4JQ.js.map +1 -0
- package/dist/chunk-CXTAUXLG.cjs +71 -0
- package/dist/chunk-CXTAUXLG.cjs.map +1 -0
- package/dist/chunk-D2USIT6V.js +121 -0
- package/dist/chunk-D2USIT6V.js.map +1 -0
- package/dist/chunk-D3H5CGVD.js +36 -0
- package/dist/chunk-D3H5CGVD.js.map +1 -0
- package/dist/chunk-DQBX75NJ.js +92 -0
- package/dist/chunk-DQBX75NJ.js.map +1 -0
- package/dist/chunk-DRPG2DFX.js +208 -0
- package/dist/chunk-DRPG2DFX.js.map +1 -0
- package/dist/chunk-EFOOXCY7.cjs +41 -0
- package/dist/chunk-EFOOXCY7.cjs.map +1 -0
- package/dist/chunk-FFCZSYC7.cjs +906 -0
- package/dist/chunk-FFCZSYC7.cjs.map +1 -0
- package/dist/chunk-FNXIYAET.cjs +1593 -0
- package/dist/chunk-FNXIYAET.cjs.map +1 -0
- package/dist/chunk-I6GNUM3P.cjs +63 -0
- package/dist/chunk-I6GNUM3P.cjs.map +1 -0
- package/dist/chunk-IHAMVLRY.js +129 -0
- package/dist/chunk-IHAMVLRY.js.map +1 -0
- package/dist/chunk-IRBUKIRF.cjs +133 -0
- package/dist/chunk-IRBUKIRF.cjs.map +1 -0
- package/dist/chunk-KPG5HAHK.cjs +97 -0
- package/dist/chunk-KPG5HAHK.cjs.map +1 -0
- package/dist/chunk-N7Q2ESLG.cjs +130 -0
- package/dist/chunk-N7Q2ESLG.cjs.map +1 -0
- package/dist/chunk-PFBEIFVS.js +180 -0
- package/dist/chunk-PFBEIFVS.js.map +1 -0
- package/dist/chunk-PVZVFICK.cjs +318 -0
- package/dist/chunk-PVZVFICK.cjs.map +1 -0
- package/dist/chunk-Q3KH6HMU.js +305 -0
- package/dist/chunk-Q3KH6HMU.js.map +1 -0
- package/dist/chunk-QPAAV32J.cjs +1985 -0
- package/dist/chunk-QPAAV32J.cjs.map +1 -0
- package/dist/chunk-R6XQUMWT.cjs +61 -0
- package/dist/chunk-R6XQUMWT.cjs.map +1 -0
- package/dist/chunk-SA5UD5B6.js +92 -0
- package/dist/chunk-SA5UD5B6.js.map +1 -0
- package/dist/chunk-SM35JOYD.cjs +211 -0
- package/dist/chunk-SM35JOYD.cjs.map +1 -0
- package/dist/chunk-SZQNIMYI.cjs +592 -0
- package/dist/chunk-SZQNIMYI.cjs.map +1 -0
- package/dist/chunk-T6T7QE4J.js +224 -0
- package/dist/chunk-T6T7QE4J.js.map +1 -0
- package/dist/chunk-TIF372DZ.js +65 -0
- package/dist/chunk-TIF372DZ.js.map +1 -0
- package/dist/chunk-V6JCOBGY.js +69 -0
- package/dist/chunk-V6JCOBGY.js.map +1 -0
- package/dist/chunk-VHUXNDW2.cjs +189 -0
- package/dist/chunk-VHUXNDW2.cjs.map +1 -0
- package/dist/chunk-W3LNNY3U.cjs +729 -0
- package/dist/chunk-W3LNNY3U.cjs.map +1 -0
- package/dist/chunk-ZUWSU4OA.js +61 -0
- package/dist/chunk-ZUWSU4OA.js.map +1 -0
- package/dist/chunk-ZWUA2LPB.cjs +103 -0
- package/dist/chunk-ZWUA2LPB.cjs.map +1 -0
- package/dist/cli/index.cjs +566 -0
- package/dist/cli/index.cjs.map +1 -0
- package/dist/cli/index.d.cts +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +558 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/compiler/index.cjs +80 -0
- package/dist/compiler/index.cjs.map +1 -0
- package/dist/compiler/index.d.cts +130 -0
- package/dist/compiler/index.d.ts +130 -0
- package/dist/compiler/index.js +3 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/component-BVzvepw9.d.cts +90 -0
- package/dist/component-wTxZ2BPD.d.ts +90 -0
- package/dist/index-CpxDa60m.d.cts +644 -0
- package/dist/index-CpxDa60m.d.ts +644 -0
- package/dist/index.cjs +1356 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +165 -0
- package/dist/index.d.ts +165 -0
- package/dist/index.js +772 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/dom.cjs +102 -0
- package/dist/lib/dom.cjs.map +1 -0
- package/dist/lib/dom.d.cts +373 -0
- package/dist/lib/dom.d.ts +373 -0
- package/dist/lib/dom.js +3 -0
- package/dist/lib/dom.js.map +1 -0
- package/dist/lib/icons.cjs +20 -0
- package/dist/lib/icons.cjs.map +1 -0
- package/dist/lib/icons.d.cts +64 -0
- package/dist/lib/icons.d.ts +64 -0
- package/dist/lib/icons.js +3 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/index.cjs +247 -0
- package/dist/lib/index.cjs.map +1 -0
- package/dist/lib/index.d.cts +30 -0
- package/dist/lib/index.d.ts +30 -0
- package/dist/lib/index.js +92 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/theme.cjs +56 -0
- package/dist/lib/theme.cjs.map +1 -0
- package/dist/lib/theme.d.cts +27 -0
- package/dist/lib/theme.d.ts +27 -0
- package/dist/lib/theme.js +3 -0
- package/dist/lib/theme.js.map +1 -0
- package/dist/router-B9kms5XQ.d.ts +124 -0
- package/dist/router-YnpW_sIK.d.cts +124 -0
- package/dist/runtime/adapters/angular.cjs +48 -0
- package/dist/runtime/adapters/angular.cjs.map +1 -0
- package/dist/runtime/adapters/angular.d.cts +38 -0
- package/dist/runtime/adapters/angular.d.ts +38 -0
- package/dist/runtime/adapters/angular.js +46 -0
- package/dist/runtime/adapters/angular.js.map +1 -0
- package/dist/runtime/adapters/react.cjs +41 -0
- package/dist/runtime/adapters/react.cjs.map +1 -0
- package/dist/runtime/adapters/react.d.cts +26 -0
- package/dist/runtime/adapters/react.d.ts +26 -0
- package/dist/runtime/adapters/react.js +39 -0
- package/dist/runtime/adapters/react.js.map +1 -0
- package/dist/runtime/adapters/vue.cjs +44 -0
- package/dist/runtime/adapters/vue.cjs.map +1 -0
- package/dist/runtime/adapters/vue.d.cts +37 -0
- package/dist/runtime/adapters/vue.d.ts +37 -0
- package/dist/runtime/adapters/vue.js +42 -0
- package/dist/runtime/adapters/vue.js.map +1 -0
- package/dist/runtime/components/ai-assistant.cjs +18 -0
- package/dist/runtime/components/ai-assistant.cjs.map +1 -0
- package/dist/runtime/components/ai-assistant.d.cts +8 -0
- package/dist/runtime/components/ai-assistant.d.ts +8 -0
- package/dist/runtime/components/ai-assistant.js +9 -0
- package/dist/runtime/components/ai-assistant.js.map +1 -0
- package/dist/runtime/components/ai-summary-card.cjs +18 -0
- package/dist/runtime/components/ai-summary-card.cjs.map +1 -0
- package/dist/runtime/components/ai-summary-card.d.cts +19 -0
- package/dist/runtime/components/ai-summary-card.d.ts +19 -0
- package/dist/runtime/components/ai-summary-card.js +9 -0
- package/dist/runtime/components/ai-summary-card.js.map +1 -0
- package/dist/runtime/router.cjs +429 -0
- package/dist/runtime/router.cjs.map +1 -0
- package/dist/runtime/router.d.cts +2 -0
- package/dist/runtime/router.d.ts +2 -0
- package/dist/runtime/router.js +421 -0
- package/dist/runtime/router.js.map +1 -0
- package/dist/runtime/server.cjs +125 -0
- package/dist/runtime/server.cjs.map +1 -0
- package/dist/runtime/server.d.cts +27 -0
- package/dist/runtime/server.d.ts +27 -0
- package/dist/runtime/server.js +117 -0
- package/dist/runtime/server.js.map +1 -0
- package/dist/runtime/workflow/index.cjs +282 -0
- package/dist/runtime/workflow/index.cjs.map +1 -0
- package/dist/runtime/workflow/index.d.cts +1 -0
- package/dist/runtime/workflow/index.d.ts +1 -0
- package/dist/runtime/workflow/index.js +5 -0
- package/dist/runtime/workflow/index.js.map +1 -0
- package/dist/tracing-DGdvMCEl.d.cts +109 -0
- package/dist/tracing-DGdvMCEl.d.ts +109 -0
- package/dist/types-C4RXXKfk.d.cts +76 -0
- package/dist/types-C4RXXKfk.d.ts +76 -0
- package/package.json +166 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkZWUA2LPB_cjs = require('./chunk-ZWUA2LPB.cjs');
|
|
4
|
+
|
|
5
|
+
// src/runtime/errors.js
|
|
6
|
+
var boundaryStack = [];
|
|
7
|
+
function withRuntimeErrorBoundary(boundary, run) {
|
|
8
|
+
pushRuntimeErrorBoundary(boundary);
|
|
9
|
+
let result;
|
|
10
|
+
try {
|
|
11
|
+
result = run();
|
|
12
|
+
} catch (error) {
|
|
13
|
+
popRuntimeErrorBoundary(boundary);
|
|
14
|
+
throw error;
|
|
15
|
+
}
|
|
16
|
+
if (isPromiseLike(result)) {
|
|
17
|
+
return result.finally(() => {
|
|
18
|
+
popRuntimeErrorBoundary(boundary);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
popRuntimeErrorBoundary(boundary);
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
function pushRuntimeErrorBoundary(boundary) {
|
|
25
|
+
boundaryStack.push(boundary);
|
|
26
|
+
}
|
|
27
|
+
function popRuntimeErrorBoundary(boundary) {
|
|
28
|
+
const index = boundaryStack.lastIndexOf(boundary);
|
|
29
|
+
if (index === -1) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
boundaryStack.splice(index, 1);
|
|
33
|
+
}
|
|
34
|
+
function captureRuntimeError(error, info) {
|
|
35
|
+
let normalized = normalizeError(error, info);
|
|
36
|
+
for (let i = boundaryStack.length - 1; i >= 0; i -= 1) {
|
|
37
|
+
const boundary = boundaryStack[i];
|
|
38
|
+
try {
|
|
39
|
+
const handled = boundary.handle(normalized, info);
|
|
40
|
+
if (handled !== false) {
|
|
41
|
+
chunkZWUA2LPB_cjs.emitRuntimeErrorReport({
|
|
42
|
+
error: normalized,
|
|
43
|
+
info,
|
|
44
|
+
handled: true,
|
|
45
|
+
boundaryId: boundary.id
|
|
46
|
+
});
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
} catch (boundaryError) {
|
|
50
|
+
normalized = normalizeError(boundaryError, info);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
chunkZWUA2LPB_cjs.emitRuntimeErrorReport({
|
|
54
|
+
error: normalized,
|
|
55
|
+
info,
|
|
56
|
+
handled: false
|
|
57
|
+
});
|
|
58
|
+
throw normalized;
|
|
59
|
+
}
|
|
60
|
+
function normalizeError(error, info) {
|
|
61
|
+
const normalized = error instanceof Error ? error : new Error(String(error));
|
|
62
|
+
const details = formatErrorInfo(info);
|
|
63
|
+
if (details && !normalized.message.includes(details)) {
|
|
64
|
+
normalized.message = `${normalized.message}
|
|
65
|
+
[ce-ui] ${details}`;
|
|
66
|
+
}
|
|
67
|
+
return normalized;
|
|
68
|
+
}
|
|
69
|
+
function formatErrorInfo(info) {
|
|
70
|
+
const segments = [`phase=${info.phase}`];
|
|
71
|
+
if (info.componentName) {
|
|
72
|
+
segments.push(`component=${info.componentName}`);
|
|
73
|
+
}
|
|
74
|
+
if (info.componentInstanceId) {
|
|
75
|
+
segments.push(`instance=${info.componentInstanceId}`);
|
|
76
|
+
}
|
|
77
|
+
if (info.templateId) {
|
|
78
|
+
segments.push(`template=${info.templateId}`);
|
|
79
|
+
}
|
|
80
|
+
if (info.effectName) {
|
|
81
|
+
segments.push(`effect=${info.effectName}`);
|
|
82
|
+
}
|
|
83
|
+
if (info.attributes && Object.keys(info.attributes).length > 0) {
|
|
84
|
+
segments.push(`attributes=${JSON.stringify(info.attributes)}`);
|
|
85
|
+
}
|
|
86
|
+
return segments.join(" ");
|
|
87
|
+
}
|
|
88
|
+
function isPromiseLike(value) {
|
|
89
|
+
return Boolean(value) && typeof value === "object" && "then" in value;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
exports.captureRuntimeError = captureRuntimeError;
|
|
93
|
+
exports.popRuntimeErrorBoundary = popRuntimeErrorBoundary;
|
|
94
|
+
exports.pushRuntimeErrorBoundary = pushRuntimeErrorBoundary;
|
|
95
|
+
exports.withRuntimeErrorBoundary = withRuntimeErrorBoundary;
|
|
96
|
+
//# sourceMappingURL=chunk-KPG5HAHK.cjs.map
|
|
97
|
+
//# sourceMappingURL=chunk-KPG5HAHK.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/runtime/errors.js"],"names":["emitRuntimeErrorReport"],"mappings":"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","file":"chunk-KPG5HAHK.cjs","sourcesContent":["import { emitRuntimeErrorReport } from './error-bus.js';\n\nconst boundaryStack = [];\n\nexport function withRuntimeErrorBoundary(boundary, run) {\n pushRuntimeErrorBoundary(boundary);\n let result;\n try {\n result = run();\n } catch (error) {\n popRuntimeErrorBoundary(boundary);\n throw error;\n }\n if (isPromiseLike(result)) {\n return result.finally(() => {\n popRuntimeErrorBoundary(boundary);\n });\n }\n popRuntimeErrorBoundary(boundary);\n return result;\n}\n\nexport function pushRuntimeErrorBoundary(boundary) {\n boundaryStack.push(boundary);\n}\n\nexport function popRuntimeErrorBoundary(boundary) {\n const index = boundaryStack.lastIndexOf(boundary);\n if (index === -1) {\n return;\n }\n boundaryStack.splice(index, 1);\n}\n\nexport function captureRuntimeError(error, info) {\n let normalized = normalizeError(error, info);\n for (let i = boundaryStack.length - 1; i >= 0; i -= 1) {\n const boundary = boundaryStack[i];\n try {\n const handled = boundary.handle(normalized, info);\n if (handled !== false) {\n emitRuntimeErrorReport({\n error: normalized,\n info,\n handled: true,\n boundaryId: boundary.id,\n });\n return true;\n }\n } catch (boundaryError) {\n normalized = normalizeError(boundaryError, info);\n }\n }\n emitRuntimeErrorReport({\n error: normalized,\n info,\n handled: false,\n });\n throw normalized;\n}\n\nfunction normalizeError(error, info) {\n const normalized = error instanceof Error ? error : new Error(String(error));\n const details = formatErrorInfo(info);\n if (details && !normalized.message.includes(details)) {\n normalized.message = `${normalized.message}\\n[ce-ui] ${details}`;\n }\n return normalized;\n}\n\nfunction formatErrorInfo(info) {\n const segments = [`phase=${info.phase}`];\n if (info.componentName) {\n segments.push(`component=${info.componentName}`);\n }\n if (info.componentInstanceId) {\n segments.push(`instance=${info.componentInstanceId}`);\n }\n if (info.templateId) {\n segments.push(`template=${info.templateId}`);\n }\n if (info.effectName) {\n segments.push(`effect=${info.effectName}`);\n }\n if (info.attributes && Object.keys(info.attributes).length > 0) {\n segments.push(`attributes=${JSON.stringify(info.attributes)}`);\n }\n return segments.join(' ');\n}\n\nfunction isPromiseLike(value) {\n return Boolean(value) && typeof value === 'object' && 'then' in value;\n}\n"]}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkSM35JOYD_cjs = require('./chunk-SM35JOYD.cjs');
|
|
4
|
+
|
|
5
|
+
// src/runtime/tracing.ts
|
|
6
|
+
var NoopRuntimeTraceSink = class {
|
|
7
|
+
record() {
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var RuntimeTraceExporterSink = class {
|
|
11
|
+
constructor(exporter) {
|
|
12
|
+
this.exporter = exporter;
|
|
13
|
+
}
|
|
14
|
+
exporter;
|
|
15
|
+
record(event) {
|
|
16
|
+
void this.exporter.export(mapRuntimeTraceEvent(event));
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
var traceSinkStack = [];
|
|
20
|
+
var runtimeTraceSink;
|
|
21
|
+
var traceIdCounter = 0;
|
|
22
|
+
var envConfiguredTraceSink = resolveTraceSinkFromEnv();
|
|
23
|
+
if (envConfiguredTraceSink) {
|
|
24
|
+
setRuntimeTraceSink(envConfiguredTraceSink);
|
|
25
|
+
}
|
|
26
|
+
function setRuntimeTraceSink(sink) {
|
|
27
|
+
runtimeTraceSink = sink;
|
|
28
|
+
}
|
|
29
|
+
function withRuntimeTraceSink(sink, run) {
|
|
30
|
+
if (!sink) {
|
|
31
|
+
return run();
|
|
32
|
+
}
|
|
33
|
+
traceSinkStack.push(sink);
|
|
34
|
+
try {
|
|
35
|
+
const result = run();
|
|
36
|
+
if (isPromiseLike(result)) {
|
|
37
|
+
return Promise.resolve(result).finally(() => {
|
|
38
|
+
popTraceSink(sink);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
popTraceSink(sink);
|
|
42
|
+
return result;
|
|
43
|
+
} catch (error) {
|
|
44
|
+
popTraceSink(sink);
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function popTraceSink(expected) {
|
|
49
|
+
if (traceSinkStack[traceSinkStack.length - 1] === expected) {
|
|
50
|
+
traceSinkStack.pop();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function isPromiseLike(value) {
|
|
54
|
+
if (typeof value !== "object" || value === null) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return typeof value.then === "function";
|
|
58
|
+
}
|
|
59
|
+
function getCurrentRuntimeTraceSink() {
|
|
60
|
+
return traceSinkStack[traceSinkStack.length - 1] ?? runtimeTraceSink;
|
|
61
|
+
}
|
|
62
|
+
function hasRuntimeTraceSink() {
|
|
63
|
+
return Boolean(getCurrentRuntimeTraceSink());
|
|
64
|
+
}
|
|
65
|
+
function recordRuntimeTrace(event) {
|
|
66
|
+
const sink = getCurrentRuntimeTraceSink();
|
|
67
|
+
if (!sink) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
void sink.record({
|
|
71
|
+
...event,
|
|
72
|
+
timestamp: event.timestamp ?? /* @__PURE__ */ new Date()
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function nextRuntimeTraceId(prefix) {
|
|
76
|
+
traceIdCounter += 1;
|
|
77
|
+
return `${prefix}-${String(traceIdCounter)}`;
|
|
78
|
+
}
|
|
79
|
+
function mapRuntimeTraceEvent(event) {
|
|
80
|
+
const timestamp = event.timestamp ?? /* @__PURE__ */ new Date();
|
|
81
|
+
return {
|
|
82
|
+
type: event.type,
|
|
83
|
+
timestamp,
|
|
84
|
+
attributes: compact({
|
|
85
|
+
componentName: event.componentName,
|
|
86
|
+
componentInstanceId: event.componentInstanceId,
|
|
87
|
+
templateId: event.templateId,
|
|
88
|
+
effectId: event.effectId,
|
|
89
|
+
signalId: event.signalId,
|
|
90
|
+
middlewareName: event.middlewareName,
|
|
91
|
+
middlewareIndex: event.middlewareIndex,
|
|
92
|
+
requestId: event.requestId,
|
|
93
|
+
...event.attributes
|
|
94
|
+
})
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function compact(record) {
|
|
98
|
+
if (!record) {
|
|
99
|
+
return void 0;
|
|
100
|
+
}
|
|
101
|
+
const entries = Object.entries(record).filter(([, value]) => typeof value !== "undefined");
|
|
102
|
+
if (entries.length === 0) {
|
|
103
|
+
return void 0;
|
|
104
|
+
}
|
|
105
|
+
return Object.fromEntries(entries);
|
|
106
|
+
}
|
|
107
|
+
function resolveTraceSinkFromEnv() {
|
|
108
|
+
const env = globalThis.process?.env;
|
|
109
|
+
const filePath = env?.CEUI_RUNTIME_TRACE_FILE;
|
|
110
|
+
if (!filePath) {
|
|
111
|
+
return void 0;
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
return new RuntimeTraceExporterSink(new chunkSM35JOYD_cjs.JsonlTraceExporter({ filePath }));
|
|
115
|
+
} catch (error) {
|
|
116
|
+
console.warn("Failed to configure runtime trace sink from CEUI_RUNTIME_TRACE_FILE", error);
|
|
117
|
+
return void 0;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
exports.NoopRuntimeTraceSink = NoopRuntimeTraceSink;
|
|
122
|
+
exports.RuntimeTraceExporterSink = RuntimeTraceExporterSink;
|
|
123
|
+
exports.getCurrentRuntimeTraceSink = getCurrentRuntimeTraceSink;
|
|
124
|
+
exports.hasRuntimeTraceSink = hasRuntimeTraceSink;
|
|
125
|
+
exports.nextRuntimeTraceId = nextRuntimeTraceId;
|
|
126
|
+
exports.recordRuntimeTrace = recordRuntimeTrace;
|
|
127
|
+
exports.setRuntimeTraceSink = setRuntimeTraceSink;
|
|
128
|
+
exports.withRuntimeTraceSink = withRuntimeTraceSink;
|
|
129
|
+
//# sourceMappingURL=chunk-N7Q2ESLG.cjs.map
|
|
130
|
+
//# sourceMappingURL=chunk-N7Q2ESLG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/runtime/tracing.ts"],"names":["JsonlTraceExporter"],"mappings":"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","file":"chunk-N7Q2ESLG.cjs","sourcesContent":["import { JsonlTraceExporter } from './shared/trace.js';\nimport type { TraceEventPayload, TraceExporter } from './shared/trace.js';\nexport type RuntimeTraceEventType =\n | 'component.mount.started'\n | 'component.mount.completed'\n | 'component.destroyed'\n | 'component.props.updated'\n | 'template.render.started'\n | 'template.render.completed'\n | 'signals.effect.created'\n | 'signals.effect.run'\n | 'signals.effect.completed'\n | 'signals.effect.scheduled'\n | 'signals.effect.disposed'\n | 'signals.signal.read'\n | 'signals.signal.written'\n | 'signals.batch.started'\n | 'signals.batch.completed'\n | 'ssr.render.started'\n | 'ssr.render.completed'\n | 'server.request.started'\n | 'server.request.completed'\n | 'server.middleware.started'\n | 'server.middleware.completed';\n\nexport interface RuntimeTraceEvent {\n type: RuntimeTraceEventType;\n timestamp?: Date;\n componentName?: string;\n componentInstanceId?: string;\n templateId?: string;\n effectId?: string;\n signalId?: string;\n middlewareName?: string;\n middlewareIndex?: number;\n requestId?: string;\n attributes?: Record<string, unknown>;\n}\n\nexport interface RuntimeTraceSink {\n record(event: RuntimeTraceEvent): void | Promise<void>;\n}\n\nexport class NoopRuntimeTraceSink implements RuntimeTraceSink {\n record(): void {\n // noop\n }\n}\n\nexport class RuntimeTraceExporterSink implements RuntimeTraceSink {\n constructor(private readonly exporter: TraceExporter) {}\n\n record(event: RuntimeTraceEvent): void {\n void this.exporter.export(mapRuntimeTraceEvent(event));\n }\n}\n\ntype TraceEventInput = Omit<RuntimeTraceEvent, 'timestamp'> & { timestamp?: Date };\n\nconst traceSinkStack: RuntimeTraceSink[] = [];\nlet runtimeTraceSink: RuntimeTraceSink | undefined;\nlet traceIdCounter = 0;\n\nconst envConfiguredTraceSink = resolveTraceSinkFromEnv();\nif (envConfiguredTraceSink) {\n setRuntimeTraceSink(envConfiguredTraceSink);\n}\n\nexport function setRuntimeTraceSink(sink: RuntimeTraceSink | undefined): void {\n runtimeTraceSink = sink;\n}\n\nexport function withRuntimeTraceSink<T>(sink: RuntimeTraceSink | undefined, run: () => T): T {\n if (!sink) {\n return run();\n }\n traceSinkStack.push(sink);\n try {\n const result = run();\n if (isPromiseLike(result)) {\n return Promise.resolve(result).finally(() => {\n popTraceSink(sink);\n }) as T;\n }\n popTraceSink(sink);\n return result;\n } catch (error) {\n popTraceSink(sink);\n throw error;\n }\n}\n\nfunction popTraceSink(expected: RuntimeTraceSink) {\n if (traceSinkStack[traceSinkStack.length - 1] === expected) {\n traceSinkStack.pop();\n }\n}\n\nfunction isPromiseLike<T>(value: unknown): value is PromiseLike<T> {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n return typeof (value as { then?: unknown }).then === 'function';\n}\n\nexport function getCurrentRuntimeTraceSink(): RuntimeTraceSink | undefined {\n return traceSinkStack[traceSinkStack.length - 1] ?? runtimeTraceSink;\n}\n\nexport function hasRuntimeTraceSink(): boolean {\n return Boolean(getCurrentRuntimeTraceSink());\n}\n\nexport function recordRuntimeTrace(event: TraceEventInput): void {\n const sink = getCurrentRuntimeTraceSink();\n if (!sink) {\n return;\n }\n void sink.record({\n ...event,\n timestamp: event.timestamp ?? new Date(),\n });\n}\n\nexport function nextRuntimeTraceId(prefix: string): string {\n traceIdCounter += 1;\n return `${prefix}-${String(traceIdCounter)}`;\n}\n\nfunction mapRuntimeTraceEvent(event: RuntimeTraceEvent): TraceEventPayload {\n const timestamp = event.timestamp ?? new Date();\n return {\n type: event.type,\n timestamp,\n attributes: compact({\n componentName: event.componentName,\n componentInstanceId: event.componentInstanceId,\n templateId: event.templateId,\n effectId: event.effectId,\n signalId: event.signalId,\n middlewareName: event.middlewareName,\n middlewareIndex: event.middlewareIndex,\n requestId: event.requestId,\n ...event.attributes,\n }),\n };\n}\n\nfunction compact(record: Record<string, unknown> | undefined): Record<string, unknown> | undefined {\n if (!record) {\n return undefined;\n }\n const entries = Object.entries(record).filter(([, value]) => typeof value !== 'undefined');\n if (entries.length === 0) {\n return undefined;\n }\n return Object.fromEntries(entries);\n}\n\nfunction resolveTraceSinkFromEnv(): RuntimeTraceSink | undefined {\n const env = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process?.env;\n const filePath = env?.CEUI_RUNTIME_TRACE_FILE;\n if (!filePath) {\n return undefined;\n }\n try {\n return new RuntimeTraceExporterSink(new JsonlTraceExporter({ filePath }));\n } catch (error) {\n console.warn('Failed to configure runtime trace sink from CEUI_RUNTIME_TRACE_FILE', error);\n return undefined;\n }\n}\n"]}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
// src/runtime/signals.js
|
|
2
|
+
var effectStack = [];
|
|
3
|
+
var batchDepth = 0;
|
|
4
|
+
var pendingEffects = /* @__PURE__ */ new Set();
|
|
5
|
+
var signalRegistry = /* @__PURE__ */ new Set();
|
|
6
|
+
var effectRegistry = /* @__PURE__ */ new Set();
|
|
7
|
+
function getActiveEffect() {
|
|
8
|
+
return effectStack[effectStack.length - 1] ?? null;
|
|
9
|
+
}
|
|
10
|
+
var Signal = class _Signal {
|
|
11
|
+
constructor(initial) {
|
|
12
|
+
this.id = `signal-${_Signal.counter++}`;
|
|
13
|
+
this.subscribers = /* @__PURE__ */ new Set();
|
|
14
|
+
this.value = initial;
|
|
15
|
+
signalRegistry.add(this);
|
|
16
|
+
}
|
|
17
|
+
read() {
|
|
18
|
+
const currentEffect = getActiveEffect();
|
|
19
|
+
if (currentEffect) {
|
|
20
|
+
this.subscribers.add(currentEffect);
|
|
21
|
+
currentEffect.track(this);
|
|
22
|
+
}
|
|
23
|
+
return this.value;
|
|
24
|
+
}
|
|
25
|
+
write(next) {
|
|
26
|
+
if (Object.is(this.value, next)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.value = next;
|
|
30
|
+
this.notify();
|
|
31
|
+
}
|
|
32
|
+
update(updater) {
|
|
33
|
+
this.write(updater(this.value));
|
|
34
|
+
}
|
|
35
|
+
subscribe(listener) {
|
|
36
|
+
const dispose = effect(() => {
|
|
37
|
+
listener(this.read());
|
|
38
|
+
});
|
|
39
|
+
return () => {
|
|
40
|
+
dispose();
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
notify() {
|
|
44
|
+
const subscribers = Array.from(this.subscribers);
|
|
45
|
+
subscribers.forEach((sub) => {
|
|
46
|
+
sub.schedule();
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
detach(effect2) {
|
|
50
|
+
this.subscribers.delete(effect2);
|
|
51
|
+
}
|
|
52
|
+
getDebugInfo() {
|
|
53
|
+
return {
|
|
54
|
+
id: this.id,
|
|
55
|
+
value: this.value,
|
|
56
|
+
subscribers: this.subscribers.size
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
Signal.counter = 0;
|
|
61
|
+
var Effect = class _Effect {
|
|
62
|
+
constructor(fn, options = {}) {
|
|
63
|
+
this.fn = fn;
|
|
64
|
+
this.scheduler = options.scheduler ?? queueEffect;
|
|
65
|
+
this.trackedSignals = /* @__PURE__ */ new Set();
|
|
66
|
+
this.scheduled = false;
|
|
67
|
+
this.id = `effect-${_Effect.counter++}`;
|
|
68
|
+
this.name = options.name ?? "effect";
|
|
69
|
+
this.attributes = options.attributes;
|
|
70
|
+
effectRegistry.add(this);
|
|
71
|
+
this.flush = () => {
|
|
72
|
+
this.scheduled = false;
|
|
73
|
+
this.run();
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
run() {
|
|
77
|
+
this.cleanup();
|
|
78
|
+
effectStack.push(this);
|
|
79
|
+
try {
|
|
80
|
+
this.fn();
|
|
81
|
+
} finally {
|
|
82
|
+
effectStack.pop();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
track(signal2) {
|
|
86
|
+
this.trackedSignals.add(signal2);
|
|
87
|
+
}
|
|
88
|
+
schedule() {
|
|
89
|
+
if (batchDepth > 0) {
|
|
90
|
+
pendingEffects.add(this);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (this.scheduled) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
this.scheduled = true;
|
|
97
|
+
this.scheduler(this);
|
|
98
|
+
}
|
|
99
|
+
cleanup() {
|
|
100
|
+
this.trackedSignals.forEach((signal2) => {
|
|
101
|
+
signal2.detach(this);
|
|
102
|
+
});
|
|
103
|
+
this.trackedSignals.clear();
|
|
104
|
+
if (this.teardown) {
|
|
105
|
+
this.teardown();
|
|
106
|
+
this.teardown = void 0;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
setTeardown(cb) {
|
|
110
|
+
this.teardown = cb;
|
|
111
|
+
}
|
|
112
|
+
getDebugInfo() {
|
|
113
|
+
return {
|
|
114
|
+
id: this.id,
|
|
115
|
+
name: this.name,
|
|
116
|
+
scheduled: this.scheduled,
|
|
117
|
+
trackedSignals: this.trackedSignals.size,
|
|
118
|
+
trackedSignalIds: Array.from(this.trackedSignals).map((signal2) => signal2.getDebugInfo().id),
|
|
119
|
+
attributes: this.attributes
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
Effect.counter = 0;
|
|
124
|
+
function queueEffect(effect2) {
|
|
125
|
+
effect2.flush();
|
|
126
|
+
}
|
|
127
|
+
function batch(fn) {
|
|
128
|
+
batchDepth++;
|
|
129
|
+
try {
|
|
130
|
+
return fn();
|
|
131
|
+
} finally {
|
|
132
|
+
batchDepth--;
|
|
133
|
+
if (batchDepth === 0) {
|
|
134
|
+
pendingEffects.forEach((effect2) => {
|
|
135
|
+
effect2.flush();
|
|
136
|
+
});
|
|
137
|
+
pendingEffects.clear();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function signal(initial) {
|
|
142
|
+
const internal = new Signal(initial);
|
|
143
|
+
const accessor = (() => internal.read());
|
|
144
|
+
accessor.set = (value) => {
|
|
145
|
+
internal.write(value);
|
|
146
|
+
};
|
|
147
|
+
accessor.update = (recipe) => {
|
|
148
|
+
internal.update(recipe);
|
|
149
|
+
};
|
|
150
|
+
accessor.subscribe = (listener) => internal.subscribe(listener);
|
|
151
|
+
return accessor;
|
|
152
|
+
}
|
|
153
|
+
function computed(producer) {
|
|
154
|
+
const result = signal(void 0);
|
|
155
|
+
effect(() => {
|
|
156
|
+
result.set(producer());
|
|
157
|
+
});
|
|
158
|
+
return result;
|
|
159
|
+
}
|
|
160
|
+
function effect(fn, options) {
|
|
161
|
+
const runner = new Effect(fn, options);
|
|
162
|
+
runner.run();
|
|
163
|
+
return () => {
|
|
164
|
+
runner.cleanup();
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
function getSignalsInspectorSnapshot() {
|
|
168
|
+
return {
|
|
169
|
+
signals: Array.from(signalRegistry).map((signal2) => signal2.getDebugInfo()),
|
|
170
|
+
effects: Array.from(effectRegistry).map((effect2) => effect2.getDebugInfo())
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
function clearSignalsInspectorRegistry() {
|
|
174
|
+
signalRegistry.clear();
|
|
175
|
+
effectRegistry.clear();
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export { Effect, Signal, batch, clearSignalsInspectorRegistry, computed, effect, getSignalsInspectorSnapshot, signal };
|
|
179
|
+
//# sourceMappingURL=chunk-PFBEIFVS.js.map
|
|
180
|
+
//# sourceMappingURL=chunk-PFBEIFVS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/runtime/signals.js"],"names":["effect","signal"],"mappings":"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","file":"chunk-PFBEIFVS.js","sourcesContent":["const effectStack = [];\nlet batchDepth = 0;\nconst pendingEffects = new Set();\nconst signalRegistry = new Set();\nconst effectRegistry = new Set();\n\nfunction getActiveEffect() {\n return effectStack[effectStack.length - 1] ?? null;\n}\nexport class Signal {\n constructor(initial) {\n this.id = `signal-${Signal.counter++}`;\n this.subscribers = new Set();\n this.value = initial;\n signalRegistry.add(this);\n }\n read() {\n const currentEffect = getActiveEffect();\n if (currentEffect) {\n this.subscribers.add(currentEffect);\n currentEffect.track(this);\n }\n return this.value;\n }\n write(next) {\n if (Object.is(this.value, next)) {\n return;\n }\n this.value = next;\n this.notify();\n }\n update(updater) {\n this.write(updater(this.value));\n }\n subscribe(listener) {\n const dispose = effect(() => {\n listener(this.read());\n });\n return () => {\n dispose();\n };\n }\n notify() {\n const subscribers = Array.from(this.subscribers);\n subscribers.forEach(sub => {\n sub.schedule();\n });\n }\n detach(effect) {\n this.subscribers.delete(effect);\n }\n getDebugInfo() {\n return {\n id: this.id,\n value: this.value,\n subscribers: this.subscribers.size,\n };\n }\n}\nSignal.counter = 0;\nexport class Effect {\n constructor(fn, options = {}) {\n this.fn = fn;\n this.scheduler = options.scheduler ?? queueEffect;\n this.trackedSignals = new Set();\n this.scheduled = false;\n this.id = `effect-${Effect.counter++}`;\n this.name = options.name ?? 'effect';\n this.attributes = options.attributes;\n effectRegistry.add(this);\n this.flush = () => {\n this.scheduled = false;\n this.run();\n };\n }\n run() {\n this.cleanup();\n effectStack.push(this);\n try {\n this.fn();\n }\n finally {\n effectStack.pop();\n }\n }\n track(signal) {\n this.trackedSignals.add(signal);\n }\n schedule() {\n if (batchDepth > 0) {\n pendingEffects.add(this);\n return;\n }\n if (this.scheduled) {\n return;\n }\n this.scheduled = true;\n this.scheduler(this);\n }\n cleanup() {\n this.trackedSignals.forEach(signal => {\n signal.detach(this);\n });\n this.trackedSignals.clear();\n if (this.teardown) {\n this.teardown();\n this.teardown = undefined;\n }\n }\n setTeardown(cb) {\n this.teardown = cb;\n }\n getDebugInfo() {\n return {\n id: this.id,\n name: this.name,\n scheduled: this.scheduled,\n trackedSignals: this.trackedSignals.size,\n trackedSignalIds: Array.from(this.trackedSignals).map(signal => signal.getDebugInfo().id),\n attributes: this.attributes,\n };\n }\n}\nEffect.counter = 0;\nfunction queueEffect(effect) {\n effect.flush();\n}\nexport function batch(fn) {\n batchDepth++;\n try {\n return fn();\n }\n finally {\n batchDepth--;\n if (batchDepth === 0) {\n pendingEffects.forEach(effect => {\n effect.flush();\n });\n pendingEffects.clear();\n }\n }\n}\nexport function signal(initial) {\n const internal = new Signal(initial);\n const accessor = (() => internal.read());\n accessor.set = value => {\n internal.write(value);\n };\n accessor.update = recipe => {\n internal.update(recipe);\n };\n accessor.subscribe = listener => internal.subscribe(listener);\n return accessor;\n}\nexport function computed(producer) {\n const result = signal(undefined);\n effect(() => {\n result.set(producer());\n });\n return result;\n}\nexport function effect(fn, options) {\n const runner = new Effect(fn, options);\n runner.run();\n return () => {\n runner.cleanup();\n };\n}\nexport function getSignalsInspectorSnapshot() {\n return {\n signals: Array.from(signalRegistry).map(signal => signal.getDebugInfo()),\n effects: Array.from(effectRegistry).map(effect => effect.getDebugInfo()),\n };\n}\nexport function clearSignalsInspectorRegistry() {\n signalRegistry.clear();\n effectRegistry.clear();\n}\n"]}
|