@workflow/web 5.0.0-beta.8 → 5.0.0-beta.9
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/client/assets/{highlighted-body-B3W2YXNL-WHMd9MPa.js → highlighted-body-B3W2YXNL-ijzNrESJ.js} +1 -1
- package/build/client/assets/{home-Cai0GqMt.js → home-MRChHR_P.js} +2 -2
- package/build/client/assets/{manifest-127f70fe.js → manifest-b100514d.js} +1 -1
- package/build/client/assets/{mermaid-3ZIDBTTL-TNUP6Q3m.js → mermaid-3ZIDBTTL-3cOa-aZ5.js} +179 -48
- package/build/client/assets/{root-ORTTXEp6.js → root-3uuTxUQN.js} +1 -1
- package/build/client/assets/root-BYtlAgHl.css +1 -0
- package/build/client/assets/{run-detail-DNZJxxPM.js → run-detail-8qGjUNCj.js} +50 -23
- package/build/client/assets/server-build-ByHD2s6b.css +1 -0
- package/build/client/assets/{workflow-graph-viewer-DKqOOMnz.js → workflow-graph-viewer-DaYMiBT9.js} +1 -1
- package/build/server/assets/{app-BxqFvIap.js → app-BEgkHdDF.js} +1 -1
- package/build/server/assets/{highlighted-body-B3W2YXNL-BuIiME1D.js → highlighted-body-B3W2YXNL-B4fAdNsB.js} +2 -2
- package/build/server/assets/{index-CdMzuwNr.js → index-DltGJ3CV.js} +3 -3
- package/build/server/assets/{mermaid-3ZIDBTTL-TSh7T1Pv.js → mermaid-3ZIDBTTL-C6M7jb0V.js} +2 -2
- package/build/server/assets/{server-build-fc5Vuxba.js → server-build-Ctg6FoI8.js} +260 -69
- package/build/server/assets/{token--89oCxEK.js → token-BNjLoJXz.js} +2 -2
- package/build/server/assets/{token-util-N0DDbkKZ.js → token-util-DwTdh-aG.js} +2 -2
- package/build/server/index.js +1 -1
- package/package.json +4 -4
- package/build/client/assets/root-COvK3yNk.css +0 -1
- package/build/client/assets/server-build-DzzvWTSG.css +0 -1
|
@@ -14,7 +14,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
14
14
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
15
15
|
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
16
16
|
var _a2, _b, _c, _listeners, _onabort, _reader, _root, _hasMagic, _uflag, _parts, _parent, _parentIndex, _negs, _filledNegs, _options, _toString, _emptyExt, _AST_instances, fillNegs_fn, _AST_static, parseAST_fn, canAdoptWithSpace_fn, canAdopt_fn, canAdoptType_fn, adoptWithSpace_fn, adopt_fn, canUsurpType_fn, canUsurp_fn, usurp_fn, flatten_fn, partsToRegExp_fn, parseGlob_fn, _Minimatch_instances, matchGlobstar_fn, matchGlobStarBodySections_fn, matchOne_fn, _worldPromise, _Run_instances, lazyWorldPromise_get, _encryptionKeyPromise, _resilientStart, getEncryptionKey_fn, pollReturnValue_fn;
|
|
17
|
-
import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-
|
|
17
|
+
import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-BEgkHdDF.js";
|
|
18
18
|
import require$$0$3, { PassThrough } from "node:stream";
|
|
19
19
|
import require$$0 from "util";
|
|
20
20
|
import require$$1 from "crypto";
|
|
@@ -50642,7 +50642,14 @@ const buttonVariants$1 = cva([
|
|
|
50642
50642
|
"!text-gray-100",
|
|
50643
50643
|
"bg-gray-1000",
|
|
50644
50644
|
"transition-[border-color,background,color,transform,box-shadow] duration-150 ease-in-out",
|
|
50645
|
-
|
|
50645
|
+
// Geist invert hover: literal fallbacks (no token dep, so it resolves in any
|
|
50646
|
+
// consuming app), darkened via ancestor theme class without a registered variant.
|
|
50647
|
+
"hover:bg-[var(--themed-hover-bg,_hsl(0,_0%,_22%))]",
|
|
50648
|
+
"[.dark-theme_&]:hover:bg-[var(--themed-hover-bg,_hsl(0,_0%,_80%))]",
|
|
50649
|
+
"[[data-theme=dark]_&]:hover:bg-[var(--themed-hover-bg,_hsl(0,_0%,_80%))]",
|
|
50650
|
+
// Geist focus ring as arbitrary properties (no bare `outline`/ambiguous
|
|
50651
|
+
// arbitrary-color utilities, which differ between Tailwind v3 and v4).
|
|
50652
|
+
"focus-visible:[outline:2px_solid_var(--ds-focus-color)] focus-visible:[outline-offset:2px]",
|
|
50646
50653
|
// disabled styles
|
|
50647
50654
|
"disabled:cursor-not-allowed aria-disabled:cursor-not-allowed",
|
|
50648
50655
|
"disabled:bg-gray-100 disabled:!text-gray-700 disabled:hover:bg-gray-100",
|
|
@@ -50657,7 +50664,7 @@ const buttonVariants$1 = cva([
|
|
|
50657
50664
|
size: {
|
|
50658
50665
|
default: "h-10 px-4 text-[14px]",
|
|
50659
50666
|
sm: "h-8 px-3 text-[14px]",
|
|
50660
|
-
xs: "h-6 px-1.5 py-0.5 text-button-12",
|
|
50667
|
+
xs: "h-6 px-1.5 py-0.5 text-button-12 rounded-[4px]",
|
|
50661
50668
|
icon: "h-8 w-8"
|
|
50662
50669
|
}
|
|
50663
50670
|
},
|
|
@@ -80530,7 +80537,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
|
|
|
80530
80537
|
var et = ({ className: e, language: t, style: o, isIncomplete: n, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e), "data-incomplete": n || void 0, "data-language": t, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o }, ...s2 });
|
|
80531
80538
|
var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
|
|
80532
80539
|
var ot = ({ language: e }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e }) });
|
|
80533
|
-
var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-
|
|
80540
|
+
var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-B4fAdNsB.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
|
|
80534
80541
|
let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
|
|
80535
80542
|
`).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
|
|
80536
80543
|
return jsxRuntimeExports.jsx(Se.Provider, { value: { code: e }, children: jsxRuntimeExports.jsxs(et, { isIncomplete: s2, language: t, children: [jsxRuntimeExports.jsx(ot, { language: t }), n ? jsxRuntimeExports.jsx("div", { className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur", "data-streamdown": "code-block-actions", children: n }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(Qe, { className: o, language: t, result: c, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o, code: i, language: t, raw: c, ...r2 }) })] }) });
|
|
@@ -80852,7 +80859,7 @@ var Dt = ({ children: e, className: t, onDownload: o, onError: n }) => {
|
|
|
80852
80859
|
}, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i, children: [jsxRuntimeExports.jsx("button", { className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", t), disabled: c, onClick: () => r2(!s2), title: "Download table", type: "button", children: e != null ? e : jsxRuntimeExports.jsx(Z, { size: 14 }) }), s2 ? jsxRuntimeExports.jsxs("div", { className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg", children: [jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("csv"), title: "Download table as CSV", type: "button", children: "CSV" }), jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("markdown"), title: "Download table as Markdown", type: "button", children: "Markdown" })] }) : null] });
|
|
80853
80860
|
};
|
|
80854
80861
|
var Vt = ({ children: e, className: t, showControls: o, ...n }) => jsxRuntimeExports.jsxs("div", { className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2", "data-streamdown": "table-wrapper", children: [o ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntimeExports.jsx(Ht, {}), jsxRuntimeExports.jsx(Dt, {})] }) : null, jsxRuntimeExports.jsx("div", { className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background", children: jsxRuntimeExports.jsx("table", { className: f("w-full divide-y divide-border", t), "data-streamdown": "table", ...n, children: e }) })] });
|
|
80855
|
-
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-
|
|
80862
|
+
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-C6M7jb0V.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
|
|
80856
80863
|
function ke(e, t) {
|
|
80857
80864
|
if (!(e != null && e.position || t != null && t.position)) return true;
|
|
80858
80865
|
if (!(e != null && e.position && (t != null && t.position))) return false;
|
|
@@ -83476,6 +83483,30 @@ function StreamViewer({ streamId: _streamId, chunks, isLive, error: error2, isLo
|
|
|
83476
83483
|
color: "var(--ds-gray-600)"
|
|
83477
83484
|
}, children: isLive ? "Waiting for stream data..." : "Stream is empty" }) : jsxRuntimeExports.jsx(Yr, { ref: virtuosoRef, totalCount: chunks.length, overscan: 10, endReached: () => onScrollEnd == null ? void 0 : onScrollEnd(), itemContent: (index2) => jsxRuntimeExports.jsx("div", { style: { paddingBottom: 8 }, children: jsxRuntimeExports.jsx(ChunkRow, { chunk: chunks[index2], index: index2 }) }), style: { flex: 1, minHeight: 0 } }) })] });
|
|
83478
83485
|
}
|
|
83486
|
+
const iconButtonVariants = cva([
|
|
83487
|
+
"m-0 inline-flex shrink-0 appearance-none items-center justify-center border-0 bg-transparent p-0 align-baseline font-inherit no-underline [background:none] [-webkit-appearance:none] [-webkit-tap-highlight-color:transparent]",
|
|
83488
|
+
"transition-colors duration-150 ease-in-out",
|
|
83489
|
+
"enabled:cursor-pointer disabled:cursor-not-allowed disabled:opacity-40",
|
|
83490
|
+
"focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--ds-focus-color)] focus-visible:outline-offset-2"
|
|
83491
|
+
], {
|
|
83492
|
+
variants: {
|
|
83493
|
+
variant: {
|
|
83494
|
+
tertiary: "text-gray-900 enabled:hover:bg-gray-alpha-200 enabled:hover:text-gray-1000 enabled:active:bg-gray-alpha-200 focus-visible:text-gray-1000",
|
|
83495
|
+
muted: "text-gray-900 enabled:hover:bg-gray-alpha-200 enabled:hover:text-gray-1000 enabled:active:bg-gray-alpha-200 focus-visible:text-gray-1000"
|
|
83496
|
+
},
|
|
83497
|
+
size: {
|
|
83498
|
+
tiny: "h-6 w-6 rounded-[4px] [&_svg]:h-4 [&_svg]:w-4",
|
|
83499
|
+
small: "h-8 w-8 rounded-md [&_svg]:h-4 [&_svg]:w-4"
|
|
83500
|
+
}
|
|
83501
|
+
},
|
|
83502
|
+
defaultVariants: {
|
|
83503
|
+
variant: "tertiary",
|
|
83504
|
+
size: "tiny"
|
|
83505
|
+
}
|
|
83506
|
+
});
|
|
83507
|
+
function IconButton({ className, variant, size: size2, type = "button", ...props }) {
|
|
83508
|
+
return jsxRuntimeExports.jsx("button", { type, className: cn$4(iconButtonVariants({ variant, size: size2, className })), ...props });
|
|
83509
|
+
}
|
|
83479
83510
|
const QUERY = "(prefers-reduced-motion: reduce)";
|
|
83480
83511
|
const useReducedMotion = () => {
|
|
83481
83512
|
const [reduced, setReduced] = reactExports.useState(() => {
|
|
@@ -83506,6 +83537,128 @@ const SleepIcon = () => {
|
|
|
83506
83537
|
const StepForwardIcon = () => {
|
|
83507
83538
|
return jsxRuntimeExports.jsx("svg", { "data-testid": "geist-icon", height: "16", strokeLinejoin: "round", viewBox: "0 0 16 16", width: "16", style: { color: "currentColor" }, children: jsxRuntimeExports.jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.21969 12.5303L4.75002 13.0607L5.81068 12L5.28035 11.4697L1.81068 7.99999L5.28035 4.53032L5.81068 3.99999L4.75002 2.93933L4.21969 3.46966L0.39647 7.29289C0.00594562 7.68341 0.00594562 8.31658 0.39647 8.7071L4.21969 12.5303ZM11.7804 12.5303L11.25 13.0607L10.1894 12L10.7197 11.4697L14.1894 7.99999L10.7197 4.53032L10.1894 3.99999L11.25 2.93933L11.7804 3.46966L15.6036 7.29289C15.9941 7.68341 15.9941 8.31658 15.6036 8.7071L11.7804 12.5303Z", fill: "currentColor" }) });
|
|
83508
83539
|
};
|
|
83540
|
+
const ATTR_FILTER_REGEX = /(?:^|\s)(?<pair>(?<key>[\w.]+):(?<value>\S*))/g;
|
|
83541
|
+
function parseSpanSearchQuery(rawQuery) {
|
|
83542
|
+
var _a3, _b2, _c2;
|
|
83543
|
+
const attributes = [];
|
|
83544
|
+
for (const match2 of rawQuery.matchAll(ATTR_FILTER_REGEX)) {
|
|
83545
|
+
const key = (_b2 = (_a3 = match2.groups) == null ? void 0 : _a3.key) == null ? void 0 : _b2.trim();
|
|
83546
|
+
if (!key)
|
|
83547
|
+
continue;
|
|
83548
|
+
attributes.push({
|
|
83549
|
+
key,
|
|
83550
|
+
value: (((_c2 = match2.groups) == null ? void 0 : _c2.value) ?? "").toLocaleLowerCase()
|
|
83551
|
+
});
|
|
83552
|
+
}
|
|
83553
|
+
const text2 = rawQuery.replace(ATTR_FILTER_REGEX, " ").replace(/\s{2,}/g, " ").trim().toLocaleLowerCase();
|
|
83554
|
+
return { text: text2, attributes };
|
|
83555
|
+
}
|
|
83556
|
+
function isSpanDimmedBySearch(spanId, result) {
|
|
83557
|
+
return result.isActive && !result.matchedSpanIds.has(spanId);
|
|
83558
|
+
}
|
|
83559
|
+
function searchSpans(spans, rawQuery) {
|
|
83560
|
+
const query = parseSpanSearchQuery(rawQuery);
|
|
83561
|
+
const isActive = Boolean(query.text || query.attributes.length);
|
|
83562
|
+
const matchingSpans = isActive ? spans.filter((span) => spanMatchesQuery(span, query)) : spans;
|
|
83563
|
+
return {
|
|
83564
|
+
isActive,
|
|
83565
|
+
matchedSpanIds: new Set(matchingSpans.map((span) => span.spanId)),
|
|
83566
|
+
matchingSpans,
|
|
83567
|
+
query
|
|
83568
|
+
};
|
|
83569
|
+
}
|
|
83570
|
+
function spanMatchesQuery(span, query) {
|
|
83571
|
+
if (query.text && !spanMatchesText(span, query.text)) {
|
|
83572
|
+
return false;
|
|
83573
|
+
}
|
|
83574
|
+
return query.attributes.every(({ key, value }) => spanMatchesAttribute(span, key, value));
|
|
83575
|
+
}
|
|
83576
|
+
function spanMatchesText(span, text2) {
|
|
83577
|
+
return [
|
|
83578
|
+
span.name,
|
|
83579
|
+
span.spanId,
|
|
83580
|
+
span.resource,
|
|
83581
|
+
span.library.name,
|
|
83582
|
+
span.library.version
|
|
83583
|
+
].filter((value) => typeof value === "string").some((value) => value.toLocaleLowerCase().includes(text2));
|
|
83584
|
+
}
|
|
83585
|
+
function spanMatchesAttribute(span, key, expectedValue) {
|
|
83586
|
+
const candidates = getSearchValues(span, key);
|
|
83587
|
+
if (!candidates.length)
|
|
83588
|
+
return false;
|
|
83589
|
+
if (!expectedValue) {
|
|
83590
|
+
return candidates.some((value) => value != null);
|
|
83591
|
+
}
|
|
83592
|
+
return candidates.some((value) => valueToSearchString(value).toLocaleLowerCase().includes(expectedValue));
|
|
83593
|
+
}
|
|
83594
|
+
function getSearchValues(span, key) {
|
|
83595
|
+
const candidates = [];
|
|
83596
|
+
const normalizedKey = key.toLocaleLowerCase();
|
|
83597
|
+
switch (normalizedKey) {
|
|
83598
|
+
case "id":
|
|
83599
|
+
case "spanid":
|
|
83600
|
+
case "span.id":
|
|
83601
|
+
candidates.push(span.spanId);
|
|
83602
|
+
break;
|
|
83603
|
+
case "name":
|
|
83604
|
+
candidates.push(span.name);
|
|
83605
|
+
break;
|
|
83606
|
+
case "resource":
|
|
83607
|
+
candidates.push(span.resource);
|
|
83608
|
+
break;
|
|
83609
|
+
case "library":
|
|
83610
|
+
case "library.name":
|
|
83611
|
+
candidates.push(span.library.name);
|
|
83612
|
+
break;
|
|
83613
|
+
case "library.version":
|
|
83614
|
+
candidates.push(span.library.version);
|
|
83615
|
+
break;
|
|
83616
|
+
case "status":
|
|
83617
|
+
case "status.code":
|
|
83618
|
+
candidates.push(span.status.code);
|
|
83619
|
+
break;
|
|
83620
|
+
}
|
|
83621
|
+
candidates.push(getOwnProperty(span.attributes, key));
|
|
83622
|
+
candidates.push(getPathValue(span.attributes, key));
|
|
83623
|
+
if (!normalizedKey.startsWith("data.")) {
|
|
83624
|
+
candidates.push(getPathValue(span.attributes.data, key));
|
|
83625
|
+
}
|
|
83626
|
+
return candidates.filter((value) => value !== void 0);
|
|
83627
|
+
}
|
|
83628
|
+
function getOwnProperty(source, key) {
|
|
83629
|
+
if (!source || typeof source !== "object")
|
|
83630
|
+
return void 0;
|
|
83631
|
+
if (!Object.hasOwn(source, key))
|
|
83632
|
+
return void 0;
|
|
83633
|
+
return source[key];
|
|
83634
|
+
}
|
|
83635
|
+
function getPathValue(source, path2) {
|
|
83636
|
+
if (!source || typeof source !== "object")
|
|
83637
|
+
return void 0;
|
|
83638
|
+
let current = source;
|
|
83639
|
+
for (const segment2 of path2.split(".")) {
|
|
83640
|
+
if (!segment2)
|
|
83641
|
+
return void 0;
|
|
83642
|
+
current = getOwnProperty(current, segment2);
|
|
83643
|
+
if (current === void 0)
|
|
83644
|
+
return void 0;
|
|
83645
|
+
}
|
|
83646
|
+
return current;
|
|
83647
|
+
}
|
|
83648
|
+
function valueToSearchString(value) {
|
|
83649
|
+
if (value instanceof Date)
|
|
83650
|
+
return value.toISOString();
|
|
83651
|
+
if (typeof value === "string")
|
|
83652
|
+
return value;
|
|
83653
|
+
if (value == null || typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
|
|
83654
|
+
return String(value);
|
|
83655
|
+
}
|
|
83656
|
+
try {
|
|
83657
|
+
return JSON.stringify(value);
|
|
83658
|
+
} catch {
|
|
83659
|
+
return String(value);
|
|
83660
|
+
}
|
|
83661
|
+
}
|
|
83509
83662
|
function computeRootBounds(spans) {
|
|
83510
83663
|
let minStart = Number.POSITIVE_INFINITY;
|
|
83511
83664
|
let maxEnd = Number.NEGATIVE_INFINITY;
|
|
@@ -83847,15 +84000,15 @@ function getEventStyle(resource, isErrored) {
|
|
|
83847
84000
|
className: cn$4(isErrored ? "text-red-900" : style2.className)
|
|
83848
84001
|
};
|
|
83849
84002
|
}
|
|
83850
|
-
const EventRow = ({ span, isSelected, onSelectSpan }) => {
|
|
84003
|
+
const EventRow = ({ span, isSelected, isDimmed, onSelectSpan }) => {
|
|
83851
84004
|
const durationMs = getSpanDurationMs(span);
|
|
83852
84005
|
const isErrored = span.attributes.data.status === "failed";
|
|
83853
84006
|
const { icon: Icon2, className: tagClassName } = getEventStyle(span.resource, isErrored);
|
|
83854
|
-
return jsxRuntimeExports.jsx("li", { className: cn$4("relative overflow-clip group
|
|
84007
|
+
return jsxRuntimeExports.jsx("li", { className: cn$4("relative overflow-clip group transition-opacity", ROW_HEIGHT_CLASS, isDimmed && "opacity-35"), role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, onClick: () => onSelectSpan(span.spanId), children: jsxRuntimeExports.jsx("div", { className: "h-full hover:bg-gray-100 group-aria-selected:bg-gray-100 group-aria-selected:hover:bg-gray-200", children: jsxRuntimeExports.jsxs("div", { className: "flex h-full min-w-0 items-center pl-4 pr-2", children: [jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [jsxRuntimeExports.jsx("span", { className: cn$4("shrink-0", tagClassName), children: jsxRuntimeExports.jsx(Icon2, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx("span", { className: "min-w-0 text-label-14", children: jsxRuntimeExports.jsx(MiddleTruncate, { value: span.name }) })] }), jsxRuntimeExports.jsx("div", { className: "ml-2 shrink-0", children: jsxRuntimeExports.jsx("span", { className: "text-label-14 text-gray-900 tabular-nums", children: formatDuration(durationMs) }) })] }) }) });
|
|
83855
84008
|
};
|
|
83856
|
-
const EventList = ({ spans, activeSpanId, onSelectSpan }) => {
|
|
83857
|
-
return jsxRuntimeExports.jsx("ul", { id: "event-list", role: "tree", className: "block min-h-0 overflow-visible", children: spans.map((span) => {
|
|
83858
|
-
return jsxRuntimeExports.jsx(EventRow, { span, isSelected: span.spanId === activeSpanId, onSelectSpan }, span.spanId);
|
|
84009
|
+
const EventList = ({ spans, activeSpanId, searchResult, onSelectSpan }) => {
|
|
84010
|
+
return jsxRuntimeExports.jsx("ul", { id: "event-list", role: "tree", className: "block min-h-0 overflow-visible divide-y divide-gray-alpha-400 border-b border-gray-alpha-400", children: spans.map((span) => {
|
|
84011
|
+
return jsxRuntimeExports.jsx(EventRow, { span, isSelected: span.spanId === activeSpanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelectSpan }, span.spanId);
|
|
83859
84012
|
}) });
|
|
83860
84013
|
};
|
|
83861
84014
|
const GUTTER_PX = 1;
|
|
@@ -84055,7 +84208,7 @@ function SegmentBar({ segments }) {
|
|
|
84055
84208
|
}, children: showLabel ? jsxRuntimeExports.jsx(DurationLabel, { label }) : null }, `${seg.status}-${i}`);
|
|
84056
84209
|
}) });
|
|
84057
84210
|
}
|
|
84058
|
-
const TimelineBar = reactExports.memo(function TimelineBar2({ span, viewStart, viewDuration, containerWidth, isSelected, onSelect }) {
|
|
84211
|
+
const TimelineBar = reactExports.memo(function TimelineBar2({ span, viewStart, viewDuration, containerWidth, isSelected, isDimmed, onSelect }) {
|
|
84059
84212
|
var _a3;
|
|
84060
84213
|
const startMs = getHighResInMs(span.startTime);
|
|
84061
84214
|
const endMs = getHighResInMs(span.endTime);
|
|
@@ -84073,7 +84226,7 @@ const TimelineBar = reactExports.memo(function TimelineBar2({ span, viewStart, v
|
|
|
84073
84226
|
const handleClick = reactExports.useCallback(() => {
|
|
84074
84227
|
onSelect(span.spanId);
|
|
84075
84228
|
}, [onSelect, span.spanId]);
|
|
84076
|
-
return jsxRuntimeExports.jsx("div", { role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, className: "group/timeline-row h-10 relative flex items-center hover:bg-gray-100 aria-selected:bg-gray-100 aria-selected:hover:bg-gray-200", onClick: handleClick, children: jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-1/2 h-6 -translate-y-1/2", style: getBarPositionStyle(geometry), children: geometry.mode.kind === "arrow" ? jsxRuntimeExports.jsx(BoundaryArrow, { direction: geometry.mode.direction }) : geometry.mode.kind === "tiny" ? jsxRuntimeExports.jsx("div", { className: "h-6 rounded-[0.25rem] border", style: { background: fallbackBg, borderColor: fallbackBorder } }) : segments.length > 0 ? jsxRuntimeExports.jsx(SegmentBar, { segments }) : jsxRuntimeExports.jsx(PlainBar, { bg: fallbackBg, border: fallbackBorder, label: showTotalLabel ? totalLabel : null }) }) }) });
|
|
84229
|
+
return jsxRuntimeExports.jsx("div", { role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, className: cn$4("group/timeline-row h-10 relative flex items-center hover:bg-gray-100 aria-selected:bg-gray-100 aria-selected:hover:bg-gray-200 transition-opacity", isDimmed && "opacity-35"), onClick: handleClick, children: jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-1/2 h-6 -translate-y-1/2 rounded-[0.25rem]", style: getBarPositionStyle(geometry), children: geometry.mode.kind === "arrow" ? jsxRuntimeExports.jsx(BoundaryArrow, { direction: geometry.mode.direction }) : geometry.mode.kind === "tiny" ? jsxRuntimeExports.jsx("div", { className: "h-6 rounded-[0.25rem] border", style: { background: fallbackBg, borderColor: fallbackBorder } }) : segments.length > 0 ? jsxRuntimeExports.jsx(SegmentBar, { segments }) : jsxRuntimeExports.jsx(PlainBar, { bg: fallbackBg, border: fallbackBorder, label: showTotalLabel ? totalLabel : null }) }) }) });
|
|
84077
84230
|
});
|
|
84078
84231
|
const DELTA_ROW_HEIGHT_PX = 40;
|
|
84079
84232
|
const DELTA_CAP_HEIGHT_PX = 8;
|
|
@@ -84090,7 +84243,7 @@ const DeltaIndicator = reactExports.memo(function DeltaIndicator2({ leftFrac, ri
|
|
|
84090
84243
|
function TimelineHeader({ markers: markers2, hoverInfo: hoverInfo2 }) {
|
|
84091
84244
|
return jsxRuntimeExports.jsx("div", { className: "relative bg-background-100 border-b border-gray-alpha-400 h-10 min-h-10 flex items-end px-4 pb-1", children: jsxRuntimeExports.jsxs("div", { className: "relative h-full flex-1", children: [markers2.map((m2) => jsxRuntimeExports.jsx("span", { className: "absolute bottom-1 font-mono text-xs font-normal leading-4 text-gray-900 whitespace-nowrap", style: { left: `${m2.position * 100}%` }, children: m2.label }, `${m2.position}-${m2.label}`)), hoverInfo2 && jsxRuntimeExports.jsx("span", { className: "absolute top-1 pointer-events-none z-10 font-mono text-[11px] leading-4 text-gray-1000 whitespace-nowrap bg-background-100 border border-gray-alpha-400 rounded px-1 -translate-x-1/2", style: { left: `${hoverInfo2.fraction * 100}%` }, children: hoverInfo2.label })] }) });
|
|
84092
84245
|
}
|
|
84093
|
-
function Timeline({ spans, viewStart, viewEnd, markers: markers2, selectedId, onSelect, hoverFraction, altHeld = false }) {
|
|
84246
|
+
function Timeline({ spans, viewStart, viewEnd, markers: markers2, selectedId, searchResult, onSelect, hoverFraction, altHeld = false }) {
|
|
84094
84247
|
const containerRef = reactExports.useRef(null);
|
|
84095
84248
|
const [containerWidth, setContainerWidth] = reactExports.useState(0);
|
|
84096
84249
|
const viewDuration = viewEnd - viewStart;
|
|
@@ -84109,7 +84262,7 @@ function Timeline({ spans, viewStart, viewEnd, markers: markers2, selectedId, on
|
|
|
84109
84262
|
return jsxRuntimeExports.jsxs("div", { ref: containerRef, className: "relative h-full overflow-hidden", children: [jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: markers2.map((marker2) => (
|
|
84110
84263
|
// Skip the "0s" origin marker since the left edge already implies it.
|
|
84111
84264
|
Math.abs(marker2.value) > 1e-6 ? jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-300", style: { left: `${marker2.position * 100}%` } }, `${marker2.position}-${marker2.label}`) : null
|
|
84112
|
-
)) }), hoverFraction != null && jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0 pointer-events-none z-10", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-500", style: { left: `${hoverFraction * 100}%` } }) }), spans.map((span) => jsxRuntimeExports.jsx(TimelineBar, { span, viewStart, viewDuration, containerWidth: timelineWidth, isSelected: selectedId === span.spanId, onSelect }, span.spanId)), altHeld && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gaps.map((gap) => jsxRuntimeExports.jsx(DeltaIndicator, { leftFrac: gap.leftFrac, rightFrac: gap.rightFrac, label: formatDuration(gap.gapMs, true), rowIndex: gap.rowIndex }, gap.rowIndex)) })] });
|
|
84265
|
+
)) }), hoverFraction != null && jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0 pointer-events-none z-10", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-500", style: { left: `${hoverFraction * 100}%` } }) }), spans.map((span) => jsxRuntimeExports.jsx(TimelineBar, { span, viewStart, viewDuration, containerWidth: timelineWidth, isSelected: selectedId === span.spanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelect }, span.spanId)), altHeld && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gaps.map((gap) => jsxRuntimeExports.jsx(DeltaIndicator, { leftFrac: gap.leftFrac, rightFrac: gap.rightFrac, label: formatDuration(gap.gapMs, true), rowIndex: gap.rowIndex }, gap.rowIndex)) })] });
|
|
84113
84266
|
}
|
|
84114
84267
|
const ActiveSpanContext = reactExports.createContext(null);
|
|
84115
84268
|
ActiveSpanContext.displayName = "ActiveSpanContext";
|
|
@@ -84159,7 +84312,7 @@ function DetailPanel({ span, rootStart, onClose }) {
|
|
|
84159
84312
|
const startMs = getHighResInMs(span.startTime);
|
|
84160
84313
|
const durationMs = getSpanDurationMs(span);
|
|
84161
84314
|
const offsetMs = startMs - rootStart;
|
|
84162
|
-
return jsxRuntimeExports.jsxs("aside", { className: "grid h-full max-h-full grid-rows-[2.5rem_1fr] bg-background-200", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between px-3 border-b border-gray-alpha-400", children: [jsxRuntimeExports.jsx("span", { className: "text-sm font-medium text-gray-1000 truncate", children: span.name }), jsxRuntimeExports.jsx(
|
|
84315
|
+
return jsxRuntimeExports.jsxs("aside", { className: "grid h-full max-h-full grid-rows-[2.5rem_1fr] bg-background-200", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between px-3 border-b border-gray-alpha-400", children: [jsxRuntimeExports.jsx("span", { className: "text-sm font-medium text-gray-1000 truncate", children: span.name }), jsxRuntimeExports.jsx(IconButton, { "aria-label": "Close span details", onClick: onClose, children: jsxRuntimeExports.jsx(X$3, { className: "w-4 h-4" }) })] }), jsxRuntimeExports.jsx("div", { className: "overflow-y-auto p-3 space-y-3", children: jsxRuntimeExports.jsxs("dl", { className: "grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-sm", children: [jsxRuntimeExports.jsx("dt", { className: "text-gray-900", children: "Resource" }), jsxRuntimeExports.jsx("dd", { className: "text-gray-1000 font-mono", children: span.resource }), jsxRuntimeExports.jsx("dt", { className: "text-gray-900", children: "Duration" }), jsxRuntimeExports.jsx("dd", { className: "text-gray-1000 tabular-nums font-mono", children: formatDuration(durationMs) }), jsxRuntimeExports.jsx("dt", { className: "text-gray-900", children: "Offset" }), jsxRuntimeExports.jsxs("dd", { className: "text-gray-1000 tabular-nums font-mono", children: ["+", formatDuration(offsetMs)] }), jsxRuntimeExports.jsx("dt", { className: "text-gray-900", children: "Status" }), jsxRuntimeExports.jsx("dd", { className: "text-gray-1000 font-mono", children: span.status.code === 2 ? "Error" : "OK" })] }) })] });
|
|
84163
84316
|
}
|
|
84164
84317
|
const MIN_VIEWPORT_MS = 1e-3;
|
|
84165
84318
|
function useAnimatedViewport(initial) {
|
|
@@ -84229,7 +84382,7 @@ function useSelectedSpanInfo() {
|
|
|
84229
84382
|
spanId: activeSpan.spanId,
|
|
84230
84383
|
rawEvents
|
|
84231
84384
|
};
|
|
84232
|
-
}, [activeSpan, sidebar
|
|
84385
|
+
}, [activeSpan, sidebar]);
|
|
84233
84386
|
}
|
|
84234
84387
|
function NewTraceViewer$1({ trace: trace2 }) {
|
|
84235
84388
|
return jsxRuntimeExports.jsx(ActiveSpanProvider, { spans: trace2.spans, children: jsxRuntimeExports.jsx(NewTraceViewerContent, { trace: trace2 }) });
|
|
@@ -84239,12 +84392,8 @@ function NewTraceViewerContent({ trace: trace2 }) {
|
|
|
84239
84392
|
const sidebar = useSidebarDataOptional();
|
|
84240
84393
|
const selectedSpan = useSelectedSpanInfo();
|
|
84241
84394
|
const [searchQuery, setSearchQuery] = reactExports.useState("");
|
|
84242
|
-
const
|
|
84243
|
-
|
|
84244
|
-
if (!q2)
|
|
84245
|
-
return trace2.spans;
|
|
84246
|
-
return trace2.spans.filter((s2) => s2.name.toLowerCase().includes(q2) || s2.resource.toLowerCase().includes(q2));
|
|
84247
|
-
}, [trace2.spans, searchQuery]);
|
|
84395
|
+
const deferredSearchQuery = reactExports.useDeferredValue(searchQuery);
|
|
84396
|
+
const searchResult = reactExports.useMemo(() => searchSpans(trace2.spans, deferredSearchQuery), [trace2.spans, deferredSearchQuery]);
|
|
84248
84397
|
const root2 = reactExports.useMemo(() => computeRootBounds(trace2.spans), [trace2.spans]);
|
|
84249
84398
|
const { viewport, setViewport, animateTo } = useAnimatedViewport({
|
|
84250
84399
|
start: root2.startTime,
|
|
@@ -84266,7 +84415,7 @@ function NewTraceViewerContent({ trace: trace2 }) {
|
|
|
84266
84415
|
return prev;
|
|
84267
84416
|
});
|
|
84268
84417
|
prevRootRef.current = { start: newStart, end: newEnd };
|
|
84269
|
-
}, [root2.startTime, root2.duration]);
|
|
84418
|
+
}, [root2.startTime, root2.duration, setViewport]);
|
|
84270
84419
|
const viewDuration = viewport.end - viewport.start;
|
|
84271
84420
|
const timeMarkers = reactExports.useMemo(() => computeTimeMarkers(viewDuration, viewport.start - root2.startTime), [viewDuration, viewport.start, root2.startTime]);
|
|
84272
84421
|
const resetZoom = reactExports.useCallback(() => {
|
|
@@ -84427,7 +84576,8 @@ function NewTraceViewerContent({ trace: trace2 }) {
|
|
|
84427
84576
|
if (e.deltaMode === 1)
|
|
84428
84577
|
dy *= 16;
|
|
84429
84578
|
const cursorFraction = Math.max(0, Math.min(1, (e.clientX - rect.left - TIMELINE_PADDING_PX) / contentWidth));
|
|
84430
|
-
const
|
|
84579
|
+
const isMouseWheel = e.deltaMode === 1 || Math.abs(e.deltaY) >= 50;
|
|
84580
|
+
const scaleFactor = Math.pow(2, dy / (isMouseWheel ? 200 : 60));
|
|
84431
84581
|
setViewport((prev) => {
|
|
84432
84582
|
const prevDuration = prev.end - prev.start;
|
|
84433
84583
|
const cursorTime = prev.start + cursorFraction * prevDuration;
|
|
@@ -84467,7 +84617,7 @@ function NewTraceViewerContent({ trace: trace2 }) {
|
|
|
84467
84617
|
};
|
|
84468
84618
|
el.addEventListener("wheel", onWheel, { passive: false });
|
|
84469
84619
|
return () => el.removeEventListener("wheel", onWheel);
|
|
84470
|
-
}, [root2.startTime, root2.duration]);
|
|
84620
|
+
}, [root2.startTime, root2.duration, setViewport]);
|
|
84471
84621
|
const selectedSpanName = reactExports.useMemo(() => {
|
|
84472
84622
|
var _a3, _b2;
|
|
84473
84623
|
if (!(selectedSpan == null ? void 0 : selectedSpan.data))
|
|
@@ -84484,14 +84634,14 @@ function NewTraceViewerContent({ trace: trace2 }) {
|
|
|
84484
84634
|
var _a3, _b2;
|
|
84485
84635
|
if (!activeSpanId)
|
|
84486
84636
|
return { prevSpanId: null, nextSpanId: null };
|
|
84487
|
-
const i =
|
|
84637
|
+
const i = trace2.spans.findIndex((s2) => s2.spanId === activeSpanId);
|
|
84488
84638
|
if (i === -1)
|
|
84489
84639
|
return { prevSpanId: null, nextSpanId: null };
|
|
84490
84640
|
return {
|
|
84491
|
-
prevSpanId: ((_a3 =
|
|
84492
|
-
nextSpanId: ((_b2 =
|
|
84641
|
+
prevSpanId: ((_a3 = trace2.spans[i - 1]) == null ? void 0 : _a3.spanId) ?? null,
|
|
84642
|
+
nextSpanId: ((_b2 = trace2.spans[i + 1]) == null ? void 0 : _b2.spanId) ?? null
|
|
84493
84643
|
};
|
|
84494
|
-
}, [activeSpanId,
|
|
84644
|
+
}, [activeSpanId, trace2.spans]);
|
|
84495
84645
|
const handleSelectPrevSpan = reactExports.useCallback(() => {
|
|
84496
84646
|
if (prevSpanId)
|
|
84497
84647
|
handleSelectSpan(prevSpanId);
|
|
@@ -84506,7 +84656,13 @@ function NewTraceViewerContent({ trace: trace2 }) {
|
|
|
84506
84656
|
prevSpanIdRef.current = prevSpanId;
|
|
84507
84657
|
nextSpanIdRef.current = nextSpanId;
|
|
84508
84658
|
handleSelectSpanRef.current = handleSelectSpan;
|
|
84509
|
-
return jsxRuntimeExports.jsxs("div", { "data-pane": "pane-root", "data-has-detail": activeSpan ? "" : void 0, className: "grid w-full h-full max-h-full grid-cols-[minmax(100px,1fr)] data-[has-detail]:grid-cols-[minmax(100px,1fr)_clamp(280px,420px,100%)]", children: [jsxRuntimeExports.jsxs("div", { id: "trace-parent", className: "grid grid-rows-[1fr] h-full min-h-0 overflow-hidden relative bg-background-100", children: [jsxRuntimeExports.jsxs(SplitPane, { startHeader: jsxRuntimeExports.jsxs("div", { className: "bg-background-100 border-b border-gray-alpha-400 h-10 min-h-10 flex items-center pl-4 pr-2 gap-1.5", children: [jsxRuntimeExports.jsx(Search, { className: "w-3.5 h-3.5 shrink-0 text-gray-800" }), jsxRuntimeExports.jsx("input", { id: "trace-viewer-search", name: "trace-viewer-search", type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value),
|
|
84659
|
+
return jsxRuntimeExports.jsxs("div", { "data-pane": "pane-root", "data-has-detail": activeSpan ? "" : void 0, className: "grid w-full h-full max-h-full grid-cols-[minmax(100px,1fr)] data-[has-detail]:grid-cols-[minmax(100px,1fr)_clamp(280px,420px,100%)]", children: [jsxRuntimeExports.jsxs("div", { id: "trace-parent", className: "grid grid-rows-[1fr] h-full min-h-0 overflow-hidden relative bg-background-100", children: [jsxRuntimeExports.jsxs(SplitPane, { startHeader: jsxRuntimeExports.jsxs("div", { className: "bg-background-100 border-b border-gray-alpha-400 h-10 min-h-10 flex items-center pl-4 pr-2 gap-1.5", children: [jsxRuntimeExports.jsx(Search, { className: "w-3.5 h-3.5 shrink-0 text-gray-800" }), jsxRuntimeExports.jsx("input", { id: "trace-viewer-search", name: "trace-viewer-search", type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: (e) => {
|
|
84660
|
+
if (e.key === "Escape" && searchQuery) {
|
|
84661
|
+
e.preventDefault();
|
|
84662
|
+
e.stopPropagation();
|
|
84663
|
+
setSearchQuery("");
|
|
84664
|
+
}
|
|
84665
|
+
}, placeholder: "Search spans...", "aria-label": "Search spans", className: "flex-1 min-w-0 bg-transparent text-sm text-gray-1000 placeholder:text-gray-800 outline-none" }), searchQuery && jsxRuntimeExports.jsx("button", { type: "button", "aria-label": "Clear search", onClick: () => setSearchQuery(""), className: "-mr-2 hidden h-full max-w-full shrink-0 cursor-pointer items-center rounded-r-md border-0 bg-transparent px-2.5 font-inherit text-base text-gray-900 no-underline transition-colors duration-150 ease-in hover:text-gray-1000 focus-visible:-outline-offset-1 focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--ds-focus-color)] min-[961px]:flex", children: jsxRuntimeExports.jsx("kbd", { className: "inline-flex h-5 min-h-5 min-w-5 items-center justify-center rounded border border-gray-alpha-400 bg-background-100 px-1 font-sans text-[13px] font-medium leading-[1.7em] text-gray-900", children: "Esc" }) })] }), endHeader: jsxRuntimeExports.jsx(TimelineHeader, { markers: timeMarkers, hoverInfo: hoverInfo2 }), children: [jsxRuntimeExports.jsx("div", { className: "block overflow-visible", children: jsxRuntimeExports.jsx(EventList, { spans: trace2.spans, activeSpanId, searchResult, onSelectSpan: handleSelectSpan }) }), jsxRuntimeExports.jsx("div", { ref: timelineRef, className: "block min-h-0 overflow-visible relative", onDoubleClick: resetZoom, onMouseMove: handleTimelineMouseMove, onMouseLeave: handleTimelineMouseLeave, children: jsxRuntimeExports.jsx(Timeline, { spans: trace2.spans, viewStart: viewport.start, viewEnd: viewport.end, markers: timeMarkers, selectedId: activeSpanId, searchResult, onSelect: handleSelectSpan, hoverFraction, altHeld }) })] }), jsxRuntimeExports.jsxs("div", { className: "absolute right-3 bottom-3 z-[5] flex items-center border border-gray-alpha-400 rounded-md bg-background-100 shadow-sm overflow-hidden divide-x divide-gray-alpha-400", children: [jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: zoomOut, "aria-label": "Zoom out", children: jsxRuntimeExports.jsx(ZoomOut, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: resetZoom, "aria-label": "Reset zoom", children: jsxRuntimeExports.jsx(RotateCcw, { className: "w-3.5 h-3.5" }) }), jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: zoomIn, "aria-label": "Zoom in", children: jsxRuntimeExports.jsx(ZoomIn, { className: "w-4 h-4" }) })] })] }), activeSpan && sidebar ? jsxRuntimeExports.jsxs("aside", { className: "flex flex-col h-full max-h-full bg-background-100 border-l border-gray-alpha-400 overflow-auto", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2 shrink-0 px-4 pt-3 pb-3", children: [jsxRuntimeExports.jsx("span", { className: "text-label-14 font-medium text-gray-1000 truncate block", children: selectedSpanName }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0.5 shrink-0", children: [jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate to previous span", "aria-keyshortcuts": "K", onClick: handleSelectPrevSpan, disabled: !prevSpanId, children: jsxRuntimeExports.jsx(ChevronUp, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate to next span", "aria-keyshortcuts": "J", onClick: handleSelectNextSpan, disabled: !nextSpanId, children: jsxRuntimeExports.jsx(ChevronDown, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "w-px h-4 bg-gray-alpha-400 mx-1" }), jsxRuntimeExports.jsx(IconButton, { "aria-label": "Close span details", "aria-keyshortcuts": "Escape", onClick: clearActiveSpan, children: jsxRuntimeExports.jsx(X$3, { className: "w-4 h-4" }) })] })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto", children: jsxRuntimeExports.jsx(ErrorBoundary$1, { children: jsxRuntimeExports.jsx(EntityDetailPanel, { run: sidebar.run, onStreamClick: sidebar.onStreamClick, onRunClick: sidebar.onRunClick, spanDetailData: sidebar.spanDetailData, spanDetailError: sidebar.spanDetailError, spanDetailLoading: sidebar.spanDetailLoading, onSpanSelect: sidebar.onSpanSelect, onWakeUpSleep: sidebar.onWakeUpSleep, onLoadEventData: sidebar.onLoadEventData, onResolveHook: sidebar.onResolveHook, encryptionKey: sidebar.encryptionKey, onDecrypt: sidebar.onDecrypt, isDecrypting: sidebar.isDecrypting, selectedSpan }) }) })] }) : activeSpan ? jsxRuntimeExports.jsx(DetailPanel, { span: activeSpan, rootStart: root2.startTime, onClose: clearActiveSpan }) : null] });
|
|
84510
84666
|
}
|
|
84511
84667
|
const NewTraceViewer = ({ run, events: events2, sidebarData }) => {
|
|
84512
84668
|
const traceWithMeta = reactExports.useMemo(() => {
|
|
@@ -88430,7 +88586,7 @@ const encryption = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
|
|
|
88430
88586
|
encrypt: encrypt$1,
|
|
88431
88587
|
importKey
|
|
88432
88588
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
88433
|
-
const version$1 = "5.0.0-beta.
|
|
88589
|
+
const version$1 = "5.0.0-beta.9";
|
|
88434
88590
|
const WorldCacheKey = Symbol.for("@workflow/world//cache");
|
|
88435
88591
|
const WorldCachePromiseKey = Symbol.for("@workflow/world//cachePromise");
|
|
88436
88592
|
const GetWorldFnKey$1 = Symbol.for("@workflow/world//getWorldFn");
|
|
@@ -88566,12 +88722,15 @@ async function healthCheck(world, endpoint, options) {
|
|
|
88566
88722
|
}
|
|
88567
88723
|
const LOCK_POLL_INTERVAL_MS = 10;
|
|
88568
88724
|
function createFlushableState() {
|
|
88569
|
-
|
|
88725
|
+
const state = {
|
|
88570
88726
|
...withResolvers$1(),
|
|
88571
88727
|
pendingOps: 0,
|
|
88572
88728
|
doneResolved: false,
|
|
88573
88729
|
streamEnded: false
|
|
88574
88730
|
};
|
|
88731
|
+
state.promise.catch(() => {
|
|
88732
|
+
});
|
|
88733
|
+
return state;
|
|
88575
88734
|
}
|
|
88576
88735
|
function isWritableUnlockedNotClosed(writable) {
|
|
88577
88736
|
if (writable.locked)
|
|
@@ -92076,6 +92235,16 @@ async function readBuffer(filePath) {
|
|
|
92076
92235
|
const content2 = await promises.readFile(filePath);
|
|
92077
92236
|
return content2;
|
|
92078
92237
|
}
|
|
92238
|
+
async function readFirstByte(filePath) {
|
|
92239
|
+
const file2 = await promises.open(filePath, "r");
|
|
92240
|
+
try {
|
|
92241
|
+
const byte = Buffer.allocUnsafe(1);
|
|
92242
|
+
const { bytesRead } = await file2.read(byte, 0, 1, 0);
|
|
92243
|
+
return bytesRead === 0 ? void 0 : byte[0];
|
|
92244
|
+
} finally {
|
|
92245
|
+
await file2.close();
|
|
92246
|
+
}
|
|
92247
|
+
}
|
|
92079
92248
|
async function deleteJSON(filePath) {
|
|
92080
92249
|
try {
|
|
92081
92250
|
await promises.unlink(filePath);
|
|
@@ -117861,40 +118030,50 @@ const monotonicUlid = monotonicFactory(() => Math.random());
|
|
|
117861
118030
|
const RunStreamsSchema = object$1({
|
|
117862
118031
|
streams: array$1(string$3())
|
|
117863
118032
|
});
|
|
118033
|
+
const EOF_MARKER = 1;
|
|
118034
|
+
function isEofByte(byte) {
|
|
118035
|
+
return byte === EOF_MARKER;
|
|
118036
|
+
}
|
|
117864
118037
|
function serializeChunk(chunk) {
|
|
117865
|
-
const eofByte = Buffer.from([chunk.eof ?
|
|
118038
|
+
const eofByte = Buffer.from([chunk.eof ? EOF_MARKER : 0]);
|
|
117866
118039
|
return Buffer.concat([eofByte, chunk.chunk]);
|
|
117867
118040
|
}
|
|
117868
118041
|
function isEofChunk(serialized) {
|
|
117869
|
-
return serialized[0]
|
|
118042
|
+
return isEofByte(serialized[0]);
|
|
117870
118043
|
}
|
|
117871
118044
|
function deserializeChunk(serialized) {
|
|
117872
|
-
const eof = serialized
|
|
118045
|
+
const eof = isEofChunk(serialized);
|
|
117873
118046
|
const chunk = Buffer.from(serialized.subarray(1));
|
|
117874
118047
|
return { eof, chunk };
|
|
117875
118048
|
}
|
|
118049
|
+
async function listChunkEntries(chunksDir) {
|
|
118050
|
+
try {
|
|
118051
|
+
return await fs$1.readdir(chunksDir);
|
|
118052
|
+
} catch (error2) {
|
|
118053
|
+
if (error2.code === "ENOENT")
|
|
118054
|
+
return [];
|
|
118055
|
+
throw error2;
|
|
118056
|
+
}
|
|
118057
|
+
}
|
|
118058
|
+
function addChunkFilesByExtension(extMap, entries, sourceExtension, fileExtension = sourceExtension, include = () => true) {
|
|
118059
|
+
for (const entry2 of entries) {
|
|
118060
|
+
if (!entry2.endsWith(sourceExtension))
|
|
118061
|
+
continue;
|
|
118062
|
+
const file2 = entry2.slice(0, -sourceExtension.length);
|
|
118063
|
+
if (include(file2))
|
|
118064
|
+
extMap.set(file2, fileExtension);
|
|
118065
|
+
}
|
|
118066
|
+
}
|
|
117876
118067
|
async function listChunkFilesForStream(chunksDir, name2, tag) {
|
|
117877
118068
|
assertSafeEntityId("streamName", name2);
|
|
117878
|
-
const
|
|
117879
|
-
listFilesByExtension(chunksDir, ".bin"),
|
|
117880
|
-
listFilesByExtension(chunksDir, ".json")
|
|
117881
|
-
];
|
|
117882
|
-
if (tag) {
|
|
117883
|
-
listPromises.push(listFilesByExtension(chunksDir, `.${tag}.bin`));
|
|
117884
|
-
}
|
|
117885
|
-
const [binFiles, jsonFiles, ...taggedResults] = await Promise.all(listPromises);
|
|
117886
|
-
const taggedBinFiles = taggedResults[0] ?? [];
|
|
118069
|
+
const entries = await listChunkEntries(chunksDir);
|
|
117887
118070
|
const extMap = /* @__PURE__ */ new Map();
|
|
117888
|
-
|
|
117889
|
-
|
|
117890
|
-
|
|
117891
|
-
|
|
117892
|
-
|
|
117893
|
-
continue;
|
|
117894
|
-
extMap.set(f2, ".bin");
|
|
118071
|
+
addChunkFilesByExtension(extMap, entries, ".json");
|
|
118072
|
+
addChunkFilesByExtension(extMap, entries, ".bin", ".bin", tag ? (file2) => !file2.endsWith(`.${tag}`) : void 0);
|
|
118073
|
+
if (tag) {
|
|
118074
|
+
const taggedExtension = `.${tag}.bin`;
|
|
118075
|
+
addChunkFilesByExtension(extMap, entries, taggedExtension);
|
|
117895
118076
|
}
|
|
117896
|
-
for (const f2 of taggedBinFiles)
|
|
117897
|
-
extMap.set(f2, `.${tag}.bin`);
|
|
117898
118077
|
const files = [...extMap.keys()].filter((file2) => file2.startsWith(`${name2}-`)).sort();
|
|
117899
118078
|
return { files, extMap };
|
|
117900
118079
|
}
|
|
@@ -118009,7 +118188,7 @@ function createStreamer$1(basedir, tag) {
|
|
|
118009
118188
|
const ext2 = fileExtMap.get(file2) ?? ".bin";
|
|
118010
118189
|
const filePath = path$3.join(chunksDir, `${file2}${ext2}`);
|
|
118011
118190
|
if (dataIndex < startIndex) {
|
|
118012
|
-
if (
|
|
118191
|
+
if (isEofByte(await readFirstByte(filePath))) {
|
|
118013
118192
|
streamDone = true;
|
|
118014
118193
|
break;
|
|
118015
118194
|
}
|
|
@@ -118017,7 +118196,7 @@ function createStreamer$1(basedir, tag) {
|
|
|
118017
118196
|
continue;
|
|
118018
118197
|
}
|
|
118019
118198
|
if (resultChunks.length >= limit) {
|
|
118020
|
-
if (
|
|
118199
|
+
if (isEofByte(await readFirstByte(filePath))) {
|
|
118021
118200
|
streamDone = true;
|
|
118022
118201
|
} else {
|
|
118023
118202
|
dataIndex++;
|
|
@@ -118052,7 +118231,7 @@ function createStreamer$1(basedir, tag) {
|
|
|
118052
118231
|
let dataCount = 0;
|
|
118053
118232
|
for (const file2 of chunkFiles) {
|
|
118054
118233
|
const ext2 = fileExtMap.get(file2) ?? ".bin";
|
|
118055
|
-
if (
|
|
118234
|
+
if (isEofByte(await readFirstByte(path$3.join(chunksDir, `${file2}${ext2}`)))) {
|
|
118056
118235
|
streamDone = true;
|
|
118057
118236
|
break;
|
|
118058
118237
|
}
|
|
@@ -118113,8 +118292,7 @@ function createStreamer$1(basedir, tag) {
|
|
|
118113
118292
|
if (typeof startIndex === "number" && startIndex < 0 && chunkFiles.length > 0) {
|
|
118114
118293
|
const lastFile = chunkFiles[chunkFiles.length - 1];
|
|
118115
118294
|
const lastExt = fileExtMap.get(lastFile) ?? ".bin";
|
|
118116
|
-
|
|
118117
|
-
if ((lastChunk == null ? void 0 : lastChunk.eof) === true) {
|
|
118295
|
+
if (isEofByte(await readFirstByte(path$3.join(chunksDir, `${lastFile}${lastExt}`)))) {
|
|
118118
118296
|
dataChunkCount--;
|
|
118119
118297
|
}
|
|
118120
118298
|
}
|
|
@@ -118261,7 +118439,7 @@ function createLocalWorld(args) {
|
|
|
118261
118439
|
const basedir = mergedConfig.dataDir;
|
|
118262
118440
|
const hooksDir = path$3.join(basedir, "hooks");
|
|
118263
118441
|
const taggedHookFiles = await listTaggedFiles(hooksDir, tag);
|
|
118264
|
-
const { HookSchema: HookSchema2 } = await import("./index-
|
|
118442
|
+
const { HookSchema: HookSchema2 } = await import("./index-DltGJ3CV.js");
|
|
118265
118443
|
await Promise.all(taggedHookFiles.map(async (hookFile) => {
|
|
118266
118444
|
const hook = await readJSON(path$3.join(hooksDir, hookFile), HookSchema2);
|
|
118267
118445
|
if (hook == null ? void 0 : hook.token) {
|
|
@@ -118413,8 +118591,8 @@ function requireGetVercelOidcToken() {
|
|
|
118413
118591
|
}
|
|
118414
118592
|
try {
|
|
118415
118593
|
const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
|
|
118416
|
-
await import("./token-util-
|
|
118417
|
-
await import("./token
|
|
118594
|
+
await import("./token-util-DwTdh-aG.js").then((n) => n.t),
|
|
118595
|
+
await import("./token-BNjLoJXz.js").then((n) => n.t)
|
|
118418
118596
|
]);
|
|
118419
118597
|
if (!token || isExpired(getTokenPayload(token), options == null ? void 0 : options.expirationBufferMs)) {
|
|
118420
118598
|
await refreshToken(options);
|
|
@@ -123585,7 +123763,7 @@ var QueueClient = class {
|
|
|
123585
123763
|
setApi(this, new ApiClient({ ...options, region }));
|
|
123586
123764
|
}
|
|
123587
123765
|
};
|
|
123588
|
-
const version = "5.0.0-beta.
|
|
123766
|
+
const version = "5.0.0-beta.8";
|
|
123589
123767
|
const HTTP_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env.DEBUG === "string" && (process.env.DEBUG.includes("workflow:") || process.env.DEBUG === "*");
|
|
123590
123768
|
function httpLog(method, endpoint, status, ms2) {
|
|
123591
123769
|
if (HTTP_DEBUG_ENABLED) {
|
|
@@ -124743,6 +124921,16 @@ const MAX_CHUNKS_PER_REQUEST = 1e3;
|
|
|
124743
124921
|
function getStreamUrl(name2, runId, httpConfig) {
|
|
124744
124922
|
return new URL(`${httpConfig.baseUrl}/v2/runs/${encodeURIComponent(runId)}/stream/${encodeURIComponent(name2)}`);
|
|
124745
124923
|
}
|
|
124924
|
+
function createStreamRequestError(operation, url2, response2, text2) {
|
|
124925
|
+
const context = [`PUT ${url2.origin}${url2.pathname}`];
|
|
124926
|
+
for (const header of ["x-vercel-id", "x-vercel-error"]) {
|
|
124927
|
+
const value = response2.headers.get(header);
|
|
124928
|
+
if (value) {
|
|
124929
|
+
context.push(`${header}=${value}`);
|
|
124930
|
+
}
|
|
124931
|
+
}
|
|
124932
|
+
return new Error(`Stream ${operation} failed: HTTP ${response2.status} (${context.join("; ")}): ${text2}`);
|
|
124933
|
+
}
|
|
124746
124934
|
function encodeMultiChunks(chunks) {
|
|
124747
124935
|
const encoder2 = new TextEncoder();
|
|
124748
124936
|
const binaryChunks = [];
|
|
@@ -124782,14 +124970,15 @@ function createStreamer(config2) {
|
|
|
124782
124970
|
async write(runId, name2, chunk) {
|
|
124783
124971
|
const resolvedRunId = await runId;
|
|
124784
124972
|
const httpConfig = await getHttpConfig(config2);
|
|
124785
|
-
const
|
|
124973
|
+
const url2 = getStreamUrl(name2, resolvedRunId, httpConfig);
|
|
124974
|
+
const response2 = await fetch(url2, {
|
|
124786
124975
|
method: "PUT",
|
|
124787
124976
|
body: chunk,
|
|
124788
124977
|
headers: httpConfig.headers
|
|
124789
124978
|
});
|
|
124790
124979
|
const text2 = await response2.text();
|
|
124791
124980
|
if (!response2.ok) {
|
|
124792
|
-
throw
|
|
124981
|
+
throw createStreamRequestError("write", url2, response2, text2);
|
|
124793
124982
|
}
|
|
124794
124983
|
},
|
|
124795
124984
|
async writeMulti(runId, name2, chunks) {
|
|
@@ -124801,14 +124990,15 @@ function createStreamer(config2) {
|
|
|
124801
124990
|
for (let i = 0; i < chunks.length; i += MAX_CHUNKS_PER_REQUEST) {
|
|
124802
124991
|
const batch = chunks.slice(i, i + MAX_CHUNKS_PER_REQUEST);
|
|
124803
124992
|
const body2 = encodeMultiChunks(batch);
|
|
124804
|
-
const
|
|
124993
|
+
const url2 = getStreamUrl(name2, resolvedRunId, httpConfig);
|
|
124994
|
+
const response2 = await fetch(url2, {
|
|
124805
124995
|
method: "PUT",
|
|
124806
124996
|
body: body2,
|
|
124807
124997
|
headers: httpConfig.headers
|
|
124808
124998
|
});
|
|
124809
124999
|
const text2 = await response2.text();
|
|
124810
125000
|
if (!response2.ok) {
|
|
124811
|
-
throw
|
|
125001
|
+
throw createStreamRequestError("write", url2, response2, text2);
|
|
124812
125002
|
}
|
|
124813
125003
|
}
|
|
124814
125004
|
},
|
|
@@ -124816,13 +125006,14 @@ function createStreamer(config2) {
|
|
|
124816
125006
|
const resolvedRunId = await runId;
|
|
124817
125007
|
const httpConfig = await getHttpConfig(config2);
|
|
124818
125008
|
httpConfig.headers.set("X-Stream-Done", "true");
|
|
124819
|
-
const
|
|
125009
|
+
const url2 = getStreamUrl(name2, resolvedRunId, httpConfig);
|
|
125010
|
+
const response2 = await fetch(url2, {
|
|
124820
125011
|
method: "PUT",
|
|
124821
125012
|
headers: httpConfig.headers
|
|
124822
125013
|
});
|
|
124823
125014
|
const text2 = await response2.text();
|
|
124824
125015
|
if (!response2.ok) {
|
|
124825
|
-
throw
|
|
125016
|
+
throw createStreamRequestError("close", url2, response2, text2);
|
|
124826
125017
|
}
|
|
124827
125018
|
},
|
|
124828
125019
|
async get(runId, name2, startIndex) {
|
|
@@ -151461,7 +151652,7 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
151461
151652
|
__proto__: null,
|
|
151462
151653
|
loader
|
|
151463
151654
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
151464
|
-
const serverManifest = { "entry": { "module": "/assets/entry.client-DtOpLtMQ.js", "imports": ["/assets/index-BsV8i_Jn.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": true, "module": "/assets/root-
|
|
151655
|
+
const serverManifest = { "entry": { "module": "/assets/entry.client-DtOpLtMQ.js", "imports": ["/assets/index-BsV8i_Jn.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": true, "module": "/assets/root-3uuTxUQN.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/mermaid-3ZIDBTTL-3cOa-aZ5.js"], "css": ["/assets/root-BYtlAgHl.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/home-MRChHR_P.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-DaYMiBT9.js", "/assets/mermaid-3ZIDBTTL-3cOa-aZ5.js", "/assets/index-Byi8AWfe.js"], "css": ["/assets/workflow-graph-viewer-DnlNuQQH.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/run-detail": { "id": "routes/run-detail", "parentId": "root", "path": "run/:runId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/run-detail-8qGjUNCj.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-DaYMiBT9.js", "/assets/mermaid-3ZIDBTTL-3cOa-aZ5.js", "/assets/encryption-C69WMRfh.js", "/assets/index-Byi8AWfe.js"], "css": ["/assets/workflow-graph-viewer-DnlNuQQH.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.rpc": { "id": "routes/api.rpc", "parentId": "root", "path": "api/rpc", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.rpc-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.stream.$streamId": { "id": "routes/api.stream.$streamId", "parentId": "root", "path": "api/stream/:streamId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.stream._streamId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-b100514d.js", "version": "b100514d", "sri": void 0 };
|
|
151465
151656
|
const assetsBuildDirectory = "build/client";
|
|
151466
151657
|
const basename = "/";
|
|
151467
151658
|
const future = { "unstable_optimizeDeps": false, "unstable_subResourceIntegrity": false, "unstable_trailingSlashAwareDataRequests": false, "unstable_previewServerPrerendering": false, "v8_middleware": false, "v8_splitRouteModules": false, "v8_viteEnvironmentApi": false };
|