@nice-code/action 0.2.18 → 0.2.19
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/build/devtools/browser/index.js +531 -179
- package/build/index.js +21 -1
- package/build/types/ActionRuntime/ActionRuntime.d.ts +1 -0
- package/build/types/ActionRuntime/Handler/ExternalClient/ActionExternalClientHandler.d.ts +1 -0
- package/build/types/devtools/browser/components/DomainChip.d.ts +2 -1
- package/build/types/devtools/browser/components/StackTraceSection.d.ts +4 -2
- package/build/types/devtools/browser/devtools_storage.d.ts +6 -0
- package/build/types/devtools/core/ActionDevtools.types.d.ts +2 -5
- package/build/types/errors/err_nice_action.d.ts +2 -0
- package/package.json +4 -3
|
@@ -1957,7 +1957,7 @@ class ActionDevtoolsCore {
|
|
|
1957
1957
|
}
|
|
1958
1958
|
}
|
|
1959
1959
|
// src/devtools/browser/NiceActionDevtools.tsx
|
|
1960
|
-
import { useEffect as useEffect3, useMemo as useMemo2, useRef, useState as useState9 } from "react";
|
|
1960
|
+
import { useEffect as useEffect3, useMemo as useMemo2, useRef as useRef2, useState as useState9 } from "react";
|
|
1961
1961
|
|
|
1962
1962
|
// src/devtools/core/devtools_colors.ts
|
|
1963
1963
|
var DEVTOOL_COLOR_SEMANTIC_ERROR = "#FF5C5C";
|
|
@@ -2068,7 +2068,7 @@ var SEMANTIC_COLORS = {
|
|
|
2068
2068
|
};
|
|
2069
2069
|
|
|
2070
2070
|
// src/devtools/browser/components/action_detail/ActionDetailPanel.tsx
|
|
2071
|
-
import { useMemo, useState as
|
|
2071
|
+
import { useMemo, useState as useState7 } from "react";
|
|
2072
2072
|
|
|
2073
2073
|
// src/devtools/browser/ui_util/size.ts
|
|
2074
2074
|
function getSizeValue(size) {
|
|
@@ -2392,7 +2392,13 @@ function NiceErrorDisplay({
|
|
|
2392
2392
|
}
|
|
2393
2393
|
|
|
2394
2394
|
// src/devtools/browser/components/StackTraceSection.tsx
|
|
2395
|
-
import {
|
|
2395
|
+
import { ExternalLink } from "lucide-react";
|
|
2396
|
+
import { useEffect, useRef, useState as useState2 } from "react";
|
|
2397
|
+
|
|
2398
|
+
// src/devtools/browser/devtools_storage.ts
|
|
2399
|
+
import { createTypedWebLocalStorage } from "@nice-code/util";
|
|
2400
|
+
var devtools_storage = createTypedWebLocalStorage(window.localStorage, "nice-action-devtools::");
|
|
2401
|
+
devtools_storage.updateJsonWithDef("runtimeToProjectFilePath", {}, (prev) => prev);
|
|
2396
2402
|
|
|
2397
2403
|
// ../../node_modules/.bun/source-map-js@1.2.1/node_modules/source-map-js/source-map.js
|
|
2398
2404
|
var $SourceMapGenerator = require_source_map_generator().SourceMapGenerator;
|
|
@@ -2507,7 +2513,7 @@ async function resolveSourceMapPositions(frames) {
|
|
|
2507
2513
|
const resolved = await resolveCompiledPosition(frame.file, frame.line, frame.col ?? 0);
|
|
2508
2514
|
if (resolved == null)
|
|
2509
2515
|
return frame;
|
|
2510
|
-
return { ...frame, file: resolved.file, line: resolved.line, col: resolved.col };
|
|
2516
|
+
return { ...frame, originalFile: frame.file, file: resolved.file, line: resolved.line, col: resolved.col };
|
|
2511
2517
|
}));
|
|
2512
2518
|
}
|
|
2513
2519
|
function formatFrameFile(file) {
|
|
@@ -2525,7 +2531,299 @@ function formatFrameFile(file) {
|
|
|
2525
2531
|
const tail = filtered.slice(-4);
|
|
2526
2532
|
return tail.join("/") || file;
|
|
2527
2533
|
}
|
|
2528
|
-
function
|
|
2534
|
+
function getOriginUrl(frame) {
|
|
2535
|
+
const candidate = frame.originalFile ?? frame.file;
|
|
2536
|
+
if (candidate == null)
|
|
2537
|
+
return null;
|
|
2538
|
+
try {
|
|
2539
|
+
new URL(candidate);
|
|
2540
|
+
return candidate;
|
|
2541
|
+
} catch {
|
|
2542
|
+
return null;
|
|
2543
|
+
}
|
|
2544
|
+
}
|
|
2545
|
+
function frameNeedsProjectRoot(frame) {
|
|
2546
|
+
if (frame.isInternal)
|
|
2547
|
+
return false;
|
|
2548
|
+
const originUrl = getOriginUrl(frame);
|
|
2549
|
+
if (originUrl == null)
|
|
2550
|
+
return false;
|
|
2551
|
+
const path = new URL(originUrl).pathname.split("?")[0] ?? "";
|
|
2552
|
+
return !path.startsWith("/@fs/");
|
|
2553
|
+
}
|
|
2554
|
+
function buildVscodeUrl(frame, projectRoot) {
|
|
2555
|
+
if (frame.line == null)
|
|
2556
|
+
return null;
|
|
2557
|
+
const originUrl = getOriginUrl(frame);
|
|
2558
|
+
if (originUrl != null) {
|
|
2559
|
+
let path = new URL(originUrl).pathname.split("?")[0] ?? "";
|
|
2560
|
+
if (path.startsWith("/@fs/")) {
|
|
2561
|
+
path = path.slice(5);
|
|
2562
|
+
if (/^\/[a-zA-Z]:\//.test(path))
|
|
2563
|
+
path = path.slice(1);
|
|
2564
|
+
return `vscode://file/${path}:${frame.line}:${frame.col ?? 1}`;
|
|
2565
|
+
}
|
|
2566
|
+
if (projectRoot == null)
|
|
2567
|
+
return null;
|
|
2568
|
+
const normalRoot2 = projectRoot.replace(/[/\\]+$/, "").replace(/\\/g, "/");
|
|
2569
|
+
return `vscode://file/${normalRoot2}${path}:${frame.line}:${frame.col ?? 1}`;
|
|
2570
|
+
}
|
|
2571
|
+
const filePath = frame.file;
|
|
2572
|
+
if (filePath == null)
|
|
2573
|
+
return null;
|
|
2574
|
+
const normalPath = filePath.replace(/\\/g, "/");
|
|
2575
|
+
if (/^[a-zA-Z]:\//.test(normalPath)) {
|
|
2576
|
+
return `vscode://file/${normalPath}:${frame.line}:${frame.col ?? 1}`;
|
|
2577
|
+
}
|
|
2578
|
+
if (/^\/[a-zA-Z]:\//.test(normalPath)) {
|
|
2579
|
+
return `vscode://file/${normalPath.slice(1)}:${frame.line}:${frame.col ?? 1}`;
|
|
2580
|
+
}
|
|
2581
|
+
if (normalPath.startsWith("/")) {
|
|
2582
|
+
if (projectRoot == null)
|
|
2583
|
+
return null;
|
|
2584
|
+
const normalRoot2 = projectRoot.replace(/[/\\]+$/, "").replace(/\\/g, "/");
|
|
2585
|
+
return `vscode://file/${normalRoot2}${normalPath}:${frame.line}:${frame.col ?? 1}`;
|
|
2586
|
+
}
|
|
2587
|
+
if (projectRoot == null)
|
|
2588
|
+
return null;
|
|
2589
|
+
const normalRoot = projectRoot.replace(/[/\\]+$/, "").replace(/\\/g, "/");
|
|
2590
|
+
return `vscode://file/${normalRoot}/${normalPath}:${frame.line}:${frame.col ?? 1}`;
|
|
2591
|
+
}
|
|
2592
|
+
function ProjectRootSetupModal({
|
|
2593
|
+
envId,
|
|
2594
|
+
currentValue,
|
|
2595
|
+
onSave,
|
|
2596
|
+
onCancel
|
|
2597
|
+
}) {
|
|
2598
|
+
const [value, setValue] = useState2(currentValue);
|
|
2599
|
+
const inputRef = useRef(null);
|
|
2600
|
+
useEffect(() => {
|
|
2601
|
+
inputRef.current?.focus();
|
|
2602
|
+
inputRef.current?.select();
|
|
2603
|
+
}, []);
|
|
2604
|
+
useEffect(() => {
|
|
2605
|
+
const handler = (e) => {
|
|
2606
|
+
if (e.key === "Escape")
|
|
2607
|
+
onCancel();
|
|
2608
|
+
};
|
|
2609
|
+
window.addEventListener("keydown", handler);
|
|
2610
|
+
return () => window.removeEventListener("keydown", handler);
|
|
2611
|
+
}, [onCancel]);
|
|
2612
|
+
const handleSubmit = (e) => {
|
|
2613
|
+
e.preventDefault();
|
|
2614
|
+
const trimmed = value.trim();
|
|
2615
|
+
if (trimmed !== "")
|
|
2616
|
+
onSave(trimmed);
|
|
2617
|
+
};
|
|
2618
|
+
return /* @__PURE__ */ jsxDEV4("div", {
|
|
2619
|
+
style: {
|
|
2620
|
+
position: "fixed",
|
|
2621
|
+
inset: 0,
|
|
2622
|
+
zIndex: 2147483647,
|
|
2623
|
+
display: "flex",
|
|
2624
|
+
alignItems: "center",
|
|
2625
|
+
justifyContent: "center"
|
|
2626
|
+
},
|
|
2627
|
+
children: [
|
|
2628
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2629
|
+
onClick: onCancel,
|
|
2630
|
+
style: { position: "absolute", inset: 0, background: "rgba(0, 0, 0, 0.72)" }
|
|
2631
|
+
}, undefined, false, undefined, this),
|
|
2632
|
+
/* @__PURE__ */ jsxDEV4("form", {
|
|
2633
|
+
onSubmit: handleSubmit,
|
|
2634
|
+
style: {
|
|
2635
|
+
position: "relative",
|
|
2636
|
+
background: DEVTOOL_TOOLTIP_BACKGROUND,
|
|
2637
|
+
border: `1px solid ${DEVTOOL_TOOLTIP_BORDER}`,
|
|
2638
|
+
borderRadius: "8px",
|
|
2639
|
+
width: "420px",
|
|
2640
|
+
maxWidth: "90vw",
|
|
2641
|
+
boxShadow: "0 8px 32px rgba(0, 0, 0, 0.8)",
|
|
2642
|
+
overflow: "hidden",
|
|
2643
|
+
display: "flex",
|
|
2644
|
+
flexDirection: "column"
|
|
2645
|
+
},
|
|
2646
|
+
children: [
|
|
2647
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2648
|
+
style: {
|
|
2649
|
+
background: DEVTOOL_TOOLTIP_TITLE_BACKGROUND,
|
|
2650
|
+
borderBottom: `1px solid ${DEVTOOL_TOOLTIP_BORDER}`,
|
|
2651
|
+
padding: "10px 14px"
|
|
2652
|
+
},
|
|
2653
|
+
children: [
|
|
2654
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2655
|
+
style: {
|
|
2656
|
+
color: DEVTOOL_COLOR_TEXT_EMPHASIS,
|
|
2657
|
+
fontSize: "12px",
|
|
2658
|
+
fontWeight: 600,
|
|
2659
|
+
marginBottom: "2px"
|
|
2660
|
+
},
|
|
2661
|
+
children: "Set project root"
|
|
2662
|
+
}, undefined, false, undefined, this),
|
|
2663
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2664
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px" },
|
|
2665
|
+
children: [
|
|
2666
|
+
"Runtime:",
|
|
2667
|
+
" ",
|
|
2668
|
+
/* @__PURE__ */ jsxDEV4("span", {
|
|
2669
|
+
style: {
|
|
2670
|
+
color: DEVTOOL_COLOR_SEMANTIC_SYSTEM,
|
|
2671
|
+
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace"
|
|
2672
|
+
},
|
|
2673
|
+
children: envId
|
|
2674
|
+
}, undefined, false, undefined, this)
|
|
2675
|
+
]
|
|
2676
|
+
}, undefined, true, undefined, this)
|
|
2677
|
+
]
|
|
2678
|
+
}, undefined, true, undefined, this),
|
|
2679
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2680
|
+
style: { padding: "14px", display: "flex", flexDirection: "column", gap: "8px" },
|
|
2681
|
+
children: [
|
|
2682
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2683
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px", lineHeight: 1.4 },
|
|
2684
|
+
children: [
|
|
2685
|
+
"Provide the absolute path to this project's root so that root-relative source file paths (e.g.",
|
|
2686
|
+
" ",
|
|
2687
|
+
/* @__PURE__ */ jsxDEV4("span", {
|
|
2688
|
+
style: {
|
|
2689
|
+
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace"
|
|
2690
|
+
},
|
|
2691
|
+
children: "src/App.tsx"
|
|
2692
|
+
}, undefined, false, undefined, this),
|
|
2693
|
+
") can be opened in VS Code."
|
|
2694
|
+
]
|
|
2695
|
+
}, undefined, true, undefined, this),
|
|
2696
|
+
/* @__PURE__ */ jsxDEV4("input", {
|
|
2697
|
+
ref: inputRef,
|
|
2698
|
+
value,
|
|
2699
|
+
onChange: (e) => setValue(e.currentTarget.value),
|
|
2700
|
+
placeholder: "e.g. C:/d/nice-code/packages/demo-frontend",
|
|
2701
|
+
style: {
|
|
2702
|
+
background: DEVTOOL_STACK_TRACE_BACKGROUND,
|
|
2703
|
+
border: `1px solid ${DEVTOOL_TOOLTIP_BORDER}`,
|
|
2704
|
+
borderRadius: "4px",
|
|
2705
|
+
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
2706
|
+
fontSize: "11px",
|
|
2707
|
+
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace",
|
|
2708
|
+
padding: "7px 9px",
|
|
2709
|
+
outline: "none",
|
|
2710
|
+
width: "100%",
|
|
2711
|
+
boxSizing: "border-box"
|
|
2712
|
+
}
|
|
2713
|
+
}, undefined, false, undefined, this)
|
|
2714
|
+
]
|
|
2715
|
+
}, undefined, true, undefined, this),
|
|
2716
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2717
|
+
style: {
|
|
2718
|
+
display: "flex",
|
|
2719
|
+
justifyContent: "flex-end",
|
|
2720
|
+
gap: "8px",
|
|
2721
|
+
padding: "10px 14px",
|
|
2722
|
+
borderTop: `1px solid ${DEVTOOL_PANEL_BORDER}`
|
|
2723
|
+
},
|
|
2724
|
+
children: [
|
|
2725
|
+
/* @__PURE__ */ jsxDEV4("button", {
|
|
2726
|
+
type: "button",
|
|
2727
|
+
onClick: onCancel,
|
|
2728
|
+
style: {
|
|
2729
|
+
background: "transparent",
|
|
2730
|
+
border: `1px solid ${DEVTOOL_PANEL_BORDER}`,
|
|
2731
|
+
borderRadius: "4px",
|
|
2732
|
+
color: DEVTOOL_COLOR_TEXT_MUTED,
|
|
2733
|
+
fontSize: "11px",
|
|
2734
|
+
padding: "5px 12px",
|
|
2735
|
+
cursor: "pointer"
|
|
2736
|
+
},
|
|
2737
|
+
children: "Cancel"
|
|
2738
|
+
}, undefined, false, undefined, this),
|
|
2739
|
+
/* @__PURE__ */ jsxDEV4("button", {
|
|
2740
|
+
type: "submit",
|
|
2741
|
+
disabled: value.trim() === "",
|
|
2742
|
+
style: {
|
|
2743
|
+
background: `${DEVTOOL_COLOR_SEMANTIC_SYSTEM}22`,
|
|
2744
|
+
border: `1px solid ${DEVTOOL_COLOR_SEMANTIC_SYSTEM}66`,
|
|
2745
|
+
borderRadius: "4px",
|
|
2746
|
+
color: DEVTOOL_COLOR_SEMANTIC_SYSTEM,
|
|
2747
|
+
fontSize: "11px",
|
|
2748
|
+
padding: "5px 12px",
|
|
2749
|
+
cursor: value.trim() === "" ? "not-allowed" : "pointer",
|
|
2750
|
+
opacity: value.trim() === "" ? 0.5 : 1
|
|
2751
|
+
},
|
|
2752
|
+
children: "Save"
|
|
2753
|
+
}, undefined, false, undefined, this)
|
|
2754
|
+
]
|
|
2755
|
+
}, undefined, true, undefined, this)
|
|
2756
|
+
]
|
|
2757
|
+
}, undefined, true, undefined, this)
|
|
2758
|
+
]
|
|
2759
|
+
}, undefined, true, undefined, this);
|
|
2760
|
+
}
|
|
2761
|
+
function OpenInVscodeButton({
|
|
2762
|
+
frame,
|
|
2763
|
+
projectRoot,
|
|
2764
|
+
onNeedSetup
|
|
2765
|
+
}) {
|
|
2766
|
+
const [hovered, setHovered] = useState2(false);
|
|
2767
|
+
const needsSetup = frameNeedsProjectRoot(frame) && projectRoot == null;
|
|
2768
|
+
const url = buildVscodeUrl(frame, projectRoot);
|
|
2769
|
+
if (frame.file == null || frame.line == null)
|
|
2770
|
+
return null;
|
|
2771
|
+
if (!needsSetup && url == null)
|
|
2772
|
+
return null;
|
|
2773
|
+
const baseStyle = {
|
|
2774
|
+
position: "absolute",
|
|
2775
|
+
bottom: "3px",
|
|
2776
|
+
right: "4px",
|
|
2777
|
+
display: "flex",
|
|
2778
|
+
alignItems: "center",
|
|
2779
|
+
justifyContent: "center",
|
|
2780
|
+
width: "16px",
|
|
2781
|
+
height: "16px",
|
|
2782
|
+
opacity: hovered ? 0.85 : 0.25,
|
|
2783
|
+
transition: "opacity 0.15s ease",
|
|
2784
|
+
cursor: "pointer",
|
|
2785
|
+
flexShrink: 0
|
|
2786
|
+
};
|
|
2787
|
+
if (needsSetup) {
|
|
2788
|
+
return /* @__PURE__ */ jsxDEV4("button", {
|
|
2789
|
+
onClick: (e) => {
|
|
2790
|
+
e.stopPropagation();
|
|
2791
|
+
onNeedSetup();
|
|
2792
|
+
},
|
|
2793
|
+
onMouseEnter: () => setHovered(true),
|
|
2794
|
+
onMouseLeave: () => setHovered(false),
|
|
2795
|
+
title: "Set project root to open in VS Code",
|
|
2796
|
+
style: {
|
|
2797
|
+
...baseStyle,
|
|
2798
|
+
color: DEVTOOL_COLOR_SEMANTIC_WARNING,
|
|
2799
|
+
background: "none",
|
|
2800
|
+
border: "none",
|
|
2801
|
+
padding: 0
|
|
2802
|
+
},
|
|
2803
|
+
children: /* @__PURE__ */ jsxDEV4(ExternalLink, {
|
|
2804
|
+
size: 10,
|
|
2805
|
+
strokeWidth: 1.8
|
|
2806
|
+
}, undefined, false, undefined, this)
|
|
2807
|
+
}, undefined, false, undefined, this);
|
|
2808
|
+
}
|
|
2809
|
+
return /* @__PURE__ */ jsxDEV4("a", {
|
|
2810
|
+
href: url,
|
|
2811
|
+
onClick: (e) => e.stopPropagation(),
|
|
2812
|
+
onMouseEnter: () => setHovered(true),
|
|
2813
|
+
onMouseLeave: () => setHovered(false),
|
|
2814
|
+
title: "Open in VS Code",
|
|
2815
|
+
style: {
|
|
2816
|
+
...baseStyle,
|
|
2817
|
+
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
2818
|
+
textDecoration: "none"
|
|
2819
|
+
},
|
|
2820
|
+
children: /* @__PURE__ */ jsxDEV4(ExternalLink, {
|
|
2821
|
+
size: 10,
|
|
2822
|
+
strokeWidth: 1.8
|
|
2823
|
+
}, undefined, false, undefined, this)
|
|
2824
|
+
}, undefined, false, undefined, this);
|
|
2825
|
+
}
|
|
2826
|
+
function countUserFrames(_runtime, stack) {
|
|
2529
2827
|
if (stack == null)
|
|
2530
2828
|
return 0;
|
|
2531
2829
|
return parseStackFrames(stack).filter((f) => !f.isInternal).length;
|
|
@@ -2534,10 +2832,16 @@ function StackTraceSection({
|
|
|
2534
2832
|
label,
|
|
2535
2833
|
stack,
|
|
2536
2834
|
color = DEVTOOL_COLOR_SEMANTIC_SYSTEM,
|
|
2835
|
+
runtime,
|
|
2537
2836
|
minFrameCount
|
|
2538
2837
|
}) {
|
|
2539
2838
|
const [showAll, setShowAll] = useState2(false);
|
|
2540
2839
|
const [resolvedFrames, setResolvedFrames] = useState2(null);
|
|
2840
|
+
const [projectRootMap, setProjectRootMap] = useState2({});
|
|
2841
|
+
const [showSetupModal, setShowSetupModal] = useState2(false);
|
|
2842
|
+
useEffect(() => {
|
|
2843
|
+
devtools_storage.getJsonOrDef("runtimeToProjectFilePath", {}).then((map) => setProjectRootMap(map));
|
|
2844
|
+
}, []);
|
|
2541
2845
|
useEffect(() => {
|
|
2542
2846
|
if (stack == null)
|
|
2543
2847
|
return;
|
|
@@ -2561,6 +2865,16 @@ function StackTraceSection({
|
|
|
2561
2865
|
const phantomFrameCount = !showAll ? Math.max(0, (minFrameCount ?? 0) - displayFrames.length) : 0;
|
|
2562
2866
|
if (allFrames.length === 0)
|
|
2563
2867
|
return null;
|
|
2868
|
+
const runtimeKey = `envId[${runtime.envId}]`;
|
|
2869
|
+
const projectRoot = projectRootMap[runtimeKey] ?? null;
|
|
2870
|
+
const handleSaveProjectRoot = (path) => {
|
|
2871
|
+
setProjectRootMap((prev) => ({ ...prev, [runtimeKey]: path }));
|
|
2872
|
+
setShowSetupModal(false);
|
|
2873
|
+
devtools_storage.updateJsonWithDef("runtimeToProjectFilePath", {}, (prev) => ({
|
|
2874
|
+
...prev,
|
|
2875
|
+
[runtimeKey]: path
|
|
2876
|
+
}));
|
|
2877
|
+
};
|
|
2564
2878
|
return /* @__PURE__ */ jsxDEV4("div", {
|
|
2565
2879
|
children: [
|
|
2566
2880
|
/* @__PURE__ */ jsxDEV4("div", {
|
|
@@ -2592,7 +2906,12 @@ function StackTraceSection({
|
|
|
2592
2906
|
},
|
|
2593
2907
|
children: [
|
|
2594
2908
|
displayFrames.length === 0 ? /* @__PURE__ */ jsxDEV4("div", {
|
|
2595
|
-
style: {
|
|
2909
|
+
style: {
|
|
2910
|
+
padding: "6px 10px",
|
|
2911
|
+
color: DEVTOOL_COLOR_TEXT_MUTED,
|
|
2912
|
+
fontSize: "10px",
|
|
2913
|
+
fontStyle: "italic"
|
|
2914
|
+
},
|
|
2596
2915
|
children: "no user frames captured"
|
|
2597
2916
|
}, undefined, false, undefined, this) : displayFrames.map((frame, idx) => {
|
|
2598
2917
|
const displayFile = formatFrameFile(frame.file);
|
|
@@ -2604,10 +2923,12 @@ function StackTraceSection({
|
|
|
2604
2923
|
return /* @__PURE__ */ jsxDEV4("div", {
|
|
2605
2924
|
title: titleStr,
|
|
2606
2925
|
style: {
|
|
2926
|
+
position: "relative",
|
|
2607
2927
|
display: "flex",
|
|
2608
2928
|
flexDirection: "row",
|
|
2609
2929
|
gap: "0.5em",
|
|
2610
2930
|
padding: "4px",
|
|
2931
|
+
paddingRight: "22px",
|
|
2611
2932
|
borderBottom: `1px solid ${DEVTOOL_LIST_BASE_BACKGROUND}`
|
|
2612
2933
|
},
|
|
2613
2934
|
children: [
|
|
@@ -2684,7 +3005,12 @@ function StackTraceSection({
|
|
|
2684
3005
|
]
|
|
2685
3006
|
}, undefined, true, undefined, this)
|
|
2686
3007
|
]
|
|
2687
|
-
}, undefined, true, undefined, this)
|
|
3008
|
+
}, undefined, true, undefined, this),
|
|
3009
|
+
/* @__PURE__ */ jsxDEV4(OpenInVscodeButton, {
|
|
3010
|
+
frame,
|
|
3011
|
+
projectRoot,
|
|
3012
|
+
onNeedSetup: () => setShowSetupModal(true)
|
|
3013
|
+
}, undefined, false, undefined, this)
|
|
2688
3014
|
]
|
|
2689
3015
|
}, frame.raw, true, undefined, this);
|
|
2690
3016
|
}),
|
|
@@ -2719,7 +3045,13 @@ function StackTraceSection({
|
|
|
2719
3045
|
]
|
|
2720
3046
|
}, `phantom-${i}`, true, undefined, this))
|
|
2721
3047
|
]
|
|
2722
|
-
}, undefined, true, undefined, this)
|
|
3048
|
+
}, undefined, true, undefined, this),
|
|
3049
|
+
showSetupModal && /* @__PURE__ */ jsxDEV4(ProjectRootSetupModal, {
|
|
3050
|
+
envId: runtime.envId,
|
|
3051
|
+
currentValue: projectRoot ?? "",
|
|
3052
|
+
onSave: handleSaveProjectRoot,
|
|
3053
|
+
onCancel: () => setShowSetupModal(false)
|
|
3054
|
+
}, undefined, false, undefined, this)
|
|
2723
3055
|
]
|
|
2724
3056
|
}, undefined, true, undefined, this);
|
|
2725
3057
|
}
|
|
@@ -2732,7 +3064,8 @@ function FullErrorContent({
|
|
|
2732
3064
|
label,
|
|
2733
3065
|
error,
|
|
2734
3066
|
errorStack,
|
|
2735
|
-
color
|
|
3067
|
+
color,
|
|
3068
|
+
runtime
|
|
2736
3069
|
}) {
|
|
2737
3070
|
return /* @__PURE__ */ jsxDEV5(Fragment, {
|
|
2738
3071
|
children: [
|
|
@@ -2746,6 +3079,7 @@ function FullErrorContent({
|
|
|
2746
3079
|
color
|
|
2747
3080
|
}, undefined, false, undefined, this),
|
|
2748
3081
|
/* @__PURE__ */ jsxDEV5(StackTraceSection, {
|
|
3082
|
+
runtime,
|
|
2749
3083
|
label: "Error Stack",
|
|
2750
3084
|
stack: errorStack,
|
|
2751
3085
|
color
|
|
@@ -2813,6 +3147,7 @@ function ActionErrorDisplay({
|
|
|
2813
3147
|
color
|
|
2814
3148
|
}, undefined, false, undefined, this);
|
|
2815
3149
|
return /* @__PURE__ */ jsxDEV5(FullErrorContent, {
|
|
3150
|
+
runtime: entry.meta.originClient,
|
|
2816
3151
|
label: "Action Error",
|
|
2817
3152
|
error,
|
|
2818
3153
|
errorStack,
|
|
@@ -2827,6 +3162,7 @@ function ActionErrorDisplay({
|
|
|
2827
3162
|
color
|
|
2828
3163
|
}, undefined, false, undefined, this);
|
|
2829
3164
|
return /* @__PURE__ */ jsxDEV5(FullErrorContent, {
|
|
3165
|
+
runtime: entry.meta.originClient,
|
|
2830
3166
|
label: "Error",
|
|
2831
3167
|
error,
|
|
2832
3168
|
errorStack,
|
|
@@ -2852,6 +3188,7 @@ function ActionErrorDisplay({
|
|
|
2852
3188
|
color
|
|
2853
3189
|
}, undefined, false, undefined, this)),
|
|
2854
3190
|
/* @__PURE__ */ jsxDEV5(StackTraceSection, {
|
|
3191
|
+
runtime: entry.meta.originClient,
|
|
2855
3192
|
label: "Abort Stack",
|
|
2856
3193
|
stack: errorStack,
|
|
2857
3194
|
color
|
|
@@ -2862,6 +3199,9 @@ function ActionErrorDisplay({
|
|
|
2862
3199
|
return null;
|
|
2863
3200
|
}
|
|
2864
3201
|
|
|
3202
|
+
// src/devtools/browser/components/DomainChip.tsx
|
|
3203
|
+
import { Component } from "lucide-react";
|
|
3204
|
+
|
|
2865
3205
|
// src/devtools/browser/components/Chip.tsx
|
|
2866
3206
|
import { useState as useState3 } from "react";
|
|
2867
3207
|
|
|
@@ -2991,13 +3331,64 @@ function Chip({
|
|
|
2991
3331
|
}, undefined, true, undefined, this);
|
|
2992
3332
|
}
|
|
2993
3333
|
|
|
2994
|
-
// src/devtools/browser/components/
|
|
3334
|
+
// src/devtools/browser/components/Icon.tsx
|
|
3335
|
+
import { useState as useState4 } from "react";
|
|
2995
3336
|
import { jsxDEV as jsxDEV8, Fragment as Fragment3 } from "react/jsx-dev-runtime";
|
|
2996
|
-
|
|
3337
|
+
var ICON_SIZE_PX = {
|
|
3338
|
+
["sm" /* sm */]: 13,
|
|
3339
|
+
["md" /* md */]: 16,
|
|
3340
|
+
["lg" /* lg */]: 18
|
|
3341
|
+
};
|
|
3342
|
+
function Icon({
|
|
3343
|
+
icon: IconComponent,
|
|
3344
|
+
color,
|
|
3345
|
+
size = "md" /* md */,
|
|
3346
|
+
subtle = false,
|
|
3347
|
+
tooltip,
|
|
3348
|
+
style
|
|
3349
|
+
}) {
|
|
3350
|
+
const [anchor, setAnchor] = useState4(null);
|
|
3351
|
+
const hasTooltip = tooltip != null;
|
|
3352
|
+
const colorEntry = SEMANTIC_COLORS[color];
|
|
3353
|
+
const resolvedColor = subtle ? colorEntry.subtle?.color ?? colorEntry.color : colorEntry.color;
|
|
2997
3354
|
return /* @__PURE__ */ jsxDEV8(Fragment3, {
|
|
3355
|
+
children: [
|
|
3356
|
+
/* @__PURE__ */ jsxDEV8("div", {
|
|
3357
|
+
onMouseEnter: hasTooltip ? (e) => setAnchor(e.currentTarget.getBoundingClientRect()) : undefined,
|
|
3358
|
+
onMouseLeave: hasTooltip ? () => setAnchor(null) : undefined,
|
|
3359
|
+
style: {
|
|
3360
|
+
borderRadius: "0.4em",
|
|
3361
|
+
height: `${1.65 * getSizeValue(size)}em`,
|
|
3362
|
+
width: `${1.65 * getSizeValue(size)}em`,
|
|
3363
|
+
display: "flex",
|
|
3364
|
+
alignItems: "center",
|
|
3365
|
+
justifyContent: "center",
|
|
3366
|
+
background: "rgba(0,0,0,0.4)",
|
|
3367
|
+
color: resolvedColor,
|
|
3368
|
+
flexShrink: 0,
|
|
3369
|
+
cursor: hasTooltip ? "default" : undefined,
|
|
3370
|
+
...style
|
|
3371
|
+
},
|
|
3372
|
+
children: /* @__PURE__ */ jsxDEV8(IconComponent, {
|
|
3373
|
+
size: ICON_SIZE_PX[size],
|
|
3374
|
+
strokeWidth: 1.5
|
|
3375
|
+
}, undefined, false, undefined, this)
|
|
3376
|
+
}, undefined, false, undefined, this),
|
|
3377
|
+
anchor != null && hasTooltip && /* @__PURE__ */ jsxDEV8(Tooltip, {
|
|
3378
|
+
anchor,
|
|
3379
|
+
config: tooltip
|
|
3380
|
+
}, undefined, false, undefined, this)
|
|
3381
|
+
]
|
|
3382
|
+
}, undefined, true, undefined, this);
|
|
3383
|
+
}
|
|
3384
|
+
|
|
3385
|
+
// src/devtools/browser/components/DomainChip.tsx
|
|
3386
|
+
import { jsxDEV as jsxDEV9, Fragment as Fragment4 } from "react/jsx-dev-runtime";
|
|
3387
|
+
function DomainHierarchyContent({ allDomains }) {
|
|
3388
|
+
return /* @__PURE__ */ jsxDEV9(Fragment4, {
|
|
2998
3389
|
children: allDomains.map((d, i) => {
|
|
2999
3390
|
const isCurrent = i === allDomains.length - 1;
|
|
3000
|
-
return /* @__PURE__ */
|
|
3391
|
+
return /* @__PURE__ */ jsxDEV9("div", {
|
|
3001
3392
|
style: {
|
|
3002
3393
|
display: "flex",
|
|
3003
3394
|
alignItems: "center",
|
|
@@ -3006,7 +3397,7 @@ function DomainHierarchyContent({ allDomains }) {
|
|
|
3006
3397
|
paddingTop: i > 0 ? "0.1rem" : undefined
|
|
3007
3398
|
},
|
|
3008
3399
|
children: [
|
|
3009
|
-
/* @__PURE__ */
|
|
3400
|
+
/* @__PURE__ */ jsxDEV9("span", {
|
|
3010
3401
|
style: {
|
|
3011
3402
|
fontSize: "0.8rem",
|
|
3012
3403
|
height: "0.6em",
|
|
@@ -3019,7 +3410,7 @@ function DomainHierarchyContent({ allDomains }) {
|
|
|
3019
3410
|
},
|
|
3020
3411
|
children: "⬢"
|
|
3021
3412
|
}, undefined, false, undefined, this),
|
|
3022
|
-
/* @__PURE__ */
|
|
3413
|
+
/* @__PURE__ */ jsxDEV9("span", {
|
|
3023
3414
|
style: {
|
|
3024
3415
|
color: isCurrent ? DEVTOOL_COLOR_SEMANTIC_SYSTEM : "#4b5563",
|
|
3025
3416
|
fontSize: "0.7rem",
|
|
@@ -3033,18 +3424,32 @@ function DomainHierarchyContent({ allDomains }) {
|
|
|
3033
3424
|
}, undefined, false, undefined, this);
|
|
3034
3425
|
}
|
|
3035
3426
|
function DomainChip({
|
|
3427
|
+
compact = false,
|
|
3036
3428
|
subtle = false,
|
|
3037
3429
|
domain,
|
|
3038
3430
|
allDomains,
|
|
3039
3431
|
size
|
|
3040
3432
|
}) {
|
|
3041
|
-
|
|
3433
|
+
if (compact) {
|
|
3434
|
+
return /* @__PURE__ */ jsxDEV9(Icon, {
|
|
3435
|
+
icon: Component,
|
|
3436
|
+
color: "domain" /* domain */,
|
|
3437
|
+
tooltip: {
|
|
3438
|
+
content: /* @__PURE__ */ jsxDEV9(DomainHierarchyContent, {
|
|
3439
|
+
allDomains
|
|
3440
|
+
}, undefined, false, undefined, this),
|
|
3441
|
+
title: "Action Domain",
|
|
3442
|
+
align: "edge"
|
|
3443
|
+
}
|
|
3444
|
+
}, undefined, false, undefined, this);
|
|
3445
|
+
}
|
|
3446
|
+
return /* @__PURE__ */ jsxDEV9(Chip, {
|
|
3042
3447
|
color: "domain" /* domain */,
|
|
3043
3448
|
subtle,
|
|
3044
3449
|
size,
|
|
3045
3450
|
rounded: true,
|
|
3046
3451
|
tooltip: {
|
|
3047
|
-
content: /* @__PURE__ */
|
|
3452
|
+
content: /* @__PURE__ */ jsxDEV9(DomainHierarchyContent, {
|
|
3048
3453
|
allDomains
|
|
3049
3454
|
}, undefined, false, undefined, this),
|
|
3050
3455
|
title: "Action Domain",
|
|
@@ -3052,17 +3457,20 @@ function DomainChip({
|
|
|
3052
3457
|
},
|
|
3053
3458
|
style: { display: "flex", alignItems: "center", gap: "0.4em" },
|
|
3054
3459
|
children: [
|
|
3055
|
-
/* @__PURE__ */
|
|
3460
|
+
/* @__PURE__ */ jsxDEV9("span", {
|
|
3056
3461
|
style: {
|
|
3057
|
-
height: "
|
|
3058
|
-
width: "
|
|
3462
|
+
height: "1.2em",
|
|
3463
|
+
width: "1.2em",
|
|
3059
3464
|
display: "flex",
|
|
3060
3465
|
alignItems: "center",
|
|
3061
3466
|
justifyContent: "center"
|
|
3062
3467
|
},
|
|
3063
|
-
children:
|
|
3468
|
+
children: /* @__PURE__ */ jsxDEV9(Component, {
|
|
3469
|
+
height: "1.2em",
|
|
3470
|
+
width: "1.2em"
|
|
3471
|
+
}, undefined, false, undefined, this)
|
|
3064
3472
|
}, undefined, false, undefined, this),
|
|
3065
|
-
/* @__PURE__ */
|
|
3473
|
+
/* @__PURE__ */ jsxDEV9("span", {
|
|
3066
3474
|
children: domain
|
|
3067
3475
|
}, undefined, false, undefined, this)
|
|
3068
3476
|
]
|
|
@@ -3070,7 +3478,7 @@ function DomainChip({
|
|
|
3070
3478
|
}
|
|
3071
3479
|
|
|
3072
3480
|
// src/devtools/browser/components/HandlerChips.tsx
|
|
3073
|
-
import { jsxDEV as
|
|
3481
|
+
import { jsxDEV as jsxDEV10, Fragment as Fragment5 } from "react/jsx-dev-runtime";
|
|
3074
3482
|
function getExternalLabel(hop) {
|
|
3075
3483
|
if (hop.handlerType !== "external")
|
|
3076
3484
|
return null;
|
|
@@ -3081,15 +3489,15 @@ function HandlerChips({ entry, size, subtle }) {
|
|
|
3081
3489
|
const localEnvId = firstHop != null ? firstHop.runtime.envId : null;
|
|
3082
3490
|
const externalLabel = firstHop != null ? getExternalLabel(firstHop) : null;
|
|
3083
3491
|
const firstHopIsLocal = firstHop != null && firstHop.handlerType === "local";
|
|
3084
|
-
return /* @__PURE__ */
|
|
3492
|
+
return /* @__PURE__ */ jsxDEV10(Fragment5, {
|
|
3085
3493
|
children: [
|
|
3086
|
-
localEnvId != null && (firstHopIsLocal || externalLabel == null) && /* @__PURE__ */
|
|
3494
|
+
localEnvId != null && (firstHopIsLocal || externalLabel == null) && /* @__PURE__ */ jsxDEV10(Chip, {
|
|
3087
3495
|
color: "handler_local" /* handler_local */,
|
|
3088
3496
|
size,
|
|
3089
3497
|
subtle,
|
|
3090
3498
|
children: localEnvId
|
|
3091
3499
|
}, undefined, false, undefined, this),
|
|
3092
|
-
externalLabel != null && /* @__PURE__ */
|
|
3500
|
+
externalLabel != null && /* @__PURE__ */ jsxDEV10(Chip, {
|
|
3093
3501
|
color: "handler_external" /* handler_external */,
|
|
3094
3502
|
size,
|
|
3095
3503
|
subtle,
|
|
@@ -3100,15 +3508,15 @@ function HandlerChips({ entry, size, subtle }) {
|
|
|
3100
3508
|
}
|
|
3101
3509
|
|
|
3102
3510
|
// src/devtools/browser/components/RunningTimer.tsx
|
|
3103
|
-
import { useEffect as useEffect2, useState as
|
|
3104
|
-
import { jsxDEV as
|
|
3511
|
+
import { useEffect as useEffect2, useState as useState5 } from "react";
|
|
3512
|
+
import { jsxDEV as jsxDEV11, Fragment as Fragment6 } from "react/jsx-dev-runtime";
|
|
3105
3513
|
function RunningTimer({ startTime }) {
|
|
3106
|
-
const [elapsed, setElapsed] =
|
|
3514
|
+
const [elapsed, setElapsed] = useState5(() => Date.now() - startTime);
|
|
3107
3515
|
useEffect2(() => {
|
|
3108
3516
|
const interval = setInterval(() => setElapsed(Date.now() - startTime), 100);
|
|
3109
3517
|
return () => clearInterval(interval);
|
|
3110
3518
|
}, [startTime]);
|
|
3111
|
-
return /* @__PURE__ */
|
|
3519
|
+
return /* @__PURE__ */ jsxDEV11(Fragment6, {
|
|
3112
3520
|
children: [
|
|
3113
3521
|
elapsed,
|
|
3114
3522
|
"ms"
|
|
@@ -3117,15 +3525,15 @@ function RunningTimer({ startTime }) {
|
|
|
3117
3525
|
}
|
|
3118
3526
|
function DurationDisplay({ entry }) {
|
|
3119
3527
|
const d = formatDuration(entry);
|
|
3120
|
-
return /* @__PURE__ */
|
|
3121
|
-
children: d ?? /* @__PURE__ */
|
|
3528
|
+
return /* @__PURE__ */ jsxDEV11(Fragment6, {
|
|
3529
|
+
children: d ?? /* @__PURE__ */ jsxDEV11(RunningTimer, {
|
|
3122
3530
|
startTime: entry.startTime
|
|
3123
3531
|
}, undefined, false, undefined, this)
|
|
3124
3532
|
}, undefined, false, undefined, this);
|
|
3125
3533
|
}
|
|
3126
3534
|
|
|
3127
3535
|
// src/devtools/browser/components/CallStackSection.tsx
|
|
3128
|
-
import { jsxDEV as
|
|
3536
|
+
import { jsxDEV as jsxDEV12 } from "react/jsx-dev-runtime";
|
|
3129
3537
|
function getCalledLabel(entry) {
|
|
3130
3538
|
const firstHop = entry.meta.routing[0];
|
|
3131
3539
|
if (firstHop == null)
|
|
@@ -3153,7 +3561,7 @@ function CallStackLink({
|
|
|
3153
3561
|
const symbol = STATUS_SYMBOL[entry.status];
|
|
3154
3562
|
const labelColor = entryRole === "caller" ? DEVTOOL_COLOR_TEXT_SECONDARY : getCalledColor(entry);
|
|
3155
3563
|
const label = entryRole === "caller" ? "↑ from" : getCalledLabel(entry);
|
|
3156
|
-
return /* @__PURE__ */
|
|
3564
|
+
return /* @__PURE__ */ jsxDEV12("div", {
|
|
3157
3565
|
onClick,
|
|
3158
3566
|
style: {
|
|
3159
3567
|
background: isFocused ? DEVTOOL_SECTION_BACKGROUND : DEVTOOL_DETAIL_HEADER_BACKGROUND,
|
|
@@ -3167,21 +3575,21 @@ function CallStackLink({
|
|
|
3167
3575
|
cursor: "pointer"
|
|
3168
3576
|
},
|
|
3169
3577
|
children: [
|
|
3170
|
-
/* @__PURE__ */
|
|
3578
|
+
/* @__PURE__ */ jsxDEV12("span", {
|
|
3171
3579
|
style: { display: "flex", alignItems: "center", gap: "1em", flexShrink: 0 },
|
|
3172
3580
|
children: [
|
|
3173
|
-
/* @__PURE__ */
|
|
3581
|
+
/* @__PURE__ */ jsxDEV12("span", {
|
|
3174
3582
|
style: { color, fontSize: "10px", flexShrink: 0 },
|
|
3175
3583
|
children: symbol
|
|
3176
3584
|
}, undefined, false, undefined, this),
|
|
3177
|
-
/* @__PURE__ */
|
|
3585
|
+
/* @__PURE__ */ jsxDEV12("span", {
|
|
3178
3586
|
style: { color: labelColor, fontSize: "9px", flexShrink: 0 },
|
|
3179
3587
|
children: label
|
|
3180
3588
|
}, undefined, false, undefined, this),
|
|
3181
|
-
/* @__PURE__ */
|
|
3589
|
+
/* @__PURE__ */ jsxDEV12("span", {
|
|
3182
3590
|
style: { display: "flex", alignItems: "center", gap: "5px" },
|
|
3183
3591
|
children: [
|
|
3184
|
-
/* @__PURE__ */
|
|
3592
|
+
/* @__PURE__ */ jsxDEV12("span", {
|
|
3185
3593
|
style: {
|
|
3186
3594
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
3187
3595
|
fontSize: "11px",
|
|
@@ -3191,7 +3599,7 @@ function CallStackLink({
|
|
|
3191
3599
|
},
|
|
3192
3600
|
children: entry.actionId
|
|
3193
3601
|
}, undefined, false, undefined, this),
|
|
3194
|
-
/* @__PURE__ */
|
|
3602
|
+
/* @__PURE__ */ jsxDEV12(DomainChip, {
|
|
3195
3603
|
domain: entry.domain,
|
|
3196
3604
|
allDomains: entry.allDomains,
|
|
3197
3605
|
size: "sm" /* sm */
|
|
@@ -3200,14 +3608,14 @@ function CallStackLink({
|
|
|
3200
3608
|
}, undefined, true, undefined, this)
|
|
3201
3609
|
]
|
|
3202
3610
|
}, undefined, true, undefined, this),
|
|
3203
|
-
/* @__PURE__ */
|
|
3611
|
+
/* @__PURE__ */ jsxDEV12("span", {
|
|
3204
3612
|
style: {
|
|
3205
3613
|
color: DEVTOOL_COLOR_TEXT_FAINT,
|
|
3206
3614
|
fontSize: "10px",
|
|
3207
3615
|
textAlign: "right",
|
|
3208
3616
|
whiteSpace: "nowrap"
|
|
3209
3617
|
},
|
|
3210
|
-
children: /* @__PURE__ */
|
|
3618
|
+
children: /* @__PURE__ */ jsxDEV12(DurationDisplay, {
|
|
3211
3619
|
entry
|
|
3212
3620
|
}, undefined, false, undefined, this)
|
|
3213
3621
|
}, undefined, false, undefined, this)
|
|
@@ -3223,15 +3631,15 @@ function CallStackSection({
|
|
|
3223
3631
|
}) {
|
|
3224
3632
|
if (parent == null && childEntries.length === 0)
|
|
3225
3633
|
return null;
|
|
3226
|
-
return /* @__PURE__ */
|
|
3634
|
+
return /* @__PURE__ */ jsxDEV12("div", {
|
|
3227
3635
|
children: [
|
|
3228
|
-
parent != null && /* @__PURE__ */
|
|
3636
|
+
parent != null && /* @__PURE__ */ jsxDEV12(CallStackLink, {
|
|
3229
3637
|
entry: parent,
|
|
3230
3638
|
entryRole: "caller",
|
|
3231
3639
|
isFocused: false,
|
|
3232
3640
|
onClick: () => onSelectParent(parent.cuid)
|
|
3233
3641
|
}, undefined, false, undefined, this),
|
|
3234
|
-
childEntries.map((child) => /* @__PURE__ */
|
|
3642
|
+
childEntries.map((child) => /* @__PURE__ */ jsxDEV12(CallStackLink, {
|
|
3235
3643
|
entry: child,
|
|
3236
3644
|
entryRole: "called",
|
|
3237
3645
|
isFocused: focusedChildCuid === child.cuid,
|
|
@@ -3242,7 +3650,7 @@ function CallStackSection({
|
|
|
3242
3650
|
}
|
|
3243
3651
|
|
|
3244
3652
|
// src/devtools/browser/components/ChildDispatchChips.tsx
|
|
3245
|
-
import { jsxDEV as
|
|
3653
|
+
import { jsxDEV as jsxDEV13 } from "react/jsx-dev-runtime";
|
|
3246
3654
|
function ChildDispatchChips({
|
|
3247
3655
|
childRouteItems,
|
|
3248
3656
|
size = "sm" /* sm */
|
|
@@ -3262,12 +3670,12 @@ function ChildDispatchChips({
|
|
|
3262
3670
|
group.transports.push(transport);
|
|
3263
3671
|
}
|
|
3264
3672
|
}
|
|
3265
|
-
return /* @__PURE__ */
|
|
3673
|
+
return /* @__PURE__ */ jsxDEV13("div", {
|
|
3266
3674
|
style: { display: "flex", alignItems: "center", gap: "4px", flexWrap: "wrap" },
|
|
3267
3675
|
children: Array.from(groups.values()).map((group) => {
|
|
3268
3676
|
const transportStr = group.transports.length > 0 ? group.transports.join(", ") : "ext";
|
|
3269
3677
|
const label = group.hasClient ? `${transportStr} → ${group.runtimeId}` : `→ ${transportStr}`;
|
|
3270
|
-
return /* @__PURE__ */
|
|
3678
|
+
return /* @__PURE__ */ jsxDEV13(Chip, {
|
|
3271
3679
|
color: "handler_external" /* handler_external */,
|
|
3272
3680
|
size,
|
|
3273
3681
|
children: label
|
|
@@ -3277,20 +3685,20 @@ function ChildDispatchChips({
|
|
|
3277
3685
|
}
|
|
3278
3686
|
|
|
3279
3687
|
// src/devtools/browser/components/MetaSection.tsx
|
|
3280
|
-
import { useState as
|
|
3281
|
-
import { jsxDEV as
|
|
3688
|
+
import { useState as useState6 } from "react";
|
|
3689
|
+
import { jsxDEV as jsxDEV14 } from "react/jsx-dev-runtime";
|
|
3282
3690
|
function MetaChip({ label, value }) {
|
|
3283
|
-
return /* @__PURE__ */
|
|
3691
|
+
return /* @__PURE__ */ jsxDEV14("span", {
|
|
3284
3692
|
style: { whiteSpace: "nowrap" },
|
|
3285
3693
|
children: [
|
|
3286
|
-
/* @__PURE__ */
|
|
3694
|
+
/* @__PURE__ */ jsxDEV14("span", {
|
|
3287
3695
|
style: { color: DEVTOOL_COLOR_TEXT_MUTED },
|
|
3288
3696
|
children: [
|
|
3289
3697
|
label,
|
|
3290
3698
|
" "
|
|
3291
3699
|
]
|
|
3292
3700
|
}, undefined, true, undefined, this),
|
|
3293
|
-
/* @__PURE__ */
|
|
3701
|
+
/* @__PURE__ */ jsxDEV14("span", {
|
|
3294
3702
|
style: { color: DEVTOOL_COLOR_TEXT_SECONDARY },
|
|
3295
3703
|
children: value
|
|
3296
3704
|
}, undefined, false, undefined, this)
|
|
@@ -3298,7 +3706,7 @@ function MetaChip({ label, value }) {
|
|
|
3298
3706
|
}, undefined, true, undefined, this);
|
|
3299
3707
|
}
|
|
3300
3708
|
function MetaSection({ entry }) {
|
|
3301
|
-
const [expanded, setExpanded] =
|
|
3709
|
+
const [expanded, setExpanded] = useState6(false);
|
|
3302
3710
|
const { meta, cuid } = entry;
|
|
3303
3711
|
const expandedRows = [
|
|
3304
3712
|
{ label: "cuid", value: cuid },
|
|
@@ -3306,9 +3714,9 @@ function MetaSection({ entry }) {
|
|
|
3306
3714
|
...meta.originClient.perId != null ? [{ label: "perId", value: meta.originClient.perId }] : [],
|
|
3307
3715
|
...meta.originClient.insId != null ? [{ label: "insId", value: meta.originClient.insId }] : []
|
|
3308
3716
|
];
|
|
3309
|
-
return /* @__PURE__ */
|
|
3717
|
+
return /* @__PURE__ */ jsxDEV14("div", {
|
|
3310
3718
|
children: [
|
|
3311
|
-
/* @__PURE__ */
|
|
3719
|
+
/* @__PURE__ */ jsxDEV14("div", {
|
|
3312
3720
|
style: {
|
|
3313
3721
|
display: "flex",
|
|
3314
3722
|
alignItems: "center",
|
|
@@ -3316,7 +3724,7 @@ function MetaSection({ entry }) {
|
|
|
3316
3724
|
marginBottom: "3px"
|
|
3317
3725
|
},
|
|
3318
3726
|
children: [
|
|
3319
|
-
/* @__PURE__ */
|
|
3727
|
+
/* @__PURE__ */ jsxDEV14("div", {
|
|
3320
3728
|
style: {
|
|
3321
3729
|
color: DEVTOOL_COLOR_SEMANTIC_SYSTEM,
|
|
3322
3730
|
fontSize: "10px",
|
|
@@ -3325,13 +3733,13 @@ function MetaSection({ entry }) {
|
|
|
3325
3733
|
},
|
|
3326
3734
|
children: "Meta"
|
|
3327
3735
|
}, undefined, false, undefined, this),
|
|
3328
|
-
/* @__PURE__ */
|
|
3736
|
+
/* @__PURE__ */ jsxDEV14("span", {
|
|
3329
3737
|
style: { color: DEVTOOL_COLOR_TEXT_FAINT, fontSize: "11px" },
|
|
3330
3738
|
children: expanded ? "▾" : "▸"
|
|
3331
3739
|
}, undefined, false, undefined, this)
|
|
3332
3740
|
]
|
|
3333
3741
|
}, undefined, true, undefined, this),
|
|
3334
|
-
expanded ? /* @__PURE__ */
|
|
3742
|
+
expanded ? /* @__PURE__ */ jsxDEV14("div", {
|
|
3335
3743
|
onClick: () => setExpanded(false),
|
|
3336
3744
|
style: {
|
|
3337
3745
|
background: DEVTOOL_SECTION_BACKGROUND,
|
|
@@ -3339,7 +3747,7 @@ function MetaSection({ entry }) {
|
|
|
3339
3747
|
overflow: "hidden",
|
|
3340
3748
|
cursor: "pointer"
|
|
3341
3749
|
},
|
|
3342
|
-
children: expandedRows.map(({ label, value }, i) => /* @__PURE__ */
|
|
3750
|
+
children: expandedRows.map(({ label, value }, i) => /* @__PURE__ */ jsxDEV14("div", {
|
|
3343
3751
|
style: {
|
|
3344
3752
|
display: "grid",
|
|
3345
3753
|
gridTemplateColumns: "52px 1fr",
|
|
@@ -3349,11 +3757,11 @@ function MetaSection({ entry }) {
|
|
|
3349
3757
|
alignItems: "start"
|
|
3350
3758
|
},
|
|
3351
3759
|
children: [
|
|
3352
|
-
/* @__PURE__ */
|
|
3760
|
+
/* @__PURE__ */ jsxDEV14("span", {
|
|
3353
3761
|
style: { textAlign: "left", color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px", paddingTop: "1px" },
|
|
3354
3762
|
children: label
|
|
3355
3763
|
}, undefined, false, undefined, this),
|
|
3356
|
-
/* @__PURE__ */
|
|
3764
|
+
/* @__PURE__ */ jsxDEV14("span", {
|
|
3357
3765
|
style: {
|
|
3358
3766
|
textAlign: "left",
|
|
3359
3767
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
@@ -3364,7 +3772,7 @@ function MetaSection({ entry }) {
|
|
|
3364
3772
|
}, undefined, false, undefined, this)
|
|
3365
3773
|
]
|
|
3366
3774
|
}, label, true, undefined, this))
|
|
3367
|
-
}, undefined, false, undefined, this) : /* @__PURE__ */
|
|
3775
|
+
}, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV14("div", {
|
|
3368
3776
|
onClick: () => setExpanded(true),
|
|
3369
3777
|
style: {
|
|
3370
3778
|
background: DEVTOOL_SECTION_BACKGROUND,
|
|
@@ -3378,19 +3786,19 @@ function MetaSection({ entry }) {
|
|
|
3378
3786
|
cursor: "pointer"
|
|
3379
3787
|
},
|
|
3380
3788
|
children: [
|
|
3381
|
-
/* @__PURE__ */
|
|
3789
|
+
/* @__PURE__ */ jsxDEV14(MetaChip, {
|
|
3382
3790
|
label: "cuid",
|
|
3383
3791
|
value: `…${cuid.slice(-8)}`
|
|
3384
3792
|
}, undefined, false, undefined, this),
|
|
3385
|
-
/* @__PURE__ */
|
|
3793
|
+
/* @__PURE__ */ jsxDEV14(MetaChip, {
|
|
3386
3794
|
label: "runtime",
|
|
3387
3795
|
value: meta.originClient.envId
|
|
3388
3796
|
}, undefined, false, undefined, this),
|
|
3389
|
-
meta.originClient.perId != null && /* @__PURE__ */
|
|
3797
|
+
meta.originClient.perId != null && /* @__PURE__ */ jsxDEV14(MetaChip, {
|
|
3390
3798
|
label: "perId",
|
|
3391
3799
|
value: meta.originClient.perId.length > 10 ? `${meta.originClient.perId.slice(0, 10)}…` : meta.originClient.perId
|
|
3392
3800
|
}, undefined, false, undefined, this),
|
|
3393
|
-
meta.originClient.insId != null && /* @__PURE__ */
|
|
3801
|
+
meta.originClient.insId != null && /* @__PURE__ */ jsxDEV14(MetaChip, {
|
|
3394
3802
|
label: "insId",
|
|
3395
3803
|
value: meta.originClient.insId.length > 10 ? `${meta.originClient.insId.slice(0, 10)}…` : meta.originClient.insId
|
|
3396
3804
|
}, undefined, false, undefined, this)
|
|
@@ -3401,7 +3809,7 @@ function MetaSection({ entry }) {
|
|
|
3401
3809
|
}
|
|
3402
3810
|
|
|
3403
3811
|
// src/devtools/browser/components/RoutingSection.tsx
|
|
3404
|
-
import { jsxDEV as
|
|
3812
|
+
import { jsxDEV as jsxDEV15 } from "react/jsx-dev-runtime";
|
|
3405
3813
|
function RoutingSection({
|
|
3406
3814
|
entry,
|
|
3407
3815
|
minHopCount = 0
|
|
@@ -3411,12 +3819,12 @@ function RoutingSection({
|
|
|
3411
3819
|
const phantomCount = Math.max(0, minHopCount - hopCount);
|
|
3412
3820
|
if (hopCount === 0 && phantomCount === 0)
|
|
3413
3821
|
return null;
|
|
3414
|
-
return /* @__PURE__ */
|
|
3822
|
+
return /* @__PURE__ */ jsxDEV15("div", {
|
|
3415
3823
|
children: [
|
|
3416
|
-
/* @__PURE__ */
|
|
3824
|
+
/* @__PURE__ */ jsxDEV15(SectionLabel, {
|
|
3417
3825
|
label: hopCount > 0 ? `Routing · ${hopCount} hop${hopCount !== 1 ? "s" : ""}` : "Routing"
|
|
3418
3826
|
}, undefined, false, undefined, this),
|
|
3419
|
-
/* @__PURE__ */
|
|
3827
|
+
/* @__PURE__ */ jsxDEV15("div", {
|
|
3420
3828
|
style: { display: "flex", flexDirection: "column", gap: "2px" },
|
|
3421
3829
|
children: [
|
|
3422
3830
|
meta.routing.map((hop, i) => {
|
|
@@ -3425,7 +3833,7 @@ function RoutingSection({
|
|
|
3425
3833
|
const badgeColor = isLocal ? DEVTOOL_COLOR_SEMANTIC_SUCCESS : DEVTOOL_COLOR_SEMANTIC_WARNING;
|
|
3426
3834
|
const badgeText = isLocal ? "● exec" : `→ ${hop.transport ?? "ext"}`;
|
|
3427
3835
|
const runtimeTitle = [hop.runtime.perId, hop.runtime.insId].filter(Boolean).join(" · ") || undefined;
|
|
3428
|
-
return /* @__PURE__ */
|
|
3836
|
+
return /* @__PURE__ */ jsxDEV15("div", {
|
|
3429
3837
|
style: {
|
|
3430
3838
|
background: DEVTOOL_SECTION_BACKGROUND,
|
|
3431
3839
|
borderRadius: "4px",
|
|
@@ -3438,14 +3846,14 @@ function RoutingSection({
|
|
|
3438
3846
|
padding: "4px 8px"
|
|
3439
3847
|
},
|
|
3440
3848
|
children: [
|
|
3441
|
-
/* @__PURE__ */
|
|
3849
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3442
3850
|
style: { display: "flex", flexDirection: "row", alignItems: "center", gap: "10px" },
|
|
3443
3851
|
children: [
|
|
3444
|
-
/* @__PURE__ */
|
|
3852
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3445
3853
|
style: { color: DEVTOOL_COLOR_TEXT_FAINT, fontSize: "10px", width: "16px", textAlign: "right" },
|
|
3446
3854
|
children: i + 1
|
|
3447
3855
|
}, undefined, false, undefined, this),
|
|
3448
|
-
/* @__PURE__ */
|
|
3856
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3449
3857
|
title: runtimeTitle,
|
|
3450
3858
|
style: {
|
|
3451
3859
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
@@ -3459,11 +3867,11 @@ function RoutingSection({
|
|
|
3459
3867
|
}, undefined, false, undefined, this)
|
|
3460
3868
|
]
|
|
3461
3869
|
}, undefined, true, undefined, this),
|
|
3462
|
-
/* @__PURE__ */
|
|
3870
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3463
3871
|
style: { color: badgeColor, fontSize: "10px", whiteSpace: "nowrap" },
|
|
3464
3872
|
children: badgeText
|
|
3465
3873
|
}, undefined, false, undefined, this),
|
|
3466
|
-
/* @__PURE__ */
|
|
3874
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3467
3875
|
style: {
|
|
3468
3876
|
display: "flex",
|
|
3469
3877
|
alignItems: "center",
|
|
@@ -3472,7 +3880,7 @@ function RoutingSection({
|
|
|
3472
3880
|
overflow: "hidden"
|
|
3473
3881
|
},
|
|
3474
3882
|
children: [
|
|
3475
|
-
/* @__PURE__ */
|
|
3883
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3476
3884
|
style: {
|
|
3477
3885
|
color: DEVTOOL_COLOR_TEXT_MUTED,
|
|
3478
3886
|
fontSize: "10px",
|
|
@@ -3482,7 +3890,7 @@ function RoutingSection({
|
|
|
3482
3890
|
},
|
|
3483
3891
|
children: hop.handlerClient != null ? `↳ ${hop.handlerClient.envId}` : ""
|
|
3484
3892
|
}, undefined, false, undefined, this),
|
|
3485
|
-
/* @__PURE__ */
|
|
3893
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3486
3894
|
style: { color: DEVTOOL_COLOR_TEXT_FAINT, fontSize: "10px", flexShrink: 0, marginLeft: "auto" },
|
|
3487
3895
|
children: [
|
|
3488
3896
|
"+",
|
|
@@ -3495,7 +3903,7 @@ function RoutingSection({
|
|
|
3495
3903
|
]
|
|
3496
3904
|
}, `${hop.time}-${hop.runtime.envId}`, true, undefined, this);
|
|
3497
3905
|
}),
|
|
3498
|
-
Array.from({ length: phantomCount }, (_, i) => `routing-phantom-${hopCount + i}`).map((key) => /* @__PURE__ */
|
|
3906
|
+
Array.from({ length: phantomCount }, (_, i) => `routing-phantom-${hopCount + i}`).map((key) => /* @__PURE__ */ jsxDEV15("div", {
|
|
3499
3907
|
"aria-hidden": "true",
|
|
3500
3908
|
style: {
|
|
3501
3909
|
visibility: "hidden",
|
|
@@ -3508,24 +3916,24 @@ function RoutingSection({
|
|
|
3508
3916
|
padding: "4px 8px"
|
|
3509
3917
|
},
|
|
3510
3918
|
children: [
|
|
3511
|
-
/* @__PURE__ */
|
|
3919
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3512
3920
|
style: { display: "flex", flexDirection: "row", alignItems: "center", gap: "10px" },
|
|
3513
3921
|
children: [
|
|
3514
|
-
/* @__PURE__ */
|
|
3922
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3515
3923
|
style: { fontSize: "10px", width: "16px" },
|
|
3516
3924
|
children: "0"
|
|
3517
3925
|
}, undefined, false, undefined, this),
|
|
3518
|
-
/* @__PURE__ */
|
|
3926
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3519
3927
|
style: { fontSize: "11px" },
|
|
3520
3928
|
children: "placeholder"
|
|
3521
3929
|
}, undefined, false, undefined, this)
|
|
3522
3930
|
]
|
|
3523
3931
|
}, undefined, true, undefined, this),
|
|
3524
|
-
/* @__PURE__ */
|
|
3932
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3525
3933
|
style: { fontSize: "10px" },
|
|
3526
3934
|
children: "placeholder"
|
|
3527
3935
|
}, undefined, false, undefined, this),
|
|
3528
|
-
/* @__PURE__ */
|
|
3936
|
+
/* @__PURE__ */ jsxDEV15("span", {}, undefined, false, undefined, this)
|
|
3529
3937
|
]
|
|
3530
3938
|
}, key, true, undefined, this))
|
|
3531
3939
|
]
|
|
@@ -3535,7 +3943,7 @@ function RoutingSection({
|
|
|
3535
3943
|
}
|
|
3536
3944
|
|
|
3537
3945
|
// src/devtools/browser/components/action_detail/ActionDetailPanel.tsx
|
|
3538
|
-
import { jsxDEV as
|
|
3946
|
+
import { jsxDEV as jsxDEV16 } from "react/jsx-dev-runtime";
|
|
3539
3947
|
var STATUS_BADGE_LABEL = {
|
|
3540
3948
|
running: "RUNNING",
|
|
3541
3949
|
success: "SUCCESS",
|
|
@@ -3566,7 +3974,7 @@ function DetailHeader({
|
|
|
3566
3974
|
const color = STATUS_COLOR[entry.status];
|
|
3567
3975
|
const StatusIconComponent = STATUS_ICON[entry.status];
|
|
3568
3976
|
const timestamp = formatTimestamp(entry.startTime);
|
|
3569
|
-
return /* @__PURE__ */
|
|
3977
|
+
return /* @__PURE__ */ jsxDEV16("div", {
|
|
3570
3978
|
onClick: !isActive ? onClick : undefined,
|
|
3571
3979
|
style: {
|
|
3572
3980
|
padding: "0.5em 1em",
|
|
@@ -3580,13 +3988,13 @@ function DetailHeader({
|
|
|
3580
3988
|
gap: "1em",
|
|
3581
3989
|
cursor: isActive ? "default" : "pointer"
|
|
3582
3990
|
},
|
|
3583
|
-
children: /* @__PURE__ */
|
|
3991
|
+
children: /* @__PURE__ */ jsxDEV16("div", {
|
|
3584
3992
|
style: { flex: 1, minWidth: 0, display: "flex", flexDirection: "column", gap: "0.5em" },
|
|
3585
3993
|
children: [
|
|
3586
|
-
/* @__PURE__ */
|
|
3994
|
+
/* @__PURE__ */ jsxDEV16("div", {
|
|
3587
3995
|
style: { display: "flex", alignItems: "center", minWidth: 0, gap: "0.5em" },
|
|
3588
3996
|
children: [
|
|
3589
|
-
/* @__PURE__ */
|
|
3997
|
+
/* @__PURE__ */ jsxDEV16("span", {
|
|
3590
3998
|
style: {
|
|
3591
3999
|
color,
|
|
3592
4000
|
flexShrink: 0,
|
|
@@ -3594,12 +4002,12 @@ function DetailHeader({
|
|
|
3594
4002
|
alignItems: "center",
|
|
3595
4003
|
animation: entry.status === "running" ? "__nice-action-pulse 1.2s ease-in-out infinite" : undefined
|
|
3596
4004
|
},
|
|
3597
|
-
children: /* @__PURE__ */
|
|
4005
|
+
children: /* @__PURE__ */ jsxDEV16(StatusIconComponent, {
|
|
3598
4006
|
size: 20,
|
|
3599
4007
|
strokeWidth: 1.75
|
|
3600
4008
|
}, undefined, false, undefined, this)
|
|
3601
4009
|
}, undefined, false, undefined, this),
|
|
3602
|
-
/* @__PURE__ */
|
|
4010
|
+
/* @__PURE__ */ jsxDEV16("span", {
|
|
3603
4011
|
style: {
|
|
3604
4012
|
color: DEVTOOL_COLOR_TEXT_EMPHASIS,
|
|
3605
4013
|
fontSize: "1.2em",
|
|
@@ -3613,7 +4021,7 @@ function DetailHeader({
|
|
|
3613
4021
|
},
|
|
3614
4022
|
children: entry.actionId
|
|
3615
4023
|
}, undefined, false, undefined, this),
|
|
3616
|
-
/* @__PURE__ */
|
|
4024
|
+
/* @__PURE__ */ jsxDEV16("span", {
|
|
3617
4025
|
style: {
|
|
3618
4026
|
flexShrink: 0,
|
|
3619
4027
|
padding: "2px 9px",
|
|
@@ -3628,14 +4036,14 @@ function DetailHeader({
|
|
|
3628
4036
|
},
|
|
3629
4037
|
children: STATUS_BADGE_LABEL[entry.status]
|
|
3630
4038
|
}, undefined, false, undefined, this),
|
|
3631
|
-
/* @__PURE__ */
|
|
4039
|
+
/* @__PURE__ */ jsxDEV16(DomainChip, {
|
|
3632
4040
|
domain: entry.domain,
|
|
3633
4041
|
allDomains: entry.allDomains,
|
|
3634
4042
|
size: "md" /* md */
|
|
3635
4043
|
}, undefined, false, undefined, this)
|
|
3636
4044
|
]
|
|
3637
4045
|
}, undefined, true, undefined, this),
|
|
3638
|
-
/* @__PURE__ */
|
|
4046
|
+
/* @__PURE__ */ jsxDEV16("div", {
|
|
3639
4047
|
style: {
|
|
3640
4048
|
display: "flex",
|
|
3641
4049
|
alignItems: "center",
|
|
@@ -3643,7 +4051,7 @@ function DetailHeader({
|
|
|
3643
4051
|
gap: "8px"
|
|
3644
4052
|
},
|
|
3645
4053
|
children: [
|
|
3646
|
-
/* @__PURE__ */
|
|
4054
|
+
/* @__PURE__ */ jsxDEV16("div", {
|
|
3647
4055
|
style: {
|
|
3648
4056
|
display: "flex",
|
|
3649
4057
|
alignItems: "center",
|
|
@@ -3652,20 +4060,20 @@ function DetailHeader({
|
|
|
3652
4060
|
overflow: "hidden"
|
|
3653
4061
|
},
|
|
3654
4062
|
children: [
|
|
3655
|
-
/* @__PURE__ */
|
|
4063
|
+
/* @__PURE__ */ jsxDEV16(HandlerChips, {
|
|
3656
4064
|
entry,
|
|
3657
4065
|
size: "md" /* md */
|
|
3658
4066
|
}, undefined, false, undefined, this),
|
|
3659
|
-
/* @__PURE__ */
|
|
4067
|
+
/* @__PURE__ */ jsxDEV16(ChildDispatchChips, {
|
|
3660
4068
|
childRouteItems: childExternalRouteItems,
|
|
3661
4069
|
size: "md" /* md */
|
|
3662
4070
|
}, undefined, false, undefined, this)
|
|
3663
4071
|
]
|
|
3664
4072
|
}, undefined, true, undefined, this),
|
|
3665
|
-
/* @__PURE__ */
|
|
4073
|
+
/* @__PURE__ */ jsxDEV16("div", {
|
|
3666
4074
|
style: { display: "flex", alignItems: "center", gap: "8px", flexShrink: 0 },
|
|
3667
4075
|
children: [
|
|
3668
|
-
/* @__PURE__ */
|
|
4076
|
+
/* @__PURE__ */ jsxDEV16("span", {
|
|
3669
4077
|
style: {
|
|
3670
4078
|
color: DEVTOOL_COLOR_SEMANTIC_METADATA,
|
|
3671
4079
|
fontSize: "10px",
|
|
@@ -3674,9 +4082,9 @@ function DetailHeader({
|
|
|
3674
4082
|
},
|
|
3675
4083
|
children: timestamp
|
|
3676
4084
|
}, undefined, false, undefined, this),
|
|
3677
|
-
/* @__PURE__ */
|
|
4085
|
+
/* @__PURE__ */ jsxDEV16("span", {
|
|
3678
4086
|
style: { color, fontSize: "12px", fontWeight: "500" },
|
|
3679
|
-
children: /* @__PURE__ */
|
|
4087
|
+
children: /* @__PURE__ */ jsxDEV16(DurationDisplay, {
|
|
3680
4088
|
entry
|
|
3681
4089
|
}, undefined, false, undefined, this)
|
|
3682
4090
|
}, undefined, false, undefined, this)
|
|
@@ -3694,10 +4102,10 @@ function ActionDetailPanel({
|
|
|
3694
4102
|
childEntries,
|
|
3695
4103
|
onSelectEntry
|
|
3696
4104
|
}) {
|
|
3697
|
-
const [focusedChildCuid, setFocusedChildCuid] =
|
|
4105
|
+
const [focusedChildCuid, setFocusedChildCuid] = useState7(null);
|
|
3698
4106
|
const focusedEntry = focusedChildCuid != null ? childEntries.find((e) => e.cuid === focusedChildCuid) ?? entry : entry;
|
|
3699
4107
|
const maxRoutingHops = Math.max(entry.meta.routing.length, ...childEntries.map((e) => e.meta.routing.length), 0);
|
|
3700
|
-
const maxCallSiteFrames = Math.max(countUserFrames(entry.callSite), ...childEntries.map((e) => countUserFrames(e.callSite)), 0);
|
|
4108
|
+
const maxCallSiteFrames = Math.max(countUserFrames(entry.meta.originClient, entry.callSite), ...childEntries.map((e) => countUserFrames(e.meta.originClient, e.callSite)), 0);
|
|
3701
4109
|
const childExternalRouteItems = useMemo(() => {
|
|
3702
4110
|
const seen = new Set;
|
|
3703
4111
|
const result = [];
|
|
@@ -3716,7 +4124,7 @@ function ActionDetailPanel({
|
|
|
3716
4124
|
const handleFocusChild = (cuid) => {
|
|
3717
4125
|
setFocusedChildCuid((prev) => prev === cuid ? null : cuid);
|
|
3718
4126
|
};
|
|
3719
|
-
return /* @__PURE__ */
|
|
4127
|
+
return /* @__PURE__ */ jsxDEV16("div", {
|
|
3720
4128
|
style: {
|
|
3721
4129
|
flex: 1,
|
|
3722
4130
|
display: "flex",
|
|
@@ -3726,20 +4134,20 @@ function ActionDetailPanel({
|
|
|
3726
4134
|
background: DEVTOOL_DETAIL_BASE_BACKGROUND
|
|
3727
4135
|
},
|
|
3728
4136
|
children: [
|
|
3729
|
-
/* @__PURE__ */
|
|
4137
|
+
/* @__PURE__ */ jsxDEV16(DetailHeader, {
|
|
3730
4138
|
entry,
|
|
3731
4139
|
isActive: focusedChildCuid === null,
|
|
3732
4140
|
onClick: () => setFocusedChildCuid(null),
|
|
3733
4141
|
childExternalRouteItems
|
|
3734
4142
|
}, undefined, false, undefined, this),
|
|
3735
|
-
/* @__PURE__ */
|
|
4143
|
+
/* @__PURE__ */ jsxDEV16(CallStackSection, {
|
|
3736
4144
|
parent,
|
|
3737
4145
|
childEntries,
|
|
3738
4146
|
focusedChildCuid,
|
|
3739
4147
|
onFocusChild: handleFocusChild,
|
|
3740
4148
|
onSelectParent: onSelectEntry
|
|
3741
4149
|
}, undefined, false, undefined, this),
|
|
3742
|
-
/* @__PURE__ */
|
|
4150
|
+
/* @__PURE__ */ jsxDEV16("div", {
|
|
3743
4151
|
style: {
|
|
3744
4152
|
flex: 1,
|
|
3745
4153
|
overflowY: "auto",
|
|
@@ -3750,36 +4158,37 @@ function ActionDetailPanel({
|
|
|
3750
4158
|
gap: "8px"
|
|
3751
4159
|
},
|
|
3752
4160
|
children: [
|
|
3753
|
-
focusedEntry.input !== undefined ? /* @__PURE__ */
|
|
4161
|
+
focusedEntry.input !== undefined ? /* @__PURE__ */ jsxDEV16(DetailSection, {
|
|
3754
4162
|
label: "Input",
|
|
3755
4163
|
value: focusedEntry.input
|
|
3756
|
-
}, undefined, false, undefined, this) : /* @__PURE__ */
|
|
4164
|
+
}, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV16(DetailSection, {
|
|
3757
4165
|
label: "Input",
|
|
3758
4166
|
value: "No input required or given"
|
|
3759
4167
|
}, undefined, false, undefined, this),
|
|
3760
|
-
focusedEntry.status === "success" && /* @__PURE__ */
|
|
4168
|
+
focusedEntry.status === "success" && /* @__PURE__ */ jsxDEV16(DetailSection, {
|
|
3761
4169
|
label: "Output",
|
|
3762
4170
|
value: focusedEntry.output,
|
|
3763
4171
|
color: DEVTOOL_COLOR_SEMANTIC_SUCCESS
|
|
3764
4172
|
}, undefined, false, undefined, this),
|
|
3765
|
-
(focusedEntry.status === "action-error" || focusedEntry.status === "failed" || focusedEntry.status === "aborted") && /* @__PURE__ */
|
|
4173
|
+
(focusedEntry.status === "action-error" || focusedEntry.status === "failed" || focusedEntry.status === "aborted") && /* @__PURE__ */ jsxDEV16(ActionErrorDisplay, {
|
|
3766
4174
|
entry: focusedEntry
|
|
3767
4175
|
}, undefined, false, undefined, this),
|
|
3768
|
-
focusedEntry.progressUpdates.length > 0 && /* @__PURE__ */
|
|
4176
|
+
focusedEntry.progressUpdates.length > 0 && /* @__PURE__ */ jsxDEV16(DetailSection, {
|
|
3769
4177
|
label: `Progress (${focusedEntry.progressUpdates.length})`,
|
|
3770
4178
|
value: focusedEntry.progressUpdates
|
|
3771
4179
|
}, undefined, false, undefined, this),
|
|
3772
|
-
/* @__PURE__ */
|
|
4180
|
+
/* @__PURE__ */ jsxDEV16(StackTraceSection, {
|
|
4181
|
+
runtime: entry.meta.originClient,
|
|
3773
4182
|
label: "Dispatch Site",
|
|
3774
4183
|
stack: focusedEntry.callSite,
|
|
3775
4184
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
3776
4185
|
minFrameCount: maxCallSiteFrames
|
|
3777
4186
|
}, undefined, false, undefined, this),
|
|
3778
|
-
/* @__PURE__ */
|
|
4187
|
+
/* @__PURE__ */ jsxDEV16(RoutingSection, {
|
|
3779
4188
|
entry: focusedEntry,
|
|
3780
4189
|
minHopCount: maxRoutingHops
|
|
3781
4190
|
}, undefined, false, undefined, this),
|
|
3782
|
-
/* @__PURE__ */
|
|
4191
|
+
/* @__PURE__ */ jsxDEV16(MetaSection, {
|
|
3783
4192
|
entry: focusedEntry
|
|
3784
4193
|
}, undefined, false, undefined, this)
|
|
3785
4194
|
]
|
|
@@ -3791,59 +4200,6 @@ function ActionDetailPanel({
|
|
|
3791
4200
|
// src/devtools/browser/components/action_list/ActionEntryRow.tsx
|
|
3792
4201
|
import { Box, CircleX as CircleX2, Variable } from "lucide-react";
|
|
3793
4202
|
import { Fragment as Fragment7, useState as useState8 } from "react";
|
|
3794
|
-
|
|
3795
|
-
// src/devtools/browser/components/Icon.tsx
|
|
3796
|
-
import { useState as useState7 } from "react";
|
|
3797
|
-
import { jsxDEV as jsxDEV16, Fragment as Fragment6 } from "react/jsx-dev-runtime";
|
|
3798
|
-
var ICON_SIZE_PX = {
|
|
3799
|
-
["sm" /* sm */]: 13,
|
|
3800
|
-
["md" /* md */]: 16,
|
|
3801
|
-
["lg" /* lg */]: 18
|
|
3802
|
-
};
|
|
3803
|
-
function Icon({
|
|
3804
|
-
icon: IconComponent,
|
|
3805
|
-
color,
|
|
3806
|
-
size = "md" /* md */,
|
|
3807
|
-
subtle = false,
|
|
3808
|
-
tooltip,
|
|
3809
|
-
style
|
|
3810
|
-
}) {
|
|
3811
|
-
const [anchor, setAnchor] = useState7(null);
|
|
3812
|
-
const hasTooltip = tooltip != null;
|
|
3813
|
-
const colorEntry = SEMANTIC_COLORS[color];
|
|
3814
|
-
const resolvedColor = subtle ? colorEntry.subtle?.color ?? colorEntry.color : colorEntry.color;
|
|
3815
|
-
return /* @__PURE__ */ jsxDEV16(Fragment6, {
|
|
3816
|
-
children: [
|
|
3817
|
-
/* @__PURE__ */ jsxDEV16("div", {
|
|
3818
|
-
onMouseEnter: hasTooltip ? (e) => setAnchor(e.currentTarget.getBoundingClientRect()) : undefined,
|
|
3819
|
-
onMouseLeave: hasTooltip ? () => setAnchor(null) : undefined,
|
|
3820
|
-
style: {
|
|
3821
|
-
borderRadius: "0.4em",
|
|
3822
|
-
height: `${1.65 * getSizeValue(size)}em`,
|
|
3823
|
-
width: `${1.65 * getSizeValue(size)}em`,
|
|
3824
|
-
display: "flex",
|
|
3825
|
-
alignItems: "center",
|
|
3826
|
-
justifyContent: "center",
|
|
3827
|
-
background: "rgba(0,0,0,0.4)",
|
|
3828
|
-
color: resolvedColor,
|
|
3829
|
-
flexShrink: 0,
|
|
3830
|
-
cursor: hasTooltip ? "default" : undefined,
|
|
3831
|
-
...style
|
|
3832
|
-
},
|
|
3833
|
-
children: /* @__PURE__ */ jsxDEV16(IconComponent, {
|
|
3834
|
-
size: ICON_SIZE_PX[size],
|
|
3835
|
-
strokeWidth: 1.5
|
|
3836
|
-
}, undefined, false, undefined, this)
|
|
3837
|
-
}, undefined, false, undefined, this),
|
|
3838
|
-
anchor != null && hasTooltip && /* @__PURE__ */ jsxDEV16(Tooltip, {
|
|
3839
|
-
anchor,
|
|
3840
|
-
config: tooltip
|
|
3841
|
-
}, undefined, false, undefined, this)
|
|
3842
|
-
]
|
|
3843
|
-
}, undefined, true, undefined, this);
|
|
3844
|
-
}
|
|
3845
|
-
|
|
3846
|
-
// src/devtools/browser/components/action_list/ActionEntryRow.tsx
|
|
3847
4203
|
import { jsxDEV as jsxDEV17, Fragment as Fragment8 } from "react/jsx-dev-runtime";
|
|
3848
4204
|
function getLatestChipColor(status) {
|
|
3849
4205
|
if (status === "failed")
|
|
@@ -4034,8 +4390,6 @@ function ActionEntryRow({
|
|
|
4034
4390
|
selectedGroupCuid,
|
|
4035
4391
|
onSelectGroupEntry
|
|
4036
4392
|
}) {
|
|
4037
|
-
const statusSemantic = STATUS_THING[entry.status];
|
|
4038
|
-
const statusIcon = STATUS_ICON[entry.status];
|
|
4039
4393
|
const timestamp = formatTimestamp(entry.startTime);
|
|
4040
4394
|
const hasGroup = groupEntries != null && groupEntries.length > 1;
|
|
4041
4395
|
const hasBottomContent = childEntries != null && childEntries.length > 0 || (breakReasons?.some((r) => r !== "new input" && r !== "new output") ?? false) || entry.error != null || entry.abortReason != null;
|
|
@@ -4047,7 +4401,7 @@ function ActionEntryRow({
|
|
|
4047
4401
|
display: "flex",
|
|
4048
4402
|
flexDirection: "column",
|
|
4049
4403
|
gap: "5px",
|
|
4050
|
-
padding: "
|
|
4404
|
+
padding: "0.5em 0.6em",
|
|
4051
4405
|
cursor: "pointer",
|
|
4052
4406
|
background: isSelected ? DEVTOOL_LIST_HEADER_SELECTED_BACKGROUND : "transparent",
|
|
4053
4407
|
border: `1px solid ${DEVTOOL_PANEL_BORDER}`,
|
|
@@ -4076,12 +4430,13 @@ function ActionEntryRow({
|
|
|
4076
4430
|
position: "relative",
|
|
4077
4431
|
zIndex: 1,
|
|
4078
4432
|
flexShrink: 0,
|
|
4079
|
-
minWidth: "4em",
|
|
4433
|
+
minWidth: "3.4em",
|
|
4080
4434
|
display: "flex",
|
|
4081
4435
|
alignItems: "center",
|
|
4082
4436
|
justifyContent: "flex-start"
|
|
4083
4437
|
},
|
|
4084
4438
|
children: isLatest ? /* @__PURE__ */ jsxDEV17(Chip, {
|
|
4439
|
+
size: "sm" /* sm */,
|
|
4085
4440
|
color: getLatestChipColor(entry.status),
|
|
4086
4441
|
children: "latest"
|
|
4087
4442
|
}, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV17(Chip, {
|
|
@@ -4099,7 +4454,8 @@ function ActionEntryRow({
|
|
|
4099
4454
|
/* @__PURE__ */ jsxDEV17("span", {
|
|
4100
4455
|
style: {
|
|
4101
4456
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
4102
|
-
fontSize: "
|
|
4457
|
+
fontSize: "1em",
|
|
4458
|
+
fontWeight: 400,
|
|
4103
4459
|
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace",
|
|
4104
4460
|
overflow: "hidden",
|
|
4105
4461
|
textOverflow: "ellipsis",
|
|
@@ -4109,10 +4465,6 @@ function ActionEntryRow({
|
|
|
4109
4465
|
},
|
|
4110
4466
|
children: entry.actionId
|
|
4111
4467
|
}, undefined, false, undefined, this),
|
|
4112
|
-
/* @__PURE__ */ jsxDEV17(DomainChip, {
|
|
4113
|
-
domain: entry.domain,
|
|
4114
|
-
allDomains: entry.allDomains
|
|
4115
|
-
}, undefined, false, undefined, this),
|
|
4116
4468
|
/* @__PURE__ */ jsxDEV17(Icon, {
|
|
4117
4469
|
icon: Variable,
|
|
4118
4470
|
color: entry.input !== undefined ? "io_input" /* io_input */ : "default" /* default */,
|
|
@@ -4828,7 +5180,7 @@ function ActionList({
|
|
|
4828
5180
|
childEntriesMap,
|
|
4829
5181
|
style
|
|
4830
5182
|
}) {
|
|
4831
|
-
const containerRef =
|
|
5183
|
+
const containerRef = useRef2(null);
|
|
4832
5184
|
const latestTime = groups[0]?.representative.startTime;
|
|
4833
5185
|
const flatItems = useMemo2(() => {
|
|
4834
5186
|
return groups.map((group, gi) => {
|
|
@@ -4842,7 +5194,7 @@ function ActionList({
|
|
|
4842
5194
|
return { group, groupIndex: gi, breakReasons };
|
|
4843
5195
|
});
|
|
4844
5196
|
}, [groups]);
|
|
4845
|
-
const prevSelectedRef =
|
|
5197
|
+
const prevSelectedRef = useRef2(selectedCuid);
|
|
4846
5198
|
useEffect3(() => {
|
|
4847
5199
|
if (selectedCuid === prevSelectedRef.current)
|
|
4848
5200
|
return;
|