@textjs/app 0.0.0-stage → 1.0.3
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 +34 -2
- package/bin/text.js +29 -0
- package/bin/text.ts +13 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/cli/build.d.ts +39 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +157 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/config.d.ts +22 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +73 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/dev.d.ts +12 -0
- package/dist/cli/dev.d.ts.map +1 -0
- package/dist/cli/dev.js +49 -0
- package/dist/cli/dev.js.map +1 -0
- package/dist/cli/index.d.ts +26 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +192 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/run.d.ts +31 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +111 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/start.d.ts +14 -0
- package/dist/cli/start.d.ts.map +1 -0
- package/dist/cli/start.js +183 -0
- package/dist/cli/start.js.map +1 -0
- package/dist/cli/ui.d.ts +35 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +73 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/client.d.ts +34 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +93 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +143 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +28 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +44 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +26 -0
- package/dist/context.js.map +1 -0
- package/dist/dev-errors.d.ts +68 -0
- package/dist/dev-errors.d.ts.map +1 -0
- package/dist/dev-errors.js +121 -0
- package/dist/dev-errors.js.map +1 -0
- package/dist/devtools.d.ts +64 -0
- package/dist/devtools.d.ts.map +1 -0
- package/dist/devtools.js +186 -0
- package/dist/devtools.js.map +1 -0
- package/dist/frame-mirror.d.ts +19 -0
- package/dist/frame-mirror.d.ts.map +1 -0
- package/dist/frame-mirror.js +141 -0
- package/dist/frame-mirror.js.map +1 -0
- package/dist/frame-protocol.d.ts +175 -0
- package/dist/frame-protocol.d.ts.map +1 -0
- package/dist/frame-protocol.js +369 -0
- package/dist/frame-protocol.js.map +1 -0
- package/dist/history.d.ts +54 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +152 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/link.d.ts +32 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +54 -0
- package/dist/link.js.map +1 -0
- package/dist/live-player.d.ts +83 -0
- package/dist/live-player.d.ts.map +1 -0
- package/dist/live-player.js +413 -0
- package/dist/live-player.js.map +1 -0
- package/dist/live-protocol.d.ts +132 -0
- package/dist/live-protocol.d.ts.map +1 -0
- package/dist/live-protocol.js +278 -0
- package/dist/live-protocol.js.map +1 -0
- package/dist/live-stub.d.ts +10 -0
- package/dist/live-stub.d.ts.map +1 -0
- package/dist/live-stub.js +32 -0
- package/dist/live-stub.js.map +1 -0
- package/dist/mcp/cli.d.ts +22 -0
- package/dist/mcp/cli.d.ts.map +1 -0
- package/dist/mcp/cli.js +177 -0
- package/dist/mcp/cli.js.map +1 -0
- package/dist/mcp/frame.d.ts +58 -0
- package/dist/mcp/frame.d.ts.map +1 -0
- package/dist/mcp/frame.js +169 -0
- package/dist/mcp/frame.js.map +1 -0
- package/dist/mcp/index.d.ts +15 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +15 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/inspect.d.ts +95 -0
- package/dist/mcp/inspect.d.ts.map +1 -0
- package/dist/mcp/inspect.js +386 -0
- package/dist/mcp/inspect.js.map +1 -0
- package/dist/mcp/keys.d.ts +20 -0
- package/dist/mcp/keys.d.ts.map +1 -0
- package/dist/mcp/keys.js +87 -0
- package/dist/mcp/keys.js.map +1 -0
- package/dist/mcp/logs.d.ts +63 -0
- package/dist/mcp/logs.d.ts.map +1 -0
- package/dist/mcp/logs.js +217 -0
- package/dist/mcp/logs.js.map +1 -0
- package/dist/mcp/server.d.ts +64 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +485 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/session.d.ts +230 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +742 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/navigation-errors.d.ts +28 -0
- package/dist/navigation-errors.d.ts.map +1 -0
- package/dist/navigation-errors.js +43 -0
- package/dist/navigation-errors.js.map +1 -0
- package/dist/navigation.d.ts +21 -0
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +33 -0
- package/dist/navigation.js.map +1 -0
- package/dist/router.d.ts +76 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +296 -0
- package/dist/router.js.map +1 -0
- package/dist/routing.d.ts +101 -0
- package/dist/routing.d.ts.map +1 -0
- package/dist/routing.js +286 -0
- package/dist/routing.js.map +1 -0
- package/dist/server/adapters/build-step.d.ts +34 -0
- package/dist/server/adapters/build-step.d.ts.map +1 -0
- package/dist/server/adapters/build-step.js +112 -0
- package/dist/server/adapters/build-step.js.map +1 -0
- package/dist/server/adapters/bun.d.ts +8 -0
- package/dist/server/adapters/bun.d.ts.map +1 -0
- package/dist/server/adapters/bun.js +89 -0
- package/dist/server/adapters/bun.js.map +1 -0
- package/dist/server/adapters/bundle.d.ts +21 -0
- package/dist/server/adapters/bundle.d.ts.map +1 -0
- package/dist/server/adapters/bundle.js +86 -0
- package/dist/server/adapters/bundle.js.map +1 -0
- package/dist/server/adapters/cloudflare.d.ts +29 -0
- package/dist/server/adapters/cloudflare.d.ts.map +1 -0
- package/dist/server/adapters/cloudflare.js +105 -0
- package/dist/server/adapters/cloudflare.js.map +1 -0
- package/dist/server/adapters/index.d.ts +10 -0
- package/dist/server/adapters/index.d.ts.map +1 -0
- package/dist/server/adapters/index.js +24 -0
- package/dist/server/adapters/index.js.map +1 -0
- package/dist/server/adapters/runtime-node.d.ts +16 -0
- package/dist/server/adapters/runtime-node.d.ts.map +1 -0
- package/dist/server/adapters/runtime-node.js +29 -0
- package/dist/server/adapters/runtime-node.js.map +1 -0
- package/dist/server/adapters/runtime.d.ts +42 -0
- package/dist/server/adapters/runtime.d.ts.map +1 -0
- package/dist/server/adapters/runtime.js +115 -0
- package/dist/server/adapters/runtime.js.map +1 -0
- package/dist/server/adapters/shared.d.ts +66 -0
- package/dist/server/adapters/shared.d.ts.map +1 -0
- package/dist/server/adapters/shared.js +124 -0
- package/dist/server/adapters/shared.js.map +1 -0
- package/dist/server/adapters/static.d.ts +9 -0
- package/dist/server/adapters/static.d.ts.map +1 -0
- package/dist/server/adapters/static.js +70 -0
- package/dist/server/adapters/static.js.map +1 -0
- package/dist/server/adapters/vercel.d.ts +43 -0
- package/dist/server/adapters/vercel.d.ts.map +1 -0
- package/dist/server/adapters/vercel.js +119 -0
- package/dist/server/adapters/vercel.js.map +1 -0
- package/dist/server/bun-jsx.d.ts +18 -0
- package/dist/server/bun-jsx.d.ts.map +1 -0
- package/dist/server/bun-jsx.js +56 -0
- package/dist/server/bun-jsx.js.map +1 -0
- package/dist/server/cache-route.d.ts +38 -0
- package/dist/server/cache-route.d.ts.map +1 -0
- package/dist/server/cache-route.js +109 -0
- package/dist/server/cache-route.js.map +1 -0
- package/dist/server/cache.d.ts +131 -0
- package/dist/server/cache.d.ts.map +1 -0
- package/dist/server/cache.js +409 -0
- package/dist/server/cache.js.map +1 -0
- package/dist/server/frames.d.ts +45 -0
- package/dist/server/frames.d.ts.map +1 -0
- package/dist/server/frames.js +294 -0
- package/dist/server/frames.js.map +1 -0
- package/dist/server/http.d.ts +80 -0
- package/dist/server/http.d.ts.map +1 -0
- package/dist/server/http.js +453 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/jsx-dev-runtime.d.ts +5 -0
- package/dist/server/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/server/jsx-dev-runtime.js +6 -0
- package/dist/server/jsx-dev-runtime.js.map +1 -0
- package/dist/server/jsx-runtime.d.ts +10 -0
- package/dist/server/jsx-runtime.d.ts.map +1 -0
- package/dist/server/jsx-runtime.js +11 -0
- package/dist/server/jsx-runtime.js.map +1 -0
- package/dist/server/live-app.d.ts +87 -0
- package/dist/server/live-app.d.ts.map +1 -0
- package/dist/server/live-app.js +307 -0
- package/dist/server/live-app.js.map +1 -0
- package/dist/server/live-build.d.ts +70 -0
- package/dist/server/live-build.d.ts.map +1 -0
- package/dist/server/live-build.js +222 -0
- package/dist/server/live-build.js.map +1 -0
- package/dist/server/live-dev.d.ts +62 -0
- package/dist/server/live-dev.d.ts.map +1 -0
- package/dist/server/live-dev.js +313 -0
- package/dist/server/live-dev.js.map +1 -0
- package/dist/server/live-manifest.d.ts +23 -0
- package/dist/server/live-manifest.d.ts.map +1 -0
- package/dist/server/live-manifest.js +7 -0
- package/dist/server/live-manifest.js.map +1 -0
- package/dist/server/live-prod.d.ts +30 -0
- package/dist/server/live-prod.d.ts.map +1 -0
- package/dist/server/live-prod.js +97 -0
- package/dist/server/live-prod.js.map +1 -0
- package/dist/server/live-routes.d.ts +72 -0
- package/dist/server/live-routes.d.ts.map +1 -0
- package/dist/server/live-routes.js +274 -0
- package/dist/server/live-routes.js.map +1 -0
- package/dist/server/live-web.d.ts +16 -0
- package/dist/server/live-web.d.ts.map +1 -0
- package/dist/server/live-web.js +159 -0
- package/dist/server/live-web.js.map +1 -0
- package/dist/server/live.d.ts +138 -0
- package/dist/server/live.d.ts.map +1 -0
- package/dist/server/live.js +542 -0
- package/dist/server/live.js.map +1 -0
- package/dist/server/middleware-node.d.ts +48 -0
- package/dist/server/middleware-node.d.ts.map +1 -0
- package/dist/server/middleware-node.js +167 -0
- package/dist/server/middleware-node.js.map +1 -0
- package/dist/server/middleware-runtime.d.ts +97 -0
- package/dist/server/middleware-runtime.d.ts.map +1 -0
- package/dist/server/middleware-runtime.js +447 -0
- package/dist/server/middleware-runtime.js.map +1 -0
- package/dist/server/middleware.d.ts +145 -0
- package/dist/server/middleware.d.ts.map +1 -0
- package/dist/server/middleware.js +365 -0
- package/dist/server/middleware.js.map +1 -0
- package/dist/server/ppr.d.ts +22 -0
- package/dist/server/ppr.d.ts.map +1 -0
- package/dist/server/ppr.js +58 -0
- package/dist/server/ppr.js.map +1 -0
- package/dist/server/scan.d.ts +48 -0
- package/dist/server/scan.d.ts.map +1 -0
- package/dist/server/scan.js +161 -0
- package/dist/server/scan.js.map +1 -0
- package/dist/server/server-components.d.ts +65 -0
- package/dist/server/server-components.d.ts.map +1 -0
- package/dist/server/server-components.js +215 -0
- package/dist/server/server-components.js.map +1 -0
- package/dist/terminal.d.ts +5 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/terminal.js +5 -0
- package/dist/terminal.js.map +1 -0
- package/dist/testing.d.ts +5 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +5 -0
- package/dist/testing.js.map +1 -0
- package/dist/vite-plugin.d.ts +51 -0
- package/dist/vite-plugin.d.ts.map +1 -0
- package/dist/vite-plugin.js +403 -0
- package/dist/vite-plugin.js.map +1 -0
- package/package.json +130 -4
- package/src/cli/build.ts +182 -0
- package/src/cli/config.ts +72 -0
- package/src/cli/dev.ts +54 -0
- package/src/cli/index.ts +185 -0
- package/src/cli/run.ts +124 -0
- package/src/cli/start.ts +194 -0
- package/src/cli/ui.ts +93 -0
- package/src/client.tsx +122 -0
- package/src/config.ts +155 -0
- package/src/context.ts +69 -0
- package/src/dev-errors.ts +167 -0
- package/src/devtools.tsx +419 -0
- package/src/frame-mirror.ts +145 -0
- package/src/frame-protocol.ts +435 -0
- package/src/history.ts +201 -0
- package/src/index.ts +9 -0
- package/src/link.tsx +108 -0
- package/src/live-player.ts +449 -0
- package/src/live-protocol.ts +317 -0
- package/src/live-stub.tsx +32 -0
- package/src/mcp/cli.ts +188 -0
- package/src/mcp/frame.ts +224 -0
- package/src/mcp/index.ts +15 -0
- package/src/mcp/inspect.ts +445 -0
- package/src/mcp/keys.ts +86 -0
- package/src/mcp/logs.ts +225 -0
- package/src/mcp/server.ts +595 -0
- package/src/mcp/session.ts +821 -0
- package/src/navigation-errors.ts +60 -0
- package/src/navigation.ts +44 -0
- package/src/router.tsx +497 -0
- package/src/routing.ts +344 -0
- package/src/server/adapters/build-step.ts +135 -0
- package/src/server/adapters/bun.ts +92 -0
- package/src/server/adapters/bundle.ts +97 -0
- package/src/server/adapters/cloudflare.ts +111 -0
- package/src/server/adapters/index.ts +29 -0
- package/src/server/adapters/runtime-node.ts +34 -0
- package/src/server/adapters/runtime.ts +145 -0
- package/src/server/adapters/shared.ts +159 -0
- package/src/server/adapters/static.ts +68 -0
- package/src/server/adapters/vercel.ts +149 -0
- package/src/server/bun-jsx.ts +65 -0
- package/src/server/cache-route.ts +139 -0
- package/src/server/cache.ts +498 -0
- package/src/server/frames.ts +326 -0
- package/src/server/http.ts +467 -0
- package/src/server/jsx-dev-runtime.ts +9 -0
- package/src/server/jsx-runtime.ts +13 -0
- package/src/server/live-app.tsx +374 -0
- package/src/server/live-build.ts +258 -0
- package/src/server/live-dev.ts +357 -0
- package/src/server/live-manifest.ts +25 -0
- package/src/server/live-prod.ts +120 -0
- package/src/server/live-routes.ts +298 -0
- package/src/server/live-web.ts +170 -0
- package/src/server/live.ts +551 -0
- package/src/server/middleware-node.ts +168 -0
- package/src/server/middleware-runtime.ts +478 -0
- package/src/server/middleware.ts +451 -0
- package/src/server/ppr.ts +62 -0
- package/src/server/scan.ts +190 -0
- package/src/server/server-components.ts +224 -0
- package/src/terminal.ts +5 -0
- package/src/testing.ts +5 -0
- package/src/vite-plugin.ts +413 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure App Router matching: route manifests, segment ranking, params,
|
|
3
|
+
* not-found resolution and metadata. Shared by the browser router, the Vite
|
|
4
|
+
* plugin and the `text build` route summary.
|
|
5
|
+
*/
|
|
6
|
+
import type { ComponentType } from "react";
|
|
7
|
+
import type { Metadata } from "./config.js";
|
|
8
|
+
export type RouteParams = Record<string, string | string[]>;
|
|
9
|
+
export type SearchParamsRecord = Record<string, string | string[]>;
|
|
10
|
+
export interface RouteModule {
|
|
11
|
+
default?: ComponentType<any>;
|
|
12
|
+
metadata?: Metadata;
|
|
13
|
+
generateMetadata?: (props: {
|
|
14
|
+
params: RouteParams;
|
|
15
|
+
searchParams: SearchParamsRecord;
|
|
16
|
+
}) => Metadata;
|
|
17
|
+
/** `"force-dynamic"` marks a route `ƒ Dynamic` even without dynamic segments. */
|
|
18
|
+
dynamic?: "auto" | "force-static" | "force-dynamic";
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
export type LazyRouteModule = () => Promise<RouteModule>;
|
|
22
|
+
export type RouteModuleRef = RouteModule | LazyRouteModule;
|
|
23
|
+
export declare const ROUTE_FILE_KINDS: readonly ["layout", "page", "loading", "error", "not-found"];
|
|
24
|
+
export type RouteFileKind = (typeof ROUTE_FILE_KINDS)[number];
|
|
25
|
+
/** One directory of the `app/` tree. */
|
|
26
|
+
export interface RouteSegmentNode {
|
|
27
|
+
/** Directory name: `""` (root), `"logs"`, `"[id]"`, `"[...slug]"`, `"[[...slug]]"`, `"(group)"`. */
|
|
28
|
+
segment: string;
|
|
29
|
+
layout?: RouteModuleRef;
|
|
30
|
+
page?: RouteModuleRef;
|
|
31
|
+
loading?: RouteModuleRef;
|
|
32
|
+
error?: RouteModuleRef;
|
|
33
|
+
notFound?: RouteModuleRef;
|
|
34
|
+
/** Source files (project-relative) for DevTools and the build summary. */
|
|
35
|
+
files?: Partial<Record<RouteFileKind, string>>;
|
|
36
|
+
children?: RouteSegmentNode[];
|
|
37
|
+
}
|
|
38
|
+
export type RouteManifest = RouteSegmentNode;
|
|
39
|
+
export type SegmentKind = "static" | "dynamic" | "catchAll" | "optionalCatchAll" | "group";
|
|
40
|
+
export interface ParsedSegment {
|
|
41
|
+
kind: SegmentKind;
|
|
42
|
+
/** Literal value for static segments, param name for dynamic ones. */
|
|
43
|
+
name: string;
|
|
44
|
+
}
|
|
45
|
+
export declare function parseSegment(segment: string): ParsedSegment;
|
|
46
|
+
/** Children ordered by match priority: static > group > [param] > [...slug] > [[...slug]]. */
|
|
47
|
+
export declare function rankedChildren(node: RouteSegmentNode): RouteSegmentNode[];
|
|
48
|
+
export interface RouteMatch {
|
|
49
|
+
/** Normalized pathname that was matched. */
|
|
50
|
+
pathname: string;
|
|
51
|
+
/** Route pattern, e.g. `/deployments/[id]` (`/_not-found` for unmatched paths). */
|
|
52
|
+
pattern: string;
|
|
53
|
+
params: RouteParams;
|
|
54
|
+
/** Segment nodes from the root to the matched leaf. */
|
|
55
|
+
chain: RouteSegmentNode[];
|
|
56
|
+
/** `true` when the path did not match a page and the chain ends at the nearest `not-found`. */
|
|
57
|
+
notFound: boolean;
|
|
58
|
+
/** `true` for routes with dynamic segments or `dynamic = "force-dynamic"`. */
|
|
59
|
+
dynamic: boolean;
|
|
60
|
+
}
|
|
61
|
+
export declare function splitPath(pathname: string): string[];
|
|
62
|
+
export declare function normalizePathname(pathname: string): string;
|
|
63
|
+
/** Route pattern for a chain of segments (route groups are omitted). */
|
|
64
|
+
export declare function chainPattern(chain: readonly RouteSegmentNode[]): string;
|
|
65
|
+
export declare function isDynamicPattern(pattern: string): boolean;
|
|
66
|
+
/** Match a pathname against the manifest. Returns `null` when no page matches. */
|
|
67
|
+
export declare function matchAppRoutes(manifest: RouteManifest, pathname: string): RouteMatch | null;
|
|
68
|
+
/**
|
|
69
|
+
* Longest chain of segment directories matching a prefix of `pathname`,
|
|
70
|
+
* truncated at the deepest directory with a `not-found` file (or the root).
|
|
71
|
+
*/
|
|
72
|
+
export declare function resolveNotFoundChain(manifest: RouteManifest, pathname: string): {
|
|
73
|
+
chain: RouteSegmentNode[];
|
|
74
|
+
params: RouteParams;
|
|
75
|
+
};
|
|
76
|
+
/** Match a pathname, falling back to the nearest `not-found` boundary. */
|
|
77
|
+
export declare function resolveRoute(manifest: RouteManifest, pathname: string): RouteMatch;
|
|
78
|
+
export interface FlatRoute {
|
|
79
|
+
pattern: string;
|
|
80
|
+
dynamic: boolean;
|
|
81
|
+
/** Project-relative page file, when known. */
|
|
82
|
+
file?: string;
|
|
83
|
+
/** Layout files wrapping the page, root first. */
|
|
84
|
+
layouts: string[];
|
|
85
|
+
}
|
|
86
|
+
/** Every page in the manifest, `/` first, then alphabetical. */
|
|
87
|
+
export declare function flattenRoutes(manifest: RouteManifest): FlatRoute[];
|
|
88
|
+
export declare function isLazyModule(ref: RouteModuleRef): ref is LazyRouteModule;
|
|
89
|
+
/** The module for `ref` if it is eager or has already loaded. */
|
|
90
|
+
export declare function peekModule(ref: RouteModuleRef | undefined): RouteModule | undefined;
|
|
91
|
+
export declare function loadModule(ref: RouteModuleRef): Promise<RouteModule>;
|
|
92
|
+
export interface ResolvedMetadata {
|
|
93
|
+
title?: string;
|
|
94
|
+
description?: string;
|
|
95
|
+
}
|
|
96
|
+
/** Merge `metadata` from layouts (root first) and the page, applying `title.template`. */
|
|
97
|
+
export declare function resolveMetadata(match: RouteMatch, searchParams?: SearchParamsRecord): ResolvedMetadata;
|
|
98
|
+
export declare function searchParamsToRecord(search: string | URLSearchParams): SearchParamsRecord;
|
|
99
|
+
/** Format params for display: `{ id: "dpl_1" }`. */
|
|
100
|
+
export declare function formatParams(params: RouteParams): string;
|
|
101
|
+
//# sourceMappingURL=routing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;AAC5D,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;AAEnE,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,YAAY,EAAE,kBAAkB,CAAA;KAAE,KAAK,QAAQ,CAAC;IAClG,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,eAAe,CAAC;IACpD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;AACzD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,eAAe,CAAC;AAE3D,eAAO,MAAM,gBAAgB,8DAA+D,CAAC;AAC7F,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,oGAAoG;IACpG,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,kBAAkB,GAAG,OAAO,CAAC;AAE3F,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAS3D;AAID,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAMzE;AAED,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,uDAAuD;IACvD,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,+FAA+F;IAC/F,QAAQ,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAapD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM,CAQvE;AA8CD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAc3F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CA4BlI;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAYlF;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,EAAE,CAiBlE;AAQD,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,GAAG,IAAI,eAAe,CAExE;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAGnF;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAO1E;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAcD,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,GAAE,kBAAuB,GAAG,gBAAgB,CAqB1G;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,kBAAkB,CASzF;AAED,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAIxD"}
|
package/dist/routing.js
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure App Router matching: route manifests, segment ranking, params,
|
|
3
|
+
* not-found resolution and metadata. Shared by the browser router, the Vite
|
|
4
|
+
* plugin and the `text build` route summary.
|
|
5
|
+
*/
|
|
6
|
+
export const ROUTE_FILE_KINDS = ["layout", "page", "loading", "error", "not-found"];
|
|
7
|
+
export function parseSegment(segment) {
|
|
8
|
+
let m = /^\[\[\.\.\.([^\]]+)\]\]$/.exec(segment);
|
|
9
|
+
if (m)
|
|
10
|
+
return { kind: "optionalCatchAll", name: m[1] };
|
|
11
|
+
m = /^\[\.\.\.([^\]]+)\]$/.exec(segment);
|
|
12
|
+
if (m)
|
|
13
|
+
return { kind: "catchAll", name: m[1] };
|
|
14
|
+
m = /^\[([^\]]+)\]$/.exec(segment);
|
|
15
|
+
if (m)
|
|
16
|
+
return { kind: "dynamic", name: m[1] };
|
|
17
|
+
if (/^\(.+\)$/.test(segment))
|
|
18
|
+
return { kind: "group", name: segment };
|
|
19
|
+
return { kind: "static", name: segment };
|
|
20
|
+
}
|
|
21
|
+
const RANK = { static: 0, group: 1, dynamic: 2, catchAll: 3, optionalCatchAll: 4 };
|
|
22
|
+
/** Children ordered by match priority: static > group > [param] > [...slug] > [[...slug]]. */
|
|
23
|
+
export function rankedChildren(node) {
|
|
24
|
+
const list = node.children ? node.children.slice() : [];
|
|
25
|
+
return list.sort((a, b) => {
|
|
26
|
+
const r = RANK[parseSegment(a.segment).kind] - RANK[parseSegment(b.segment).kind];
|
|
27
|
+
return r !== 0 ? r : a.segment.localeCompare(b.segment);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
export function splitPath(pathname) {
|
|
31
|
+
const parts = [];
|
|
32
|
+
for (const raw of pathname.split("/")) {
|
|
33
|
+
if (raw.length === 0)
|
|
34
|
+
continue;
|
|
35
|
+
let p = raw;
|
|
36
|
+
try {
|
|
37
|
+
p = decodeURIComponent(raw);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// keep the raw segment
|
|
41
|
+
}
|
|
42
|
+
parts.push(p);
|
|
43
|
+
}
|
|
44
|
+
return parts;
|
|
45
|
+
}
|
|
46
|
+
export function normalizePathname(pathname) {
|
|
47
|
+
const parts = pathname.split("/").filter((p) => p.length > 0);
|
|
48
|
+
return `/${parts.join("/")}`;
|
|
49
|
+
}
|
|
50
|
+
/** Route pattern for a chain of segments (route groups are omitted). */
|
|
51
|
+
export function chainPattern(chain) {
|
|
52
|
+
const parts = [];
|
|
53
|
+
for (const n of chain) {
|
|
54
|
+
if (n.segment === "")
|
|
55
|
+
continue;
|
|
56
|
+
if (parseSegment(n.segment).kind === "group")
|
|
57
|
+
continue;
|
|
58
|
+
parts.push(n.segment);
|
|
59
|
+
}
|
|
60
|
+
return `/${parts.join("/")}`;
|
|
61
|
+
}
|
|
62
|
+
function matchFrom(node, parts, i, params, chain) {
|
|
63
|
+
if (i === parts.length && node.page)
|
|
64
|
+
return chain;
|
|
65
|
+
for (const child of rankedChildren(node)) {
|
|
66
|
+
const seg = parseSegment(child.segment);
|
|
67
|
+
let next = null;
|
|
68
|
+
switch (seg.kind) {
|
|
69
|
+
case "static":
|
|
70
|
+
if (i < parts.length && parts[i] === seg.name)
|
|
71
|
+
next = matchFrom(child, parts, i + 1, params, [...chain, child]);
|
|
72
|
+
break;
|
|
73
|
+
case "group":
|
|
74
|
+
next = matchFrom(child, parts, i, params, [...chain, child]);
|
|
75
|
+
break;
|
|
76
|
+
case "dynamic":
|
|
77
|
+
if (i < parts.length) {
|
|
78
|
+
const p = { ...params, [seg.name]: parts[i] };
|
|
79
|
+
next = matchFrom(child, parts, i + 1, p, [...chain, child]);
|
|
80
|
+
if (next)
|
|
81
|
+
Object.assign(params, p);
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
case "catchAll":
|
|
85
|
+
case "optionalCatchAll": {
|
|
86
|
+
const rest = parts.slice(i);
|
|
87
|
+
if ((rest.length > 0 || seg.kind === "optionalCatchAll") && child.page) {
|
|
88
|
+
if (rest.length > 0)
|
|
89
|
+
params[seg.name] = rest;
|
|
90
|
+
next = [...chain, child];
|
|
91
|
+
}
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (next)
|
|
96
|
+
return next;
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
function isForceDynamic(chain) {
|
|
101
|
+
for (const n of chain) {
|
|
102
|
+
for (const ref of [n.layout, n.page]) {
|
|
103
|
+
const mod = peekModule(ref);
|
|
104
|
+
if (mod?.dynamic === "force-dynamic")
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
export function isDynamicPattern(pattern) {
|
|
111
|
+
return pattern.includes("[");
|
|
112
|
+
}
|
|
113
|
+
/** Match a pathname against the manifest. Returns `null` when no page matches. */
|
|
114
|
+
export function matchAppRoutes(manifest, pathname) {
|
|
115
|
+
const parts = splitPath(pathname);
|
|
116
|
+
const params = {};
|
|
117
|
+
const chain = matchFrom(manifest, parts, 0, params, [manifest]);
|
|
118
|
+
if (!chain)
|
|
119
|
+
return null;
|
|
120
|
+
const pattern = chainPattern(chain);
|
|
121
|
+
return {
|
|
122
|
+
pathname: normalizePathname(pathname),
|
|
123
|
+
pattern,
|
|
124
|
+
params,
|
|
125
|
+
chain,
|
|
126
|
+
notFound: false,
|
|
127
|
+
dynamic: isDynamicPattern(pattern) || isForceDynamic(chain),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Longest chain of segment directories matching a prefix of `pathname`,
|
|
132
|
+
* truncated at the deepest directory with a `not-found` file (or the root).
|
|
133
|
+
*/
|
|
134
|
+
export function resolveNotFoundChain(manifest, pathname) {
|
|
135
|
+
const parts = splitPath(pathname);
|
|
136
|
+
const params = {};
|
|
137
|
+
let chain = [manifest];
|
|
138
|
+
let node = manifest;
|
|
139
|
+
let i = 0;
|
|
140
|
+
outer: while (i < parts.length) {
|
|
141
|
+
for (const child of rankedChildren(node)) {
|
|
142
|
+
const seg = parseSegment(child.segment);
|
|
143
|
+
if (seg.kind === "static" && parts[i] === seg.name) {
|
|
144
|
+
chain = [...chain, child];
|
|
145
|
+
node = child;
|
|
146
|
+
i++;
|
|
147
|
+
continue outer;
|
|
148
|
+
}
|
|
149
|
+
if (seg.kind === "dynamic") {
|
|
150
|
+
params[seg.name] = parts[i];
|
|
151
|
+
chain = [...chain, child];
|
|
152
|
+
node = child;
|
|
153
|
+
i++;
|
|
154
|
+
continue outer;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
let end = 0;
|
|
160
|
+
for (let k = 0; k < chain.length; k++)
|
|
161
|
+
if (chain[k].notFound)
|
|
162
|
+
end = k;
|
|
163
|
+
return { chain: chain.slice(0, end + 1), params };
|
|
164
|
+
}
|
|
165
|
+
/** Match a pathname, falling back to the nearest `not-found` boundary. */
|
|
166
|
+
export function resolveRoute(manifest, pathname) {
|
|
167
|
+
const match = matchAppRoutes(manifest, pathname);
|
|
168
|
+
if (match)
|
|
169
|
+
return match;
|
|
170
|
+
const { chain, params } = resolveNotFoundChain(manifest, pathname);
|
|
171
|
+
return {
|
|
172
|
+
pathname: normalizePathname(pathname),
|
|
173
|
+
pattern: "/_not-found",
|
|
174
|
+
params,
|
|
175
|
+
chain,
|
|
176
|
+
notFound: true,
|
|
177
|
+
dynamic: false,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/** Every page in the manifest, `/` first, then alphabetical. */
|
|
181
|
+
export function flattenRoutes(manifest) {
|
|
182
|
+
const out = [];
|
|
183
|
+
const walk = (node, chain) => {
|
|
184
|
+
const next = [...chain, node];
|
|
185
|
+
if (node.page) {
|
|
186
|
+
const pattern = chainPattern(next);
|
|
187
|
+
out.push({
|
|
188
|
+
pattern,
|
|
189
|
+
dynamic: isDynamicPattern(pattern) || isForceDynamic(next),
|
|
190
|
+
file: node.files?.page,
|
|
191
|
+
layouts: next.map((n) => n.files?.layout).filter((f) => typeof f === "string"),
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
for (const c of node.children ?? [])
|
|
195
|
+
walk(c, next);
|
|
196
|
+
};
|
|
197
|
+
walk(manifest, []);
|
|
198
|
+
return out.sort((a, b) => (a.pattern === "/" ? -1 : b.pattern === "/" ? 1 : a.pattern.localeCompare(b.pattern)));
|
|
199
|
+
}
|
|
200
|
+
// ---------------------------------------------------------------------------
|
|
201
|
+
// Modules & metadata
|
|
202
|
+
// ---------------------------------------------------------------------------
|
|
203
|
+
const loaded = new WeakMap();
|
|
204
|
+
export function isLazyModule(ref) {
|
|
205
|
+
return typeof ref === "function";
|
|
206
|
+
}
|
|
207
|
+
/** The module for `ref` if it is eager or has already loaded. */
|
|
208
|
+
export function peekModule(ref) {
|
|
209
|
+
if (ref === undefined)
|
|
210
|
+
return undefined;
|
|
211
|
+
return isLazyModule(ref) ? loaded.get(ref) : ref;
|
|
212
|
+
}
|
|
213
|
+
export async function loadModule(ref) {
|
|
214
|
+
if (!isLazyModule(ref))
|
|
215
|
+
return ref;
|
|
216
|
+
const cached = loaded.get(ref);
|
|
217
|
+
if (cached)
|
|
218
|
+
return cached;
|
|
219
|
+
const mod = await ref();
|
|
220
|
+
loaded.set(ref, mod);
|
|
221
|
+
return mod;
|
|
222
|
+
}
|
|
223
|
+
function readMetadata(mod, params, searchParams) {
|
|
224
|
+
if (!mod)
|
|
225
|
+
return undefined;
|
|
226
|
+
if (typeof mod.generateMetadata === "function") {
|
|
227
|
+
try {
|
|
228
|
+
return mod.generateMetadata({ params, searchParams });
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
return mod.metadata;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return mod.metadata;
|
|
235
|
+
}
|
|
236
|
+
/** Merge `metadata` from layouts (root first) and the page, applying `title.template`. */
|
|
237
|
+
export function resolveMetadata(match, searchParams = {}) {
|
|
238
|
+
const out = {};
|
|
239
|
+
let template;
|
|
240
|
+
const leaf = match.chain[match.chain.length - 1];
|
|
241
|
+
const refs = [];
|
|
242
|
+
for (const n of match.chain)
|
|
243
|
+
refs.push(n.layout);
|
|
244
|
+
refs.push(match.notFound ? leaf?.notFound : leaf?.page);
|
|
245
|
+
for (const ref of refs) {
|
|
246
|
+
const meta = readMetadata(peekModule(ref), match.params, searchParams);
|
|
247
|
+
if (!meta)
|
|
248
|
+
continue;
|
|
249
|
+
if (typeof meta.description === "string")
|
|
250
|
+
out.description = meta.description;
|
|
251
|
+
const t = meta.title;
|
|
252
|
+
if (t === undefined)
|
|
253
|
+
continue;
|
|
254
|
+
if (typeof t === "string")
|
|
255
|
+
out.title = template ? template.replace("%s", t) : t;
|
|
256
|
+
else {
|
|
257
|
+
if (typeof t.absolute === "string")
|
|
258
|
+
out.title = t.absolute;
|
|
259
|
+
else if (typeof t.default === "string")
|
|
260
|
+
out.title = t.default;
|
|
261
|
+
if (typeof t.template === "string")
|
|
262
|
+
template = t.template;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return out;
|
|
266
|
+
}
|
|
267
|
+
export function searchParamsToRecord(search) {
|
|
268
|
+
const sp = typeof search === "string" ? new URLSearchParams(search) : search;
|
|
269
|
+
const out = {};
|
|
270
|
+
for (const [k, v] of sp) {
|
|
271
|
+
const prev = out[k];
|
|
272
|
+
if (prev === undefined)
|
|
273
|
+
out[k] = v;
|
|
274
|
+
else
|
|
275
|
+
out[k] = Array.isArray(prev) ? [...prev, v] : [prev, v];
|
|
276
|
+
}
|
|
277
|
+
return out;
|
|
278
|
+
}
|
|
279
|
+
/** Format params for display: `{ id: "dpl_1" }`. */
|
|
280
|
+
export function formatParams(params) {
|
|
281
|
+
const keys = Object.keys(params);
|
|
282
|
+
if (keys.length === 0)
|
|
283
|
+
return "{}";
|
|
284
|
+
return `{ ${keys.map((k) => `${k}: ${JSON.stringify(params[k])}`).join(", ")} }`;
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `text build` hooks for middleware, the cache handler and adapters
|
|
3
|
+
* (kept here so `cli/build.ts` only calls two functions).
|
|
4
|
+
*/
|
|
5
|
+
import type { MiddlewareModule } from "../middleware.js";
|
|
6
|
+
import { type TextConfig } from "../../config.js";
|
|
7
|
+
import type { ApiRoute, AppScan } from "../scan.js";
|
|
8
|
+
import { type AdapterName, type AdapterResult } from "./shared.js";
|
|
9
|
+
export interface ServerFiles {
|
|
10
|
+
middlewareFile: string | null;
|
|
11
|
+
cacheHandlerFile: string | null;
|
|
12
|
+
}
|
|
13
|
+
export declare function serverFiles(root: string, config: TextConfig): ServerFiles;
|
|
14
|
+
/** Bundle `.text/server/runtime.mjs` (middleware + cache handler) for `text start`. Returns `true` when written. */
|
|
15
|
+
export declare function buildServerRuntime(root: string, config: TextConfig, outDir: string): Promise<boolean>;
|
|
16
|
+
/**
|
|
17
|
+
* `middleware.ts`'s `config` export, read in a short-lived child process: the
|
|
18
|
+
* build never runs the cache handler, and middleware top-level side effects
|
|
19
|
+
* (database clients, timers) can't crash or hang it. `null` without middleware.
|
|
20
|
+
*/
|
|
21
|
+
export declare function loadMiddlewareConfig(root: string, config: TextConfig, outDir: string): Promise<MiddlewareModule | null>;
|
|
22
|
+
/** Resolve `--adapter` (or the environment's default) and validate it. */
|
|
23
|
+
export declare function resolveAdapter(name: string | undefined, env?: Record<string, string | undefined>): AdapterName | undefined;
|
|
24
|
+
export interface AdapterStep {
|
|
25
|
+
root: string;
|
|
26
|
+
config: TextConfig;
|
|
27
|
+
outDir: string;
|
|
28
|
+
scan: AppScan;
|
|
29
|
+
api: ApiRoute[];
|
|
30
|
+
adapter: AdapterName;
|
|
31
|
+
print(line?: string): void;
|
|
32
|
+
}
|
|
33
|
+
export declare function runBuildAdapter(step: AdapterStep): Promise<AdapterResult>;
|
|
34
|
+
//# sourceMappingURL=build-step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-step.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/build-step.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAmC,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAGhF,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKjD,OAAO,EAAgC,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9F,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,CAQzE;AAED,oHAAoH;AACpH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAc3G;AAKD;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA8B7H;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,WAAW,GAAG,SAAS,CAKvI;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,QAAQ,EAAE,CAAC;IAChB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAwB/E"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `text build` hooks for middleware, the cache handler and adapters
|
|
3
|
+
* (kept here so `cli/build.ts` only calls two functions).
|
|
4
|
+
*/
|
|
5
|
+
import { spawnSync } from "node:child_process";
|
|
6
|
+
import { existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
7
|
+
import { join, resolve } from "node:path";
|
|
8
|
+
import { pathToFileURL } from "node:url";
|
|
9
|
+
import { normalizeBasePath } from "../../config.js";
|
|
10
|
+
import { findMiddlewareFile } from "../middleware-node.js";
|
|
11
|
+
import { compileMatcher } from "../middleware-runtime.js";
|
|
12
|
+
import { toPosix } from "../scan.js";
|
|
13
|
+
import { bundleServerEntry } from "./bundle.js";
|
|
14
|
+
import { runAdapter } from "./index.js";
|
|
15
|
+
import { RUNTIME_BUNDLE, serverRuntimeEntry } from "./runtime-node.js";
|
|
16
|
+
import { detectAdapter, isAdapterName } from "./shared.js";
|
|
17
|
+
export function serverFiles(root, config) {
|
|
18
|
+
const mw = findMiddlewareFile(root);
|
|
19
|
+
let cacheHandlerFile = null;
|
|
20
|
+
if (config.cacheHandler) {
|
|
21
|
+
cacheHandlerFile = resolve(root, config.cacheHandler);
|
|
22
|
+
if (!existsSync(cacheHandlerFile))
|
|
23
|
+
throw new Error(`▼ Text.js: cacheHandler ${JSON.stringify(config.cacheHandler)} does not exist.`);
|
|
24
|
+
}
|
|
25
|
+
return { middlewareFile: mw ? toPosix(mw) : null, cacheHandlerFile: cacheHandlerFile ? toPosix(cacheHandlerFile) : null };
|
|
26
|
+
}
|
|
27
|
+
/** Bundle `.text/server/runtime.mjs` (middleware + cache handler) for `text start`. Returns `true` when written. */
|
|
28
|
+
export async function buildServerRuntime(root, config, outDir) {
|
|
29
|
+
const files = serverFiles(root, config);
|
|
30
|
+
if (!files.middlewareFile && !files.cacheHandlerFile)
|
|
31
|
+
return false;
|
|
32
|
+
await bundleServerEntry({
|
|
33
|
+
root,
|
|
34
|
+
config,
|
|
35
|
+
code: serverRuntimeEntry(files.middlewareFile, files.cacheHandlerFile),
|
|
36
|
+
outFile: join(outDir, ".text", "server", RUNTIME_BUNDLE),
|
|
37
|
+
target: "node",
|
|
38
|
+
});
|
|
39
|
+
// Validate the matcher at build time instead of on the first request.
|
|
40
|
+
const mw = await loadMiddlewareConfig(root, config, outDir);
|
|
41
|
+
if (mw)
|
|
42
|
+
compileMatcher(mw.config?.matcher);
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
const CONFIG_MARK = "\u0000textjs-middleware-config:";
|
|
46
|
+
const EXTRACT_TIMEOUT_MS = 60_000;
|
|
47
|
+
/**
|
|
48
|
+
* `middleware.ts`'s `config` export, read in a short-lived child process: the
|
|
49
|
+
* build never runs the cache handler, and middleware top-level side effects
|
|
50
|
+
* (database clients, timers) can't crash or hang it. `null` without middleware.
|
|
51
|
+
*/
|
|
52
|
+
export async function loadMiddlewareConfig(root, config, outDir) {
|
|
53
|
+
const { middlewareFile } = serverFiles(root, config);
|
|
54
|
+
if (!middlewareFile)
|
|
55
|
+
return null;
|
|
56
|
+
mkdirSync(join(outDir, ".text"), { recursive: true });
|
|
57
|
+
const dir = mkdtempSync(join(outDir, ".text", "middleware-config-"));
|
|
58
|
+
try {
|
|
59
|
+
const bundle = join(dir, "config.mjs");
|
|
60
|
+
await bundleServerEntry({
|
|
61
|
+
root,
|
|
62
|
+
config,
|
|
63
|
+
code: `import * as middleware from ${JSON.stringify(middlewareFile)};\nexport const config = middleware.config;`,
|
|
64
|
+
outFile: bundle,
|
|
65
|
+
target: "node",
|
|
66
|
+
});
|
|
67
|
+
const runner = join(dir, "extract.mjs");
|
|
68
|
+
writeFileSync(runner, `const m = await import(process.argv[2]);\nprocess.stdout.write(${JSON.stringify(CONFIG_MARK)} + JSON.stringify(m.config ?? null) + "\\n");\nprocess.exit(0);\n`);
|
|
69
|
+
const r = spawnSync(process.execPath, [runner, pathToFileURL(bundle).href], { cwd: root, encoding: "utf8", timeout: EXTRACT_TIMEOUT_MS, env: { ...process.env, NODE_ENV: "production" } });
|
|
70
|
+
const line = (r.stdout ?? "").split("\n").find((l) => l.startsWith(CONFIG_MARK));
|
|
71
|
+
if (r.error || line === undefined) {
|
|
72
|
+
const reason = r.error?.message ?? (r.stderr || `exit code ${r.status}`);
|
|
73
|
+
throw new Error(`▼ Text.js: could not read \`config\` from ${middlewareFile}:\n${reason.trim()}`);
|
|
74
|
+
}
|
|
75
|
+
const value = JSON.parse(line.slice(CONFIG_MARK.length));
|
|
76
|
+
return value ? { config: value } : {};
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
rmSync(dir, { recursive: true, force: true });
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/** Resolve `--adapter` (or the environment's default) and validate it. */
|
|
83
|
+
export function resolveAdapter(name, env = process.env) {
|
|
84
|
+
const value = name ?? env.TEXTJS_ADAPTER ?? detectAdapter(env);
|
|
85
|
+
if (value === undefined || value === "" || value === "node")
|
|
86
|
+
return undefined;
|
|
87
|
+
if (!isAdapterName(value))
|
|
88
|
+
throw new Error(`▼ Text.js: unknown adapter ${JSON.stringify(value)}. Use static, bun, vercel or cloudflare.`);
|
|
89
|
+
return value;
|
|
90
|
+
}
|
|
91
|
+
export async function runBuildAdapter(step) {
|
|
92
|
+
const files = serverFiles(step.root, step.config);
|
|
93
|
+
const rewrites = typeof step.config.rewrites === "function" ? await step.config.rewrites() : (step.config.rewrites ?? []);
|
|
94
|
+
const middleware = await loadMiddlewareConfig(step.root, step.config, step.outDir);
|
|
95
|
+
const result = await runAdapter(step.adapter, {
|
|
96
|
+
root: step.root,
|
|
97
|
+
outDir: step.outDir,
|
|
98
|
+
config: step.config,
|
|
99
|
+
scan: step.scan,
|
|
100
|
+
api: step.api,
|
|
101
|
+
basePath: normalizeBasePath(step.config.basePath),
|
|
102
|
+
rewrites,
|
|
103
|
+
middlewareFile: files.middlewareFile,
|
|
104
|
+
cacheHandlerFile: files.cacheHandlerFile,
|
|
105
|
+
print: step.print,
|
|
106
|
+
}, middleware);
|
|
107
|
+
if (step.config.proxy && Object.keys(step.config.proxy).length > 0) {
|
|
108
|
+
result.notes.push("`proxy` in text.config.ts only runs in `text dev` / `text start` and is not part of adapter output; use rewrites.");
|
|
109
|
+
}
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=build-step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-step.js","sourceRoot":"","sources":["../../../src/server/adapters/build-step.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `text build --adapter bun`: a self-contained `dist/server.js` for
|
|
3
|
+
* `bun dist/server.js` (static files, middleware, route handlers, SPA document).
|
|
4
|
+
*/
|
|
5
|
+
import { type AdapterContext, type AdapterResult } from "./shared.js";
|
|
6
|
+
export declare const BUN_SERVER_FILE = "server.js";
|
|
7
|
+
export declare function adaptBun(ctx: AdapterContext): Promise<AdapterResult>;
|
|
8
|
+
//# sourceMappingURL=bun.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/bun.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAe,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhF,eAAO,MAAM,eAAe,cAAc,CAAC;AA+E3C,wBAAsB,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAG1E"}
|