effect-start 0.34.0 → 0.35.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/README.md +303 -36
- package/dist/Fetch.d.ts +1 -1
- package/dist/FileRouter.d.ts +1 -1
- package/dist/FileRouterCodegen.d.ts.map +1 -1
- package/dist/FileRouterCodegen.js +8 -2
- package/dist/FileRouterCodegen.js.map +1 -1
- package/dist/Job.d.ts +94 -0
- package/dist/Job.d.ts.map +1 -0
- package/dist/Job.js +157 -0
- package/dist/Job.js.map +1 -0
- package/dist/Password.d.ts +1 -1
- package/dist/Route.d.ts +20 -15
- package/dist/Route.d.ts.map +1 -1
- package/dist/Route.js +12 -0
- package/dist/Route.js.map +1 -1
- package/dist/RouteBody.d.ts +7 -7
- package/dist/RouteBody.d.ts.map +1 -1
- package/dist/RouteBody.js.map +1 -1
- package/dist/RouteHook.d.ts +1 -1
- package/dist/RouteHook.d.ts.map +1 -1
- package/dist/RouteHook.js.map +1 -1
- package/dist/RouteHttp.d.ts.map +1 -1
- package/dist/RouteHttp.js +10 -4
- package/dist/RouteHttp.js.map +1 -1
- package/dist/RouteLink.d.ts +16 -0
- package/dist/RouteLink.d.ts.map +1 -0
- package/dist/RouteLink.js +23 -0
- package/dist/RouteLink.js.map +1 -0
- package/dist/RouteMount.d.ts +29 -32
- package/dist/RouteMount.d.ts.map +1 -1
- package/dist/RouteMount.js.map +1 -1
- package/dist/RouteSchema.d.ts +81 -28
- package/dist/RouteSchema.d.ts.map +1 -1
- package/dist/RouteSchema.js +56 -101
- package/dist/RouteSchema.js.map +1 -1
- package/dist/RouteSse.d.ts +1 -1
- package/dist/RouteSse.d.ts.map +1 -1
- package/dist/RouteSse.js.map +1 -1
- package/dist/Socket.d.ts +1 -1
- package/dist/Start.js +1 -1
- package/dist/Start.js.map +1 -1
- package/dist/StaticFiles.d.ts +4 -10
- package/dist/StaticFiles.d.ts.map +1 -1
- package/dist/StaticFiles.js +3 -10
- package/dist/StaticFiles.js.map +1 -1
- package/dist/System.d.ts +1 -1
- package/dist/_Docker.d.ts +1 -1
- package/dist/_HtmlScanner.d.ts +42 -0
- package/dist/_HtmlScanner.d.ts.map +1 -0
- package/dist/_HtmlScanner.js +385 -0
- package/dist/_HtmlScanner.js.map +1 -0
- package/dist/_RouteLink.d.ts +16 -0
- package/dist/_RouteLink.d.ts.map +1 -0
- package/dist/_RouteLink.js +22 -0
- package/dist/_RouteLink.js.map +1 -0
- package/dist/bun/BunRoute.d.ts +4 -6
- package/dist/bun/BunRoute.d.ts.map +1 -1
- package/dist/bun/BunRoute.js +1 -1
- package/dist/bun/BunRoute.js.map +1 -1
- package/dist/bundler/Bundle.d.ts +1 -1
- package/dist/bundler/BundleRoute.d.ts +5 -6
- package/dist/bundler/BundleRoute.d.ts.map +1 -1
- package/dist/bundler/BundleRoute.js +5 -11
- package/dist/bundler/BundleRoute.js.map +1 -1
- package/dist/datastar/watchers/patchElements.js +1 -1
- package/dist/datastar/watchers/patchElements.js.map +1 -1
- package/dist/experimental/CsrfProtection.d.ts +67 -0
- package/dist/experimental/CsrfProtection.d.ts.map +1 -0
- package/dist/experimental/CsrfProtection.js +100 -0
- package/dist/experimental/CsrfProtection.js.map +1 -0
- package/dist/experimental/EncryptedCookies.d.ts +1 -1
- package/dist/experimental/KeyValueStore.d.ts +1 -1
- package/dist/lint/plugin.js +4 -0
- package/dist/lint/plugin.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +1 -1
- package/dist/studio/Studio.d.ts +1 -1
- package/dist/studio/Studio.d.ts.map +1 -1
- package/dist/studio/Studio.js +4 -10
- package/dist/studio/Studio.js.map +1 -1
- package/dist/studio/routes/errors/route.d.ts +3 -3
- package/dist/studio/routes/errors/route.d.ts.map +1 -1
- package/dist/studio/routes/errors/route.js +3 -2
- package/dist/studio/routes/errors/route.js.map +1 -1
- package/dist/studio/routes/fiberDetail.d.ts +3 -7
- package/dist/studio/routes/fiberDetail.d.ts.map +1 -1
- package/dist/studio/routes/fibers/route.d.ts +3 -3
- package/dist/studio/routes/layout.d.ts +3 -3
- package/dist/studio/routes/logs/route.d.ts +3 -3
- package/dist/studio/routes/logs/route.d.ts.map +1 -1
- package/dist/studio/routes/logs/route.js +3 -2
- package/dist/studio/routes/logs/route.js.map +1 -1
- package/dist/studio/routes/metrics/route.d.ts +3 -3
- package/dist/studio/routes/route.d.ts +2 -2
- package/dist/studio/routes/routes/route.d.ts +2 -2
- package/dist/studio/routes/services/route.d.ts +2 -2
- package/dist/studio/routes/system/route.d.ts +3 -3
- package/dist/studio/routes/traceDetail.d.ts +3 -7
- package/dist/studio/routes/traceDetail.d.ts.map +1 -1
- package/dist/studio/routes/traces/route.d.ts +3 -3
- package/dist/studio/routes/traces/route.d.ts.map +1 -1
- package/dist/studio/routes/traces/route.js +3 -2
- package/dist/studio/routes/traces/route.js.map +1 -1
- package/dist/studio/routes/tree.d.ts +43 -51
- package/dist/studio/routes/tree.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/FileRouterCodegen.ts +8 -2
- package/src/Route.ts +55 -34
- package/src/RouteBody.ts +15 -15
- package/src/RouteHook.ts +3 -3
- package/src/RouteHttp.ts +10 -4
- package/src/RouteLink.ts +56 -0
- package/src/RouteMount.ts +43 -48
- package/src/RouteSchema.ts +299 -166
- package/src/RouteSse.ts +3 -3
- package/src/Start.ts +1 -1
- package/src/StaticFiles.ts +10 -24
- package/src/_HtmlScanner.ts +415 -0
- package/src/bun/BunRoute.ts +11 -11
- package/src/bundler/BundleRoute.ts +8 -19
- package/src/datastar/watchers/patchElements.ts +1 -1
- package/src/dev.d.ts +3 -0
- package/src/experimental/CsrfProtection.ts +153 -0
- package/src/lint/plugin.js +2 -0
- package/src/studio/Studio.ts +4 -14
- package/src/studio/routes/errors/route.tsx +3 -2
- package/src/studio/routes/logs/route.tsx +3 -2
- package/src/studio/routes/traces/route.tsx +3 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as Stream from "effect/Stream";
|
|
2
2
|
import * as Route from "../../../Route.ts";
|
|
3
|
-
declare const _default:
|
|
3
|
+
declare const _default: import("../../../RouteMount.ts").RouteMount.Builder<{}, [Route.Route<{
|
|
4
4
|
method: "GET";
|
|
5
5
|
format: "html";
|
|
6
|
-
}, {}, string, never, never>, Route.Route
|
|
6
|
+
}, {}, string, never, never>, Route.Route<{
|
|
7
7
|
method: "GET";
|
|
8
8
|
format: "sse";
|
|
9
|
-
}, {}, Stream.Stream<string, never, never>, never, never>]
|
|
9
|
+
}, {}, Stream.Stream<string, never, never>, never, never>]>;
|
|
10
10
|
export default _default;
|
|
11
11
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Route from "../../Route.ts";
|
|
2
|
-
declare const _default:
|
|
2
|
+
declare const _default: import("../../RouteMount.ts").RouteMount.Builder<{}, [Route.Route<{
|
|
3
3
|
method: "GET";
|
|
4
4
|
format: "*";
|
|
5
|
-
}, {}, import("../../RouteBody.ts").RenderValue, never, never>]
|
|
5
|
+
}, {}, import("../../RouteBody.ts").RenderValue, never, never>]>;
|
|
6
6
|
export default _default;
|
|
7
7
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Route from "../../../Route.ts";
|
|
2
|
-
declare const _default:
|
|
2
|
+
declare const _default: import("../../../RouteMount.ts").RouteMount.Builder<{}, [Route.Route<{
|
|
3
3
|
method: "GET";
|
|
4
4
|
format: "html";
|
|
5
|
-
}, {}, string, never, Route.Routes>]
|
|
5
|
+
}, {}, string, never, Route.Routes>]>;
|
|
6
6
|
export default _default;
|
|
7
7
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Route from "../../../Route.ts";
|
|
2
|
-
declare const _default:
|
|
2
|
+
declare const _default: import("../../../RouteMount.ts").RouteMount.Builder<{}, [Route.Route<{
|
|
3
3
|
method: "GET";
|
|
4
4
|
format: "html";
|
|
5
|
-
}, {}, string, never, never>]
|
|
5
|
+
}, {}, string, never, never>]>;
|
|
6
6
|
export default _default;
|
|
7
7
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as Stream from "effect/Stream";
|
|
2
2
|
import * as Route from "../../../Route.ts";
|
|
3
|
-
declare const _default:
|
|
3
|
+
declare const _default: import("../../../RouteMount.ts").RouteMount.Builder<{}, [Route.Route<{
|
|
4
4
|
method: "GET";
|
|
5
5
|
format: "html";
|
|
6
|
-
}, {}, string, never, never>, Route.Route
|
|
6
|
+
}, {}, string, never, never>, Route.Route<{
|
|
7
7
|
method: "GET";
|
|
8
8
|
format: "sse";
|
|
9
|
-
}, {}, Stream.Stream<string, never, never>, never, never>]
|
|
9
|
+
}, {}, Stream.Stream<string, never, never>, never, never>]>;
|
|
10
10
|
export default _default;
|
|
11
11
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
import * as Route from "../../Route.ts";
|
|
2
|
-
declare const _default:
|
|
2
|
+
declare const _default: import("../../RouteMount.ts").RouteMount.Builder<{}, [Route.Route<{
|
|
3
3
|
method: "GET";
|
|
4
4
|
}, {
|
|
5
5
|
pathParams: {
|
|
6
6
|
readonly id: string;
|
|
7
7
|
};
|
|
8
|
-
}, unknown, import("effect/ParseResult").ParseError,
|
|
8
|
+
}, unknown, import("effect/ParseResult").ParseError, Route.Request>, Route.Route<{
|
|
9
9
|
method: "GET";
|
|
10
10
|
format: "html";
|
|
11
|
-
}, {
|
|
12
|
-
pathParams: {
|
|
13
|
-
readonly id: string;
|
|
14
|
-
};
|
|
15
|
-
}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>]>, "use">;
|
|
11
|
+
}, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>]>;
|
|
16
12
|
export default _default;
|
|
17
13
|
//# sourceMappingURL=traceDetail.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traceDetail.d.ts","sourceRoot":"","sources":["../../../src/studio/routes/traceDetail.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA
|
|
1
|
+
{"version":3,"file":"traceDetail.d.ts","sourceRoot":"","sources":["../../../src/studio/routes/traceDetail.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;;;;;;;;;;;AAMvC,wBAqBC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as Stream from "effect/Stream";
|
|
2
2
|
import * as Route from "../../../Route.ts";
|
|
3
|
-
declare const _default:
|
|
3
|
+
declare const _default: import("../../../RouteMount.ts").RouteMount.Builder<{}, [Route.Route<{
|
|
4
4
|
method: "GET";
|
|
5
5
|
format: "html";
|
|
6
|
-
}, {}, string, import("../../../sql/SqlClient.ts").SqlError, import("../../../sql/SqlClient.ts").SqlClient>, Route.Route
|
|
6
|
+
}, {}, string, import("../../../sql/SqlClient.ts").SqlError, Route.Request | import("../../../sql/SqlClient.ts").SqlClient>, Route.Route<{
|
|
7
7
|
method: "GET";
|
|
8
8
|
format: "sse";
|
|
9
|
-
}, {}, Stream.Stream<string, import("../../../sql/SqlClient.ts").SqlError, import("../../../sql/SqlClient.ts").SqlClient>, import("../../../sql/SqlClient.ts").SqlError, import("../../../sql/SqlClient.ts").SqlClient>]
|
|
9
|
+
}, {}, Stream.Stream<string, import("../../../sql/SqlClient.ts").SqlError, import("../../../sql/SqlClient.ts").SqlClient>, import("../../../sql/SqlClient.ts").SqlError, import("../../../sql/SqlClient.ts").SqlClient>]>;
|
|
10
10
|
export default _default;
|
|
11
11
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/studio/routes/traces/route.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAA;;;;;;;;AAQ1C,
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/studio/routes/traces/route.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAA;;;;;;;;AAQ1C,wBAiEC"}
|
|
@@ -7,8 +7,9 @@ import * as StudioStore from "../../StudioStore.js";
|
|
|
7
7
|
import * as Shell from "../../ui/Shell.js";
|
|
8
8
|
import * as Traces from "../../ui/Traces.js";
|
|
9
9
|
const prefix = StudioStore.store.prefix;
|
|
10
|
-
export default Route.get(Route.html(function* (
|
|
11
|
-
const
|
|
10
|
+
export default Route.get(Route.html(function* (_ctx) {
|
|
11
|
+
const request = yield* Route.Request;
|
|
12
|
+
const url = new URL(request.url);
|
|
12
13
|
const search = url.searchParams.get("traceSearch") || "";
|
|
13
14
|
const allSpans = StudioStore.filterOutStudioSpans(yield* StudioStore.allSpans());
|
|
14
15
|
const names = Array.from(new Set(allSpans.map((s) => s.name))).sort();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/studio/routes/traces/route.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAC1C,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAA;AACxC,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,KAAK,MAAM,mBAAoB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,oBAAqB,CAAA;AAE7C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAA;AAEvC,eAAe,KAAK,CAAC,GAAG,CACtB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/studio/routes/traces/route.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,161 +1,153 @@
|
|
|
1
1
|
import * as Route from "../../Route.ts";
|
|
2
2
|
declare const _default: import("../../RouteTree.ts").RouteTree<{
|
|
3
|
-
"/": [Route.Route
|
|
3
|
+
"/": [Route.Route<{
|
|
4
4
|
method: "*";
|
|
5
|
-
}, {}, unknown, never, never>, Route.Route
|
|
5
|
+
}, {}, unknown, never, never>, Route.Route<{
|
|
6
6
|
method: "*";
|
|
7
7
|
bunPrefix: string;
|
|
8
8
|
bunLoad: () => Promise<Bun.HTMLBundle>;
|
|
9
9
|
format: "html";
|
|
10
|
-
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route
|
|
10
|
+
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, Route.Request | import("../../bun/BunServer.ts").BunServer>, Route.Route<{
|
|
11
11
|
method: "GET";
|
|
12
12
|
format: "*";
|
|
13
13
|
}, {}, import("../../RouteBody.ts").RenderValue, never, never>];
|
|
14
|
-
"/traces": [Route.Route
|
|
14
|
+
"/traces": [Route.Route<{
|
|
15
15
|
method: "*";
|
|
16
|
-
}, {}, unknown, never, never>, Route.Route
|
|
16
|
+
}, {}, unknown, never, never>, Route.Route<{
|
|
17
17
|
method: "*";
|
|
18
18
|
bunPrefix: string;
|
|
19
19
|
bunLoad: () => Promise<Bun.HTMLBundle>;
|
|
20
20
|
format: "html";
|
|
21
|
-
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route
|
|
21
|
+
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, Route.Request | import("../../bun/BunServer.ts").BunServer>, Route.Route<{
|
|
22
22
|
method: "GET";
|
|
23
23
|
format: "html";
|
|
24
|
-
}, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route
|
|
24
|
+
}, {}, string, import("../../sql/SqlClient.ts").SqlError, Route.Request | import("../../sql/SqlClient.ts").SqlClient>, Route.Route<{
|
|
25
25
|
method: "GET";
|
|
26
26
|
format: "sse";
|
|
27
27
|
}, {}, 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>];
|
|
28
|
-
"/traces/:id": [Route.Route
|
|
28
|
+
"/traces/:id": [Route.Route<{
|
|
29
29
|
method: "*";
|
|
30
|
-
}, {}, unknown, never, never>, Route.Route
|
|
30
|
+
}, {}, unknown, never, never>, Route.Route<{
|
|
31
31
|
method: "*";
|
|
32
32
|
bunPrefix: string;
|
|
33
33
|
bunLoad: () => Promise<Bun.HTMLBundle>;
|
|
34
34
|
format: "html";
|
|
35
|
-
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route
|
|
35
|
+
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, Route.Request | import("../../bun/BunServer.ts").BunServer>, Route.Route<{
|
|
36
36
|
method: "GET";
|
|
37
37
|
}, {
|
|
38
38
|
pathParams: {
|
|
39
39
|
readonly id: string;
|
|
40
40
|
};
|
|
41
|
-
}, unknown, import("effect/ParseResult").ParseError,
|
|
41
|
+
}, unknown, import("effect/ParseResult").ParseError, Route.Request>, Route.Route<{
|
|
42
42
|
method: "GET";
|
|
43
43
|
format: "html";
|
|
44
|
-
}, {
|
|
45
|
-
|
|
46
|
-
readonly id: string;
|
|
47
|
-
};
|
|
48
|
-
}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>];
|
|
49
|
-
"/metrics": [Route.Route.Route<{
|
|
44
|
+
}, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>];
|
|
45
|
+
"/metrics": [Route.Route<{
|
|
50
46
|
method: "*";
|
|
51
|
-
}, {}, unknown, never, never>, Route.Route
|
|
47
|
+
}, {}, unknown, never, never>, Route.Route<{
|
|
52
48
|
method: "*";
|
|
53
49
|
bunPrefix: string;
|
|
54
50
|
bunLoad: () => Promise<Bun.HTMLBundle>;
|
|
55
51
|
format: "html";
|
|
56
|
-
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route
|
|
52
|
+
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, Route.Request | import("../../bun/BunServer.ts").BunServer>, Route.Route<{
|
|
57
53
|
method: "GET";
|
|
58
54
|
format: "html";
|
|
59
|
-
}, {}, string, never, never>, Route.Route
|
|
55
|
+
}, {}, string, never, never>, Route.Route<{
|
|
60
56
|
method: "GET";
|
|
61
57
|
format: "sse";
|
|
62
58
|
}, {}, import("effect/Stream").Stream<string, never, never>, never, never>];
|
|
63
|
-
"/logs": [Route.Route
|
|
59
|
+
"/logs": [Route.Route<{
|
|
64
60
|
method: "*";
|
|
65
|
-
}, {}, unknown, never, never>, Route.Route
|
|
61
|
+
}, {}, unknown, never, never>, Route.Route<{
|
|
66
62
|
method: "*";
|
|
67
63
|
bunPrefix: string;
|
|
68
64
|
bunLoad: () => Promise<Bun.HTMLBundle>;
|
|
69
65
|
format: "html";
|
|
70
|
-
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route
|
|
66
|
+
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, Route.Request | import("../../bun/BunServer.ts").BunServer>, Route.Route<{
|
|
71
67
|
method: "GET";
|
|
72
68
|
format: "html";
|
|
73
|
-
}, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route
|
|
69
|
+
}, {}, string, import("../../sql/SqlClient.ts").SqlError, Route.Request | import("../../sql/SqlClient.ts").SqlClient>, Route.Route<{
|
|
74
70
|
method: "GET";
|
|
75
71
|
format: "sse";
|
|
76
72
|
}, {}, import("effect/Stream").Stream<string, never, never>, never, never>];
|
|
77
|
-
"/errors": [Route.Route
|
|
73
|
+
"/errors": [Route.Route<{
|
|
78
74
|
method: "*";
|
|
79
|
-
}, {}, unknown, never, never>, Route.Route
|
|
75
|
+
}, {}, unknown, never, never>, Route.Route<{
|
|
80
76
|
method: "*";
|
|
81
77
|
bunPrefix: string;
|
|
82
78
|
bunLoad: () => Promise<Bun.HTMLBundle>;
|
|
83
79
|
format: "html";
|
|
84
|
-
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route
|
|
80
|
+
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, Route.Request | import("../../bun/BunServer.ts").BunServer>, Route.Route<{
|
|
85
81
|
method: "GET";
|
|
86
82
|
format: "html";
|
|
87
|
-
}, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route
|
|
83
|
+
}, {}, string, import("../../sql/SqlClient.ts").SqlError, Route.Request | import("../../sql/SqlClient.ts").SqlClient>, Route.Route<{
|
|
88
84
|
method: "GET";
|
|
89
85
|
format: "sse";
|
|
90
86
|
}, {}, import("effect/Stream").Stream<string, never, never>, never, never>];
|
|
91
|
-
"/fibers": [Route.Route
|
|
87
|
+
"/fibers": [Route.Route<{
|
|
92
88
|
method: "*";
|
|
93
|
-
}, {}, unknown, never, never>, Route.Route
|
|
89
|
+
}, {}, unknown, never, never>, Route.Route<{
|
|
94
90
|
method: "*";
|
|
95
91
|
bunPrefix: string;
|
|
96
92
|
bunLoad: () => Promise<Bun.HTMLBundle>;
|
|
97
93
|
format: "html";
|
|
98
|
-
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route
|
|
94
|
+
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, Route.Request | import("../../bun/BunServer.ts").BunServer>, Route.Route<{
|
|
99
95
|
method: "GET";
|
|
100
96
|
format: "html";
|
|
101
|
-
}, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route
|
|
97
|
+
}, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>, Route.Route<{
|
|
102
98
|
method: "GET";
|
|
103
99
|
format: "sse";
|
|
104
100
|
}, {}, 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>];
|
|
105
|
-
"/fibers/:id": [Route.Route
|
|
101
|
+
"/fibers/:id": [Route.Route<{
|
|
106
102
|
method: "*";
|
|
107
|
-
}, {}, unknown, never, never>, Route.Route
|
|
103
|
+
}, {}, unknown, never, never>, Route.Route<{
|
|
108
104
|
method: "*";
|
|
109
105
|
bunPrefix: string;
|
|
110
106
|
bunLoad: () => Promise<Bun.HTMLBundle>;
|
|
111
107
|
format: "html";
|
|
112
|
-
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route
|
|
108
|
+
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, Route.Request | import("../../bun/BunServer.ts").BunServer>, Route.Route<{
|
|
113
109
|
method: "GET";
|
|
114
110
|
}, {
|
|
115
111
|
pathParams: {
|
|
116
112
|
readonly id: string;
|
|
117
113
|
};
|
|
118
|
-
}, unknown, import("effect/ParseResult").ParseError,
|
|
114
|
+
}, unknown, import("effect/ParseResult").ParseError, Route.Request>, Route.Route<{
|
|
119
115
|
method: "GET";
|
|
120
116
|
format: "html";
|
|
121
|
-
}, {
|
|
122
|
-
|
|
123
|
-
readonly id: string;
|
|
124
|
-
};
|
|
125
|
-
}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>];
|
|
126
|
-
"/routes": [Route.Route.Route<{
|
|
117
|
+
}, {}, string, import("../../sql/SqlClient.ts").SqlError, import("../../sql/SqlClient.ts").SqlClient>];
|
|
118
|
+
"/routes": [Route.Route<{
|
|
127
119
|
method: "*";
|
|
128
|
-
}, {}, unknown, never, never>, Route.Route
|
|
120
|
+
}, {}, unknown, never, never>, Route.Route<{
|
|
129
121
|
method: "*";
|
|
130
122
|
bunPrefix: string;
|
|
131
123
|
bunLoad: () => Promise<Bun.HTMLBundle>;
|
|
132
124
|
format: "html";
|
|
133
|
-
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route
|
|
125
|
+
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, Route.Request | import("../../bun/BunServer.ts").BunServer>, Route.Route<{
|
|
134
126
|
method: "GET";
|
|
135
127
|
format: "html";
|
|
136
128
|
}, {}, string, never, Route.Routes>];
|
|
137
|
-
"/system": [Route.Route
|
|
129
|
+
"/system": [Route.Route<{
|
|
138
130
|
method: "*";
|
|
139
|
-
}, {}, unknown, never, never>, Route.Route
|
|
131
|
+
}, {}, unknown, never, never>, Route.Route<{
|
|
140
132
|
method: "*";
|
|
141
133
|
bunPrefix: string;
|
|
142
134
|
bunLoad: () => Promise<Bun.HTMLBundle>;
|
|
143
135
|
format: "html";
|
|
144
|
-
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route
|
|
136
|
+
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, Route.Request | import("../../bun/BunServer.ts").BunServer>, Route.Route<{
|
|
145
137
|
method: "GET";
|
|
146
138
|
format: "html";
|
|
147
|
-
}, {}, string, never, never>, Route.Route
|
|
139
|
+
}, {}, string, never, never>, Route.Route<{
|
|
148
140
|
method: "GET";
|
|
149
141
|
format: "sse";
|
|
150
142
|
}, {}, import("effect/Stream").Stream<string, never, never>, never, never>];
|
|
151
|
-
"/services": [Route.Route
|
|
143
|
+
"/services": [Route.Route<{
|
|
152
144
|
method: "*";
|
|
153
|
-
}, {}, unknown, never, never>, Route.Route
|
|
145
|
+
}, {}, unknown, never, never>, Route.Route<{
|
|
154
146
|
method: "*";
|
|
155
147
|
bunPrefix: string;
|
|
156
148
|
bunLoad: () => Promise<Bun.HTMLBundle>;
|
|
157
149
|
format: "html";
|
|
158
|
-
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, import("../../bun/BunServer.ts").BunServer>, Route.Route
|
|
150
|
+
}, {}, string, import("../../bun/BunRoute.ts").BunRouteError, Route.Request | import("../../bun/BunServer.ts").BunServer>, Route.Route<{
|
|
159
151
|
method: "GET";
|
|
160
152
|
format: "html";
|
|
161
153
|
}, {}, string, never, never>];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/studio/routes/tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/studio/routes/tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcvC,wBAaE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect-start",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.35.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"src/",
|
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"bun": "./src/Unique.ts",
|
|
119
119
|
"default": "./dist/Unique.js"
|
|
120
120
|
},
|
|
121
|
+
"./dev": "./src/dev.d.ts",
|
|
121
122
|
"./_*": null,
|
|
122
123
|
"./assets.d.ts": "./src/assets.d.ts",
|
|
123
124
|
"./jsx-runtime": {
|
|
@@ -205,11 +206,11 @@
|
|
|
205
206
|
"postgres": "^3.4.8",
|
|
206
207
|
"tailwindcss": "^4.1.18",
|
|
207
208
|
"ts-morph": "^27.0.2",
|
|
208
|
-
"typescript": "^
|
|
209
|
+
"typescript": "^6.0.2"
|
|
209
210
|
},
|
|
210
211
|
"peerDependencies": {
|
|
211
212
|
"@libsql/client": ">=0.17.0",
|
|
212
|
-
"effect": "^3.
|
|
213
|
+
"effect": "^3.21.0",
|
|
213
214
|
"mssql": ">=12.2.0"
|
|
214
215
|
},
|
|
215
216
|
"peerDependenciesMeta": {
|
package/src/FileRouterCodegen.ts
CHANGED
|
@@ -159,12 +159,18 @@ export function generateCode(fileRoutes: FileRouter.OrderedFileRoutes): string |
|
|
|
159
159
|
.join(",\n")
|
|
160
160
|
|
|
161
161
|
return `/**
|
|
162
|
-
*
|
|
162
|
+
* Generated by effect-start. DO NOT EDIT.
|
|
163
163
|
*/
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
const routes = {
|
|
166
166
|
${routeEntries},
|
|
167
167
|
} satisfies import("effect-start/FileRouter").FileRoutes
|
|
168
|
+
|
|
169
|
+
export default routes
|
|
170
|
+
|
|
171
|
+
declare module "effect-start/dev" {
|
|
172
|
+
export interface Routes extends Omit<typeof import("./.server.ts").default, never> {}
|
|
173
|
+
}
|
|
168
174
|
`
|
|
169
175
|
}
|
|
170
176
|
|
package/src/Route.ts
CHANGED
|
@@ -27,16 +27,16 @@ export namespace RouteDescriptor {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
export
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
Iterable<M[number]>
|
|
30
|
+
export type RouteSet<
|
|
31
|
+
D extends RouteDescriptor.Any = {},
|
|
32
|
+
B = {},
|
|
33
|
+
M extends Route.Tuple = [],
|
|
34
|
+
> = RouteSet.Data<D, B, M> & {
|
|
35
|
+
[TypeId]: typeof TypeId
|
|
36
|
+
} & Pipeable.Pipeable &
|
|
37
|
+
Iterable<M[number]>
|
|
39
38
|
|
|
39
|
+
export namespace RouteSet {
|
|
40
40
|
export type Data<D extends RouteDescriptor.Any = {}, B = {}, M extends Route.Tuple = []> = {
|
|
41
41
|
[RouteItems]: M
|
|
42
42
|
[RouteDescriptor]: D
|
|
@@ -44,7 +44,7 @@ export namespace RouteSet {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
export type Proto = Pipeable.Pipeable &
|
|
47
|
-
Iterable<Route
|
|
47
|
+
Iterable<Route<any, any, any, any, any>> & {
|
|
48
48
|
[TypeId]: typeof TypeId
|
|
49
49
|
}
|
|
50
50
|
|
|
@@ -58,17 +58,17 @@ export namespace RouteSet {
|
|
|
58
58
|
T extends Data<infer D, any, any> ? D : never
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
export
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
61
|
+
export interface Route<
|
|
62
|
+
D extends RouteDescriptor.Any = {},
|
|
63
|
+
B = {},
|
|
64
|
+
A = any,
|
|
65
|
+
E = never,
|
|
66
|
+
R = never,
|
|
67
|
+
> extends RouteSet<D, {}, [Route<D, B, A, E, R>]> {
|
|
68
|
+
readonly handler: Route.Handler<B & D, A, E, R>
|
|
69
|
+
}
|
|
71
70
|
|
|
71
|
+
export namespace Route {
|
|
72
72
|
export type With<D extends RouteDescriptor.Any> = Route<any, any, any, any, any> & {
|
|
73
73
|
[RouteDescriptor]: D
|
|
74
74
|
}
|
|
@@ -125,26 +125,26 @@ export function isRouteSet(input: unknown): input is RouteSet.Any {
|
|
|
125
125
|
return Predicate.hasProperty(input, TypeId)
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
export function isRoute(input: unknown): input is Route
|
|
128
|
+
export function isRoute(input: unknown): input is Route {
|
|
129
129
|
return isRouteSet(input) && Predicate.hasProperty(input, "handler")
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
export function set<D extends RouteDescriptor.Any = {}, B = {}, I extends Route.Tuple = []>(
|
|
133
133
|
items: I = [] as unknown as I,
|
|
134
134
|
descriptor: D = {} as D,
|
|
135
|
-
): RouteSet
|
|
135
|
+
): RouteSet<D, B, I> {
|
|
136
136
|
return Object.assign(Object.create(Proto), {
|
|
137
137
|
[RouteItems]: items,
|
|
138
138
|
[RouteDescriptor]: descriptor,
|
|
139
|
-
}) as RouteSet
|
|
139
|
+
}) as RouteSet<D, B, I>
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
export function make<D extends RouteDescriptor.Any, B, A, E = never, R = never>(
|
|
143
143
|
handler: Route.Handler<B & D, A, E, R>,
|
|
144
144
|
descriptor?: D,
|
|
145
|
-
): Route
|
|
145
|
+
): Route<D, B, A, E, R> {
|
|
146
146
|
const items: any = []
|
|
147
|
-
const route: Route
|
|
147
|
+
const route: Route<D, B, A, E, R> = Object.assign(Object.create(Proto), {
|
|
148
148
|
[RouteItems]: items,
|
|
149
149
|
[RouteDescriptor]: descriptor,
|
|
150
150
|
handler,
|
|
@@ -185,7 +185,7 @@ export type ExtractBindings<M extends Route.Tuple> = M extends [
|
|
|
185
185
|
infer Head,
|
|
186
186
|
...infer Tail extends Route.Tuple,
|
|
187
187
|
]
|
|
188
|
-
? Head extends Route
|
|
188
|
+
? Head extends Route<any, infer B, any, any, any>
|
|
189
189
|
? ShallowMerge<B, ExtractBindings<Tail>>
|
|
190
190
|
: ExtractBindings<Tail>
|
|
191
191
|
: {}
|
|
@@ -206,6 +206,11 @@ export * from "./RouteSchema.ts"
|
|
|
206
206
|
|
|
207
207
|
export { del, get, head, options, patch, post, put, use } from "./RouteMount.ts"
|
|
208
208
|
|
|
209
|
+
export class Request extends Context.Tag("effect-start/Route/Request")<
|
|
210
|
+
Request,
|
|
211
|
+
globalThis.Request
|
|
212
|
+
>() {}
|
|
213
|
+
|
|
209
214
|
export const text = RouteBody.build<string, "text">({
|
|
210
215
|
format: "text",
|
|
211
216
|
})
|
|
@@ -229,8 +234,8 @@ export function redirect<D extends RouteDescriptor.Any, B, I extends Route.Tuple
|
|
|
229
234
|
url: string | URL,
|
|
230
235
|
options?: { status?: 301 | 302 | 303 | 307 | 308 },
|
|
231
236
|
): (
|
|
232
|
-
self: RouteSet
|
|
233
|
-
) => RouteSet
|
|
237
|
+
self: RouteSet<D, B, I>,
|
|
238
|
+
) => RouteSet<D, B, [...I, Route<{}, {}, "", never, never>]> {
|
|
234
239
|
const route = make<{}, {}, "">(() =>
|
|
235
240
|
Effect.succeed(
|
|
236
241
|
Entity.make("", {
|
|
@@ -243,7 +248,7 @@ export function redirect<D extends RouteDescriptor.Any, B, I extends Route.Tuple
|
|
|
243
248
|
)
|
|
244
249
|
|
|
245
250
|
return (self) =>
|
|
246
|
-
set<D, B, [...I, Route
|
|
251
|
+
set<D, B, [...I, Route<{}, {}, "", never, never>]>(
|
|
247
252
|
[...items(self), route],
|
|
248
253
|
descriptor(self),
|
|
249
254
|
)
|
|
@@ -255,6 +260,20 @@ export function layer(routes: RouteTree.RouteMap | RouteTree.RouteTree) {
|
|
|
255
260
|
return Layer.sync(Routes, () => (RouteTree.isRouteTree(routes) ? routes : RouteTree.make(routes)))
|
|
256
261
|
}
|
|
257
262
|
|
|
263
|
+
export function layerMerge(routes: RouteTree.InputRouteMap | RouteTree.RouteTree) {
|
|
264
|
+
return Layer.effect(
|
|
265
|
+
Routes,
|
|
266
|
+
Effect.gen(function* () {
|
|
267
|
+
const existing = yield* Effect.serviceOption(Routes).pipe(
|
|
268
|
+
Effect.andThen(Option.getOrUndefined),
|
|
269
|
+
)
|
|
270
|
+
const tree = RouteTree.isRouteTree(routes) ? routes : RouteTree.make(routes)
|
|
271
|
+
if (!existing) return tree
|
|
272
|
+
return RouteTree.merge(existing, tree)
|
|
273
|
+
}),
|
|
274
|
+
)
|
|
275
|
+
}
|
|
276
|
+
|
|
258
277
|
/**
|
|
259
278
|
* Creates a route that short-curcits in development.
|
|
260
279
|
*
|
|
@@ -262,9 +281,9 @@ export function layer(routes: RouteTree.RouteMap | RouteTree.RouteTree) {
|
|
|
262
281
|
* we exclude them altogeteher in development.
|
|
263
282
|
*/
|
|
264
283
|
export function devOnly<D extends RouteDescriptor.Any, B, I extends Route.Tuple>(
|
|
265
|
-
self: RouteSet
|
|
266
|
-
): RouteSet
|
|
267
|
-
const route: Route
|
|
284
|
+
self: RouteSet<D, B, I>,
|
|
285
|
+
): RouteSet<D, B, [...I, Route<{ dev: true }, { dev: true }, unknown, any, any>]> {
|
|
286
|
+
const route: Route<{ dev: true }, { dev: true }, unknown, any, any> = make<
|
|
268
287
|
{ dev: true },
|
|
269
288
|
{ dev: true },
|
|
270
289
|
unknown,
|
|
@@ -280,12 +299,12 @@ export function devOnly<D extends RouteDescriptor.Any, B, I extends Route.Tuple>
|
|
|
280
299
|
{ dev: true },
|
|
281
300
|
)
|
|
282
301
|
|
|
283
|
-
const nextItems: [...I, Route
|
|
302
|
+
const nextItems: [...I, Route<{ dev: true }, { dev: true }, unknown, any, any>] = [
|
|
284
303
|
...items(self),
|
|
285
304
|
route,
|
|
286
305
|
]
|
|
287
306
|
|
|
288
|
-
return set<D, B, [...I, Route
|
|
307
|
+
return set<D, B, [...I, Route<{ dev: true }, { dev: true }, unknown, any, any>]>(
|
|
289
308
|
nextItems,
|
|
290
309
|
descriptor(self),
|
|
291
310
|
)
|
|
@@ -309,3 +328,5 @@ export function lazy<T extends RouteSet.Any>(
|
|
|
309
328
|
)
|
|
310
329
|
})
|
|
311
330
|
}
|
|
331
|
+
|
|
332
|
+
export { link } from "./RouteLink.ts"
|