one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 65.5 kB
Source Map (JSON)
{"version":3,"file":"build.js","names":["vxrnBuild","viteBuild"],"sources":["esm/cli/build.js"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport { cpus } from \"node:os\";\nimport Path, { join, posix, relative, resolve } from \"node:path\";\nimport { resolvePath } from \"@vxrn/resolve\";\nimport FSExtra from \"fs-extra\";\nimport MicroMatch from \"micromatch\";\nimport {\n createBuilder,\n mergeConfig,\n normalizePath,\n build as viteBuild\n} from \"vite\";\nimport {\n getOptimizeDeps,\n rollupRemoveUnusedImportsPlugin,\n build as vxrnBuild\n} from \"vxrn\";\nimport * as constants from \"../constants\";\nimport { setServerGlobals } from \"../server/setServerGlobals\";\nimport { environmentGuardPlugin } from \"../vite/plugins/environmentGuardPlugin\";\nimport { writeBuildOutputPointer } from \"../utils/buildOutputPointer\";\nimport { getPathnameFromFilePath } from \"../utils/getPathnameFromFilePath\";\nimport { getRouterRootFromOneOptions } from \"../utils/getRouterRootFromOneOptions\";\nimport { isRolldown } from \"../utils/isRolldown\";\nimport { toAbsolute } from \"../utils/toAbsolute\";\nimport { buildVercelOutputDirectory } from \"../vercel/build/buildVercelOutputDirectory\";\nimport {\n createCloudflareWranglerConfig,\n getCloudflareProjectName,\n isPlainObject,\n loadUserWranglerConfig\n} from \"../vite/cloudflareWranglerConfig\";\nimport { getManifest } from \"../vite/getManifest\";\nimport { loadUserOneOptions } from \"../vite/loadConfig\";\nimport { runWithAsyncLocalContext } from \"../vite/one-server-only\";\nimport { buildPage, printBuildTimings } from \"./buildPage\";\nimport { checkNodeVersion } from \"./checkNodeVersion\";\nimport { getWorkerPool, terminateWorkerPool } from \"./workerPool\";\nimport { generateSitemap } from \"./generateSitemap\";\nimport { labelProcess } from \"./label-process\";\nimport { getRouteExports } from \"./serverRouteModules\";\nimport { pLimit } from \"../utils/pLimit\";\nimport { getCriticalCSSOutputPaths } from \"../vite/plugins/criticalCSSPlugin\";\nimport { absorbedPackageAliases } from \"../utils/absorbedPackages\";\nimport {\n formatErrorSafely,\n installPrepareStackTraceGuard\n} from \"./install-error-handlers\";\nconst { ensureDir, writeJSON } = FSExtra;\nfunction normalizeDeploy(deploy) {\n if (!deploy) return void 0;\n if (typeof deploy === \"string\") return { target: deploy };\n return deploy;\n}\nconst CLOUDFLARE_DEPLOY_WRANGLER_RULES = [\n { type: \"ESModule\", globs: [\"assets/**/*.js\", \"assets/**/*.mjs\"] }\n];\nfunction omitEmptyJsonValues(value) {\n if (Array.isArray(value)) {\n const items = value.map((item) => omitEmptyJsonValues(item)).filter((item) => item !== void 0);\n return items.length > 0 ? items : void 0;\n }\n if (isPlainObject(value)) {\n const entries = Object.entries(value).map(([key, item]) => [key, omitEmptyJsonValues(item)]).filter((entry) => entry[1] !== void 0);\n return entries.length > 0 ? Object.fromEntries(entries) : void 0;\n }\n return value;\n}\nasync function finalizeCloudflareWranglerDeployConfig(configPath) {\n const parsed = JSON.parse(await FSExtra.readFile(configPath, \"utf-8\"));\n if (!isPlainObject(parsed)) {\n throw new Error(\n `Expected ${relative(process.cwd(), configPath)} to contain a JSON object`\n );\n }\n parsed.rules = CLOUDFLARE_DEPLOY_WRANGLER_RULES;\n const config = omitEmptyJsonValues(parsed);\n if (!isPlainObject(config)) {\n throw new Error(\n `Expected ${relative(process.cwd(), configPath)} to contain deploy config`\n );\n }\n await FSExtra.writeFile(configPath, `${JSON.stringify(config, null, 2)}\n`);\n}\nprocess.env.ONE_CACHE_KEY = constants.CACHE_KEY;\nfunction shouldUseWorkers(oneOptions) {\n if (process.env.ONE_BUILD_WORKERS === \"0\") return false;\n if (process.env.ONE_BUILD_WORKERS === \"1\") return true;\n return oneOptions?.build?.workers !== false;\n}\ninstallPrepareStackTraceGuard();\nlet buildErrorHandlersInstalled = false;\nfunction installBuildErrorHandlers() {\n if (buildErrorHandlersInstalled) return;\n buildErrorHandlersInstalled = true;\n process.on(\"uncaughtException\", (err) => {\n try {\n process.stderr.write(`[one build] uncaught exception\n${formatErrorSafely(err)}\n`);\n } catch {\n }\n process.exit(1);\n });\n process.on(\"unhandledRejection\", (reason) => {\n try {\n process.stderr.write(\n `[one build] unhandled rejection\n${formatErrorSafely(reason)}\n`\n );\n } catch {\n }\n process.exit(1);\n });\n}\nconst HOOK_KEYS = [\n \"resolveId\",\n \"load\",\n \"transform\",\n \"renderChunk\",\n \"generateBundle\",\n \"writeBundle\",\n \"buildStart\",\n \"buildEnd\",\n \"moduleParsed\"\n];\nfunction clonePluginHooks(config) {\n if (!config.plugins) return config;\n return {\n ...config,\n plugins: config.plugins.map((p) => {\n if (!p || typeof p !== \"object\") return p;\n const cloned = { ...p };\n for (const key of HOOK_KEYS) {\n if (cloned[key] && typeof cloned[key] === \"object\" && \"handler\" in cloned[key]) {\n cloned[key] = { ...cloned[key] };\n }\n }\n return cloned;\n })\n };\n}\nasync function build(args) {\n installBuildErrorHandlers();\n process.env.IS_VXRN_CLI = \"true\";\n if (!process.env.NODE_ENV) {\n process.env.NODE_ENV = \"production\";\n } else if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n `\n \\u26A0\\uFE0F Warning: NODE_ENV is set to \"${process.env.NODE_ENV}\" (builds default to \"production\")\n`\n );\n }\n labelProcess(\"build\");\n checkNodeVersion();\n setServerGlobals();\n const { oneOptions, config: viteLoadedConfig } = await loadUserOneOptions(\"build\");\n const routerRoot = getRouterRootFromOneOptions(oneOptions);\n const configuredBuildConcurrency = process.env.ONE_BUILD_CONCURRENCY ?? oneOptions.build?.concurrency;\n const buildConcurrency = configuredBuildConcurrency === void 0 ? Math.max(1, Math.min(cpus().length, 8)) : Number(configuredBuildConcurrency);\n if (!Number.isInteger(buildConcurrency) || buildConcurrency < 1) {\n throw new Error(\n `build.concurrency must be a positive integer, received ${JSON.stringify(\n configuredBuildConcurrency\n )}`\n );\n }\n if (oneOptions.web?.defaultRenderMode) {\n process.env.ONE_DEFAULT_RENDER_MODE = oneOptions.web.defaultRenderMode;\n }\n const deployConfig = normalizeDeploy(oneOptions.web?.deploy);\n if (!process.env.ONE_SERVER_URL && deployConfig) {\n const url = deployConfig.url ?? (deployConfig.target === \"cloudflare\" ? `https://${await getCloudflareProjectName(process.cwd())}.workers.dev` : void 0);\n if (url) {\n process.env.ONE_SERVER_URL = url;\n console.info(`\n \\u2601\\uFE0F ONE_SERVER_URL: ${url}\n`);\n }\n }\n const outDir = viteLoadedConfig?.config?.build?.outDir ?? \"dist\";\n const manifest = getManifest({\n routerRoot,\n ignoredRouteFiles: oneOptions.router?.ignoredRouteFiles\n });\n const serverOutputFormat = oneOptions.build?.server === false ? \"esm\" : oneOptions.build?.server?.outputFormat ?? \"esm\";\n const buildStartTime = performance.now();\n const vxrnOutput = await vxrnBuild(\n {\n skipEnv: args.skipEnv ?? oneOptions.skipEnv,\n server: oneOptions.server,\n build: {\n analyze: true,\n server: oneOptions.build?.server === false ? false : {\n outputFormat: serverOutputFormat\n }\n }\n },\n args\n );\n const bundleTime = performance.now() - buildStartTime;\n console.info(`\n \\u23F1\\uFE0F vite bundle: ${(bundleTime / 1e3).toFixed(2)}s\n`);\n if (!vxrnOutput || args.platform !== \"web\") {\n return;\n }\n const { options } = vxrnOutput;\n const { optimizeDeps } = getOptimizeDeps(\"build\");\n const { rolldownOptions: _rolldownOptions, ...optimizeDepsNoRolldown } = optimizeDeps;\n const serverOpts = oneOptions.build?.server;\n const isUnified = typeof serverOpts === \"object\" && serverOpts !== null && serverOpts.unified === true;\n let baseForApi = isUnified ? clonePluginHooks(vxrnOutput.serverBuildConfig ?? vxrnOutput.webBuildConfig) : clonePluginHooks(vxrnOutput.webBuildConfig);\n if (isUnified) {\n const clone = {\n ...baseForApi,\n build: baseForApi.build ? { ...baseForApi.build } : void 0,\n plugins: baseForApi.plugins ? baseForApi.plugins.filter(\n (p) => p && typeof p === \"object\" && p.name !== \"omit-api-routes\"\n ) : void 0\n };\n if (clone.build && clone.build.rolldownOptions) {\n const ro = { ...clone.build.rolldownOptions };\n delete ro.input;\n clone.build.rolldownOptions = ro;\n }\n if (clone.build) {\n delete clone.build.outDir;\n }\n baseForApi = clone;\n }\n const apiBuildConfig = mergeConfig(baseForApi, {\n configFile: false,\n appType: \"custom\",\n optimizeDeps: optimizeDepsNoRolldown,\n environments: {\n client: {\n optimizeDeps: { rolldownOptions: _rolldownOptions }\n }\n }\n });\n async function buildCustomRoutes(subFolder, routes) {\n const input = routes.reduce((entries, { page, file }) => {\n entries[page.slice(1) + \".js\"] = join(routerRoot, file);\n return entries;\n }, {});\n const outputFormat = oneOptions?.build?.api?.outputFormat ?? serverOutputFormat;\n const treeshake = oneOptions?.build?.api?.treeshake;\n const mergedConfig = mergeConfig(apiBuildConfig, {\n appType: \"custom\",\n configFile: false,\n define: vxrnOutput.processEnvDefines,\n ssr: isUnified ? {\n // in unified mode let the base (serverBuildConfig) set ssr.noExternal\n // — default is now ['react', 'react-dom'] instead of `true`, so\n // rolldown can externalize the rest.\n optimizeDeps: optimizeDepsNoRolldown\n } : {\n noExternal: true,\n external: [\"react\", \"react-dom\"],\n optimizeDeps: optimizeDepsNoRolldown\n },\n environments: {\n ssr: {\n optimizeDeps: { rolldownOptions: _rolldownOptions }\n }\n },\n build: {\n ssr: true,\n emptyOutDir: false,\n outDir: `${outDir}/${subFolder}`,\n copyPublicDir: false,\n minify: false,\n rolldownOptions: {\n treeshake: treeshake ?? {\n moduleSideEffects: false\n },\n plugins: [\n // otherwise rollup is leaving commonjs-only top level imports...\n outputFormat === \"esm\" ? rollupRemoveUnusedImportsPlugin : null\n ].filter(Boolean),\n // too many issues\n // treeshake: {\n // moduleSideEffects: false,\n // },\n // prevents it from shaking out the exports\n preserveEntrySignatures: \"strict\",\n input,\n // in unified mode, inherit externals from serverBuildConfig (user\n // ssr.external / rolldownOptions.external). the legacy path resets\n // them to [] so per-route files bundle everything.\n ...isUnified ? {} : { external: [] },\n output: {\n entryFileNames: \"[name]\",\n exports: \"auto\",\n ...outputFormat === \"esm\" ? {\n format: \"esm\",\n esModule: true\n } : {\n format: \"cjs\",\n // Preserve folder structure and use .cjs extension\n entryFileNames: (chunkInfo) => {\n const name = chunkInfo.name.replace(/\\.js$/, \".cjs\");\n return name;\n },\n chunkFileNames: (chunkInfo) => {\n const chunkName = normalizePath(chunkInfo.name);\n const dir = posix.dirname(chunkName);\n const name = posix.basename(chunkName, posix.extname(chunkName));\n return posix.join(dir, `${name}-[hash].cjs`);\n },\n assetFileNames: (assetInfo) => {\n const assetName = normalizePath(assetInfo.name ?? \"\");\n const dir = posix.dirname(assetName);\n const baseName = posix.basename(assetName, posix.extname(assetName));\n const ext = posix.extname(assetName);\n return posix.join(dir, `${baseName}-[hash]${ext}`);\n }\n }\n }\n }\n }\n });\n const userApiBuildConf = oneOptions.build?.api?.config;\n const finalApiBuildConf = userApiBuildConf ? mergeConfig(mergedConfig, userApiBuildConf) : mergedConfig;\n const output = await viteBuild(\n // allow user merging api build config\n finalApiBuildConf\n );\n return output;\n }\n const builtMiddlewares = {};\n const apiPromise = manifest.apiRoutes.length ? (console.info(`\n \\u{1F528} build api routes\n`), buildCustomRoutes(\"api\", manifest.apiRoutes)) : Promise.resolve(null);\n const middlewarePromise = manifest.middlewareRoutes.length ? (console.info(`\n \\u{1F528} build middlewares\n`), buildCustomRoutes(\"middlewares\", manifest.middlewareRoutes)) : Promise.resolve(null);\n const [apiOutput, middlewareBuildInfo] = await Promise.all([\n apiPromise,\n middlewarePromise\n ]);\n if (middlewareBuildInfo) {\n for (const middleware of manifest.middlewareRoutes) {\n const absoluteRoot = resolve(process.cwd(), options.root);\n const fullPath = normalizePath(join(absoluteRoot, routerRoot, middleware.file));\n const outChunks = middlewareBuildInfo.output.filter((x) => x.type === \"chunk\");\n const chunk = outChunks.find((x) => x.facadeModuleId === fullPath);\n if (!chunk) throw new Error(`internal err finding middleware`);\n builtMiddlewares[middleware.file] = posix.join(\n outDir,\n \"middlewares\",\n chunk.fileName\n );\n }\n }\n globalThis[\"require\"] = createRequire(import.meta.dirname + \"/\");\n const assets = [];\n const builtRoutes = [];\n const sitemapData = [];\n const collectImportsCache = /* @__PURE__ */ new Map();\n const collectImportsInFlight = /* @__PURE__ */ new Set();\n const cssFileContentsCache = /* @__PURE__ */ new Map();\n const criticalCSSOutputPaths = getCriticalCSSOutputPaths(vxrnOutput.clientManifest);\n const limit = pLimit(buildConcurrency);\n const useWorkers = shouldUseWorkers(oneOptions);\n const workerPool = useWorkers ? getWorkerPool(buildConcurrency) : null;\n if (workerPool) {\n const serializableOptions = JSON.parse(\n JSON.stringify(\n oneOptions,\n (_key, value) => typeof value === \"function\" ? void 0 : value\n )\n );\n await workerPool.initialize(serializableOptions);\n }\n const staticStartTime = performance.now();\n const modeLabel = useWorkers ? `workers: ${workerPool?.size}` : `concurrency: ${buildConcurrency}`;\n console.info(`\n \\u{1F528} build static routes (${modeLabel})\n`);\n const staticDir = join(`${outDir}/static`);\n const clientDir = join(`${outDir}/client`);\n await ensureDir(staticDir);\n if (!vxrnOutput.serverOutput) {\n throw new Error(`No server output`);\n }\n const clientChunksBySource = /* @__PURE__ */ new Map();\n if (vxrnOutput.clientOutput) {\n for (const chunk of vxrnOutput.clientOutput) {\n if (chunk.type !== \"chunk\") continue;\n const info = { fileName: chunk.fileName, imports: chunk.imports || [] };\n for (const moduleId of chunk.moduleIds ?? []) {\n clientChunksBySource.set(moduleId, info);\n }\n }\n for (const chunk of vxrnOutput.clientOutput) {\n if (chunk.type !== \"chunk\" || !chunk.facadeModuleId) continue;\n clientChunksBySource.set(chunk.facadeModuleId, {\n fileName: chunk.fileName,\n imports: chunk.imports || []\n });\n }\n }\n const clientManifestByFile = /* @__PURE__ */ new Map();\n for (const entry of Object.values(vxrnOutput.clientManifest)) {\n if (entry.file) {\n clientManifestByFile.set(entry.file, entry);\n }\n }\n const outputEntries = [...vxrnOutput.serverOutput.entries()];\n const layoutServerPaths = /* @__PURE__ */ new Map();\n for (const [, output] of outputEntries) {\n if (output.type === \"asset\") continue;\n const id = output.facadeModuleId || \"\";\n const file = Path.basename(id);\n if (file.startsWith(\"_layout\") && id.includes(`/${routerRoot}/`)) {\n const relativePath = normalizePath(relative(process.cwd(), id)).replace(\n `${routerRoot}/`,\n \"\"\n );\n const contextKey = `./${relativePath}`;\n layoutServerPaths.set(contextKey, output.fileName);\n }\n }\n const routeByPath = /* @__PURE__ */ new Map();\n for (const route of manifest.pageRoutes) {\n if (route.file) {\n const routePath = `${routerRoot}${route.file.slice(1)}`;\n routeByPath.set(routePath, route);\n }\n }\n for (const [, output] of outputEntries) {\n if (output.type === \"asset\") {\n assets.push(output);\n }\n }\n const moduleIdToServerChunk = /* @__PURE__ */ new Map();\n for (const [, output] of outputEntries) {\n if (output.type === \"asset\") continue;\n const moduleIds = output.moduleIds || (output.facadeModuleId ? [output.facadeModuleId] : []);\n for (const moduleId of moduleIds) {\n moduleIdToServerChunk.set(moduleId, output.fileName);\n if (moduleId.includes(\"?one-spa-build\")) {\n moduleIdToServerChunk.set(\n moduleId.slice(0, moduleId.indexOf(\"?\")),\n output.fileName\n );\n }\n }\n }\n for (const foundRoute of manifest.pageRoutes) {\n let collectImports = function(entry, { type = \"js\" } = {}) {\n const { imports = [], css } = entry;\n const cacheKey = `${entry.file || imports.join(\",\")}:${type}`;\n const cached = collectImportsCache.get(cacheKey);\n if (cached) return cached;\n if (collectImportsInFlight.has(cacheKey)) return [];\n collectImportsInFlight.add(cacheKey);\n const result = [\n ...new Set(\n [\n ...type === \"js\" ? imports : css || [],\n ...imports.flatMap((name) => {\n const found = vxrnOutput.clientManifest[name];\n if (!found) {\n console.warn(`No found imports`, name, vxrnOutput.clientManifest);\n }\n return collectImports(found, { type });\n })\n ].flat().filter((x) => x && (type === \"css\" || x.endsWith(\".js\"))).map(\n (x) => type === \"css\" ? x : x.startsWith(\"assets/\") ? x : `assets/${x.slice(1)}`\n )\n )\n ];\n collectImportsInFlight.delete(cacheKey);\n collectImportsCache.set(cacheKey, result);\n return result;\n };\n if (!foundRoute.file) {\n continue;\n }\n const routeModulePath = normalizePath(\n join(resolve(process.cwd(), options.root), routerRoot, foundRoute.file.slice(2))\n );\n const serverFileName = moduleIdToServerChunk.get(routeModulePath);\n if (!serverFileName) {\n if (foundRoute.type === \"spa\") {\n throw new Error(\n `[one] No build-only server chunk for SPA route: ${foundRoute.file}`\n );\n }\n console.warn(`[one] No server chunk found for route: ${foundRoute.file}`);\n continue;\n }\n const onlyBuild = vxrnOutput.buildArgs?.only;\n if (onlyBuild) {\n const relativeId2 = foundRoute.file.slice(1);\n if (!MicroMatch.contains(relativeId2, onlyBuild)) {\n continue;\n }\n }\n const clientChunk = clientChunksBySource.get(routeModulePath);\n const manifestKey = `${routerRoot}${foundRoute.file.slice(1)}`;\n const clientManifestEntry = vxrnOutput.clientManifest[manifestKey] ?? (clientChunk ? clientManifestByFile.get(clientChunk.fileName) : void 0);\n if (!clientChunk && foundRoute.type !== \"spa\" && foundRoute.type !== \"ssg\") {\n console.warn(`No client chunk found for route: ${routeModulePath}`);\n continue;\n }\n foundRoute.loaderServerPath = serverFileName;\n const relativeId = foundRoute.file.replace(/^\\.\\//, \"/\");\n if (foundRoute.layouts) {\n for (const layout of foundRoute.layouts) {\n const serverPath = layoutServerPaths.get(layout.contextKey);\n if (serverPath) {\n layout.loaderServerPath = serverPath;\n }\n }\n }\n const entryImports = collectImports(clientManifestEntry || {});\n const layoutEntries = foundRoute.layouts?.flatMap((layout) => {\n const clientKey = `${routerRoot}${layout.contextKey.slice(1)}`;\n const found = vxrnOutput.clientManifest[clientKey];\n return found ? found : [];\n }) ?? [];\n const layoutImports = layoutEntries.flatMap((entry) => {\n return [entry.file, ...collectImports(entry)];\n });\n const routePreloads = {};\n const rootLayoutKey = `${routerRoot}/_layout.tsx`;\n const rootLayoutEntry = vxrnOutput.clientManifest[rootLayoutKey];\n if (rootLayoutEntry) {\n routePreloads[`/${rootLayoutKey}`] = `/${rootLayoutEntry.file}`;\n }\n if (foundRoute.layouts) {\n for (const layout of foundRoute.layouts) {\n const clientKey = `${routerRoot}${layout.contextKey.slice(1)}`;\n const entry = vxrnOutput.clientManifest[clientKey];\n if (entry) {\n routePreloads[`/${clientKey}`] = `/${entry.file}`;\n }\n }\n }\n const routeChunkFile = clientChunk?.fileName ?? clientManifestEntry?.file;\n if (routeChunkFile) {\n routePreloads[`/${routerRoot}${foundRoute.file.slice(1)}`] = `/${routeChunkFile}`;\n }\n const preloadSetupFilePreloads = (() => {\n if (!oneOptions.setupFile) return [];\n const clientSetupFile = typeof oneOptions.setupFile === \"string\" ? oneOptions.setupFile : oneOptions.setupFile.client;\n if (!clientSetupFile) return [];\n const needle = clientSetupFile.replace(/^\\.\\//, \"\");\n for (const file in vxrnOutput.clientManifest) {\n if (file === needle) {\n const entry = vxrnOutput.clientManifest[file];\n return [\n entry.file\n // getting 404s for preloading the imports as well?\n // ...(entry.imports as string[])\n ];\n }\n }\n return [];\n })();\n const allPreloads = [\n .../* @__PURE__ */ new Set([\n ...preloadSetupFilePreloads,\n // add the route entry js (like ./app/index.ts) - prefer direct chunk lookup\n ...clientChunk ? [clientChunk.fileName] : clientManifestEntry ? [clientManifestEntry.file] : [],\n // add the virtual entry\n vxrnOutput.clientManifest[\"virtual:one-entry\"].file,\n ...entryImports,\n ...layoutImports\n ])\n ].map((path) => `/${path}`);\n const scriptLoadingMode = oneOptions.web?.experimental_scriptLoading;\n const useDeferredLoading = scriptLoadingMode === \"defer-non-critical\";\n const useAggressiveLCP = scriptLoadingMode === \"after-lcp-aggressive\";\n const needsSeparatedPreloads = useDeferredLoading || useAggressiveLCP;\n const criticalPreloads = needsSeparatedPreloads ? [\n .../* @__PURE__ */ new Set([\n ...preloadSetupFilePreloads,\n // add the virtual entry (framework bootstrap)\n vxrnOutput.clientManifest[\"virtual:one-entry\"].file,\n // add the route entry js (like ./app/index.ts) - prefer direct chunk lookup\n ...clientChunk ? [clientChunk.fileName] : clientManifestEntry ? [clientManifestEntry.file] : [],\n // add layout files (but not their deep imports)\n ...layoutEntries.map((entry) => entry.file)\n ])\n ].map((path) => `/${path}`) : void 0;\n const deferredPreloads = needsSeparatedPreloads ? [\n .../* @__PURE__ */ new Set([\n ...entryImports,\n ...layoutEntries.flatMap((entry) => collectImports(entry))\n ])\n ].filter((path) => !criticalPreloads.includes(`/${path}`)).map((path) => `/${path}`) : void 0;\n const preloads2 = needsSeparatedPreloads ? [...criticalPreloads, ...deferredPreloads] : allPreloads;\n const allEntries = [clientManifestEntry, ...layoutEntries].filter(Boolean);\n const layoutCSS = [\n ...new Set(\n layoutEntries.flatMap((entry) => collectImports(entry, { type: \"css\" })).map((path) => `/${path}`)\n )\n ];\n const allCSS = [\n .../* @__PURE__ */ new Set([\n ...layoutCSS,\n // css from page entry\n ...clientManifestEntry ? collectImports(clientManifestEntry, { type: \"css\" }).map((path) => `/${path}`) : [],\n // root-level css for cssCodeSplit: false (vite emits a single\n // top-level `style.css` entry whose `src` equals `style.css`). when\n // cssCodeSplit is true (default), the manifest also contains a\n // per-component css entry for every chunk that ships any css — those\n // are owned by their JS chunk and must NOT be injected globally, or\n // every SSG page ends up preloading every css chunk in the project\n // (the prod /download was loading 23 stylesheets with editor/IDE\n // chunks despite being a marketing route).\n ...Object.entries(vxrnOutput.clientManifest).filter(([key, entry]) => {\n if (!key.endsWith(\".css\")) return false;\n const src = entry.src;\n return src === \"style.css\";\n }).map(([, entry]) => `/${entry.file}`)\n ])\n ];\n const hasCriticalCSS = allCSS.some((p) => criticalCSSOutputPaths.has(p));\n const needsCSSContents = oneOptions.web?.inlineLayoutCSS || hasCriticalCSS;\n let allCSSContents;\n if (needsCSSContents) {\n allCSSContents = await Promise.all(\n allCSS.map(async (cssPath) => {\n if (!oneOptions.web?.inlineLayoutCSS && !criticalCSSOutputPaths.has(cssPath)) {\n return \"\";\n }\n const cached = cssFileContentsCache.get(cssPath);\n if (cached !== void 0) return cached;\n const filePath = join(clientDir, cssPath);\n try {\n const content = await FSExtra.readFile(filePath, \"utf-8\");\n cssFileContentsCache.set(cssPath, content);\n return content;\n } catch (err) {\n console.warn(`[one] Warning: Could not read CSS file ${filePath}`);\n cssFileContentsCache.set(cssPath, \"\");\n return \"\";\n }\n })\n );\n }\n if (process.env.DEBUG) {\n console.info(\"[one] building routes\", {\n foundRoute,\n layoutEntries,\n allEntries,\n allCSS\n });\n }\n const serverJsPath = posix.join(outDir, \"server\", serverFileName);\n let exported;\n try {\n exported = await getRouteExports(\n vxrnOutput.serverEntry,\n routerRoot,\n foundRoute.file\n );\n } catch (err) {\n console.error(`Error importing page (original error)`, err);\n throw new Error(`Error importing page: ${foundRoute.file}`, {\n cause: err\n });\n }\n foundRoute.hasLoader = typeof exported.loader === \"function\";\n const isDynamic = !!Object.keys(foundRoute.routeKeys).length;\n if (foundRoute.type === \"ssg\" && isDynamic && !foundRoute.page.includes(\"+not-found\") && !foundRoute.page.includes(\"_sitemap\") && !exported.generateStaticParams) {\n throw new Error(`[one] Error: Missing generateStaticParams\n\n Route ${foundRoute.page} of type ${foundRoute.type} must export generateStaticParams so build can complete.\n\n See docs on generateStaticParams:\n https://onestack.dev/docs/routing-exports#generatestaticparams\n\n`);\n }\n const paramsList = await exported.generateStaticParams?.() ?? [{}];\n console.info(`\n [build] page ${relativeId} (with ${paramsList.length} routes)\n`);\n if (process.env.DEBUG) {\n console.info(`paramsList`, JSON.stringify(paramsList, null, 2));\n }\n const routeSitemapExport = exported.sitemap;\n const isAfterLCPMode = scriptLoadingMode === \"after-lcp\" || scriptLoadingMode === \"after-lcp-aggressive\";\n const useAfterLCP = foundRoute.type === \"ssg\" && isAfterLCPMode;\n const useAfterLCPAggressive = foundRoute.type === \"ssg\" && scriptLoadingMode === \"after-lcp-aggressive\";\n const shouldCollectSitemap = foundRoute.type !== \"api\" && foundRoute.type !== \"layout\" && !foundRoute.isNotFound && !foundRoute.page.includes(\"+not-found\") && !foundRoute.page.includes(\"_sitemap\");\n const pageBuilds = paramsList.map((params) => {\n const path = getPathnameFromFilePath(relativeId, params, foundRoute.type === \"ssg\");\n if (workerPool) {\n console.info(` \\u21A6 route ${path}`);\n return workerPool.buildPage({\n serverEntry: vxrnOutput.serverEntry,\n routerRoot,\n path,\n relativeId,\n params,\n foundRoute,\n clientManifestEntry,\n staticDir,\n clientDir,\n builtMiddlewares,\n serverJsPath,\n preloads: preloads2,\n allCSS,\n layoutCSS,\n routePreloads,\n allCSSContents,\n criticalPreloads,\n deferredPreloads,\n useAfterLCP,\n useAfterLCPAggressive\n }).then((built) => ({ built, path }));\n }\n return limit(async () => {\n console.info(` \\u21A6 route ${path}`);\n const built = await runWithAsyncLocalContext(async () => {\n return await buildPage(\n vxrnOutput.serverEntry,\n routerRoot,\n path,\n relativeId,\n params,\n foundRoute,\n clientManifestEntry,\n staticDir,\n clientDir,\n builtMiddlewares,\n serverJsPath,\n preloads2,\n allCSS,\n layoutCSS,\n routePreloads,\n allCSSContents,\n criticalPreloads,\n deferredPreloads,\n useAfterLCP,\n useAfterLCPAggressive\n );\n });\n return { built, path };\n });\n });\n const results = await Promise.all(pageBuilds);\n for (const { built, path } of results) {\n builtRoutes.push(built);\n if (shouldCollectSitemap) {\n sitemapData.push({\n path,\n routeExport: routeSitemapExport\n });\n }\n }\n }\n if (workerPool) {\n await terminateWorkerPool();\n }\n const staticTime = performance.now() - staticStartTime;\n console.info(\n `\n \\u23F1\\uFE0F static routes: ${(staticTime / 1e3).toFixed(2)}s (${builtRoutes.length} pages)\n`\n );\n printBuildTimings();\n await moveAllFiles(staticDir, clientDir);\n await FSExtra.remove(staticDir);\n const routeMap = {};\n const routeToBuildInfo = {};\n const pathToRoute = {};\n const preloads = {};\n const cssPreloads = {};\n const loaders = {};\n let cssContentsByPath;\n for (const route of builtRoutes) {\n if (!route.cleanPath.includes(\"*\")) {\n routeMap[route.cleanPath] = route.htmlPath;\n }\n const {\n // dont include loaderData it can be huge\n loaderData: _loaderData,\n cssContents,\n ...rest\n } = route;\n if (cssContents) {\n const contentsByPath = cssContentsByPath ||= {};\n route.css.forEach((cssPath, index) => {\n const content = cssContents[index];\n if (content) contentsByPath[cssPath] = content;\n });\n }\n routeToBuildInfo[route.routeFile] = rest;\n for (const p of getCleanPaths([route.path, route.cleanPath])) {\n pathToRoute[p] = route.routeFile;\n }\n preloads[route.preloadPath] = true;\n cssPreloads[route.cssPreloadPath] = true;\n loaders[route.loaderPath] = true;\n }\n function createBuildManifestRoute(route) {\n const { layouts, ...built } = route;\n if (layouts?.length) {\n ;\n built.layouts = layouts.map((layout) => ({\n contextKey: layout.contextKey,\n loaderServerPath: layout.loaderServerPath\n }));\n }\n const buildInfo = builtRoutes.find((x) => x.routeFile === route.file);\n if (built.middlewares) {\n for (const [index, mw] of built.middlewares.entries()) {\n const viaBuildInfo = buildInfo?.middlewares?.[index];\n if (viaBuildInfo) {\n mw.contextKey = viaBuildInfo;\n continue;\n }\n const viaMiddlewareMap = builtMiddlewares[mw.contextKey];\n if (viaMiddlewareMap) {\n mw.contextKey = viaMiddlewareMap;\n }\n }\n }\n if (buildInfo) {\n built.loaderPath = buildInfo.loaderPath;\n }\n return built;\n }\n const buildInfoForWriting = {\n outDir,\n oneOptions,\n routeToBuildInfo,\n cssContentsByPath,\n pathToRoute,\n manifest: {\n pageRoutes: manifest.pageRoutes.map(createBuildManifestRoute),\n apiRoutes: manifest.apiRoutes.map(createBuildManifestRoute),\n allRoutes: manifest.allRoutes.map(createBuildManifestRoute)\n },\n routeMap,\n constants: JSON.parse(JSON.stringify({ ...constants })),\n preloads,\n cssPreloads,\n loaders,\n useRolldown: await isRolldown()\n };\n await writeJSON(toAbsolute(`${outDir}/buildInfo.json`), buildInfoForWriting);\n await writeBuildOutputPointer(outDir);\n await FSExtra.writeFile(\n join(clientDir, \"version.json\"),\n JSON.stringify({ version: constants.CACHE_KEY })\n );\n console.info(`\n \\u{1F6E1} skew protection: emitted version.json\n`);\n const sitemapConfig = oneOptions.web?.sitemap;\n if (sitemapConfig) {\n const sitemapOptions = typeof sitemapConfig === \"boolean\" ? {} : sitemapConfig;\n const sitemapXml = generateSitemap(sitemapData, sitemapOptions);\n const sitemapPath = join(clientDir, \"sitemap.xml\");\n await FSExtra.writeFile(sitemapPath, sitemapXml);\n console.info(`\n \\u{1F4C4} generated sitemap.xml (${sitemapData.length} URLs)\n`);\n }\n const postBuildLogs = [];\n const platform = deployConfig?.target;\n if (platform) {\n postBuildLogs.push(`[one.build] platform ${platform}`);\n }\n switch (platform) {\n case \"vercel\": {\n const vercelJsonPath = join(options.root, \"vercel.json\");\n if (FSExtra.existsSync(vercelJsonPath)) {\n try {\n const vercelConfig = JSON.parse(FSExtra.readFileSync(vercelJsonPath, \"utf-8\"));\n if (!vercelConfig.cleanUrls) {\n console.warn(`\n \\u26A0\\uFE0F Warning: Your vercel.json is missing \"cleanUrls\": true`);\n console.warn(` Without this, direct navigation to SSG pages will 404.`);\n console.warn(` Add \"cleanUrls\": true to your vercel.json to fix this.\n`);\n }\n } catch {\n }\n }\n await buildVercelOutputDirectory({\n apiOutput,\n buildInfoForWriting,\n clientDir,\n oneOptionsRoot: options.root,\n postBuildLogs\n });\n break;\n }\n case \"cloudflare\": {\n const workerSrcDir = join(options.root, outDir);\n const getWorkerSourceImportPath = (routeFile) => {\n const importPath = normalizePath(\n relative(workerSrcDir, join(options.root, routerRoot, routeFile))\n );\n return importPath.startsWith(\".\") ? importPath : `./${importPath}`;\n };\n const apiRouteMap = [];\n const middlewareRouteMap = [];\n for (const route of buildInfoForWriting.manifest.apiRoutes) {\n if (route.file) {\n const importPath = getWorkerSourceImportPath(route.file);\n apiRouteMap.push(` '${route.page}': () => import('${importPath}')`);\n }\n }\n for (const [sourceFile, builtPath] of Object.entries(builtMiddlewares)) {\n const importPath = getWorkerSourceImportPath(sourceFile);\n middlewareRouteMap.push(` '${builtPath}': () => import('${importPath}')`);\n }\n const workerSrcPath = join(options.root, outDir, \"_worker-src.js\");\n const workerCode = `// Polyfill MessageChannel for React SSR (not available in Cloudflare Workers by default)\nif (typeof MessageChannel === 'undefined') {\n globalThis.MessageChannel = class MessageChannel {\n constructor() {\n this.port1 = { postMessage: () => {}, onmessage: null, close: () => {} }\n this.port2 = { postMessage: () => {}, onmessage: null, close: () => {} }\n }\n }\n}\n\nimport { serve, setFetchStaticHtml, withRange } from 'one/serve-worker'\n\n// Lazy import map - modules load on-demand when route is matched\nconst lazyRoutes = {\n serverEntry: () => import('./server/_virtual_one-entry.js'),\n api: {\n${apiRouteMap.join(\",\\n\")}\n },\n middlewares: {\n${middlewareRouteMap.join(\",\\n\")}\n }\n}\n\nconst buildInfo = ${JSON.stringify(buildInfoForWriting)}\n\nlet server\n\nexport default {\n async fetch(request, env, ctx) {\n if (!server) {\n server = await serve(buildInfo, lazyRoutes)\n }\n\n // set up static HTML fetcher for this request (uses ASSETS binding)\n if (env.ASSETS) {\n setFetchStaticHtml(async (path) => {\n try {\n const url = new URL(request.url)\n url.pathname = path\n const assetResponse = await env.ASSETS.fetch(new Request(url))\n if (assetResponse && assetResponse.ok) {\n return await assetResponse.text()\n }\n } catch (e) {\n // asset not found\n }\n return null\n })\n }\n\n try {\n const response = await server.fetch(request, env, ctx)\n\n // no route matched or 404 \\u2192 try static assets\n if (!response || response.status === 404) {\n if (env.ASSETS) {\n try {\n const assetResponse = await env.ASSETS.fetch(request)\n if (assetResponse && assetResponse.status !== 404) {\n return await withRange(request, assetResponse)\n }\n } catch (e) {\n // asset not found, continue with original response\n }\n }\n }\n\n return response\n } finally {\n setFetchStaticHtml(null)\n }\n }\n}\n`;\n await FSExtra.writeFile(workerSrcPath, workerCode);\n const projectName = await getCloudflareProjectName(options.root);\n const userWranglerConfig = await loadUserWranglerConfig(options.root);\n const wranglerInputConfig = createCloudflareWranglerConfig(\n projectName,\n userWranglerConfig?.config\n );\n wranglerInputConfig.main = normalizePath(\n relative(join(options.root, outDir), workerSrcPath)\n );\n const wranglerInputPath = join(options.root, outDir, \"_wrangler.input.jsonc\");\n await FSExtra.writeFile(\n wranglerInputPath,\n `${JSON.stringify(wranglerInputConfig, null, 2)}\n`\n );\n const ssrExternal = viteLoadedConfig?.config?.ssr?.external;\n const workerExternals = Array.isArray(ssrExternal) ? ssrExternal : [];\n console.info(\"\\n [cloudflare] Bundling worker...\");\n const { cloudflare } = await import(\"@cloudflare/vite-plugin\");\n const builder = await createBuilder({\n root: options.root,\n mode: \"production\",\n logLevel: \"warn\",\n configFile: false,\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"production\"),\n \"process.env.VITE_ENVIRONMENT\": JSON.stringify(\"ssr\"),\n \"process.env.ONE_CACHE_KEY\": JSON.stringify(constants.CACHE_KEY)\n },\n plugins: [\n // the cloudflare worker IS a server, but this build runs with\n // configFile:false so the user vite.config (where the user-level\n // `one()` plugin registers environmentGuardPlugin via vite.config)\n // doesn't apply. register the guard plugin directly here so\n // `import 'server-only'` resolves to an empty module in the\n // worker bundle instead of inlining the package's throwing\n // index.js — which would crash the deployed worker on the first\n // /api request that loads any server-only-importing module.\n environmentGuardPlugin(oneOptions.environmentGuards),\n cloudflare({\n configPath: wranglerInputPath,\n viteEnvironment: { name: \"worker\" }\n })\n ],\n resolve: {\n alias: [\n // rolldown can't parse react-native's Flow syntax; alias to react-native-web for ssr\n {\n find: /^react-native\\/Libraries\\/.*/,\n replacement: resolvePath(\"@vxrn/vite-plugin-metro/empty\", options.root)\n },\n {\n // react native 0.87 removed @react-native/assets-registry, but libraries\n // like react-native-svg still import its registry\n find: /^(react-native\\/asset-registry|@react-native\\/assets-registry\\/registry)$/,\n replacement: \"react-native-web/dist/modules/AssetRegistry\"\n },\n {\n find: \"react-native/package.json\",\n replacement: \"react-native-web/package.json\"\n },\n {\n find: \"react-native\",\n replacement: \"react-native-web\"\n },\n ...Object.entries(absorbedPackageAliases(options.root, \"web\")).map(\n ([find, replacement]) => ({ find, replacement })\n )\n ],\n // the aliases name react-native-web by package, so it resolves from\n // the app root only once something imports react-native: an app\n // with no react-native imports needs no react-native-web.\n dedupe: [\"react-native-web\"]\n },\n build: {\n outDir,\n emptyOutDir: false,\n rolldownOptions: {\n // packages the app keeps out of its ssr bundle (native bindings\n // used only by build-time loaders) stay out of the worker too\n external: workerExternals,\n // Match the main web build behavior so RN packages that import\n // native-only symbols from react-native can still bundle against\n // the react-native-web alias in the worker graph.\n shimMissingExports: true,\n // cloudflare's module worker can contain circular shared chunks\n // when one package is used by both browser-facing SSR code and API\n // routes. preserve source import order so a dependent chunk cannot\n // evaluate against partially initialized exports.\n output: {\n strictExecutionOrder: true\n }\n }\n }\n });\n const workerEnv = builder.environments.worker;\n if (!workerEnv) {\n throw new Error('[one] plugin did not register \"worker\" environment');\n }\n await builder.build(workerEnv);\n await FSExtra.remove(workerSrcPath);\n await FSExtra.remove(wranglerInputPath);\n await finalizeCloudflareWranglerDeployConfig(\n join(options.root, outDir, \"worker\", \"wrangler.json\")\n );\n if (userWranglerConfig) {\n console.info(\n ` [cloudflare] Merging ${relative(options.root, userWranglerConfig.path)} into ${outDir}/worker/wrangler.json`\n );\n }\n postBuildLogs.push(`Cloudflare worker bundled at ${outDir}/worker/index.js`);\n postBuildLogs.push(`To deploy: wrangler deploy`);\n break;\n }\n }\n const securityScanOption = oneOptions.build?.securityScan;\n const securityScanLevel = securityScanOption === false ? null : securityScanOption === true || securityScanOption === void 0 ? \"warn\" : typeof securityScanOption === \"string\" ? securityScanOption : securityScanOption.level ?? \"warn\";\n const securitySafePatterns = typeof securityScanOption === \"object\" && securityScanOption !== null ? securityScanOption.safePatterns : void 0;\n if (securityScanLevel) {\n const { runSecurityScan } = await import(\"./securityScan\");\n const passed = await runSecurityScan(\n clientDir,\n securityScanLevel,\n securitySafePatterns\n );\n if (!passed) {\n process.exit(1);\n }\n }\n if (postBuildLogs.length) {\n console.info(`\n\n`);\n postBuildLogs.forEach((log) => {\n console.info(` \\xB7 ${log}`);\n });\n }\n console.info(`\n \\u{1F49B} build complete\n`);\n}\nconst TRAILING_INDEX_REGEX = /\\/index(\\.(web))?/;\nfunction getCleanPaths(possiblePaths) {\n return Array.from(\n new Set(\n Array.from(new Set(possiblePaths)).flatMap((p) => {\n const paths = [p];\n if (p.match(TRAILING_INDEX_REGEX)) {\n const pathWithTrailingIndexRemoved = p.replace(TRAILING_INDEX_REGEX, \"\");\n paths.push(pathWithTrailingIndexRemoved);\n paths.push(pathWithTrailingIndexRemoved + \"/\");\n }\n return paths;\n })\n )\n );\n}\nasync function moveAllFiles(src, dest) {\n try {\n await FSExtra.copy(src, dest, { overwrite: true, errorOnExist: false });\n } catch (err) {\n console.error(\"Error moving files:\", err);\n }\n}\nexport {\n build\n};\n//# sourceMappingURL=build.js.map\n"],"mappings":"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"}