@absolutejs/absolute 0.8.15 → 0.9.1

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.
Files changed (37) hide show
  1. package/dist/build/compileSvelte.d.ts +10 -0
  2. package/dist/build/compileVue.d.ts +5 -0
  3. package/dist/{src/build → build}/generateManifest.d.ts +1 -1
  4. package/dist/build/updateHTMLAssetPaths.d.ts +1 -0
  5. package/dist/core/build.d.ts +2 -0
  6. package/dist/{src/core → core}/index.d.ts +1 -0
  7. package/dist/core/lookup.d.ts +1 -0
  8. package/dist/core/pageHandlers.d.ts +14 -0
  9. package/dist/{src/index.d.ts → index.d.ts} +1 -1
  10. package/dist/index.js +546 -187
  11. package/dist/index.js.map +15 -11
  12. package/dist/types.d.ts +24 -0
  13. package/dist/utils/generateHeadElement.d.ts +17 -0
  14. package/dist/utils/index.d.ts +3 -0
  15. package/dist/utils/stringModifiers.d.ts +2 -0
  16. package/eslint.config.mjs +38 -4
  17. package/package.json +8 -8
  18. package/tsconfig.build.json +20 -0
  19. package/dist/src/build/updateScriptTags.d.ts +0 -1
  20. package/dist/src/core/build.d.ts +0 -2
  21. package/dist/src/core/pageHandlers.d.ts +0 -10
  22. package/dist/src/svelte/compileSvelte.d.ts +0 -4
  23. package/dist/src/types.d.ts +0 -20
  24. package/dist/src/utils/index.d.ts +0 -2
  25. /package/dist/{src/build → build}/generateReactIndexes.d.ts +0 -0
  26. /package/dist/{src/build → build}/scanEntryPoints.d.ts +0 -0
  27. /package/dist/{src/constants.d.ts → constants.d.ts} +0 -0
  28. /package/dist/{src/plugins → plugins}/index.d.ts +0 -0
  29. /package/dist/{src/plugins → plugins}/networkingPlugin.d.ts +0 -0
  30. /package/dist/{src/plugins → plugins}/pageRouterPlugin.d.ts +0 -0
  31. /package/dist/{src/svelte → svelte}/renderToPipeableStream.d.ts +0 -0
  32. /package/dist/{src/svelte → svelte}/renderToReadableStream.d.ts +0 -0
  33. /package/dist/{src/svelte → svelte}/renderToString.d.ts +0 -0
  34. /package/dist/{src/utils → utils}/escapeScriptContent.d.ts +0 -0
  35. /package/dist/{src/utils → utils}/getDurationString.d.ts +0 -0
  36. /package/dist/{src/utils → utils}/networking.d.ts +0 -0
  37. /package/dist/{src/utils → utils}/validateSafePath.d.ts +0 -0
package/dist/index.js.map CHANGED
@@ -1,24 +1,28 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/constants.ts", "../src/core/build.ts", "../src/build/generateManifest.ts", "../src/build/generateReactIndexes.ts", "../src/build/scanEntryPoints.ts", "../src/build/updateScriptTags.ts", "../src/svelte/compileSvelte.ts", "../src/utils/getDurationString.ts", "../src/utils/validateSafePath.ts", "../src/core/pageHandlers.ts", "../src/svelte/renderToReadableStream.ts", "../src/utils/escapeScriptContent.ts", "../src/plugins/networkingPlugin.ts", "../src/utils/networking.ts", "../src/plugins/pageRouterPlugin.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/scanEntryPoints.ts", "../src/build/updateHTMLAssetPaths.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/networkingPlugin.ts", "../src/utils/networking.ts", "../src/plugins/pageRouterPlugin.ts", "../src/utils/generateHeadElement.ts"],
4
4
  "sourcesContent": [
5
5
  "export 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;\n",
6
- "import { rm, mkdir, cp } from 'node:fs/promises';\nimport { basename, join } from 'node:path';\nimport { cwd, exit } from 'node:process';\nimport { $, BuildArtifact, build as bunBuild } from 'bun';\nimport { generateManifest } from '../build/generateManifest';\nimport { generateReactIndexFiles } from '../build/generateReactIndexes';\nimport { scanEntryPoints } from '../build/scanEntryPoints';\nimport { updateScriptTags } from '../build/updateScriptTags';\nimport { compileSvelte } from '../svelte/compileSvelte';\nimport { BuildConfig } from '../types';\nimport { getDurationString } from '../utils/getDurationString';\nimport { validateSafePath } from '../utils/validateSafePath';\n\nexport const build = async ({\n\tbuildDirectory = 'build',\n\tassetsDirectory,\n\treactDirectory,\n\thtmlDirectory,\n\thtmxDirectory,\n\tsvelteDirectory,\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 reactDirectoryPath =\n\t\treactDirectory && validateSafePath(reactDirectory, projectRoot);\n\tconst htmlDirectoryPath =\n\t\thtmlDirectory && validateSafePath(htmlDirectory, projectRoot);\n\tconst htmxPath =\n\t\thtmxDirectory && validateSafePath(htmxDirectory, projectRoot);\n\tconst svelteDirectoryPath =\n\t\tsvelteDirectory && validateSafePath(svelteDirectory, projectRoot);\n\n\tconst reactIndexesPath =\n\t\treactDirectoryPath && join(reactDirectoryPath, 'indexes');\n\tconst reactPagesPath =\n\t\treactDirectoryPath && join(reactDirectoryPath, 'pages');\n\tconst htmlPagesPath = htmlDirectoryPath && join(htmlDirectoryPath, 'pages');\n\tconst htmlScriptsPath =\n\t\thtmlDirectoryPath && join(htmlDirectoryPath, 'scripts');\n\tconst sveltePagesPath =\n\t\tsvelteDirectoryPath && join(svelteDirectoryPath, 'pages');\n\n\tconst isSingleFrontend =\n\t\t[\n\t\t\treactDirectoryPath,\n\t\t\thtmlDirectoryPath,\n\t\t\thtmxPath,\n\t\t\tsvelteDirectoryPath\n\t\t].filter(Boolean).length === 1;\n\tconst isSvelteOnly = isSingleFrontend && svelteDirectoryPath !== undefined;\n\n\tconst serverOutDir = isSvelteOnly ? join(buildPath, 'pages') : buildPath;\n\tconst serverRoot = isSvelteOnly\n\t\t? join(svelteDirectoryPath, 'pages')\n\t\t: undefined;\n\tconst svelteOutDir = isSingleFrontend\n\t\t? buildPath\n\t\t: join(buildPath, basename(svelteDirectoryPath ?? ''));\n\tconst svelteDirName = svelteDirectoryPath && basename(svelteDirectoryPath);\n\n\tawait rm(buildPath, { force: true, recursive: true });\n\tawait mkdir(buildPath);\n\n\tif (reactIndexesPath && reactPagesPath) {\n\t\tawait generateReactIndexFiles(reactPagesPath, reactIndexesPath);\n\t}\n\n\tif (assetsPath) {\n\t\tawait cp(assetsPath, join(buildPath, 'assets'), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t}\n\n\tif (htmxPath) {\n\t\tawait mkdir(join(buildPath, 'htmx'));\n\t\tawait cp(htmxPath, join(buildPath, 'htmx'), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t}\n\n\tif (tailwind) {\n\t\tawait $`bunx @tailwindcss/cli -i ${tailwind.input} -o ${join(buildPath, tailwind.output)}`;\n\t}\n\n\tconst reactEntryPoints = reactIndexesPath\n\t\t? await scanEntryPoints(reactIndexesPath, '*.tsx')\n\t\t: [];\n\tconst svelteEntryPoints = sveltePagesPath\n\t\t? await scanEntryPoints(sveltePagesPath, '*.svelte')\n\t\t: [];\n\tconst htmlEntryPoints = htmlScriptsPath\n\t\t? await scanEntryPoints(htmlScriptsPath, '*.{js,ts}')\n\t\t: [];\n\n\tconst { svelteServerPaths, svelteClientPaths } = svelteDirectoryPath\n\t\t? await compileSvelte(svelteEntryPoints, svelteDirectoryPath)\n\t\t: { svelteClientPaths: [], svelteServerPaths: [] };\n\n\tconst serverEntryPoints = [\n\t\t...reactEntryPoints,\n\t\t...htmlEntryPoints,\n\t\t...svelteServerPaths\n\t];\n\n\tif (serverEntryPoints.length === 0) {\n\t\tconsole.warn(\n\t\t\t'No server entry points found, skipping manifest generation'\n\t\t);\n\n\t\treturn null;\n\t}\n\n\tconst { logs: serverLogs, outputs: serverOutputs } = await bunBuild({\n\t\tentrypoints: serverEntryPoints,\n\t\tformat: 'esm',\n\t\tnaming: `[dir]/[name].[hash].[ext]`,\n\t\toutdir: serverOutDir,\n\t\troot: serverRoot,\n\t\ttarget: 'bun'\n\t}).catch((error) => {\n\t\tconsole.error('Server build failed:', error);\n\t\texit(1);\n\t});\n\n\tlet clientLogs: (BuildMessage | ResolveMessage)[] = [];\n\tlet clientOutputs: BuildArtifact[] = [];\n\n\tif (svelteDirectoryPath) {\n\t\tconst { logs, outputs } = await bunBuild({\n\t\t\tentrypoints: svelteClientPaths,\n\t\t\tformat: 'esm',\n\t\t\tnaming: `[dir]/[name].[hash].[ext]`,\n\t\t\toutdir: svelteOutDir,\n\t\t\troot: svelteDirectoryPath,\n\t\t\ttarget: 'browser'\n\t\t}).catch((error) => {\n\t\t\tconsole.error('Client build failed:', error);\n\t\t\texit(1);\n\t\t});\n\n\t\tclientLogs = logs;\n\t\tclientOutputs = outputs;\n\t}\n\n\t[...serverLogs, ...clientLogs].forEach((log) => {\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\tconst manifest = generateManifest(\n\t\t[...serverOutputs, ...clientOutputs],\n\t\tbuildPath,\n\t\tsvelteDirName\n\t);\n\n\tif (htmlDirectoryPath && htmlPagesPath) {\n\t\tconst outputHtmlPages = join(\n\t\t\tbuildPath,\n\t\t\tbasename(htmlDirectoryPath),\n\t\t\t'pages'\n\t\t);\n\t\tawait mkdir(outputHtmlPages, { recursive: true });\n\t\tawait cp(htmlPagesPath, outputHtmlPages, {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t\tawait updateScriptTags(manifest, outputHtmlPages);\n\t}\n\n\tif (!options?.preserveIntermediateFiles && svelteDirectoryPath) {\n\t\tawait rm(join(svelteDirectoryPath, 'indexes'), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t\tawait rm(join(svelteDirectoryPath, 'client'), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t\tawait Promise.all(\n\t\t\tsvelteServerPaths.map((filePath) => rm(filePath, { force: true }))\n\t\t);\n\t}\n\n\tif (!options?.preserveIntermediateFiles && reactIndexesPath) {\n\t\tawait rm(reactIndexesPath, { force: true, recursive: true });\n\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 { BuildArtifact } from 'bun';\n\nexport const generateManifest = (\n\toutputs: BuildArtifact[],\n\tbuildDirectoryAbsolute: string,\n\tsvelteDirName?: string\n) => {\n\tconst prefix = svelteDirName ? `(?:${svelteDirName}/)?` : '';\n\tconst pagesRegex = new RegExp(`^${prefix}pages/`);\n\tconst indexesRegex = new RegExp(`^${prefix}indexes/`);\n\n\treturn outputs.reduce<Record<string, string>>((manifest, artifact) => {\n\t\tlet relativePath = artifact.path.startsWith(buildDirectoryAbsolute)\n\t\t\t? artifact.path.slice(buildDirectoryAbsolute.length)\n\t\t\t: artifact.path;\n\t\trelativePath = relativePath.replace(/^\\/+/, '');\n\t\tconst segments = relativePath.split('/');\n\t\tconst fileWithHash = segments.pop();\n\t\tif (!fileWithHash) return manifest;\n\t\tconst [baseName] = fileWithHash.split(`.${artifact.hash}.`);\n\n\t\tif (indexesRegex.test(relativePath)) {\n\t\t\tmanifest[`${baseName}Index`] = `/${relativePath}`;\n\t\t} else if (pagesRegex.test(relativePath)) {\n\t\t\tmanifest[baseName] = artifact.path;\n\t\t} else {\n\t\t\tmanifest[baseName] = `/${relativePath}`;\n\t\t}\n\n\t\treturn manifest;\n\t}, {});\n};\n",
8
- "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}Index.tsx`),\n\t\t\tcontent\n\t\t);\n\t});\n\tawait Promise.all(promises);\n};\n",
6
+ "import { rm, mkdir, cp } from 'node:fs/promises';\nimport { basename, join, sep } from 'node:path';\nimport { cwd, env, exit } from 'node:process';\nimport { $, build as bunBuild, BuildArtifact } from 'bun';\nimport { compileSvelte } from '../build/compileSvelte';\nimport { compileVue } from '../build/compileVue';\nimport { generateManifest } from '../build/generateManifest';\nimport { generateReactIndexFiles } from '../build/generateReactIndexes';\nimport { scanEntryPoints } from '../build/scanEntryPoints';\nimport { updateHTMLAssetPaths } from '../build/updateHTMLAssetPaths';\nimport { BuildConfig } from '../types';\nimport { getDurationString } from '../utils/getDurationString';\nimport { validateSafePath } from '../utils/validateSafePath';\n\nconst 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\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 = 'assets',\n\treactDirectory,\n\thtmlDirectory,\n\thtmxDirectory,\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\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\n\tconst frontends = [reactDir, htmlDir, htmxDir, svelteDir, vueDir].filter(\n\t\tBoolean\n\t);\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 (svelteDir) serverRoot = join(svelteDir, 'pages');\n\telse if (vueDir) serverRoot = join(vueDir, 'pages');\n\n\tawait rm(buildPath, { force: true, recursive: true });\n\tawait mkdir(buildPath);\n\n\tif (reactIndexesPath && reactPagesPath)\n\t\tawait generateReactIndexFiles(reactPagesPath, reactIndexesPath);\n\n\tif (assetsPath)\n\t\tawait cp(assetsPath, join(buildPath, 'assets'), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\n\tif (htmxDir) {\n\t\tawait mkdir(join(buildPath, 'htmx'));\n\t\tawait cp(htmxDir, join(buildPath, 'htmx'), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\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\n\tconst htmlCssEntries = htmlDir\n\t\t? await scanEntryPoints(join(htmlDir, '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];\n\n\tif (serverEntryPoints.length === 0 && clientEntryPoints.length === 0) {\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[] = [reactDir, svelteDir, htmlDir, vueDir].filter(\n\t\t\t(dir): dir is string => Boolean(dir)\n\t\t);\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\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(buildPath, basename(assetsPath), 'css'),\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\tfor (const log of allLogs) {\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\tconst manifest = generateManifest(\n\t\t[...serverOutputs, ...clientOutputs, ...cssOutputs],\n\t\tbuildPath\n\t);\n\n\tif (htmlDir && htmlPagesPath) {\n\t\tconst outputHtmlPages = join(buildPath, basename(htmlDir), 'pages');\n\t\tawait mkdir(outputHtmlPages, { recursive: true });\n\t\tawait cp(htmlPagesPath, outputHtmlPages, {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t\tawait updateHTMLAssetPaths(manifest, outputHtmlPages);\n\t}\n\n\tif (!options?.preserveIntermediateFiles && svelteDir) {\n\t\tawait rm(join(svelteDir, 'indexes'), { force: true, recursive: true });\n\t\tawait rm(join(svelteDir, 'client'), { force: true, recursive: true });\n\t\tawait Promise.all(\n\t\t\tsvelteServerPaths.map((path) => rm(path, { force: true }))\n\t\t);\n\t\t// TODO: remove when the files are generated inline instead of output\n\t\tawait rm(join(svelteDir, 'pages', 'example'), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t}\n\n\tif (!options?.preserveIntermediateFiles && vueDir) {\n\t\tawait rm(join(vueDir, 'indexes'), { force: true, recursive: true });\n\t\tawait rm(join(vueDir, 'client'), { force: true, recursive: true });\n\t\tawait rm(join(vueDir, 'styles'), { force: true, recursive: true });\n\t\tawait Promise.all(\n\t\t\tvueServerPaths.map((path) => rm(path, { force: true }))\n\t\t);\n\t\t// TODO: remove when the files are generated inline instead of output\n\t\tawait rm(join(vueDir, 'pages', 'example'), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t}\n\n\tif (!options?.preserveIntermediateFiles && reactIndexesPath)\n\t\tawait rm(reactIndexesPath, { force: true, recursive: true });\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 { cwd, 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 exists = async (filepath: string) => {\n\ttry {\n\t\tawait stat(filepath);\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\nconst transpiler = new Transpiler({ loader: 'ts', target: 'browser' });\nconst projectRoot = cwd();\n\nexport const compileSvelte = async (\n\tentryPoints: string[],\n\toutRoot: string,\n\tcache: Cache = new Map()\n) => {\n\tconst clientFolder = 'client';\n\tconst indexFolder = 'indexes';\n\tconst pagesFolder = 'pages';\n\n\tawait Promise.all(\n\t\t[clientFolder, indexFolder, pagesFolder].map((d) =>\n\t\t\tmkdir(join(outRoot, d), { 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 memo = cache.get(src);\n\t\tif (memo) return memo;\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 prepped = isModule ? raw : (await preprocess(raw, {})).code;\n\t\tconst transpiledCode =\n\t\t\tsrc.endsWith('.ts') || src.endsWith('.svelte.ts')\n\t\t\t\t? transpiler.transformSync(prepped)\n\t\t\t\t: prepped;\n\n\t\tconst relDir = dirname(relative(projectRoot, src));\n\t\tconst baseName = basename(src).replace(/\\.svelte(\\.(ts|js))?$/, '');\n\n\t\tconst importPaths = Array.from(\n\t\t\ttranspiledCode.matchAll(/from\\s+['\"]([^'\"]+)['\"]/g)\n\t\t)\n\t\t\t.map((m) => m[1])\n\t\t\t.filter((p): p is string => p !== undefined);\n\n\t\tconst resolveResults = await Promise.all(\n\t\t\timportPaths.map((p) => resolveSvelte(p, src))\n\t\t);\n\t\tconst childSources = resolveResults.filter(\n\t\t\t(path): path is string => path !== undefined\n\t\t);\n\t\tawait Promise.all(childSources.map((p) => build(p)));\n\n\t\tconst generate = (mode: 'server' | 'client') =>\n\t\t\t(isModule\n\t\t\t\t? compileModule(transpiledCode, { dev, filename: src }).js.code\n\t\t\t\t: compile(transpiledCode, {\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(outRoot, pagesFolder, relDir, `${baseName}.js`);\n\t\tconst clientPath = join(\n\t\t\toutRoot,\n\t\t\tclientFolder,\n\t\t\trelDir,\n\t\t\t`${baseName}.js`\n\t\t);\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(({ client }) => {\n\t\t\tconst relClientDir = dirname(\n\t\t\t\trelative(join(outRoot, clientFolder), client)\n\t\t\t);\n\t\t\tconst name = basename(client, extname(client));\n\t\t\tconst indexDir = join(outRoot, indexFolder, relClientDir);\n\t\t\tconst importPathRaw = relative(indexDir, client)\n\t\t\t\t.split(sep)\n\t\t\t\t.join('/');\n\t\t\tconst importPath = importPathRaw.startsWith('.')\n\t\t\t\t? importPathRaw\n\t\t\t\t: `./${importPathRaw}`;\n\n\t\t\tconst indexPath = join(indexDir, `${name}.js`);\n\t\t\tconst boot = `import C from \"${importPath}\";\nimport { hydrate } from \"svelte\";\nhydrate(C,{target:document.body,props:window.__INITIAL_PROPS__??{}});`;\n\n\t\t\treturn mkdir(indexDir, { recursive: true }).then(() =>\n\t\t\t\twrite(indexPath, boot)\n\t\t\t);\n\t\t})\n\t);\n\n\treturn {\n\t\tsvelteClientPaths: roots.map(({ client }) => {\n\t\t\tconst rel = dirname(relative(join(outRoot, clientFolder), client));\n\n\t\t\treturn join(outRoot, indexFolder, 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 { cwd } from 'node:process';\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' });\nconst projectRoot = cwd();\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 toJsFileName = (path: string) => {\n\tif (path.endsWith('.vue')) {\n\t\treturn path.replace(/\\.vue$/, '.js');\n\t}\n\tif (path.endsWith('.ts')) {\n\t\treturn path.replace(/\\.ts$/, '.js');\n\t}\n\n\treturn `${path}.js`;\n};\n\nconst stripModuleExports = (sourceCode: string) =>\n\tsourceCode\n\t\t.replace(/export\\s+default/, 'const script =')\n\t\t.replace(/^export\\s+/gm, '');\n\nconst buildVueFile = async (\n\tabsolutePath: string,\n\toutputDirs: { client: string; server: string; css: string },\n\tcache: Map<string, BuildResult>,\n\tisEntryPage = false\n) => {\n\tif (cache.has(absolutePath)) return cache.get(absolutePath)!;\n\n\tconst relativePath = relative(projectRoot, absolutePath).replace(\n\t\t/\\\\/g,\n\t\t'/'\n\t);\n\tconst relativePathWithoutExt = relativePath.replace(/\\.vue$/, '');\n\tconst componentName = basename(absolutePath, '.vue');\n\tconst kebabId = toKebab(componentName);\n\n\tconst sourceCode = await file(absolutePath).text();\n\tconst { descriptor } = parse(sourceCode, { filename: absolutePath });\n\tconst originalSetupCode =\n\t\tdescriptor.scriptSetup?.content ?? descriptor.script?.content ?? '';\n\n\tconst relativeImports = extractImports(originalSetupCode);\n\tconst childVueImports = relativeImports.filter(\n\t\t(importPath): importPath is string =>\n\t\t\timportPath.startsWith('.') && importPath.endsWith('.vue')\n\t);\n\tconst tsHelperImports = relativeImports.filter(\n\t\t(importPath): importPath is string =>\n\t\t\timportPath.startsWith('.') && !importPath.endsWith('.vue')\n\t);\n\n\tconst childBuildResults = await Promise.all(\n\t\tchildVueImports.map((importPath) =>\n\t\t\tbuildVueFile(\n\t\t\t\tresolve(dirname(absolutePath), importPath),\n\t\t\t\toutputDirs,\n\t\t\t\tcache,\n\t\t\t\tfalse\n\t\t\t)\n\t\t)\n\t);\n\n\tconst compiledScript = compileScript(descriptor, {\n\t\tid: kebabId,\n\t\tinlineTemplate: false\n\t});\n\n\tconst transformedScript = transpiler\n\t\t.transformSync(stripModuleExports(compiledScript.content))\n\t\t.replace(\n\t\t\t/(['\"])(\\.{1,2}\\/[^'\"]+)(['\"])/g,\n\t\t\t(_, quote, importPath, endQuote) =>\n\t\t\t\tquote + toJsFileName(importPath) + endQuote\n\t\t);\n\n\tconst renderBlock = (forServer: 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: absolutePath,\n\t\t\tid: kebabId,\n\t\t\tscoped: descriptor.styles.some((s) => s.scoped),\n\t\t\tsource: descriptor.template?.content ?? '',\n\t\t\tssr: forServer,\n\t\t\tssrCssVars: descriptor.cssVars\n\t\t}).code.replace(\n\t\t\t/(['\"])(\\.{1,2}\\/[^'\"]+)(['\"])/g,\n\t\t\t(_, quote, importPath, endQuote) =>\n\t\t\t\tquote + toJsFileName(importPath) + endQuote\n\t\t);\n\n\tconst ownCssCodes = descriptor.styles.map(\n\t\t(styleBlock) =>\n\t\t\tcompileStyle({\n\t\t\t\tfilename: absolutePath,\n\t\t\t\tid: kebabId,\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\n\tconst aggregatedCssCodes = [\n\t\t...ownCssCodes,\n\t\t...childBuildResults.flatMap((result) => result.cssCodes)\n\t];\n\n\tlet emittedCssPaths: string[] = [];\n\tif (isEntryPage && aggregatedCssCodes.length) {\n\t\tconst cssOutputPath = join(\n\t\t\toutputDirs.css,\n\t\t\t`${toKebab(componentName)}.css`\n\t\t);\n\t\tawait mkdir(dirname(cssOutputPath), { recursive: true });\n\t\tawait write(cssOutputPath, aggregatedCssCodes.join('\\n'));\n\t\temittedCssPaths = [cssOutputPath];\n\t}\n\n\tconst buildModule = (\n\t\trenderCode: string,\n\t\trenderFunctionName: 'render' | 'ssrRender'\n\t) => {\n\t\tconst vueHeader = 'import { defineComponent } from \"vue\";';\n\n\t\treturn [\n\t\t\ttransformedScript,\n\t\t\trenderCode,\n\t\t\tvueHeader,\n\t\t\t`export default defineComponent({ ...script, ${renderFunctionName} });`\n\t\t].join('\\n');\n\t};\n\n\tconst clientModuleCode = buildModule(renderBlock(false), 'render');\n\tconst serverModuleCode = buildModule(renderBlock(true), 'ssrRender');\n\n\tconst clientOutPath = join(\n\t\toutputDirs.client,\n\t\t`${relativePathWithoutExt}.js`\n\t);\n\tconst serverOutPath = join(\n\t\toutputDirs.server,\n\t\t`${relativePathWithoutExt}.js`\n\t);\n\tawait mkdir(dirname(clientOutPath), { recursive: true });\n\tawait mkdir(dirname(serverOutPath), { recursive: true });\n\tawait write(clientOutPath, clientModuleCode);\n\tawait write(serverOutPath, serverModuleCode);\n\n\tconst buildResult: BuildResult = {\n\t\tclientPath: clientOutPath,\n\t\tcssCodes: aggregatedCssCodes,\n\t\tcssPaths: emittedCssPaths,\n\t\tserverPath: serverOutPath,\n\t\ttsHelperPaths: [\n\t\t\t...tsHelperImports.map((helper) =>\n\t\t\t\tresolve(\n\t\t\t\t\tdirname(absolutePath),\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((result) => result.tsHelperPaths)\n\t\t]\n\t};\n\tcache.set(absolutePath, buildResult);\n\n\treturn buildResult;\n};\n\nexport const compileVue = async (\n\tpageEntryPoints: string[],\n\toutputDirectory: string\n) => {\n\tconst clientDir = join(outputDirectory, 'client');\n\tconst indexDir = join(outputDirectory, 'indexes');\n\tconst pagesDir = join(outputDirectory, 'pages');\n\tconst stylesDir = join(outputDirectory, 'styles');\n\n\tawait Promise.all([\n\t\tmkdir(clientDir, { recursive: true }),\n\t\tmkdir(indexDir, { recursive: true }),\n\t\tmkdir(pagesDir, { recursive: true }),\n\t\tmkdir(stylesDir, { recursive: true })\n\t]);\n\n\tconst buildCache = new Map<string, BuildResult>();\n\tconst tsHelperSet = new Set<string>();\n\n\tconst pageResults = await Promise.all(\n\t\tpageEntryPoints.map(async (pageEntry) => {\n\t\t\tconst buildResult = await buildVueFile(\n\t\t\t\tresolve(pageEntry),\n\t\t\t\t{ client: clientDir, css: stylesDir, server: pagesDir },\n\t\t\t\tbuildCache,\n\t\t\t\ttrue\n\t\t\t);\n\n\t\t\tbuildResult.tsHelperPaths.forEach((p) => tsHelperSet.add(p));\n\n\t\t\tconst relPath = relative(projectRoot, pageEntry).replace(\n\t\t\t\t/\\.vue$/,\n\t\t\t\t''\n\t\t\t);\n\t\t\tconst indexPath = join(indexDir, `${relPath}.js`);\n\t\t\tconst clientEntryPath = join(clientDir, `${relPath}.js`);\n\n\t\t\tawait mkdir(dirname(indexPath), { recursive: true });\n\t\t\tawait write(\n\t\t\t\tindexPath,\n\t\t\t\t[\n\t\t\t\t\t`import Comp from \"${relative(dirname(indexPath), clientEntryPath)}\";`,\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: buildResult.cssPaths,\n\t\t\t\tindexPath,\n\t\t\t\tserverPath: buildResult.serverPath\n\t\t\t};\n\t\t})\n\t);\n\n\tawait Promise.all(\n\t\tArray.from(tsHelperSet).map(async (src) => {\n\t\t\tconst code = transpiler.transformSync(await file(src).text());\n\t\t\tconst rel = relative(projectRoot, src).replace(/\\.ts$/, '.js');\n\t\t\tconst clientDest = join(clientDir, rel);\n\t\t\tconst serverDest = join(pagesDir, rel);\n\n\t\t\tawait Promise.all([\n\t\t\t\tmkdir(dirname(clientDest), { recursive: true }),\n\t\t\t\tmkdir(dirname(serverDest), { recursive: true })\n\t\t\t]);\n\n\t\t\tawait Promise.all([\n\t\t\t\twrite(clientDest, code),\n\t\t\t\twrite(serverDest, code)\n\t\t\t]);\n\t\t})\n\t);\n\n\treturn {\n\t\tvueCssPaths: pageResults.flatMap((pageResult) => pageResult.cssPaths),\n\t\tvueIndexPaths: pageResults.map((pageResult) => pageResult.indexPath),\n\t\tvueServerPaths: pageResults.map((pageResult) => pageResult.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\tnormalizeSlug(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\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 { 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(/^\\/+/, '');\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 ext = extname(fileWithHash);\n\t\tif (ext === '.css') {\n\t\t\tmanifest[`${toPascal(baseName)}CSS`] = `/${relative}`;\n\n\t\t\treturn manifest;\n\t\t}\n\n\t\tconst folder = segments.length > 1 ? segments[1] : segments[0];\n\n\t\tif (folder === 'indexes') {\n\t\t\tmanifest[`${baseName}Index`] = `/${relative}`;\n\t\t} else if (folder === 'pages') {\n\t\t\tmanifest[baseName] ??= artifact.path;\n\t\t} else {\n\t\t\tmanifest[baseName] = `/${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",
9
12
  "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",
10
- "import { readFile, writeFile } from 'node:fs/promises';\nimport { scanEntryPoints } from './scanEntryPoints';\n\nexport const updateScriptTags = async (\n\tmanifest: Record<string, string>,\n\thtmlDir: string\n) => {\n\tconst htmlFiles = await scanEntryPoints(htmlDir, '*.html');\n\n\tconst tasks = htmlFiles.map(async (filePath) => {\n\t\tconst original = await readFile(filePath, 'utf8');\n\t\tconst updated = Object.entries(manifest).reduce(\n\t\t\t(html, [scriptName, newPath]) => {\n\t\t\t\tconst esc = scriptName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\t\t\t\tconst regex = new RegExp(\n\t\t\t\t\t`(<script[^>]+src=[\"'])(/?(?:.*/)?${esc})(?:\\\\.[^.\"'/]+)?(\\\\.js)([\"'][^>]*>)`,\n\t\t\t\t\t'g'\n\t\t\t\t);\n\n\t\t\t\treturn html.replace(\n\t\t\t\t\tregex,\n\t\t\t\t\t(_, prefix, __, ___, suffix) =>\n\t\t\t\t\t\t`${prefix}${newPath}${suffix}`\n\t\t\t\t);\n\t\t\t},\n\t\t\toriginal\n\t\t);\n\n\t\tawait writeFile(filePath, updated, 'utf8');\n\t});\n\n\tawait Promise.all(tasks);\n};\n",
11
- "import { mkdir } from 'node:fs/promises';\nimport { basename, join } from 'node:path';\nimport { env } from 'node:process';\nimport { write, file } from 'bun';\nimport { compile, preprocess } from 'svelte/compiler';\n\nexport const compileSvelte = async (\n\tentryPoints: string[],\n\toutputDirectory: string\n) => {\n\tconst pagesDir = join(outputDirectory, 'pages');\n\tconst clientDir = join(outputDirectory, 'client');\n\tconst indexesDir = join(outputDirectory, 'indexes');\n\n\tawait Promise.all([\n\t\tmkdir(clientDir, { recursive: true }),\n\t\tmkdir(indexesDir, { recursive: true })\n\t]);\n\n\tconst isDev = env.NODE_ENV === 'development';\n\n\tconst builds = await Promise.all(\n\t\tentryPoints.map(async (entry) => {\n\t\t\tconst source = await file(entry).text();\n\t\t\tconst { code: pre } = await preprocess(source, {});\n\n\t\t\tconst name = basename(entry, '.svelte');\n\n\t\t\tconst { js: ssrJs } = compile(pre, {\n\t\t\t\tcss: 'injected',\n\t\t\t\tdev: isDev,\n\t\t\t\tfilename: entry,\n\t\t\t\tgenerate: 'server'\n\t\t\t});\n\t\t\tconst ssrPath = join(pagesDir, `${name}.js`);\n\n\t\t\tconst { js: clientJs } = compile(pre, {\n\t\t\t\tcss: 'injected',\n\t\t\t\tdev: isDev,\n\t\t\t\tfilename: entry,\n\t\t\t\tgenerate: 'client'\n\t\t\t});\n\t\t\tconst clientComponentPath = join(clientDir, `${name}.js`);\n\n\t\t\tconst bootstrap = `import Component from \"../client/${name}.js\";\nimport { hydrate } from \"svelte\";\nhydrate(Component,{target:document.body,props:window.__INITIAL_PROPS__??{}});`;\n\t\t\tconst clientIndexPath = join(indexesDir, `${name}.js`);\n\n\t\t\tawait Promise.all([\n\t\t\t\twrite(ssrPath, ssrJs.code),\n\t\t\t\twrite(clientComponentPath, clientJs.code),\n\t\t\t\twrite(clientIndexPath, bootstrap)\n\t\t\t]);\n\n\t\t\treturn { clientIndexPath, ssrPath };\n\t\t})\n\t);\n\n\treturn {\n\t\tsvelteClientPaths: builds.map(({ clientIndexPath }) => clientIndexPath),\n\t\tsvelteServerPaths: builds.map(({ ssrPath }) => ssrPath)\n\t};\n};\n",
13
+ "import { readFile, writeFile } from 'node:fs/promises';\nimport { toPascal } from '../utils/stringModifiers';\nimport { scanEntryPoints } from './scanEntryPoints';\n\nexport const updateHTMLAssetPaths = async (\n\tmanifest: Record<string, string>,\n\thtmlDir: string\n) => {\n\tconst htmlFiles = await scanEntryPoints(htmlDir, '*.html');\n\tconst assetRegex =\n\t\t/((?:<script[^>]+src=|<link[^>]*?rel=[\"']stylesheet[\"'][^>]*?href=)[\"'])(\\/?(?:.*\\/)?)([^./\"']+)(?:\\.[^.\"'/]+)?(\\.(?: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 key = ext === '.css' ? `${toPascal(name)}CSS` : name;\n\t\t\t\tconst newPath = manifest[key];\n\t\t\t\tif (newPath) return `${prefix}${newPath}${suffix}`;\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",
12
14
  "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",
13
15
  "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",
14
- "import { file } from 'bun';\nimport { ComponentType, createElement } from 'react';\nimport { renderToReadableStream as renderReactToReadableStream } from 'react-dom/server';\nimport { Component } from 'svelte';\nimport { renderToReadableStream as renderSvelteToReadableStream } from '../svelte/renderToReadableStream';\n\nexport const handleReactPageRequest = async <\n\tProps extends Record<string, unknown> = Record<never, never>\n>(\n\tpageComponent: ComponentType<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: Component<Record<string, never>>,\n\t\tmanifest: Record<string, string>\n\t): Promise<Response>;\n\t<P extends Record<string, unknown>>(\n\t\tPageComponent: Component<P>,\n\t\tmanifest: Record<string, string>,\n\t\tprops: P\n\t): Promise<Response>;\n};\n\nexport const handleSveltePageRequest: HandleSveltePageRequest = async <\n\tP extends Record<string, unknown>\n>(\n\tPageComponent: Component<P>,\n\tmanifest: Record<string, string>,\n\tprops?: P\n) => {\n\tconst componentPath = PageComponent.toString();\n\tconst pathSegments = componentPath.split('/');\n\tconst lastSegment = pathSegments[pathSegments.length - 1] ?? '';\n\tconst componentName = lastSegment.replace(/\\.svelte$/, '');\n\n\tconst pagePath = manifest[componentName];\n\tconst indexPath = manifest[`${componentName}Index`];\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],\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 handleHTMLPageRequest = (html: string) => file(html);\n",
16
+ "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);\n\nexport const handlePageRequest = <Component>(\n\tPageComponent: Component,\n\t...props: PropsArgs<Component>\n) => {\n\tconsole.log('handlePageRequest coming soon.', PageComponent, props);\n};\n",
15
17
  "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",
16
- "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) => ESCAPE_LOOKUP[char]);\n",
18
+ "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",
19
+ "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",
17
20
  "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 networkingPlugin = (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",
18
21
  "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",
19
- "export const pageRouterPlugin = () => {\n\tconsole.log('Page Router Plugin Not Implemented Yet');\n};\n"
22
+ "export const pageRouterPlugin = () => {\n\tconsole.log('Page Router Plugin Not Implemented Yet');\n};\n",
23
+ "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"
20
24
  ],
21
- "mappings": "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",
22
- "debugId": "F0D0DE61A724A5EB64756E2164756E21",
25
+ "mappings": ";;AAAO,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;;ACdlC,eAAS,cAAI;AACb,qBAAS,mBAAU,cAAM;AACzB,gBAAS,aAAK;AACd;;;ACHA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;AACA;AACA;AAKA,IAAM,SAAS,OAAO,aAAqB;AAAA,EAC1C,IAAI;AAAA,IACH,MAAM,KAAK,QAAQ;AAAA,IAEnB,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,KAAK,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,KAAK,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;AAGR,IAAM,aAAa,IAAI,WAAW,EAAE,QAAQ,MAAM,QAAQ,UAAU,CAAC;AACrE,IAAM,cAAc,IAAI;AAEjB,IAAM,gBAAgB,OAC5B,aACA,SACA,QAAe,IAAI,QACf;AAAA,EACJ,MAAM,eAAe;AAAA,EACrB,MAAM,cAAc;AAAA,EACpB,MAAM,cAAc;AAAA,EAEpB,MAAM,QAAQ,IACb,CAAC,cAAc,aAAa,WAAW,EAAE,IAAI,CAAC,MAC7C,MAAM,KAAK,SAAS,CAAC,GAAG,EAAE,WAAW,KAAK,CAAC,CAC5C,CACD;AAAA,EAEA,MAAM,MAAM,IAAI,aAAa;AAAA,EAE7B,MAAM,QAAQ,OAAO,QAAgB;AAAA,IACpC,MAAM,OAAO,MAAM,IAAI,GAAG;AAAA,IAC1B,IAAI;AAAA,MAAM,OAAO;AAAA,IAEjB,MAAM,MAAM,MAAM,KAAK,GAAG,EAAE,KAAK;AAAA,IACjC,MAAM,WACL,IAAI,SAAS,YAAY,KAAK,IAAI,SAAS,YAAY;AAAA,IACxD,MAAM,UAAU,WAAW,OAAO,MAAM,WAAW,KAAK,CAAC,CAAC,GAAG;AAAA,IAC7D,MAAM,iBACL,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,YAAY,IAC7C,WAAW,cAAc,OAAO,IAChC;AAAA,IAEJ,MAAM,SAAS,QAAQ,SAAS,aAAa,GAAG,CAAC;AAAA,IACjD,MAAM,WAAW,SAAS,GAAG,EAAE,QAAQ,yBAAyB,EAAE;AAAA,IAElE,MAAM,cAAc,MAAM,KACzB,eAAe,SAAS,0BAA0B,CACnD,EACE,IAAI,CAAC,MAAM,EAAE,EAAE,EACf,OAAO,CAAC,MAAmB,MAAM,SAAS;AAAA,IAE5C,MAAM,iBAAiB,MAAM,QAAQ,IACpC,YAAY,IAAI,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,CAC7C;AAAA,IACA,MAAM,eAAe,eAAe,OACnC,CAAC,SAAyB,SAAS,SACpC;AAAA,IACA,MAAM,QAAQ,IAAI,aAAa,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;AAAA,IAEnD,MAAM,WAAW,CAAC,UAChB,WACE,cAAc,gBAAgB,EAAE,KAAK,UAAU,IAAI,CAAC,EAAE,GAAG,OACzD,QAAQ,gBAAgB;AAAA,MACxB,KAAK;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV,UAAU;AAAA,IACX,CAAC,EAAE,GAAG,MACN,QAAQ,mCAAmC,OAAO;AAAA,IAErD,MAAM,UAAU,KAAK,SAAS,aAAa,QAAQ,GAAG,aAAa;AAAA,IACnE,MAAM,aAAa,KAClB,SACA,cACA,QACA,GAAG,aACJ;AAAA,IAEA,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,GAAG,aAAa;AAAA,IACzB,MAAM,eAAe,QACpB,SAAS,KAAK,SAAS,YAAY,GAAG,MAAM,CAC7C;AAAA,IACA,MAAM,OAAO,SAAS,QAAQ,QAAQ,MAAM,CAAC;AAAA,IAC7C,MAAM,WAAW,KAAK,SAAS,aAAa,YAAY;AAAA,IACxD,MAAM,gBAAgB,SAAS,UAAU,MAAM,EAC7C,MAAM,GAAG,EACT,KAAK,GAAG;AAAA,IACV,MAAM,aAAa,cAAc,WAAW,GAAG,IAC5C,gBACA,KAAK;AAAA,IAER,MAAM,YAAY,KAAK,UAAU,GAAG,SAAS;AAAA,IAC7C,MAAM,OAAO,kBAAkB;AAAA;AAAA;AAAA,IAI/B,OAAO,MAAM,UAAU,EAAE,WAAW,KAAK,CAAC,EAAE,KAAK,MAChD,MAAM,WAAW,IAAI,CACtB;AAAA,GACA,CACF;AAAA,EAEA,OAAO;AAAA,IACN,mBAAmB,MAAM,IAAI,GAAG,aAAa;AAAA,MAC5C,MAAM,MAAM,QAAQ,SAAS,KAAK,SAAS,YAAY,GAAG,MAAM,CAAC;AAAA,MAEjE,OAAO,KAAK,SAAS,aAAa,KAAK,SAAS,MAAM,CAAC;AAAA,KACvD;AAAA,IACD,mBAAmB,MAAM,IAAI,GAAG,UAAU,GAAG;AAAA,EAC9C;AAAA;;;ACrLD,kBAAS;AACT,qBAAS,sBAAU,kBAAS,mBAAM,sBAAU;AAC5C,gBAAS;AACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;;;ACTA,IAAM,gBAAgB,CAAC,QACtB,IACE,KAAK,EACL,QAAQ,QAAQ,GAAG,EACnB,QAAQ,qBAAqB,EAAE,EAC/B,QAAQ,aAAa,GAAG;AAEpB,IAAM,WAAW,CAAC,QACxB,cAAc,GAAG,EACf,MAAM,MAAM,EACZ,OAAO,OAAO,EACd,IACA,CAAC,YACA,QAAQ,OAAO,CAAC,EAAE,YAAY,IAAI,QAAQ,MAAM,CAAC,EAAE,YAAY,CACjE,EACC,KAAK,EAAE;AAEH,IAAM,UAAU,CAAC,QACvB,cAAc,GAAG,EACf,QAAQ,sBAAsB,OAAO,EACrC,YAAY;;;ADRf,IAAM,cAAa,IAAI,YAAW,EAAE,QAAQ,MAAM,QAAQ,UAAU,CAAC;AACrE,IAAM,eAAc,KAAI;AAUxB,IAAM,iBAAiB,CAAC,eACvB,MAAM,KAAK,WAAW,SAAS,oCAAoC,CAAC,EAClE,IAAI,CAAC,UAAU,MAAM,EAAE,EACvB,OAAO,CAAC,eAAqC,eAAe,SAAS;AAExE,IAAM,eAAe,CAAC,SAAiB;AAAA,EACtC,IAAI,KAAK,SAAS,MAAM,GAAG;AAAA,IAC1B,OAAO,KAAK,QAAQ,UAAU,KAAK;AAAA,EACpC;AAAA,EACA,IAAI,KAAK,SAAS,KAAK,GAAG;AAAA,IACzB,OAAO,KAAK,QAAQ,SAAS,KAAK;AAAA,EACnC;AAAA,EAEA,OAAO,GAAG;AAAA;AAGX,IAAM,qBAAqB,CAAC,eAC3B,WACE,QAAQ,oBAAoB,gBAAgB,EAC5C,QAAQ,gBAAgB,EAAE;AAE7B,IAAM,eAAe,OACpB,cACA,YACA,OACA,cAAc,UACV;AAAA,EACJ,IAAI,MAAM,IAAI,YAAY;AAAA,IAAG,OAAO,MAAM,IAAI,YAAY;AAAA,EAE1D,MAAM,eAAe,UAAS,cAAa,YAAY,EAAE,QACxD,OACA,GACD;AAAA,EACA,MAAM,yBAAyB,aAAa,QAAQ,UAAU,EAAE;AAAA,EAChE,MAAM,gBAAgB,UAAS,cAAc,MAAM;AAAA,EACnD,MAAM,UAAU,QAAQ,aAAa;AAAA,EAErC,MAAM,aAAa,MAAM,MAAK,YAAY,EAAE,KAAK;AAAA,EACjD,QAAQ,eAAe,MAAM,YAAY,EAAE,UAAU,aAAa,CAAC;AAAA,EACnE,MAAM,oBACL,WAAW,aAAa,WAAW,WAAW,QAAQ,WAAW;AAAA,EAElE,MAAM,kBAAkB,eAAe,iBAAiB;AAAA,EACxD,MAAM,kBAAkB,gBAAgB,OACvC,CAAC,eACA,WAAW,WAAW,GAAG,KAAK,WAAW,SAAS,MAAM,CAC1D;AAAA,EACA,MAAM,kBAAkB,gBAAgB,OACvC,CAAC,eACA,WAAW,WAAW,GAAG,MAAM,WAAW,SAAS,MAAM,CAC3D;AAAA,EAEA,MAAM,oBAAoB,MAAM,QAAQ,IACvC,gBAAgB,IAAI,CAAC,eACpB,aACC,SAAQ,SAAQ,YAAY,GAAG,UAAU,GACzC,YACA,OACA,KACD,CACD,CACD;AAAA,EAEA,MAAM,iBAAiB,cAAc,YAAY;AAAA,IAChD,IAAI;AAAA,IACJ,gBAAgB;AAAA,EACjB,CAAC;AAAA,EAED,MAAM,oBAAoB,YACxB,cAAc,mBAAmB,eAAe,OAAO,CAAC,EACxD,QACA,kCACA,CAAC,GAAG,OAAO,YAAY,aACtB,QAAQ,aAAa,UAAU,IAAI,QACrC;AAAA,EAED,MAAM,cAAc,CAAC,cACpB,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,MAAM,EAAE,MAAM;AAAA,IAC9C,QAAQ,WAAW,UAAU,WAAW;AAAA,IACxC,KAAK;AAAA,IACL,YAAY,WAAW;AAAA,EACxB,CAAC,EAAE,KAAK,QACP,kCACA,CAAC,GAAG,OAAO,YAAY,aACtB,QAAQ,aAAa,UAAU,IAAI,QACrC;AAAA,EAED,MAAM,cAAc,WAAW,OAAO,IACrC,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,EAEA,MAAM,qBAAqB;AAAA,IAC1B,GAAG;AAAA,IACH,GAAG,kBAAkB,QAAQ,CAAC,WAAW,OAAO,QAAQ;AAAA,EACzD;AAAA,EAEA,IAAI,kBAA4B,CAAC;AAAA,EACjC,IAAI,eAAe,mBAAmB,QAAQ;AAAA,IAC7C,MAAM,gBAAgB,MACrB,WAAW,KACX,GAAG,QAAQ,aAAa,OACzB;AAAA,IACA,MAAM,OAAM,SAAQ,aAAa,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IACvD,MAAM,OAAM,eAAe,mBAAmB,KAAK;AAAA,CAAI,CAAC;AAAA,IACxD,kBAAkB,CAAC,aAAa;AAAA,EACjC;AAAA,EAEA,MAAM,cAAc,CACnB,YACA,uBACI;AAAA,IACJ,MAAM,YAAY;AAAA,IAElB,OAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,+CAA+C;AAAA,IAChD,EAAE,KAAK;AAAA,CAAI;AAAA;AAAA,EAGZ,MAAM,mBAAmB,YAAY,YAAY,KAAK,GAAG,QAAQ;AAAA,EACjE,MAAM,mBAAmB,YAAY,YAAY,IAAI,GAAG,WAAW;AAAA,EAEnE,MAAM,gBAAgB,MACrB,WAAW,QACX,GAAG,2BACJ;AAAA,EACA,MAAM,gBAAgB,MACrB,WAAW,QACX,GAAG,2BACJ;AAAA,EACA,MAAM,OAAM,SAAQ,aAAa,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACvD,MAAM,OAAM,SAAQ,aAAa,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACvD,MAAM,OAAM,eAAe,gBAAgB;AAAA,EAC3C,MAAM,OAAM,eAAe,gBAAgB;AAAA,EAE3C,MAAM,cAA2B;AAAA,IAChC,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,MACd,GAAG,gBAAgB,IAAI,CAAC,WACvB,SACC,SAAQ,YAAY,GACpB,OAAO,SAAS,KAAK,IAAI,SAAS,GAAG,WACtC,CACD;AAAA,MACA,GAAG,kBAAkB,QAAQ,CAAC,WAAW,OAAO,aAAa;AAAA,IAC9D;AAAA,EACD;AAAA,EACA,MAAM,IAAI,cAAc,WAAW;AAAA,EAEnC,OAAO;AAAA;AAGD,IAAM,aAAa,OACzB,iBACA,oBACI;AAAA,EACJ,MAAM,YAAY,MAAK,iBAAiB,QAAQ;AAAA,EAChD,MAAM,WAAW,MAAK,iBAAiB,SAAS;AAAA,EAChD,MAAM,WAAW,MAAK,iBAAiB,OAAO;AAAA,EAC9C,MAAM,YAAY,MAAK,iBAAiB,QAAQ;AAAA,EAEhD,MAAM,QAAQ,IAAI;AAAA,IACjB,OAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAAA,IACpC,OAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,IACnC,OAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,IACnC,OAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAAA,EACrC,CAAC;AAAA,EAED,MAAM,aAAa,IAAI;AAAA,EACvB,MAAM,cAAc,IAAI;AAAA,EAExB,MAAM,cAAc,MAAM,QAAQ,IACjC,gBAAgB,IAAI,OAAO,cAAc;AAAA,IACxC,MAAM,cAAc,MAAM,aACzB,SAAQ,SAAS,GACjB,EAAE,QAAQ,WAAW,KAAK,WAAW,QAAQ,SAAS,GACtD,YACA,IACD;AAAA,IAEA,YAAY,cAAc,QAAQ,CAAC,MAAM,YAAY,IAAI,CAAC,CAAC;AAAA,IAE3D,MAAM,UAAU,UAAS,cAAa,SAAS,EAAE,QAChD,UACA,EACD;AAAA,IACA,MAAM,YAAY,MAAK,UAAU,GAAG,YAAY;AAAA,IAChD,MAAM,kBAAkB,MAAK,WAAW,GAAG,YAAY;AAAA,IAEvD,MAAM,OAAM,SAAQ,SAAS,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IACnD,MAAM,OACL,WACA;AAAA,MACC,qBAAqB,UAAS,SAAQ,SAAS,GAAG,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA;AAAA,IACD,EAAE,KAAK;AAAA,CAAI,CACZ;AAAA,IAEA,OAAO;AAAA,MACN,UAAU,YAAY;AAAA,MACtB;AAAA,MACA,YAAY,YAAY;AAAA,IACzB;AAAA,GACA,CACF;AAAA,EAEA,MAAM,QAAQ,IACb,MAAM,KAAK,WAAW,EAAE,IAAI,OAAO,QAAQ;AAAA,IAC1C,MAAM,OAAO,YAAW,cAAc,MAAM,MAAK,GAAG,EAAE,KAAK,CAAC;AAAA,IAC5D,MAAM,MAAM,UAAS,cAAa,GAAG,EAAE,QAAQ,SAAS,KAAK;AAAA,IAC7D,MAAM,aAAa,MAAK,WAAW,GAAG;AAAA,IACtC,MAAM,aAAa,MAAK,UAAU,GAAG;AAAA,IAErC,MAAM,QAAQ,IAAI;AAAA,MACjB,OAAM,SAAQ,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,MAC9C,OAAM,SAAQ,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IAC/C,CAAC;AAAA,IAED,MAAM,QAAQ,IAAI;AAAA,MACjB,OAAM,YAAY,IAAI;AAAA,MACtB,OAAM,YAAY,IAAI;AAAA,IACvB,CAAC;AAAA,GACD,CACF;AAAA,EAEA,OAAO;AAAA,IACN,aAAa,YAAY,QAAQ,CAAC,eAAe,WAAW,QAAQ;AAAA,IACpE,eAAe,YAAY,IAAI,CAAC,eAAe,WAAW,SAAS;AAAA,IACnE,gBAAgB,YAAY,IAAI,CAAC,eAAe,WAAW,UAAU;AAAA,EACtE;AAAA;;;AEjRD,oBAAS;AAIF,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,QAAQ,EAAE;AAAA,EAEtC,MAAM,WAAW,UAAS,MAAM,GAAG;AAAA,EACnC,MAAM,eAAe,SAAS,IAAI;AAAA,EAClC,KAAK;AAAA,IAAc,OAAO;AAAA,EAE1B,OAAO,YAAY,aAAa,MAAM,IAAI,SAAS,OAAO;AAAA,EAC1D,KAAK;AAAA,IAAU,OAAO;AAAA,EAEtB,MAAM,MAAM,SAAQ,YAAY;AAAA,EAChC,IAAI,QAAQ,QAAQ;AAAA,IACnB,SAAS,GAAG,SAAS,QAAQ,UAAU,IAAI;AAAA,IAE3C,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,SAAS,SAAS,SAAS,IAAI,SAAS,KAAK,SAAS;AAAA,EAE5D,IAAI,WAAW,WAAW;AAAA,IACzB,SAAS,GAAG,mBAAmB,IAAI;AAAA,EACpC,EAAO,SAAI,WAAW,SAAS;AAAA,IAC9B,SAAS,cAAc,SAAS;AAAA,EACjC,EAAO;AAAA,IACN,SAAS,YAAY,IAAI;AAAA;AAAA,EAG1B,OAAO;AAAA,GACL,CAAC,CAAC;;;ACpCN,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;;;ACrC3B;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,uBAAuB,OACnC,UACA,YACI;AAAA,EACJ,MAAM,YAAY,MAAM,gBAAgB,SAAS,QAAQ;AAAA,EACzD,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,MAAM,MAAM,KAAK,WAAW;AAAA,MAC3C,MAAM,MAAM,QAAQ,SAAS,GAAG,SAAS,IAAI,SAAS;AAAA,MACtD,MAAM,UAAU,SAAS;AAAA,MACzB,IAAI;AAAA,QAAS,OAAO,GAAG,SAAS,UAAU;AAAA,MAC1C,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;;;ACxBjB,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;;;ATKR,IAAM,iBAAiB,CAAC,OAAiB,aAAqB;AAAA,EAC7D,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,KAAK;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;AAG3D,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,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MACkB;AAAA,EAClB,MAAM,aAAa,YAAY,IAAI;AAAA,EACnC,MAAM,eAAc,KAAI;AAAA,EAExB,MAAM,YAAY,iBAAiB,gBAAgB,YAAW;AAAA,EAC9D,MAAM,aACL,mBAAmB,iBAAiB,iBAAiB,YAAW;AAAA,EACjE,MAAM,WACL,kBAAkB,iBAAiB,gBAAgB,YAAW;AAAA,EAC/D,MAAM,UACL,iBAAiB,iBAAiB,eAAe,YAAW;AAAA,EAC7D,MAAM,UACL,iBAAiB,iBAAiB,eAAe,YAAW;AAAA,EAC7D,MAAM,YACL,mBAAmB,iBAAiB,iBAAiB,YAAW;AAAA,EACjE,MAAM,SAAS,gBAAgB,iBAAiB,cAAc,YAAW;AAAA,EAEzE,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,EAEnD,MAAM,YAAY,CAAC,UAAU,SAAS,SAAS,WAAW,MAAM,EAAE,OACjE,OACD;AAAA,EACA,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,IAAW,aAAa,MAAK,WAAW,OAAO;AAAA,EAC9C,SAAI;AAAA,IAAQ,aAAa,MAAK,QAAQ,OAAO;AAAA,EAElD,MAAM,IAAG,WAAW,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,EACpD,MAAM,OAAM,SAAS;AAAA,EAErB,IAAI,oBAAoB;AAAA,IACvB,MAAM,wBAAwB,gBAAgB,gBAAgB;AAAA,EAE/D,IAAI;AAAA,IACH,MAAM,GAAG,YAAY,MAAK,WAAW,QAAQ,GAAG;AAAA,MAC/C,OAAO;AAAA,MACP,WAAW;AAAA,IACZ,CAAC;AAAA,EAEF,IAAI,SAAS;AAAA,IACZ,MAAM,OAAM,MAAK,WAAW,MAAM,CAAC;AAAA,IACnC,MAAM,GAAG,SAAS,MAAK,WAAW,MAAM,GAAG;AAAA,MAC1C,OAAO;AAAA,MACP,WAAW;AAAA,IACZ,CAAC;AAAA,EACF;AAAA,EAEA,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,EAEJ,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,EACJ;AAAA,EAEA,IAAI,kBAAkB,WAAW,KAAK,kBAAkB,WAAW,GAAG;AAAA,IACrE,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,CAAC,UAAU,WAAW,SAAS,MAAM,EAAE,OAC9D,CAAC,QAAuB,QAAQ,GAAG,CACpC;AAAA,IACA,MAAM,aAAa,WACf,MAAM,MAAM,eACb,eAAe,OAAO,YAAW;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,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,MAAK,WAAW,UAAS,UAAU,GAAG,KAAK;AAAA,MACnD,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,SAAS;AAAA,IAC1B,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,EAEA,MAAM,WAAW,iBAChB,CAAC,GAAG,eAAe,GAAG,eAAe,GAAG,UAAU,GAClD,SACD;AAAA,EAEA,IAAI,WAAW,eAAe;AAAA,IAC7B,MAAM,kBAAkB,MAAK,WAAW,UAAS,OAAO,GAAG,OAAO;AAAA,IAClE,MAAM,OAAM,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,IAChD,MAAM,GAAG,eAAe,iBAAiB;AAAA,MACxC,OAAO;AAAA,MACP,WAAW;AAAA,IACZ,CAAC;AAAA,IACD,MAAM,qBAAqB,UAAU,eAAe;AAAA,EACrD;AAAA,EAEA,KAAK,SAAS,6BAA6B,WAAW;AAAA,IACrD,MAAM,IAAG,MAAK,WAAW,SAAS,GAAG,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IACrE,MAAM,IAAG,MAAK,WAAW,QAAQ,GAAG,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IACpE,MAAM,QAAQ,IACb,kBAAkB,IAAI,CAAC,SAAS,IAAG,MAAM,EAAE,OAAO,KAAK,CAAC,CAAC,CAC1D;AAAA,IAEA,MAAM,IAAG,MAAK,WAAW,SAAS,SAAS,GAAG;AAAA,MAC7C,OAAO;AAAA,MACP,WAAW;AAAA,IACZ,CAAC;AAAA,EACF;AAAA,EAEA,KAAK,SAAS,6BAA6B,QAAQ;AAAA,IAClD,MAAM,IAAG,MAAK,QAAQ,SAAS,GAAG,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IAClE,MAAM,IAAG,MAAK,QAAQ,QAAQ,GAAG,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IACjE,MAAM,IAAG,MAAK,QAAQ,QAAQ,GAAG,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IACjE,MAAM,QAAQ,IACb,eAAe,IAAI,CAAC,SAAS,IAAG,MAAM,EAAE,OAAO,KAAK,CAAC,CAAC,CACvD;AAAA,IAEA,MAAM,IAAG,MAAK,QAAQ,SAAS,SAAS,GAAG;AAAA,MAC1C,OAAO;AAAA,MACP,WAAW;AAAA,IACZ,CAAC;AAAA,EACF;AAAA,EAEA,KAAK,SAAS,6BAA6B;AAAA,IAC1C,MAAM,IAAG,kBAAkB,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,EAE5D,QAAQ,IACP,sBAAsB,kBAAkB,YAAY,IAAI,IAAI,UAAU,GACvE;AAAA,EAEA,OAAO;AAAA;;AUjRR;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;AAEzD,IAAM,oBAAoB,CAChC,kBACG,UACC;AAAA,EACJ,QAAQ,IAAI,kCAAkC,eAAe,KAAK;AAAA;;AGhI5D,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,WAAW,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,mBAAmB,CAAC,QAChC,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;",
26
+ "debugId": "919FA38EE8B07AC264756E2164756E21",
23
27
  "names": []
24
28
  }
@@ -0,0 +1,24 @@
1
+ import { ComponentType as ReactComponent } from 'react';
2
+ import { Component as SvelteComponent } from 'svelte';
3
+ import { Component as VueComponent } from 'vue';
4
+ export type BuildOptions = {
5
+ preserveIntermediateFiles?: boolean;
6
+ };
7
+ export type BuildConfig = {
8
+ buildDirectory?: string;
9
+ assetsDirectory?: string;
10
+ reactDirectory?: string;
11
+ vueDirectory?: string;
12
+ angularDirectory?: string;
13
+ astroDirectory?: string;
14
+ svelteDirectory?: string;
15
+ htmlDirectory?: string;
16
+ htmxDirectory?: string;
17
+ tailwind?: {
18
+ input: string;
19
+ output: string;
20
+ };
21
+ options?: BuildOptions;
22
+ };
23
+ export type PropsOf<Component> = Component extends ReactComponent<infer Props> ? Props : Component extends SvelteComponent<infer Props> ? Props : Component extends VueComponent<infer Props> ? Props : Record<string, never>;
24
+ export type PropsArgs<C> = keyof PropsOf<C> extends never ? [] : [PropsOf<C>];
@@ -0,0 +1,17 @@
1
+ type GenerateHeadElementProps = {
2
+ cssPath?: string;
3
+ title?: string;
4
+ icon?: string;
5
+ description?: string;
6
+ font?: string;
7
+ };
8
+ export declare const generateHeadElement: ({ cssPath, title, description, font, icon }?: GenerateHeadElementProps) => `<head>
9
+ <meta charset="UTF-8">
10
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
11
+ <title>${string}</title>
12
+ <meta name="description" content="${string}">
13
+ <link rel="icon" href="${string}" type="image/x-icon">
14
+ ${string}
15
+ ${string}
16
+ </head>`;
17
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from './networking';
2
+ export * from '../build/updateHTMLAssetPaths';
3
+ export * from './generateHeadElement';
@@ -0,0 +1,2 @@
1
+ export declare const toPascal: (str: string) => string;
2
+ export declare const toKebab: (str: string) => string;
package/eslint.config.mjs CHANGED
@@ -35,14 +35,14 @@ export default defineConfig([
35
35
  files: ['**/*.{ts,tsx}'],
36
36
  languageOptions: {
37
37
  globals: {
38
- ...globals.browser,
38
+ // TODO: These should only be applied to the src/core/build.ts file.
39
39
  BuildMessage: 'readonly',
40
40
  ResolveMessage: 'readonly'
41
41
  },
42
42
  parser: tsParser,
43
43
  parserOptions: {
44
44
  createDefaultProgram: true,
45
- project: './tsconfig.json',
45
+ project: './tsconfig.lint.json',
46
46
  tsconfigRootDir: __dirname
47
47
  }
48
48
  },
@@ -60,6 +60,11 @@ export default defineConfig([
60
60
  {
61
61
  files: ['**/*.{js,mjs,cjs,ts,tsx,jsx}'],
62
62
  ignores: ['node_modules/**'],
63
+ languageOptions: {
64
+ globals: {
65
+ ...globals.browser
66
+ }
67
+ },
63
68
  plugins: {
64
69
  absolute: absolutePlugin,
65
70
  import: importPlugin,
@@ -178,13 +183,22 @@ export default defineConfig([
178
183
  },
179
184
 
180
185
  {
181
- files: ['eslint.config.mjs', 'src/constants.ts'],
186
+ files: [
187
+ 'eslint.config.mjs',
188
+ 'src/constants.ts',
189
+ 'example/vue/client/*.js'
190
+ ],
182
191
  rules: {
183
192
  'no-magic-numbers': 'off'
184
193
  }
185
194
  },
186
195
  {
187
- files: ['eslint.config.mjs'],
196
+ files: [
197
+ 'eslint.config.mjs',
198
+ 'example/vue/scripts/*.ts',
199
+ 'example/vue/pages/*.js',
200
+ 'example/vue/client/*.js'
201
+ ],
188
202
  rules: {
189
203
  'import/no-default-export': 'off'
190
204
  }
@@ -201,5 +215,25 @@ export default defineConfig([
201
215
  rules: {
202
216
  'import/no-unused-modules': 'off'
203
217
  }
218
+ },
219
+ {
220
+ files: ['example/vue/scripts/*.ts'],
221
+ rules: {
222
+ 'absolute/explicit-object-types': 'off',
223
+ 'no-duplicate-imports': 'off'
224
+ }
225
+ },
226
+ {
227
+ files: ['example/vue/pages/*.js', 'example/vue/client/*.js'],
228
+ rules: {
229
+ '@typescript-eslint/no-unused-vars': 'off',
230
+ 'func-style': 'off'
231
+ }
232
+ },
233
+ {
234
+ files: ['example/vue/client/*.js'],
235
+ rules: {
236
+ 'absolute/explicit-object-types': 'off'
237
+ }
204
238
  }
205
239
  ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/absolute",
3
- "version": "0.8.15",
3
+ "version": "0.9.1",
4
4
  "description": "A fullstack meta-framework for building web applications with TypeScript",
5
5
  "repository": {
6
6
  "type": "git",
@@ -11,9 +11,9 @@
11
11
  "license": "CC BY-NC 4.0",
12
12
  "author": "Alex Kahn",
13
13
  "scripts": {
14
- "build": "rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external react --external react-dom --external svelte --external elysia && tsc --emitDeclarationOnly --project tsconfig.json",
14
+ "build": "rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external react --external react-dom --external vue --external @vue/compiler-sfc --external svelte --external elysia && tsc --emitDeclarationOnly --project tsconfig.build.json",
15
15
  "test": "echo \"Error: no test specified\" && exit 1",
16
- "format": "prettier --write \"./**/*.{js,jsx,ts,tsx,css,json,mjs,md,svelte}\"",
16
+ "format": "prettier --write \"./**/*.{js,jsx,ts,tsx,css,json,mjs,md,svelte,html,vue}\"",
17
17
  "lint": "eslint ./",
18
18
  "typecheck": "bun run tsc --noEmit",
19
19
  "dev": "bun run --watch example/server.ts",
@@ -23,16 +23,16 @@
23
23
  "elysia": "^1.3.0",
24
24
  "react": "^19.1.0",
25
25
  "react-dom": "^19.1.0",
26
- "svelte": "^5.34.7"
26
+ "svelte": "^5.35.2",
27
+ "vue": "^3.5.17"
27
28
  },
28
29
  "devDependencies": {
29
30
  "@elysiajs/static": "1.3.0",
30
31
  "@stylistic/eslint-plugin-ts": "4.2.0",
31
32
  "@tailwindcss/cli": "4.1.7",
32
- "@types/bun": "1.2.14",
33
+ "@types/bun": "1.2.17",
33
34
  "@types/react": "19.1.5",
34
35
  "@types/react-dom": "19.1.5",
35
- "@types/vue": "2.0.0",
36
36
  "autoprefixer": "10.4.21",
37
37
  "elysia": "1.3.1",
38
38
  "eslint": "9.26.0",
@@ -44,10 +44,10 @@
44
44
  "prettier": "3.5.3",
45
45
  "prettier-plugin-svelte": "3.4.0",
46
46
  "react": "19.1.0",
47
- "svelte": "5.34.7",
47
+ "svelte": "5.35.2",
48
48
  "tailwindcss": "4.1.7",
49
49
  "typescript": "5.8.3",
50
50
  "typescript-eslint": "8.32.0",
51
- "vue": "3.4.26"
51
+ "vue": "3.5.17"
52
52
  }
53
53
  }
@@ -0,0 +1,20 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "allowJs": true,
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "jsx": "react-jsx",
8
+ "esModuleInterop": true,
9
+ "forceConsistentCasingInFileNames": true,
10
+ "outDir": "dist",
11
+ "strict": true,
12
+ "declaration": true,
13
+ "skipLibCheck": true,
14
+ "noUncheckedIndexedAccess": true,
15
+ "noImplicitAny": true,
16
+ "lib": ["DOM", "DOM.Iterable", "ESNext"]
17
+ },
18
+ "include": ["src/**/*"],
19
+ "exclude": ["node_modules"]
20
+ }
@@ -1 +0,0 @@
1
- export declare const updateScriptTags: (manifest: Record<string, string>, htmlDir: string) => Promise<void>;
@@ -1,2 +0,0 @@
1
- import { BuildConfig } from '../types';
2
- export declare const build: ({ buildDirectory, assetsDirectory, reactDirectory, htmlDirectory, htmxDirectory, svelteDirectory, tailwind, options }: BuildConfig) => Promise<Record<string, string> | null>;
@@ -1,10 +0,0 @@
1
- import { ComponentType } from 'react';
2
- import { Component } from 'svelte';
3
- export declare const handleReactPageRequest: <Props extends Record<string, unknown> = Record<never, never>>(pageComponent: ComponentType<Props>, index: string, ...props: keyof Props extends never ? [] : [props: Props]) => Promise<Response>;
4
- type HandleSveltePageRequest = {
5
- (PageComponent: Component<Record<string, never>>, manifest: Record<string, string>): Promise<Response>;
6
- <P extends Record<string, unknown>>(PageComponent: Component<P>, manifest: Record<string, string>, props: P): Promise<Response>;
7
- };
8
- export declare const handleSveltePageRequest: HandleSveltePageRequest;
9
- export declare const handleHTMLPageRequest: (html: string) => Bun.BunFile;
10
- export {};
@@ -1,4 +0,0 @@
1
- export declare const compileSvelte: (entryPoints: string[], outputDirectory: string) => Promise<{
2
- svelteClientPaths: string[];
3
- svelteServerPaths: string[];
4
- }>;
@@ -1,20 +0,0 @@
1
- type BuildOptions = {
2
- preserveIntermediateFiles?: boolean;
3
- };
4
- export type BuildConfig = {
5
- buildDirectory?: string;
6
- assetsDirectory?: string;
7
- reactDirectory?: string;
8
- vueDirectory?: string;
9
- angularDirectory?: string;
10
- astroDirectory?: string;
11
- svelteDirectory?: string;
12
- htmlDirectory?: string;
13
- htmxDirectory?: string;
14
- tailwind?: {
15
- input: string;
16
- output: string;
17
- };
18
- options?: BuildOptions;
19
- };
20
- export {};
@@ -1,2 +0,0 @@
1
- export * from './networking';
2
- export * from '../build/updateScriptTags';
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes