treesap 0.3.1 → 0.3.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/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { Context } from \"./context.ts\";\nimport { serveStatic } from \"./middleware/serve-static.ts\";\nimport {\n compilePath,\n isExactPathPattern,\n joinPaths,\n normalizePathname,\n type CompiledPath,\n} from \"./path.ts\";\n\nexport type Next = () => Promise<Response>;\nexport type HandlerResult = Response | void | Promise<Response | void>;\nexport type Handler = (ctx: Context, next: Next) => HandlerResult;\n\nexport interface CreateAppOptions {\n rootDir?: string;\n publicDir?: string | false;\n}\n\nfunction isProductionRuntime() {\n const viteEnv = (import.meta as ImportMeta & {\n env?: { PROD?: boolean };\n }).env;\n\n return viteEnv?.PROD === true || process.env.NODE_ENV === \"production\";\n}\n\nfunction resolveDefaultPublicRoot(rootDir: string) {\n const builtClientDir = path.resolve(rootDir, \"dist/client\");\n const sourcePublicDir = path.resolve(rootDir, \"public\");\n\n if (isProductionRuntime() && existsSync(builtClientDir)) {\n return builtClientDir;\n }\n\n if (existsSync(sourcePublicDir)) {\n return sourcePublicDir;\n }\n\n if (existsSync(builtClientDir)) {\n return builtClientDir;\n }\n\n return null;\n}\n\ninterface MiddlewareRecord {\n path: string;\n matcher: CompiledPath;\n handler: Handler;\n}\n\ninterface RouteRecord {\n path: string;\n methods: string[];\n matcher: CompiledPath;\n handlers: Handler[];\n}\n\ninterface RouteMatch {\n record: RouteRecord;\n params: Record<string, string>;\n}\n\nfunction appendRouteRecord(\n index: Map<string, RouteRecord[]>,\n key: string,\n record: RouteRecord\n) {\n const records = index.get(key) ?? [];\n records.push(record);\n index.set(key, records);\n}\n\nfunction applyResponseDefaults(response: Response) {\n const contentType = response.headers.get(\"Content-Type\")?.toLowerCase() ?? \"\";\n if (\n !contentType.startsWith(\"text/html\") ||\n response.headers.has(\"Cache-Control\")\n ) {\n return response;\n }\n\n const headers = new Headers(response.headers);\n headers.set(\"Cache-Control\", \"public, max-age=0, must-revalidate\");\n\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n}\n\nasync function composeHandlers(\n handlers: Handler[],\n ctx: Context,\n finalNext: Next\n) {\n let index = -1;\n\n async function dispatch(position: number): Promise<Response> {\n if (position <= index) {\n throw new Error(\"next() called multiple times\");\n }\n\n index = position;\n\n const handler = handlers[position];\n if (!handler) {\n return finalNext();\n }\n\n let downstream: Response | undefined;\n const response = await handler(ctx, async () => {\n downstream = await dispatch(position + 1);\n return downstream;\n });\n\n if (response) {\n return response;\n }\n\n if (downstream) {\n return downstream;\n }\n\n return new Response(null, { status: 204 });\n }\n\n return dispatch(0);\n}\n\nexport class ServerApp {\n private readonly frameworkMiddlewares: MiddlewareRecord[] = [];\n private readonly middlewares: MiddlewareRecord[] = [];\n private readonly routes: RouteRecord[] = [];\n private readonly methodRoutes = new Map<string, RouteRecord[]>();\n private readonly exactRoutes = new Map<string, Map<string, RouteRecord[]>>();\n private notFoundHandler: Handler = (ctx) =>\n ctx.text(\"Not Found\", { status: 404 });\n\n constructor(options: CreateAppOptions = {}) {\n if (options.publicDir === false) {\n return;\n }\n\n const rootDir = path.resolve(options.rootDir ?? process.cwd());\n const staticRoot =\n typeof options.publicDir === \"string\"\n ? path.resolve(rootDir, options.publicDir)\n : resolveDefaultPublicRoot(rootDir);\n\n if (!staticRoot || !existsSync(staticRoot)) {\n return;\n }\n\n this.frameworkMiddlewares.push({\n path: \"/*\",\n matcher: compilePath(\"/*\"),\n handler: serveStatic({ root: staticRoot }),\n });\n }\n\n use(pathOrHandler: string | Handler, ...handlers: Handler[]) {\n const path = typeof pathOrHandler === \"string\" ? pathOrHandler : \"*\";\n const list =\n typeof pathOrHandler === \"string\"\n ? handlers\n : [pathOrHandler, ...handlers];\n\n for (const handler of list) {\n this.middlewares.push({\n path,\n matcher: compilePath(path),\n handler,\n });\n }\n\n return this;\n }\n\n private registerRoute(record: RouteRecord) {\n this.routes.push(record);\n\n for (const method of record.methods) {\n appendRouteRecord(this.methodRoutes, method, record);\n\n if (isExactPathPattern(record.matcher.pattern)) {\n const exactRoutesForMethod = this.exactRoutes.get(method) ?? new Map();\n appendRouteRecord(exactRoutesForMethod, record.matcher.pattern, record);\n this.exactRoutes.set(method, exactRoutesForMethod);\n }\n }\n }\n\n on(methods: string[] | readonly string[], path: string, ...handlers: Handler[]) {\n const matcher = compilePath(path);\n const record = {\n path,\n methods: [...methods].map((method) => method.toUpperCase()),\n matcher,\n handlers,\n };\n\n this.registerRoute(record);\n\n return this;\n }\n\n get(path: string, ...handlers: Handler[]) {\n return this.on([\"GET\"], path, ...handlers);\n }\n\n post(path: string, ...handlers: Handler[]) {\n return this.on([\"POST\"], path, ...handlers);\n }\n\n patch(path: string, ...handlers: Handler[]) {\n return this.on([\"PATCH\"], path, ...handlers);\n }\n\n delete(path: string, ...handlers: Handler[]) {\n return this.on([\"DELETE\"], path, ...handlers);\n }\n\n route(prefix: string, child: ServerApp) {\n child.middlewares.forEach((record) => {\n this.middlewares.push({\n path: joinPaths(prefix, record.path),\n matcher: compilePath(joinPaths(prefix, record.path)),\n handler: record.handler,\n });\n });\n\n child.routes.forEach((record) => {\n this.registerRoute({\n path: joinPaths(prefix, record.path),\n methods: [...record.methods],\n matcher: compilePath(joinPaths(prefix, record.path)),\n handlers: [...record.handlers],\n });\n });\n\n return this;\n }\n\n mount(prefix: string, child: ServerApp) {\n return this.route(prefix, child);\n }\n\n notFound(handler: Handler) {\n this.notFoundHandler = handler;\n return this;\n }\n\n private findRoute(method: string, pathname: string): RouteMatch | null {\n const normalizedPathname = normalizePathname(pathname);\n const exactRouteCandidates = [\n ...(this.exactRoutes.get(method)?.get(normalizedPathname) ?? []),\n ...(this.exactRoutes.get(\"ALL\")?.get(normalizedPathname) ?? []),\n ];\n\n for (const record of exactRouteCandidates) {\n return {\n record,\n params: {},\n };\n }\n\n const routeCandidates = [\n ...(this.methodRoutes.get(method) ?? []),\n ...(this.methodRoutes.get(\"ALL\") ?? []),\n ];\n\n for (const record of routeCandidates) {\n if (isExactPathPattern(record.matcher.pattern)) {\n continue;\n }\n\n const match = record.matcher.test(normalizedPathname);\n if (match) {\n return {\n record,\n params: match.params,\n };\n }\n }\n\n return null;\n }\n\n async fetch(request: Request | string | URL, init?: RequestInit) {\n const normalizedRequest =\n request instanceof Request ? request : new Request(request, init);\n const url = new URL(normalizedRequest.url);\n const method = normalizedRequest.method.toUpperCase();\n\n const middlewareStack = this.middlewares\n .filter((record) => record.matcher.test(url.pathname))\n .concat(\n this.frameworkMiddlewares.filter((record) =>\n record.matcher.test(url.pathname)\n )\n )\n .map((record) => record.handler);\n\n const routeMatch = this.findRoute(method, url.pathname);\n const route = routeMatch?.record;\n const params = routeMatch?.params ?? {};\n const ctx = new Context(normalizedRequest, params);\n const notFound: Next = async () => {\n const response = await this.notFoundHandler(\n ctx,\n async () => new Response(null, { status: 404 })\n );\n if (response instanceof Response) {\n return response;\n }\n\n return new Response(null, { status: 404 });\n };\n\n if (!route) {\n const response = await composeHandlers(middlewareStack, ctx, notFound);\n return applyResponseDefaults(response);\n }\n\n const handlers = [...middlewareStack, ...route.handlers];\n const response = await composeHandlers(handlers, ctx, notFound);\n return applyResponseDefaults(response);\n }\n}\n\nexport function createApp(options?: CreateAppOptions) {\n return new ServerApp(options);\n}\n\nexport function createRouter() {\n return new ServerApp({ publicDir: false });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { renderToString } from \"hono/jsx/dom/server\";\nimport type { Child } from \"hono/jsx\";\n\nexport type Renderable = Child | string;\nexport type Renderer = (\n content: Renderable,\n ctx: Context,\n init?: ResponseInit\n) => Response | Promise<Response>;\n\nfunction applyResponseDefaults(\n base: { headers: Headers; status?: number },\n init?: ResponseInit\n) {\n const headers = new Headers(base.headers);\n if (init?.headers) {\n new Headers(init.headers).forEach((value, key) => {\n headers.set(key, value);\n });\n }\n\n return {\n status: init?.status ?? base.status,\n headers,\n };\n}\n\nexport class Context {\n readonly url: URL;\n readonly var = new Map<string, unknown>();\n readonly res = {\n headers: new Headers(),\n status: undefined as number | undefined,\n };\n\n private renderer?: Renderer;\n private readonly params: Record<string, string>;\n\n readonly req: {\n raw: Request;\n url: string;\n json: <T = unknown>() => Promise<T>;\n text: () => Promise<string>;\n formData: () => Promise<FormData>;\n param: (name?: string) => string | Record<string, string> | undefined;\n header: (name: string) => string | undefined;\n query: (name?: string) => string | Record<string, string> | undefined;\n };\n\n constructor(readonly request: Request, params: Record<string, string> = {}) {\n this.url = new URL(request.url);\n this.params = params;\n this.req = {\n raw: request,\n url: request.url,\n json: <T = unknown>() => request.json() as Promise<T>,\n text: () => request.text(),\n formData: () => request.formData(),\n param: (name?: string) => {\n if (!name) {\n return { ...this.params };\n }\n\n return this.params[name];\n },\n header: (name: string) => request.headers.get(name) ?? undefined,\n query: (name?: string) => {\n if (!name) {\n return Object.fromEntries(this.url.searchParams.entries());\n }\n\n return this.url.searchParams.get(name) ?? undefined;\n },\n };\n }\n\n set<T>(key: string, value: T) {\n this.var.set(key, value);\n }\n\n get<T>(key: string) {\n return this.var.get(key) as T;\n }\n\n status(code: number) {\n this.res.status = code;\n }\n\n header(name: string, value: string) {\n this.res.headers.set(name, value);\n }\n\n json(data: unknown, init?: ResponseInit) {\n const responseInit = applyResponseDefaults(this.res, init);\n responseInit.headers.set(\"Content-Type\", \"application/json; charset=UTF-8\");\n return new Response(JSON.stringify(data), responseInit);\n }\n\n text(value: string, init?: ResponseInit) {\n const responseInit = applyResponseDefaults(this.res, init);\n responseInit.headers.set(\"Content-Type\", \"text/plain; charset=UTF-8\");\n return new Response(value, responseInit);\n }\n\n html(value: string, init?: ResponseInit) {\n const responseInit = applyResponseDefaults(this.res, init);\n responseInit.headers.set(\"Content-Type\", \"text/html; charset=UTF-8\");\n return new Response(value, responseInit);\n }\n\n redirect(location: string, status = 302) {\n const responseInit = applyResponseDefaults(this.res, { status });\n responseInit.headers.set(\"Location\", location);\n return new Response(null, responseInit);\n }\n\n setRenderer(renderer: Renderer) {\n this.renderer = renderer;\n }\n\n render(content: Renderable, init?: ResponseInit) {\n if (this.renderer) {\n return this.renderer(content, this, init);\n }\n\n if (typeof content === \"string\") {\n return this.html(content, init);\n }\n\n return this.html(renderToString(content), init);\n }\n}\n"]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAmB,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,SAAS,EACT,YAAY,EAKZ,SAAS,GACV,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAc,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAmB,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,SAAS,EACT,YAAY,EAKZ,SAAS,GACV,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAc,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC","sourcesContent":["export { Context, type Renderable } from \"./context.ts\";\nexport {\n createApp,\n createRouter,\n type CreateAppOptions,\n type Handler,\n type Next,\n type HandlerResult,\n ServerApp,\n} from \"./app.ts\";\nexport { cors } from \"./middleware/cors.ts\";\nexport { Island, type IslandProps } from \"./island.tsx\";\nexport { serveStatic } from \"./middleware/serve-static.ts\";\nexport { serve, sendNodeResponse, toWebRequest } from \"./node.ts\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"island-runtime.js","sourceRoot":"","sources":["../src/island-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAExB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;IACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC;IAE5E,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,EAAE,CAAC;QAClC,KAAK,CAAC,WAAW,GAAG,uCAAuC,CAAC;QAC5D,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"island-runtime.js","sourceRoot":"","sources":["../src/island-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAExB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;IACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC;IAE5E,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,EAAE,CAAC;QAClC,KAAK,CAAC,WAAW,GAAG,uCAAuC,CAAC;QAC5D,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC","sourcesContent":["import \"sapling-island\";\n\nif (typeof document !== \"undefined\") {\n const existingStyle = document.querySelector(\"style[data-treesap-islands]\");\n\n if (!existingStyle) {\n const style = document.createElement(\"style\");\n style.dataset.treesapIslands = \"\";\n style.textContent = \"sapling-island { display: contents; }\";\n document.head.append(style);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"island.d.ts","sourceRoot":"","sources":["../src/island.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,QAAQ,EAAE,UAAU,CAAC;CACtB;AAqCD,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,kDA+BxC"}
1
+ {"version":3,"file":"island.d.ts","sourceRoot":"","sources":["../src/island.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,QAAQ,EAAE,UAAU,CAAC;CACtB;AAyCD,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,kDA8CxC"}
package/dist/island.js CHANGED
@@ -1,8 +1,11 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "hono/jsx/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "hono/jsx/jsx-runtime";
2
2
  import { getViteModuleAsset } from "./vite.js";
3
3
  function getRegisteredIslandEntries() {
4
4
  return globalThis.__TREESAP_ISLANDS__ ?? {};
5
5
  }
6
+ function getIslandRuntimeEntry() {
7
+ return globalThis.__TREESAP_ISLAND_RUNTIME_ENTRY__ ?? null;
8
+ }
6
9
  function createIslandBootstrapScript(name, scriptUrl) {
7
10
  return `
8
11
  void (async () => {
@@ -39,7 +42,15 @@ export function Island(props) {
39
42
  if (!scriptUrl) {
40
43
  throw new Error(`Treesap island "${props.name}" could not resolve a built browser asset for "${entry}".`);
41
44
  }
45
+ const runtimeEntry = getIslandRuntimeEntry();
46
+ if (!runtimeEntry) {
47
+ throw new Error('Treesap islands runtime is not registered. Restart Vite so Treesap can inject its runtime entry.');
48
+ }
49
+ const runtimeScriptUrl = getViteModuleAsset({ entry: runtimeEntry });
50
+ if (!runtimeScriptUrl) {
51
+ throw new Error("Treesap could not resolve its island runtime browser asset.");
52
+ }
42
53
  const bootstrapScript = createIslandBootstrapScript(props.name, scriptUrl);
43
- return (_jsxs("sapling-island", { loading: props.loading ?? "load", timeout: props.timeout === undefined ? undefined : String(props.timeout), children: [_jsx("div", { "data-treesap-island-root": "", "data-treesap-island": props.name, children: props.children }), _jsx("template", { children: _jsx("script", { dangerouslySetInnerHTML: { __html: bootstrapScript } }) })] }));
54
+ return (_jsxs(_Fragment, { children: [_jsx("script", { type: "module", src: runtimeScriptUrl }), _jsxs("sapling-island", { loading: props.loading ?? "load", timeout: props.timeout === undefined ? undefined : String(props.timeout), children: [_jsx("div", { "data-treesap-island-root": "", "data-treesap-island": props.name, children: props.children }), _jsx("template", { children: _jsx("script", { dangerouslySetInnerHTML: { __html: bootstrapScript } }) })] })] }));
44
55
  }
45
56
  //# sourceMappingURL=island.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"island.js","sourceRoot":"","sources":["../src/island.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAS/C,SAAS,0BAA0B;IACjC,OAAO,UAAU,CAAC,mBAAmB,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAY,EAAE,SAAiB;IAClE,OAAO;;;;;;;sBAOa,IAAI,CAAC,SAAS,CAC9B,mBAAmB,IAAI,mCAAmC,CAC3D;;;gCAG2B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;;;sBAInC,IAAI,CAAC,SAAS,CAC9B,mBAAmB,IAAI,+CAA+C,CACvE;;;;;;;;;CASJ,CAAC,IAAI,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,aAAa,GAAG,0BAA0B,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,mBAAmB,KAAK,CAAC,IAAI,wFAAwF,CACtH,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,mBAAmB,KAAK,CAAC,IAAI,kDAAkD,KAAK,IAAI,CACzF,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,2BAA2B,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE3E,OAAO,CACL,0BACE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,MAAM,EAChC,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,aAExE,0CAA8B,EAAE,yBAAsB,KAAK,CAAC,IAAI,YAC7D,KAAK,CAAC,QAAQ,GACX,EACN,6BACE,iBAAQ,uBAAuB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,GAAI,GACvD,IACI,CAClB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"island.js","sourceRoot":"","sources":["../src/island.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAS/C,SAAS,0BAA0B;IACjC,OAAO,UAAU,CAAC,mBAAmB,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO,UAAU,CAAC,gCAAgC,IAAI,IAAI,CAAC;AAC7D,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAY,EAAE,SAAiB;IAClE,OAAO;;;;;;;sBAOa,IAAI,CAAC,SAAS,CAC9B,mBAAmB,IAAI,mCAAmC,CAC3D;;;gCAG2B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;;;sBAInC,IAAI,CAAC,SAAS,CAC9B,mBAAmB,IAAI,+CAA+C,CACvE;;;;;;;;;CASJ,CAAC,IAAI,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,aAAa,GAAG,0BAA0B,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,mBAAmB,KAAK,CAAC,IAAI,wFAAwF,CACtH,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,mBAAmB,KAAK,CAAC,IAAI,kDAAkD,KAAK,IAAI,CACzF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;IAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,eAAe,GAAG,2BAA2B,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE3E,OAAO,CACL,8BACE,iBAAQ,IAAI,EAAC,QAAQ,EAAC,GAAG,EAAE,gBAAgB,GAAW,EACtD,0BACE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,MAAM,EAChC,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,aAExE,0CAA8B,EAAE,yBAAsB,KAAK,CAAC,IAAI,YAC7D,KAAK,CAAC,QAAQ,GACX,EACN,6BACE,iBAAQ,uBAAuB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,GAAI,GACvD,IACI,IAChB,CACJ,CAAC;AACJ,CAAC","sourcesContent":["/** @jsxImportSource hono/jsx */\nimport type { Renderable } from \"./context.ts\";\nimport { getViteModuleAsset } from \"./vite.ts\";\n\nexport interface IslandProps {\n name: string;\n loading?: string;\n timeout?: number | string;\n children: Renderable;\n}\n\nfunction getRegisteredIslandEntries() {\n return globalThis.__TREESAP_ISLANDS__ ?? {};\n}\n\nfunction getIslandRuntimeEntry() {\n return globalThis.__TREESAP_ISLAND_RUNTIME_ENTRY__ ?? null;\n}\n\nfunction createIslandBootstrapScript(name: string, scriptUrl: string) {\n return `\nvoid (async () => {\n const currentScript = document.currentScript;\n const island = currentScript?.closest(\"sapling-island\");\n const root = island?.querySelector(\"[data-treesap-island-root]\");\n\n if (!(root instanceof HTMLElement)) {\n throw new Error(${JSON.stringify(\n `Treesap island \"${name}\" could not find its island root.`\n )});\n }\n\n const module = await import(${JSON.stringify(scriptUrl)});\n const mount = module.default;\n\n if (typeof mount !== \"function\") {\n throw new Error(${JSON.stringify(\n `Treesap island \"${name}\" must export a default mount(root) function.`\n )});\n }\n\n await mount(root);\n})().catch((error) => {\n setTimeout(() => {\n throw error;\n });\n});\n`.trim();\n}\n\nexport function Island(props: IslandProps) {\n const islandEntries = getRegisteredIslandEntries();\n const entry = islandEntries[props.name];\n if (!entry) {\n throw new Error(\n `Treesap island \"${props.name}\" is not registered. Add it to defineTreesapConfig({ islands: { entries: { ... } } }).`\n );\n }\n\n const scriptUrl = getViteModuleAsset({ entry });\n if (!scriptUrl) {\n throw new Error(\n `Treesap island \"${props.name}\" could not resolve a built browser asset for \"${entry}\".`\n );\n }\n\n const runtimeEntry = getIslandRuntimeEntry();\n if (!runtimeEntry) {\n throw new Error(\n 'Treesap islands runtime is not registered. Restart Vite so Treesap can inject its runtime entry.'\n );\n }\n\n const runtimeScriptUrl = getViteModuleAsset({ entry: runtimeEntry });\n if (!runtimeScriptUrl) {\n throw new Error(\"Treesap could not resolve its island runtime browser asset.\");\n }\n\n const bootstrapScript = createIslandBootstrapScript(props.name, scriptUrl);\n\n return (\n <>\n <script type=\"module\" src={runtimeScriptUrl}></script>\n <sapling-island\n loading={props.loading ?? \"load\"}\n timeout={props.timeout === undefined ? undefined : String(props.timeout)}\n >\n <div data-treesap-island-root=\"\" data-treesap-island={props.name}>\n {props.children}\n </div>\n <template>\n <script dangerouslySetInnerHTML={{ __html: bootstrapScript }} />\n </template>\n </sapling-island>\n </>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/middleware/cors.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,IAAI,CAAC,UAAuB,EAAE;IAC5C,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,cAAc,GAClB,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU;YAClC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC;YAC1C,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;QAEtC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAE9B,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,cAAc,CAAC,CAAC;YAC3D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACxB,MAAM,EAAE,GAAG;gBACX,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC;QAC9B,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/middleware/cors.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,IAAI,CAAC,UAAuB,EAAE;IAC5C,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,cAAc,GAClB,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU;YAClC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC;YAC1C,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;QAEtC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAE9B,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,cAAc,CAAC,CAAC;YAC3D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACxB,MAAM,EAAE,GAAG;gBACX,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC;QAC9B,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { Handler } from \"../app.ts\";\nimport type { Context } from \"../context.ts\";\n\ninterface CorsOptions {\n origin?:\n | string\n | ((\n origin: string | undefined,\n ctx: Context\n ) => string | undefined | Promise<string | undefined>);\n allowHeaders?: string[];\n allowMethods?: string[];\n credentials?: boolean;\n}\n\nexport function cors(options: CorsOptions = {}): Handler {\n return async (ctx, next) => {\n const requestOrigin = ctx.req.header(\"origin\");\n const resolvedOrigin =\n typeof options.origin === \"function\"\n ? await options.origin(requestOrigin, ctx)\n : options.origin ?? requestOrigin;\n\n const headers = new Headers();\n\n if (resolvedOrigin) {\n headers.set(\"Access-Control-Allow-Origin\", resolvedOrigin);\n headers.append(\"Vary\", \"Origin\");\n }\n\n if (options.credentials) {\n headers.set(\"Access-Control-Allow-Credentials\", \"true\");\n }\n\n if (options.allowHeaders?.length) {\n headers.set(\"Access-Control-Allow-Headers\", options.allowHeaders.join(\", \"));\n }\n\n if (options.allowMethods?.length) {\n headers.set(\"Access-Control-Allow-Methods\", options.allowMethods.join(\", \"));\n }\n\n if (ctx.request.method === \"OPTIONS\") {\n return new Response(null, {\n status: 204,\n headers,\n });\n }\n\n const response = await next();\n headers.forEach((value, key) => {\n response.headers.set(key, value);\n });\n\n return response;\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"serve-static.js","sourceRoot":"","sources":["../../src/middleware/serve-static.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,UAAU,GAA2B;IACzC,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,yBAAyB;IACjC,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,gCAAgC;IACvC,OAAO,EAAE,iCAAiC;IAC1C,KAAK,EAAE,8BAA8B;IACrC,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,2BAA2B;IACnC,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,gCAAgC;CACzC,CAAC;AAEF,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,0BAA0B,CAAC;AACxF,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpD,OAAO,8BAA8B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,QAAgB;IACzD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;QACrD,OAAO,oCAAoC,CAAC;IAC9C,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IAED,OAAO,sDAAsD,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAM3B;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAClE,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAEtD,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC5E,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,YAAY,GAChB,OAAO,OAAO,CAAC,YAAY,KAAK,UAAU;gBACxC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAC1C,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;YAE3B,MAAM,OAAO,GAA2B;gBACtC,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC;aACzC,CAAC;YAEF,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;gBAC3B,OAAO,CAAC,eAAe,CAAC,GAAG,YAAY,IAAI,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjF,CAAC;YAED,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACxB,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"serve-static.js","sourceRoot":"","sources":["../../src/middleware/serve-static.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { Handler } from \"../app.ts\";\n\nconst MIME_TYPES: Record<string, string> = {\n \".avif\": \"image/avif\",\n \".css\": \"text/css; charset=UTF-8\",\n \".ico\": \"image/x-icon\",\n \".jpeg\": \"image/jpeg\",\n \".jpg\": \"image/jpeg\",\n \".js\": \"text/javascript; charset=UTF-8\",\n \".json\": \"application/json; charset=UTF-8\",\n \".md\": \"text/markdown; charset=UTF-8\",\n \".png\": \"image/png\",\n \".svg\": \"image/svg+xml\",\n \".txt\": \"text/plain; charset=UTF-8\",\n \".woff\": \"font/woff\",\n \".woff2\": \"font/woff2\",\n \".xml\": \"application/xml; charset=UTF-8\",\n};\n\nfunction getContentType(filePath: string) {\n return MIME_TYPES[path.extname(filePath).toLowerCase()] ?? \"application/octet-stream\";\n}\n\nfunction hasBuildHash(filePath: string) {\n const extension = path.extname(filePath);\n const basename = path.basename(filePath, extension);\n return /(?:^|[.-])[A-Za-z0-9_-]{8,}$/.test(basename);\n}\n\nfunction getCacheControl(filePath: string, pathname: string) {\n if (path.extname(filePath).toLowerCase() === \".html\") {\n return \"public, max-age=0, must-revalidate\";\n }\n\n if (pathname.includes(\"/assets/\") && hasBuildHash(filePath)) {\n return \"public, max-age=31536000, immutable\";\n }\n\n return \"public, max-age=604800, stale-while-revalidate=86400\";\n}\n\nexport function serveStatic(options: {\n root: string;\n cacheControl?:\n | string\n | false\n | ((filePath: string, pathname: string) => string | undefined);\n}): Handler {\n const basePath = path.resolve(options.root);\n\n return async (ctx, next) => {\n if (ctx.req.raw.method !== \"GET\" && ctx.req.raw.method !== \"HEAD\") {\n return next();\n }\n\n const pathname = decodeURIComponent(ctx.url.pathname);\n const relativePath = pathname.startsWith(\"/\") ? pathname.slice(1) : pathname;\n const filePath = path.resolve(basePath, relativePath);\n\n if (filePath !== basePath && !filePath.startsWith(`${basePath}${path.sep}`)) {\n return next();\n }\n\n try {\n const file = await readFile(filePath);\n const cacheControl =\n typeof options.cacheControl === \"function\"\n ? options.cacheControl(filePath, pathname)\n : options.cacheControl;\n\n const headers: Record<string, string> = {\n \"Content-Type\": getContentType(filePath),\n };\n\n if (cacheControl !== false) {\n headers[\"Cache-Control\"] = cacheControl ?? getCacheControl(filePath, pathname);\n }\n\n return new Response(file, {\n headers,\n });\n } catch {\n return next();\n }\n };\n}\n"]}
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAoB;IACrD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC;IAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,gBAAgB,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,QAAQ,MAAM,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,IAAI,GACR,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;QAC3C,CAAC,CAAC,SAAS;QACX,CAAC,CAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAgC,CAAC;IAE1D,MAAM,IAAI,GAAsC;QAC9C,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAsB;QACnC,IAAI;KACL,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAmB,EAAE,QAAkB;IAC5E,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,GAAG,CAAC,GAAG,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAW,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAGrB;IACC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAoB;IACrD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC;IAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,gBAAgB,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,QAAQ,MAAM,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,IAAI,GACR,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;QAC3C,CAAC,CAAC,SAAS;QACX,CAAC,CAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAgC,CAAC;IAE1D,MAAM,IAAI,GAAsC;QAC9C,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAsB;QACnC,IAAI;KACL,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAmB,EAAE,QAAkB;IAC5E,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,GAAG,CAAC,GAAG,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAW,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAGrB;IACC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { createServer, type IncomingMessage, type ServerResponse } from \"node:http\";\nimport { Readable } from \"node:stream\";\n\nexport async function toWebRequest(req: IncomingMessage) {\n const protocol = req.headers[\"x-forwarded-proto\"] ?? \"http\";\n const host = req.headers.host ?? \"localhost:8080\";\n const url = new URL(req.url ?? \"/\", `${protocol}://${host}`);\n const body =\n req.method === \"GET\" || req.method === \"HEAD\"\n ? undefined\n : (Readable.toWeb(req) as ReadableStream<Uint8Array>);\n\n const init: RequestInit & { duplex?: \"half\" } = {\n method: req.method,\n headers: req.headers as HeadersInit,\n body,\n };\n\n if (body) {\n init.duplex = \"half\";\n }\n\n return new Request(url, init);\n}\n\nexport async function sendNodeResponse(res: ServerResponse, response: Response) {\n res.statusCode = response.status;\n response.headers.forEach((value, key) => {\n res.setHeader(key, value);\n });\n\n if (!response.body) {\n res.end();\n return;\n }\n\n const stream = Readable.fromWeb(response.body as any);\n stream.on(\"error\", (error) => {\n res.destroy(error);\n });\n stream.pipe(res);\n}\n\nexport function serve(options: {\n fetch: (request: Request) => Response | Promise<Response>;\n port: number;\n}) {\n const server = createServer(async (req, res) => {\n try {\n const request = await toWebRequest(req);\n const response = await options.fetch(request);\n await sendNodeResponse(res, response);\n } catch (error) {\n console.error(error);\n res.statusCode = 500;\n res.setHeader(\"Content-Type\", \"text/plain; charset=UTF-8\");\n res.end(\"Internal Server Error\");\n }\n });\n\n server.listen(options.port);\n return server;\n}\n"]}
package/dist/path.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEpD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAEhE,OAAO;QACL,OAAO,EAAE,iBAAiB;QAC1B,IAAI,CAAC,QAAgB;YACnB,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC7D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;YAC1D,CAAC,CAAC,CACH,CAAC;YAEF,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,QAAgB;IACxD,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QAC9B,OAAO,QAAQ,IAAI,GAAG,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7E,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;IAE5E,OAAO,GAAG,gBAAgB,GAAG,cAAc,EAAE,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEpD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAEhE,OAAO;QACL,OAAO,EAAE,iBAAiB;QAC1B,IAAI,CAAC,QAAgB;YACnB,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC7D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;YAC1D,CAAC,CAAC,CACH,CAAC;YAEF,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,QAAgB;IACxD,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QAC9B,OAAO,QAAQ,IAAI,GAAG,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7E,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;IAE5E,OAAO,GAAG,gBAAgB,GAAG,cAAc,EAAE,CAAC;AAChD,CAAC","sourcesContent":["export interface PathMatchResult {\n params: Record<string, string>;\n}\n\nexport interface CompiledPath {\n pattern: string;\n test(pathname: string): PathMatchResult | null;\n}\n\nexport function normalizePattern(pattern: string) {\n if (!pattern || pattern === \"*\") {\n return \"/*\";\n }\n\n if (!pattern.startsWith(\"/\")) {\n return `/${pattern}`;\n }\n\n return pattern;\n}\n\nexport function normalizePathname(pathname: string) {\n if (!pathname || pathname === \"/\") {\n return \"/\";\n }\n\n return pathname.endsWith(\"/\") ? pathname.slice(0, -1) : pathname;\n}\n\nexport function isExactPathPattern(pattern: string) {\n const normalizedPattern = normalizePattern(pattern);\n\n return !normalizedPattern.includes(\"*\") && !normalizedPattern.includes(\":\");\n}\n\nexport function compilePath(pattern: string): CompiledPath {\n const normalizedPattern = normalizePattern(pattern);\n const matcher = new URLPattern({ pathname: normalizedPattern });\n\n return {\n pattern: normalizedPattern,\n test(pathname: string) {\n const normalizedPathname = normalizePathname(pathname);\n const match = matcher.exec({ pathname: normalizedPathname });\n if (!match) {\n return null;\n }\n\n const params = Object.fromEntries(\n Object.entries(match.pathname.groups).filter(([name, value]) => {\n return !/^\\d+$/.test(name) && typeof value === \"string\";\n })\n );\n\n return { params };\n },\n };\n}\n\nexport function joinPaths(prefix: string, pathName: string) {\n if (!prefix || prefix === \"/\") {\n return pathName || \"/\";\n }\n\n if (!pathName || pathName === \"/\") {\n return prefix;\n }\n\n const normalizedPrefix = prefix.endsWith(\"/\") ? prefix.slice(0, -1) : prefix;\n const normalizedPath = pathName.startsWith(\"/\") ? pathName : `/${pathName}`;\n\n return `${normalizedPrefix}${normalizedPath}`;\n}\n"]}
package/dist/vite.d.ts CHANGED
@@ -13,6 +13,7 @@ export interface TreesapVitePluginOptions {
13
13
  appEntryPath?: string;
14
14
  browserEntry?: string;
15
15
  islands?: NormalizedTreesapIslandEntry[];
16
+ islandRuntimeEntry?: string;
16
17
  spaBase?: string;
17
18
  spaIndexHtml?: string;
18
19
  spaEntryModule?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,UAAU,EAEhB,MAAM,MAAM,CAAC;AASd,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,UAAU,4BAA4B;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AA6DD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,WAS7C;AAuPD,wBAAgB,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAmFjE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,qCA6BtE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;;;EAoDA;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,UAWA"}
1
+ {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,UAAU,EAEhB,MAAM,MAAM,CAAC;AASd,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,UAAU,4BAA4B;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAiED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,WAS7C;AA6QD,wBAAgB,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAwFjE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,qCA6BtE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;;;EAoDA;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,UAWA"}
package/dist/vite.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
4
5
  import { build, defineConfig, mergeConfig, } from "vite";
5
6
  import { sendNodeResponse, toWebRequest } from "./node.js";
6
7
  function resolveRuntimeMode() {
@@ -35,6 +36,9 @@ function stripQuery(id) {
35
36
  return id.replace(/\?.*$/, "");
36
37
  }
37
38
  function createDevEntryScriptPath(entry) {
39
+ if (path.isAbsolute(entry)) {
40
+ return `/@fs/${entry.replaceAll("\\", "/").replace(/^\/+/, "")}`;
41
+ }
38
42
  return `/${normalizeManifestLookupPath(entry)}`;
39
43
  }
40
44
  function normalizeSpaBase(base) {
@@ -128,6 +132,18 @@ function resolveIslandEntries(options) {
128
132
  };
129
133
  });
130
134
  }
135
+ function resolveIslandRuntimeEntry() {
136
+ const runtimeDir = path.dirname(fileURLToPath(import.meta.url));
137
+ const candidates = [
138
+ path.resolve(runtimeDir, "island-runtime.js"),
139
+ path.resolve(runtimeDir, "island-runtime.ts"),
140
+ ];
141
+ const resolved = candidates.find((candidate) => existsSync(candidate));
142
+ if (!resolved) {
143
+ throw new Error("Treesap could not resolve its island runtime module.");
144
+ }
145
+ return resolved;
146
+ }
131
147
  function createClientBuildInputs(options) {
132
148
  const browserEntry = resolveBrowserEntry(options);
133
149
  const islandEntries = resolveIslandEntries(options);
@@ -137,6 +153,9 @@ function createClientBuildInputs(options) {
137
153
  islandEntries.forEach((island) => {
138
154
  input[`island-${island.name}`] = island.absolutePath;
139
155
  });
156
+ if (islandEntries.length > 0) {
157
+ input["treesap-island-runtime"] = resolveIslandRuntimeEntry();
158
+ }
140
159
  return input;
141
160
  }
142
161
  function createTreesapDefineConfig(options) {
@@ -169,6 +188,7 @@ function createTreesapDevConfig(options) {
169
188
  appEntryPath: resolveAppEntry(options),
170
189
  browserEntry: resolveBrowserEntry(options).absolutePath,
171
190
  islands: resolveIslandEntries(options),
191
+ islandRuntimeEntry: resolveIslandRuntimeEntry(),
172
192
  }),
173
193
  ...(options.plugins ?? []),
174
194
  ],
@@ -186,6 +206,7 @@ function createTreesapClientBuildConfig(options) {
186
206
  appEntryPath: resolveAppEntry(options),
187
207
  browserEntry: resolveBrowserEntry(options).absolutePath,
188
208
  islands: resolveIslandEntries(options),
209
+ islandRuntimeEntry: resolveIslandRuntimeEntry(),
189
210
  }),
190
211
  ...(options.plugins ?? []),
191
212
  ],
@@ -210,6 +231,7 @@ function createTreesapServerBuildConfig(options) {
210
231
  appEntryPath: resolveAppEntry(options),
211
232
  browserEntry: resolveBrowserEntry(options).absolutePath,
212
233
  islands: resolveIslandEntries(options),
234
+ islandRuntimeEntry: resolveIslandRuntimeEntry(),
213
235
  }),
214
236
  ...(options.plugins ?? []),
215
237
  ],
@@ -248,10 +270,10 @@ export function treesap(options) {
248
270
  const spaIndexHtml = options.spaIndexHtml ?? "src/app/index.html";
249
271
  const spaEntryModule = options.spaEntryModule ?? "/src/app/main.tsx";
250
272
  const appEntryPath = options.appEntryPath ? path.resolve(options.appEntryPath) : null;
251
- const browserEntry = options.browserEntry
252
- ? path.resolve(options.browserEntry)
253
- : null;
254
273
  const islandEntries = options.islands ?? [];
274
+ const islandRuntimeEntry = options.islandRuntimeEntry
275
+ ? path.resolve(options.islandRuntimeEntry)
276
+ : null;
255
277
  return {
256
278
  name: "treesap",
257
279
  transform(code, id) {
@@ -259,23 +281,25 @@ export function treesap(options) {
259
281
  return null;
260
282
  }
261
283
  const moduleId = path.resolve(stripQuery(id));
262
- const injectedRegistry = `globalThis.__TREESAP_ISLANDS__ = ${JSON.stringify(Object.fromEntries(islandEntries.map((entry) => [entry.name, entry.entry])))};`;
284
+ const injectedGlobals = [
285
+ `globalThis.__TREESAP_ISLANDS__ = ${JSON.stringify(Object.fromEntries(islandEntries.map((entry) => [entry.name, entry.entry])))};`,
286
+ islandRuntimeEntry
287
+ ? `globalThis.__TREESAP_ISLAND_RUNTIME_ENTRY__ = ${JSON.stringify(islandRuntimeEntry)};`
288
+ : null,
289
+ ]
290
+ .filter(Boolean)
291
+ .join("\n");
263
292
  if (appEntryPath && moduleId === appEntryPath) {
264
- if (code.includes("globalThis.__TREESAP_ISLANDS__")) {
293
+ if (code.includes("globalThis.__TREESAP_ISLANDS__") &&
294
+ code.includes("globalThis.__TREESAP_ISLAND_RUNTIME_ENTRY__")) {
265
295
  return null;
266
296
  }
267
297
  return {
268
- code: `${injectedRegistry}\n${code}`,
298
+ code: `${injectedGlobals}\n${code}`,
269
299
  map: null,
270
300
  };
271
301
  }
272
- if (!browserEntry || moduleId !== browserEntry || code.includes(`"treesap/island-runtime"`)) {
273
- return null;
274
- }
275
- return {
276
- code: `import "treesap/island-runtime";\n${code}`,
277
- map: null,
278
- };
302
+ return null;
279
303
  },
280
304
  configureServer(server) {
281
305
  server.middlewares.use(async (req, res, next) => {
package/dist/vite.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,KAAK,EACL,YAAY,EACZ,WAAW,GAKZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAwC3D,SAAS,kBAAkB;IACzB,MAAM,OAAO,GAAI,MAAM,CAAC,IAEtB,CAAC,GAAG,CAAC;IAEP,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QACpE,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,IAAY;IACrD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,0BAA0B;IACjC,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iCAAiC,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,4BAA4B,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gCAAgC,CAAC;KAC9D,CAAC;IAEF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAa;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACrE,OAAO,UAAU;SACd,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,EAAU;IAC5B,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,QAAQ,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,OAAO,IAAI,2BAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,CACL,QAAQ,KAAK,eAAe;QAC5B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;QAC5B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;QAC5B,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QAC9B,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC;QACrC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,GAAW,EAAE,OAAe;IAC/D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;IAE1E,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,QAAQ,GAAG,gBAAgB,CAAC;IACvC,OAAO,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,OAAe;IAC1D,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,GAAG,OAAO,GAAG,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAAqB,EACrB,QAAgB,EAChB,OAAoF;IAEpF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAC9D,YAAY,EACZ,OAAO,CAAC,cAAc,CACvB,CAAC;IACF,OAAO,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAqB,EAAE,KAAa,EAAE,UAAkB;IACpF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAErC,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,gDAAgD,UAAU,QAAQ,KAAK,GAAG,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,wBAAwB,UAAU,QAAQ,KAAK,yCAAyC,CACzF,CAAC;IACJ,CAAC;IAED,OAAO,GAAgE,CAAC;AAC1E,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAuB;IAChD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAmC;IAC9D,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,oBAAoB,CAAC;IAElE,OAAO;QACL,KAAK,EAAE,2BAA2B,CAAC,YAAY,CAAC;QAChD,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAmC;IAC1D,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAmC;IAEnC,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IAElD,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACtD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAErC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,mBAAmB,cAAc,yCAAyC,CAC3E,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,2BAA2B,CAAC,eAAe,CAAC;YACnD,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;SAClD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,mBAAmB,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,mBAAmB,CAAC;KAC9C,CAAC;IAEF,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAmC;IAClE,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,KAAK,GAA2B;QACpC,OAAO,EAAE,YAAY,CAAC,YAAY;KACnC,CAAC;IAEF,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/B,KAAK,CAAC,UAAU,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,wBAAwB,CAAC,GAAG,yBAAyB,EAAE,CAAC;IAChE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAmC;IACpE,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CACtC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CACxE,CAAC;IAEF,OAAO;QACL,gCAAgC,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;KAChE,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAmC;IACpE,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C,OAAO,WAAW,CAChB;QACE,OAAO,EAAE,QAAQ;QACjB,IAAI;QACJ,MAAM,EAAE,yBAAyB,CAAC,OAAO,CAAC;QAC1C,GAAG,EAAE;YACH,UAAU,EAAE,CAAC,MAAM,CAAC;SACrB;KACF,EACD;QACE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,EAAE,SAAS;KACnB,CACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAmC;IACjE,OAAO,WAAW,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE;QACrD,IAAI,EAAE,GAAG;QACT,OAAO,EAAE;YACP,OAAO,CAAC;gBACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC;gBACtC,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY;gBACvD,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC;gBACtC,kBAAkB,EAAE,yBAAyB,EAAE;aAChD,CAAC;YACF,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;SAC3B;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,8BAA8B,CACrC,OAAmC;IAEnC,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C,OAAO,WAAW,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE;QACrD,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;QACvC,OAAO,EAAE;YACP,OAAO,CAAC;gBACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC;gBACtC,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY;gBACvD,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC;gBACtC,kBAAkB,EAAE,yBAAyB,EAAE;aAChD,CAAC;YACF,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;SAC3B;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,aAAa;YACrB,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE;gBACf,KAAK,EAAE,uBAAuB,CAAC,OAAO,CAAC;aACxC;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,8BAA8B,CACrC,OAAmC;IAEnC,OAAO,WAAW,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE;QACrD,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE;YACP,OAAO,CAAC;gBACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC;gBACtC,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY;gBACvD,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC;gBACtC,kBAAkB,EAAE,yBAAyB,EAAE;aAChD,CAAC;YACF,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;SAC3B;QACD,KAAK,EAAE;YACL,GAAG,EAAE,OAAO,CAAC,WAAW,IAAI,cAAc;YAC1C,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,aAAa;YACrB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE;gBACf,QAAQ,EAAE;oBACR,IAAI;oBACJ,MAAM;oBACN,KAAK;oBACL,QAAQ;oBACR,QAAQ;oBACR,QAAQ;oBACR,QAAQ;iBACT;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,KAAK;iBACd;aACF;SACF;QACD,GAAG,EAAE;YACH,GAAG,EAAE;gBACH,OAAO,EAAE,WAAW;gBACpB,YAAY,EAAE,UAAU;aACzB;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAiC;IACvD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,iBAAiB,CAAC;IACvE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,oBAAoB,CAAC;IAClE,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,mBAAmB,CAAC;IACrE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtF,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAC5C,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB;QACnD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC1C,CAAC,CAAC,IAAI,CAAC;IAET,OAAO;QACL,IAAI,EAAE,SAAS;QACf,SAAS,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM,eAAe,GAAG;gBACtB,oCAAoC,IAAI,CAAC,SAAS,CAChD,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5E,GAAG;gBACJ,kBAAkB;oBAChB,CAAC,CAAC,iDAAiD,IAAI,CAAC,SAAS,CAC7D,kBAAkB,CACnB,GAAG;oBACN,CAAC,CAAC,IAAI;aACT;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,IAAI,YAAY,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC9C,IACE,IAAI,CAAC,QAAQ,CAAC,gCAAgC,CAAC;oBAC/C,IAAI,CAAC,QAAQ,CAAC,6CAA6C,CAAC,EAC5D,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,OAAO;oBACL,IAAI,EAAE,GAAG,eAAe,KAAK,IAAI,EAAE;oBACnC,GAAG,EAAE,IAAI;iBACV,CAAC;YACJ,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QACD,eAAe,CAAC,MAAM;YACpB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBAC9C,MAAM,YAAY,GAAG,2BAA2B,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC1E,IAAI,YAAY,EAAE,CAAC;oBACjB,GAAG,CAAC,GAAG,GAAG,YAAY,CAAC;gBACzB,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,sBAAsB,CAAC,CAAC,QAAQ,CAAC;gBAE1E,IAAI,CAAC;oBACH,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC5B,IAAI,EAAE,CAAC;wBACP,OAAO;oBACT,CAAC;oBAED,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;wBACzC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE;4BAClD,YAAY;4BACZ,cAAc;yBACf,CAAC,CAAC;wBACH,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;wBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;wBAC1D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACd,OAAO;oBACT,CAAC;oBAED,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;oBAC7E,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;oBACxC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC1C,MAAM,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACxC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,gBAAgB,CAAC,KAAc,CAAC,CAAC;oBACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACrB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;oBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAmC;IACrE,OAAO,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAClC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAED,OAAO;YACL,GAAG,yBAAyB,CAAC,OAAO,CAAC;YACrC,IAAI,EAAE,GAAG;YACT,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE;gBACP,KAAK,CAAC,QAAQ,CAAC,OAAO;oBACpB,MAAM,KAAK,CAAC;wBACV,GAAG,8BAA8B,CAAC,OAAO,CAAC;wBAC1C,UAAU,EAAE,KAAK;qBAClB,CAAC,CAAC;oBAEH,MAAM,KAAK,CAAC;wBACV,GAAG,8BAA8B,CAAC,OAAO,CAAC;wBAC1C,UAAU,EAAE,KAAK;qBAClB,CAAC,CAAC;oBAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;wBAC1D,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;oBAC7B,CAAC,CAAC,CAAC;gBACL,CAAC;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAOlC;IACC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,kBAAkB,EAAE,CAAC;IAClD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CACxB,IAAI,GAAG,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;YAC7B,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC;SACxC,CAAC,CACH,CAAC;QAEF,OAAO;YACL,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,0BAA0B,EAAE,CAAC;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC;IAEjC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,EAAc;YACvB,MAAM,EAAE,EAAc;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAG9D,CAAC;IACF,MAAM,WAAW,GAAG,2BAA2B,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAE/D,MAAM,KAAK,GACT,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QACvB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC7C,MAAM,aAAa,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG;gBAC7B,CAAC,CAAC,2BAA2B,CAAC,KAAK,CAAC,GAAG,CAAC;gBACxC,CAAC,CAAC,SAAS,CAAC;YAEd,OAAO,CACL,aAAa,KAAK,WAAW;gBAC7B,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACnC,aAAa,KAAK,WAAW;gBAC7B,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,IAAI,CAC9C,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEV,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACnE,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAKlC;IACC,OAAO,CACL,kBAAkB,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrD,SAAS,EAAE,EAAE;KACd,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CACtB,CAAC;AACJ,CAAC","sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport {\n build,\n defineConfig,\n mergeConfig,\n type Plugin,\n type PluginOption,\n type UserConfig,\n type ViteDevServer,\n} from \"vite\";\nimport { sendNodeResponse, toWebRequest } from \"./node.ts\";\n\ninterface ManifestEntry {\n file: string;\n src?: string;\n css?: string[];\n}\n\nexport interface TreesapIslandsOptions {\n entries: Record<string, string>;\n}\n\ninterface NormalizedTreesapIslandEntry {\n name: string;\n entry: string;\n absolutePath: string;\n}\n\nexport interface TreesapVitePluginOptions {\n appEntry: string;\n appFactoryExport?: string;\n appEntryPath?: string;\n browserEntry?: string;\n islands?: NormalizedTreesapIslandEntry[];\n islandRuntimeEntry?: string;\n spaBase?: string;\n spaIndexHtml?: string;\n spaEntryModule?: string;\n}\n\nexport interface DefineTreesapConfigOptions {\n appEntry: string;\n appFactoryExport?: string;\n serverEntry?: string;\n browserEntry?: string;\n islands?: TreesapIslandsOptions;\n plugins?: PluginOption[];\n vite?: UserConfig;\n}\n\nfunction resolveRuntimeMode() {\n const viteEnv = (import.meta as ImportMeta & {\n env?: { PROD?: boolean };\n }).env;\n\n if (viteEnv?.PROD === true || process.env.NODE_ENV === \"production\") {\n return \"production\";\n }\n\n return \"development\";\n}\n\nfunction normalizePublicPath(href: string, base: string) {\n if (href.startsWith(\"/\")) {\n return href;\n }\n\n return `${base.replace(/\\/$/, \"\")}/${href}`;\n}\n\nfunction resolveDefaultManifestPath() {\n const candidates = [\n path.resolve(process.cwd(), \"dist/client/.vite/manifest.json\"),\n path.resolve(process.cwd(), \"static/.vite/manifest.json\"),\n path.resolve(process.cwd(), \"static/app/.vite/manifest.json\"),\n ];\n\n return candidates.find((candidate) => existsSync(candidate)) ?? candidates[0];\n}\n\nfunction normalizeManifestLookupPath(entry: string) {\n const normalized = path.posix.normalize(entry.replaceAll(\"\\\\\", \"/\"));\n return normalized\n .replace(/^\\/+/, \"\")\n .replace(/^(\\.\\.\\/)+/, \"\")\n .replace(/^\\.\\//, \"\");\n}\n\nfunction stripQuery(id: string) {\n return id.replace(/\\?.*$/, \"\");\n}\n\nfunction createDevEntryScriptPath(entry: string) {\n if (path.isAbsolute(entry)) {\n return `/@fs/${entry.replaceAll(\"\\\\\", \"/\").replace(/^\\/+/, \"\")}`;\n }\n\n return `/${normalizeManifestLookupPath(entry)}`;\n}\n\nfunction normalizeSpaBase(base: string) {\n if (!base.startsWith(\"/\")) {\n return `/${base}`;\n }\n\n return base.endsWith(\"/\") ? base.slice(0, -1) : base;\n}\n\nfunction isFileRequest(pathname: string) {\n const lastSegment = pathname.split(\"/\").at(-1) ?? \"\";\n return lastSegment.includes(\".\");\n}\n\nexport function isViteRequest(pathname: string) {\n return (\n pathname === \"/@vite/client\" ||\n pathname.startsWith(\"/@fs/\") ||\n pathname.startsWith(\"/@id/\") ||\n pathname.startsWith(\"/@vite/\") ||\n pathname.startsWith(\"/node_modules/\") ||\n pathname.startsWith(\"/src/\")\n );\n}\n\nfunction maybeRewriteSpaAssetRequest(url: string, spaBase: string) {\n const currentUrl = new URL(url, \"http://treesap.local\");\n if (!currentUrl.pathname.startsWith(`${spaBase}/`)) {\n return null;\n }\n\n const strippedPathname = currentUrl.pathname.slice(spaBase.length) || \"/\";\n\n if (!isViteRequest(strippedPathname) && !isFileRequest(strippedPathname)) {\n return null;\n }\n\n currentUrl.pathname = strippedPathname;\n return `${currentUrl.pathname}${currentUrl.search}`;\n}\n\nfunction isSpaShellRequest(pathname: string, spaBase: string) {\n if (pathname === spaBase || pathname === `${spaBase}/`) {\n return true;\n }\n\n if (!pathname.startsWith(`${spaBase}/`)) {\n return false;\n }\n\n const suffix = pathname.slice(spaBase.length + 1);\n return suffix.length > 0 && !suffix.split(\"/\").at(-1)?.includes(\".\");\n}\n\nasync function renderSpaShell(\n server: ViteDevServer,\n pathname: string,\n options: Required<Pick<TreesapVitePluginOptions, \"spaIndexHtml\" | \"spaEntryModule\">>\n) {\n const templatePath = path.resolve(server.config.root, options.spaIndexHtml);\n const template = (await readFile(templatePath, \"utf-8\")).replace(\n \"./main.tsx\",\n options.spaEntryModule\n );\n return server.transformIndexHtml(pathname, template);\n}\n\nasync function loadTreesapApp(server: ViteDevServer, entry: string, exportName: string) {\n const module = await server.ssrLoadModule(entry);\n const createApp = module[exportName];\n\n if (typeof createApp !== \"function\") {\n throw new Error(\n `Treesap could not find exported app factory \"${exportName}\" in ${entry}.`\n );\n }\n\n const app = await createApp();\n if (!app || typeof app.fetch !== \"function\") {\n throw new Error(\n `Treesap app factory \"${exportName}\" in ${entry} did not return an object with fetch().`\n );\n }\n\n return app as { fetch(request: Request): Response | Promise<Response> };\n}\n\nfunction resolveConfigRoot(viteConfig?: UserConfig) {\n return path.resolve(viteConfig?.root ?? process.cwd());\n}\n\nfunction resolveBrowserEntry(options: DefineTreesapConfigOptions) {\n const root = resolveConfigRoot(options.vite);\n const browserEntry = options.browserEntry ?? \"src/entry-style.ts\";\n\n return {\n entry: normalizeManifestLookupPath(browserEntry),\n absolutePath: path.resolve(root, browserEntry),\n };\n}\n\nfunction resolveAppEntry(options: DefineTreesapConfigOptions) {\n const root = resolveConfigRoot(options.vite);\n\n return path.resolve(root, options.appEntry);\n}\n\nfunction resolveIslandEntries(\n options: DefineTreesapConfigOptions\n): NormalizedTreesapIslandEntry[] {\n const root = resolveConfigRoot(options.vite);\n const rawEntries = options.islands?.entries ?? {};\n\n return Object.entries(rawEntries).map(([name, entry]) => {\n const normalizedName = name.trim();\n const normalizedEntry = entry.trim();\n\n if (!normalizedName) {\n throw new Error(\"Treesap islands entries must have a non-empty name.\");\n }\n\n if (!normalizedEntry) {\n throw new Error(\n `Treesap island \"${normalizedName}\" must point to a non-empty entry path.`\n );\n }\n\n return {\n name: normalizedName,\n entry: normalizeManifestLookupPath(normalizedEntry),\n absolutePath: path.resolve(root, normalizedEntry),\n };\n });\n}\n\nfunction resolveIslandRuntimeEntry() {\n const runtimeDir = path.dirname(fileURLToPath(import.meta.url));\n const candidates = [\n path.resolve(runtimeDir, \"island-runtime.js\"),\n path.resolve(runtimeDir, \"island-runtime.ts\"),\n ];\n\n const resolved = candidates.find((candidate) => existsSync(candidate));\n if (!resolved) {\n throw new Error(\"Treesap could not resolve its island runtime module.\");\n }\n\n return resolved;\n}\n\nfunction createClientBuildInputs(options: DefineTreesapConfigOptions) {\n const browserEntry = resolveBrowserEntry(options);\n const islandEntries = resolveIslandEntries(options);\n\n const input: Record<string, string> = {\n browser: browserEntry.absolutePath,\n };\n\n islandEntries.forEach((island) => {\n input[`island-${island.name}`] = island.absolutePath;\n });\n\n if (islandEntries.length > 0) {\n input[\"treesap-island-runtime\"] = resolveIslandRuntimeEntry();\n }\n\n return input;\n}\n\nfunction createTreesapDefineConfig(options: DefineTreesapConfigOptions) {\n const islandEntries = Object.fromEntries(\n resolveIslandEntries(options).map((entry) => [entry.name, entry.entry])\n );\n\n return {\n \"globalThis.__TREESAP_ISLANDS__\": JSON.stringify(islandEntries),\n };\n}\n\nfunction createTreesapSharedConfig(options: DefineTreesapConfigOptions): UserConfig {\n const root = resolveConfigRoot(options.vite);\n\n return mergeConfig(\n {\n appType: \"custom\",\n root,\n define: createTreesapDefineConfig(options),\n ssr: {\n noExternal: [\"hono\"],\n },\n },\n {\n ...(options.vite ?? {}),\n plugins: undefined,\n }\n );\n}\n\nfunction createTreesapDevConfig(options: DefineTreesapConfigOptions): UserConfig {\n return mergeConfig(createTreesapSharedConfig(options), {\n base: \"/\",\n plugins: [\n treesap({\n appEntry: options.appEntry,\n appFactoryExport: options.appFactoryExport,\n appEntryPath: resolveAppEntry(options),\n browserEntry: resolveBrowserEntry(options).absolutePath,\n islands: resolveIslandEntries(options),\n islandRuntimeEntry: resolveIslandRuntimeEntry(),\n }),\n ...(options.plugins ?? []),\n ],\n });\n}\n\nfunction createTreesapClientBuildConfig(\n options: DefineTreesapConfigOptions\n): UserConfig {\n const root = resolveConfigRoot(options.vite);\n\n return mergeConfig(createTreesapSharedConfig(options), {\n base: \"/\",\n publicDir: path.resolve(root, \"public\"),\n plugins: [\n treesap({\n appEntry: options.appEntry,\n appFactoryExport: options.appFactoryExport,\n appEntryPath: resolveAppEntry(options),\n browserEntry: resolveBrowserEntry(options).absolutePath,\n islands: resolveIslandEntries(options),\n islandRuntimeEntry: resolveIslandRuntimeEntry(),\n }),\n ...(options.plugins ?? []),\n ],\n build: {\n manifest: true,\n outDir: \"dist/client\",\n emptyOutDir: true,\n rolldownOptions: {\n input: createClientBuildInputs(options),\n },\n },\n });\n}\n\nfunction createTreesapServerBuildConfig(\n options: DefineTreesapConfigOptions\n): UserConfig {\n return mergeConfig(createTreesapSharedConfig(options), {\n base: \"/\",\n publicDir: false,\n plugins: [\n treesap({\n appEntry: options.appEntry,\n appFactoryExport: options.appFactoryExport,\n appEntryPath: resolveAppEntry(options),\n browserEntry: resolveBrowserEntry(options).absolutePath,\n islands: resolveIslandEntries(options),\n islandRuntimeEntry: resolveIslandRuntimeEntry(),\n }),\n ...(options.plugins ?? []),\n ],\n build: {\n ssr: options.serverEntry ?? \"src/main.tsx\",\n target: \"node22\",\n outDir: \"dist/server\",\n sourcemap: true,\n emptyOutDir: false,\n rolldownOptions: {\n external: [\n \"fs\",\n \"path\",\n \"url\",\n \"module\",\n \"crypto\",\n \"stream\",\n /^node:/,\n ],\n output: {\n format: \"esm\",\n },\n },\n },\n oxc: {\n jsx: {\n runtime: \"automatic\",\n importSource: \"hono/jsx\",\n },\n },\n });\n}\n\nexport function treesap(options: TreesapVitePluginOptions): Plugin {\n const spaBase = normalizeSpaBase(options.spaBase ?? \"/app\");\n const appFactoryExport = options.appFactoryExport ?? \"createServerApp\";\n const spaIndexHtml = options.spaIndexHtml ?? \"src/app/index.html\";\n const spaEntryModule = options.spaEntryModule ?? \"/src/app/main.tsx\";\n const appEntryPath = options.appEntryPath ? path.resolve(options.appEntryPath) : null;\n const islandEntries = options.islands ?? [];\n const islandRuntimeEntry = options.islandRuntimeEntry\n ? path.resolve(options.islandRuntimeEntry)\n : null;\n\n return {\n name: \"treesap\",\n transform(code, id) {\n if (islandEntries.length === 0) {\n return null;\n }\n\n const moduleId = path.resolve(stripQuery(id));\n const injectedGlobals = [\n `globalThis.__TREESAP_ISLANDS__ = ${JSON.stringify(\n Object.fromEntries(islandEntries.map((entry) => [entry.name, entry.entry]))\n )};`,\n islandRuntimeEntry\n ? `globalThis.__TREESAP_ISLAND_RUNTIME_ENTRY__ = ${JSON.stringify(\n islandRuntimeEntry\n )};`\n : null,\n ]\n .filter(Boolean)\n .join(\"\\n\");\n\n if (appEntryPath && moduleId === appEntryPath) {\n if (\n code.includes(\"globalThis.__TREESAP_ISLANDS__\") &&\n code.includes(\"globalThis.__TREESAP_ISLAND_RUNTIME_ENTRY__\")\n ) {\n return null;\n }\n\n return {\n code: `${injectedGlobals}\\n${code}`,\n map: null,\n };\n }\n\n return null;\n },\n configureServer(server) {\n server.middlewares.use(async (req, res, next) => {\n const rewrittenUrl = maybeRewriteSpaAssetRequest(req.url ?? \"/\", spaBase);\n if (rewrittenUrl) {\n req.url = rewrittenUrl;\n }\n\n const pathname = new URL(req.url ?? \"/\", \"http://treesap.local\").pathname;\n\n try {\n if (isViteRequest(pathname)) {\n next();\n return;\n }\n\n if (isSpaShellRequest(pathname, spaBase)) {\n const html = await renderSpaShell(server, pathname, {\n spaIndexHtml,\n spaEntryModule,\n });\n res.statusCode = 200;\n res.setHeader(\"Content-Type\", \"text/html; charset=UTF-8\");\n res.end(html);\n return;\n }\n\n const app = await loadTreesapApp(server, options.appEntry, appFactoryExport);\n const request = await toWebRequest(req);\n const response = await app.fetch(request);\n await sendNodeResponse(res, response);\n } catch (error) {\n server.ssrFixStacktrace(error as Error);\n console.error(error);\n res.statusCode = 500;\n res.setHeader(\"Content-Type\", \"text/plain; charset=UTF-8\");\n res.end(\"Internal Server Error\");\n }\n });\n },\n };\n}\n\nexport function defineTreesapConfig(options: DefineTreesapConfigOptions) {\n return defineConfig(({ command }) => {\n if (command === \"serve\") {\n return createTreesapDevConfig(options);\n }\n\n return {\n ...createTreesapSharedConfig(options),\n base: \"/\",\n publicDir: false,\n builder: {\n async buildApp(builder) {\n await build({\n ...createTreesapClientBuildConfig(options),\n configFile: false,\n });\n\n await build({\n ...createTreesapServerBuildConfig(options),\n configFile: false,\n });\n\n Object.values(builder.environments).forEach((environment) => {\n environment.isBuilt = true;\n });\n },\n },\n };\n });\n}\n\nexport function getViteEntryAssets(options: {\n entry: string;\n mode?: string;\n devScripts?: string[];\n devStyles?: string[];\n manifestPath?: string;\n base?: string;\n}) {\n const mode = options.mode ?? resolveRuntimeMode();\n if (mode !== \"production\") {\n const scripts = Array.from(\n new Set([\n ...(options.devScripts ?? []),\n createDevEntryScriptPath(options.entry),\n ])\n );\n\n return {\n scripts,\n styles: options.devStyles ?? [],\n };\n }\n\n const manifestPath = options.manifestPath ?? resolveDefaultManifestPath();\n const base = options.base ?? \"/\";\n\n if (!existsSync(manifestPath)) {\n return {\n scripts: [] as string[],\n styles: [] as string[],\n };\n }\n\n const manifest = JSON.parse(readFileSync(manifestPath, \"utf-8\")) as Record<\n string,\n ManifestEntry\n >;\n const lookupEntry = normalizeManifestLookupPath(options.entry);\n\n const entry =\n manifest[options.entry] ??\n Object.entries(manifest).find(([key, value]) => {\n const normalizedKey = normalizeManifestLookupPath(key);\n const normalizedSrc = value.src\n ? normalizeManifestLookupPath(value.src)\n : undefined;\n\n return (\n normalizedKey === lookupEntry ||\n normalizedKey.endsWith(lookupEntry) ||\n normalizedSrc === lookupEntry ||\n normalizedSrc?.endsWith(lookupEntry) === true\n );\n })?.[1];\n\n return {\n scripts: entry?.file ? [normalizePublicPath(entry.file, base)] : [],\n styles: (entry?.css ?? []).map((href) => normalizePublicPath(href, base)),\n };\n}\n\nexport function getViteModuleAsset(options: {\n entry: string;\n mode?: string;\n manifestPath?: string;\n base?: string;\n}) {\n return (\n getViteEntryAssets({\n entry: options.entry,\n mode: options.mode,\n manifestPath: options.manifestPath,\n base: options.base,\n devScripts: [createDevEntryScriptPath(options.entry)],\n devStyles: [],\n }).scripts[0] ?? null\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "treesap",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "description": "Opinionated Vite-first Node SSR framework.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",