@absolutejs/absolute 0.13.11 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1,32 +1,32 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["..\\src\\constants.ts", "..\\src\\core\\build.ts", "..\\src\\build\\compileSvelte.ts", "..\\src\\build\\compileVue.ts", "..\\src\\utils\\stringModifiers.ts", "..\\src\\build\\generateManifest.ts", "..\\src\\build\\generateReactIndexes.ts", "..\\src\\build\\outputLogs.ts", "..\\src\\build\\scanEntryPoints.ts", "..\\src\\build\\updateAssetPaths.ts", "..\\src\\utils\\cleanup.ts", "..\\src\\utils\\commonAncestor.ts", "..\\src\\utils\\getDurationString.ts", "..\\src\\utils\\validateSafePath.ts", "..\\src\\core\\pageHandlers.ts", "..\\src\\svelte\\renderToReadableStream.ts", "..\\src\\utils\\escapeScriptContent.ts", "..\\src\\core\\lookup.ts", "..\\src\\plugins\\networking.ts", "..\\src\\utils\\networking.ts", "..\\src\\plugins\\pageRouter.ts", "..\\src\\utils\\generateHeadElement.ts", "..\\src\\utils\\getEnv.ts"],
3
+ "sources": ["../src/constants.ts", "../src/core/build.ts", "../src/build/compileSvelte.ts", "../src/build/compileVue.ts", "../src/utils/stringModifiers.ts", "../src/build/generateManifest.ts", "../src/build/generateReactIndexes.ts", "../src/build/outputLogs.ts", "../src/build/scanEntryPoints.ts", "../src/build/updateAssetPaths.ts", "../src/utils/cleanup.ts", "../src/utils/commonAncestor.ts", "../src/utils/getDurationString.ts", "../src/utils/validateSafePath.ts", "../src/core/pageHandlers.ts", "../src/svelte/renderToReadableStream.ts", "../src/utils/escapeScriptContent.ts", "../src/core/lookup.ts", "../src/plugins/networking.ts", "../src/utils/networking.ts", "../src/plugins/pageRouter.ts", "../src/utils/generateHeadElement.ts", "../src/utils/getEnv.ts"],
4
4
  "sourcesContent": [
5
- "export const UNFOUND_INDEX = -1;\r\nexport const SECONDS_IN_A_MINUTE = 60;\r\nexport const MILLISECONDS_IN_A_SECOND = 1000;\r\nexport const MILLISECONDS_IN_A_MINUTE =\r\n\tMILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE;\r\nexport const MINUTES_IN_AN_HOUR = 60;\r\nexport const HOURS_IN_DAY = 24;\r\nexport const MILLISECONDS_IN_A_DAY =\r\n\tMILLISECONDS_IN_A_SECOND *\r\n\tSECONDS_IN_A_MINUTE *\r\n\tMINUTES_IN_AN_HOUR *\r\n\tHOURS_IN_DAY;\r\nexport const TIME_PRECISION = 2;\r\nexport const TWO_THIRDS = 2 / 3;\r\nexport const DEFAULT_PORT = 3000;\r\nexport const DEFAULT_CHUNK_SIZE = 16_384;\r\nexport const BUN_BUILD_WARNING_SUPPRESSION =\r\n\t'wildcard sideEffects are not supported yet';\r\n",
6
- "import { copyFileSync, cpSync, mkdirSync } from 'node:fs';\r\nimport { rm } from 'node:fs/promises';\r\nimport { basename, join } from 'node:path';\r\nimport { cwd, env, exit } from 'node:process';\r\nimport { $, build as bunBuild, BuildArtifact, Glob } from 'bun';\r\nimport { compileSvelte } from '../build/compileSvelte';\r\nimport { compileVue } from '../build/compileVue';\r\nimport { generateManifest } from '../build/generateManifest';\r\nimport { generateReactIndexFiles } from '../build/generateReactIndexes';\r\nimport { outputLogs } from '../build/outputLogs';\r\nimport { scanEntryPoints } from '../build/scanEntryPoints';\r\nimport { updateAssetPaths } from '../build/updateAssetPaths';\r\nimport { BuildConfig } from '../types';\r\nimport { cleanup } from '../utils/cleanup';\r\nimport { commonAncestor } from '../utils/commonAncestor';\r\nimport { getDurationString } from '../utils/getDurationString';\r\nimport { validateSafePath } from '../utils/validateSafePath';\r\n\r\nconst isDev = env.NODE_ENV === 'development';\r\n\r\nconst vueFeatureFlags: Record<string, string> = {\r\n\t__VUE_OPTIONS_API__: 'true',\r\n\t__VUE_PROD_DEVTOOLS__: isDev ? 'true' : 'false',\r\n\t__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: isDev ? 'true' : 'false'\r\n};\r\n\r\nexport const build = async ({\r\n\tbuildDirectory = 'build',\r\n\tassetsDirectory = 'assets',\r\n\treactDirectory,\r\n\thtmlDirectory,\r\n\thtmxDirectory,\r\n\tangularDirectory,\r\n\tsvelteDirectory,\r\n\tvueDirectory,\r\n\ttailwind,\r\n\toptions\r\n}: BuildConfig) => {\r\n\tconst buildStart = performance.now();\r\n\tconst projectRoot = cwd();\r\n\r\n\tconst buildPath = validateSafePath(buildDirectory, projectRoot);\r\n\tconst assetsPath =\r\n\t\tassetsDirectory && validateSafePath(assetsDirectory, projectRoot);\r\n\tconst reactDir =\r\n\t\treactDirectory && validateSafePath(reactDirectory, projectRoot);\r\n\tconst htmlDir =\r\n\t\thtmlDirectory && validateSafePath(htmlDirectory, projectRoot);\r\n\tconst htmxDir =\r\n\t\thtmxDirectory && validateSafePath(htmxDirectory, projectRoot);\r\n\tconst svelteDir =\r\n\t\tsvelteDirectory && validateSafePath(svelteDirectory, projectRoot);\r\n\tconst vueDir = vueDirectory && validateSafePath(vueDirectory, projectRoot);\r\n\tconst angularDir =\r\n\t\tangularDirectory && validateSafePath(angularDirectory, projectRoot);\r\n\r\n\tconst reactIndexesPath = reactDir && join(reactDir, 'indexes');\r\n\tconst reactPagesPath = reactDir && join(reactDir, 'pages');\r\n\tconst htmlPagesPath = htmlDir && join(htmlDir, 'pages');\r\n\tconst htmlScriptsPath = htmlDir && join(htmlDir, 'scripts');\r\n\tconst sveltePagesPath = svelteDir && join(svelteDir, 'pages');\r\n\tconst vuePagesPath = vueDir && join(vueDir, 'pages');\r\n\tconst htmxPagesPath = htmxDir && join(htmxDir, 'pages');\r\n\tconst angularPagesPath = angularDir && join(angularDir, 'pages');\r\n\r\n\tconst frontends = [\r\n\t\treactDir,\r\n\t\thtmlDir,\r\n\t\thtmxDir,\r\n\t\tsvelteDir,\r\n\t\tvueDir,\r\n\t\tangularDir\r\n\t].filter(Boolean);\r\n\tconst isSingle = frontends.length === 1;\r\n\r\n\tlet serverOutDir;\r\n\tif (svelteDir) serverOutDir = join(buildPath, basename(svelteDir), 'pages');\r\n\telse if (vueDir) serverOutDir = join(buildPath, basename(vueDir), 'pages');\r\n\r\n\tlet serverRoot;\r\n\tif (sveltePagesPath) serverRoot = sveltePagesPath;\r\n\telse if (vuePagesPath) serverRoot = vuePagesPath;\r\n\r\n\tawait rm(buildPath, { force: true, recursive: true });\r\n\tmkdirSync(buildPath);\r\n\r\n\tif (reactIndexesPath && reactPagesPath)\r\n\t\tawait generateReactIndexFiles(reactPagesPath, reactIndexesPath);\r\n\r\n\tif (assetsPath)\r\n\t\tcpSync(assetsPath, join(buildPath, 'assets'), {\r\n\t\t\tforce: true,\r\n\t\t\trecursive: true\r\n\t\t});\r\n\r\n\tif (tailwind)\r\n\t\tawait $`bunx @tailwindcss/cli -i ${tailwind.input} -o ${join(buildPath, tailwind.output)}`;\r\n\r\n\tconst reactEntries = reactIndexesPath\r\n\t\t? await scanEntryPoints(reactIndexesPath, '*.tsx')\r\n\t\t: [];\r\n\tconst htmlEntries = htmlScriptsPath\r\n\t\t? await scanEntryPoints(htmlScriptsPath, '*.{js,ts}')\r\n\t\t: [];\r\n\tconst svelteEntries = sveltePagesPath\r\n\t\t? await scanEntryPoints(sveltePagesPath, '*.svelte')\r\n\t\t: [];\r\n\tconst vueEntries = vuePagesPath\r\n\t\t? await scanEntryPoints(vuePagesPath, '*.vue')\r\n\t\t: [];\r\n\tconst angularEntries = angularPagesPath\r\n\t\t? await scanEntryPoints(angularPagesPath, '*.ts')\r\n\t\t: [];\r\n\r\n\tconst htmlCssEntries = htmlDir\r\n\t\t? await scanEntryPoints(join(htmlDir, 'styles'), '*.css')\r\n\t\t: [];\r\n\tconst htmxCssEntries = htmxDir\r\n\t\t? await scanEntryPoints(join(htmxDir, 'styles'), '*.css')\r\n\t\t: [];\r\n\tconst reactCssEntries = reactDir\r\n\t\t? await scanEntryPoints(join(reactDir, 'styles'), '*.css')\r\n\t\t: [];\r\n\tconst svelteCssEntries = svelteDir\r\n\t\t? await scanEntryPoints(join(svelteDir, 'styles'), '*.css')\r\n\t\t: [];\r\n\r\n\tconst { svelteServerPaths, svelteClientPaths } = svelteDir\r\n\t\t? await compileSvelte(svelteEntries, svelteDir)\r\n\t\t: { svelteClientPaths: [], svelteServerPaths: [] };\r\n\r\n\tconst { vueServerPaths, vueIndexPaths, vueCssPaths } = vueDir\r\n\t\t? await compileVue(vueEntries, vueDir)\r\n\t\t: { vueCssPaths: [], vueIndexPaths: [], vueServerPaths: [] };\r\n\r\n\tconst serverEntryPoints = [...svelteServerPaths, ...vueServerPaths];\r\n\tconst clientEntryPoints = [\r\n\t\t...reactEntries,\r\n\t\t...svelteClientPaths,\r\n\t\t...htmlEntries,\r\n\t\t...vueIndexPaths\r\n\t];\r\n\tconst cssEntryPoints = [\r\n\t\t...vueCssPaths,\r\n\t\t...reactCssEntries,\r\n\t\t...svelteCssEntries,\r\n\t\t...htmlCssEntries,\r\n\t\t...htmxCssEntries\r\n\t];\r\n\r\n\tif (\r\n\t\tserverEntryPoints.length === 0 &&\r\n\t\tclientEntryPoints.length === 0 &&\r\n\t\thtmxDir === undefined\r\n\t) {\r\n\t\tconsole.warn('No entry points found, manifest will be empty.');\r\n\r\n\t\treturn {};\r\n\t}\r\n\r\n\tlet serverLogs: (BuildMessage | ResolveMessage)[] = [];\r\n\tlet serverOutputs: BuildArtifact[] = [];\r\n\r\n\tif (serverEntryPoints.length > 0) {\r\n\t\tconst { logs, outputs } = await bunBuild({\r\n\t\t\tentrypoints: serverEntryPoints,\r\n\t\t\tformat: 'esm',\r\n\t\t\tnaming: `[dir]/[name].[hash].[ext]`,\r\n\t\t\toutdir: serverOutDir,\r\n\t\t\troot: serverRoot,\r\n\t\t\ttarget: 'bun'\r\n\t\t}).catch((err) => {\r\n\t\t\tconsole.error('Server build failed:', err);\r\n\t\t\texit(1);\r\n\t\t});\r\n\t\tserverLogs = logs;\r\n\t\tserverOutputs = outputs;\r\n\t}\r\n\r\n\tlet clientLogs: (BuildMessage | ResolveMessage)[] = [];\r\n\tlet clientOutputs: BuildArtifact[] = [];\r\n\r\n\tif (clientEntryPoints.length > 0) {\r\n\t\tconst roots: string[] = [\r\n\t\t\treactDir,\r\n\t\t\tsvelteDir,\r\n\t\t\thtmlDir,\r\n\t\t\tvueDir,\r\n\t\t\tangularDir\r\n\t\t].filter((dir): dir is string => Boolean(dir));\r\n\t\tconst clientRoot = isSingle\r\n\t\t\t? (roots[0] ?? projectRoot)\r\n\t\t\t: commonAncestor(roots, projectRoot);\r\n\t\tconst { logs, outputs } = await bunBuild({\r\n\t\t\tdefine: vueDirectory ? vueFeatureFlags : undefined,\r\n\t\t\tentrypoints: clientEntryPoints,\r\n\t\t\tformat: 'esm',\r\n\t\t\tminify: true,\r\n\t\t\tnaming: `[dir]/[name].[hash].[ext]`,\r\n\t\t\toutdir: buildPath,\r\n\t\t\troot: clientRoot,\r\n\t\t\ttarget: 'browser'\r\n\t\t}).catch((err) => {\r\n\t\t\tconsole.error('Client build failed:', err);\r\n\t\t\texit(1);\r\n\t\t});\r\n\t\tclientLogs = logs;\r\n\t\tclientOutputs = outputs;\r\n\t}\r\n\r\n\tlet cssLogs: (BuildMessage | ResolveMessage)[] = [];\r\n\tlet cssOutputs: BuildArtifact[] = [];\r\n\r\n\tif (cssEntryPoints.length > 0) {\r\n\t\tconst { logs, outputs } = await bunBuild({\r\n\t\t\tentrypoints: cssEntryPoints,\r\n\t\t\tnaming: `[name].[hash].[ext]`,\r\n\t\t\toutdir: join(buildPath, basename(assetsPath), 'css'),\r\n\t\t\ttarget: 'browser'\r\n\t\t}).catch((err) => {\r\n\t\t\tconsole.error('CSS build failed:', err);\r\n\t\t\texit(1);\r\n\t\t});\r\n\t\tcssLogs = logs;\r\n\t\tcssOutputs = outputs;\r\n\t}\r\n\r\n\tconst allLogs = [...serverLogs, ...clientLogs, ...cssLogs];\r\n\toutputLogs(allLogs);\r\n\r\n\tconst manifest = generateManifest(\r\n\t\t[...serverOutputs, ...clientOutputs, ...cssOutputs],\r\n\t\tbuildPath\r\n\t);\r\n\r\n\tif (htmlDir && htmlPagesPath) {\r\n\t\tconst outputHtmlPages = isSingle\r\n\t\t\t? join(buildPath, 'pages')\r\n\t\t\t: join(buildPath, basename(htmlDir), 'pages');\r\n\t\tmkdirSync(outputHtmlPages, { recursive: true });\r\n\t\tcpSync(htmlPagesPath, outputHtmlPages, {\r\n\t\t\tforce: true,\r\n\t\t\trecursive: true\r\n\t\t});\r\n\t\tawait updateAssetPaths(manifest, outputHtmlPages);\r\n\t}\r\n\r\n\tif (htmxDir && htmxPagesPath) {\r\n\t\tconst outputHtmxPages = isSingle\r\n\t\t\t? join(buildPath, 'pages')\r\n\t\t\t: join(buildPath, basename(htmxDir), 'pages');\r\n\r\n\t\tmkdirSync(outputHtmxPages, { recursive: true });\r\n\t\tcpSync(htmxPagesPath, outputHtmxPages, {\r\n\t\t\tforce: true,\r\n\t\t\trecursive: true\r\n\t\t});\r\n\r\n\t\tconst htmxDestDir = isSingle\r\n\t\t\t? buildPath\r\n\t\t\t: join(buildPath, basename(htmxDir));\r\n\r\n\t\tmkdirSync(htmxDestDir, { recursive: true });\r\n\r\n\t\tconst glob = new Glob('htmx*.min.js');\r\n\t\tfor (const relativePath of glob.scanSync({ cwd: htmxDir })) {\r\n\t\t\tconst src = join(htmxDir, relativePath);\r\n\t\t\tconst dest = join(htmxDestDir, 'htmx.min.js');\r\n\t\t\tcopyFileSync(src, dest);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tawait updateAssetPaths(manifest, outputHtmxPages);\r\n\t}\r\n\r\n\tif (!options?.preserveIntermediateFiles)\r\n\t\tawait cleanup({\r\n\t\t\treactIndexesPath,\r\n\t\t\tsvelteDir,\r\n\t\t\tvueDir\r\n\t\t});\r\n\r\n\tconsole.log(\r\n\t\t`Build completed in ${getDurationString(performance.now() - buildStart)}`\r\n\t);\r\n\r\n\treturn manifest;\r\n};\r\n",
7
- "import { mkdir, stat } from 'node:fs/promises';\r\nimport {\r\n\tdirname,\r\n\tjoin,\r\n\tbasename,\r\n\textname,\r\n\tresolve,\r\n\trelative,\r\n\tsep\r\n} from 'node:path';\r\nimport { env } from 'node:process';\r\nimport { write, file, Transpiler } from 'bun';\r\nimport { compile, compileModule, preprocess } from 'svelte/compiler';\r\n\r\ntype Built = { ssr: string; client: string };\r\ntype Cache = Map<string, Built>;\r\n\r\nconst transpiler = new Transpiler({ loader: 'ts', target: 'browser' });\r\n\r\nconst exists = async (path: string) => {\r\n\ttry {\r\n\t\tawait stat(path);\r\n\r\n\t\treturn true;\r\n\t} catch {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nconst resolveSvelte = async (spec: string, from: string) => {\r\n\tconst basePath = resolve(dirname(from), spec);\r\n\tconst explicit = /\\.(svelte|svelte\\.(?:ts|js))$/.test(basePath);\r\n\r\n\tif (!explicit) {\r\n\t\tconst extensions = ['.svelte', '.svelte.ts', '.svelte.js'];\r\n\t\tconst paths = extensions.map((ext) => `${basePath}${ext}`);\r\n\t\tconst checks = await Promise.all(paths.map(exists));\r\n\t\tconst match = paths.find((_, index) => checks[index]);\r\n\r\n\t\treturn match ?? null;\r\n\t}\r\n\r\n\tif (await exists(basePath)) return basePath;\r\n\tif (!basePath.endsWith('.svelte')) return null;\r\n\r\n\tconst tsPath = `${basePath}.ts`;\r\n\tif (await exists(tsPath)) return tsPath;\r\n\r\n\tconst jsPath = `${basePath}.js`;\r\n\tif (await exists(jsPath)) return jsPath;\r\n\r\n\treturn null;\r\n};\r\n\r\nexport const compileSvelte = async (\r\n\tentryPoints: string[],\r\n\tsvelteRoot: string,\r\n\tcache: Cache = new Map()\r\n) => {\r\n\tconst compiledRoot = join(svelteRoot, 'compiled');\r\n\tconst clientDir = join(compiledRoot, 'client');\r\n\tconst indexDir = join(compiledRoot, 'indexes');\r\n\tconst pagesDir = join(compiledRoot, 'pages');\r\n\r\n\tawait Promise.all(\r\n\t\t[clientDir, indexDir, pagesDir].map((dir) =>\r\n\t\t\tmkdir(dir, { recursive: true })\r\n\t\t)\r\n\t);\r\n\r\n\tconst dev = env.NODE_ENV === 'development';\r\n\r\n\tconst build = async (src: string) => {\r\n\t\tconst memoized = cache.get(src);\r\n\t\tif (memoized) return memoized;\r\n\r\n\t\tconst raw = await file(src).text();\r\n\t\tconst isModule =\r\n\t\t\tsrc.endsWith('.svelte.ts') || src.endsWith('.svelte.js');\r\n\t\tconst preprocessed = isModule ? raw : (await preprocess(raw, {})).code;\r\n\t\tconst transpiled =\r\n\t\t\tsrc.endsWith('.ts') || src.endsWith('.svelte.ts')\r\n\t\t\t\t? transpiler.transformSync(preprocessed)\r\n\t\t\t\t: preprocessed;\r\n\r\n\t\tconst relDir = dirname(relative(svelteRoot, src)).replace(/\\\\/g, '/');\r\n\t\tconst baseName = basename(src).replace(/\\.svelte(\\.(ts|js))?$/, '');\r\n\r\n\t\tconst importPaths = Array.from(\r\n\t\t\ttranspiled.matchAll(/from\\s+['\"]([^'\"]+)['\"]/g)\r\n\t\t)\r\n\t\t\t.map((match) => match[1])\r\n\t\t\t.filter((path): path is string => path !== undefined);\r\n\r\n\t\tconst resolvedImports = await Promise.all(\r\n\t\t\timportPaths.map((importPath) => resolveSvelte(importPath, src))\r\n\t\t);\r\n\t\tconst childSources = resolvedImports.filter(\r\n\t\t\t(path): path is string => path !== null\r\n\t\t);\r\n\t\tawait Promise.all(childSources.map((child) => build(child)));\r\n\r\n\t\tconst generate = (mode: 'server' | 'client') =>\r\n\t\t\t(isModule\r\n\t\t\t\t? compileModule(transpiled, { dev, filename: src }).js.code\r\n\t\t\t\t: compile(transpiled, {\r\n\t\t\t\t\t\tcss: 'injected',\r\n\t\t\t\t\t\tdev,\r\n\t\t\t\t\t\tfilename: src,\r\n\t\t\t\t\t\tgenerate: mode\r\n\t\t\t\t\t}).js.code\r\n\t\t\t).replace(/\\.svelte(?:\\.(?:ts|js))?(['\"])/g, '.js$1');\r\n\r\n\t\tconst ssrPath = join(pagesDir, relDir, `${baseName}.js`);\r\n\t\tconst clientPath = join(clientDir, relDir, `${baseName}.js`);\r\n\r\n\t\tawait Promise.all([\r\n\t\t\tmkdir(dirname(ssrPath), { recursive: true }),\r\n\t\t\tmkdir(dirname(clientPath), { recursive: true })\r\n\t\t]);\r\n\r\n\t\tif (isModule) {\r\n\t\t\tconst bundle = generate('client');\r\n\t\t\tawait Promise.all([\r\n\t\t\t\twrite(ssrPath, bundle),\r\n\t\t\t\twrite(clientPath, bundle)\r\n\t\t\t]);\r\n\t\t} else {\r\n\t\t\tconst serverBundle = generate('server');\r\n\t\t\tconst clientBundle = generate('client');\r\n\t\t\tawait Promise.all([\r\n\t\t\t\twrite(ssrPath, serverBundle),\r\n\t\t\t\twrite(clientPath, clientBundle)\r\n\t\t\t]);\r\n\t\t}\r\n\r\n\t\tconst built: Built = { client: clientPath, ssr: ssrPath };\r\n\t\tcache.set(src, built);\r\n\r\n\t\treturn built;\r\n\t};\r\n\r\n\tconst roots = await Promise.all(entryPoints.map(build));\r\n\r\n\tawait Promise.all(\r\n\t\troots.map(async ({ client }) => {\r\n\t\t\tconst relClientDir = dirname(relative(clientDir, client));\r\n\t\t\tconst name = basename(client, extname(client));\r\n\t\t\tconst indexPath = join(indexDir, relClientDir, `${name}.js`);\r\n\t\t\tconst importRaw = relative(dirname(indexPath), client)\r\n\t\t\t\t.split(sep)\r\n\t\t\t\t.join('/');\r\n\t\t\tconst importPath =\r\n\t\t\t\timportRaw.startsWith('.') || importRaw.startsWith('/')\r\n\t\t\t\t\t? importRaw\r\n\t\t\t\t\t: `./${importRaw}`;\r\n\t\t\tconst bootstrap = `import C from \"${importPath}\";\r\nimport { hydrate } from \"svelte\";\r\nhydrate(C,{target:document.body,props:window.__INITIAL_PROPS__??{}});`;\r\n\r\n\t\t\tawait mkdir(dirname(indexPath), { recursive: true });\r\n\r\n\t\t\treturn write(indexPath, bootstrap);\r\n\t\t})\r\n\t);\r\n\r\n\treturn {\r\n\t\tsvelteClientPaths: roots.map(({ client }) => {\r\n\t\t\tconst rel = dirname(relative(clientDir, client));\r\n\r\n\t\t\treturn join(indexDir, rel, basename(client));\r\n\t\t}),\r\n\t\tsvelteServerPaths: roots.map(({ ssr }) => ssr)\r\n\t};\r\n};\r\n",
8
- "import { mkdir } from 'node:fs/promises';\r\nimport { basename, dirname, join, relative, resolve } from 'node:path';\r\nimport {\r\n\tparse,\r\n\tcompileScript,\r\n\tcompileTemplate,\r\n\tcompileStyle\r\n} from '@vue/compiler-sfc';\r\nimport { file, write, Transpiler } from 'bun';\r\nimport { toKebab } from '../utils/stringModifiers';\r\n\r\nconst transpiler = new Transpiler({ loader: 'ts', target: 'browser' });\r\n\r\ntype BuildResult = {\r\n\tclientPath: string;\r\n\tserverPath: string;\r\n\tcssPaths: string[];\r\n\tcssCodes: string[];\r\n\ttsHelperPaths: string[];\r\n};\r\n\r\nconst extractImports = (sourceCode: string) =>\r\n\tArray.from(sourceCode.matchAll(/import\\s+[\\s\\S]+?['\"]([^'\"]+)['\"]/g))\r\n\t\t.map((match) => match[1])\r\n\t\t.filter((importPath): importPath is string => importPath !== undefined);\r\n\r\nconst toJs = (filePath: string) => {\r\n\tif (filePath.endsWith('.vue')) return filePath.replace(/\\.vue$/, '.js');\r\n\tif (filePath.endsWith('.ts')) return filePath.replace(/\\.ts$/, '.js');\r\n\r\n\treturn `${filePath}.js`;\r\n};\r\n\r\nconst stripExports = (code: string) =>\r\n\tcode\r\n\t\t.replace(/export\\s+default/, 'const script =')\r\n\t\t.replace(/^export\\s+/gm, '');\r\n\r\nconst mergeVueImports = (code: string) => {\r\n\tconst lines = code.split('\\n');\r\n\tconst specifierSet = new Set<string>();\r\n\tconst vueImportRegex = /^import\\s+{([^}]+)}\\s+from\\s+['\"]vue['\"];?$/;\r\n\r\n\tlines.forEach((line) => {\r\n\t\tconst match = line.match(vueImportRegex);\r\n\t\tif (match?.[1])\r\n\t\t\tmatch[1]\r\n\t\t\t\t.split(',')\r\n\t\t\t\t.forEach((importSpecifier) =>\r\n\t\t\t\t\tspecifierSet.add(importSpecifier.trim())\r\n\t\t\t\t);\r\n\t});\r\n\r\n\tconst nonVueLines = lines.filter((line) => !vueImportRegex.test(line));\r\n\r\n\treturn specifierSet.size\r\n\t\t? [\r\n\t\t\t\t`import { ${[...specifierSet].join(', ')} } from \"vue\";`,\r\n\t\t\t\t...nonVueLines\r\n\t\t\t].join('\\n')\r\n\t\t: nonVueLines.join('\\n');\r\n};\r\n\r\nconst compileVueFile = async (\r\n\tsourceFilePath: string,\r\n\toutputDirs: { client: string; server: string; css: string },\r\n\tcacheMap: Map<string, BuildResult>,\r\n\tisEntryPoint: boolean,\r\n\tvueRootDir: string\r\n) => {\r\n\tconst cachedResult = cacheMap.get(sourceFilePath);\r\n\tif (cachedResult) return cachedResult;\r\n\r\n\tconst relativeFilePath = relative(vueRootDir, sourceFilePath).replace(\r\n\t\t/\\\\/g,\r\n\t\t'/'\r\n\t);\r\n\tconst relativeWithoutExtension = relativeFilePath.replace(/\\.vue$/, '');\r\n\tconst fileBaseName = basename(sourceFilePath, '.vue');\r\n\tconst componentId = toKebab(fileBaseName);\r\n\r\n\tconst sourceContent = await file(sourceFilePath).text();\r\n\tconst { descriptor } = parse(sourceContent, { filename: sourceFilePath });\r\n\tconst scriptSource =\r\n\t\tdescriptor.scriptSetup?.content ?? descriptor.script?.content ?? '';\r\n\r\n\tconst importPaths = extractImports(scriptSource);\r\n\tconst childComponentPaths = importPaths.filter(\r\n\t\t(path) => path.startsWith('.') && path.endsWith('.vue')\r\n\t);\r\n\tconst helperModulePaths = importPaths.filter(\r\n\t\t(path) => path.startsWith('.') && !path.endsWith('.vue')\r\n\t);\r\n\r\n\tconst childBuildResults: BuildResult[] = await Promise.all(\r\n\t\tchildComponentPaths.map((relativeChildPath) =>\r\n\t\t\tcompileVueFile(\r\n\t\t\t\tresolve(dirname(sourceFilePath), relativeChildPath),\r\n\t\t\t\toutputDirs,\r\n\t\t\t\tcacheMap,\r\n\t\t\t\tfalse,\r\n\t\t\t\tvueRootDir\r\n\t\t\t)\r\n\t\t)\r\n\t);\r\n\r\n\tconst compiledScript = compileScript(descriptor, {\r\n\t\tid: componentId,\r\n\t\tinlineTemplate: false\r\n\t});\r\n\tconst strippedScript = stripExports(compiledScript.content);\r\n\tconst transpiledScript = transpiler\r\n\t\t.transformSync(strippedScript)\r\n\t\t.replace(\r\n\t\t\t/(['\"])(\\.{1,2}\\/[^'\"]+)(['\"])/g,\r\n\t\t\t(_, quoteStart, relativeImport, quoteEnd) =>\r\n\t\t\t\t`${quoteStart}${toJs(relativeImport)}${quoteEnd}`\r\n\t\t);\r\n\r\n\tconst generateRenderFunction = (ssr: boolean) =>\r\n\t\tcompileTemplate({\r\n\t\t\tcompilerOptions: {\r\n\t\t\t\tbindingMetadata: compiledScript.bindings,\r\n\t\t\t\tprefixIdentifiers: true\r\n\t\t\t},\r\n\t\t\tfilename: sourceFilePath,\r\n\t\t\tid: componentId,\r\n\t\t\tscoped: descriptor.styles.some((styleBlock) => styleBlock.scoped),\r\n\t\t\tsource: descriptor.template?.content ?? '',\r\n\t\t\tssr,\r\n\t\t\tssrCssVars: descriptor.cssVars\r\n\t\t}).code.replace(\r\n\t\t\t/(['\"])(\\.{1,2}\\/[^'\"]+)(['\"])/g,\r\n\t\t\t(_, quoteStart, relativeImport, quoteEnd) =>\r\n\t\t\t\t`${quoteStart}${toJs(relativeImport)}${quoteEnd}`\r\n\t\t);\r\n\r\n\tconst localCss = descriptor.styles.map(\r\n\t\t(styleBlock) =>\r\n\t\t\tcompileStyle({\r\n\t\t\t\tfilename: sourceFilePath,\r\n\t\t\t\tid: componentId,\r\n\t\t\t\tscoped: styleBlock.scoped,\r\n\t\t\t\tsource: styleBlock.content,\r\n\t\t\t\ttrim: true\r\n\t\t\t}).code\r\n\t);\r\n\tconst allCss = [\r\n\t\t...localCss,\r\n\t\t...childBuildResults.flatMap((result) => result.cssCodes)\r\n\t];\r\n\r\n\tlet cssOutputPaths: string[] = [];\r\n\tif (isEntryPoint && allCss.length) {\r\n\t\tconst cssOutputFile = join(\r\n\t\t\toutputDirs.css,\r\n\t\t\t`${toKebab(fileBaseName)}.css`\r\n\t\t);\r\n\t\tawait mkdir(dirname(cssOutputFile), { recursive: true });\r\n\t\tawait write(cssOutputFile, allCss.join('\\n'));\r\n\t\tcssOutputPaths = [cssOutputFile];\r\n\t}\r\n\r\n\tconst assembleModule = (\r\n\t\trenderCode: string,\r\n\t\trenderFnName: 'render' | 'ssrRender'\r\n\t) =>\r\n\t\tmergeVueImports(\r\n\t\t\t[\r\n\t\t\t\ttranspiledScript,\r\n\t\t\t\trenderCode,\r\n\t\t\t\t`script.${renderFnName} = ${renderFnName};`,\r\n\t\t\t\t'export default script;'\r\n\t\t\t].join('\\n')\r\n\t\t);\r\n\r\n\tconst clientCode = assembleModule(generateRenderFunction(false), 'render');\r\n\tconst serverCode = assembleModule(\r\n\t\tgenerateRenderFunction(true),\r\n\t\t'ssrRender'\r\n\t);\r\n\r\n\tconst clientOutputPath = join(\r\n\t\toutputDirs.client,\r\n\t\t`${relativeWithoutExtension}.js`\r\n\t);\r\n\tconst serverOutputPath = join(\r\n\t\toutputDirs.server,\r\n\t\t`${relativeWithoutExtension}.js`\r\n\t);\r\n\r\n\tawait mkdir(dirname(clientOutputPath), { recursive: true });\r\n\tawait mkdir(dirname(serverOutputPath), { recursive: true });\r\n\tawait write(clientOutputPath, clientCode);\r\n\tawait write(serverOutputPath, serverCode);\r\n\r\n\tconst result: BuildResult = {\r\n\t\tclientPath: clientOutputPath,\r\n\t\tcssCodes: allCss,\r\n\t\tcssPaths: cssOutputPaths,\r\n\t\tserverPath: serverOutputPath,\r\n\t\ttsHelperPaths: [\r\n\t\t\t...helperModulePaths.map((helper) =>\r\n\t\t\t\tresolve(\r\n\t\t\t\t\tdirname(sourceFilePath),\r\n\t\t\t\t\thelper.endsWith('.ts') ? helper : `${helper}.ts`\r\n\t\t\t\t)\r\n\t\t\t),\r\n\t\t\t...childBuildResults.flatMap((child) => child.tsHelperPaths)\r\n\t\t]\r\n\t};\r\n\r\n\tcacheMap.set(sourceFilePath, result);\r\n\r\n\treturn result;\r\n};\r\n\r\nexport const compileVue = async (entryPoints: string[], vueRootDir: string) => {\r\n\tconst compiledOutputRoot = join(vueRootDir, 'compiled');\r\n\tconst clientOutputDir = join(compiledOutputRoot, 'client');\r\n\tconst indexOutputDir = join(compiledOutputRoot, 'indexes');\r\n\tconst serverOutputDir = join(compiledOutputRoot, 'pages');\r\n\tconst cssOutputDir = join(compiledOutputRoot, 'styles');\r\n\r\n\tawait Promise.all([\r\n\t\tmkdir(clientOutputDir, { recursive: true }),\r\n\t\tmkdir(indexOutputDir, { recursive: true }),\r\n\t\tmkdir(serverOutputDir, { recursive: true }),\r\n\t\tmkdir(cssOutputDir, { recursive: true })\r\n\t]);\r\n\r\n\tconst buildCache = new Map<string, BuildResult>();\r\n\tconst allTsHelperPaths = new Set<string>();\r\n\r\n\tconst compiledPages = await Promise.all(\r\n\t\tentryPoints.map(async (entryPath) => {\r\n\t\t\tconst result = await compileVueFile(\r\n\t\t\t\tresolve(entryPath),\r\n\t\t\t\t{\r\n\t\t\t\t\tclient: clientOutputDir,\r\n\t\t\t\t\tcss: cssOutputDir,\r\n\t\t\t\t\tserver: serverOutputDir\r\n\t\t\t\t},\r\n\t\t\t\tbuildCache,\r\n\t\t\t\ttrue,\r\n\t\t\t\tvueRootDir\r\n\t\t\t);\r\n\r\n\t\t\tresult.tsHelperPaths.forEach((path) => allTsHelperPaths.add(path));\r\n\r\n\t\t\tconst entryBaseName = basename(entryPath, '.vue');\r\n\t\t\tconst indexOutputFile = join(indexOutputDir, `${entryBaseName}.js`);\r\n\t\t\tconst clientOutputFile = join(\r\n\t\t\t\tclientOutputDir,\r\n\t\t\t\trelative(vueRootDir, entryPath)\r\n\t\t\t\t\t.replace(/\\\\/g, '/')\r\n\t\t\t\t\t.replace(/\\.vue$/, '.js')\r\n\t\t\t);\r\n\r\n\t\t\tawait mkdir(dirname(indexOutputFile), { recursive: true });\r\n\t\t\tawait write(\r\n\t\t\t\tindexOutputFile,\r\n\t\t\t\t[\r\n\t\t\t\t\t`import Comp from \"${relative(dirname(indexOutputFile), clientOutputFile).replace(/\\\\/g, '/')}\";`,\r\n\t\t\t\t\t'import { createSSRApp } from \"vue\";',\r\n\t\t\t\t\t'const props = window.__INITIAL_PROPS__ ?? {};',\r\n\t\t\t\t\t'createSSRApp(Comp, props).mount(\"#root\");'\r\n\t\t\t\t].join('\\n')\r\n\t\t\t);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tcssPaths: result.cssPaths,\r\n\t\t\t\tindexPath: indexOutputFile,\r\n\t\t\t\tserverPath: result.serverPath\r\n\t\t\t};\r\n\t\t})\r\n\t);\r\n\r\n\tawait Promise.all(\r\n\t\tArray.from(allTsHelperPaths).map(async (tsPath) => {\r\n\t\t\tconst sourceCode = await file(tsPath).text();\r\n\t\t\tconst transpiledCode = transpiler.transformSync(sourceCode);\r\n\t\t\tconst relativeJsPath = relative(vueRootDir, tsPath).replace(\r\n\t\t\t\t/\\.ts$/,\r\n\t\t\t\t'.js'\r\n\t\t\t);\r\n\t\t\tconst outClientPath = join(clientOutputDir, relativeJsPath);\r\n\t\t\tconst outServerPath = join(serverOutputDir, relativeJsPath);\r\n\t\t\tawait mkdir(dirname(outClientPath), { recursive: true });\r\n\t\t\tawait mkdir(dirname(outServerPath), { recursive: true });\r\n\t\t\tawait write(outClientPath, transpiledCode);\r\n\t\t\tawait write(outServerPath, transpiledCode);\r\n\t\t})\r\n\t);\r\n\r\n\treturn {\r\n\t\tvueCssPaths: compiledPages.flatMap((result) => result.cssPaths),\r\n\t\tvueIndexPaths: compiledPages.map((result) => result.indexPath),\r\n\t\tvueServerPaths: compiledPages.map((result) => result.serverPath)\r\n\t};\r\n};\r\n",
9
- "const normalizeSlug = (str: string) =>\r\n\tstr\r\n\t\t.trim()\r\n\t\t.replace(/\\s+/g, '-')\r\n\t\t.replace(/[^A-Za-z0-9\\-_]+/g, '')\r\n\t\t.replace(/[-_]{2,}/g, '-');\r\n\r\nexport const toPascal = (str: string) => {\r\n\tif (!str.includes('-') && !str.includes('_')) {\r\n\t\treturn str.charAt(0).toUpperCase() + str.slice(1);\r\n\t}\r\n\r\n\treturn normalizeSlug(str)\r\n\t\t.split(/[-_]/)\r\n\t\t.filter(Boolean)\r\n\t\t.map(\r\n\t\t\t(segment) =>\r\n\t\t\t\tsegment.charAt(0).toUpperCase() + segment.slice(1).toLowerCase()\r\n\t\t)\r\n\t\t.join('');\r\n};\r\n\r\nexport const toKebab = (str: string) =>\r\n\tnormalizeSlug(str)\r\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1-$2')\r\n\t\t.toLowerCase();\r\n",
10
- "import { extname } from 'node:path';\r\nimport { BuildArtifact } from 'bun';\r\nimport { UNFOUND_INDEX } from '../constants';\r\nimport { toPascal } from '../utils/stringModifiers';\r\n\r\nexport const generateManifest = (outputs: BuildArtifact[], buildPath: string) =>\r\n\toutputs.reduce<Record<string, string>>((manifest, artifact) => {\r\n\t\tlet relative = artifact.path.startsWith(buildPath)\r\n\t\t\t? artifact.path.slice(buildPath.length)\r\n\t\t\t: artifact.path;\r\n\t\trelative = relative.replace(/\\\\/g, '/').replace(/^\\/+/, '');\r\n\r\n\t\tconst segments = relative.split('/');\r\n\t\tconst fileWithHash = segments.pop();\r\n\t\tif (!fileWithHash) return manifest;\r\n\r\n\t\tconst [baseName] = fileWithHash.split(`.${artifact.hash}.`);\r\n\t\tif (!baseName) return manifest;\r\n\r\n\t\tconst pascalName = toPascal(baseName);\r\n\t\tconst ext = extname(fileWithHash);\r\n\r\n\t\tif (ext === '.css') {\r\n\t\t\tmanifest[`${pascalName}CSS`] = `/${relative}`;\r\n\r\n\t\t\treturn manifest;\r\n\t\t}\r\n\r\n\t\tconst idx = segments.findIndex(\r\n\t\t\t(seg) => seg === 'indexes' || seg === 'pages'\r\n\t\t);\r\n\t\tconst folder = idx > UNFOUND_INDEX ? segments[idx] : segments[0];\r\n\r\n\t\tif (folder === 'indexes') {\r\n\t\t\tmanifest[`${pascalName}Index`] = `/${relative}`;\r\n\t\t} else if (folder === 'pages') {\r\n\t\t\tmanifest[pascalName] = artifact.path;\r\n\t\t} else {\r\n\t\t\tmanifest[pascalName] = `/${relative}`;\r\n\t\t}\r\n\r\n\t\treturn manifest;\r\n\t}, {});\r\n",
11
- "import { mkdir, rm, writeFile } from 'fs/promises';\r\nimport { basename, join } from 'path';\r\nimport { Glob } from 'bun';\r\n\r\nexport const generateReactIndexFiles = async (\r\n\treactPagesDirectory: string,\r\n\treactIndexesDirectory: string\r\n) => {\r\n\tawait rm(reactIndexesDirectory, { force: true, recursive: true });\r\n\tawait mkdir(reactIndexesDirectory);\r\n\r\n\tconst pagesGlob = new Glob('*.*');\r\n\tconst files: string[] = [];\r\n\tfor await (const file of pagesGlob.scan({ cwd: reactPagesDirectory })) {\r\n\t\tfiles.push(file);\r\n\t}\r\n\tconst promises = files.map(async (file) => {\r\n\t\tconst fileName = basename(file);\r\n\t\tconst [componentName] = fileName.split('.');\r\n\t\tconst content = [\r\n\t\t\t`import { hydrateRoot } from 'react-dom/client';`,\r\n\t\t\t`import type { ComponentType } from 'react'`,\r\n\t\t\t`import { ${componentName} } from '../pages/${componentName}';\\n`,\r\n\t\t\t`type PropsOf<C> = C extends ComponentType<infer P> ? P : never;\\n`,\r\n\t\t\t`declare global {`,\r\n\t\t\t`\\tinterface Window {`,\r\n\t\t\t`\\t\\t__INITIAL_PROPS__: PropsOf<typeof ${componentName}>`,\r\n\t\t\t`\\t}`,\r\n\t\t\t`}\\n`,\r\n\t\t\t`hydrateRoot(document, <${componentName} {...window.__INITIAL_PROPS__} />);`\r\n\t\t].join('\\n');\r\n\r\n\t\treturn writeFile(\r\n\t\t\tjoin(reactIndexesDirectory, `${componentName}.tsx`),\r\n\t\t\tcontent\r\n\t\t);\r\n\t});\r\n\tawait Promise.all(promises);\r\n};\r\n",
12
- "import { BUN_BUILD_WARNING_SUPPRESSION } from '../constants';\r\n\r\nexport const outputLogs = (logs: (BuildMessage | ResolveMessage)[]) => {\r\n\tfor (const log of logs) {\r\n\t\tif (\r\n\t\t\t// TODO: When bun supports wildcard sideEffects, remove this suppression\r\n\t\t\tlog.message.includes(BUN_BUILD_WARNING_SUPPRESSION)\r\n\t\t)\r\n\t\t\tcontinue;\r\n\r\n\t\tif (log.level === 'error') console.error(log);\r\n\t\telse if (log.level === 'warning') console.warn(log);\r\n\t\telse console.info(log);\r\n\t}\r\n};\r\n",
13
- "import { Glob } from 'bun';\r\n\r\nexport const scanEntryPoints = async (dir: string, pattern: string) => {\r\n\tconst entryPaths: string[] = [];\r\n\tconst glob = new Glob(pattern);\r\n\tfor await (const file of glob.scan({ absolute: true, cwd: dir })) {\r\n\t\tentryPaths.push(file);\r\n\t}\r\n\r\n\treturn entryPaths;\r\n};\r\n",
14
- "import { readFile, writeFile } from 'node:fs/promises';\r\nimport { toPascal } from '../utils/stringModifiers';\r\nimport { scanEntryPoints } from './scanEntryPoints';\r\n\r\nexport const updateAssetPaths = async (\r\n\tmanifest: Record<string, string>,\r\n\tdirectory: string\r\n) => {\r\n\tconst htmlFiles = await scanEntryPoints(directory, '*.html');\r\n\tconst assetRegex =\r\n\t\t/((?:<script[^>]+src=|<link[^>]*?rel=[\"']stylesheet[\"'][^>]*?href=)[\"'])(?!\\/?(?:.*\\/)?htmx\\.min\\.js)(\\/?(?:.*\\/)?)([^./\"']+)(?:\\.[^.\"'/]+)?(\\.(?:js|ts|css))([\"'][^>]*>)/g;\r\n\r\n\tconst tasks = htmlFiles.map(async (filePath) => {\r\n\t\tconst original = await readFile(filePath, 'utf8');\r\n\t\tconst updated = original.replace(\r\n\t\t\tassetRegex,\r\n\t\t\t(match, prefix, dir, name, ext, suffix) => {\r\n\t\t\t\tconst pascal = toPascal(name);\r\n\r\n\t\t\t\tlet key;\r\n\t\t\t\tif (ext === '.css') {\r\n\t\t\t\t\tkey = `${pascal}CSS`;\r\n\t\t\t\t} else if (dir.includes('/indexes/')) {\r\n\t\t\t\t\tkey = `${pascal}Index`;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tkey = pascal;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst newPath = manifest[key];\r\n\t\t\t\tif (newPath) {\r\n\t\t\t\t\treturn `${prefix}${newPath}${suffix}`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconsole.error(\r\n\t\t\t\t\t`error: no manifest entry for ${ext.slice(1)} \"${name}\" referenced in ${filePath}`\r\n\t\t\t\t);\r\n\r\n\t\t\t\treturn match;\r\n\t\t\t}\r\n\t\t);\r\n\t\tawait writeFile(filePath, updated, 'utf8');\r\n\t});\r\n\r\n\tawait Promise.all(tasks);\r\n};\r\n",
15
- "import { rm } from 'node:fs/promises';\r\nimport { join } from 'node:path';\r\n\r\ntype CleanupProps = {\r\n\tsvelteDir?: string;\r\n\tvueDir?: string;\r\n\treactIndexesPath?: string;\r\n};\r\n\r\nexport const cleanup = async ({\r\n\tsvelteDir,\r\n\tvueDir,\r\n\treactIndexesPath\r\n}: CleanupProps) => {\r\n\tif (svelteDir) {\r\n\t\tawait rm(join(svelteDir, 'compiled'), { force: true, recursive: true });\r\n\t}\r\n\r\n\tif (vueDir) {\r\n\t\tawait rm(join(vueDir, 'compiled'), { force: true, recursive: true });\r\n\t}\r\n\r\n\tif (reactIndexesPath)\r\n\t\tawait rm(reactIndexesPath, { force: true, recursive: true });\r\n};\r\n",
16
- "import { sep } from 'node:path';\r\n\r\nexport const commonAncestor = (paths: string[], fallback?: string) => {\r\n\tif (paths.length === 0) return fallback;\r\n\tconst segmentsList = paths.map((p) => p.split(sep));\r\n\tconst [first] = segmentsList;\r\n\tif (!first) return fallback;\r\n\tconst commonSegments = first.filter((segment, index) =>\r\n\t\tsegmentsList.every((pathSegs) => pathSegs[index] === segment)\r\n\t);\r\n\r\n\treturn commonSegments.length ? commonSegments.join(sep) : fallback;\r\n};\r\n",
17
- "import {\r\n\tMILLISECONDS_IN_A_SECOND,\r\n\tTIME_PRECISION,\r\n\tMILLISECONDS_IN_A_MINUTE\r\n} from '../constants';\r\n\r\nexport const getDurationString = (duration: number) => {\r\n\tlet durationString;\r\n\r\n\tif (duration < MILLISECONDS_IN_A_SECOND) {\r\n\t\tdurationString = `${duration.toFixed(TIME_PRECISION)}ms`;\r\n\t} else if (duration < MILLISECONDS_IN_A_MINUTE) {\r\n\t\tdurationString = `${(duration / MILLISECONDS_IN_A_SECOND).toFixed(TIME_PRECISION)}s`;\r\n\t} else {\r\n\t\tdurationString = `${(duration / MILLISECONDS_IN_A_MINUTE).toFixed(TIME_PRECISION)}m`;\r\n\t}\r\n\r\n\treturn durationString;\r\n};\r\n",
18
- "import { resolve, relative, sep } from 'node:path';\r\n\r\nexport const validateSafePath = (targetPath: string, baseDirectory: string) => {\r\n\tconst absoluteBase = resolve(baseDirectory);\r\n\tconst absoluteTarget = resolve(baseDirectory, targetPath);\r\n\tif (relative(absoluteBase, absoluteTarget).startsWith(`..${sep}`)) {\r\n\t\tthrow new Error(`Unsafe path: ${targetPath}`);\r\n\t}\r\n\r\n\treturn absoluteTarget;\r\n};\r\n",
19
- "import { file } from 'bun';\r\nimport { ComponentType as ReactComponent, createElement } from 'react';\r\nimport { renderToReadableStream as renderReactToReadableStream } from 'react-dom/server';\r\nimport { Component as SvelteComponent } from 'svelte';\r\nimport { Component as VueComponent, createSSRApp, h } from 'vue';\r\nimport { renderToWebStream as renderVueToWebStream } from 'vue/server-renderer';\r\nimport { renderToReadableStream as renderSvelteToReadableStream } from '../svelte/renderToReadableStream';\r\nimport { PropsArgs } from '../types';\r\n\r\nexport const handleReactPageRequest = async <\r\n\tProps extends Record<string, unknown> = Record<never, never>\r\n>(\r\n\tpageComponent: ReactComponent<Props>,\r\n\tindex: string,\r\n\t...props: keyof Props extends never ? [] : [props: Props]\r\n) => {\r\n\tconst [maybeProps] = props;\r\n\tconst element =\r\n\t\tmaybeProps !== undefined\r\n\t\t\t? createElement(pageComponent, maybeProps)\r\n\t\t\t: createElement(pageComponent);\r\n\r\n\tconst stream = await renderReactToReadableStream(element, {\r\n\t\tbootstrapModules: [index],\r\n\t\tbootstrapScriptContent: maybeProps\r\n\t\t\t? `window.__INITIAL_PROPS__=${JSON.stringify(maybeProps)}`\r\n\t\t\t: undefined\r\n\t});\r\n\r\n\treturn new Response(stream, {\r\n\t\theaders: { 'Content-Type': 'text/html' }\r\n\t});\r\n};\r\n\r\n// Declare overloads matching Svelte’s own component API to preserve correct type inference\r\ntype HandleSveltePageRequest = {\r\n\t(\r\n\t\tPageComponent: SvelteComponent<Record<string, never>>,\r\n\t\tpagePath: string,\r\n\t\tindexPath: string\r\n\t): Promise<Response>;\r\n\t<P extends Record<string, unknown>>(\r\n\t\tPageComponent: SvelteComponent<P>,\r\n\t\tpagePath: string,\r\n\t\tindexPath: string,\r\n\t\tprops: P\r\n\t): Promise<Response>;\r\n};\r\n\r\nexport const handleSveltePageRequest: HandleSveltePageRequest = async <\r\n\tP extends Record<string, unknown>\r\n>(\r\n\t_PageComponent: SvelteComponent<P>,\r\n\tpagePath: string,\r\n\tindexPath: string,\r\n\tprops?: P\r\n) => {\r\n\tconst { default: ImportedPageComponent } = await import(pagePath);\r\n\r\n\tconst stream = await renderSvelteToReadableStream(\r\n\t\tImportedPageComponent,\r\n\t\tprops,\r\n\t\t{\r\n\t\t\tbootstrapModules: indexPath ? [indexPath] : [],\r\n\t\t\tbootstrapScriptContent: `window.__INITIAL_PROPS__=${JSON.stringify(\r\n\t\t\t\tprops\r\n\t\t\t)}`\r\n\t\t}\r\n\t);\r\n\r\n\treturn new Response(stream, {\r\n\t\theaders: { 'Content-Type': 'text/html' }\r\n\t});\r\n};\r\n\r\nexport const handleVuePageRequest = async <\r\n\tProps extends Record<string, unknown> = Record<never, never>\r\n>(\r\n\t_PageComponent: VueComponent<Props>,\r\n\tpagePath: string,\r\n\tindexPath: string,\r\n\theadTag: `<head>${string}</head>` = '<head></head>',\r\n\t...props: keyof Props extends never ? [] : [props: Props]\r\n) => {\r\n\tconst [maybeProps] = props;\r\n\r\n\tconst { default: ImportedPageComponent } = await import(pagePath);\r\n\r\n\tconst app = createSSRApp({\r\n\t\trender: () => h(ImportedPageComponent, maybeProps ?? {})\r\n\t});\r\n\r\n\tconst bodyStream = renderVueToWebStream(app);\r\n\r\n\tconst head = `<!DOCTYPE html><html>${headTag}<body><div id=\"root\">`;\r\n\tconst tail = `</div><script>window.__INITIAL_PROPS__=${JSON.stringify(\r\n\t\tmaybeProps ?? {}\r\n\t)}</script><script type=\"module\" src=\"${indexPath}\"></script></body></html>`;\r\n\r\n\tconst stream = new ReadableStream({\r\n\t\tstart(controller) {\r\n\t\t\tcontroller.enqueue(head);\r\n\t\t\tconst reader = bodyStream.getReader();\r\n\t\t\tconst pumpLoop = () => {\r\n\t\t\t\treader\r\n\t\t\t\t\t.read()\r\n\t\t\t\t\t.then(({ done, value }) =>\r\n\t\t\t\t\t\tdone\r\n\t\t\t\t\t\t\t? (controller.enqueue(tail), controller.close())\r\n\t\t\t\t\t\t\t: (controller.enqueue(value), pumpLoop())\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.catch((err) => controller.error(err));\r\n\t\t\t};\r\n\t\t\tpumpLoop();\r\n\t\t}\r\n\t});\r\n\r\n\treturn new Response(stream, {\r\n\t\theaders: { 'Content-Type': 'text/html' }\r\n\t});\r\n};\r\n\r\nexport const handleHTMLPageRequest = (html: string) => file(html);\r\nexport const handleHTMXPageRequest = (htmx: string) => file(htmx);\r\n\r\nexport const handlePageRequest = <Component>(\r\n\tPageComponent: Component,\r\n\t...props: PropsArgs<Component>\r\n) => {\r\n\tconsole.log('handlePageRequest coming soon.', PageComponent, props);\r\n};\r\n",
20
- "import type { Component } from 'svelte';\r\nimport { render } from 'svelte/server';\r\nimport { DEFAULT_CHUNK_SIZE } from '../constants';\r\nimport { escapeScriptContent } from '../utils/escapeScriptContent';\r\n\r\nexport type RenderStreamOptions = {\r\n\tbootstrapScriptContent?: string;\r\n\tbootstrapScripts?: string[];\r\n\tbootstrapModules?: string[];\r\n\tnonce?: string;\r\n\tonError?: (error: unknown) => void;\r\n\tprogressiveChunkSize?: number;\r\n\tsignal?: AbortSignal;\r\n};\r\n\r\nexport const renderToReadableStream = async <\r\n\tProps extends Record<string, unknown> = Record<string, never>\r\n>(\r\n\tcomponent: Component<Props>,\r\n\tprops?: Props,\r\n\t{\r\n\t\tbootstrapScriptContent,\r\n\t\tbootstrapScripts = [],\r\n\t\tbootstrapModules = [],\r\n\t\tnonce,\r\n\t\tonError = console.error,\r\n\t\tprogressiveChunkSize = DEFAULT_CHUNK_SIZE,\r\n\t\tsignal\r\n\t}: RenderStreamOptions = {}\r\n) => {\r\n\ttry {\r\n\t\tconst { head, body } =\r\n\t\t\ttypeof props === 'undefined'\r\n\t\t\t\t? // @ts-expect-error Svelte's render function can't determine which overload to choose when the component is generic\r\n\t\t\t\t\trender(component)\r\n\t\t\t\t: render(component, { props });\r\n\t\tconst nonceAttr = nonce ? ` nonce=\"${nonce}\"` : '';\r\n\t\tconst scripts =\r\n\t\t\t(bootstrapScriptContent\r\n\t\t\t\t? `<script${nonceAttr}>${escapeScriptContent(bootstrapScriptContent)}</script>`\r\n\t\t\t\t: '') +\r\n\t\t\tbootstrapScripts\r\n\t\t\t\t.map((src) => `<script${nonceAttr} src=\"${src}\"></script>`)\r\n\t\t\t\t.join('') +\r\n\t\t\tbootstrapModules\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(src) =>\r\n\t\t\t\t\t\t`<script${nonceAttr} type=\"module\" src=\"${src}\"></script>`\r\n\t\t\t\t)\r\n\t\t\t\t.join('');\r\n\t\tconst encoder = new TextEncoder();\r\n\t\t// Warning: this encodes the entire document into memory in one buffer\r\n\t\tconst full = encoder.encode(\r\n\t\t\t`<!DOCTYPE html><html lang=\"en\"><head>${head}</head><body>${body}${scripts}</body></html>`\r\n\t\t);\r\n\r\n\t\tlet offset = 0;\r\n\r\n\t\treturn new ReadableStream<Uint8Array>({\r\n\t\t\ttype: 'bytes',\r\n\t\t\tcancel(reason) {\r\n\t\t\t\tonError?.(reason);\r\n\t\t\t},\r\n\t\t\tpull(controller) {\r\n\t\t\t\tif (signal?.aborted) {\r\n\t\t\t\t\tcontroller.close();\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (offset >= full.length) {\r\n\t\t\t\t\tcontroller.close();\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tconst end = Math.min(\r\n\t\t\t\t\toffset + progressiveChunkSize,\r\n\t\t\t\t\tfull.length\r\n\t\t\t\t);\r\n\t\t\t\tcontroller.enqueue(full.subarray(offset, end));\r\n\t\t\t\toffset = end;\r\n\t\t\t}\r\n\t\t});\r\n\t} catch (error) {\r\n\t\tonError?.(error);\r\n\t\tthrow error;\r\n\t}\r\n};\r\n",
21
- "const ESCAPE_LOOKUP: Record<string, string> = {\r\n\t'\\u2028': '\\\\u2028',\r\n\t'\\u2029': '\\\\u2029',\r\n\t'&': '\\\\u0026',\r\n\t'<': '\\\\u003C',\r\n\t'>': '\\\\u003E'\r\n};\r\n\r\nconst ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\r\n\r\nexport const escapeScriptContent = (content: string) =>\r\n\tcontent.replace(ESCAPE_REGEX, (char) => {\r\n\t\tconst escaped = ESCAPE_LOOKUP[char];\r\n\r\n\t\treturn escaped !== undefined ? escaped : char;\r\n\t});\r\n",
22
- "export const asset = (manifest: Record<string, string>, name: string) => {\r\n\tconst assetPath = manifest[name];\r\n\tif (assetPath === undefined) {\r\n\t\tthrow new Error(`Asset \"${name}\" not found in manifest.`);\r\n\t}\r\n\r\n\treturn assetPath;\r\n};\r\n",
23
- "import { argv } from 'node:process';\r\nimport { env } from 'bun';\r\nimport { Elysia } from 'elysia';\r\nimport { DEFAULT_PORT } from '../constants';\r\nimport { getLocalIPAddress } from '../utils/networking';\r\n\r\nlet host = env.HOST ?? 'localhost';\r\nconst port = env.PORT ?? DEFAULT_PORT;\r\nlet localIP: string | undefined;\r\n\r\nconst args = argv;\r\nconst hostFlag = args.includes('--host');\r\n\r\nif (hostFlag) {\r\n\tlocalIP = getLocalIPAddress();\r\n\thost = '0.0.0.0';\r\n}\r\n\r\nexport const networking = (app: Elysia) =>\r\n\tapp.listen(\r\n\t\t{\r\n\t\t\thostname: host,\r\n\t\t\tport: port\r\n\t\t},\r\n\t\t() => {\r\n\t\t\t//TODO: I dont think this works properly\r\n\t\t\tif (hostFlag) {\r\n\t\t\t\tconsole.log(`Server started on http://localhost:${port}`);\r\n\t\t\t\tconsole.log(\r\n\t\t\t\t\t`Server started on network: http://${localIP}:${port}`\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log(`Server started on http://${host}:${port}`);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n",
24
- "import os from 'os';\r\n\r\nexport const getLocalIPAddress = () => {\r\n\tconst interfaces = os.networkInterfaces();\r\n\tconst addresses = Object.values(interfaces)\r\n\t\t.flat()\r\n\t\t.filter(\r\n\t\t\t(iface): iface is os.NetworkInterfaceInfo => iface !== undefined\r\n\t\t);\r\n\tconst ipAddress = addresses.find(\r\n\t\t(iface) => iface.family === 'IPv4' && !iface.internal\r\n\t);\r\n\r\n\tif (ipAddress) return ipAddress.address; // Return the first non-internal IPv4 address\r\n\r\n\tconsole.warn('No IP address found, falling back to localhost');\r\n\r\n\treturn 'localhost'; // Fallback to localhost if no IP found\r\n};\r\n",
25
- "export const pageRouterPlugin = () => {\r\n\tconsole.log('Page Router Plugin Not Implemented Yet');\r\n};\r\n",
26
- "type GenerateHeadElementProps = {\r\n\tcssPath?: string;\r\n\ttitle?: string;\r\n\ticon?: string;\r\n\tdescription?: string;\r\n\tfont?: string;\r\n};\r\n\r\nexport const generateHeadElement = ({\r\n\tcssPath,\r\n\ttitle = 'AbsoluteJS',\r\n\tdescription = 'A page created using AbsoluteJS',\r\n\tfont,\r\n\ticon = '/assets/ico/favicon.ico'\r\n}: GenerateHeadElementProps = {}) =>\r\n\t`<head>\r\n <meta charset=\"UTF-8\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <title>${title}</title>\r\n <meta name=\"description\" content=\"${description}\">\r\n <link rel=\"icon\" href=\"${icon}\" type=\"image/x-icon\">\r\n ${\r\n\t\tfont\r\n\t\t\t? `<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\r\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\r\n <link href=\"https://fonts.googleapis.com/css2?family=${font}:wght@100..900&display=swap\" rel=\"stylesheet\">`\r\n\t\t\t: ''\r\n }\r\n ${cssPath ? `<link rel=\"stylesheet\" href=\"${cssPath}\" type=\"text/css\">` : ''}\r\n</head>` as const;\r\n",
27
- "import { env } from 'bun';\r\n\r\nexport const getEnv = (key: string) => {\r\n\tconst environmentVariable = env[key];\r\n\tif (\r\n\t\ttypeof environmentVariable !== 'string' ||\r\n\t\tenvironmentVariable.length === 0\r\n\t) {\r\n\t\tthrow new Error(`Missing environment variable ${key}`);\r\n\t}\r\n\r\n\treturn environmentVariable;\r\n};\r\n"
5
+ "export const UNFOUND_INDEX = -1;\nexport const SECONDS_IN_A_MINUTE = 60;\nexport const MILLISECONDS_IN_A_SECOND = 1000;\nexport const MILLISECONDS_IN_A_MINUTE =\n\tMILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE;\nexport const MINUTES_IN_AN_HOUR = 60;\nexport const HOURS_IN_DAY = 24;\nexport const MILLISECONDS_IN_A_DAY =\n\tMILLISECONDS_IN_A_SECOND *\n\tSECONDS_IN_A_MINUTE *\n\tMINUTES_IN_AN_HOUR *\n\tHOURS_IN_DAY;\nexport const TIME_PRECISION = 2;\nexport const TWO_THIRDS = 2 / 3;\nexport const DEFAULT_PORT = 3000;\nexport const DEFAULT_CHUNK_SIZE = 16_384;\nexport const BUN_BUILD_WARNING_SUPPRESSION =\n\t'wildcard sideEffects are not supported yet';\n",
6
+ "import { copyFileSync, cpSync, mkdirSync } from 'node:fs';\nimport { rm } from 'node:fs/promises';\nimport { basename, join } from 'node:path';\nimport { cwd, env, exit } from 'node:process';\nimport { $, build as bunBuild, BuildArtifact, Glob } from 'bun';\nimport { compileSvelte } from '../build/compileSvelte';\nimport { compileVue } from '../build/compileVue';\nimport { generateManifest } from '../build/generateManifest';\nimport { generateReactIndexFiles } from '../build/generateReactIndexes';\nimport { outputLogs } from '../build/outputLogs';\nimport { scanEntryPoints } from '../build/scanEntryPoints';\nimport { updateAssetPaths } from '../build/updateAssetPaths';\nimport { BuildConfig } from '../types';\nimport { cleanup } from '../utils/cleanup';\nimport { commonAncestor } from '../utils/commonAncestor';\nimport { getDurationString } from '../utils/getDurationString';\nimport { validateSafePath } from '../utils/validateSafePath';\n\nconst isDev = env.NODE_ENV === 'development';\n\nconst vueFeatureFlags: Record<string, string> = {\n\t__VUE_OPTIONS_API__: 'true',\n\t__VUE_PROD_DEVTOOLS__: isDev ? 'true' : 'false',\n\t__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: isDev ? 'true' : 'false'\n};\n\nexport const build = async ({\n\tbuildDirectory = 'build',\n\tassetsDirectory,\n\tpublicDirectory,\n\treactDirectory,\n\thtmlDirectory,\n\thtmxDirectory,\n\tangularDirectory,\n\tsvelteDirectory,\n\tvueDirectory,\n\ttailwind,\n\toptions\n}: BuildConfig) => {\n\tconst buildStart = performance.now();\n\tconst projectRoot = cwd();\n\n\tconst buildPath = validateSafePath(buildDirectory, projectRoot);\n\tconst assetsPath =\n\t\tassetsDirectory && validateSafePath(assetsDirectory, projectRoot);\n\tconst reactDir =\n\t\treactDirectory && validateSafePath(reactDirectory, projectRoot);\n\tconst htmlDir =\n\t\thtmlDirectory && validateSafePath(htmlDirectory, projectRoot);\n\tconst htmxDir =\n\t\thtmxDirectory && validateSafePath(htmxDirectory, projectRoot);\n\tconst svelteDir =\n\t\tsvelteDirectory && validateSafePath(svelteDirectory, projectRoot);\n\tconst vueDir = vueDirectory && validateSafePath(vueDirectory, projectRoot);\n\tconst angularDir =\n\t\tangularDirectory && validateSafePath(angularDirectory, projectRoot);\n\n\tconst reactIndexesPath = reactDir && join(reactDir, 'indexes');\n\tconst reactPagesPath = reactDir && join(reactDir, 'pages');\n\tconst htmlPagesPath = htmlDir && join(htmlDir, 'pages');\n\tconst htmlScriptsPath = htmlDir && join(htmlDir, 'scripts');\n\tconst sveltePagesPath = svelteDir && join(svelteDir, 'pages');\n\tconst vuePagesPath = vueDir && join(vueDir, 'pages');\n\tconst htmxPagesPath = htmxDir && join(htmxDir, 'pages');\n\tconst angularPagesPath = angularDir && join(angularDir, 'pages');\n\n\tconst frontends = [\n\t\treactDir,\n\t\thtmlDir,\n\t\thtmxDir,\n\t\tsvelteDir,\n\t\tvueDir,\n\t\tangularDir\n\t].filter(Boolean);\n\tconst isSingle = frontends.length === 1;\n\n\tlet serverOutDir;\n\tif (svelteDir) serverOutDir = join(buildPath, basename(svelteDir), 'pages');\n\telse if (vueDir) serverOutDir = join(buildPath, basename(vueDir), 'pages');\n\n\tlet serverRoot;\n\tif (sveltePagesPath) serverRoot = sveltePagesPath;\n\telse if (vuePagesPath) serverRoot = vuePagesPath;\n\n\tconst publicPath =\n\t\tpublicDirectory && validateSafePath(publicDirectory, projectRoot);\n\n\tawait rm(buildPath, { force: true, recursive: true });\n\tmkdirSync(buildPath);\n\n\tif (publicPath)\n\t\tcpSync(publicPath, buildPath, { force: true, recursive: true });\n\n\tif (reactIndexesPath && reactPagesPath)\n\t\tawait generateReactIndexFiles(reactPagesPath, reactIndexesPath);\n\n\tif (assetsPath)\n\t\tcpSync(assetsPath, join(buildPath, 'assets'), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\n\tif (tailwind)\n\t\tawait $`bunx @tailwindcss/cli -i ${tailwind.input} -o ${join(buildPath, tailwind.output)}`;\n\n\tconst reactEntries = reactIndexesPath\n\t\t? await scanEntryPoints(reactIndexesPath, '*.tsx')\n\t\t: [];\n\tconst htmlEntries = htmlScriptsPath\n\t\t? await scanEntryPoints(htmlScriptsPath, '*.{js,ts}')\n\t\t: [];\n\tconst svelteEntries = sveltePagesPath\n\t\t? await scanEntryPoints(sveltePagesPath, '*.svelte')\n\t\t: [];\n\tconst vueEntries = vuePagesPath\n\t\t? await scanEntryPoints(vuePagesPath, '*.vue')\n\t\t: [];\n\tconst angularEntries = angularPagesPath\n\t\t? await scanEntryPoints(angularPagesPath, '*.ts')\n\t\t: [];\n\n\tconst htmlCssEntries = htmlDir\n\t\t? await scanEntryPoints(join(htmlDir, 'styles'), '*.css')\n\t\t: [];\n\tconst htmxCssEntries = htmxDir\n\t\t? await scanEntryPoints(join(htmxDir, 'styles'), '*.css')\n\t\t: [];\n\tconst reactCssEntries = reactDir\n\t\t? await scanEntryPoints(join(reactDir, 'styles'), '*.css')\n\t\t: [];\n\tconst svelteCssEntries = svelteDir\n\t\t? await scanEntryPoints(join(svelteDir, 'styles'), '*.css')\n\t\t: [];\n\n\tconst { svelteServerPaths, svelteClientPaths } = svelteDir\n\t\t? await compileSvelte(svelteEntries, svelteDir)\n\t\t: { svelteClientPaths: [], svelteServerPaths: [] };\n\n\tconst { vueServerPaths, vueIndexPaths, vueCssPaths } = vueDir\n\t\t? await compileVue(vueEntries, vueDir)\n\t\t: { vueCssPaths: [], vueIndexPaths: [], vueServerPaths: [] };\n\n\tconst serverEntryPoints = [...svelteServerPaths, ...vueServerPaths];\n\tconst clientEntryPoints = [\n\t\t...reactEntries,\n\t\t...svelteClientPaths,\n\t\t...htmlEntries,\n\t\t...vueIndexPaths\n\t];\n\tconst cssEntryPoints = [\n\t\t...vueCssPaths,\n\t\t...reactCssEntries,\n\t\t...svelteCssEntries,\n\t\t...htmlCssEntries,\n\t\t...htmxCssEntries\n\t];\n\n\tif (\n\t\tserverEntryPoints.length === 0 &&\n\t\tclientEntryPoints.length === 0 &&\n\t\thtmxDir === undefined\n\t) {\n\t\tconsole.warn('No entry points found, manifest will be empty.');\n\n\t\treturn {};\n\t}\n\n\tlet serverLogs: (BuildMessage | ResolveMessage)[] = [];\n\tlet serverOutputs: BuildArtifact[] = [];\n\n\tif (serverEntryPoints.length > 0) {\n\t\tconst { logs, outputs } = await bunBuild({\n\t\t\tentrypoints: serverEntryPoints,\n\t\t\tformat: 'esm',\n\t\t\tnaming: `[dir]/[name].[hash].[ext]`,\n\t\t\toutdir: serverOutDir,\n\t\t\troot: serverRoot,\n\t\t\ttarget: 'bun'\n\t\t}).catch((err) => {\n\t\t\tconsole.error('Server build failed:', err);\n\t\t\texit(1);\n\t\t});\n\t\tserverLogs = logs;\n\t\tserverOutputs = outputs;\n\t}\n\n\tlet clientLogs: (BuildMessage | ResolveMessage)[] = [];\n\tlet clientOutputs: BuildArtifact[] = [];\n\n\tif (clientEntryPoints.length > 0) {\n\t\tconst roots: string[] = [\n\t\t\treactDir,\n\t\t\tsvelteDir,\n\t\t\thtmlDir,\n\t\t\tvueDir,\n\t\t\tangularDir\n\t\t].filter((dir): dir is string => Boolean(dir));\n\t\tconst clientRoot = isSingle\n\t\t\t? (roots[0] ?? projectRoot)\n\t\t\t: commonAncestor(roots, projectRoot);\n\t\tconst { logs, outputs } = await bunBuild({\n\t\t\tdefine: vueDirectory ? vueFeatureFlags : undefined,\n\t\t\tentrypoints: clientEntryPoints,\n\t\t\tformat: 'esm',\n\t\t\tminify: true,\n\t\t\tnaming: `[dir]/[name].[hash].[ext]`,\n\t\t\toutdir: buildPath,\n\t\t\troot: clientRoot,\n\t\t\ttarget: 'browser'\n\t\t}).catch((err) => {\n\t\t\tconsole.error('Client build failed:', err);\n\t\t\texit(1);\n\t\t});\n\t\tclientLogs = logs;\n\t\tclientOutputs = outputs;\n\t}\n\n\tlet cssLogs: (BuildMessage | ResolveMessage)[] = [];\n\tlet cssOutputs: BuildArtifact[] = [];\n\n\tif (cssEntryPoints.length > 0) {\n\t\tconst { logs, outputs } = await bunBuild({\n\t\t\tentrypoints: cssEntryPoints,\n\t\t\tnaming: `[name].[hash].[ext]`,\n\t\t\toutdir: join(\n\t\t\t\tbuildPath,\n\t\t\t\tassetsPath ? basename(assetsPath) : 'assets',\n\t\t\t\t'css'\n\t\t\t),\n\t\t\ttarget: 'browser'\n\t\t}).catch((err) => {\n\t\t\tconsole.error('CSS build failed:', err);\n\t\t\texit(1);\n\t\t});\n\t\tcssLogs = logs;\n\t\tcssOutputs = outputs;\n\t}\n\n\tconst allLogs = [...serverLogs, ...clientLogs, ...cssLogs];\n\toutputLogs(allLogs);\n\n\tconst manifest = generateManifest(\n\t\t[...serverOutputs, ...clientOutputs, ...cssOutputs],\n\t\tbuildPath\n\t);\n\n\tif (htmlDir && htmlPagesPath) {\n\t\tconst outputHtmlPages = isSingle\n\t\t\t? join(buildPath, 'pages')\n\t\t\t: join(buildPath, basename(htmlDir), 'pages');\n\t\tmkdirSync(outputHtmlPages, { recursive: true });\n\t\tcpSync(htmlPagesPath, outputHtmlPages, {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t\tawait updateAssetPaths(manifest, outputHtmlPages);\n\t}\n\n\tif (htmxDir && htmxPagesPath) {\n\t\tconst outputHtmxPages = isSingle\n\t\t\t? join(buildPath, 'pages')\n\t\t\t: join(buildPath, basename(htmxDir), 'pages');\n\n\t\tmkdirSync(outputHtmxPages, { recursive: true });\n\t\tcpSync(htmxPagesPath, outputHtmxPages, {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\n\t\tconst htmxDestDir = isSingle\n\t\t\t? buildPath\n\t\t\t: join(buildPath, basename(htmxDir));\n\n\t\tmkdirSync(htmxDestDir, { recursive: true });\n\n\t\tconst glob = new Glob('htmx*.min.js');\n\t\tfor (const relativePath of glob.scanSync({ cwd: htmxDir })) {\n\t\t\tconst src = join(htmxDir, relativePath);\n\t\t\tconst dest = join(htmxDestDir, 'htmx.min.js');\n\t\t\tcopyFileSync(src, dest);\n\t\t\tbreak;\n\t\t}\n\t\tawait updateAssetPaths(manifest, outputHtmxPages);\n\t}\n\n\tif (!options?.preserveIntermediateFiles)\n\t\tawait cleanup({\n\t\t\treactIndexesPath,\n\t\t\tsvelteDir,\n\t\t\tvueDir\n\t\t});\n\n\tconsole.log(\n\t\t`Build completed in ${getDurationString(performance.now() - buildStart)}`\n\t);\n\n\treturn manifest;\n};\n",
7
+ "import { mkdir, stat } from 'node:fs/promises';\nimport {\n\tdirname,\n\tjoin,\n\tbasename,\n\textname,\n\tresolve,\n\trelative,\n\tsep\n} from 'node:path';\nimport { env } from 'node:process';\nimport { write, file, Transpiler } from 'bun';\nimport { compile, compileModule, preprocess } from 'svelte/compiler';\n\ntype Built = { ssr: string; client: string };\ntype Cache = Map<string, Built>;\n\nconst transpiler = new Transpiler({ loader: 'ts', target: 'browser' });\n\nconst exists = async (path: string) => {\n\ttry {\n\t\tawait stat(path);\n\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst resolveSvelte = async (spec: string, from: string) => {\n\tconst basePath = resolve(dirname(from), spec);\n\tconst explicit = /\\.(svelte|svelte\\.(?:ts|js))$/.test(basePath);\n\n\tif (!explicit) {\n\t\tconst extensions = ['.svelte', '.svelte.ts', '.svelte.js'];\n\t\tconst paths = extensions.map((ext) => `${basePath}${ext}`);\n\t\tconst checks = await Promise.all(paths.map(exists));\n\t\tconst match = paths.find((_, index) => checks[index]);\n\n\t\treturn match ?? null;\n\t}\n\n\tif (await exists(basePath)) return basePath;\n\tif (!basePath.endsWith('.svelte')) return null;\n\n\tconst tsPath = `${basePath}.ts`;\n\tif (await exists(tsPath)) return tsPath;\n\n\tconst jsPath = `${basePath}.js`;\n\tif (await exists(jsPath)) return jsPath;\n\n\treturn null;\n};\n\nexport const compileSvelte = async (\n\tentryPoints: string[],\n\tsvelteRoot: string,\n\tcache: Cache = new Map()\n) => {\n\tconst compiledRoot = join(svelteRoot, 'compiled');\n\tconst clientDir = join(compiledRoot, 'client');\n\tconst indexDir = join(compiledRoot, 'indexes');\n\tconst pagesDir = join(compiledRoot, 'pages');\n\n\tawait Promise.all(\n\t\t[clientDir, indexDir, pagesDir].map((dir) =>\n\t\t\tmkdir(dir, { recursive: true })\n\t\t)\n\t);\n\n\tconst dev = env.NODE_ENV === 'development';\n\n\tconst build = async (src: string) => {\n\t\tconst memoized = cache.get(src);\n\t\tif (memoized) return memoized;\n\n\t\tconst raw = await file(src).text();\n\t\tconst isModule =\n\t\t\tsrc.endsWith('.svelte.ts') || src.endsWith('.svelte.js');\n\t\tconst preprocessed = isModule ? raw : (await preprocess(raw, {})).code;\n\t\tconst transpiled =\n\t\t\tsrc.endsWith('.ts') || src.endsWith('.svelte.ts')\n\t\t\t\t? transpiler.transformSync(preprocessed)\n\t\t\t\t: preprocessed;\n\n\t\tconst relDir = dirname(relative(svelteRoot, src)).replace(/\\\\/g, '/');\n\t\tconst baseName = basename(src).replace(/\\.svelte(\\.(ts|js))?$/, '');\n\n\t\tconst importPaths = Array.from(\n\t\t\ttranspiled.matchAll(/from\\s+['\"]([^'\"]+)['\"]/g)\n\t\t)\n\t\t\t.map((match) => match[1])\n\t\t\t.filter((path): path is string => path !== undefined);\n\n\t\tconst resolvedImports = await Promise.all(\n\t\t\timportPaths.map((importPath) => resolveSvelte(importPath, src))\n\t\t);\n\t\tconst childSources = resolvedImports.filter(\n\t\t\t(path): path is string => path !== null\n\t\t);\n\t\tawait Promise.all(childSources.map((child) => build(child)));\n\n\t\tconst generate = (mode: 'server' | 'client') =>\n\t\t\t(isModule\n\t\t\t\t? compileModule(transpiled, { dev, filename: src }).js.code\n\t\t\t\t: compile(transpiled, {\n\t\t\t\t\t\tcss: 'injected',\n\t\t\t\t\t\tdev,\n\t\t\t\t\t\tfilename: src,\n\t\t\t\t\t\tgenerate: mode\n\t\t\t\t\t}).js.code\n\t\t\t).replace(/\\.svelte(?:\\.(?:ts|js))?(['\"])/g, '.js$1');\n\n\t\tconst ssrPath = join(pagesDir, relDir, `${baseName}.js`);\n\t\tconst clientPath = join(clientDir, relDir, `${baseName}.js`);\n\n\t\tawait Promise.all([\n\t\t\tmkdir(dirname(ssrPath), { recursive: true }),\n\t\t\tmkdir(dirname(clientPath), { recursive: true })\n\t\t]);\n\n\t\tif (isModule) {\n\t\t\tconst bundle = generate('client');\n\t\t\tawait Promise.all([\n\t\t\t\twrite(ssrPath, bundle),\n\t\t\t\twrite(clientPath, bundle)\n\t\t\t]);\n\t\t} else {\n\t\t\tconst serverBundle = generate('server');\n\t\t\tconst clientBundle = generate('client');\n\t\t\tawait Promise.all([\n\t\t\t\twrite(ssrPath, serverBundle),\n\t\t\t\twrite(clientPath, clientBundle)\n\t\t\t]);\n\t\t}\n\n\t\tconst built: Built = { client: clientPath, ssr: ssrPath };\n\t\tcache.set(src, built);\n\n\t\treturn built;\n\t};\n\n\tconst roots = await Promise.all(entryPoints.map(build));\n\n\tawait Promise.all(\n\t\troots.map(async ({ client }) => {\n\t\t\tconst relClientDir = dirname(relative(clientDir, client));\n\t\t\tconst name = basename(client, extname(client));\n\t\t\tconst indexPath = join(indexDir, relClientDir, `${name}.js`);\n\t\t\tconst importRaw = relative(dirname(indexPath), client)\n\t\t\t\t.split(sep)\n\t\t\t\t.join('/');\n\t\t\tconst importPath =\n\t\t\t\timportRaw.startsWith('.') || importRaw.startsWith('/')\n\t\t\t\t\t? importRaw\n\t\t\t\t\t: `./${importRaw}`;\n\t\t\tconst bootstrap = `import C from \"${importPath}\";\nimport { hydrate } from \"svelte\";\nhydrate(C,{target:document.body,props:window.__INITIAL_PROPS__??{}});`;\n\n\t\t\tawait mkdir(dirname(indexPath), { recursive: true });\n\n\t\t\treturn write(indexPath, bootstrap);\n\t\t})\n\t);\n\n\treturn {\n\t\tsvelteClientPaths: roots.map(({ client }) => {\n\t\t\tconst rel = dirname(relative(clientDir, client));\n\n\t\t\treturn join(indexDir, rel, basename(client));\n\t\t}),\n\t\tsvelteServerPaths: roots.map(({ ssr }) => ssr)\n\t};\n};\n",
8
+ "import { mkdir } from 'node:fs/promises';\nimport { basename, dirname, join, relative, resolve } from 'node:path';\nimport {\n\tparse,\n\tcompileScript,\n\tcompileTemplate,\n\tcompileStyle\n} from '@vue/compiler-sfc';\nimport { file, write, Transpiler } from 'bun';\nimport { toKebab } from '../utils/stringModifiers';\n\nconst transpiler = new Transpiler({ loader: 'ts', target: 'browser' });\n\ntype BuildResult = {\n\tclientPath: string;\n\tserverPath: string;\n\tcssPaths: string[];\n\tcssCodes: string[];\n\ttsHelperPaths: string[];\n};\n\nconst extractImports = (sourceCode: string) =>\n\tArray.from(sourceCode.matchAll(/import\\s+[\\s\\S]+?['\"]([^'\"]+)['\"]/g))\n\t\t.map((match) => match[1])\n\t\t.filter((importPath): importPath is string => importPath !== undefined);\n\nconst toJs = (filePath: string) => {\n\tif (filePath.endsWith('.vue')) return filePath.replace(/\\.vue$/, '.js');\n\tif (filePath.endsWith('.ts')) return filePath.replace(/\\.ts$/, '.js');\n\n\treturn `${filePath}.js`;\n};\n\nconst stripExports = (code: string) =>\n\tcode\n\t\t.replace(/export\\s+default/, 'const script =')\n\t\t.replace(/^export\\s+/gm, '');\n\nconst mergeVueImports = (code: string) => {\n\tconst lines = code.split('\\n');\n\tconst specifierSet = new Set<string>();\n\tconst vueImportRegex = /^import\\s+{([^}]+)}\\s+from\\s+['\"]vue['\"];?$/;\n\n\tlines.forEach((line) => {\n\t\tconst match = line.match(vueImportRegex);\n\t\tif (match?.[1])\n\t\t\tmatch[1]\n\t\t\t\t.split(',')\n\t\t\t\t.forEach((importSpecifier) =>\n\t\t\t\t\tspecifierSet.add(importSpecifier.trim())\n\t\t\t\t);\n\t});\n\n\tconst nonVueLines = lines.filter((line) => !vueImportRegex.test(line));\n\n\treturn specifierSet.size\n\t\t? [\n\t\t\t\t`import { ${[...specifierSet].join(', ')} } from \"vue\";`,\n\t\t\t\t...nonVueLines\n\t\t\t].join('\\n')\n\t\t: nonVueLines.join('\\n');\n};\n\nconst compileVueFile = async (\n\tsourceFilePath: string,\n\toutputDirs: { client: string; server: string; css: string },\n\tcacheMap: Map<string, BuildResult>,\n\tisEntryPoint: boolean,\n\tvueRootDir: string\n) => {\n\tconst cachedResult = cacheMap.get(sourceFilePath);\n\tif (cachedResult) return cachedResult;\n\n\tconst relativeFilePath = relative(vueRootDir, sourceFilePath).replace(\n\t\t/\\\\/g,\n\t\t'/'\n\t);\n\tconst relativeWithoutExtension = relativeFilePath.replace(/\\.vue$/, '');\n\tconst fileBaseName = basename(sourceFilePath, '.vue');\n\tconst componentId = toKebab(fileBaseName);\n\n\tconst sourceContent = await file(sourceFilePath).text();\n\tconst { descriptor } = parse(sourceContent, { filename: sourceFilePath });\n\tconst scriptSource =\n\t\tdescriptor.scriptSetup?.content ?? descriptor.script?.content ?? '';\n\n\tconst importPaths = extractImports(scriptSource);\n\tconst childComponentPaths = importPaths.filter(\n\t\t(path) => path.startsWith('.') && path.endsWith('.vue')\n\t);\n\tconst helperModulePaths = importPaths.filter(\n\t\t(path) => path.startsWith('.') && !path.endsWith('.vue')\n\t);\n\n\tconst childBuildResults: BuildResult[] = await Promise.all(\n\t\tchildComponentPaths.map((relativeChildPath) =>\n\t\t\tcompileVueFile(\n\t\t\t\tresolve(dirname(sourceFilePath), relativeChildPath),\n\t\t\t\toutputDirs,\n\t\t\t\tcacheMap,\n\t\t\t\tfalse,\n\t\t\t\tvueRootDir\n\t\t\t)\n\t\t)\n\t);\n\n\tconst compiledScript = compileScript(descriptor, {\n\t\tid: componentId,\n\t\tinlineTemplate: false\n\t});\n\tconst strippedScript = stripExports(compiledScript.content);\n\tconst transpiledScript = transpiler\n\t\t.transformSync(strippedScript)\n\t\t.replace(\n\t\t\t/(['\"])(\\.{1,2}\\/[^'\"]+)(['\"])/g,\n\t\t\t(_, quoteStart, relativeImport, quoteEnd) =>\n\t\t\t\t`${quoteStart}${toJs(relativeImport)}${quoteEnd}`\n\t\t);\n\n\tconst generateRenderFunction = (ssr: boolean) =>\n\t\tcompileTemplate({\n\t\t\tcompilerOptions: {\n\t\t\t\tbindingMetadata: compiledScript.bindings,\n\t\t\t\tprefixIdentifiers: true\n\t\t\t},\n\t\t\tfilename: sourceFilePath,\n\t\t\tid: componentId,\n\t\t\tscoped: descriptor.styles.some((styleBlock) => styleBlock.scoped),\n\t\t\tsource: descriptor.template?.content ?? '',\n\t\t\tssr,\n\t\t\tssrCssVars: descriptor.cssVars\n\t\t}).code.replace(\n\t\t\t/(['\"])(\\.{1,2}\\/[^'\"]+)(['\"])/g,\n\t\t\t(_, quoteStart, relativeImport, quoteEnd) =>\n\t\t\t\t`${quoteStart}${toJs(relativeImport)}${quoteEnd}`\n\t\t);\n\n\tconst localCss = descriptor.styles.map(\n\t\t(styleBlock) =>\n\t\t\tcompileStyle({\n\t\t\t\tfilename: sourceFilePath,\n\t\t\t\tid: componentId,\n\t\t\t\tscoped: styleBlock.scoped,\n\t\t\t\tsource: styleBlock.content,\n\t\t\t\ttrim: true\n\t\t\t}).code\n\t);\n\tconst allCss = [\n\t\t...localCss,\n\t\t...childBuildResults.flatMap((result) => result.cssCodes)\n\t];\n\n\tlet cssOutputPaths: string[] = [];\n\tif (isEntryPoint && allCss.length) {\n\t\tconst cssOutputFile = join(\n\t\t\toutputDirs.css,\n\t\t\t`${toKebab(fileBaseName)}.css`\n\t\t);\n\t\tawait mkdir(dirname(cssOutputFile), { recursive: true });\n\t\tawait write(cssOutputFile, allCss.join('\\n'));\n\t\tcssOutputPaths = [cssOutputFile];\n\t}\n\n\tconst assembleModule = (\n\t\trenderCode: string,\n\t\trenderFnName: 'render' | 'ssrRender'\n\t) =>\n\t\tmergeVueImports(\n\t\t\t[\n\t\t\t\ttranspiledScript,\n\t\t\t\trenderCode,\n\t\t\t\t`script.${renderFnName} = ${renderFnName};`,\n\t\t\t\t'export default script;'\n\t\t\t].join('\\n')\n\t\t);\n\n\tconst clientCode = assembleModule(generateRenderFunction(false), 'render');\n\tconst serverCode = assembleModule(\n\t\tgenerateRenderFunction(true),\n\t\t'ssrRender'\n\t);\n\n\tconst clientOutputPath = join(\n\t\toutputDirs.client,\n\t\t`${relativeWithoutExtension}.js`\n\t);\n\tconst serverOutputPath = join(\n\t\toutputDirs.server,\n\t\t`${relativeWithoutExtension}.js`\n\t);\n\n\tawait mkdir(dirname(clientOutputPath), { recursive: true });\n\tawait mkdir(dirname(serverOutputPath), { recursive: true });\n\tawait write(clientOutputPath, clientCode);\n\tawait write(serverOutputPath, serverCode);\n\n\tconst result: BuildResult = {\n\t\tclientPath: clientOutputPath,\n\t\tcssCodes: allCss,\n\t\tcssPaths: cssOutputPaths,\n\t\tserverPath: serverOutputPath,\n\t\ttsHelperPaths: [\n\t\t\t...helperModulePaths.map((helper) =>\n\t\t\t\tresolve(\n\t\t\t\t\tdirname(sourceFilePath),\n\t\t\t\t\thelper.endsWith('.ts') ? helper : `${helper}.ts`\n\t\t\t\t)\n\t\t\t),\n\t\t\t...childBuildResults.flatMap((child) => child.tsHelperPaths)\n\t\t]\n\t};\n\n\tcacheMap.set(sourceFilePath, result);\n\n\treturn result;\n};\n\nexport const compileVue = async (entryPoints: string[], vueRootDir: string) => {\n\tconst compiledOutputRoot = join(vueRootDir, 'compiled');\n\tconst clientOutputDir = join(compiledOutputRoot, 'client');\n\tconst indexOutputDir = join(compiledOutputRoot, 'indexes');\n\tconst serverOutputDir = join(compiledOutputRoot, 'pages');\n\tconst cssOutputDir = join(compiledOutputRoot, 'styles');\n\n\tawait Promise.all([\n\t\tmkdir(clientOutputDir, { recursive: true }),\n\t\tmkdir(indexOutputDir, { recursive: true }),\n\t\tmkdir(serverOutputDir, { recursive: true }),\n\t\tmkdir(cssOutputDir, { recursive: true })\n\t]);\n\n\tconst buildCache = new Map<string, BuildResult>();\n\tconst allTsHelperPaths = new Set<string>();\n\n\tconst compiledPages = await Promise.all(\n\t\tentryPoints.map(async (entryPath) => {\n\t\t\tconst result = await compileVueFile(\n\t\t\t\tresolve(entryPath),\n\t\t\t\t{\n\t\t\t\t\tclient: clientOutputDir,\n\t\t\t\t\tcss: cssOutputDir,\n\t\t\t\t\tserver: serverOutputDir\n\t\t\t\t},\n\t\t\t\tbuildCache,\n\t\t\t\ttrue,\n\t\t\t\tvueRootDir\n\t\t\t);\n\n\t\t\tresult.tsHelperPaths.forEach((path) => allTsHelperPaths.add(path));\n\n\t\t\tconst entryBaseName = basename(entryPath, '.vue');\n\t\t\tconst indexOutputFile = join(indexOutputDir, `${entryBaseName}.js`);\n\t\t\tconst clientOutputFile = join(\n\t\t\t\tclientOutputDir,\n\t\t\t\trelative(vueRootDir, entryPath)\n\t\t\t\t\t.replace(/\\\\/g, '/')\n\t\t\t\t\t.replace(/\\.vue$/, '.js')\n\t\t\t);\n\n\t\t\tawait mkdir(dirname(indexOutputFile), { recursive: true });\n\t\t\tawait write(\n\t\t\t\tindexOutputFile,\n\t\t\t\t[\n\t\t\t\t\t`import Comp from \"${relative(dirname(indexOutputFile), clientOutputFile).replace(/\\\\/g, '/')}\";`,\n\t\t\t\t\t'import { createSSRApp } from \"vue\";',\n\t\t\t\t\t'const props = window.__INITIAL_PROPS__ ?? {};',\n\t\t\t\t\t'createSSRApp(Comp, props).mount(\"#root\");'\n\t\t\t\t].join('\\n')\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tcssPaths: result.cssPaths,\n\t\t\t\tindexPath: indexOutputFile,\n\t\t\t\tserverPath: result.serverPath\n\t\t\t};\n\t\t})\n\t);\n\n\tawait Promise.all(\n\t\tArray.from(allTsHelperPaths).map(async (tsPath) => {\n\t\t\tconst sourceCode = await file(tsPath).text();\n\t\t\tconst transpiledCode = transpiler.transformSync(sourceCode);\n\t\t\tconst relativeJsPath = relative(vueRootDir, tsPath).replace(\n\t\t\t\t/\\.ts$/,\n\t\t\t\t'.js'\n\t\t\t);\n\t\t\tconst outClientPath = join(clientOutputDir, relativeJsPath);\n\t\t\tconst outServerPath = join(serverOutputDir, relativeJsPath);\n\t\t\tawait mkdir(dirname(outClientPath), { recursive: true });\n\t\t\tawait mkdir(dirname(outServerPath), { recursive: true });\n\t\t\tawait write(outClientPath, transpiledCode);\n\t\t\tawait write(outServerPath, transpiledCode);\n\t\t})\n\t);\n\n\treturn {\n\t\tvueCssPaths: compiledPages.flatMap((result) => result.cssPaths),\n\t\tvueIndexPaths: compiledPages.map((result) => result.indexPath),\n\t\tvueServerPaths: compiledPages.map((result) => result.serverPath)\n\t};\n};\n",
9
+ "const normalizeSlug = (str: string) =>\n\tstr\n\t\t.trim()\n\t\t.replace(/\\s+/g, '-')\n\t\t.replace(/[^A-Za-z0-9\\-_]+/g, '')\n\t\t.replace(/[-_]{2,}/g, '-');\n\nexport const toPascal = (str: string) => {\n\tif (!str.includes('-') && !str.includes('_')) {\n\t\treturn str.charAt(0).toUpperCase() + str.slice(1);\n\t}\n\n\treturn normalizeSlug(str)\n\t\t.split(/[-_]/)\n\t\t.filter(Boolean)\n\t\t.map(\n\t\t\t(segment) =>\n\t\t\t\tsegment.charAt(0).toUpperCase() + segment.slice(1).toLowerCase()\n\t\t)\n\t\t.join('');\n};\n\nexport const toKebab = (str: string) =>\n\tnormalizeSlug(str)\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n\t\t.toLowerCase();\n",
10
+ "import { extname } from 'node:path';\nimport { BuildArtifact } from 'bun';\nimport { UNFOUND_INDEX } from '../constants';\nimport { toPascal } from '../utils/stringModifiers';\n\nexport const generateManifest = (outputs: BuildArtifact[], buildPath: string) =>\n\toutputs.reduce<Record<string, string>>((manifest, artifact) => {\n\t\tlet relative = artifact.path.startsWith(buildPath)\n\t\t\t? artifact.path.slice(buildPath.length)\n\t\t\t: artifact.path;\n\t\trelative = relative.replace(/\\\\/g, '/').replace(/^\\/+/, '');\n\n\t\tconst segments = relative.split('/');\n\t\tconst fileWithHash = segments.pop();\n\t\tif (!fileWithHash) return manifest;\n\n\t\tconst [baseName] = fileWithHash.split(`.${artifact.hash}.`);\n\t\tif (!baseName) return manifest;\n\n\t\tconst pascalName = toPascal(baseName);\n\t\tconst ext = extname(fileWithHash);\n\n\t\tif (ext === '.css') {\n\t\t\tmanifest[`${pascalName}CSS`] = `/${relative}`;\n\n\t\t\treturn manifest;\n\t\t}\n\n\t\tconst idx = segments.findIndex(\n\t\t\t(seg) => seg === 'indexes' || seg === 'pages'\n\t\t);\n\t\tconst folder = idx > UNFOUND_INDEX ? segments[idx] : segments[0];\n\n\t\tif (folder === 'indexes') {\n\t\t\tmanifest[`${pascalName}Index`] = `/${relative}`;\n\t\t} else if (folder === 'pages') {\n\t\t\tmanifest[pascalName] = artifact.path;\n\t\t} else {\n\t\t\tmanifest[pascalName] = `/${relative}`;\n\t\t}\n\n\t\treturn manifest;\n\t}, {});\n",
11
+ "import { mkdir, rm, writeFile } from 'fs/promises';\nimport { basename, join } from 'path';\nimport { Glob } from 'bun';\n\nexport const generateReactIndexFiles = async (\n\treactPagesDirectory: string,\n\treactIndexesDirectory: string\n) => {\n\tawait rm(reactIndexesDirectory, { force: true, recursive: true });\n\tawait mkdir(reactIndexesDirectory);\n\n\tconst pagesGlob = new Glob('*.*');\n\tconst files: string[] = [];\n\tfor await (const file of pagesGlob.scan({ cwd: reactPagesDirectory })) {\n\t\tfiles.push(file);\n\t}\n\tconst promises = files.map(async (file) => {\n\t\tconst fileName = basename(file);\n\t\tconst [componentName] = fileName.split('.');\n\t\tconst content = [\n\t\t\t`import { hydrateRoot } from 'react-dom/client';`,\n\t\t\t`import type { ComponentType } from 'react'`,\n\t\t\t`import { ${componentName} } from '../pages/${componentName}';\\n`,\n\t\t\t`type PropsOf<C> = C extends ComponentType<infer P> ? P : never;\\n`,\n\t\t\t`declare global {`,\n\t\t\t`\\tinterface Window {`,\n\t\t\t`\\t\\t__INITIAL_PROPS__: PropsOf<typeof ${componentName}>`,\n\t\t\t`\\t}`,\n\t\t\t`}\\n`,\n\t\t\t`hydrateRoot(document, <${componentName} {...window.__INITIAL_PROPS__} />);`\n\t\t].join('\\n');\n\n\t\treturn writeFile(\n\t\t\tjoin(reactIndexesDirectory, `${componentName}.tsx`),\n\t\t\tcontent\n\t\t);\n\t});\n\tawait Promise.all(promises);\n};\n",
12
+ "import { BUN_BUILD_WARNING_SUPPRESSION } from '../constants';\n\nexport const outputLogs = (logs: (BuildMessage | ResolveMessage)[]) => {\n\tfor (const log of logs) {\n\t\tif (\n\t\t\t// TODO: When bun supports wildcard sideEffects, remove this suppression\n\t\t\tlog.message.includes(BUN_BUILD_WARNING_SUPPRESSION)\n\t\t)\n\t\t\tcontinue;\n\n\t\tif (log.level === 'error') console.error(log);\n\t\telse if (log.level === 'warning') console.warn(log);\n\t\telse console.info(log);\n\t}\n};\n",
13
+ "import { Glob } from 'bun';\n\nexport const scanEntryPoints = async (dir: string, pattern: string) => {\n\tconst entryPaths: string[] = [];\n\tconst glob = new Glob(pattern);\n\tfor await (const file of glob.scan({ absolute: true, cwd: dir })) {\n\t\tentryPaths.push(file);\n\t}\n\n\treturn entryPaths;\n};\n",
14
+ "import { readFile, writeFile } from 'node:fs/promises';\nimport { toPascal } from '../utils/stringModifiers';\nimport { scanEntryPoints } from './scanEntryPoints';\n\nexport const updateAssetPaths = async (\n\tmanifest: Record<string, string>,\n\tdirectory: string\n) => {\n\tconst htmlFiles = await scanEntryPoints(directory, '*.html');\n\tconst assetRegex =\n\t\t/((?:<script[^>]+src=|<link[^>]*?rel=[\"']stylesheet[\"'][^>]*?href=)[\"'])(?!\\/?(?:.*\\/)?htmx\\.min\\.js)(\\/?(?:.*\\/)?)([^./\"']+)(?:\\.[^.\"'/]+)?(\\.(?:js|ts|css))([\"'][^>]*>)/g;\n\n\tconst tasks = htmlFiles.map(async (filePath) => {\n\t\tconst original = await readFile(filePath, 'utf8');\n\t\tconst updated = original.replace(\n\t\t\tassetRegex,\n\t\t\t(match, prefix, dir, name, ext, suffix) => {\n\t\t\t\tconst pascal = toPascal(name);\n\n\t\t\t\tlet key;\n\t\t\t\tif (ext === '.css') {\n\t\t\t\t\tkey = `${pascal}CSS`;\n\t\t\t\t} else if (dir.includes('/indexes/')) {\n\t\t\t\t\tkey = `${pascal}Index`;\n\t\t\t\t} else {\n\t\t\t\t\tkey = pascal;\n\t\t\t\t}\n\n\t\t\t\tconst newPath = manifest[key];\n\t\t\t\tif (newPath) {\n\t\t\t\t\treturn `${prefix}${newPath}${suffix}`;\n\t\t\t\t}\n\n\t\t\t\tconsole.error(\n\t\t\t\t\t`error: no manifest entry for ${ext.slice(1)} \"${name}\" referenced in ${filePath}`\n\t\t\t\t);\n\n\t\t\t\treturn match;\n\t\t\t}\n\t\t);\n\t\tawait writeFile(filePath, updated, 'utf8');\n\t});\n\n\tawait Promise.all(tasks);\n};\n",
15
+ "import { rm } from 'node:fs/promises';\nimport { join } from 'node:path';\n\ntype CleanupProps = {\n\tsvelteDir?: string;\n\tvueDir?: string;\n\treactIndexesPath?: string;\n};\n\nexport const cleanup = async ({\n\tsvelteDir,\n\tvueDir,\n\treactIndexesPath\n}: CleanupProps) => {\n\tif (svelteDir) {\n\t\tawait rm(join(svelteDir, 'compiled'), { force: true, recursive: true });\n\t}\n\n\tif (vueDir) {\n\t\tawait rm(join(vueDir, 'compiled'), { force: true, recursive: true });\n\t}\n\n\tif (reactIndexesPath)\n\t\tawait rm(reactIndexesPath, { force: true, recursive: true });\n};\n",
16
+ "import { sep } from 'node:path';\n\nexport const commonAncestor = (paths: string[], fallback?: string) => {\n\tif (paths.length === 0) return fallback;\n\tconst segmentsList = paths.map((p) => p.split(sep));\n\tconst [first] = segmentsList;\n\tif (!first) return fallback;\n\tconst commonSegments = first.filter((segment, index) =>\n\t\tsegmentsList.every((pathSegs) => pathSegs[index] === segment)\n\t);\n\n\treturn commonSegments.length ? commonSegments.join(sep) : fallback;\n};\n",
17
+ "import {\n\tMILLISECONDS_IN_A_SECOND,\n\tTIME_PRECISION,\n\tMILLISECONDS_IN_A_MINUTE\n} from '../constants';\n\nexport const getDurationString = (duration: number) => {\n\tlet durationString;\n\n\tif (duration < MILLISECONDS_IN_A_SECOND) {\n\t\tdurationString = `${duration.toFixed(TIME_PRECISION)}ms`;\n\t} else if (duration < MILLISECONDS_IN_A_MINUTE) {\n\t\tdurationString = `${(duration / MILLISECONDS_IN_A_SECOND).toFixed(TIME_PRECISION)}s`;\n\t} else {\n\t\tdurationString = `${(duration / MILLISECONDS_IN_A_MINUTE).toFixed(TIME_PRECISION)}m`;\n\t}\n\n\treturn durationString;\n};\n",
18
+ "import { resolve, relative, sep } from 'node:path';\n\nexport const validateSafePath = (targetPath: string, baseDirectory: string) => {\n\tconst absoluteBase = resolve(baseDirectory);\n\tconst absoluteTarget = resolve(baseDirectory, targetPath);\n\tif (relative(absoluteBase, absoluteTarget).startsWith(`..${sep}`)) {\n\t\tthrow new Error(`Unsafe path: ${targetPath}`);\n\t}\n\n\treturn absoluteTarget;\n};\n",
19
+ "import { file } from 'bun';\nimport { ComponentType as ReactComponent, createElement } from 'react';\nimport { renderToReadableStream as renderReactToReadableStream } from 'react-dom/server';\nimport { Component as SvelteComponent } from 'svelte';\nimport { Component as VueComponent, createSSRApp, h } from 'vue';\nimport { renderToWebStream as renderVueToWebStream } from 'vue/server-renderer';\nimport { renderToReadableStream as renderSvelteToReadableStream } from '../svelte/renderToReadableStream';\nimport { PropsArgs } from '../types';\n\nexport const handleReactPageRequest = async <\n\tProps extends Record<string, unknown> = Record<never, never>\n>(\n\tpageComponent: ReactComponent<Props>,\n\tindex: string,\n\t...props: keyof Props extends never ? [] : [props: Props]\n) => {\n\tconst [maybeProps] = props;\n\tconst element =\n\t\tmaybeProps !== undefined\n\t\t\t? createElement(pageComponent, maybeProps)\n\t\t\t: createElement(pageComponent);\n\n\tconst stream = await renderReactToReadableStream(element, {\n\t\tbootstrapModules: [index],\n\t\tbootstrapScriptContent: maybeProps\n\t\t\t? `window.__INITIAL_PROPS__=${JSON.stringify(maybeProps)}`\n\t\t\t: undefined\n\t});\n\n\treturn new Response(stream, {\n\t\theaders: { 'Content-Type': 'text/html' }\n\t});\n};\n\n// Declare overloads matching Svelte’s own component API to preserve correct type inference\ntype HandleSveltePageRequest = {\n\t(\n\t\tPageComponent: SvelteComponent<Record<string, never>>,\n\t\tpagePath: string,\n\t\tindexPath: string\n\t): Promise<Response>;\n\t<P extends Record<string, unknown>>(\n\t\tPageComponent: SvelteComponent<P>,\n\t\tpagePath: string,\n\t\tindexPath: string,\n\t\tprops: P\n\t): Promise<Response>;\n};\n\nexport const handleSveltePageRequest: HandleSveltePageRequest = async <\n\tP extends Record<string, unknown>\n>(\n\t_PageComponent: SvelteComponent<P>,\n\tpagePath: string,\n\tindexPath: string,\n\tprops?: P\n) => {\n\tconst { default: ImportedPageComponent } = await import(pagePath);\n\n\tconst stream = await renderSvelteToReadableStream(\n\t\tImportedPageComponent,\n\t\tprops,\n\t\t{\n\t\t\tbootstrapModules: indexPath ? [indexPath] : [],\n\t\t\tbootstrapScriptContent: `window.__INITIAL_PROPS__=${JSON.stringify(\n\t\t\t\tprops\n\t\t\t)}`\n\t\t}\n\t);\n\n\treturn new Response(stream, {\n\t\theaders: { 'Content-Type': 'text/html' }\n\t});\n};\n\nexport const handleVuePageRequest = async <\n\tProps extends Record<string, unknown> = Record<never, never>\n>(\n\t_PageComponent: VueComponent<Props>,\n\tpagePath: string,\n\tindexPath: string,\n\theadTag: `<head>${string}</head>` = '<head></head>',\n\t...props: keyof Props extends never ? [] : [props: Props]\n) => {\n\tconst [maybeProps] = props;\n\n\tconst { default: ImportedPageComponent } = await import(pagePath);\n\n\tconst app = createSSRApp({\n\t\trender: () => h(ImportedPageComponent, maybeProps ?? {})\n\t});\n\n\tconst bodyStream = renderVueToWebStream(app);\n\n\tconst head = `<!DOCTYPE html><html>${headTag}<body><div id=\"root\">`;\n\tconst tail = `</div><script>window.__INITIAL_PROPS__=${JSON.stringify(\n\t\tmaybeProps ?? {}\n\t)}</script><script type=\"module\" src=\"${indexPath}\"></script></body></html>`;\n\n\tconst stream = new ReadableStream({\n\t\tstart(controller) {\n\t\t\tcontroller.enqueue(head);\n\t\t\tconst reader = bodyStream.getReader();\n\t\t\tconst pumpLoop = () => {\n\t\t\t\treader\n\t\t\t\t\t.read()\n\t\t\t\t\t.then(({ done, value }) =>\n\t\t\t\t\t\tdone\n\t\t\t\t\t\t\t? (controller.enqueue(tail), controller.close())\n\t\t\t\t\t\t\t: (controller.enqueue(value), pumpLoop())\n\t\t\t\t\t)\n\t\t\t\t\t.catch((err) => controller.error(err));\n\t\t\t};\n\t\t\tpumpLoop();\n\t\t}\n\t});\n\n\treturn new Response(stream, {\n\t\theaders: { 'Content-Type': 'text/html' }\n\t});\n};\n\nexport const handleHTMLPageRequest = (html: string) => file(html);\nexport const handleHTMXPageRequest = (htmx: string) => file(htmx);\n\nexport const handlePageRequest = <Component>(\n\tPageComponent: Component,\n\t...props: PropsArgs<Component>\n) => {\n\tconsole.log('handlePageRequest coming soon.', PageComponent, props);\n};\n",
20
+ "import type { Component } from 'svelte';\nimport { render } from 'svelte/server';\nimport { DEFAULT_CHUNK_SIZE } from '../constants';\nimport { escapeScriptContent } from '../utils/escapeScriptContent';\n\nexport type RenderStreamOptions = {\n\tbootstrapScriptContent?: string;\n\tbootstrapScripts?: string[];\n\tbootstrapModules?: string[];\n\tnonce?: string;\n\tonError?: (error: unknown) => void;\n\tprogressiveChunkSize?: number;\n\tsignal?: AbortSignal;\n};\n\nexport const renderToReadableStream = async <\n\tProps extends Record<string, unknown> = Record<string, never>\n>(\n\tcomponent: Component<Props>,\n\tprops?: Props,\n\t{\n\t\tbootstrapScriptContent,\n\t\tbootstrapScripts = [],\n\t\tbootstrapModules = [],\n\t\tnonce,\n\t\tonError = console.error,\n\t\tprogressiveChunkSize = DEFAULT_CHUNK_SIZE,\n\t\tsignal\n\t}: RenderStreamOptions = {}\n) => {\n\ttry {\n\t\tconst { head, body } =\n\t\t\ttypeof props === 'undefined'\n\t\t\t\t? // @ts-expect-error Svelte's render function can't determine which overload to choose when the component is generic\n\t\t\t\t\trender(component)\n\t\t\t\t: render(component, { props });\n\t\tconst nonceAttr = nonce ? ` nonce=\"${nonce}\"` : '';\n\t\tconst scripts =\n\t\t\t(bootstrapScriptContent\n\t\t\t\t? `<script${nonceAttr}>${escapeScriptContent(bootstrapScriptContent)}</script>`\n\t\t\t\t: '') +\n\t\t\tbootstrapScripts\n\t\t\t\t.map((src) => `<script${nonceAttr} src=\"${src}\"></script>`)\n\t\t\t\t.join('') +\n\t\t\tbootstrapModules\n\t\t\t\t.map(\n\t\t\t\t\t(src) =>\n\t\t\t\t\t\t`<script${nonceAttr} type=\"module\" src=\"${src}\"></script>`\n\t\t\t\t)\n\t\t\t\t.join('');\n\t\tconst encoder = new TextEncoder();\n\t\t// Warning: this encodes the entire document into memory in one buffer\n\t\tconst full = encoder.encode(\n\t\t\t`<!DOCTYPE html><html lang=\"en\"><head>${head}</head><body>${body}${scripts}</body></html>`\n\t\t);\n\n\t\tlet offset = 0;\n\n\t\treturn new ReadableStream<Uint8Array>({\n\t\t\ttype: 'bytes',\n\t\t\tcancel(reason) {\n\t\t\t\tonError?.(reason);\n\t\t\t},\n\t\t\tpull(controller) {\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (offset >= full.length) {\n\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst end = Math.min(\n\t\t\t\t\toffset + progressiveChunkSize,\n\t\t\t\t\tfull.length\n\t\t\t\t);\n\t\t\t\tcontroller.enqueue(full.subarray(offset, end));\n\t\t\t\toffset = end;\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tonError?.(error);\n\t\tthrow error;\n\t}\n};\n",
21
+ "const ESCAPE_LOOKUP: Record<string, string> = {\n\t'\\u2028': '\\\\u2028',\n\t'\\u2029': '\\\\u2029',\n\t'&': '\\\\u0026',\n\t'<': '\\\\u003C',\n\t'>': '\\\\u003E'\n};\n\nconst ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\n\nexport const escapeScriptContent = (content: string) =>\n\tcontent.replace(ESCAPE_REGEX, (char) => {\n\t\tconst escaped = ESCAPE_LOOKUP[char];\n\n\t\treturn escaped !== undefined ? escaped : char;\n\t});\n",
22
+ "export const asset = (manifest: Record<string, string>, name: string) => {\n\tconst assetPath = manifest[name];\n\tif (assetPath === undefined) {\n\t\tthrow new Error(`Asset \"${name}\" not found in manifest.`);\n\t}\n\n\treturn assetPath;\n};\n",
23
+ "import { argv } from 'node:process';\nimport { env } from 'bun';\nimport { Elysia } from 'elysia';\nimport { DEFAULT_PORT } from '../constants';\nimport { getLocalIPAddress } from '../utils/networking';\n\nlet host = env.HOST ?? 'localhost';\nconst port = env.PORT ?? DEFAULT_PORT;\nlet localIP: string | undefined;\n\nconst args = argv;\nconst hostFlag = args.includes('--host');\n\nif (hostFlag) {\n\tlocalIP = getLocalIPAddress();\n\thost = '0.0.0.0';\n}\n\nexport const networking = (app: Elysia) =>\n\tapp.listen(\n\t\t{\n\t\t\thostname: host,\n\t\t\tport: port\n\t\t},\n\t\t() => {\n\t\t\t//TODO: I dont think this works properly\n\t\t\tif (hostFlag) {\n\t\t\t\tconsole.log(`Server started on http://localhost:${port}`);\n\t\t\t\tconsole.log(\n\t\t\t\t\t`Server started on network: http://${localIP}:${port}`\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconsole.log(`Server started on http://${host}:${port}`);\n\t\t\t}\n\t\t}\n\t);\n",
24
+ "import os from 'os';\n\nexport const getLocalIPAddress = () => {\n\tconst interfaces = os.networkInterfaces();\n\tconst addresses = Object.values(interfaces)\n\t\t.flat()\n\t\t.filter(\n\t\t\t(iface): iface is os.NetworkInterfaceInfo => iface !== undefined\n\t\t);\n\tconst ipAddress = addresses.find(\n\t\t(iface) => iface.family === 'IPv4' && !iface.internal\n\t);\n\n\tif (ipAddress) return ipAddress.address; // Return the first non-internal IPv4 address\n\n\tconsole.warn('No IP address found, falling back to localhost');\n\n\treturn 'localhost'; // Fallback to localhost if no IP found\n};\n",
25
+ "export const pageRouterPlugin = () => {\n\tconsole.log('Page Router Plugin Not Implemented Yet');\n};\n",
26
+ "type GenerateHeadElementProps = {\n\tcssPath?: string;\n\ttitle?: string;\n\ticon?: string;\n\tdescription?: string;\n\tfont?: string;\n};\n\nexport const generateHeadElement = ({\n\tcssPath,\n\ttitle = 'AbsoluteJS',\n\tdescription = 'A page created using AbsoluteJS',\n\tfont,\n\ticon = '/assets/ico/favicon.ico'\n}: GenerateHeadElementProps = {}) =>\n\t`<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>${title}</title>\n <meta name=\"description\" content=\"${description}\">\n <link rel=\"icon\" href=\"${icon}\" type=\"image/x-icon\">\n ${\n\t\tfont\n\t\t\t? `<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n <link href=\"https://fonts.googleapis.com/css2?family=${font}:wght@100..900&display=swap\" rel=\"stylesheet\">`\n\t\t\t: ''\n }\n ${cssPath ? `<link rel=\"stylesheet\" href=\"${cssPath}\" type=\"text/css\">` : ''}\n</head>` as const;\n",
27
+ "import { env } from 'bun';\n\nexport const getEnv = (key: string) => {\n\tconst environmentVariable = env[key];\n\tif (\n\t\ttypeof environmentVariable !== 'string' ||\n\t\tenvironmentVariable.length === 0\n\t) {\n\t\tthrow new Error(`Missing environment variable ${key}`);\n\t}\n\n\treturn environmentVariable;\n};\n"
28
28
  ],
29
- "mappings": "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",
30
- "debugId": "E4E62E702FF838A264756E2164756E21",
29
+ "mappings": ";;AAAO,IAAM,gBAAgB;AACtB,IAAM,sBAAsB;AAC5B,IAAM,2BAA2B;AACjC,IAAM,2BACZ,2BAA2B;AACrB,IAAM,qBAAqB;AAC3B,IAAM,eAAe;AACrB,IAAM,wBACZ,2BACA,sBACA,qBACA;AACM,IAAM,iBAAiB;AACvB,IAAM,aAAa,IAAI;AACvB,IAAM,eAAe;AACrB,IAAM,qBAAqB;AAC3B,IAAM,gCACZ;;ACjBD;AACA,eAAS;AACT,qBAAS,mBAAU;AACnB,qBAAc;AACd;;;ACJA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;AACA;AACA;AAKA,IAAM,aAAa,IAAI,WAAW,EAAE,QAAQ,MAAM,QAAQ,UAAU,CAAC;AAErE,IAAM,SAAS,OAAO,SAAiB;AAAA,EACtC,IAAI;AAAA,IACH,MAAM,KAAK,IAAI;AAAA,IAEf,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,IAAM,gBAAgB,OAAO,MAAc,SAAiB;AAAA,EAC3D,MAAM,WAAW,QAAQ,QAAQ,IAAI,GAAG,IAAI;AAAA,EAC5C,MAAM,WAAW,gCAAgC,KAAK,QAAQ;AAAA,EAE9D,IAAI,CAAC,UAAU;AAAA,IACd,MAAM,aAAa,CAAC,WAAW,cAAc,YAAY;AAAA,IACzD,MAAM,QAAQ,WAAW,IAAI,CAAC,QAAQ,GAAG,WAAW,KAAK;AAAA,IACzD,MAAM,SAAS,MAAM,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC;AAAA,IAClD,MAAM,QAAQ,MAAM,KAAK,CAAC,GAAG,UAAU,OAAO,MAAM;AAAA,IAEpD,OAAO,SAAS;AAAA,EACjB;AAAA,EAEA,IAAI,MAAM,OAAO,QAAQ;AAAA,IAAG,OAAO;AAAA,EACnC,IAAI,CAAC,SAAS,SAAS,SAAS;AAAA,IAAG,OAAO;AAAA,EAE1C,MAAM,SAAS,GAAG;AAAA,EAClB,IAAI,MAAM,OAAO,MAAM;AAAA,IAAG,OAAO;AAAA,EAEjC,MAAM,SAAS,GAAG;AAAA,EAClB,IAAI,MAAM,OAAO,MAAM;AAAA,IAAG,OAAO;AAAA,EAEjC,OAAO;AAAA;AAGD,IAAM,gBAAgB,OAC5B,aACA,YACA,QAAe,IAAI,QACf;AAAA,EACJ,MAAM,eAAe,KAAK,YAAY,UAAU;AAAA,EAChD,MAAM,YAAY,KAAK,cAAc,QAAQ;AAAA,EAC7C,MAAM,WAAW,KAAK,cAAc,SAAS;AAAA,EAC7C,MAAM,WAAW,KAAK,cAAc,OAAO;AAAA,EAE3C,MAAM,QAAQ,IACb,CAAC,WAAW,UAAU,QAAQ,EAAE,IAAI,CAAC,QACpC,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC,CAC/B,CACD;AAAA,EAEA,MAAM,MAAM,IAAI,aAAa;AAAA,EAE7B,MAAM,QAAQ,OAAO,QAAgB;AAAA,IACpC,MAAM,WAAW,MAAM,IAAI,GAAG;AAAA,IAC9B,IAAI;AAAA,MAAU,OAAO;AAAA,IAErB,MAAM,MAAM,MAAM,KAAK,GAAG,EAAE,KAAK;AAAA,IACjC,MAAM,WACL,IAAI,SAAS,YAAY,KAAK,IAAI,SAAS,YAAY;AAAA,IACxD,MAAM,eAAe,WAAW,OAAO,MAAM,WAAW,KAAK,CAAC,CAAC,GAAG;AAAA,IAClE,MAAM,aACL,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,YAAY,IAC7C,WAAW,cAAc,YAAY,IACrC;AAAA,IAEJ,MAAM,SAAS,QAAQ,SAAS,YAAY,GAAG,CAAC,EAAE,QAAQ,OAAO,GAAG;AAAA,IACpE,MAAM,WAAW,SAAS,GAAG,EAAE,QAAQ,yBAAyB,EAAE;AAAA,IAElE,MAAM,cAAc,MAAM,KACzB,WAAW,SAAS,0BAA0B,CAC/C,EACE,IAAI,CAAC,UAAU,MAAM,EAAE,EACvB,OAAO,CAAC,SAAyB,SAAS,SAAS;AAAA,IAErD,MAAM,kBAAkB,MAAM,QAAQ,IACrC,YAAY,IAAI,CAAC,eAAe,cAAc,YAAY,GAAG,CAAC,CAC/D;AAAA,IACA,MAAM,eAAe,gBAAgB,OACpC,CAAC,SAAyB,SAAS,IACpC;AAAA,IACA,MAAM,QAAQ,IAAI,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,CAAC;AAAA,IAE3D,MAAM,WAAW,CAAC,UAChB,WACE,cAAc,YAAY,EAAE,KAAK,UAAU,IAAI,CAAC,EAAE,GAAG,OACrD,QAAQ,YAAY;AAAA,MACpB,KAAK;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV,UAAU;AAAA,IACX,CAAC,EAAE,GAAG,MACN,QAAQ,mCAAmC,OAAO;AAAA,IAErD,MAAM,UAAU,KAAK,UAAU,QAAQ,GAAG,aAAa;AAAA,IACvD,MAAM,aAAa,KAAK,WAAW,QAAQ,GAAG,aAAa;AAAA,IAE3D,MAAM,QAAQ,IAAI;AAAA,MACjB,MAAM,QAAQ,OAAO,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,MAC3C,MAAM,QAAQ,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IAC/C,CAAC;AAAA,IAED,IAAI,UAAU;AAAA,MACb,MAAM,SAAS,SAAS,QAAQ;AAAA,MAChC,MAAM,QAAQ,IAAI;AAAA,QACjB,MAAM,SAAS,MAAM;AAAA,QACrB,MAAM,YAAY,MAAM;AAAA,MACzB,CAAC;AAAA,IACF,EAAO;AAAA,MACN,MAAM,eAAe,SAAS,QAAQ;AAAA,MACtC,MAAM,eAAe,SAAS,QAAQ;AAAA,MACtC,MAAM,QAAQ,IAAI;AAAA,QACjB,MAAM,SAAS,YAAY;AAAA,QAC3B,MAAM,YAAY,YAAY;AAAA,MAC/B,CAAC;AAAA;AAAA,IAGF,MAAM,QAAe,EAAE,QAAQ,YAAY,KAAK,QAAQ;AAAA,IACxD,MAAM,IAAI,KAAK,KAAK;AAAA,IAEpB,OAAO;AAAA;AAAA,EAGR,MAAM,QAAQ,MAAM,QAAQ,IAAI,YAAY,IAAI,KAAK,CAAC;AAAA,EAEtD,MAAM,QAAQ,IACb,MAAM,IAAI,SAAS,aAAa;AAAA,IAC/B,MAAM,eAAe,QAAQ,SAAS,WAAW,MAAM,CAAC;AAAA,IACxD,MAAM,OAAO,SAAS,QAAQ,QAAQ,MAAM,CAAC;AAAA,IAC7C,MAAM,YAAY,KAAK,UAAU,cAAc,GAAG,SAAS;AAAA,IAC3D,MAAM,YAAY,SAAS,QAAQ,SAAS,GAAG,MAAM,EACnD,MAAM,GAAG,EACT,KAAK,GAAG;AAAA,IACV,MAAM,aACL,UAAU,WAAW,GAAG,KAAK,UAAU,WAAW,GAAG,IAClD,YACA,KAAK;AAAA,IACT,MAAM,YAAY,kBAAkB;AAAA;AAAA;AAAA,IAIpC,MAAM,MAAM,QAAQ,SAAS,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IAEnD,OAAO,MAAM,WAAW,SAAS;AAAA,GACjC,CACF;AAAA,EAEA,OAAO;AAAA,IACN,mBAAmB,MAAM,IAAI,GAAG,aAAa;AAAA,MAC5C,MAAM,MAAM,QAAQ,SAAS,WAAW,MAAM,CAAC;AAAA,MAE/C,OAAO,KAAK,UAAU,KAAK,SAAS,MAAM,CAAC;AAAA,KAC3C;AAAA,IACD,mBAAmB,MAAM,IAAI,GAAG,UAAU,GAAG;AAAA,EAC9C;AAAA;;;AC7KD,kBAAS;AACT,qBAAS,sBAAU,kBAAS,mBAAM,sBAAU;AAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;;;ACRA,IAAM,gBAAgB,CAAC,QACtB,IACE,KAAK,EACL,QAAQ,QAAQ,GAAG,EACnB,QAAQ,qBAAqB,EAAE,EAC/B,QAAQ,aAAa,GAAG;AAEpB,IAAM,WAAW,CAAC,QAAgB;AAAA,EACxC,IAAI,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,GAAG;AAAA,IAC7C,OAAO,IAAI,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAAA,EACjD;AAAA,EAEA,OAAO,cAAc,GAAG,EACtB,MAAM,MAAM,EACZ,OAAO,OAAO,EACd,IACA,CAAC,YACA,QAAQ,OAAO,CAAC,EAAE,YAAY,IAAI,QAAQ,MAAM,CAAC,EAAE,YAAY,CACjE,EACC,KAAK,EAAE;AAAA;AAGH,IAAM,UAAU,CAAC,QACvB,cAAc,GAAG,EACf,QAAQ,sBAAsB,OAAO,EACrC,YAAY;;;ADdf,IAAM,cAAa,IAAI,YAAW,EAAE,QAAQ,MAAM,QAAQ,UAAU,CAAC;AAUrE,IAAM,iBAAiB,CAAC,eACvB,MAAM,KAAK,WAAW,SAAS,oCAAoC,CAAC,EAClE,IAAI,CAAC,UAAU,MAAM,EAAE,EACvB,OAAO,CAAC,eAAqC,eAAe,SAAS;AAExE,IAAM,OAAO,CAAC,aAAqB;AAAA,EAClC,IAAI,SAAS,SAAS,MAAM;AAAA,IAAG,OAAO,SAAS,QAAQ,UAAU,KAAK;AAAA,EACtE,IAAI,SAAS,SAAS,KAAK;AAAA,IAAG,OAAO,SAAS,QAAQ,SAAS,KAAK;AAAA,EAEpE,OAAO,GAAG;AAAA;AAGX,IAAM,eAAe,CAAC,SACrB,KACE,QAAQ,oBAAoB,gBAAgB,EAC5C,QAAQ,gBAAgB,EAAE;AAE7B,IAAM,kBAAkB,CAAC,SAAiB;AAAA,EACzC,MAAM,QAAQ,KAAK,MAAM;AAAA,CAAI;AAAA,EAC7B,MAAM,eAAe,IAAI;AAAA,EACzB,MAAM,iBAAiB;AAAA,EAEvB,MAAM,QAAQ,CAAC,SAAS;AAAA,IACvB,MAAM,QAAQ,KAAK,MAAM,cAAc;AAAA,IACvC,IAAI,QAAQ;AAAA,MACX,MAAM,GACJ,MAAM,GAAG,EACT,QAAQ,CAAC,oBACT,aAAa,IAAI,gBAAgB,KAAK,CAAC,CACxC;AAAA,GACF;AAAA,EAED,MAAM,cAAc,MAAM,OAAO,CAAC,SAAS,CAAC,eAAe,KAAK,IAAI,CAAC;AAAA,EAErE,OAAO,aAAa,OACjB;AAAA,IACA,YAAY,CAAC,GAAG,YAAY,EAAE,KAAK,IAAI;AAAA,IACvC,GAAG;AAAA,EACJ,EAAE,KAAK;AAAA,CAAI,IACV,YAAY,KAAK;AAAA,CAAI;AAAA;AAGzB,IAAM,iBAAiB,OACtB,gBACA,YACA,UACA,cACA,eACI;AAAA,EACJ,MAAM,eAAe,SAAS,IAAI,cAAc;AAAA,EAChD,IAAI;AAAA,IAAc,OAAO;AAAA,EAEzB,MAAM,mBAAmB,UAAS,YAAY,cAAc,EAAE,QAC7D,OACA,GACD;AAAA,EACA,MAAM,2BAA2B,iBAAiB,QAAQ,UAAU,EAAE;AAAA,EACtE,MAAM,eAAe,UAAS,gBAAgB,MAAM;AAAA,EACpD,MAAM,cAAc,QAAQ,YAAY;AAAA,EAExC,MAAM,gBAAgB,MAAM,MAAK,cAAc,EAAE,KAAK;AAAA,EACtD,QAAQ,eAAe,MAAM,eAAe,EAAE,UAAU,eAAe,CAAC;AAAA,EACxE,MAAM,eACL,WAAW,aAAa,WAAW,WAAW,QAAQ,WAAW;AAAA,EAElE,MAAM,cAAc,eAAe,YAAY;AAAA,EAC/C,MAAM,sBAAsB,YAAY,OACvC,CAAC,SAAS,KAAK,WAAW,GAAG,KAAK,KAAK,SAAS,MAAM,CACvD;AAAA,EACA,MAAM,oBAAoB,YAAY,OACrC,CAAC,SAAS,KAAK,WAAW,GAAG,KAAK,CAAC,KAAK,SAAS,MAAM,CACxD;AAAA,EAEA,MAAM,oBAAmC,MAAM,QAAQ,IACtD,oBAAoB,IAAI,CAAC,sBACxB,eACC,SAAQ,SAAQ,cAAc,GAAG,iBAAiB,GAClD,YACA,UACA,OACA,UACD,CACD,CACD;AAAA,EAEA,MAAM,iBAAiB,cAAc,YAAY;AAAA,IAChD,IAAI;AAAA,IACJ,gBAAgB;AAAA,EACjB,CAAC;AAAA,EACD,MAAM,iBAAiB,aAAa,eAAe,OAAO;AAAA,EAC1D,MAAM,mBAAmB,YACvB,cAAc,cAAc,EAC5B,QACA,kCACA,CAAC,GAAG,YAAY,gBAAgB,aAC/B,GAAG,aAAa,KAAK,cAAc,IAAI,UACzC;AAAA,EAED,MAAM,yBAAyB,CAAC,QAC/B,gBAAgB;AAAA,IACf,iBAAiB;AAAA,MAChB,iBAAiB,eAAe;AAAA,MAChC,mBAAmB;AAAA,IACpB;AAAA,IACA,UAAU;AAAA,IACV,IAAI;AAAA,IACJ,QAAQ,WAAW,OAAO,KAAK,CAAC,eAAe,WAAW,MAAM;AAAA,IAChE,QAAQ,WAAW,UAAU,WAAW;AAAA,IACxC;AAAA,IACA,YAAY,WAAW;AAAA,EACxB,CAAC,EAAE,KAAK,QACP,kCACA,CAAC,GAAG,YAAY,gBAAgB,aAC/B,GAAG,aAAa,KAAK,cAAc,IAAI,UACzC;AAAA,EAED,MAAM,WAAW,WAAW,OAAO,IAClC,CAAC,eACA,aAAa;AAAA,IACZ,UAAU;AAAA,IACV,IAAI;AAAA,IACJ,QAAQ,WAAW;AAAA,IACnB,QAAQ,WAAW;AAAA,IACnB,MAAM;AAAA,EACP,CAAC,EAAE,IACL;AAAA,EACA,MAAM,SAAS;AAAA,IACd,GAAG;AAAA,IACH,GAAG,kBAAkB,QAAQ,CAAC,YAAW,QAAO,QAAQ;AAAA,EACzD;AAAA,EAEA,IAAI,iBAA2B,CAAC;AAAA,EAChC,IAAI,gBAAgB,OAAO,QAAQ;AAAA,IAClC,MAAM,gBAAgB,MACrB,WAAW,KACX,GAAG,QAAQ,YAAY,OACxB;AAAA,IACA,MAAM,OAAM,SAAQ,aAAa,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IACvD,MAAM,OAAM,eAAe,OAAO,KAAK;AAAA,CAAI,CAAC;AAAA,IAC5C,iBAAiB,CAAC,aAAa;AAAA,EAChC;AAAA,EAEA,MAAM,iBAAiB,CACtB,YACA,iBAEA,gBACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,UAAU,kBAAkB;AAAA,IAC5B;AAAA,EACD,EAAE,KAAK;AAAA,CAAI,CACZ;AAAA,EAED,MAAM,aAAa,eAAe,uBAAuB,KAAK,GAAG,QAAQ;AAAA,EACzE,MAAM,aAAa,eAClB,uBAAuB,IAAI,GAC3B,WACD;AAAA,EAEA,MAAM,mBAAmB,MACxB,WAAW,QACX,GAAG,6BACJ;AAAA,EACA,MAAM,mBAAmB,MACxB,WAAW,QACX,GAAG,6BACJ;AAAA,EAEA,MAAM,OAAM,SAAQ,gBAAgB,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1D,MAAM,OAAM,SAAQ,gBAAgB,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1D,MAAM,OAAM,kBAAkB,UAAU;AAAA,EACxC,MAAM,OAAM,kBAAkB,UAAU;AAAA,EAExC,MAAM,SAAsB;AAAA,IAC3B,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,MACd,GAAG,kBAAkB,IAAI,CAAC,WACzB,SACC,SAAQ,cAAc,GACtB,OAAO,SAAS,KAAK,IAAI,SAAS,GAAG,WACtC,CACD;AAAA,MACA,GAAG,kBAAkB,QAAQ,CAAC,UAAU,MAAM,aAAa;AAAA,IAC5D;AAAA,EACD;AAAA,EAEA,SAAS,IAAI,gBAAgB,MAAM;AAAA,EAEnC,OAAO;AAAA;AAGD,IAAM,aAAa,OAAO,aAAuB,eAAuB;AAAA,EAC9E,MAAM,qBAAqB,MAAK,YAAY,UAAU;AAAA,EACtD,MAAM,kBAAkB,MAAK,oBAAoB,QAAQ;AAAA,EACzD,MAAM,iBAAiB,MAAK,oBAAoB,SAAS;AAAA,EACzD,MAAM,kBAAkB,MAAK,oBAAoB,OAAO;AAAA,EACxD,MAAM,eAAe,MAAK,oBAAoB,QAAQ;AAAA,EAEtD,MAAM,QAAQ,IAAI;AAAA,IACjB,OAAM,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,IAC1C,OAAM,gBAAgB,EAAE,WAAW,KAAK,CAAC;AAAA,IACzC,OAAM,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,IAC1C,OAAM,cAAc,EAAE,WAAW,KAAK,CAAC;AAAA,EACxC,CAAC;AAAA,EAED,MAAM,aAAa,IAAI;AAAA,EACvB,MAAM,mBAAmB,IAAI;AAAA,EAE7B,MAAM,gBAAgB,MAAM,QAAQ,IACnC,YAAY,IAAI,OAAO,cAAc;AAAA,IACpC,MAAM,SAAS,MAAM,eACpB,SAAQ,SAAS,GACjB;AAAA,MACC,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,QAAQ;AAAA,IACT,GACA,YACA,MACA,UACD;AAAA,IAEA,OAAO,cAAc,QAAQ,CAAC,SAAS,iBAAiB,IAAI,IAAI,CAAC;AAAA,IAEjE,MAAM,gBAAgB,UAAS,WAAW,MAAM;AAAA,IAChD,MAAM,kBAAkB,MAAK,gBAAgB,GAAG,kBAAkB;AAAA,IAClE,MAAM,mBAAmB,MACxB,iBACA,UAAS,YAAY,SAAS,EAC5B,QAAQ,OAAO,GAAG,EAClB,QAAQ,UAAU,KAAK,CAC1B;AAAA,IAEA,MAAM,OAAM,SAAQ,eAAe,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IACzD,MAAM,OACL,iBACA;AAAA,MACC,qBAAqB,UAAS,SAAQ,eAAe,GAAG,gBAAgB,EAAE,QAAQ,OAAO,GAAG;AAAA,MAC5F;AAAA,MACA;AAAA,MACA;AAAA,IACD,EAAE,KAAK;AAAA,CAAI,CACZ;AAAA,IAEA,OAAO;AAAA,MACN,UAAU,OAAO;AAAA,MACjB,WAAW;AAAA,MACX,YAAY,OAAO;AAAA,IACpB;AAAA,GACA,CACF;AAAA,EAEA,MAAM,QAAQ,IACb,MAAM,KAAK,gBAAgB,EAAE,IAAI,OAAO,WAAW;AAAA,IAClD,MAAM,aAAa,MAAM,MAAK,MAAM,EAAE,KAAK;AAAA,IAC3C,MAAM,iBAAiB,YAAW,cAAc,UAAU;AAAA,IAC1D,MAAM,iBAAiB,UAAS,YAAY,MAAM,EAAE,QACnD,SACA,KACD;AAAA,IACA,MAAM,gBAAgB,MAAK,iBAAiB,cAAc;AAAA,IAC1D,MAAM,gBAAgB,MAAK,iBAAiB,cAAc;AAAA,IAC1D,MAAM,OAAM,SAAQ,aAAa,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IACvD,MAAM,OAAM,SAAQ,aAAa,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IACvD,MAAM,OAAM,eAAe,cAAc;AAAA,IACzC,MAAM,OAAM,eAAe,cAAc;AAAA,GACzC,CACF;AAAA,EAEA,OAAO;AAAA,IACN,aAAa,cAAc,QAAQ,CAAC,WAAW,OAAO,QAAQ;AAAA,IAC9D,eAAe,cAAc,IAAI,CAAC,WAAW,OAAO,SAAS;AAAA,IAC7D,gBAAgB,cAAc,IAAI,CAAC,WAAW,OAAO,UAAU;AAAA,EAChE;AAAA;;;AE3SD,oBAAS;AAKF,IAAM,mBAAmB,CAAC,SAA0B,cAC1D,QAAQ,OAA+B,CAAC,UAAU,aAAa;AAAA,EAC9D,IAAI,YAAW,SAAS,KAAK,WAAW,SAAS,IAC9C,SAAS,KAAK,MAAM,UAAU,MAAM,IACpC,SAAS;AAAA,EACZ,YAAW,UAAS,QAAQ,OAAO,GAAG,EAAE,QAAQ,QAAQ,EAAE;AAAA,EAE1D,MAAM,WAAW,UAAS,MAAM,GAAG;AAAA,EACnC,MAAM,eAAe,SAAS,IAAI;AAAA,EAClC,IAAI,CAAC;AAAA,IAAc,OAAO;AAAA,EAE1B,OAAO,YAAY,aAAa,MAAM,IAAI,SAAS,OAAO;AAAA,EAC1D,IAAI,CAAC;AAAA,IAAU,OAAO;AAAA,EAEtB,MAAM,aAAa,SAAS,QAAQ;AAAA,EACpC,MAAM,MAAM,SAAQ,YAAY;AAAA,EAEhC,IAAI,QAAQ,QAAQ;AAAA,IACnB,SAAS,GAAG,mBAAmB,IAAI;AAAA,IAEnC,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,MAAM,SAAS,UACpB,CAAC,QAAQ,QAAQ,aAAa,QAAQ,OACvC;AAAA,EACA,MAAM,SAAS,MAAM,gBAAgB,SAAS,OAAO,SAAS;AAAA,EAE9D,IAAI,WAAW,WAAW;AAAA,IACzB,SAAS,GAAG,qBAAqB,IAAI;AAAA,EACtC,EAAO,SAAI,WAAW,SAAS;AAAA,IAC9B,SAAS,cAAc,SAAS;AAAA,EACjC,EAAO;AAAA,IACN,SAAS,cAAc,IAAI;AAAA;AAAA,EAG5B,OAAO;AAAA,GACL,CAAC,CAAC;;;AC1CN,kBAAS;AACT,qBAAS,mBAAU;AACnB;AAEO,IAAM,0BAA0B,OACtC,qBACA,0BACI;AAAA,EACJ,MAAM,GAAG,uBAAuB,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,EAChE,MAAM,OAAM,qBAAqB;AAAA,EAEjC,MAAM,YAAY,IAAI,KAAK,KAAK;AAAA,EAChC,MAAM,QAAkB,CAAC;AAAA,EACzB,iBAAiB,SAAQ,UAAU,KAAK,EAAE,KAAK,oBAAoB,CAAC,GAAG;AAAA,IACtE,MAAM,KAAK,KAAI;AAAA,EAChB;AAAA,EACA,MAAM,WAAW,MAAM,IAAI,OAAO,UAAS;AAAA,IAC1C,MAAM,WAAW,UAAS,KAAI;AAAA,IAC9B,OAAO,iBAAiB,SAAS,MAAM,GAAG;AAAA,IAC1C,MAAM,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA,YAAY,kCAAkC;AAAA;AAAA,MAC9C;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,uCAAyC;AAAA,MACzC;AAAA,MACA;AAAA;AAAA,MACA,0BAA0B;AAAA,IAC3B,EAAE,KAAK;AAAA,CAAI;AAAA,IAEX,OAAO,UACN,MAAK,uBAAuB,GAAG,mBAAmB,GAClD,OACD;AAAA,GACA;AAAA,EACD,MAAM,QAAQ,IAAI,QAAQ;AAAA;;;ACnCpB,IAAM,aAAa,CAAC,SAA4C;AAAA,EACtE,WAAW,OAAO,MAAM;AAAA,IACvB,IAEC,IAAI,QAAQ,SAAS,6BAA6B;AAAA,MAElD;AAAA,IAED,IAAI,IAAI,UAAU;AAAA,MAAS,QAAQ,MAAM,GAAG;AAAA,IACvC,SAAI,IAAI,UAAU;AAAA,MAAW,QAAQ,KAAK,GAAG;AAAA,IAC7C;AAAA,cAAQ,KAAK,GAAG;AAAA,EACtB;AAAA;;;ACbD;AAEO,IAAM,kBAAkB,OAAO,KAAa,YAAoB;AAAA,EACtE,MAAM,aAAuB,CAAC;AAAA,EAC9B,MAAM,OAAO,IAAI,MAAK,OAAO;AAAA,EAC7B,iBAAiB,SAAQ,KAAK,KAAK,EAAE,UAAU,MAAM,KAAK,IAAI,CAAC,GAAG;AAAA,IACjE,WAAW,KAAK,KAAI;AAAA,EACrB;AAAA,EAEA,OAAO;AAAA;;;ACTR,gCAAmB;AAIZ,IAAM,mBAAmB,OAC/B,UACA,cACI;AAAA,EACJ,MAAM,YAAY,MAAM,gBAAgB,WAAW,QAAQ;AAAA,EAC3D,MAAM,aACL;AAAA,EAED,MAAM,QAAQ,UAAU,IAAI,OAAO,aAAa;AAAA,IAC/C,MAAM,WAAW,MAAM,SAAS,UAAU,MAAM;AAAA,IAChD,MAAM,UAAU,SAAS,QACxB,YACA,CAAC,OAAO,QAAQ,KAAK,MAAM,KAAK,WAAW;AAAA,MAC1C,MAAM,SAAS,SAAS,IAAI;AAAA,MAE5B,IAAI;AAAA,MACJ,IAAI,QAAQ,QAAQ;AAAA,QACnB,MAAM,GAAG;AAAA,MACV,EAAO,SAAI,IAAI,SAAS,WAAW,GAAG;AAAA,QACrC,MAAM,GAAG;AAAA,MACV,EAAO;AAAA,QACN,MAAM;AAAA;AAAA,MAGP,MAAM,UAAU,SAAS;AAAA,MACzB,IAAI,SAAS;AAAA,QACZ,OAAO,GAAG,SAAS,UAAU;AAAA,MAC9B;AAAA,MAEA,QAAQ,MACP,gCAAgC,IAAI,MAAM,CAAC,MAAM,uBAAuB,UACzE;AAAA,MAEA,OAAO;AAAA,KAET;AAAA,IACA,MAAM,WAAU,UAAU,SAAS,MAAM;AAAA,GACzC;AAAA,EAED,MAAM,QAAQ,IAAI,KAAK;AAAA;;;AC3CxB,eAAS;AACT,iBAAS;AAQF,IAAM,UAAU;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,MACmB;AAAA,EACnB,IAAI,WAAW;AAAA,IACd,MAAM,IAAG,MAAK,WAAW,UAAU,GAAG,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,EACvE;AAAA,EAEA,IAAI,QAAQ;AAAA,IACX,MAAM,IAAG,MAAK,QAAQ,UAAU,GAAG,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,EACpE;AAAA,EAEA,IAAI;AAAA,IACH,MAAM,IAAG,kBAAkB,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA;;;ACvB7D,gBAAS;AAEF,IAAM,iBAAiB,CAAC,OAAiB,aAAsB;AAAA,EACrE,IAAI,MAAM,WAAW;AAAA,IAAG,OAAO;AAAA,EAC/B,MAAM,eAAe,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,IAAG,CAAC;AAAA,EAClD,OAAO,SAAS;AAAA,EAChB,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,MAAM,iBAAiB,MAAM,OAAO,CAAC,SAAS,UAC7C,aAAa,MAAM,CAAC,aAAa,SAAS,WAAW,OAAO,CAC7D;AAAA,EAEA,OAAO,eAAe,SAAS,eAAe,KAAK,IAAG,IAAI;AAAA;;;ACLpD,IAAM,oBAAoB,CAAC,aAAqB;AAAA,EACtD,IAAI;AAAA,EAEJ,IAAI,WAAW,0BAA0B;AAAA,IACxC,iBAAiB,GAAG,SAAS,QAAQ,cAAc;AAAA,EACpD,EAAO,SAAI,WAAW,0BAA0B;AAAA,IAC/C,iBAAiB,IAAI,WAAW,0BAA0B,QAAQ,cAAc;AAAA,EACjF,EAAO;AAAA,IACN,iBAAiB,IAAI,WAAW,0BAA0B,QAAQ,cAAc;AAAA;AAAA,EAGjF,OAAO;AAAA;;;ACjBR,oBAAS,sBAAS,kBAAU;AAErB,IAAM,mBAAmB,CAAC,YAAoB,kBAA0B;AAAA,EAC9E,MAAM,eAAe,SAAQ,aAAa;AAAA,EAC1C,MAAM,iBAAiB,SAAQ,eAAe,UAAU;AAAA,EACxD,IAAI,UAAS,cAAc,cAAc,EAAE,WAAW,KAAK,MAAK,GAAG;AAAA,IAClE,MAAM,IAAI,MAAM,gBAAgB,YAAY;AAAA,EAC7C;AAAA,EAEA,OAAO;AAAA;;;AZSR,IAAM,QAAQ,KAAI,aAAa;AAE/B,IAAM,kBAA0C;AAAA,EAC/C,qBAAqB;AAAA,EACrB,uBAAuB,QAAQ,SAAS;AAAA,EACxC,yCAAyC,QAAQ,SAAS;AAC3D;AAEO,IAAM,QAAQ;AAAA,EACpB,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MACkB;AAAA,EAClB,MAAM,aAAa,YAAY,IAAI;AAAA,EACnC,MAAM,cAAc,IAAI;AAAA,EAExB,MAAM,YAAY,iBAAiB,gBAAgB,WAAW;AAAA,EAC9D,MAAM,aACL,mBAAmB,iBAAiB,iBAAiB,WAAW;AAAA,EACjE,MAAM,WACL,kBAAkB,iBAAiB,gBAAgB,WAAW;AAAA,EAC/D,MAAM,UACL,iBAAiB,iBAAiB,eAAe,WAAW;AAAA,EAC7D,MAAM,UACL,iBAAiB,iBAAiB,eAAe,WAAW;AAAA,EAC7D,MAAM,YACL,mBAAmB,iBAAiB,iBAAiB,WAAW;AAAA,EACjE,MAAM,SAAS,gBAAgB,iBAAiB,cAAc,WAAW;AAAA,EACzE,MAAM,aACL,oBAAoB,iBAAiB,kBAAkB,WAAW;AAAA,EAEnE,MAAM,mBAAmB,YAAY,MAAK,UAAU,SAAS;AAAA,EAC7D,MAAM,iBAAiB,YAAY,MAAK,UAAU,OAAO;AAAA,EACzD,MAAM,gBAAgB,WAAW,MAAK,SAAS,OAAO;AAAA,EACtD,MAAM,kBAAkB,WAAW,MAAK,SAAS,SAAS;AAAA,EAC1D,MAAM,kBAAkB,aAAa,MAAK,WAAW,OAAO;AAAA,EAC5D,MAAM,eAAe,UAAU,MAAK,QAAQ,OAAO;AAAA,EACnD,MAAM,gBAAgB,WAAW,MAAK,SAAS,OAAO;AAAA,EACtD,MAAM,mBAAmB,cAAc,MAAK,YAAY,OAAO;AAAA,EAE/D,MAAM,YAAY;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,EAAE,OAAO,OAAO;AAAA,EAChB,MAAM,WAAW,UAAU,WAAW;AAAA,EAEtC,IAAI;AAAA,EACJ,IAAI;AAAA,IAAW,eAAe,MAAK,WAAW,UAAS,SAAS,GAAG,OAAO;AAAA,EACrE,SAAI;AAAA,IAAQ,eAAe,MAAK,WAAW,UAAS,MAAM,GAAG,OAAO;AAAA,EAEzE,IAAI;AAAA,EACJ,IAAI;AAAA,IAAiB,aAAa;AAAA,EAC7B,SAAI;AAAA,IAAc,aAAa;AAAA,EAEpC,MAAM,aACL,mBAAmB,iBAAiB,iBAAiB,WAAW;AAAA,EAEjE,MAAM,IAAG,WAAW,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,EACpD,UAAU,SAAS;AAAA,EAEnB,IAAI;AAAA,IACH,OAAO,YAAY,WAAW,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,EAE/D,IAAI,oBAAoB;AAAA,IACvB,MAAM,wBAAwB,gBAAgB,gBAAgB;AAAA,EAE/D,IAAI;AAAA,IACH,OAAO,YAAY,MAAK,WAAW,QAAQ,GAAG;AAAA,MAC7C,OAAO;AAAA,MACP,WAAW;AAAA,IACZ,CAAC;AAAA,EAEF,IAAI;AAAA,IACH,MAAM,6BAA6B,SAAS,YAAY,MAAK,WAAW,SAAS,MAAM;AAAA,EAExF,MAAM,eAAe,mBAClB,MAAM,gBAAgB,kBAAkB,OAAO,IAC/C,CAAC;AAAA,EACJ,MAAM,cAAc,kBACjB,MAAM,gBAAgB,iBAAiB,WAAW,IAClD,CAAC;AAAA,EACJ,MAAM,gBAAgB,kBACnB,MAAM,gBAAgB,iBAAiB,UAAU,IACjD,CAAC;AAAA,EACJ,MAAM,aAAa,eAChB,MAAM,gBAAgB,cAAc,OAAO,IAC3C,CAAC;AAAA,EACJ,MAAM,iBAAiB,mBACpB,MAAM,gBAAgB,kBAAkB,MAAM,IAC9C,CAAC;AAAA,EAEJ,MAAM,iBAAiB,UACpB,MAAM,gBAAgB,MAAK,SAAS,QAAQ,GAAG,OAAO,IACtD,CAAC;AAAA,EACJ,MAAM,iBAAiB,UACpB,MAAM,gBAAgB,MAAK,SAAS,QAAQ,GAAG,OAAO,IACtD,CAAC;AAAA,EACJ,MAAM,kBAAkB,WACrB,MAAM,gBAAgB,MAAK,UAAU,QAAQ,GAAG,OAAO,IACvD,CAAC;AAAA,EACJ,MAAM,mBAAmB,YACtB,MAAM,gBAAgB,MAAK,WAAW,QAAQ,GAAG,OAAO,IACxD,CAAC;AAAA,EAEJ,QAAQ,mBAAmB,sBAAsB,YAC9C,MAAM,cAAc,eAAe,SAAS,IAC5C,EAAE,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,EAAE;AAAA,EAElD,QAAQ,gBAAgB,eAAe,gBAAgB,SACpD,MAAM,WAAW,YAAY,MAAM,IACnC,EAAE,aAAa,CAAC,GAAG,eAAe,CAAC,GAAG,gBAAgB,CAAC,EAAE;AAAA,EAE5D,MAAM,oBAAoB,CAAC,GAAG,mBAAmB,GAAG,cAAc;AAAA,EAClE,MAAM,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACJ;AAAA,EACA,MAAM,iBAAiB;AAAA,IACtB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACJ;AAAA,EAEA,IACC,kBAAkB,WAAW,KAC7B,kBAAkB,WAAW,KAC7B,YAAY,WACX;AAAA,IACD,QAAQ,KAAK,gDAAgD;AAAA,IAE7D,OAAO,CAAC;AAAA,EACT;AAAA,EAEA,IAAI,aAAgD,CAAC;AAAA,EACrD,IAAI,gBAAiC,CAAC;AAAA,EAEtC,IAAI,kBAAkB,SAAS,GAAG;AAAA,IACjC,QAAQ,MAAM,YAAY,MAAM,SAAS;AAAA,MACxC,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,IACT,CAAC,EAAE,MAAM,CAAC,QAAQ;AAAA,MACjB,QAAQ,MAAM,wBAAwB,GAAG;AAAA,MACzC,KAAK,CAAC;AAAA,KACN;AAAA,IACD,aAAa;AAAA,IACb,gBAAgB;AAAA,EACjB;AAAA,EAEA,IAAI,aAAgD,CAAC;AAAA,EACrD,IAAI,gBAAiC,CAAC;AAAA,EAEtC,IAAI,kBAAkB,SAAS,GAAG;AAAA,IACjC,MAAM,QAAkB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,EAAE,OAAO,CAAC,QAAuB,QAAQ,GAAG,CAAC;AAAA,IAC7C,MAAM,aAAa,WACf,MAAM,MAAM,cACb,eAAe,OAAO,WAAW;AAAA,IACpC,QAAQ,MAAM,YAAY,MAAM,SAAS;AAAA,MACxC,QAAQ,eAAe,kBAAkB;AAAA,MACzC,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,IACT,CAAC,EAAE,MAAM,CAAC,QAAQ;AAAA,MACjB,QAAQ,MAAM,wBAAwB,GAAG;AAAA,MACzC,KAAK,CAAC;AAAA,KACN;AAAA,IACD,aAAa;AAAA,IACb,gBAAgB;AAAA,EACjB;AAAA,EAEA,IAAI,UAA6C,CAAC;AAAA,EAClD,IAAI,aAA8B,CAAC;AAAA,EAEnC,IAAI,eAAe,SAAS,GAAG;AAAA,IAC9B,QAAQ,MAAM,YAAY,MAAM,SAAS;AAAA,MACxC,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,QAAQ,MACP,WACA,aAAa,UAAS,UAAU,IAAI,UACpC,KACD;AAAA,MACA,QAAQ;AAAA,IACT,CAAC,EAAE,MAAM,CAAC,QAAQ;AAAA,MACjB,QAAQ,MAAM,qBAAqB,GAAG;AAAA,MACtC,KAAK,CAAC;AAAA,KACN;AAAA,IACD,UAAU;AAAA,IACV,aAAa;AAAA,EACd;AAAA,EAEA,MAAM,UAAU,CAAC,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO;AAAA,EACzD,WAAW,OAAO;AAAA,EAElB,MAAM,WAAW,iBAChB,CAAC,GAAG,eAAe,GAAG,eAAe,GAAG,UAAU,GAClD,SACD;AAAA,EAEA,IAAI,WAAW,eAAe;AAAA,IAC7B,MAAM,kBAAkB,WACrB,MAAK,WAAW,OAAO,IACvB,MAAK,WAAW,UAAS,OAAO,GAAG,OAAO;AAAA,IAC7C,UAAU,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,IAC9C,OAAO,eAAe,iBAAiB;AAAA,MACtC,OAAO;AAAA,MACP,WAAW;AAAA,IACZ,CAAC;AAAA,IACD,MAAM,iBAAiB,UAAU,eAAe;AAAA,EACjD;AAAA,EAEA,IAAI,WAAW,eAAe;AAAA,IAC7B,MAAM,kBAAkB,WACrB,MAAK,WAAW,OAAO,IACvB,MAAK,WAAW,UAAS,OAAO,GAAG,OAAO;AAAA,IAE7C,UAAU,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,IAC9C,OAAO,eAAe,iBAAiB;AAAA,MACtC,OAAO;AAAA,MACP,WAAW;AAAA,IACZ,CAAC;AAAA,IAED,MAAM,cAAc,WACjB,YACA,MAAK,WAAW,UAAS,OAAO,CAAC;AAAA,IAEpC,UAAU,aAAa,EAAE,WAAW,KAAK,CAAC;AAAA,IAE1C,MAAM,OAAO,IAAI,MAAK,cAAc;AAAA,IACpC,WAAW,gBAAgB,KAAK,SAAS,EAAE,KAAK,QAAQ,CAAC,GAAG;AAAA,MAC3D,MAAM,MAAM,MAAK,SAAS,YAAY;AAAA,MACtC,MAAM,OAAO,MAAK,aAAa,aAAa;AAAA,MAC5C,aAAa,KAAK,IAAI;AAAA,MACtB;AAAA,IACD;AAAA,IACA,MAAM,iBAAiB,UAAU,eAAe;AAAA,EACjD;AAAA,EAEA,IAAI,CAAC,SAAS;AAAA,IACb,MAAM,QAAQ;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EAEF,QAAQ,IACP,sBAAsB,kBAAkB,YAAY,IAAI,IAAI,UAAU,GACvE;AAAA,EAEA,OAAO;AAAA;;AaxSR;AACA;AACA,mCAAS;AAET;AACA,8BAAS;;;ACJT;;;ACDA,IAAM,gBAAwC;AAAA,EAC7C,UAAU;AAAA,EACV,UAAU;AAAA,EACV,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACN;AAEA,IAAM,eAAe;AAEd,IAAM,sBAAsB,CAAC,YACnC,QAAQ,QAAQ,cAAc,CAAC,SAAS;AAAA,EACvC,MAAM,UAAU,cAAc;AAAA,EAE9B,OAAO,YAAY,YAAY,UAAU;AAAA,CACzC;;;ADAK,IAAM,yBAAyB,OAGrC,WACA;AAAA,EAEC;AAAA,EACA,mBAAmB,CAAC;AAAA,EACpB,mBAAmB,CAAC;AAAA,EACpB;AAAA,EACA,UAAU,QAAQ;AAAA,EAClB,uBAAuB;AAAA,EACvB;AAAA,IACwB,CAAC,MACtB;AAAA,EACJ,IAAI;AAAA,IACH,QAAQ,MAAM,SACb,OAAO,UAAU,cAEf,OAAO,SAAS,IACf,OAAO,WAAW,EAAE,MAAM,CAAC;AAAA,IAC/B,MAAM,YAAY,QAAQ,WAAW,WAAW;AAAA,IAChD,MAAM,WACJ,yBACE,UAAU,aAAa,oBAAoB,sBAAsB,eACjE,MACH,iBACE,IAAI,CAAC,QAAQ,UAAU,kBAAkB,gBAAgB,EACzD,KAAK,EAAE,IACT,iBACE,IACA,CAAC,QACA,UAAU,gCAAgC,gBAC5C,EACC,KAAK,EAAE;AAAA,IACV,MAAM,UAAU,IAAI;AAAA,IAEpB,MAAM,OAAO,QAAQ,OACpB,wCAAwC,oBAAoB,OAAO,uBACpE;AAAA,IAEA,IAAI,SAAS;AAAA,IAEb,OAAO,IAAI,eAA2B;AAAA,MACrC,MAAM;AAAA,MACN,MAAM,CAAC,QAAQ;AAAA,QACd,UAAU,MAAM;AAAA;AAAA,MAEjB,IAAI,CAAC,YAAY;AAAA,QAChB,IAAI,QAAQ,SAAS;AAAA,UACpB,WAAW,MAAM;AAAA,UAEjB;AAAA,QACD;AAAA,QACA,IAAI,UAAU,KAAK,QAAQ;AAAA,UAC1B,WAAW,MAAM;AAAA,UAEjB;AAAA,QACD;AAAA,QACA,MAAM,MAAM,KAAK,IAChB,SAAS,sBACT,KAAK,MACN;AAAA,QACA,WAAW,QAAQ,KAAK,SAAS,QAAQ,GAAG,CAAC;AAAA,QAC7C,SAAS;AAAA;AAAA,IAEX,CAAC;AAAA,IACA,OAAO,OAAO;AAAA,IACf,UAAU,KAAK;AAAA,IACf,MAAM;AAAA;AAAA;;;AD3ED,IAAM,yBAAyB,OAGrC,eACA,UACG,UACC;AAAA,EACJ,OAAO,cAAc;AAAA,EACrB,MAAM,UACL,eAAe,YACZ,cAAc,eAAe,UAAU,IACvC,cAAc,aAAa;AAAA,EAE/B,MAAM,SAAS,MAAM,4BAA4B,SAAS;AAAA,IACzD,kBAAkB,CAAC,KAAK;AAAA,IACxB,wBAAwB,aACrB,4BAA4B,KAAK,UAAU,UAAU,MACrD;AAAA,EACJ,CAAC;AAAA,EAED,OAAO,IAAI,SAAS,QAAQ;AAAA,IAC3B,SAAS,EAAE,gBAAgB,YAAY;AAAA,EACxC,CAAC;AAAA;AAkBK,IAAM,0BAAmD,OAG/D,gBACA,UACA,WACA,UACI;AAAA,EACJ,QAAQ,SAAS,0BAA0B,MAAa;AAAA,EAExD,MAAM,SAAS,MAAM,uBACpB,uBACA,OACA;AAAA,IACC,kBAAkB,YAAY,CAAC,SAAS,IAAI,CAAC;AAAA,IAC7C,wBAAwB,4BAA4B,KAAK,UACxD,KACD;AAAA,EACD,CACD;AAAA,EAEA,OAAO,IAAI,SAAS,QAAQ;AAAA,IAC3B,SAAS,EAAE,gBAAgB,YAAY;AAAA,EACxC,CAAC;AAAA;AAGK,IAAM,uBAAuB,OAGnC,gBACA,UACA,WACA,UAAoC,oBACjC,UACC;AAAA,EACJ,OAAO,cAAc;AAAA,EAErB,QAAQ,SAAS,0BAA0B,MAAa;AAAA,EAExD,MAAM,MAAM,aAAa;AAAA,IACxB,QAAQ,MAAM,EAAE,uBAAuB,cAAc,CAAC,CAAC;AAAA,EACxD,CAAC;AAAA,EAED,MAAM,aAAa,qBAAqB,GAAG;AAAA,EAE3C,MAAM,OAAO,wBAAwB;AAAA,EACrC,MAAM,OAAO,0CAA0C,KAAK,UAC3D,cAAc,CAAC,CAChB,wCAAwC;AAAA,EAExC,MAAM,SAAS,IAAI,eAAe;AAAA,IACjC,KAAK,CAAC,YAAY;AAAA,MACjB,WAAW,QAAQ,IAAI;AAAA,MACvB,MAAM,SAAS,WAAW,UAAU;AAAA,MACpC,MAAM,WAAW,MAAM;AAAA,QACtB,OACE,KAAK,EACL,KAAK,GAAG,MAAM,YACd,QACI,WAAW,QAAQ,IAAI,GAAG,WAAW,MAAM,MAC3C,WAAW,QAAQ,KAAK,GAAG,SAAS,EACzC,EACC,MAAM,CAAC,QAAQ,WAAW,MAAM,GAAG,CAAC;AAAA;AAAA,MAEvC,SAAS;AAAA;AAAA,EAEX,CAAC;AAAA,EAED,OAAO,IAAI,SAAS,QAAQ;AAAA,IAC3B,SAAS,EAAE,gBAAgB,YAAY;AAAA,EACxC,CAAC;AAAA;AAGK,IAAM,wBAAwB,CAAC,SAAiB,MAAK,IAAI;AACzD,IAAM,wBAAwB,CAAC,SAAiB,MAAK,IAAI;AAEzD,IAAM,oBAAoB,CAChC,kBACG,UACC;AAAA,EACJ,QAAQ,IAAI,kCAAkC,eAAe,KAAK;AAAA;;AGjI5D,IAAM,QAAQ,CAAC,UAAkC,SAAiB;AAAA,EACxE,MAAM,YAAY,SAAS;AAAA,EAC3B,IAAI,cAAc,WAAW;AAAA,IAC5B,MAAM,IAAI,MAAM,UAAU,8BAA8B;AAAA,EACzD;AAAA,EAEA,OAAO;AAAA;;ACNR;AACA;;;ACDA;AAEO,IAAM,oBAAoB,MAAM;AAAA,EACtC,MAAM,aAAa,GAAG,kBAAkB;AAAA,EACxC,MAAM,YAAY,OAAO,OAAO,UAAU,EACxC,KAAK,EACL,OACA,CAAC,UAA4C,UAAU,SACxD;AAAA,EACD,MAAM,YAAY,UAAU,KAC3B,CAAC,UAAU,MAAM,WAAW,UAAU,CAAC,MAAM,QAC9C;AAAA,EAEA,IAAI;AAAA,IAAW,OAAO,UAAU;AAAA,EAEhC,QAAQ,KAAK,gDAAgD;AAAA,EAE7D,OAAO;AAAA;;;ADXR,IAAI,OAAO,KAAI,QAAQ;AACvB,IAAM,OAAO,KAAI,QAAQ;AACzB,IAAI;AAEJ,IAAM,OAAO;AACb,IAAM,WAAW,KAAK,SAAS,QAAQ;AAEvC,IAAI,UAAU;AAAA,EACb,UAAU,kBAAkB;AAAA,EAC5B,OAAO;AACR;AAEO,IAAM,aAAa,CAAC,QAC1B,IAAI,OACH;AAAA,EACC,UAAU;AAAA,EACV;AACD,GACA,MAAM;AAAA,EAEL,IAAI,UAAU;AAAA,IACb,QAAQ,IAAI,sCAAsC,MAAM;AAAA,IACxD,QAAQ,IACP,qCAAqC,WAAW,MACjD;AAAA,EACD,EAAO;AAAA,IACN,QAAQ,IAAI,4BAA4B,QAAQ,MAAM;AAAA;AAAA,CAGzD;;AEnCM,IAAM,mBAAmB,MAAM;AAAA,EACrC,QAAQ,IAAI,wCAAwC;AAAA;;ACO9C,IAAM,sBAAsB;AAAA,EAClC;AAAA,EACA,QAAQ;AAAA,EACR,cAAc;AAAA,EACd;AAAA,EACA,OAAO;AAAA,IACsB,CAAC,MAC9B;AAAA;AAAA;AAAA,WAGU;AAAA,sCAC2B;AAAA,2BACX;AAAA,IAEzB,OACG;AAAA;AAAA,yDAEoD,uDACpD;AAAA,IAED,UAAU,gCAAgC,8BAA8B;AAAA;;AC5B5E;AAEO,IAAM,SAAS,CAAC,QAAgB;AAAA,EACtC,MAAM,sBAAsB,KAAI;AAAA,EAChC,IACC,OAAO,wBAAwB,YAC/B,oBAAoB,WAAW,GAC9B;AAAA,IACD,MAAM,IAAI,MAAM,gCAAgC,KAAK;AAAA,EACtD;AAAA,EAEA,OAAO;AAAA;",
30
+ "debugId": "C07A521038D2FB1664756E2164756E21",
31
31
  "names": []
32
32
  }
@@ -13,14 +13,17 @@ export declare const networking: (app: Elysia) => Elysia<"", {
13
13
  macro: {};
14
14
  macroFn: {};
15
15
  parser: {};
16
+ response: {};
16
17
  }, {}, {
17
18
  derive: {};
18
19
  resolve: {};
19
20
  schema: {};
20
21
  standaloneSchema: {};
22
+ response: {};
21
23
  }, {
22
24
  derive: {};
23
25
  resolve: {};
24
26
  schema: {};
25
27
  standaloneSchema: {};
28
+ response: {};
26
29
  }>;
package/dist/types.d.ts CHANGED
@@ -7,6 +7,7 @@ export type BuildOptions = {
7
7
  export type BuildConfig = {
8
8
  buildDirectory?: string;
9
9
  assetsDirectory?: string;
10
+ publicDirectory?: string;
10
11
  reactDirectory?: string;
11
12
  vueDirectory?: string;
12
13
  angularDirectory?: string;