effect-start 0.30.1 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Fetch.d.ts +1 -1
- package/dist/Fetch.d.ts.map +1 -1
- package/dist/Fetch.js +1 -1
- package/dist/Fetch.js.map +1 -1
- package/dist/GlobalLayer.d.ts.map +1 -1
- package/dist/GlobalLayer.js.map +1 -1
- package/dist/Html.js +3 -3
- package/dist/Html.js.map +1 -1
- package/dist/Password.d.ts +26 -0
- package/dist/Password.d.ts.map +1 -0
- package/dist/Password.js +83 -0
- package/dist/Password.js.map +1 -0
- package/dist/Route.d.ts.map +1 -1
- package/dist/Route.js +1 -1
- package/dist/Route.js.map +1 -1
- package/dist/RouteBody.d.ts +10 -5
- package/dist/RouteBody.d.ts.map +1 -1
- package/dist/RouteBody.js +6 -2
- package/dist/RouteBody.js.map +1 -1
- package/dist/RouteHttp.d.ts.map +1 -1
- package/dist/RouteHttp.js +10 -3
- package/dist/RouteHttp.js.map +1 -1
- package/dist/RouteSse.d.ts +3 -4
- package/dist/RouteSse.d.ts.map +1 -1
- package/dist/RouteSse.js +3 -3
- package/dist/RouteSse.js.map +1 -1
- package/dist/RouteTree.d.ts +20 -5
- package/dist/RouteTree.d.ts.map +1 -1
- package/dist/RouteTree.js +172 -40
- package/dist/RouteTree.js.map +1 -1
- package/dist/StaticFiles.d.ts +23 -0
- package/dist/StaticFiles.d.ts.map +1 -0
- package/dist/StaticFiles.js +74 -0
- package/dist/StaticFiles.js.map +1 -0
- package/dist/_Mime.d.ts +2 -0
- package/dist/_Mime.d.ts.map +1 -0
- package/dist/_Mime.js +33 -0
- package/dist/_Mime.js.map +1 -0
- package/dist/_PathPattern.js +4 -4
- package/dist/_PathPattern.js.map +1 -1
- package/dist/_StreamExtra.d.ts.map +1 -1
- package/dist/_StreamExtra.js +0 -1
- package/dist/_StreamExtra.js.map +1 -1
- package/dist/bun/BunRoute.d.ts.map +1 -1
- package/dist/bun/BunRoute.js +6 -0
- package/dist/bun/BunRoute.js.map +1 -1
- package/dist/bun/BunServer.d.ts +2 -0
- package/dist/bun/BunServer.d.ts.map +1 -1
- package/dist/bun/BunServer.js +18 -7
- package/dist/bun/BunServer.js.map +1 -1
- package/dist/studio/Studio.d.ts +1 -1
- package/dist/studio/Studio.d.ts.map +1 -1
- package/dist/studio/Studio.js +5 -4
- package/dist/studio/Studio.js.map +1 -1
- package/dist/studio/StudioErrors.d.ts.map +1 -1
- package/dist/studio/StudioErrors.js +2 -2
- package/dist/studio/StudioErrors.js.map +1 -1
- package/dist/studio/StudioLogger.d.ts.map +1 -1
- package/dist/studio/StudioLogger.js +1 -3
- package/dist/studio/StudioLogger.js.map +1 -1
- package/dist/studio/StudioStore.d.ts +23 -17
- package/dist/studio/StudioStore.d.ts.map +1 -1
- package/dist/studio/StudioStore.js +48 -44
- package/dist/studio/StudioStore.js.map +1 -1
- package/dist/studio/StudioTracer.d.ts.map +1 -1
- package/dist/studio/StudioTracer.js +10 -4
- package/dist/studio/StudioTracer.js.map +1 -1
- package/dist/studio/routes/errors/route.d.ts +2 -2
- package/dist/studio/routes/errors/route.d.ts.map +1 -1
- package/dist/studio/routes/errors/route.js +2 -2
- package/dist/studio/routes/errors/route.js.map +1 -1
- package/dist/studio/routes/fiberDetail.d.ts +1 -1
- package/dist/studio/routes/fiberDetail.js +4 -4
- package/dist/studio/routes/fiberDetail.js.map +1 -1
- package/dist/studio/routes/fibers/route.d.ts +3 -3
- package/dist/studio/routes/fibers/route.js +4 -4
- package/dist/studio/routes/fibers/route.js.map +1 -1
- package/dist/studio/routes/logs/route.d.ts +2 -2
- package/dist/studio/routes/logs/route.d.ts.map +1 -1
- package/dist/studio/routes/logs/route.js +2 -2
- package/dist/studio/routes/logs/route.js.map +1 -1
- package/dist/studio/routes/metrics/route.d.ts +1 -1
- package/dist/studio/routes/system/route.d.ts +1 -1
- package/dist/studio/routes/traceDetail.d.ts +1 -1
- package/dist/studio/routes/traceDetail.js +1 -1
- package/dist/studio/routes/traceDetail.js.map +1 -1
- package/dist/studio/routes/traces/route.d.ts +3 -3
- package/dist/studio/routes/traces/route.js +5 -5
- package/dist/studio/routes/traces/route.js.map +1 -1
- package/dist/studio/routes/tree.d.ts +14 -14
- package/dist/studio/ui/Traces.d.ts +1 -0
- package/dist/studio/ui/Traces.d.ts.map +1 -1
- package/dist/studio/ui/Traces.js +32 -11
- package/dist/studio/ui/Traces.js.map +1 -1
- package/package.json +2 -2
- package/src/Fetch.ts +2 -2
- package/src/GlobalLayer.ts +1 -3
- package/src/Html.ts +3 -3
- package/src/Password.ts +130 -0
- package/src/Route.ts +10 -12
- package/src/RouteBody.ts +36 -14
- package/src/RouteHttp.ts +14 -3
- package/src/RouteSse.ts +10 -10
- package/src/RouteTree.ts +252 -61
- package/src/StaticFiles.ts +112 -0
- package/src/_Mime.ts +33 -0
- package/src/_PathPattern.ts +4 -4
- package/src/_StreamExtra.ts +0 -1
- package/src/bun/BunRoute.ts +10 -0
- package/src/bun/BunServer.ts +33 -7
- package/src/studio/Studio.ts +6 -5
- package/src/studio/StudioErrors.ts +2 -3
- package/src/studio/StudioLogger.ts +2 -3
- package/src/studio/StudioStore.ts +159 -115
- package/src/studio/StudioTracer.ts +11 -5
- package/src/studio/routes/errors/route.tsx +4 -5
- package/src/studio/routes/fiberDetail.tsx +4 -4
- package/src/studio/routes/fibers/route.tsx +4 -4
- package/src/studio/routes/logs/route.tsx +3 -1
- package/src/studio/routes/traceDetail.tsx +1 -1
- package/src/studio/routes/traces/route.tsx +8 -8
- package/src/studio/ui/Traces.tsx +41 -13
|
@@ -17,10 +17,10 @@ declare const _default: import("../../RouteTree.ts").RouteTree<{
|
|
|
17
17
|
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route.Route<{
|
|
18
18
|
method: "GET";
|
|
19
19
|
format: "html";
|
|
20
|
-
}, {}, string, import("../../sql/SqlClient.ts").SqlError,
|
|
20
|
+
}, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route.Route<{
|
|
21
21
|
method: "GET";
|
|
22
|
-
format: "
|
|
23
|
-
}, {}, import("effect/Stream").Stream<string, import("../../sql/SqlClient.ts").SqlError,
|
|
22
|
+
format: "sse";
|
|
23
|
+
}, {}, import("effect/Stream").Stream<string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>];
|
|
24
24
|
"/traces/:id": [Route.Route.Route<{
|
|
25
25
|
method: "*";
|
|
26
26
|
bunPrefix: string;
|
|
@@ -39,7 +39,7 @@ declare const _default: import("../../RouteTree.ts").RouteTree<{
|
|
|
39
39
|
pathParams: {
|
|
40
40
|
readonly id: string;
|
|
41
41
|
};
|
|
42
|
-
}, string, import("../../sql/SqlClient.ts").SqlError,
|
|
42
|
+
}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>];
|
|
43
43
|
"/metrics": [Route.Route.Route<{
|
|
44
44
|
method: "*";
|
|
45
45
|
bunPrefix: string;
|
|
@@ -50,7 +50,7 @@ declare const _default: import("../../RouteTree.ts").RouteTree<{
|
|
|
50
50
|
format: "html";
|
|
51
51
|
}, {}, string, never, never>, Route.Route.Route<{
|
|
52
52
|
method: "GET";
|
|
53
|
-
format: "
|
|
53
|
+
format: "sse";
|
|
54
54
|
}, {}, import("effect/Stream").Stream<string, never, never>, never, never>];
|
|
55
55
|
"/logs": [Route.Route.Route<{
|
|
56
56
|
method: "*";
|
|
@@ -60,9 +60,9 @@ declare const _default: import("../../RouteTree.ts").RouteTree<{
|
|
|
60
60
|
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route.Route<{
|
|
61
61
|
method: "GET";
|
|
62
62
|
format: "html";
|
|
63
|
-
}, {}, string, import("../../sql/SqlClient.ts").SqlError,
|
|
63
|
+
}, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route.Route<{
|
|
64
64
|
method: "GET";
|
|
65
|
-
format: "
|
|
65
|
+
format: "sse";
|
|
66
66
|
}, {}, import("effect/Stream").Stream<string, never, never>, never, never>];
|
|
67
67
|
"/errors": [Route.Route.Route<{
|
|
68
68
|
method: "*";
|
|
@@ -72,9 +72,9 @@ declare const _default: import("../../RouteTree.ts").RouteTree<{
|
|
|
72
72
|
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route.Route<{
|
|
73
73
|
method: "GET";
|
|
74
74
|
format: "html";
|
|
75
|
-
}, {}, string, import("../../sql/SqlClient.ts").SqlError,
|
|
75
|
+
}, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route.Route<{
|
|
76
76
|
method: "GET";
|
|
77
|
-
format: "
|
|
77
|
+
format: "sse";
|
|
78
78
|
}, {}, import("effect/Stream").Stream<string, never, never>, never, never>];
|
|
79
79
|
"/fibers": [Route.Route.Route<{
|
|
80
80
|
method: "*";
|
|
@@ -84,10 +84,10 @@ declare const _default: import("../../RouteTree.ts").RouteTree<{
|
|
|
84
84
|
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route.Route<{
|
|
85
85
|
method: "GET";
|
|
86
86
|
format: "html";
|
|
87
|
-
}, {}, string, import("../../sql/SqlClient.ts").SqlError,
|
|
87
|
+
}, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route.Route<{
|
|
88
88
|
method: "GET";
|
|
89
|
-
format: "
|
|
90
|
-
}, {}, import("effect/Stream").Stream<string, import("../../sql/SqlClient.ts").SqlError,
|
|
89
|
+
format: "sse";
|
|
90
|
+
}, {}, import("effect/Stream").Stream<string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>];
|
|
91
91
|
"/fibers/:id": [Route.Route.Route<{
|
|
92
92
|
method: "*";
|
|
93
93
|
bunPrefix: string;
|
|
@@ -106,7 +106,7 @@ declare const _default: import("../../RouteTree.ts").RouteTree<{
|
|
|
106
106
|
pathParams: {
|
|
107
107
|
readonly id: string;
|
|
108
108
|
};
|
|
109
|
-
}, string, import("../../sql/SqlClient.ts").SqlError,
|
|
109
|
+
}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>];
|
|
110
110
|
"/routes": [Route.Route.Route<{
|
|
111
111
|
method: "*";
|
|
112
112
|
bunPrefix: string;
|
|
@@ -126,7 +126,7 @@ declare const _default: import("../../RouteTree.ts").RouteTree<{
|
|
|
126
126
|
format: "html";
|
|
127
127
|
}, {}, string, never, never>, Route.Route.Route<{
|
|
128
128
|
method: "GET";
|
|
129
|
-
format: "
|
|
129
|
+
format: "sse";
|
|
130
130
|
}, {}, import("effect/Stream").Stream<string, never, never>, never, never>];
|
|
131
131
|
"/services": [Route.Route.Route<{
|
|
132
132
|
method: "*";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as StudioStore from "../StudioStore.ts";
|
|
2
2
|
export declare function groupByTraceId(spans: Array<StudioStore.StudioSpan>): Map<bigint, Array<StudioStore.StudioSpan>>;
|
|
3
3
|
export declare function TraceGroup(options: {
|
|
4
|
+
id?: bigint;
|
|
4
5
|
spans: Array<StudioStore.StudioSpan>;
|
|
5
6
|
}): import("../../Html.ts").Element | null;
|
|
6
7
|
export declare function TraceGroups(options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Traces.d.ts","sourceRoot":"","sources":["../../../src/studio/ui/Traces.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"Traces.d.ts","sourceRoot":"","sources":["../../../src/studio/ui/Traces.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAgPhD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,GACnC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAW5C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;CAAE,0CAoExF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;CAAE,mCAuB5E;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;CAAE,mCAgG5F"}
|
package/dist/studio/ui/Traces.js
CHANGED
|
@@ -26,6 +26,18 @@ function StatusBadge(options) {
|
|
|
26
26
|
const fg = options.status === "ok" ? "#4ade80" : options.status === "error" ? "#fca5a5" : "#fde047";
|
|
27
27
|
return (_jsx("span", { style: `font-size:11px;padding:2px 8px;border-radius:4px;background:${bg};color:${fg}`, children: options.status }));
|
|
28
28
|
}
|
|
29
|
+
function sortByStartTime(a, b) {
|
|
30
|
+
if (a.startTime < b.startTime)
|
|
31
|
+
return -1;
|
|
32
|
+
if (a.startTime > b.startTime)
|
|
33
|
+
return 1;
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
function pickRootSpan(spans) {
|
|
37
|
+
const spanIds = new Set(spans.map((span) => span.spanId));
|
|
38
|
+
return (spans.find((span) => !span.parentSpanId || !spanIds.has(span.parentSpanId)) ??
|
|
39
|
+
spans.slice().sort(sortByStartTime)[0]);
|
|
40
|
+
}
|
|
29
41
|
function buildSpanTree(spans) {
|
|
30
42
|
const byId = new Map();
|
|
31
43
|
const childrenOf = new Map();
|
|
@@ -46,14 +58,19 @@ function buildSpanTree(spans) {
|
|
|
46
58
|
roots.push(s);
|
|
47
59
|
}
|
|
48
60
|
}
|
|
49
|
-
|
|
50
|
-
roots.sort(sortByStart);
|
|
61
|
+
roots.sort(sortByStartTime);
|
|
51
62
|
for (const children of childrenOf.values()) {
|
|
52
|
-
children.sort(
|
|
63
|
+
children.sort(sortByStartTime);
|
|
53
64
|
}
|
|
54
65
|
const result = [];
|
|
55
|
-
|
|
56
|
-
|
|
66
|
+
const visited = new Set();
|
|
67
|
+
function walk(span, depth, isLast, ancestors, lineage) {
|
|
68
|
+
if (lineage.has(span.spanId) || visited.has(span.spanId))
|
|
69
|
+
return;
|
|
70
|
+
const nextLineage = new Set(lineage);
|
|
71
|
+
nextLineage.add(span.spanId);
|
|
72
|
+
const children = (childrenOf.get(span.spanId) ?? []).filter((child) => !nextLineage.has(child.spanId) && !visited.has(child.spanId));
|
|
73
|
+
visited.add(span.spanId);
|
|
57
74
|
result.push({
|
|
58
75
|
span,
|
|
59
76
|
depth,
|
|
@@ -62,11 +79,15 @@ function buildSpanTree(spans) {
|
|
|
62
79
|
ancestorHasNextSibling: [...ancestors],
|
|
63
80
|
});
|
|
64
81
|
for (let i = 0; i < children.length; i++) {
|
|
65
|
-
walk(children[i], depth + 1, i === children.length - 1, [...ancestors, !isLast]);
|
|
82
|
+
walk(children[i], depth + 1, i === children.length - 1, [...ancestors, !isLast], nextLineage);
|
|
66
83
|
}
|
|
67
84
|
}
|
|
68
85
|
for (let i = 0; i < roots.length; i++) {
|
|
69
|
-
walk(roots[i], 0, i === roots.length - 1, []);
|
|
86
|
+
walk(roots[i], 0, i === roots.length - 1, [], new Set());
|
|
87
|
+
}
|
|
88
|
+
const remaining = spans.filter((span) => !visited.has(span.spanId)).sort(sortByStartTime);
|
|
89
|
+
for (let i = 0; i < remaining.length; i++) {
|
|
90
|
+
walk(remaining[i], 0, i === remaining.length - 1, [], new Set());
|
|
70
91
|
}
|
|
71
92
|
return result;
|
|
72
93
|
}
|
|
@@ -137,13 +158,13 @@ export function groupByTraceId(spans) {
|
|
|
137
158
|
export function TraceGroup(options) {
|
|
138
159
|
if (options.spans.length === 0)
|
|
139
160
|
return null;
|
|
140
|
-
const root = options.spans
|
|
141
|
-
const traceId = root.traceId;
|
|
161
|
+
const root = pickRootSpan(options.spans);
|
|
162
|
+
const traceId = options.id ?? root.traceId;
|
|
142
163
|
const totalMs = root.durationMs ?? 0;
|
|
143
164
|
const rootStart = root.startTime;
|
|
144
165
|
const hasError = options.spans.some((s) => s.status === "error");
|
|
145
166
|
const status = hasError ? "error" : root.status;
|
|
146
|
-
return (_jsxs("details", { class: "tl-row", children: [_jsxs("summary", { class: "tl-summary tl-cols", children: [_jsx("span", { class: "tl-cell tl-cell-status", children: _jsx("span", { style: `width:8px;height:8px;border-radius:50%;background:${statusColor(status)};display:block` }) }), _jsx("span", { class: "tl-cell tl-cell-name", children: root.name }), _jsx("span", { class: "tl-cell tl-cell-spans", children: options.spans.length }), _jsx("span", { class: "tl-cell tl-cell-dur", children: formatDuration(totalMs) }), _jsx("span", { class: "tl-cell tl-cell-id", children: String(traceId).slice(0, 12) })] }), _jsxs("div", { class: "tl-body", children: [_jsxs("div", { style: "display:flex;gap:12px;align-items:center;margin-bottom:8px", children: [_jsx("a", { href: `${StudioStore.store.prefix}/traces/${traceId}`, style: "color:#38bdf8;font-size:12px;text-decoration:none", children: "Full trace view" }), _jsx(StatusBadge, { status: status }), _jsxs("span", { style: "color:#64748b;font-size:11px", children: [options.spans.length, " span", options.spans.length !== 1 ? "s" : ""] }), _jsx("span", { style: "color:#64748b;font-size:11px;font-family:monospace", children: formatDuration(totalMs) }), _jsx("span", { style: "color:#475569;font-size:10px;font-family:monospace", children: traceId })] }), options.spans.map((s) => {
|
|
167
|
+
return (_jsxs("details", { id: `trace-${traceId}`, class: "tl-row", children: [_jsxs("summary", { class: "tl-summary tl-cols", children: [_jsx("span", { class: "tl-cell tl-cell-status", children: _jsx("span", { style: `width:8px;height:8px;border-radius:50%;background:${statusColor(status)};display:block` }) }), _jsx("span", { class: "tl-cell tl-cell-name", children: root.name }), _jsx("span", { class: "tl-cell tl-cell-spans", children: options.spans.length }), _jsx("span", { class: "tl-cell tl-cell-dur", children: formatDuration(totalMs) }), _jsx("span", { class: "tl-cell tl-cell-id", children: String(traceId).slice(0, 12) })] }), _jsxs("div", { class: "tl-body", children: [_jsxs("div", { style: "display:flex;gap:12px;align-items:center;margin-bottom:8px", children: [_jsx("a", { href: `${StudioStore.store.prefix}/traces/${traceId}`, style: "color:#38bdf8;font-size:12px;text-decoration:none", children: "Full trace view" }), _jsx(StatusBadge, { status: status }), _jsxs("span", { style: "color:#64748b;font-size:11px", children: [options.spans.length, " span", options.spans.length !== 1 ? "s" : ""] }), _jsx("span", { style: "color:#64748b;font-size:11px;font-family:monospace", children: formatDuration(totalMs) }), _jsx("span", { style: "color:#475569;font-size:10px;font-family:monospace", children: traceId })] }), options.spans.map((s) => {
|
|
147
168
|
const offsetMs = Number(s.startTime - rootStart) / 1_000_000;
|
|
148
169
|
const leftPct = totalMs > 0 ? Math.min(100, (offsetMs / totalMs) * 100) : 0;
|
|
149
170
|
const widthPct = totalMs > 0
|
|
@@ -166,7 +187,7 @@ export function TraceDetail(options) {
|
|
|
166
187
|
if (options.spans.length === 0) {
|
|
167
188
|
return _jsx("div", { class: "empty", children: "Trace not found" });
|
|
168
189
|
}
|
|
169
|
-
const root = options.spans
|
|
190
|
+
const root = pickRootSpan(options.spans);
|
|
170
191
|
const traceId = root.traceId;
|
|
171
192
|
const totalMs = root.durationMs ?? 0;
|
|
172
193
|
const rootStart = root.startTime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Traces.js","sourceRoot":"","sources":["../../../src/studio/ui/Traces.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Traces.js","sourceRoot":"","sources":["../../../src/studio/ui/Traces.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAEhD,SAAS,cAAc,CAAC,EAAsB;IAC5C,IAAI,EAAE,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAC5B,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAChD,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1C,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;AACrC,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IACrC,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,SAAS,CAAA;IACxC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,QAAQ,CAAC,OAA8E;IAC9F,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IACtC,OAAO,CACL,eAAK,KAAK,EAAC,mFAAmF,aAC5F,eAAM,KAAK,EAAC,+BAA+B,YAAE,OAAO,CAAC,KAAK,GAAQ,EAClE,eAAM,KAAK,EAAC,0DAA0D,YACnE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GACjB,IACH,CACP,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAA2B;IAC9C,MAAM,EAAE,GACN,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1F,MAAM,EAAE,GACN,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1F,OAAO,CACL,eAAM,KAAK,EAAE,+DAA+D,EAAE,UAAU,EAAE,EAAE,YACzF,OAAO,CAAC,MAAM,GACV,CACR,CAAA;AACH,CAAC;AAYD,SAAS,eAAe,CAAC,CAAyB,EAAE,CAAyB;IAC3E,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS;QAAE,OAAO,CAAC,CAAC,CAAA;IACxC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS;QAAE,OAAO,CAAC,CAAA;IACvC,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,YAAY,CAAC,KAAoC;IACxD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACzD,OAAO,CACL,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3E,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CACvC,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAoC;IACzD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkC,CAAA;IACtD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyC,CAAA;IAEnE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,MAAM,KAAK,GAAkC,EAAE,CAAA;IAC/C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/C,IAAI,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;YAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,EAAE,CAAA;gBACb,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;YAC1C,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAClB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC3B,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,MAAM,GAAoB,EAAE,CAAA;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IAEjC,SAAS,IAAI,CACX,IAA4B,EAC5B,KAAa,EACb,MAAe,EACf,SAAyB,EACzB,OAAoB;QAEpB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAM;QAEhE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QACpC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE5B,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CACzD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CACxE,CAAA;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,KAAK;YACL,UAAU,EAAE,QAAQ,CAAC,MAAM;YAC3B,WAAW,EAAE,MAAM;YACnB,sBAAsB,EAAE,CAAC,GAAG,SAAS,CAAC;SACvC,CAAC,CAAA;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAA;QAC/F,CAAC;IACH,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAEzF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,qBAAqB;AAErB,SAAS,cAAc,CAAC,OAA2B;IACjD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEzC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACtC,MAAM,QAAQ,GAAe,EAAE,CAAA;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpE,IAAI,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC,cAAK,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAI,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,cAAK,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAI,CAAC,CAAA;IAC/F,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC,cAAK,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAI,CAAC,CAAA;IAC/F,CAAC;IAED,QAAQ,CAAC,IAAI,CACX,cAAK,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,GAAI,CACvF,CAAA;IAED,OAAO,CACL,cAAK,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,SAAS,MAAM,sBAAsB,YAC9D,QAAQ,GACL,CACP,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,OAA4B;IAC5C,MAAM,KAAK,GAAG,CAAC,CAAA;IACf,MAAM,MAAM,GAAkB,EAAE,CAAA;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC5D,CAAC;IACD,OAAO,CACL,eAAK,KAAK,EAAC,SAAS,aAClB,cAAK,KAAK,EAAC,8CAA8C,qBAAW,EACpE,cAAK,KAAK,EAAC,eAAe,YACvB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,yBAAO,CAAC,GAAQ,CACjB,CAAC,GACE,IACF,CACP,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAA+D;IACnF,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA;IAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;IACpE,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAA;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3F,MAAM,QAAQ,GACZ,OAAO,CAAC,OAAO,GAAG,CAAC;QACjB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;QACzE,CAAC,CAAC,GAAG,CAAA;IACT,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAEnC,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,GAAG,CAAA;IAE7C,OAAO,CACL,eAAK,KAAK,EAAC,QAAQ,aACjB,eAAK,KAAK,EAAC,SAAS,aAClB,KAAC,cAAc,IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,GAAI,EACtC,eAAM,KAAK,EAAC,wCAAwC,YAAE,CAAC,CAAC,IAAI,GAAQ,EACnE,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,eAAM,KAAK,EAAC,UAAU,YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,GAAQ,IACnF,EACN,eAAK,KAAK,EAAC,aAAa,aACtB,cAAK,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,QAAQ,OAAO,WAAW,QAAQ,gBAAgB,KAAK,EAAE,GAAI,EACxF,cAAK,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,QAAQ,YAAY,GAAG,YAC/C,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,GACzB,IACF,IACF,CACP,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAItB;IACC,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC;QAAE,OAAO,cAAK,KAAK,EAAC,SAAS,GAAG,CAAA;IACxD,OAAO,CACL,cAAK,KAAK,EAAC,SAAS,YACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;YACpE,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAA;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;YACxF,OAAO,CACL,cACE,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE,QAAQ,OAAO,WAAW,QAAQ,gBAAgB,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAChF,CACH,CAAA;QACH,CAAC,CAAC,GACE,CACP,CAAA;AACH,CAAC;AAED,kBAAkB;AAElB,MAAM,UAAU,cAAc,CAC5B,KAAoC;IAEpC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyC,CAAA;IAC/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,EAAE,CAAA;YACV,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACjC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAA8D;IACvF,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAA;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAA;IAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IAE/C,OAAO,CACL,mBAAS,EAAE,EAAE,SAAS,OAAO,EAAE,EAAE,KAAK,EAAC,QAAQ,aAC7C,mBAAS,KAAK,EAAC,oBAAoB,aACjC,eAAM,KAAK,EAAC,wBAAwB,YAClC,eACE,KAAK,EAAE,qDAAqD,WAAW,CAAC,MAAM,CAAC,gBAAgB,GAC/F,GACG,EACP,eAAM,KAAK,EAAC,sBAAsB,YAAE,IAAI,CAAC,IAAI,GAAQ,EACrD,eAAM,KAAK,EAAC,uBAAuB,YAAE,OAAO,CAAC,KAAK,CAAC,MAAM,GAAQ,EACjE,eAAM,KAAK,EAAC,qBAAqB,YAAE,cAAc,CAAC,OAAO,CAAC,GAAQ,EAClE,eAAM,KAAK,EAAC,oBAAoB,YAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAQ,IAC9D,EACV,eAAK,KAAK,EAAC,SAAS,aAClB,eAAK,KAAK,EAAC,4DAA4D,aACrE,YACE,IAAI,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,WAAW,OAAO,EAAE,EACrD,KAAK,EAAC,mDAAmD,gCAGvD,EACJ,KAAC,WAAW,IAAC,MAAM,EAAE,MAAM,GAAI,EAC/B,gBAAM,KAAK,EAAC,8BAA8B,aACvC,OAAO,CAAC,KAAK,CAAC,MAAM,WAAO,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAC5D,EACP,eAAM,KAAK,EAAC,oDAAoD,YAC7D,cAAc,CAAC,OAAO,CAAC,GACnB,EACP,eAAM,KAAK,EAAC,oDAAoD,YAAE,OAAO,GAAQ,IAC7E,EACL,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;wBAC5D,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;wBAC3E,MAAM,QAAQ,GACZ,OAAO,GAAG,CAAC;4BACT,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;4BAC/E,CAAC,CAAC,GAAG,CAAA;wBACT,OAAO,CACL,eAAK,KAAK,EAAC,4FAA4F,aACrG,eAAM,KAAK,EAAE,SAAS,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,YACzD,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GACtB,EACP,eAAM,KAAK,EAAC,yFAAyF,YAClG,CAAC,CAAC,IAAI,GACF,EACP,cAAK,KAAK,EAAC,2FAA2F,YACpG,cACE,KAAK,EAAE,8DAA8D,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,OAAO,WAAW,QAAQ,GAAG,GAChI,GACE,EACN,eAAM,KAAK,EAAC,+CAA+C,YACxD,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,GACxB,IACH,CACP,CAAA;oBACH,CAAC,CAAC,IACE,IACE,CACX,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAiD;IAC3E,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;SAC/D,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEf,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,cAAK,KAAK,EAAC,OAAO,sCAA4B,CAAA;IACvD,CAAC;IACD,OAAO,CACL,eAAK,KAAK,EAAC,SAAS,aAClB,eAAK,KAAK,EAAC,mBAAmB,aAC5B,eAAM,KAAK,EAAC,wBAAwB,GAAG,EACvC,eAAM,KAAK,EAAC,sBAAsB,qBAAY,EAC9C,eAAM,KAAK,EAAC,uBAAuB,sBAAa,EAChD,eAAM,KAAK,EAAC,qBAAqB,yBAAgB,EACjD,eAAM,KAAK,EAAC,oBAAoB,sBAAa,IACzC,EACL,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI,CAC7B,CAAC,IACE,CACP,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAiE;IAC3F,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,cAAK,KAAK,EAAC,OAAO,gCAAsB,CAAA;IACjD,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;IAChC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAA;IACzD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAEzC,OAAO,CACL,8BACE,eAAK,KAAK,EAAC,mDAAmD,aAC5D,eAAK,KAAK,EAAC,2DAA2D,aACpE,YACE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,SAAS,EAChC,KAAK,EAAC,mDAAmD,uBAGvD,EACJ,eAAM,KAAK,EAAC,eAAe,kBAAS,EACpC,eAAM,KAAK,EAAC,oDAAoD,YAAE,IAAI,CAAC,IAAI,GAAQ,IAC/E,EACN,eAAK,KAAK,EAAC,uEAAuE,aAChF,KAAC,WAAW,IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAI,EACpC,2BACG,OAAO,CAAC,KAAK,CAAC,MAAM,WAAO,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAC5D,EACP,yBAAO,cAAc,CAAC,OAAO,CAAC,GAAQ,EACtC,yBAAO,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAQ,EACpE,eAAM,KAAK,EAAC,oDAAoD,YAAE,OAAO,GAAQ,IAC7E,IACF,EAEN,cAAK,KAAK,EAAC,kBAAkB,YAC3B,KAAC,aAAa,IAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAI,GAC3E,EAEN,eAAK,KAAK,EAAC,eAAe,aACxB,KAAC,QAAQ,IAAC,OAAO,EAAE,OAAO,GAAI,EAC9B,cAAK,KAAK,EAAC,SAAS,YACjB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACf,KAAC,YAAY,IAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAI,CAClE,CAAC,GACE,IACF,EAEN,cAAK,KAAK,EAAC,aAAa,YACrB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACd,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;oBAChB,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAuB,CAAA;oBACxE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAA;oBAEzF,OAAO,CACL,mBAAS,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,mBAAmB,aACnD,mBAAS,KAAK,EAAC,mBAAmB,aAChC,eACE,KAAK,EAAE,qDAAqD,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,GACjG,EACF,eAAM,KAAK,EAAC,qIAAqI,YAC9I,CAAC,CAAC,IAAI,GACF,EACP,KAAC,WAAW,IAAC,MAAM,EAAE,CAAC,CAAC,MAAM,GAAI,EACjC,eAAM,KAAK,EAAC,qEAAqE,YAC9E,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,GACxB,IACC,EACV,eAAK,KAAK,EAAC,iBAAiB,aAC1B,KAAC,QAAQ,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,CAAC,CAAC,MAAM,GAAI,EAC7C,KAAC,QAAQ,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,CAAC,CAAC,IAAI,GAAI,EACvC,CAAC,CAAC,YAAY,IAAI,KAAC,QAAQ,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,CAAC,CAAC,YAAY,GAAI,EACpE,UAAU,IAAI,KAAC,QAAQ,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,UAAU,GAAI,EAC5D,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAC3B,KAAC,QAAQ,IAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAI,CACzC,CAAC,EACD,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,eAAK,KAAK,EAAC,gBAAgB,aACzB,eAAM,KAAK,EAAC,8BAA8B,wBAAe,EACxD,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CACpB,eAAK,KAAK,EAAC,kEAAkE,aAC1E,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,UAAU,IAAI,CAChB,gBAAM,KAAK,EAAC,eAAe,kBAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,IAAQ,CACpE,IACG,CACP,CAAC,IACE,CACP,IACG,IACE,CACX,CAAA;gBACH,CAAC,CAAC,GACE,IACL,CACJ,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect-start",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"src/",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"bun": "./src/experimental/index.ts",
|
|
57
57
|
"default": "./dist/experimental/index.js"
|
|
58
58
|
},
|
|
59
|
-
"./sql": {
|
|
59
|
+
"./sql": {
|
|
60
60
|
"bun": "./src/sql/index.ts",
|
|
61
61
|
"default": "./dist/sql/index.js"
|
|
62
62
|
},
|
package/src/Fetch.ts
CHANGED
|
@@ -286,7 +286,7 @@ export function retry(options: {
|
|
|
286
286
|
|
|
287
287
|
interface SseEvent {
|
|
288
288
|
data?: string | undefined
|
|
289
|
-
|
|
289
|
+
event?: string
|
|
290
290
|
retry?: number
|
|
291
291
|
id?: string
|
|
292
292
|
}
|
|
@@ -330,7 +330,7 @@ export function sse(_options?: {
|
|
|
330
330
|
if (line === "") {
|
|
331
331
|
if (acc.dataLines.length > 0) {
|
|
332
332
|
const event: SseEvent = { data: acc.dataLines.join("\n") }
|
|
333
|
-
if (acc.eventType !== undefined) event.
|
|
333
|
+
if (acc.eventType !== undefined) event.event = acc.eventType
|
|
334
334
|
if (acc.retryMs !== undefined) event.retry = acc.retryMs
|
|
335
335
|
if (acc.lastEventId !== undefined) event.id = acc.lastEventId
|
|
336
336
|
return [{ ...empty, lastEventId: acc.lastEventId }, event]
|
package/src/GlobalLayer.ts
CHANGED
|
@@ -67,9 +67,7 @@ export const globalLayer =
|
|
|
67
67
|
)
|
|
68
68
|
yield* Deferred.succeed(deferred, ctx)
|
|
69
69
|
yield* Effect.never
|
|
70
|
-
}).pipe(
|
|
71
|
-
Effect.catchAllCause((cause) => Deferred.failCause(deferred, cause)),
|
|
72
|
-
),
|
|
70
|
+
}).pipe(Effect.catchAllCause((cause) => Deferred.failCause(deferred, cause))),
|
|
73
71
|
),
|
|
74
72
|
) as Fiber.RuntimeFiber<void>
|
|
75
73
|
|
package/src/Html.ts
CHANGED
|
@@ -217,9 +217,9 @@ const resolveValue = (value: HtmlValue): string => {
|
|
|
217
217
|
if (isHtmlString(value)) return value.value
|
|
218
218
|
if (Array.isArray(value)) return (value as Array<HtmlValue>).map(resolveValue).join("")
|
|
219
219
|
if (typeof value === "function") return value.toString()
|
|
220
|
-
if (typeof value === "object") return JSON.stringify(value)
|
|
221
|
-
if (typeof value === "string") return value
|
|
222
|
-
return String(value)
|
|
220
|
+
if (typeof value === "object") return escSQ(JSON.stringify(value))
|
|
221
|
+
if (typeof value === "string") return esc(value)
|
|
222
|
+
return esc(String(value))
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
export const html = (strings: TemplateStringsArray, ...values: Array<HtmlValue>): HtmlString => {
|
package/src/Password.ts
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import * as Data from "effect/Data"
|
|
2
|
+
import * as Effect from "effect/Effect"
|
|
3
|
+
import * as ParseResult from "effect/ParseResult"
|
|
4
|
+
import * as Schema from "effect/Schema"
|
|
5
|
+
|
|
6
|
+
export class PasswordError extends Data.TaggedError("PasswordError")<{
|
|
7
|
+
readonly reason: "HashFailure" | "UnsupportedAlgorithm"
|
|
8
|
+
readonly algorithm?: string
|
|
9
|
+
readonly cause?: unknown
|
|
10
|
+
}> {}
|
|
11
|
+
|
|
12
|
+
const bunAlgorithms = ["argon2d", "argon2i", "argon2id", "bcrypt"] as const
|
|
13
|
+
const defaultAlgorithm = "bcrypt" as const
|
|
14
|
+
const defaultBcryptCost = 10
|
|
15
|
+
|
|
16
|
+
type PasswordAlgorithm = (typeof bunAlgorithms)[number]
|
|
17
|
+
|
|
18
|
+
type HashOptions = {
|
|
19
|
+
readonly algorithm?: PasswordAlgorithm
|
|
20
|
+
readonly cost?: number
|
|
21
|
+
readonly memoryCost?: number
|
|
22
|
+
readonly timeCost?: number
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const PasswordStored = Schema.NonEmptyString.annotations({
|
|
26
|
+
identifier: "PasswordStored",
|
|
27
|
+
description: "A stored password hash string.",
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
export type PasswordStored = typeof PasswordStored.Type
|
|
31
|
+
|
|
32
|
+
const PlainTextPassword = Schema.NonEmptyString.annotations({
|
|
33
|
+
identifier: "PasswordPlainText",
|
|
34
|
+
description: "A plain-text password that will be hashed when decoded.",
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
function makePasswordSchema(options?: HashOptions) {
|
|
38
|
+
return Schema.transformOrFail(PlainTextPassword, PasswordStored, {
|
|
39
|
+
strict: true,
|
|
40
|
+
decode: (input, _, ast) =>
|
|
41
|
+
hash(input, options).pipe(
|
|
42
|
+
Effect.mapError((error) => new ParseResult.Type(ast, input, formatError(error))),
|
|
43
|
+
),
|
|
44
|
+
encode: (stored, _, ast) =>
|
|
45
|
+
Effect.fail(
|
|
46
|
+
new ParseResult.Forbidden(
|
|
47
|
+
ast,
|
|
48
|
+
stored,
|
|
49
|
+
"Password hashes are write-only and cannot be encoded back to plain text.",
|
|
50
|
+
),
|
|
51
|
+
),
|
|
52
|
+
}).annotations({
|
|
53
|
+
identifier: "Password",
|
|
54
|
+
description: "A write-only password schema that decodes plain text into a password hash.",
|
|
55
|
+
})
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function schemaPassword(options?: HashOptions) {
|
|
59
|
+
return makePasswordSchema(options)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function hash(
|
|
63
|
+
password: string,
|
|
64
|
+
options?: HashOptions,
|
|
65
|
+
): Effect.Effect<PasswordStored, PasswordError> {
|
|
66
|
+
return Effect.gen(function* () {
|
|
67
|
+
const algorithm = options?.algorithm ?? defaultAlgorithm
|
|
68
|
+
|
|
69
|
+
const digest = yield* Effect.tryPromise({
|
|
70
|
+
try: () => Bun.password.hash(password, toBunAlgorithm(options)),
|
|
71
|
+
catch: (cause) =>
|
|
72
|
+
new PasswordError({
|
|
73
|
+
reason: isSupportedAlgorithm(algorithm) ? "HashFailure" : "UnsupportedAlgorithm",
|
|
74
|
+
algorithm,
|
|
75
|
+
cause,
|
|
76
|
+
}),
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
return digest
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export function verify(
|
|
84
|
+
password: string,
|
|
85
|
+
stored: PasswordStored,
|
|
86
|
+
): Effect.Effect<boolean, PasswordError> {
|
|
87
|
+
return Effect.tryPromise({
|
|
88
|
+
try: () => Bun.password.verify(password, stored),
|
|
89
|
+
catch: (cause) =>
|
|
90
|
+
new PasswordError({
|
|
91
|
+
reason: "HashFailure",
|
|
92
|
+
cause,
|
|
93
|
+
}),
|
|
94
|
+
})
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function toBunAlgorithm(
|
|
98
|
+
options?: HashOptions,
|
|
99
|
+
): Bun.Password.AlgorithmLabel | Bun.Password.Argon2Algorithm | Bun.Password.BCryptAlgorithm {
|
|
100
|
+
const algorithm = options?.algorithm ?? defaultAlgorithm
|
|
101
|
+
|
|
102
|
+
switch (algorithm) {
|
|
103
|
+
case "bcrypt":
|
|
104
|
+
return {
|
|
105
|
+
algorithm,
|
|
106
|
+
cost: options?.cost ?? defaultBcryptCost,
|
|
107
|
+
}
|
|
108
|
+
case "argon2d":
|
|
109
|
+
case "argon2i":
|
|
110
|
+
case "argon2id":
|
|
111
|
+
return {
|
|
112
|
+
algorithm,
|
|
113
|
+
memoryCost: options?.memoryCost,
|
|
114
|
+
timeCost: options?.timeCost,
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function isSupportedAlgorithm(algorithm: string): algorithm is PasswordAlgorithm {
|
|
120
|
+
return bunAlgorithms.includes(algorithm as PasswordAlgorithm)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function formatError(error: PasswordError): string {
|
|
124
|
+
switch (error.reason) {
|
|
125
|
+
case "UnsupportedAlgorithm":
|
|
126
|
+
return `Unsupported password hash algorithm: ${error.algorithm ?? "unknown"}`
|
|
127
|
+
case "HashFailure":
|
|
128
|
+
return `Failed to hash password with ${error.algorithm ?? "unknown"}`
|
|
129
|
+
}
|
|
130
|
+
}
|
package/src/Route.ts
CHANGED
|
@@ -212,8 +212,7 @@ export const text = RouteBody.build<string, "text">({
|
|
|
212
212
|
|
|
213
213
|
export const html = RouteBody.build<string | JSX.Children, string, "html">({
|
|
214
214
|
format: "html",
|
|
215
|
-
handle: (body) =>
|
|
216
|
-
typeof body === "string" ? body : Html.renderToString(body as JSX.Children),
|
|
215
|
+
handle: (body) => (typeof body === "string" ? body : Html.renderToString(body as JSX.Children)),
|
|
217
216
|
})
|
|
218
217
|
|
|
219
218
|
export const json = RouteBody.build<Values.Json, "json">({
|
|
@@ -232,16 +231,15 @@ export function redirect<D extends RouteDescriptor.Any, B, I extends Route.Tuple
|
|
|
232
231
|
): (
|
|
233
232
|
self: RouteSet.RouteSet<D, B, I>,
|
|
234
233
|
) => RouteSet.RouteSet<D, B, [...I, Route.Route<{}, {}, "", never, never>]> {
|
|
235
|
-
const route = make<{}, {}, "">(
|
|
236
|
-
(
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
),
|
|
234
|
+
const route = make<{}, {}, "">(() =>
|
|
235
|
+
Effect.succeed(
|
|
236
|
+
Entity.make("", {
|
|
237
|
+
status: options?.status ?? 302,
|
|
238
|
+
headers: {
|
|
239
|
+
location: url instanceof URL ? url.href : url,
|
|
240
|
+
},
|
|
241
|
+
}),
|
|
242
|
+
),
|
|
245
243
|
)
|
|
246
244
|
|
|
247
245
|
return (self) =>
|
package/src/RouteBody.ts
CHANGED
|
@@ -6,13 +6,14 @@ import * as Route from "./Route.ts"
|
|
|
6
6
|
import * as StreamExtra from "./_StreamExtra.ts"
|
|
7
7
|
import type * as Values from "./_Values.ts"
|
|
8
8
|
|
|
9
|
-
export type Format = "text" | "html" | "json" | "bytes" | "*"
|
|
9
|
+
export type Format = "text" | "html" | "json" | "bytes" | "sse" | "*"
|
|
10
10
|
|
|
11
11
|
const formatToContentType: Record<Format, string | undefined> = {
|
|
12
12
|
text: "text/plain; charset=utf-8",
|
|
13
13
|
html: "text/html; charset=utf-8",
|
|
14
14
|
json: "application/json",
|
|
15
15
|
bytes: "application/octet-stream",
|
|
16
|
+
sse: "text/event-stream",
|
|
16
17
|
"*": undefined,
|
|
17
18
|
}
|
|
18
19
|
|
|
@@ -24,10 +25,7 @@ type YieldContext<T> = T extends Utils.YieldWrap<Effect.Effect<any, any, infer R
|
|
|
24
25
|
|
|
25
26
|
type Next<B, A> = (context?: Partial<B> & Record<string, unknown>) => Entity.Entity<UnwrapStream<A>>
|
|
26
27
|
|
|
27
|
-
type HandlerReturn<A> =
|
|
28
|
-
| A
|
|
29
|
-
| Entity.Entity<A>
|
|
30
|
-
| ((self: Route.RouteSet.Any) => Route.RouteSet.Any)
|
|
28
|
+
type HandlerReturn<A> = A | Entity.Entity<A> | ((self: Route.RouteSet.Any) => Route.RouteSet.Any)
|
|
31
29
|
|
|
32
30
|
type HandlerFunction<B, A, E, R> = (
|
|
33
31
|
context: Values.Simplify<B>,
|
|
@@ -80,8 +78,12 @@ export function handle<B, A, E, R>(
|
|
|
80
78
|
if (Entity.isEntity(handler)) {
|
|
81
79
|
return (_context, _next) => Effect.succeed(handler as Entity.Entity<A>)
|
|
82
80
|
}
|
|
83
|
-
return ((_context: any, _next: any) =>
|
|
84
|
-
|
|
81
|
+
return ((_context: any, _next: any) => normalizeToEntity(handler)) as Route.Route.Handler<
|
|
82
|
+
B,
|
|
83
|
+
A,
|
|
84
|
+
E,
|
|
85
|
+
R
|
|
86
|
+
>
|
|
85
87
|
}
|
|
86
88
|
|
|
87
89
|
function normalizeToEntity(value: unknown): Effect.Effect<Entity.Entity<any>> {
|
|
@@ -113,7 +115,16 @@ export interface BuildReturn<Value, F extends Format, Body = never> {
|
|
|
113
115
|
) => Route.RouteSet.RouteSet<
|
|
114
116
|
D,
|
|
115
117
|
B,
|
|
116
|
-
[
|
|
118
|
+
[
|
|
119
|
+
...I,
|
|
120
|
+
Route.Route.Route<
|
|
121
|
+
{ format: F },
|
|
122
|
+
{},
|
|
123
|
+
[Body] extends [never] ? A : Body,
|
|
124
|
+
YieldError<Y>,
|
|
125
|
+
YieldContext<Y>
|
|
126
|
+
>,
|
|
127
|
+
]
|
|
117
128
|
>
|
|
118
129
|
|
|
119
130
|
<
|
|
@@ -127,7 +138,11 @@ export interface BuildReturn<Value, F extends Format, Body = never> {
|
|
|
127
138
|
handler: HandlerInput<NoInfer<D & B & Route.ExtractBindings<I> & { format: F }>, A, E, R>,
|
|
128
139
|
): (
|
|
129
140
|
self: Route.RouteSet.RouteSet<D, B, I>,
|
|
130
|
-
) => Route.RouteSet.RouteSet<
|
|
141
|
+
) => Route.RouteSet.RouteSet<
|
|
142
|
+
D,
|
|
143
|
+
B,
|
|
144
|
+
[...I, Route.Route.Route<{ format: F }, {}, [Body] extends [never] ? A : Body, E, R>]
|
|
145
|
+
>
|
|
131
146
|
}
|
|
132
147
|
|
|
133
148
|
export function build<Value, F extends Format>(options: { format: F }): BuildReturn<Value, F>
|
|
@@ -154,15 +169,22 @@ export function build<Value, F extends Format>(options: {
|
|
|
154
169
|
const wrappedHandler: Route.Route.Handler<{ format: F }, A, E, R> = (ctx, next) =>
|
|
155
170
|
baseHandler(ctx as D & B & Route.ExtractBindings<I> & { format: F }, next).pipe(
|
|
156
171
|
Effect.map((entity) => {
|
|
157
|
-
const body =
|
|
158
|
-
|
|
172
|
+
const body =
|
|
173
|
+
handleBody && !StreamExtra.isStream(entity.body)
|
|
174
|
+
? handleBody(entity.body)
|
|
175
|
+
: entity.body
|
|
176
|
+
if (
|
|
177
|
+
body === entity.body &&
|
|
178
|
+
(entity.headers["content-type"] || contentType === undefined)
|
|
179
|
+
)
|
|
159
180
|
return entity
|
|
160
181
|
return Entity.make(body as A, {
|
|
161
182
|
status: entity.status,
|
|
162
183
|
url: entity.url,
|
|
163
|
-
headers:
|
|
164
|
-
|
|
165
|
-
|
|
184
|
+
headers:
|
|
185
|
+
entity.headers["content-type"] || contentType === undefined
|
|
186
|
+
? entity.headers
|
|
187
|
+
: { ...entity.headers, "content-type": contentType },
|
|
166
188
|
})
|
|
167
189
|
}),
|
|
168
190
|
)
|
package/src/RouteHttp.ts
CHANGED
|
@@ -24,12 +24,12 @@ type UnboundedRouteWithMethod = Route.Route.With<{
|
|
|
24
24
|
}>
|
|
25
25
|
|
|
26
26
|
// Used to match Accept headers against available route formats.
|
|
27
|
-
// text/* matches any text type (text/plain, text/event-stream, text/markdown, etc.)
|
|
28
27
|
const formatToMediaType = {
|
|
29
28
|
text: "text/*",
|
|
30
29
|
html: "text/html",
|
|
31
30
|
json: "application/json",
|
|
32
31
|
bytes: "application/octet-stream",
|
|
32
|
+
sse: "text/event-stream",
|
|
33
33
|
} as const
|
|
34
34
|
|
|
35
35
|
// Used after content negotiation to determine which format was selected.
|
|
@@ -38,6 +38,7 @@ const mediaTypeToFormat = {
|
|
|
38
38
|
"text/html": "html",
|
|
39
39
|
"application/json": "json",
|
|
40
40
|
"application/octet-stream": "bytes",
|
|
41
|
+
"text/event-stream": "sse",
|
|
41
42
|
} as const
|
|
42
43
|
|
|
43
44
|
/**
|
|
@@ -115,7 +116,7 @@ function toResponse(
|
|
|
115
116
|
)
|
|
116
117
|
}
|
|
117
118
|
|
|
118
|
-
if (format === "text" || format === "html") {
|
|
119
|
+
if (format === "text" || format === "html" || format === "sse") {
|
|
119
120
|
return Effect.map(
|
|
120
121
|
entity.text as Effect.Effect<string, ParseResult.ParseError>,
|
|
121
122
|
(text) => new Response(text, { status, headers }),
|
|
@@ -192,6 +193,10 @@ export const toWebHandlerRuntime = <R>(runtime: Runtime.Runtime<R>) => {
|
|
|
192
193
|
}
|
|
193
194
|
}
|
|
194
195
|
|
|
196
|
+
if (methodGroups["GET"] !== undefined && methodGroups["HEAD"] === undefined) {
|
|
197
|
+
methodGroups["HEAD"] = methodGroups["GET"]
|
|
198
|
+
}
|
|
199
|
+
|
|
195
200
|
const allowedMethods = Object.keys(methodGroups)
|
|
196
201
|
.filter((m) => methodGroups[m] !== undefined && methodGroups[m]!.length > 0)
|
|
197
202
|
.join(", ")
|
|
@@ -366,9 +371,15 @@ export const toWebHandlerRuntime = <R>(runtime: Runtime.Runtime<R>) => {
|
|
|
366
371
|
{ once: true },
|
|
367
372
|
)
|
|
368
373
|
|
|
374
|
+
const resolveForMethod =
|
|
375
|
+
method === "HEAD"
|
|
376
|
+
? (response: Response) =>
|
|
377
|
+
resolve(new Response(null, { status: response.status, headers: response.headers }))
|
|
378
|
+
: resolve
|
|
379
|
+
|
|
369
380
|
fiber.addObserver((exit) => {
|
|
370
381
|
if (exit._tag === "Success") {
|
|
371
|
-
|
|
382
|
+
resolveForMethod(exit.value)
|
|
372
383
|
} else if (isClientAbort(exit.cause)) {
|
|
373
384
|
resolve(respondError({ status: 499, message: "client closed request" }))
|
|
374
385
|
} else {
|