reroute-js 0.0.5 → 0.0.7
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/cli/bin.js +281 -78
- package/cli/bin.js.map +18 -5
- package/cli/src/commands/gen.d.ts.map +1 -1
- package/cli/src/libs/tailwind.d.ts +0 -4
- package/cli/src/libs/tailwind.d.ts.map +1 -1
- package/core/index.js +83 -5
- package/core/index.js.map +5 -4
- package/core/src/bundler/transpile.d.ts.map +1 -1
- package/core/src/index.d.ts +1 -0
- package/core/src/index.d.ts.map +1 -1
- package/core/src/tailwind.d.ts +15 -0
- package/core/src/tailwind.d.ts.map +1 -0
- package/elysia/index.js +65 -7
- package/elysia/index.js.map +6 -5
- package/elysia/src/plugin.d.ts.map +1 -1
- package/package.json +1 -1
package/core/index.js.map
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../packages/core/src/utils/path.ts", "../../packages/core/src/bundler/hash.ts", "../../packages/core/src/bundler/transpile.ts", "../../packages/core/src/content/builder.ts", "../../packages/core/src/content/discovery.ts", "../../packages/core/src/content/metadata.ts", "../../packages/core/src/content/registry.ts", "../../packages/core/src/ssr/data.ts", "../../packages/core/src/ssr/modules.ts", "../../packages/core/src/ssr/seed.ts", "../../packages/core/src/ssr/render.ts", "../../node_modules/dedent/dist/dedent.mjs", "../../packages/core/src/template/html.ts", "../../packages/core/src/utils/cache.ts", "../../packages/core/src/utils/mime.ts", "../../packages/core/src/utils/compression.ts"],
|
|
3
|
+
"sources": ["../../packages/core/src/utils/path.ts", "../../packages/core/src/bundler/hash.ts", "../../packages/core/src/bundler/transpile.ts", "../../packages/core/src/content/builder.ts", "../../packages/core/src/content/discovery.ts", "../../packages/core/src/content/metadata.ts", "../../packages/core/src/content/registry.ts", "../../packages/core/src/ssr/data.ts", "../../packages/core/src/ssr/modules.ts", "../../packages/core/src/ssr/seed.ts", "../../packages/core/src/ssr/render.ts", "../../node_modules/dedent/dist/dedent.mjs", "../../packages/core/src/template/html.ts", "../../packages/core/src/tailwind.ts", "../../packages/core/src/utils/cache.ts", "../../packages/core/src/utils/mime.ts", "../../packages/core/src/utils/compression.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"export function join(...parts: string[]): string {\n\treturn parts.join('/').replace(/\\/+/g, '/');\n}\n\nexport function extname(p: string): string {\n\tconst i = p.lastIndexOf('.');\n\treturn i >= 0 ? p.slice(i) : '';\n}\n\nexport function basename(p: string, ext?: string): string {\n\tconst name = p.replace(/\\\\/g, '/').split('/').pop() || p;\n\treturn ext && name.endsWith(ext) ? name.slice(0, -ext.length) : name;\n}\n\nexport function stripStart(p: string, ch: string): string {\n\treturn p.startsWith(ch) ? p.slice(ch.length) : p;\n}\n\nexport function stripEnd(p: string, ch: string): string {\n\treturn p.endsWith(ch) ? p.slice(0, -ch.length) : p;\n}\n",
|
|
6
6
|
"export async function generateContentHash(content: string): Promise<string> {\n\tconst data = new TextEncoder().encode(content);\n\tconst buf = await crypto.subtle.digest('SHA-256', data);\n\tlet hex = '';\n\tfor (const b of new Uint8Array(buf)) hex += b.toString(16).padStart(2, '0');\n\treturn hex.slice(0, 8);\n}\n",
|
|
7
|
-
"import type { BuildOutput } from 'bun';\nimport type { BundleInfo, BundleOptions } from '../types';\nimport { basename, extname } from '../utils/path';\nimport { generateContentHash } from './hash';\n\nexport async function transpileFile(\n\tfilePath: string,\n\toriginalPath: string,\n\toptions: BundleOptions,\n\tbundleCache: Map<string, BundleInfo>,\n): Promise<BundleInfo> {\n\tconst src = await Bun.file(filePath).text();\n\tconst cacheKey = `${filePath}-${await generateContentHash(src)}`;\n\n\tif (bundleCache.has(cacheKey)) {\n\t\t// biome-ignore lint/style/noNonNullAssertion: it's okay\n\t\treturn bundleCache.get(cacheKey)!;\n\t}\n\n\tconsole.log(\n\t\t`[reroute] Building ${originalPath}${options.minify ? ' (minified)' : ''}...`,\n\t);\n\n\tasync function doBuild(sm: 'external' | 'none') {\n\t\treturn await Bun.build({\n\t\t\tentrypoints: [filePath],\n\t\t\ttarget: 'browser',\n\t\t\tformat: 'esm',\n\t\t\tminify: options.minify,\n\t\t\tsplitting: false,\n\t\t\tsourcemap: sm,\n\t\t\tdefine: {\n\t\t\t\t'process.env.NODE_ENV': options.minify\n\t\t\t\t\t? '\"production\"'\n\t\t\t\t\t: '\"development\"',\n\t\t\t},\n\t\t});\n\t}\n\n\tlet result: BuildOutput;\n\ttry {\n\t\tresult = await doBuild(options.sourcemap ? 'external' : 'none');\n\t
|
|
7
|
+
"import type { BuildOutput } from 'bun';\nimport type { BundleInfo, BundleOptions } from '../types';\nimport { basename, extname } from '../utils/path';\nimport { generateContentHash } from './hash';\n\nexport async function transpileFile(\n\tfilePath: string,\n\toriginalPath: string,\n\toptions: BundleOptions,\n\tbundleCache: Map<string, BundleInfo>,\n): Promise<BundleInfo> {\n\tconst src = await Bun.file(filePath).text();\n\tconst cacheKey = `${filePath}-${await generateContentHash(src)}`;\n\n\tif (bundleCache.has(cacheKey)) {\n\t\t// biome-ignore lint/style/noNonNullAssertion: it's okay\n\t\treturn bundleCache.get(cacheKey)!;\n\t}\n\n\tconsole.log(\n\t\t`[reroute] Building ${originalPath}${options.minify ? ' (minified)' : ''}...`,\n\t);\n\n\tasync function doBuild(sm: 'external' | 'none') {\n\t\treturn await Bun.build({\n\t\t\tentrypoints: [filePath],\n\t\t\ttarget: 'browser',\n\t\t\tformat: 'esm',\n\t\t\tminify: options.minify,\n\t\t\tsplitting: false,\n\t\t\tsourcemap: sm,\n\t\t\tdefine: {\n\t\t\t\t'process.env.NODE_ENV': options.minify\n\t\t\t\t\t? '\"production\"'\n\t\t\t\t\t: '\"development\"',\n\t\t\t},\n\t\t});\n\t}\n\n\tlet result: BuildOutput;\n\ttry {\n\t\tresult = await doBuild(options.sourcemap ? 'external' : 'none');\n\t} catch (error) {\n\t\t// Bun.build may throw (e.g., EISDIR) instead of returning success=false\n\t\tconsole.warn(\n\t\t\t`[reroute] Build errored for ${originalPath} (sourcemap external). Retrying without sourcemap...`,\n\t\t\terror,\n\t\t);\n\t\tresult = await doBuild('none');\n\t}\n\n\tif (!result.success) {\n\t\tconsole.error(`[reroute] Failed to build ${filePath}`);\n\t\tfor (const log of result.logs) console.error(log);\n\t\tthrow new Error(`Failed to transpile ${filePath}`);\n\t}\n\n\tconst output = result.outputs[0];\n\tconst code = await output.text();\n\n\tlet sourceMap: string | undefined;\n\tif (options.sourcemap && result.outputs.length > 1) {\n\t\tconst mapOutput = result.outputs.find((o) => o.path.endsWith('.map'));\n\t\tif (mapOutput) {\n\t\t\tsourceMap = await mapOutput.text();\n\t\t}\n\t}\n\n\tconst contentHash = await generateContentHash(code);\n\n\tconst bundleInfo: BundleInfo = {\n\t\thash: contentHash,\n\t\tcode,\n\t\tsourceMap,\n\t};\n\n\tbundleCache.set(cacheKey, bundleInfo);\n\n\tconst sizeKB = (code.length / 1024).toFixed(2);\n\tconst gzippedSize = Bun.gzipSync(new TextEncoder().encode(code)).length;\n\tconst gzippedKB = (gzippedSize / 1024).toFixed(2);\n\tconsole.log(\n\t\t`[reroute] Built ${originalPath} -> ${sizeKB} KB (${gzippedKB} KB gzipped)`,\n\t);\n\n\treturn bundleInfo;\n}\n\n// (no helpers)\n\nexport async function getBundleUrlsFor(\n\tmodules: string | string[],\n\tclientDir: string,\n\tprefix: string,\n\toptions: BundleOptions,\n\tbundleCache: Map<string, BundleInfo>,\n): Promise<string[]> {\n\tconst mods = Array.isArray(modules) ? modules : [modules];\n\tconst urls: string[] = [];\n\tconst { join } = await import('../utils/path');\n\n\tfor (const mod of mods) {\n\t\tconst rel = mod.replace(/^\\.\\//, '');\n\t\tconst fullPath = join(clientDir, rel);\n\t\ttry {\n\t\t\tconst bundleInfo = await transpileFile(\n\t\t\t\tfullPath,\n\t\t\t\trel,\n\t\t\t\toptions,\n\t\t\t\tbundleCache,\n\t\t\t);\n\t\t\tconst base = basename(rel, extname(rel));\n\t\t\turls.push(`${prefix}/${base}.${bundleInfo.hash}.js`);\n\t\t} catch (error) {\n\t\t\tconsole.error(`[reroute] Error getting bundle URL for ${rel}:`, error);\n\t\t\turls.push(`${prefix}/${rel}`);\n\t\t}\n\t}\n\treturn urls;\n}\n",
|
|
8
8
|
"import { mkdir, readdir } from 'node:fs/promises';\nimport { pathToFileURL } from 'node:url';\nimport type { Doc } from '../types';\nimport { join } from '../utils/path';\n\nasync function sha8(text: string): Promise<string> {\n\tconst data = new TextEncoder().encode(text);\n\tconst buf = await crypto.subtle.digest('SHA-256', data);\n\tlet hex = '';\n\tfor (const b of new Uint8Array(buf)) hex += b.toString(16).padStart(2, '0');\n\treturn hex.slice(0, 8);\n}\n\nasync function buildChunkFor(\n\tabsSrc: string,\n\tcwd: string,\n\tcollection: string,\n\tname: string,\n): Promise<{ outPath: string; url: string; code: string } | null> {\n\ttry {\n\t\tconst result = await Bun.build({\n\t\t\tentrypoints: [absSrc],\n\t\t\ttarget: 'browser',\n\t\t\tformat: 'esm',\n\t\t\tsplitting: false,\n\t\t\tsourcemap: 'none',\n\t\t\tminify: false,\n\t\t\tdefine: { 'process.env.NODE_ENV': '\"production\"' },\n\t\t});\n\t\tif (!result.success) return null;\n\t\tconst code = await result.outputs[0]?.text();\n\t\tconst hash = await sha8(code);\n\t\tconst relDir = join('.reroute', 'chunks', collection);\n\t\tconst absDir = join(cwd, relDir);\n\t\tconst outFile = `${name}.${hash}.js`;\n\t\tconst outPath = join(absDir, outFile);\n\t\tawait mkdir(absDir, { recursive: true });\n\t\tconst exists = await Bun.file(outPath).exists();\n\t\tif (!exists) await Bun.write(outPath, code);\n\t\tconst url = `/${join(relDir, outFile).replace(/\\\\+/g, '/')}`;\n\t\treturn { outPath, url, code };\n\t} catch (e) {\n\t\tconsole.error('[reroute] Failed to build content chunk:', absSrc, e);\n\t\treturn null;\n\t}\n}\n\nasync function getMetaFor(absSrc: string, isWatchMode: boolean): Promise<Doc> {\n\ttry {\n\t\tconst url =\n\t\t\tpathToFileURL(absSrc).href + (isWatchMode ? `?t=${Date.now()}` : '');\n\t\tconst m = (await import(url)) as Doc;\n\t\treturn (m as Doc).meta || (m as Doc).frontmatter || {};\n\t} catch {\n\t\treturn {} as Doc;\n\t}\n}\n\nexport async function rebuildContentArtifacts(\n\tcwd: string,\n\tclientDir: string,\n\tisWatchMode = true,\n): Promise<void> {\n\tconst routesRoot = join(clientDir, 'routes');\n\tconst items: Array<{\n\t\tcollection: string;\n\t\tname: string;\n\t\tslug: string;\n\t\thref: string;\n\t\tmoduleUrl: string;\n\t\tmeta: Doc;\n\t}> = [];\n\n\ttry {\n\t\tconst entries = await readdir(routesRoot, { withFileTypes: true });\n\t\tfor (const dir of entries) {\n\t\t\tif (!dir.isDirectory()) continue;\n\t\t\tconst collection = dir.name;\n\t\t\tconst contentDir = join(routesRoot, collection, 'content');\n\t\t\tlet contentFiles: string[] = [];\n\t\t\ttry {\n\t\t\t\tconst list = await readdir(contentDir, { withFileTypes: true });\n\t\t\t\tcontentFiles = list\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t(e) =>\n\t\t\t\t\t\t\te.isFile() &&\n\t\t\t\t\t\t\t/\\.(tsx|ts)$/.test(e.name) &&\n\t\t\t\t\t\t\t!e.name.startsWith('_'),\n\t\t\t\t\t)\n\t\t\t\t\t.map((e) => e.name);\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (const file of contentFiles) {\n\t\t\t\tconst name = file.replace(/\\.(tsx|ts)$/, '');\n\t\t\t\tconst absSrc = join(contentDir, file);\n\t\t\t\tconst chunk = await buildChunkFor(absSrc, cwd, collection, name);\n\t\t\t\tif (!chunk) continue;\n\t\t\t\tconst meta = await getMetaFor(absSrc, isWatchMode);\n\t\t\t\titems.push({\n\t\t\t\t\tcollection,\n\t\t\t\t\tname,\n\t\t\t\t\tslug: name,\n\t\t\t\t\thref: `/${collection}/${name}`,\n\t\t\t\t\tmoduleUrl: chunk.url,\n\t\t\t\t\tmeta,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error('[reroute] Failed to scan content routes:', e);\n\t\treturn;\n\t}\n\n\t// Write .reroute/content.ts\n\ttry {\n\t\tconst lines: string[] = [];\n\t\tlines.push('// 🚨 Auto-generated by Reroute - DO NOT EDIT 🚨');\n\t\tlines.push('/* eslint-disable */');\n\t\tlines.push('// @ts-nocheck');\n\t\tlines.push('');\n\t\tlines.push('export const contents = [');\n\t\tfor (const e of items) {\n\t\t\tlines.push(\n\t\t\t\t\" { collection: '\" +\n\t\t\t\t\te.collection +\n\t\t\t\t\t\"', slug: '\" +\n\t\t\t\t\te.slug +\n\t\t\t\t\t\"', name: '\" +\n\t\t\t\t\te.name +\n\t\t\t\t\t\"', href: '\" +\n\t\t\t\t\te.href +\n\t\t\t\t\t\"', module: '\" +\n\t\t\t\t\te.moduleUrl +\n\t\t\t\t\t\"', meta: \" +\n\t\t\t\t\tJSON.stringify(e.meta || {}) +\n\t\t\t\t\t' },',\n\t\t\t);\n\t\t}\n\t\tlines.push('] as const;');\n\t\tlines.push('');\n\t\tlines.push('export const byCollection: Record<string, any[]> = {};');\n\t\tlines.push(\n\t\t\t'for (const c of contents) { (byCollection[c.collection] ||= []).push(c as any); }',\n\t\t);\n\t\tlines.push('');\n\t\tlines.push(\n\t\t\t'export const byCollectionAndName: Record<string, Record<string, any>> = {};',\n\t\t);\n\t\tlines.push(\n\t\t\t'for (const c of contents) { ((byCollectionAndName[c.collection] ||= {})[c.name] = c as any); }',\n\t\t);\n\t\tlines.push('');\n\t\tlines.push('export type Collections = keyof typeof byCollection;');\n\t\tlines.push(\n\t\t\t'export type Names<C extends Collections> = keyof (typeof byCollectionAndName)[C];',\n\t\t);\n\t\tlines.push('export type ContentEntry = (typeof contents)[number];');\n\t\tlines.push('');\n\t\tlines.push(\n\t\t\t'export function getContentEntry<C extends string, N extends string>(collection: C, name: N) {',\n\t\t);\n\t\tlines.push(' const m = (byCollectionAndName as any)[collection];');\n\t\tlines.push(' return m ? (m as Record<string, any>)[name] : undefined;');\n\t\tlines.push('}');\n\t\tlines.push('');\n\n\t\tawait mkdir(join(cwd, '.reroute'), { recursive: true });\n\t\tawait Bun.write(join(cwd, '.reroute', 'content.ts'), lines.join('\\n'));\n\t} catch (e) {\n\t\tconsole.error('[reroute] Failed to write .reroute/content.ts:', e);\n\t}\n\n\t// Write per-collection files\n\ttry {\n\t\tconst byCol = new Map<string, typeof items>();\n\t\tfor (const it of items) {\n\t\t\tconst arr = byCol.get(it.collection) || ([] as typeof items);\n\t\t\tarr.push(it);\n\t\t\tbyCol.set(it.collection, arr);\n\t\t}\n\t\tawait mkdir(join(cwd, '.reroute', 'collections'), { recursive: true });\n\t\tfor (const [collection, list] of byCol) {\n\t\t\tconst js: string[] = [];\n\t\t\tjs.push('// 🚨 Auto-generated by Reroute - DO NOT EDIT 🚨');\n\t\t\tjs.push('');\n\t\t\tjs.push('export const items = [');\n\t\t\tfor (const e of list) {\n\t\t\t\tjs.push(\n\t\t\t\t\t` { collection: '${e.collection}', slug: '${e.slug}', name: '${e.name}', href: '${e.href}', module: '${e.moduleUrl}', meta: ${JSON.stringify(e.meta || {})} },`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tjs.push('];');\n\t\t\tjs.push('');\n\t\t\tjs.push('export const byName = {};');\n\t\t\tjs.push('for (const it of items) { byName[it.name] = it; }');\n\t\t\tjs.push('');\n\t\t\tjs.push('export function get(collectionName, name) {');\n\t\t\tjs.push(` if (collectionName !== '${collection}') return undefined;`);\n\t\t\tjs.push(' return byName[name];');\n\t\t\tjs.push('}');\n\t\t\tjs.push('');\n\t\t\tawait Bun.write(\n\t\t\t\tjoin(cwd, '.reroute', 'collections', `${collection}.js`),\n\t\t\t\tjs.join('\\n'),\n\t\t\t);\n\t\t}\n\t} catch (e) {\n\t\tconsole.error('[reroute] Failed to write .reroute/collections/*:', e);\n\t}\n\n\tconsole.log('[reroute] Content artifacts up-to-date');\n}\n",
|
|
9
9
|
"import { readdir, stat } from 'node:fs/promises';\nimport type { ContentItemDTO } from '../types';\nimport { basename, join, stripEnd, stripStart } from '../utils/path';\nimport { getContentMeta } from './metadata';\n\nexport async function listContentFiles(\n\tdir: string,\n\tbaseRel: string,\n): Promise<string[]> {\n\tconst out: string[] = [];\n\ttry {\n\t\tconst entries = await readdir(dir, { withFileTypes: true });\n\t\tfor (const entry of entries) {\n\t\t\tconst full = join(dir, entry.name);\n\t\t\tconst rel = join(baseRel, entry.name);\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tconst nested = await listContentFiles(full, rel);\n\t\t\t\tout.push(...nested);\n\t\t\t} else if (entry.isFile()) {\n\t\t\t\tif (/\\.(tsx|ts)$/.test(entry.name) && !entry.name.startsWith('_')) {\n\t\t\t\t\tout.push(rel);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// ignore missing dirs\n\t}\n\treturn out;\n}\n\nexport async function buildContentDTOs(\n\tcollectionPath: string,\n\tclientDir: string,\n\tprefix: string,\n\tisWatchMode: boolean,\n): Promise<ContentItemDTO[]> {\n\tconst normalized = stripStart(stripEnd(collectionPath, '/'), '/');\n\tconst contentRelDir = join('routes', normalized, 'content');\n\tconst contentAbsDir = join(clientDir, contentRelDir);\n\n\tconst files = await listContentFiles(contentAbsDir, '');\n\tconst items: ContentItemDTO[] = [];\n\tfor (const rel of files) {\n\t\tconst fullRelPath = join(contentRelDir, rel);\n\t\tconst absPath = join(clientDir, fullRelPath);\n\t\tconst noExt = rel.replace(/\\.(tsx|ts)$/, '');\n\t\tconst name = basename(noExt);\n\n\t\t// Use raw TSX path; served and transpiled on-demand by static route\n\t\tconst moduleUrl = `${prefix}/${fullRelPath}`.replace(/\\/+/g, '/');\n\t\tconst meta = await getContentMeta(absPath, isWatchMode);\n\t\t// Use the last path segment for href to fit current '/blog/:slug' route\n\t\tconst href = `/${normalized}/${name}`.replace(/\\\\+/g, '/');\n\n\t\titems.push({\n\t\t\tslug: noExt,\n\t\t\tname,\n\t\t\tpath: fullRelPath,\n\t\t\tmodule: moduleUrl,\n\t\t\tmeta,\n\t\t\thref,\n\t\t});\n\t}\n\treturn items;\n}\n\nexport async function discoverCollections(\n\tclientDir: string,\n): Promise<string[]> {\n\tconst root = join(clientDir, 'routes');\n\tconst collections = new Set<string>();\n\ttry {\n\t\tconst entries = await readdir(root, { withFileTypes: true });\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tconst contentDir = join(root, entry.name, 'content');\n\t\t\t\ttry {\n\t\t\t\t\tawait stat(contentDir);\n\t\t\t\t\tcollections.add(entry.name);\n\t\t\t\t} catch {\n\t\t\t\t\t// content directory doesn't exist, skip\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// routes directory doesn't exist\n\t}\n\treturn Array.from(collections);\n}\n",
|
|
10
10
|
"import { stat } from 'node:fs/promises';\nimport { pathToFileURL } from 'node:url';\nimport type { ContentMeta, Doc } from '../types';\n\nexport async function getContentMeta(\n\tabsPath: string,\n\tisWatchMode: boolean,\n): Promise<ContentMeta> {\n\ttry {\n\t\tconst url = pathToFileURL(absPath).href;\n\t\tconst mod = await import(`${url}${isWatchMode ? `?t=${Date.now()}` : ''}`);\n\t\tconst meta: unknown = (mod as Doc).meta || (mod as Doc).frontmatter || {};\n\t\tif (meta && typeof meta === 'object') return meta as ContentMeta;\n\t\treturn {};\n\t} catch {\n\t\ttry {\n\t\t\tconst s = await stat(absPath);\n\t\t\treturn { date: new Date(s.mtimeMs).toISOString() };\n\t\t} catch {\n\t\t\treturn {};\n\t\t}\n\t}\n}\n\n/**\n * Build a minimal <head> snippet from content metadata.\n * - <title>\n * - <meta name=\"description\">\n */\nexport function buildHeadFromMeta(\n\tmeta: ContentMeta | undefined | null,\n): string {\n\tif (!meta || typeof meta !== 'object') return '';\n\tconst parts: string[] = [];\n\tconst title = typeof meta.title === 'string' ? meta.title : undefined;\n\tconst description =\n\t\ttypeof meta.description === 'string'\n\t\t\t? meta.description\n\t\t\t: typeof meta.excerpt === 'string'\n\t\t\t\t? meta.excerpt\n\t\t\t\t: undefined;\n\tif (title) parts.push(`<title>${escapeHtml(title)}</title>`);\n\tif (description)\n\t\tparts.push(\n\t\t\t`<meta name=\"description\" content=\"${escapeHtml(description)}\" />`,\n\t\t);\n\treturn parts.length ? `\\n${parts.join('\\n')}` : '';\n}\n\nfunction escapeHtml(input: string): string {\n\treturn input\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"')\n\t\t.replace(/'/g, ''');\n}\n",
|
|
@@ -15,11 +15,12 @@
|
|
|
15
15
|
"import { readdir, stat } from 'node:fs/promises';\nimport { pathToFileURL } from 'node:url';\nimport dedent from 'dedent';\nimport { cloneElement, type ReactElement } from 'react';\nimport { renderToString } from 'react-dom/server';\nimport { buildHeadFromMeta } from '../content/metadata';\nimport { applyIndexTemplate, loadIndexHtml } from '../template';\nimport type { Doc } from '../types';\nimport { join } from '../utils/path';\nimport { seedSSRModuleForPath } from './seed';\n\ntype SSRRenderOptions = {\n\tpathname: string;\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tbundleUrl: string;\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\n\t// When true, also attempt to minify inlined assets like CSS\n\tminify?: boolean;\n};\n\ntype SSRRenderResult = {\n\thtml: string;\n\tstatus: number;\n};\n\nasync function renderSSRDocument(\n\toptions: SSRRenderOptions,\n): Promise<SSRRenderResult> {\n\tconst {\n\t\tpathname,\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tbundleUrl,\n\t\thead = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t\tminify = false,\n\t} = options;\n\n\tconst scripts = [bundleUrl];\n\tlet hydrationScript = '';\n\tlet extraHead = '';\n\n\t// Track HTTP status override (e.g., 404 when content entry missing)\n\tlet statusOverride: number | undefined;\n\n\t// Reset per-request SSR access tracking to avoid cross-request leakage\n\t// Shape: { [collection]: { limit: number|Infinity, sort: 'date-desc'|'date-asc'|'none'|'custom' } }\n\ttry {\n\t\t(globalThis as Doc).__REROUTE_SSR_ACCESSED__ = {} as unknown as Doc;\n\t} catch {}\n\n\t// If current page is a content page (/collection/name) AND the collection exists,\n\t// preload its module for instant hydration. Avoid treating non-content dynamic\n\t// routes (e.g., /products/19) as missing content, which would set 404.\n\ttry {\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\t\tif (parts.length >= 2) {\n\t\t\tconst collection = parts[0];\n\t\t\tconst name = parts[1];\n\t\t\tlet modulePath = '';\n\n\t\t\t// Only consider this a content collection if routes/<collection>/content exists\n\t\t\tlet isContentCollection = false;\n\t\t\ttry {\n\t\t\t\tconst maybeDir = join(clientDir, 'routes', collection, 'content');\n\t\t\t\tconst s = await stat(maybeDir);\n\t\t\t\tisContentCollection =\n\t\t\t\t\ttypeof s?.isDirectory === 'function' ? s.isDirectory() : true;\n\t\t\t} catch {\n\t\t\t\tisContentCollection = false;\n\t\t\t}\n\n\t\t\tif (!isContentCollection) {\n\t\t\t\t// Not a content collection path; skip content preloading logic\n\t\t\t\t// to avoid incorrectly marking the request as 404.\n\t\t\t\tthrow new Error('skip-content-preload');\n\t\t\t}\n\n\t\t\t// Prefer registry mapping from .reroute/content.ts for exact chunk\n\t\t\ttry {\n\t\t\t\tconst registryPath = join(cwd, '.reroute', 'content.ts');\n\t\t\t\tconst reg = (await import(\n\t\t\t\t\tpathToFileURL(registryPath).href +\n\t\t\t\t\t\t(isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t\t)) as Doc;\n\t\t\t\tconst get = (reg as Doc)?.getContentEntry as\n\t\t\t\t\t| ((c: string, n: string) => { module?: string } | undefined)\n\t\t\t\t\t| undefined;\n\t\t\t\tconst entry =\n\t\t\t\t\ttypeof get === 'function' ? get(collection, name) : undefined;\n\t\t\t\tconst moduleUrl = (entry as Doc)?.module as string | undefined;\n\t\t\t\tif (moduleUrl?.endsWith('.js')) {\n\t\t\t\t\tmodulePath = moduleUrl;\n\t\t\t\t}\n\t\t\t} catch {}\n\n\t\t\t// Fallback: pick newest chunk if registry unavailable\n\t\t\tif (!modulePath) {\n\t\t\t\ttry {\n\t\t\t\t\tconst chunkDir = join(cwd, '.reroute', 'chunks', collection);\n\t\t\t\t\tconst files = await readdir(chunkDir);\n\t\t\t\t\tconst candidates = files.filter(\n\t\t\t\t\t\t(n) => n.startsWith(`${name}.`) && n.endsWith('.js'),\n\t\t\t\t\t);\n\t\t\t\t\tif (candidates.length) {\n\t\t\t\t\t\tlet latest = candidates[0];\n\t\t\t\t\t\tlet latestM = 0;\n\t\t\t\t\t\tfor (const candidateName of candidates) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst s = await stat(join(chunkDir, candidateName));\n\t\t\t\t\t\t\t\tif (s.mtimeMs >= latestM) {\n\t\t\t\t\t\t\t\t\tlatestM = s.mtimeMs;\n\t\t\t\t\t\t\t\t\tlatest = candidateName;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmodulePath = `/${join('.reroute', 'chunks', collection, latest).replace(/\\\\+/g, '/')}`;\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\n\t\t\t// Fallback to raw source if chunk missing\n\t\t\tif (!modulePath) {\n\t\t\t\tconst tsx = join(\n\t\t\t\t\tclientDir,\n\t\t\t\t\t'routes',\n\t\t\t\t\tcollection,\n\t\t\t\t\t'content',\n\t\t\t\t\t`${name}.tsx`,\n\t\t\t\t);\n\t\t\t\tconst ts = join(\n\t\t\t\t\tclientDir,\n\t\t\t\t\t'routes',\n\t\t\t\t\tcollection,\n\t\t\t\t\t'content',\n\t\t\t\t\t`${name}.ts`,\n\t\t\t\t);\n\t\t\t\tlet srcUrl = '';\n\t\t\t\tif (await Bun.file(tsx).exists()) {\n\t\t\t\t\tsrcUrl = `/${join('routes', collection, 'content', `${name}.tsx`).replace(/\\\\+/g, '/')}`;\n\t\t\t\t} else if (await Bun.file(ts).exists()) {\n\t\t\t\t\tsrcUrl = `/${join('routes', collection, 'content', `${name}.ts`).replace(/\\\\+/g, '/')}`;\n\t\t\t\t}\n\t\t\t\tif (srcUrl) {\n\t\t\t\t\tmodulePath = srcUrl;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!modulePath) {\n\t\t\t\tstatusOverride = 404;\n\t\t\t}\n\n\t\t\tif (modulePath) {\n\t\t\t\tconst key = `${collection}:${name}`;\n\t\t\t\t// Hint the browser to fetch the module ASAP\n\t\t\t\textraHead += `\\n<link rel=\"modulepreload\" href=\"${modulePath}\" />`;\n\t\t\t\t// Ensure the module is evaluated before the main app module runs via external module\n\t\t\t\tconst qs = `src=${encodeURIComponent(modulePath)}&key=${encodeURIComponent(key)}`;\n\t\t\t\thydrationScript += `<script type=\"module\" src=\"/__reroute_preload?${qs}\"></script>`;\n\t\t\t}\n\t\t}\n\t} catch {}\n\n\t// Seed SSR store with content component so BlogPost can render on server\n\tawait seedSSRModuleForPath(pathname, clientDir, cwd, isWatchMode);\n\n\t// Route component module preload removed to avoid extra requests.\n\n\t// Execute optional route/content ssr.data and expose per-request store\n\tconst __SSR_DATA__: Record<string, unknown> = {};\n\ttry {\n\t\t// Content page ssr.data exported from the content module (if any)\n\t\ttry {\n\t\t\tconst parts = pathname.split('/').filter(Boolean);\n\t\t\tif (parts.length >= 2) {\n\t\t\t\tconst g = globalThis as Doc;\n\t\t\t\tconst key = `${parts[0]}:${parts[1]}`;\n\t\t\t\tconst exp = g.__REROUTE_SSR_EXPORTS__?.[key] as\n\t\t\t\t\t| { ssr?: { data?: (ctx: Doc) => unknown | Promise<unknown> } }\n\t\t\t\t\t| undefined;\n\t\t\t\tconst dataFn = (exp as Doc)?.ssr?.data as\n\t\t\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t\t\t| undefined;\n\t\t\t\tif (typeof dataFn === 'function') {\n\t\t\t\t\tconst out = await dataFn({\n\t\t\t\t\t\tpathname,\n\t\t\t\t\t\tparams: { name: parts[1] },\n\t\t\t\t\t} as Doc);\n\t\t\t\t\t__SSR_DATA__[pathname] = out as unknown;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {}\n\n\t\t// Route-level ssr.data from route module (non-content routes)\n\t\ttry {\n\t\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\t\tconst m = await import(\n\t\t\t\tpathToFileURL(routesPath).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t);\n\t\t\tconst match =\n\t\t\t\ttypeof m.matchRoute === 'function' ? m.matchRoute(pathname) : null;\n\t\t\tconst r = match?.route as Doc | undefined;\n\t\t\tconst params = (match?.params || {}) as Record<string, string>;\n\n\t\t\tif (r && typeof r.path === 'string') {\n\t\t\t\ttry {\n\t\t\t\t\tconst abs = join(clientDir, 'routes', String(r.path));\n\t\t\t\t\tconst mod = (await import(\n\t\t\t\t\t\tpathToFileURL(abs).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t\t\t)) as Doc;\n\t\t\t\t\tconst ssr = (mod as Doc)?.ssr as Doc | undefined;\n\t\t\t\t\tconst dataFn = (ssr as Doc)?.data as\n\t\t\t\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t\t\t\t| undefined;\n\t\t\t\t\tif (typeof dataFn === 'function') {\n\t\t\t\t\t\tconst out = await dataFn({ pathname, params } as Doc);\n\t\t\t\t\t\t__SSR_DATA__[pathname] = out as unknown;\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t} catch {}\n\t} catch {}\n\n\ttry {\n\t\t(globalThis as Doc).__REROUTE_DATA__ = __SSR_DATA__ as Doc;\n\t} catch {}\n\n\t// Seed content collections on the server for SSR rendering (no client delivery yet).\n\t// We'll only inline the collections actually accessed during this render, captured\n\t// via the hook-level tracker.\n\tlet __byCollectionForSSR: Record<string, unknown[]> = {};\n\ttry {\n\t\tconst p = join(cwd, '.reroute', 'content.ts');\n\t\tconst mod = await import(\n\t\t\tpathToFileURL(p).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t);\n\t\t__byCollectionForSSR = ((mod as Doc)?.byCollection || {}) as Record<\n\t\t\tstring,\n\t\t\tunknown[]\n\t\t>;\n\t\ttry {\n\t\t\t(globalThis as Doc).__REROUTE_COLLECTIONS__ = __byCollectionForSSR as Doc;\n\t\t} catch {}\n\t} catch {}\n\n\t// (moved) Entry + dev watcher scripts are appended later, after we inline\n\t// any accessed collections so data is available before app boot.\n\n\tconst componentWithPathname = cloneElement<Doc>(rootComponent, {\n\t\tpathname,\n\t});\n\tconst appHtml = renderToString(componentWithPathname);\n\tconst baseTemplate = await loadIndexHtml(clientDir);\n\n\t// Inline compiled Tailwind CSS output if present (generated by CLI):\n\t// Prefer theme.css relative to clientDir (e.g., src/client/theme.css -> ../../.reroute/theme.css)\n\tlet inlineStyleTag = '';\n\ttry {\n\t\tconst candidates = [\n\t\t\tjoin(clientDir, '..', '.reroute', 'theme.css'),\n\t\t\tjoin(clientDir, '..', '..', '.reroute', 'theme.css'),\n\t\t\tjoin(clientDir, '..', '..', '..', '.reroute', 'theme.css'),\n\t\t\tjoin(clientDir, '..', '..', '..', '..', '.reroute', 'theme.css'),\n\t\t];\n\t\tlet cssPath = '';\n\t\tfor (const p of candidates) {\n\t\t\tif (await Bun.file(p).exists()) {\n\t\t\t\tcssPath = p;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (cssPath) {\n\t\t\tlet css = await Bun.file(cssPath).text();\n\t\t\tif (minify) {\n\t\t\t\t// Best-effort, safe-ish CSS minification without external deps\n\t\t\t\tcss = css\n\t\t\t\t\t// Remove /* block comments */\n\t\t\t\t\t.replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n\t\t\t\t\t// Collapse whitespace\n\t\t\t\t\t.replace(/\\s+/g, ' ')\n\t\t\t\t\t// Remove space around selectors, braces, colons and semicolons\n\t\t\t\t\t.replace(/\\s*([{}:;,>+~])\\s*/g, '$1')\n\t\t\t\t\t// Remove final semicolons before closing brace\n\t\t\t\t\t.replace(/;}/g, '}')\n\t\t\t\t\t// Trim\n\t\t\t\t\t.trim();\n\t\t\t}\n\t\t\tinlineStyleTag = `<style data-reroute=\"tailwind\">${css}</style>`;\n\t\t}\n\t} catch {}\n\n\t// After rendering, inline only the content collections that were actually\n\t// accessed during this SSR render. This preserves SSR for static routes that\n\t// use useContent(), while avoiding shipping the entire content index to pages\n\t// that don't need it (e.g., a single post entry without lists).\n\ttry {\n\t\tconst g = globalThis as unknown as { __REROUTE_SSR_ACCESSED__?: unknown };\n\t\tconst acc = g.__REROUTE_SSR_ACCESSED__ as Doc;\n\n\t\t// Helper for date ordering\n\t\tconst sortByDate = (order: 'asc' | 'desc') => (a: Doc, b: Doc) => {\n\t\t\tconst da = a?.meta?.date ? Date.parse(String(a.meta.date)) : 0;\n\t\t\tconst db = b?.meta?.date ? Date.parse(String(b.meta.date)) : 0;\n\t\t\treturn order === 'asc' ? da - db : db - da;\n\t\t};\n\n\t\t// Normalize tracker into a map of collection -> { limit, sort }\n\t\tconst usage: Record<string, { limit: number; sort: string }> = {};\n\t\tif (acc && typeof acc.forEach === 'function') {\n\t\t\t// Back-compat with old Set<string> form: treat as full list\n\t\t\t(acc as Set<string>).forEach((c) => {\n\t\t\t\tif (typeof c === 'string')\n\t\t\t\t\tusage[c] = { limit: Number.POSITIVE_INFINITY, sort: 'custom' };\n\t\t\t});\n\t\t} else if (acc && typeof acc === 'object') {\n\t\t\tfor (const [k, v] of Object.entries(acc as Record<string, Doc>)) {\n\t\t\t\tconst lim =\n\t\t\t\t\ttypeof v?.limit === 'number' ? v.limit : Number.POSITIVE_INFINITY;\n\t\t\t\tconst s = typeof v?.sort === 'string' ? v.sort : 'custom';\n\t\t\t\tusage[k] = { limit: lim, sort: s };\n\t\t\t}\n\t\t}\n\n\t\tconst collections = Object.keys(usage);\n\t\tif (collections.length) {\n\t\t\tconst subset: Record<string, unknown[]> = {};\n\t\t\tconst partial: Record<string, boolean> = {};\n\t\t\tfor (const c of collections) {\n\t\t\t\tconst conf = usage[c];\n\t\t\t\tconst full = __byCollectionForSSR?.[c] || [];\n\t\t\t\tlet arr: unknown[] = full;\n\t\t\t\tif (\n\t\t\t\t\tNumber.isFinite(conf.limit) &&\n\t\t\t\t\tconf.limit > 0 &&\n\t\t\t\t\tconf.sort !== 'custom'\n\t\t\t\t) {\n\t\t\t\t\tif (conf.sort === 'date-desc') {\n\t\t\t\t\t\tarr = [...full].sort(sortByDate('desc')).slice(0, conf.limit);\n\t\t\t\t\t} else if (conf.sort === 'date-asc') {\n\t\t\t\t\t\tarr = [...full].sort(sortByDate('asc')).slice(0, conf.limit);\n\t\t\t\t\t} else if (conf.sort === 'none') {\n\t\t\t\t\t\tarr = full.slice(0, conf.limit);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsubset[c] = arr;\n\t\t\t\tpartial[c] =\n\t\t\t\t\tArray.isArray(arr) && Array.isArray(full)\n\t\t\t\t\t\t? arr.length < full.length\n\t\t\t\t\t\t: false;\n\t\t\t}\n\t\t\tconst subsetJson = JSON.stringify(subset);\n\t\t\tconst partialJson = JSON.stringify(partial);\n\t\t\thydrationScript += `\\n<script>\\n (function(){ try {\\n var w = (typeof window!== 'undefined'? window : globalThis);\\n w.__REROUTE_COLLECTIONS__ = w.__REROUTE_COLLECTIONS__ || {};\\n Object.assign(w.__REROUTE_COLLECTIONS__, ${subsetJson});\\n w.__REROUTE_COLLECTIONS_PARTIAL__ = w.__REROUTE_COLLECTIONS_PARTIAL__ || {};\\n Object.assign(w.__REROUTE_COLLECTIONS_PARTIAL__, ${partialJson});\\n } catch(e){} })();\\n</script>`;\n\t\t}\n\t} catch {}\n\n\t// Inline SSR data before client entry loads\n\ttry {\n\t\tconst seededJson = JSON.stringify(__SSR_DATA__);\n\t\thydrationScript += `\\n<script>\\n (function(){ try {\\n var w = (typeof window!== 'undefined'? window : globalThis);\\n w.__REROUTE_DATA__ = Object.assign({}, w.__REROUTE_DATA__ || {}, ${seededJson});\\n } catch(e){} })();\\n</script>`;\n\t} catch {}\n\n\t// Append client entry module only after inlining accessed collections\n\thydrationScript += scripts\n\t\t.map((src) => `<script type=\"module\" src=\"${src}\"></script>`)\n\t\t.join('');\n\n\t// (Dev) Load live reload module (no inline script)\n\tif (isWatchMode) {\n\t\thydrationScript += `<script type=\"module\" src=\"/__reroute_watch.js\"></script>`;\n\t}\n\n\t// Derive per-page head from exported meta/ssr if available\n\tlet perPageHead = '';\n\tlet pageLang: string | undefined;\n\ttry {\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\t\tif (parts.length >= 2) {\n\t\t\tconst key = `${parts[0]}:${parts[1]}`;\n\t\t\tconst g = globalThis as Doc;\n\t\t\tconst exp = g.__REROUTE_SSR_EXPORTS__?.[key] as\n\t\t\t\t| { meta?: unknown; ssr?: unknown }\n\t\t\t\t| undefined;\n\t\t\tconst meta = (exp as Doc)?.meta;\n\t\t\tconst ssr = (exp as Doc)?.ssr;\n\t\t\tperPageHead += buildHeadFromMeta(meta);\n\t\t\tconst ssrHead =\n\t\t\t\ttypeof ssr?.head === 'string'\n\t\t\t\t\t? ssr.head\n\t\t\t\t\t: Array.isArray(ssr?.head)\n\t\t\t\t\t\t? String(ssr.head.join('\\n'))\n\t\t\t\t\t\t: '';\n\t\t\tif (ssrHead) perPageHead += `\\n${ssrHead}`;\n\t\t\tif (typeof ssr?.lang === 'string' && ssr.lang.trim()) {\n\t\t\t\tpageLang = ssr.lang.trim();\n\t\t\t}\n\t\t}\n\t} catch {}\n\n\t// Additionally, import the matched route module to apply route-level meta/ssr for non-content routes\n\ttry {\n\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\tconst m = await import(\n\t\t\tpathToFileURL(routesPath).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t);\n\t\tconst match =\n\t\t\ttypeof m.matchRoute === 'function' ? m.matchRoute(pathname) : null;\n\t\tconst r = match?.route as Doc | undefined;\n\t\tif (!r) {\n\t\t\t// No route matched; mark as 404 for status\n\t\t\tstatusOverride = statusOverride || 404;\n\t\t}\n\t\tif (r && typeof r.path === 'string') {\n\t\t\ttry {\n\t\t\t\tconst abs = join(clientDir, 'routes', String(r.path));\n\t\t\t\tconst mod = (await import(\n\t\t\t\t\tpathToFileURL(abs).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t\t)) as Doc;\n\t\t\t\tconst meta = (mod as Doc)?.meta;\n\t\t\t\tconst ssr = (mod as Doc)?.ssr as Doc | undefined;\n\t\t\t\tif (meta) perPageHead += buildHeadFromMeta(meta);\n\t\t\t\tif (ssr) {\n\t\t\t\t\tconst ssrHead =\n\t\t\t\t\t\ttypeof ssr.head === 'string'\n\t\t\t\t\t\t\t? ssr.head\n\t\t\t\t\t\t\t: Array.isArray(ssr.head)\n\t\t\t\t\t\t\t\t? String((ssr.head as unknown[]).join('\\n'))\n\t\t\t\t\t\t\t\t: '';\n\t\t\t\t\tif (ssrHead) perPageHead += `\\n${ssrHead}`;\n\t\t\t\t\tif (typeof ssr.lang === 'string' && ssr.lang.trim()) {\n\t\t\t\t\t\tpageLang = ssr.lang.trim();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t\t// If route matched but we will render a custom 404 (e.g., content missing),\n\t\t\t// try to also apply the closest notFound meta if available.\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconst list = (m as Doc)?.notFoundRoutes as Doc[] | undefined;\n\t\t\t\tif (Array.isArray(list)) {\n\t\t\t\t\t// choose most specific by longest pattern prefix\n\t\t\t\t\tlet chosen: Doc | undefined;\n\t\t\t\t\tlet bestLen = -1;\n\t\t\t\t\tfor (const nf of list) {\n\t\t\t\t\t\tconst pat = String((nf as Doc)?.pattern || '/');\n\t\t\t\t\t\tif (!pathname.startsWith(pat)) continue;\n\t\t\t\t\t\tconst len = pat.split('/').filter(Boolean).length;\n\t\t\t\t\t\tif (len >= bestLen) {\n\t\t\t\t\t\t\tbestLen = len;\n\t\t\t\t\t\t\tchosen = nf;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (chosen && typeof (chosen as Doc).path === 'string') {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst abs = join(\n\t\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\t\t'routes',\n\t\t\t\t\t\t\t\tString((chosen as Doc).path),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst mod = (await import(\n\t\t\t\t\t\t\t\tpathToFileURL(abs).href +\n\t\t\t\t\t\t\t\t\t(isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t\t\t\t\t)) as Doc;\n\t\t\t\t\t\t\tconst meta = (mod as Doc)?.meta;\n\t\t\t\t\t\t\tconst ssr = (mod as Doc)?.ssr as Doc | undefined;\n\t\t\t\t\t\t\tif (meta) perPageHead += buildHeadFromMeta(meta);\n\t\t\t\t\t\t\tconst ssrHead =\n\t\t\t\t\t\t\t\ttypeof ssr?.head === 'string'\n\t\t\t\t\t\t\t\t\t? ssr.head\n\t\t\t\t\t\t\t\t\t: Array.isArray(ssr?.head)\n\t\t\t\t\t\t\t\t\t\t? String((ssr.head as unknown[]).join('\\n'))\n\t\t\t\t\t\t\t\t\t\t: '';\n\t\t\t\t\t\t\tif (ssrHead) perPageHead += `\\n${ssrHead}`;\n\t\t\t\t\t\t\tif (typeof ssr?.lang === 'string' && ssr.lang?.trim()) {\n\t\t\t\t\t\t\t\tpageLang = String(ssr.lang).trim();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t}\n\t} catch {}\n\n\tconst combinedHead = dedent(\n\t\t[dedent(head) || '', dedent(extraHead), dedent(perPageHead)]\n\t\t\t.filter(Boolean)\n\t\t\t.join('\\n'),\n\t);\n\tconst html = applyIndexTemplate(baseTemplate, appHtml, {\n\t\thead: [inlineStyleTag, combinedHead].filter(Boolean).join('\\n'),\n\t\thydrationScript,\n\t\tlang: pageLang || lang,\n\t\tappId,\n\t});\n\n\treturn {\n\t\thtml,\n\t\tstatus: statusOverride || 200,\n\t};\n}\n\nexport { renderSSRDocument, type SSRRenderOptions, type SSRRenderResult };\n",
|
|
16
16
|
"function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nconst dedent = createDedent({});\nexport default dedent;\nfunction createDedent(options) {\n dedent.withOptions = newOptions => createDedent(_objectSpread(_objectSpread({}, options), newOptions));\n return dedent;\n function dedent(strings, ...values) {\n const raw = typeof strings === \"string\" ? [strings] : strings.raw;\n const {\n alignValues = false,\n escapeSpecialCharacters = Array.isArray(strings),\n trimWhitespace = true\n } = options;\n\n // first, perform interpolation\n let result = \"\";\n for (let i = 0; i < raw.length; i++) {\n let next = raw[i];\n if (escapeSpecialCharacters) {\n // handle escaped newlines, backticks, and interpolation characters\n next = next.replace(/\\\\\\n[ \\t]*/g, \"\").replace(/\\\\`/g, \"`\").replace(/\\\\\\$/g, \"$\").replace(/\\\\\\{/g, \"{\");\n }\n result += next;\n if (i < values.length) {\n const value = alignValues ? alignValue(values[i], result) : values[i];\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n result += value;\n }\n }\n\n // now strip indentation\n const lines = result.split(\"\\n\");\n let mindent = null;\n for (const l of lines) {\n const m = l.match(/^(\\s+)\\S+/);\n if (m) {\n const indent = m[1].length;\n if (!mindent) {\n // this is the first indented line\n mindent = indent;\n } else {\n mindent = Math.min(mindent, indent);\n }\n }\n }\n if (mindent !== null) {\n const m = mindent; // appease TypeScript\n result = lines\n // https://github.com/typescript-eslint/typescript-eslint/issues/7140\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\n .map(l => l[0] === \" \" || l[0] === \"\\t\" ? l.slice(m) : l).join(\"\\n\");\n }\n\n // dedent eats leading and trailing whitespace too\n if (trimWhitespace) {\n result = result.trim();\n }\n\n // handle escaped newlines at the end to ensure they don't get stripped too\n if (escapeSpecialCharacters) {\n result = result.replace(/\\\\n/g, \"\\n\");\n }\n return result;\n }\n}\n\n/**\n * Adjusts the indentation of a multi-line interpolated value to match the current line.\n */\nfunction alignValue(value, precedingText) {\n if (typeof value !== \"string\" || !value.includes(\"\\n\")) {\n return value;\n }\n const currentLine = precedingText.slice(precedingText.lastIndexOf(\"\\n\") + 1);\n const indentMatch = currentLine.match(/^(\\s+)/);\n if (indentMatch) {\n const indent = indentMatch[1];\n return value.replace(/\\n/g, `\\n${indent}`);\n }\n return value;\n}\n",
|
|
17
17
|
"import type { TemplateContext } from '../types';\nimport { join } from '../utils/path';\n\nexport async function loadIndexHtml(clientDir: string): Promise<string> {\n\tconst templatePath = join(clientDir, 'index.html');\n\ttry {\n\t\tconst content = await Bun.file(templatePath).text();\n\t\treturn content;\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[reroute] Failed to load template from ${templatePath}:`,\n\t\t\terror,\n\t\t);\n\t\t// Minimal fallback (kept simple; will still be transformed below)\n\t\treturn `<!doctype html>\\n<html lang=\"en\">\\n <head>\\n <meta charset=\"UTF-8\" />\\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\\n <title>Reroute</title>\\n </head>\\n <body>\\n <div id=\"root\"></div>\\n </body>\\n</html>`;\n\t}\n}\n\nexport function applyIndexTemplate(\n\ttemplateHtml: string,\n\tappHtml: string,\n\t{\n\t\thead = '',\n\t\thydrationScript = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t}: TemplateContext,\n): string {\n\tlet html = templateHtml;\n\n\t// Ensure <html> has correct lang attribute\n\thtml = html.replace(/<html([^>]*)>/i, (_m, attrs: string) => {\n\t\tconst hasLang = /(^|\\s)lang\\s*=/.test(attrs);\n\t\tconst newAttrs = hasLang\n\t\t\t? attrs.replace(/lang\\s*=\\s*(\"[^\"]*\"|'[^']*'|[^\\s>]+)/i, `lang=\"${lang}\"`)\n\t\t\t: `${attrs} lang=\"${lang}\"`;\n\t\treturn `<html${newAttrs}>`;\n\t});\n\n\t// If incoming head contains <title> or a description meta, prefer replacing\n\t// existing ones in the template instead of duplicating.\n\tlet headToInject = head || '';\n\ttry {\n\t\tconst titleMatch = headToInject.match(/<title[\\s\\S]*?<\\/title>/i);\n\t\tif (titleMatch) {\n\t\t\tconst titleTag = titleMatch[0];\n\t\t\tif (/<title[\\s\\S]*?<\\/title>/i.test(html)) {\n\t\t\t\thtml = html.replace(/<title[\\s\\S]*?<\\/title>/i, titleTag);\n\t\t\t} else {\n\t\t\t\t// No title in template; will be injected below\n\t\t\t\t// keep titleTag in headToInject\n\t\t\t}\n\t\t\t// Remove the title from the extra head to avoid duplication when injecting\n\t\t\theadToInject = headToInject.replace(titleTag, '');\n\t\t}\n\n\t\tconst descRe = /<meta\\s+name\\s*=\\s*['\"]description['\"][^>]*>/i;\n\t\tconst descMatch = headToInject.match(descRe);\n\t\tif (descMatch) {\n\t\t\tconst descTag = descMatch[0];\n\t\t\tif (descRe.test(html)) {\n\t\t\t\thtml = html.replace(descRe, descTag);\n\t\t\t}\n\t\t\theadToInject = headToInject.replace(descTag, '');\n\t\t}\n\t} catch {}\n\n\t// Inject remaining head content before </head>\n\tif (headToInject) {\n\t\thtml = html.replace(/<\\/head>/i, `${headToInject}\\n\\t</head>`);\n\t}\n\n\t// Remove any TS/TSX script tags to avoid double-loading in SSR\n\thtml = html.replace(\n\t\t/<script\\b[^>]*src\\s*=\\s*[\"'][^\"']+\\.(ts|tsx)(?:[?#][^\"']*)?[\"'][^>]*>\\s*<\\/script>/gi,\n\t\t'',\n\t);\n\n\t// Replace content of the app root (e.g., <div id=\"root\"></div>)\n\tconst appIdEscaped = appId.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\tconst rootDivRegex = new RegExp(\n\t\t`(<div[^>]*\\\\bid=(\\\\\"|')${appIdEscaped}\\\\2[^>]*>)([\\\\s\\\\S]*?)(<\\\\/div>)`,\n\t\t'i',\n\t);\n\tif (rootDivRegex.test(html)) {\n\t\thtml = html.replace(rootDivRegex, `$1${appHtml}$4`);\n\t} else {\n\t\t// If missing, inject just before </body>\n\t\thtml = html.replace(\n\t\t\t/<\\/body>/i,\n\t\t\t`\\t\\t<div id=\"${appId}\">${appHtml}</div>\\n\\t</body>`,\n\t\t);\n\t}\n\n\t// Append hydration scripts just before </body>\n\tif (hydrationScript) {\n\t\thtml = html.replace(/<\\/body>/i, `\\t\\t${hydrationScript}\\n\\t</body>`);\n\t}\n\n\treturn html;\n}\n",
|
|
18
|
+
"import type { ChildProcess } from 'node:child_process';\nimport { spawn } from 'node:child_process';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\n\nexport interface TailwindProcess {\n\tprocess: ChildProcess;\n\tstop: () => void;\n}\n\nexport function isTailwindAvailable(cwd: string): boolean {\n\tconst packageJsonPath = join(cwd, 'package.json');\n\tif (!existsSync(packageJsonPath)) return false;\n\ttry {\n\t\tconst packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as {\n\t\t\tdependencies?: Record<string, string>;\n\t\t\tdevDependencies?: Record<string, string>;\n\t\t};\n\t\tconst deps = {\n\t\t\t...packageJson.dependencies,\n\t\t\t...packageJson.devDependencies,\n\t\t};\n\t\treturn !!deps && '@tailwindcss/cli' in deps;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport function getTailwindPaths(cwd: string) {\n\tconst input = join(cwd, 'src/client/theme.css');\n\tconst output = join(cwd, '.reroute/theme.css');\n\treturn { input, output };\n}\n\nexport function hasTailwindInput(cwd: string): boolean {\n\tconst { input } = getTailwindPaths(cwd);\n\tif (!existsSync(input)) return false;\n\ttry {\n\t\tconst content = readFileSync(input, 'utf-8');\n\t\treturn content.includes('@import \"tailwindcss\"');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport function resolveTailwindBin(cwd: string): string {\n\tconst pathsToTry = [\n\t\tjoin(cwd, 'node_modules/.bin/tailwindcss'),\n\t\tjoin(cwd, '../node_modules/.bin/tailwindcss'),\n\t\tjoin(cwd, '../../node_modules/.bin/tailwindcss'),\n\t\tjoin(cwd, '../../../node_modules/.bin/tailwindcss'),\n\t];\n\tfor (const binPath of pathsToTry) if (existsSync(binPath)) return binPath;\n\treturn join(cwd, 'node_modules/.bin/tailwindcss');\n}\n\nexport async function buildTailwind(cwd: string): Promise<void> {\n\tconst { input, output } = getTailwindPaths(cwd);\n\tif (!isTailwindAvailable(cwd) || !hasTailwindInput(cwd)) return;\n\tawait new Promise<void>((resolve, reject) => {\n\t\tconst tailwindBin = resolveTailwindBin(cwd);\n\t\tconst args = ['-i', input, '-o', output];\n\t\tconst tailwind = spawn(tailwindBin, args, { cwd, stdio: 'inherit' });\n\t\ttailwind.on('close', (code) =>\n\t\t\tcode === 0\n\t\t\t\t? resolve()\n\t\t\t\t: reject(new Error(`Tailwind CSS build failed with code ${code}`)),\n\t\t);\n\t\ttailwind.on('error', (error) => reject(error));\n\t});\n}\n\nexport function watchTailwind(cwd: string): TailwindProcess | null {\n\tif (!isTailwindAvailable(cwd) || !hasTailwindInput(cwd)) return null;\n\tconst { input, output } = getTailwindPaths(cwd);\n\tconst tailwindBin = resolveTailwindBin(cwd);\n\tconst args = ['-i', input, '-o', output, '--watch'];\n\tconsole.log('[reroute/tailwind] Starting Tailwind CSS v4 in watch mode...');\n\tconst child = spawn(tailwindBin, args, { cwd, stdio: 'inherit' });\n\tchild.on('error', (e) => console.error('[reroute/tailwind] Error:', e));\n\tconst stop = () => {\n\t\ttry {\n\t\t\tconsole.log('[reroute/tailwind] Stopping Tailwind CSS...');\n\t\t\tchild.kill();\n\t\t} catch {}\n\t};\n\treturn { process: child, stop };\n}\n",
|
|
18
19
|
"class LRUCache<K, V> {\n\tprivate cache: Map<K, V>;\n\tprivate maxSize: number;\n\n\tconstructor(maxSize: number = 100) {\n\t\tthis.cache = new Map();\n\t\tthis.maxSize = maxSize;\n\t}\n\n\tget(key: K): V | undefined {\n\t\tif (!this.cache.has(key)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Move to end (most recently used)\n\t\t// biome-ignore lint/style/noNonNullAssertion: it's all good\n\t\tconst value = this.cache.get(key)!;\n\t\tthis.cache.delete(key);\n\t\tthis.cache.set(key, value);\n\n\t\treturn value;\n\t}\n\n\tset(key: K, value: V): void {\n\t\t// Delete if exists to reinsert at end\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.delete(key);\n\t\t}\n\n\t\tthis.cache.set(key, value);\n\n\t\t// Evict least recently used if over size\n\t\tif (this.cache.size > this.maxSize) {\n\t\t\tconst firstKey = this.cache.keys().next().value;\n\t\t\tthis.cache.delete(firstKey as K);\n\t\t}\n\t}\n\n\thas(key: K): boolean {\n\t\treturn this.cache.has(key);\n\t}\n\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n\n\tget size(): number {\n\t\treturn this.cache.size;\n\t}\n}\n\nexport { LRUCache };\n",
|
|
19
20
|
"export function getMimeType(filePath: string): string {\n\tconst ext = filePath.split('.').pop()?.toLowerCase();\n\tconst mimeTypes: Record<string, string> = {\n\t\thtml: 'text/html',\n\t\tcss: 'text/css',\n\t\tjs: 'application/javascript',\n\t\tts: 'application/javascript',\n\t\tjson: 'application/json',\n\t\tpng: 'image/png',\n\t\tjpg: 'image/jpeg',\n\t\tjpeg: 'image/jpeg',\n\t\tgif: 'image/gif',\n\t\tsvg: 'image/svg+xml',\n\t\tico: 'image/x-icon',\n\t\twoff: 'font/woff',\n\t\twoff2: 'font/woff2',\n\t\tttf: 'font/ttf',\n\t};\n\treturn mimeTypes[ext || ''] || 'application/octet-stream';\n}\n\nexport function isCompressible(contentType: string): boolean {\n\tif (!contentType) return false;\n\tconst ct = contentType.split(';')[0].trim();\n\treturn (\n\t\tct.startsWith('text/') ||\n\t\tct === 'application/javascript' ||\n\t\tct === 'application/json' ||\n\t\tct === 'application/xml' ||\n\t\tct === 'image/svg+xml'\n\t);\n}\n",
|
|
20
21
|
"import type { CompressionResult } from '../types';\nimport { isCompressible } from './mime';\n\nexport function acceptsGzip(acceptEncoding?: string): boolean {\n\treturn Boolean(acceptEncoding && /gzip/i.test(acceptEncoding));\n}\n\nexport function toBytes(\n\tinput: string | Uint8Array,\n): Uint8Array<ArrayBuffer> | string {\n\treturn typeof input === 'string'\n\t\t? new TextEncoder().encode(input)\n\t\t: (input as Uint8Array<ArrayBuffer>);\n}\n\nexport function gzipIfAccepted(\n\tbody: string | Uint8Array,\n\tcontentType: string,\n\tacceptEncoding?: string,\n): CompressionResult {\n\tconst extraHeaders: Record<string, string> = {};\n\tif (acceptsGzip(acceptEncoding) && isCompressible(contentType)) {\n\t\ttry {\n\t\t\tconst compressed = Bun.gzipSync(toBytes(body));\n\t\t\textraHeaders['Content-Encoding'] = 'gzip';\n\t\t\textraHeaders.Vary = 'Accept-Encoding';\n\t\t\treturn { body: compressed, extraHeaders };\n\t\t} catch {\n\t\t\t// ignore and fallthrough\n\t\t}\n\t}\n\treturn { body, extraHeaders };\n}\n"
|
|
21
22
|
],
|
|
22
|
-
"mappings": "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",
|
|
23
|
-
"debugId": "
|
|
23
|
+
"mappings": "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",
|
|
24
|
+
"debugId": "1CB13E5E79EA18C464756E2164756E21",
|
|
24
25
|
"names": []
|
|
25
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transpile.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/bundler/transpile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI1D,wBAAsB,aAAa,CAClC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAClC,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"transpile.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/bundler/transpile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI1D,wBAAsB,aAAa,CAClC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAClC,OAAO,CAAC,UAAU,CAAC,CA4ErB;AAID,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,CAuBnB"}
|
package/core/src/index.d.ts
CHANGED
package/core/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC;AAE1B,cAAc,WAAW,CAAC;AAE1B,cAAc,OAAO,CAAC;AAEtB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC;AAE1B,cAAc,WAAW,CAAC;AAE1B,cAAc,OAAO,CAAC;AAEtB,cAAc,YAAY,CAAC;AAE3B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AAExB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ChildProcess } from 'node:child_process';
|
|
2
|
+
export interface TailwindProcess {
|
|
3
|
+
process: ChildProcess;
|
|
4
|
+
stop: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function isTailwindAvailable(cwd: string): boolean;
|
|
7
|
+
export declare function getTailwindPaths(cwd: string): {
|
|
8
|
+
input: string;
|
|
9
|
+
output: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function hasTailwindInput(cwd: string): boolean;
|
|
12
|
+
export declare function resolveTailwindBin(cwd: string): string;
|
|
13
|
+
export declare function buildTailwind(cwd: string): Promise<void>;
|
|
14
|
+
export declare function watchTailwind(cwd: string): TailwindProcess | null;
|
|
15
|
+
//# sourceMappingURL=tailwind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailwind.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/tailwind.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKvD,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,MAAM,IAAI,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBxD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM;;;EAI3C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASrD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAStD;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc9D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAejE"}
|
package/elysia/index.js
CHANGED
|
@@ -89,10 +89,6 @@ async function transpileFile(filePath, originalPath, options, bundleCache) {
|
|
|
89
89
|
let result;
|
|
90
90
|
try {
|
|
91
91
|
result = await doBuild(options.sourcemap ? "external" : "none");
|
|
92
|
-
if (!result.success) {
|
|
93
|
-
console.warn(`[reroute] Build failed for ${originalPath}, retrying without sourcemap...`);
|
|
94
|
-
result = await doBuild("none");
|
|
95
|
-
}
|
|
96
92
|
} catch (error) {
|
|
97
93
|
console.warn(`[reroute] Build errored for ${originalPath} (sourcemap external). Retrying without sourcemap...`, error);
|
|
98
94
|
result = await doBuild("none");
|
|
@@ -1078,6 +1074,65 @@ ${ssrHead}`;
|
|
|
1078
1074
|
status: statusOverride || 200
|
|
1079
1075
|
};
|
|
1080
1076
|
}
|
|
1077
|
+
// packages/core/src/tailwind.ts
|
|
1078
|
+
import { spawn } from "node:child_process";
|
|
1079
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
1080
|
+
import { join as join2 } from "node:path";
|
|
1081
|
+
function isTailwindAvailable(cwd) {
|
|
1082
|
+
const packageJsonPath = join2(cwd, "package.json");
|
|
1083
|
+
if (!existsSync(packageJsonPath))
|
|
1084
|
+
return false;
|
|
1085
|
+
try {
|
|
1086
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
|
|
1087
|
+
const deps = {
|
|
1088
|
+
...packageJson.dependencies,
|
|
1089
|
+
...packageJson.devDependencies
|
|
1090
|
+
};
|
|
1091
|
+
return !!deps && "@tailwindcss/cli" in deps;
|
|
1092
|
+
} catch {
|
|
1093
|
+
return false;
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
function getTailwindPaths(cwd) {
|
|
1097
|
+
const input = join2(cwd, "src/client/theme.css");
|
|
1098
|
+
const output = join2(cwd, ".reroute/theme.css");
|
|
1099
|
+
return { input, output };
|
|
1100
|
+
}
|
|
1101
|
+
function hasTailwindInput(cwd) {
|
|
1102
|
+
const { input } = getTailwindPaths(cwd);
|
|
1103
|
+
if (!existsSync(input))
|
|
1104
|
+
return false;
|
|
1105
|
+
try {
|
|
1106
|
+
const content = readFileSync(input, "utf-8");
|
|
1107
|
+
return content.includes('@import "tailwindcss"');
|
|
1108
|
+
} catch {
|
|
1109
|
+
return false;
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
function resolveTailwindBin(cwd) {
|
|
1113
|
+
const pathsToTry = [
|
|
1114
|
+
join2(cwd, "node_modules/.bin/tailwindcss"),
|
|
1115
|
+
join2(cwd, "../node_modules/.bin/tailwindcss"),
|
|
1116
|
+
join2(cwd, "../../node_modules/.bin/tailwindcss"),
|
|
1117
|
+
join2(cwd, "../../../node_modules/.bin/tailwindcss")
|
|
1118
|
+
];
|
|
1119
|
+
for (const binPath of pathsToTry)
|
|
1120
|
+
if (existsSync(binPath))
|
|
1121
|
+
return binPath;
|
|
1122
|
+
return join2(cwd, "node_modules/.bin/tailwindcss");
|
|
1123
|
+
}
|
|
1124
|
+
async function buildTailwind(cwd) {
|
|
1125
|
+
const { input, output } = getTailwindPaths(cwd);
|
|
1126
|
+
if (!isTailwindAvailable(cwd) || !hasTailwindInput(cwd))
|
|
1127
|
+
return;
|
|
1128
|
+
await new Promise((resolve, reject) => {
|
|
1129
|
+
const tailwindBin = resolveTailwindBin(cwd);
|
|
1130
|
+
const args = ["-i", input, "-o", output];
|
|
1131
|
+
const tailwind = spawn(tailwindBin, args, { cwd, stdio: "inherit" });
|
|
1132
|
+
tailwind.on("close", (code) => code === 0 ? resolve() : reject(new Error(`Tailwind CSS build failed with code ${code}`)));
|
|
1133
|
+
tailwind.on("error", (error) => reject(error));
|
|
1134
|
+
});
|
|
1135
|
+
}
|
|
1081
1136
|
// packages/core/src/utils/cache.ts
|
|
1082
1137
|
class LRUCache {
|
|
1083
1138
|
cache;
|
|
@@ -1710,7 +1765,7 @@ var reroute = (options = {}) => async (app) => {
|
|
|
1710
1765
|
}
|
|
1711
1766
|
};
|
|
1712
1767
|
const clientDir = assets.startsWith("/") ? assets : `${cwd.replace(/\/$/, "")}/${assets.replace(/^\.\//, "")}`;
|
|
1713
|
-
const
|
|
1768
|
+
const join3 = (...parts) => parts.join("/").replace(/\/+/g, "/");
|
|
1714
1769
|
const shouldIgnore = !ignorePatterns.length ? () => false : (file) => ignorePatterns.find((pattern) => typeof pattern === "string" ? file.includes(pattern) : pattern.test(file));
|
|
1715
1770
|
const isWatchMode = process.execArgv[0] === "--watch";
|
|
1716
1771
|
const dataCacheControl = `${directive}, max-age=${maxAge}`;
|
|
@@ -1762,6 +1817,9 @@ var reroute = (options = {}) => async (app) => {
|
|
|
1762
1817
|
bundleCache.clear();
|
|
1763
1818
|
cachedBundleUrlPromise = null;
|
|
1764
1819
|
await rebuildContentArtifacts(cwd, clientDir, true);
|
|
1820
|
+
try {
|
|
1821
|
+
await buildTailwind(cwd);
|
|
1822
|
+
} catch {}
|
|
1765
1823
|
notifyReload();
|
|
1766
1824
|
console.log("[reroute] Rebuilt on change and notified clients");
|
|
1767
1825
|
} catch (e) {
|
|
@@ -1776,7 +1834,7 @@ var reroute = (options = {}) => async (app) => {
|
|
|
1776
1834
|
return;
|
|
1777
1835
|
if (!/\.(ts|tsx|js|jsx|html|css|json)$/i.test(name))
|
|
1778
1836
|
return;
|
|
1779
|
-
if (shouldIgnore(
|
|
1837
|
+
if (shouldIgnore(join3(clientDir, name)))
|
|
1780
1838
|
return;
|
|
1781
1839
|
schedule();
|
|
1782
1840
|
} catch {}
|
|
@@ -1826,4 +1884,4 @@ export {
|
|
|
1826
1884
|
reroute
|
|
1827
1885
|
};
|
|
1828
1886
|
|
|
1829
|
-
//# debugId=
|
|
1887
|
+
//# debugId=E2ECE47C32ECC00564756E2164756E21
|