effect-start 0.31.0 → 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.
Files changed (75) hide show
  1. package/dist/Fetch.d.ts +1 -1
  2. package/dist/Fetch.d.ts.map +1 -1
  3. package/dist/Fetch.js +1 -1
  4. package/dist/Fetch.js.map +1 -1
  5. package/dist/Password.d.ts +26 -0
  6. package/dist/Password.d.ts.map +1 -0
  7. package/dist/Password.js +83 -0
  8. package/dist/Password.js.map +1 -0
  9. package/dist/RouteSse.d.ts +1 -2
  10. package/dist/RouteSse.d.ts.map +1 -1
  11. package/dist/RouteSse.js +2 -2
  12. package/dist/RouteSse.js.map +1 -1
  13. package/dist/_StreamExtra.d.ts.map +1 -1
  14. package/dist/_StreamExtra.js +0 -1
  15. package/dist/_StreamExtra.js.map +1 -1
  16. package/dist/studio/Studio.d.ts +1 -1
  17. package/dist/studio/Studio.d.ts.map +1 -1
  18. package/dist/studio/Studio.js +5 -4
  19. package/dist/studio/Studio.js.map +1 -1
  20. package/dist/studio/StudioErrors.d.ts.map +1 -1
  21. package/dist/studio/StudioErrors.js +2 -2
  22. package/dist/studio/StudioErrors.js.map +1 -1
  23. package/dist/studio/StudioLogger.d.ts.map +1 -1
  24. package/dist/studio/StudioLogger.js +1 -3
  25. package/dist/studio/StudioLogger.js.map +1 -1
  26. package/dist/studio/StudioStore.d.ts +23 -17
  27. package/dist/studio/StudioStore.d.ts.map +1 -1
  28. package/dist/studio/StudioStore.js +48 -44
  29. package/dist/studio/StudioStore.js.map +1 -1
  30. package/dist/studio/StudioTracer.d.ts.map +1 -1
  31. package/dist/studio/StudioTracer.js +10 -4
  32. package/dist/studio/StudioTracer.js.map +1 -1
  33. package/dist/studio/routes/errors/route.d.ts +1 -1
  34. package/dist/studio/routes/errors/route.d.ts.map +1 -1
  35. package/dist/studio/routes/errors/route.js +2 -2
  36. package/dist/studio/routes/errors/route.js.map +1 -1
  37. package/dist/studio/routes/fiberDetail.d.ts +1 -1
  38. package/dist/studio/routes/fiberDetail.js +4 -4
  39. package/dist/studio/routes/fiberDetail.js.map +1 -1
  40. package/dist/studio/routes/fibers/route.d.ts +2 -2
  41. package/dist/studio/routes/fibers/route.js +4 -4
  42. package/dist/studio/routes/fibers/route.js.map +1 -1
  43. package/dist/studio/routes/logs/route.d.ts +1 -1
  44. package/dist/studio/routes/logs/route.d.ts.map +1 -1
  45. package/dist/studio/routes/logs/route.js +2 -2
  46. package/dist/studio/routes/logs/route.js.map +1 -1
  47. package/dist/studio/routes/traceDetail.d.ts +1 -1
  48. package/dist/studio/routes/traceDetail.js +1 -1
  49. package/dist/studio/routes/traceDetail.js.map +1 -1
  50. package/dist/studio/routes/traces/route.d.ts +2 -2
  51. package/dist/studio/routes/traces/route.d.ts.map +1 -1
  52. package/dist/studio/routes/traces/route.js +5 -5
  53. package/dist/studio/routes/traces/route.js.map +1 -1
  54. package/dist/studio/routes/tree.d.ts +8 -8
  55. package/dist/studio/ui/Traces.d.ts +1 -0
  56. package/dist/studio/ui/Traces.d.ts.map +1 -1
  57. package/dist/studio/ui/Traces.js +32 -11
  58. package/dist/studio/ui/Traces.js.map +1 -1
  59. package/package.json +1 -1
  60. package/src/Fetch.ts +2 -2
  61. package/src/Password.ts +130 -0
  62. package/src/RouteSse.ts +4 -4
  63. package/src/_StreamExtra.ts +0 -1
  64. package/src/studio/Studio.ts +6 -5
  65. package/src/studio/StudioErrors.ts +2 -3
  66. package/src/studio/StudioLogger.ts +2 -3
  67. package/src/studio/StudioStore.ts +159 -115
  68. package/src/studio/StudioTracer.ts +11 -5
  69. package/src/studio/routes/errors/route.tsx +3 -1
  70. package/src/studio/routes/fiberDetail.tsx +4 -4
  71. package/src/studio/routes/fibers/route.tsx +4 -4
  72. package/src/studio/routes/logs/route.tsx +3 -1
  73. package/src/studio/routes/traceDetail.tsx +1 -1
  74. package/src/studio/routes/traces/route.tsx +9 -6
  75. 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, never>, Route.Route.Route<{
20
+ }, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route.Route<{
21
21
  method: "GET";
22
22
  format: "sse";
23
- }, {}, import("effect/Stream").Stream<string, import("../../sql/SqlClient.ts").SqlError, never>, import("../../sql/SqlClient.ts").SqlError, never>];
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, never>];
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;
@@ -60,7 +60,7 @@ 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, never>, Route.Route.Route<{
63
+ }, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route.Route<{
64
64
  method: "GET";
65
65
  format: "sse";
66
66
  }, {}, import("effect/Stream").Stream<string, never, never>, never, never>];
@@ -72,7 +72,7 @@ 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, never>, Route.Route.Route<{
75
+ }, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route.Route<{
76
76
  method: "GET";
77
77
  format: "sse";
78
78
  }, {}, import("effect/Stream").Stream<string, never, never>, never, never>];
@@ -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, never>, Route.Route.Route<{
87
+ }, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route.Route<{
88
88
  method: "GET";
89
89
  format: "sse";
90
- }, {}, import("effect/Stream").Stream<string, import("../../sql/SqlClient.ts").SqlError, never>, import("../../sql/SqlClient.ts").SqlError, never>];
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, never>];
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;
@@ -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;AAoNhD,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,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;CAAE,0CAoE3E;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"}
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"}
@@ -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
- const sortByStart = (a, b) => Number(a.startTime - b.startTime);
50
- roots.sort(sortByStart);
61
+ roots.sort(sortByStartTime);
51
62
  for (const children of childrenOf.values()) {
52
- children.sort(sortByStart);
63
+ children.sort(sortByStartTime);
53
64
  }
54
65
  const result = [];
55
- function walk(span, depth, isLast, ancestors) {
56
- const children = childrenOf.get(span.spanId) ?? [];
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.find((s) => !s.parentSpanId) ?? options.spans[0];
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.find((s) => !s.parentSpanId) ?? options.spans[0];
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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-start",
3
- "version": "0.31.0",
3
+ "version": "0.32.0",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "src/",
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
- type?: string
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.type = acc.eventType
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]
@@ -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/RouteSse.ts CHANGED
@@ -12,10 +12,9 @@ const HEARTBEAT_INTERVAL = Duration.seconds(5)
12
12
  const HEARTBEAT = ": <3\n\n"
13
13
 
14
14
  interface SseEvent {
15
- readonly [key: string]: unknown
16
15
  readonly _tag?: string
17
16
  readonly data?: string | undefined
18
- readonly type?: string
17
+ readonly event?: string
19
18
  readonly retry?: number
20
19
  }
21
20
 
@@ -26,8 +25,8 @@ function formatSseEvent(event: SseEvent): string {
26
25
  }
27
26
 
28
27
  let result = ""
29
- if (event.type) {
30
- result += `event: ${event.type}\n`
28
+ if (event.event) {
29
+ result += `event: ${event.event}\n`
31
30
  }
32
31
  if (typeof event.data === "string") {
33
32
  for (const line of event.data.split("\n")) {
@@ -48,6 +47,7 @@ type SseHandlerInput<B, E, R> =
48
47
  | Effect.Effect<Stream.Stream<SseEvent, E, R>, E, R>
49
48
  | ((
50
49
  context: Values.Simplify<B>,
50
+ // TODO: typing is super loose here
51
51
  next: (context?: Partial<B> & Record<string, unknown>) => Entity.Entity<string>,
52
52
  ) =>
53
53
  | Stream.Stream<SseEvent, E, R>
@@ -78,7 +78,6 @@ export const toReadableStreamRuntimePatched = Function.dual<
78
78
  ),
79
79
  ),
80
80
  )
81
- // --- CHANGES HERE ---
82
81
  // In original code, we had fiber.addObserver here that called
83
82
  // error() or close() on controller. This patched version removes it.
84
83
  },
@@ -10,16 +10,17 @@ import * as StudioMetrics from "./StudioMetrics.ts"
10
10
  import * as StudioProcess from "./StudioProcess.ts"
11
11
  import * as StudioStore from "./StudioStore.ts"
12
12
  import * as StudioTracer from "./StudioTracer.ts"
13
- import consoleRoutes from "./routes/tree.ts"
13
+ import routes from "./routes/tree.ts"
14
14
 
15
15
  export function layer(
16
16
  options?: StudioStore.StudioStoreOptions & {
17
17
  readonly sqlLayer?: Layer.Layer<SqlClient.SqlClient, SqlClient.SqlError>
18
18
  },
19
- ): Layer.Layer<StudioStore.StudioStore> {
19
+ ): Layer.Layer<StudioStore.StudioStore | SqlClient.SqlClient> {
20
20
  const sqlLayer =
21
21
  options?.sqlLayer ?? sqlBun.layer({ adapter: "sqlite" as const, filename: ":memory:" })
22
- const store = StudioStore.layer(options).pipe(Layer.provide(sqlLayer), Layer.orDie)
22
+ const providedSqlLayer = sqlLayer.pipe(Layer.orDie)
23
+ const store = StudioStore.layer(options).pipe(Layer.provide(providedSqlLayer), Layer.orDie)
23
24
  const features = Layer.mergeAll(
24
25
  StudioTracer.layer,
25
26
  StudioLogger.layer,
@@ -27,7 +28,7 @@ export function layer(
27
28
  StudioErrors.layer,
28
29
  StudioProcess.layer,
29
30
  ).pipe(Layer.provide(store))
30
- return Layer.merge(store, features)
31
+ return Layer.mergeAll(providedSqlLayer, store, features)
31
32
  }
32
33
 
33
34
  export function layerRoutes(options?: { prefix?: string }) {
@@ -39,7 +40,7 @@ export function layerRoutes(options?: { prefix?: string }) {
39
40
  const existing = yield* Route.Routes
40
41
  StudioStore.store.prefix = prefix
41
42
  const tree = Route.tree({
42
- [prefix as "/"]: consoleRoutes,
43
+ [prefix as "/"]: routes,
43
44
  })
44
45
  return RouteTree.merge(existing, tree)
45
46
  }),
@@ -185,7 +185,6 @@ function make(store: StudioStore.StudioStoreShape): Supervisor.Supervisor<void>
185
185
 
186
186
  StudioStore.runWrite(
187
187
  StudioStore.upsertFiber(
188
- store.sql,
189
188
  childId,
190
189
  parentId !== childId ? parentId : undefined,
191
190
  span?._tag === "Span" ? span.name : undefined,
@@ -206,8 +205,8 @@ function make(store: StudioStore.StudioStoreShape): Supervisor.Supervisor<void>
206
205
  }
207
206
  StudioStore.runWrite(
208
207
  Effect.zipRight(
209
- StudioStore.insertError(store.sql, error),
210
- StudioStore.evict(store.sql, "Error", store.errorCapacity),
208
+ StudioStore.insertError(error),
209
+ StudioStore.evict("Error", store.errorCapacity),
211
210
  ),
212
211
  )
213
212
  Effect.runSync(PubSub.publish(store.events, { _tag: "Error", error }))
@@ -9,7 +9,6 @@ import * as StudioStore from "./StudioStore.ts"
9
9
 
10
10
  const studioLogger = Logger.make((options) => {
11
11
  const store = StudioStore.store
12
- if (!store.sql) return
13
12
 
14
13
  try {
15
14
  const levelMap: Record<string, StudioStore.StudioLog["level"]> = {
@@ -41,8 +40,8 @@ const studioLogger = Logger.make((options) => {
41
40
  }
42
41
  StudioStore.runWrite(
43
42
  Effect.zipRight(
44
- StudioStore.insertLog(store.sql, log),
45
- StudioStore.evict(store.sql, "Log", store.logCapacity),
43
+ StudioStore.insertLog(log),
44
+ StudioStore.evict("Log", store.logCapacity),
46
45
  ),
47
46
  )
48
47
  Effect.runSync(PubSub.publish(store.events, { _tag: "Log", log }))