UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

1 lines • 45 kB
{"version":3,"file":"one.js","names":[],"sources":["esm/vite/one.js"],"sourcesContent":["import { configureVXRNCompilerPlugin } from \"@vxrn/compiler\";\nimport { resolvePath } from \"@vxrn/resolve\";\nimport { getPlatformEnvDefine } from \"@vxrn/vite-plugin-metro\";\nimport events from \"node:events\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { exactRegex } from \"rolldown/filter\";\nimport { normalizePath } from \"vite\";\nimport {\n autoDepOptimizePlugin,\n getOptionsFilled,\n loadEnv,\n nearestPackageJson,\n backgroundComputationPlugin,\n workletImportsPlugin\n} from \"vxrn\";\nimport vxrnVitePlugin from \"vxrn/vite-plugin\";\nimport { CACHE_KEY } from \"../constants\";\nimport { getViteMetroPluginOptions } from \"../metro-config/getViteMetroPluginOptions\";\nimport { setServerGlobals } from \"../server/setServerGlobals\";\nimport { getRouterRootFromOneOptions } from \"../utils/getRouterRootFromOneOptions\";\nimport { createRouteIndex } from \"../utils/routeIndex\";\nimport { absorbedPackageAliases } from \"../utils/absorbedPackages\";\nimport { ensureTSConfig } from \"./ensureTsConfig\";\nimport { setOneOptions } from \"./loadConfig\";\nimport { resolveNativeBundler } from \"./nativeBundler\";\nimport { bundledDevPlugin } from \"./plugins/bundledDevPlugin\";\nimport { clientTreeShakePlugin } from \"./plugins/clientTreeShakePlugin\";\nimport { createDevtoolsPlugin } from \"./plugins/devtoolsPlugin\";\nimport { createFileSystemRouterPlugin } from \"./plugins/fileSystemRouterPlugin\";\nimport { fixDependenciesPlugin } from \"./plugins/fixDependenciesPlugin\";\nimport { generateFileSystemRouteTypesPlugin } from \"./plugins/generateFileSystemRouteTypesPlugin\";\nimport { criticalCSSPlugin } from \"./plugins/criticalCSSPlugin\";\nimport { imageDataPlugin } from \"./plugins/imageDataPlugin\";\nimport { createRouteModuleHmrPlugin } from \"./plugins/routeModuleHmrPlugin\";\nimport { sourceInspectorPlugin } from \"./plugins/sourceInspectorPlugin\";\nimport { swiftPackagePlugin } from \"./plugins/swiftPackagePlugin\";\nimport { kotlinSourcePlugin } from \"./plugins/kotlinSourcePlugin\";\nimport { SSRCSSPlugin } from \"./plugins/SSRCSSPlugin\";\nimport { virtualEntryId } from \"./plugins/virtualEntryConstants\";\nimport { createVirtualEntry } from \"./plugins/virtualEntryPlugin\";\nimport { environmentGuardPlugin } from \"./plugins/environmentGuardPlugin\";\nimport { shouldEnableWorkerdDev } from \"./cloudflareWranglerConfig\";\nconst RN_DEEP_IMPORT_RE = /^react-native\\/Libraries\\/|react-native-web(-lite)?\\/.*\\/Libraries\\//;\nevents.setMaxListeners(1e3);\nglobalThis.__vxrnEnableNativeEnv = true;\nfunction one(options = {}) {\n setServerGlobals();\n const routerRoot = getRouterRootFromOneOptions(options);\n const nativeDisabled = options.native === false;\n const nativeOptions = options.native === false ? void 0 : options.native;\n const nativeAppName = nativeOptions?.app?.name || nativeOptions?.key;\n const nativeApp = nativeOptions?.app;\n const nativeAppVersion = nativeApp?.version;\n if (nativeDisabled) {\n globalThis.__vxrnEnableNativeEnv = false;\n }\n const metroOptions = (() => {\n if (nativeDisabled) return null;\n if (resolveNativeBundler({ bundler: nativeOptions?.bundler }) !== \"metro\") {\n const dropped = nativeOptions?.bundlerOptions;\n if (dropped?.babelConfig || dropped?.babelConfigOverrides) {\n console.warn(\n `[one] native.bundlerOptions configures babel plugins, but native.bundler is \"${nativeOptions?.bundler}\", which runs no babel. Those plugins will not run and whatever they were rewriting will reach the bundle untransformed.`\n );\n }\n return null;\n }\n if (process.env.ONE_METRO_MODE) {\n console.info(\"ONE_METRO_MODE environment variable is set, enabling Metro mode\");\n }\n const routerRoot2 = getRouterRootFromOneOptions(options);\n const defaultMetroOptions = getViteMetroPluginOptions({\n projectRoot: nativeOptions?.bundlerOptions?.argv?.projectRoot || process.cwd(),\n relativeRouterRoot: routerRoot2,\n ignoredRouteFiles: options.router?.ignoredRouteFiles,\n linking: options.router?.linking,\n userDefaultConfigOverrides: nativeOptions?.bundlerOptions?.defaultConfigOverrides,\n setupFile: options.setupFile\n });\n const userMetroOptions = nativeOptions?.bundlerOptions;\n const babelConfig = {\n ...defaultMetroOptions?.babelConfig,\n ...userMetroOptions?.babelConfig\n };\n return {\n ...defaultMetroOptions,\n ...userMetroOptions,\n defaultConfigOverrides: defaultMetroOptions?.defaultConfigOverrides,\n // defaultConfigOverrides is merged by getViteMetroPluginOptions, so we need to set it here again.\n argv: {\n ...defaultMetroOptions?.argv,\n ...userMetroOptions?.argv\n },\n babelConfig: {\n ...babelConfig,\n plugins: [\n ...babelConfig.plugins || [],\n ...options.react?.compiler === true || options.react?.compiler === \"native\" ? [\"babel-plugin-react-compiler\"] : []\n ]\n },\n mainModuleName: \"one/metro-entry\",\n // allow env var to enable lazy startup\n startup: process.env.ONE_METRO_LAZY ? \"lazy\" : userMetroOptions?.startup\n };\n })();\n const vxrnPlugins = [];\n if (!process.env.IS_VXRN_CLI) {\n console.warn(\"Experimental: running VxRN as a Vite plugin. This is not yet stable.\");\n vxrnPlugins.push(\n vxrnVitePlugin({\n metro: metroOptions,\n disableNative: nativeDisabled\n })\n );\n } else {\n if (!globalThis.__oneOptions) {\n setOneOptions(options);\n globalThis[\"__vxrnPluginConfig__\"] = options;\n globalThis[\"__vxrnMetroOptions__\"] = metroOptions;\n return [];\n }\n }\n if (options.config?.ensureTSConfig !== false) {\n void ensureTSConfig();\n }\n const vxrnOptions = getOptionsFilled();\n const root = vxrnOptions?.root || process.cwd();\n const compiler = options.react?.compiler;\n if (compiler) {\n configureVXRNCompilerPlugin({\n enableCompiler: (\n // pass through object config, regex, or function directly\n typeof compiler === \"object\" || typeof compiler === \"function\" ? compiler : compiler === \"native\" ? [\"ios\", \"android\"] : compiler === \"web\" ? [\"ssr\", \"client\"] : true\n )\n });\n }\n const autoDepsOptions = options.ssr?.autoDepsOptimization;\n const dedupeSymlinks = options.ssr?.dedupeSymlinkedModules ?? false;\n let ssrDedup_optimizedPackages = null;\n let ssrDedup_projectRoot = \"\";\n const ssrSymlinkDedupPlugin = {\n name: \"one:ssr-symlink-dedup\",\n enforce: \"pre\",\n configResolved(config) {\n if (!dedupeSymlinks) return;\n ssrDedup_projectRoot = config.root || process.cwd();\n const ssrInclude = config.ssr?.optimizeDeps?.include;\n if (!ssrInclude?.length) return;\n ssrDedup_optimizedPackages = /* @__PURE__ */ new Set();\n for (const entry of ssrInclude) {\n if (entry.startsWith(\"@\")) {\n const parts = entry.split(\"/\");\n ssrDedup_optimizedPackages.add(`${parts[0]}/${parts[1]}`);\n } else {\n ssrDedup_optimizedPackages.add(entry.split(\"/\")[0]);\n }\n }\n },\n async resolveId(source, importer, options2) {\n if (!dedupeSymlinks) return;\n if (source[0] === \".\" || source[0] === \"/\") return;\n let pkgName;\n let subpath = null;\n if (source.startsWith(\"@\")) {\n const parts = source.split(\"/\");\n pkgName = parts.length >= 2 ? `${parts[0]}/${parts[1]}` : source;\n if (parts.length > 2) subpath = `./${parts.slice(2).join(\"/\")}`;\n } else {\n const parts = source.split(\"/\");\n pkgName = parts[0];\n if (parts.length > 1) subpath = `./${parts.slice(1).join(\"/\")}`;\n }\n const resolved = await this.resolve(source, importer, {\n ...options2,\n skipSelf: true\n });\n if (!resolved?.id) return;\n if (resolved.id.includes(\"/node_modules/\")) return;\n const path2 = await import(\"node:path\");\n const fs = await import(\"node:fs\");\n const { join, dirname } = path2;\n const { realpathSync, existsSync: existsSync2, readFileSync: readFileSync2 } = fs;\n let dir = ssrDedup_projectRoot;\n while (dir !== dirname(dir)) {\n const nmPkgDir = join(dir, \"node_modules\", pkgName);\n if (existsSync2(nmPkgDir)) {\n if (subpath) {\n try {\n const pkg = JSON.parse(readFileSync2(join(nmPkgDir, \"package.json\"), \"utf8\"));\n const exportEntry = pkg.exports?.[subpath];\n if (exportEntry && typeof exportEntry === \"object\") {\n const target = exportEntry.import || exportEntry.module || exportEntry.default;\n if (target) {\n const fullPath = join(nmPkgDir, target);\n if (existsSync2(fullPath))\n return { id: normalizePath(fullPath), external: resolved.external };\n }\n }\n } catch {\n }\n }\n const realPkgDir = normalizePath(realpathSync(nmPkgDir));\n if (resolved.id.startsWith(realPkgDir)) {\n const relativePart = resolved.id.slice(realPkgDir.length);\n return {\n id: normalizePath(nmPkgDir) + relativePart,\n external: resolved.external\n };\n }\n break;\n }\n dir = dirname(dir);\n }\n }\n };\n const withAbsorbedAliases = (alias) => {\n const root2 = process.cwd();\n return {\n ...alias,\n native: { ...absorbedPackageAliases(root2, \"native\"), ...alias?.native }\n };\n };\n const createAliasPlugin = (alias, nativePlatform) => {\n const resolveMap = (map) => {\n if (!map) return null;\n const out = {};\n for (const [key, value] of Object.entries(map)) {\n try {\n out[key] = path.isAbsolute(value) ? value : resolvePath(value);\n } catch {\n out[key] = value;\n }\n }\n return out;\n };\n const resolved = {\n web: resolveMap(alias.web),\n native: resolveMap(alias.native),\n client: resolveMap(alias.client),\n ssr: resolveMap(alias.ssr),\n ios: resolveMap(alias.ios),\n android: resolveMap(alias.android)\n };\n const aliasKeys = [\n ...new Set(Object.values(resolved).flatMap((m) => m ? Object.keys(m) : []))\n ];\n const aliasFilter = aliasKeys.length ? new RegExp(\n `^(?:${aliasKeys.map((k) => k.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")).join(\"|\")})$`\n ) : /(?!)/;\n return {\n name: \"one:alias\",\n enforce: \"pre\",\n // vite's dep optimizer resolves its include list without plugins, so the\n // absorbed packages also go in resolve.alias, which only web resolves with\n config: nativePlatform ? void 0 : () => ({\n resolve: {\n alias: Object.entries(absorbedPackageAliases(process.cwd(), \"web\")).map(\n ([name, replacement]) => ({ find: new RegExp(`^${name}$`), replacement })\n )\n }\n }),\n resolveId: {\n filter: { id: aliasFilter },\n handler(source) {\n const env = nativePlatform ?? this.environment?.name;\n const specific = env ? resolved[env] : null;\n if (specific && source in specific) {\n const id = specific[source];\n return {\n id,\n external: false,\n packageJsonPath: nearestPackageJson(id)\n };\n }\n const isWeb = !env || env === \"client\" || env === \"ssr\";\n const general = isWeb ? resolved.web : resolved.native;\n if (general && source in general) {\n const id = general[source];\n return {\n id,\n external: false,\n packageJsonPath: nearestPackageJson(id)\n };\n }\n }\n }\n };\n };\n const devAndProdPlugins = [\n {\n name: \"one:config\",\n __get: options\n },\n {\n name: \"one:env-prefix\",\n config(userConfig) {\n if (userConfig.envPrefix) return;\n return {\n envPrefix: [\"VITE_\", \"ONE_PUBLIC_\", \"EXPO_PUBLIC_\"]\n };\n }\n },\n bundledDevPlugin(!!options.web?.experimentalBundledDev),\n environmentGuardPlugin(options.environmentGuards),\n criticalCSSPlugin(),\n imageDataPlugin(),\n {\n name: \"one-define-client-env\",\n async config(userConfig, env) {\n const clientEnvDefine = options.skipEnv ? {} : (await loadEnv(\n vxrnOptions?.mode ?? userConfig?.mode ?? env?.mode ?? \"development\",\n process.cwd(),\n userConfig?.envPrefix\n )).clientEnvDefine;\n return {\n define: {\n ...clientEnvDefine,\n ...process.env.ONE_DEBUG_ROUTER && {\n \"process.env.ONE_DEBUG_ROUTER\": JSON.stringify(\n process.env.ONE_DEBUG_ROUTER\n )\n }\n }\n };\n }\n },\n ...autoDepsOptions === false ? [] : [\n autoDepOptimizePlugin({\n onScannedDeps({ hasReanimated, hasNativewind }) {\n configureVXRNCompilerPlugin({\n enableReanimated: hasReanimated,\n enableNativeCSS: nativeOptions?.css ?? hasNativewind,\n enableNativewind: hasNativewind\n });\n },\n root,\n include: /node_modules/,\n ...autoDepsOptions === true ? {} : autoDepsOptions\n })\n ],\n ...options.config?.tsConfigPaths === false ? [] : [\n (() => {\n let mappings = [];\n function loadMappings(resolvedRoot) {\n try {\n const configPath = path.resolve(resolvedRoot, \"tsconfig.json\");\n if (!existsSync(configPath)) return;\n const raw = readFileSync(configPath, \"utf-8\");\n const stripped = raw.replace(\n /\\\\\"|\"(?:\\\\\"|[^\"])*\"|(\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/)/g,\n (m, g) => g ? \"\" : m\n );\n const config = JSON.parse(stripped);\n const paths = config?.compilerOptions?.paths;\n const baseUrl = config?.compilerOptions?.baseUrl || \".\";\n if (!paths) return;\n for (const [pattern, targets] of Object.entries(\n paths\n )) {\n const target = targets[0];\n if (!target) continue;\n if (pattern.endsWith(\"/*\")) {\n const resolved = path.resolve(\n resolvedRoot,\n baseUrl,\n target.slice(0, -1)\n );\n mappings.push({\n prefix: pattern.slice(0, -1),\n replacement: resolved.endsWith(\"/\") ? resolved : resolved + \"/\",\n wildcard: true\n });\n } else {\n mappings.push({\n prefix: pattern,\n replacement: path.resolve(resolvedRoot, baseUrl, target),\n wildcard: false\n });\n }\n }\n } catch {\n }\n }\n loadMappings(root);\n const tsconfigPathsFilter = mappings.length ? new RegExp(\n mappings.map(\n (m) => `^${m.prefix.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")}${m.wildcard ? \"\" : \"$\"}`\n ).join(\"|\")\n ) : /^[^./]/;\n return {\n name: \"one:tsconfig-paths\",\n enforce: \"pre\",\n config() {\n return {\n resolve: { tsconfigPaths: true }\n };\n },\n configResolved(config) {\n if (mappings.length === 0) {\n loadMappings(config.root);\n }\n },\n resolveId: {\n filter: { id: tsconfigPathsFilter },\n handler(source) {\n const resolved = (id) => ({\n id,\n packageJsonPath: nearestPackageJson(id)\n });\n const jsExts = [\n \".ts\",\n \".tsx\",\n \".js\",\n \".jsx\",\n \".mts\",\n \".mjs\",\n \".cjs\",\n \".cts\"\n ];\n for (const m of mappings) {\n let candidate;\n if (m.wildcard) {\n if (source.startsWith(m.prefix)) {\n candidate = m.replacement + source.slice(m.prefix.length);\n }\n } else if (source === m.prefix) {\n candidate = m.replacement;\n }\n if (!candidate) continue;\n if (jsExts.includes(path.extname(candidate)))\n return resolved(candidate);\n for (const e of jsExts) {\n if (existsSync(candidate + e)) return resolved(candidate + e);\n }\n for (const e of jsExts) {\n if (existsSync(candidate + \"/index\" + e))\n return resolved(candidate + \"/index\" + e);\n }\n return resolved(candidate);\n }\n }\n }\n };\n })()\n ],\n createAliasPlugin(withAbsorbedAliases(options.alias)),\n {\n // rolldown fails on deep react-native/Libraries/* imports during dep pre-bundling.\n // these are native-only paths that don't exist in react-native-web.\n name: \"one:redirect-rn-deep-imports\",\n enforce: \"pre\",\n // rust-side filter matching the two source patterns below, so the ~24k\n // non-matching imports in a build never enter js at all\n resolveId: {\n filter: { id: RN_DEEP_IMPORT_RE },\n handler(source) {\n if (this.environment?.name === \"client\" || this.environment?.name === \"ssr\" || this.environment?.name === \"worker\") {\n return \"\\0rn-empty-module\";\n }\n }\n },\n load: {\n filter: { id: exactRegex(\"\\0rn-empty-module\") },\n handler() {\n return \"export default {}; export {};\";\n }\n }\n },\n {\n name: \"one-aliases\",\n enforce: \"pre\",\n config() {\n let tslibLitePath = \"\";\n try {\n tslibLitePath = resolvePath(\"@vxrn/tslib-lite\", process.cwd());\n } catch (err) {\n console.info(`Can't find tslib-lite, falling back to tslib`);\n if (process.env.DEBUG) {\n console.error(err);\n }\n }\n return {\n resolve: {\n alias: {\n // testing getting transition between routes working\n // 'use-sync-external-store/with-selector': resolvePath(\n // 'use-sync-external-store/shim/with-selector'\n // ),\n ...tslibLitePath && {\n tslib: tslibLitePath\n }\n }\n }\n };\n }\n },\n {\n name: \"one:init-config\",\n config() {\n const setupFileDefines = (() => {\n if (!options.setupFile) return {};\n let setupFiles;\n if (typeof options.setupFile === \"string\") {\n setupFiles = {\n client: options.setupFile,\n server: options.setupFile,\n ios: options.setupFile,\n android: options.setupFile\n };\n } else if (\"native\" in options.setupFile) {\n setupFiles = {\n client: options.setupFile.client,\n server: options.setupFile.server,\n ios: options.setupFile.native,\n android: options.setupFile.native\n };\n } else {\n setupFiles = options.setupFile;\n }\n return {\n ...setupFiles.client && {\n \"process.env.ONE_SETUP_FILE_CLIENT\": JSON.stringify(setupFiles.client)\n },\n ...setupFiles.server && {\n \"process.env.ONE_SETUP_FILE_SERVER\": JSON.stringify(setupFiles.server)\n },\n ...setupFiles.ios && {\n \"process.env.ONE_SETUP_FILE_IOS\": JSON.stringify(setupFiles.ios)\n },\n ...setupFiles.android && {\n \"process.env.ONE_SETUP_FILE_ANDROID\": JSON.stringify(setupFiles.android)\n }\n };\n })();\n const serverURL = process.env.ONE_SERVER_URL || vxrnOptions?.server.url;\n return {\n // Platform env defined at root level for client (workaround for Vite bug with environment.client.define)\n define: {\n ...getPlatformEnvDefine(\"client\"),\n ...setupFileDefines,\n ...options.web?.defaultRenderMode && {\n \"process.env.ONE_DEFAULT_RENDER_MODE\": JSON.stringify(\n options.web.defaultRenderMode\n ),\n \"import.meta.env.ONE_DEFAULT_RENDER_MODE\": JSON.stringify(\n options.web.defaultRenderMode\n )\n },\n ...process.env.NODE_ENV !== \"production\" && serverURL && {\n \"process.env.ONE_SERVER_URL\": JSON.stringify(serverURL),\n \"import.meta.env.ONE_SERVER_URL\": JSON.stringify(serverURL)\n },\n ...options.web?.linkPrefetch && {\n \"process.env.ONE_LINK_PREFETCH\": JSON.stringify(options.web.linkPrefetch)\n },\n ...options.web?.skewProtection !== void 0 && {\n \"process.env.ONE_SKEW_PROTECTION\": JSON.stringify(\n options.web.skewProtection === true ? \"true\" : options.web.skewProtection === false ? \"false\" : options.web.skewProtection\n // 'proactive'\n )\n },\n ...options.web?.suspendRoutes !== void 0 && {\n \"process.env.ONE_SUSPEND_ROUTES\": JSON.stringify(\n options.web.suspendRoutes ? \"1\" : \"0\"\n )\n }\n },\n environments: {\n ssr: {\n define: getPlatformEnvDefine(\"ssr\")\n },\n ios: {\n define: {\n ...getPlatformEnvDefine(\"ios\"),\n ...nativeOptions?.suspendRoutes !== void 0 && {\n \"process.env.ONE_SUSPEND_ROUTES_NATIVE\": JSON.stringify(\n nativeOptions.suspendRoutes ? \"1\" : \"0\"\n )\n }\n }\n },\n android: {\n define: {\n ...getPlatformEnvDefine(\"android\"),\n ...nativeOptions?.suspendRoutes !== void 0 && {\n \"process.env.ONE_SUSPEND_ROUTES_NATIVE\": JSON.stringify(\n nativeOptions.suspendRoutes ? \"1\" : \"0\"\n )\n }\n }\n }\n },\n ssr: {\n // ensure server-only/client-only go through vite so our environmentGuardPlugin can handle them\n noExternal: [\"server-only\", \"client-only\"]\n }\n };\n }\n },\n {\n name: \"one:tamagui\",\n config() {\n return {\n define: {\n // safe to set because it only affects web in tamagui, and one is always react 19\n \"process.env.TAMAGUI_REACT_19\": '\"1\"'\n },\n environments: {\n ssr: {\n define: {\n \"process.env.TAMAGUI_IS_SERVER\": '\"1\"',\n \"process.env.TAMAGUI_KEEP_THEMES\": '\"1\"'\n }\n },\n ios: {\n define: {\n \"process.env.TAMAGUI_KEEP_THEMES\": '\"1\"'\n }\n },\n android: {\n define: {\n \"process.env.TAMAGUI_KEEP_THEMES\": '\"1\"'\n }\n }\n }\n };\n }\n },\n createRouteModuleHmrPlugin(routerRoot),\n // Plugins may transform the source code and add imports of `react/jsx-dev-runtime`, which won't be discovered by Vite's initial `scanImports` since the implementation is using ESbuild where such plugins are not executed.\n // Thus, if the project has a valid `react/jsx-dev-runtime` import, we tell Vite to optimize it, so Vite won't only discover it on the next page load and trigger a full reload.\n {\n name: \"one:optimize-dev-deps\",\n config(_, env) {\n if (env.mode === \"development\") {\n return {\n optimizeDeps: {\n include: [\"react/jsx-dev-runtime\", \"react/compiler-runtime\"]\n }\n };\n }\n }\n },\n {\n name: \"one:remove-server-from-client\",\n enforce: \"pre\",\n // both conditions are rust-side: only one-server-only modules that\n // actually contain the import cross into js\n transform: {\n filter: {\n id: /one-server-only/,\n code: 'import { AsyncLocalStorage } from \"node:async_hooks\"'\n },\n handler(code) {\n if (this.environment.name !== \"client\") return;\n return code.replace(\n `import { AsyncLocalStorage } from \"node:async_hooks\"`,\n `class AsyncLocalStorage {}`\n );\n }\n }\n },\n // packages in resolve.dedupe must also be pre-bundled for SSR to prevent\n // duplicate module instances (e.g. symlinked monorepo packages resolving\n // to different paths)\n {\n name: \"one:ssr-dedupe-prebundle\",\n config(config) {\n if (!dedupeSymlinks) return;\n const dedupeList = config.resolve?.dedupe;\n if (!Array.isArray(dedupeList) || dedupeList.length === 0) return;\n return {\n ssr: {\n optimizeDeps: {\n include: [...dedupeList]\n },\n noExternal: [...dedupeList]\n }\n };\n }\n },\n // fix: vite's ssr dep optimizer registers pre-bundled deps by their\n // node_modules path, but symlinks cause imports to resolve to the real\n // (source) path. the optimizer doesn't recognize the real path, so it\n // loads from source — creating a duplicate instance.\n // this plugin forces optimized SSR deps to resolve via node_modules.\n // off by default, and every hook bails on `!dedupeSymlinks`, so skip\n // registering it entirely rather than paying a napi round trip per import\n ...dedupeSymlinks ? [ssrSymlinkDedupPlugin] : []\n ];\n const nativeWebDevAndProdPlugsin = [clientTreeShakePlugin({ routerRoot })];\n let nativeFormPlugins = [];\n const nativeFormPluginsCapture = {\n name: \"one:native-form-plugins\",\n configResolved(config) {\n nativeFormPlugins = config.plugins.filter((plugin) => plugin.api?.vxrnNative);\n }\n };\n if (!nativeDisabled) {\n const viteBundlerOptions = nativeOptions?.bundler === \"metro\" ? void 0 : nativeOptions?.bundlerOptions;\n globalThis.__vxrnAddNativePlugins = (platform) => {\n const listed = [\n backgroundComputationPlugin(\"native\"),\n workletImportsPlugin({}),\n ...nativeApp ? [\n {\n name: \"one:externalize-expo-for-native-app\",\n resolveId(source) {\n if (/^(?:expo(?:-[^/]+)?|@expo\\/[^/]+)(?:\\/|$)/.test(source)) {\n return { id: source, external: true };\n }\n }\n }\n ] : [],\n createAliasPlugin(withAbsorbedAliases(options.alias), platform),\n clientTreeShakePlugin({ runtime: \"rolldown\", routerRoot }),\n ...viteBundlerOptions?.plugins ?? []\n ];\n const listedNames = new Set(listed.map((plugin) => plugin.name));\n return [\n ...listed,\n ...nativeFormPlugins.filter((plugin) => !listedNames.has(plugin.name)),\n // last, so an app plugin that compiles .swift itself (a simulator) wins\n swiftPackagePlugin(platform, root),\n kotlinSourcePlugin(platform, root)\n ];\n };\n globalThis.__vxrnNativeUserDefine = {\n ...viteBundlerOptions?.define,\n ...nativeAppName && {\n \"process.env.ONE_APP_NAME\": JSON.stringify(nativeAppName),\n \"import.meta.env.ONE_APP_NAME\": JSON.stringify(nativeAppName)\n }\n };\n }\n globalThis.__vxrnAddWebPluginsProd = devAndProdPlugins;\n const flags = {};\n const routeIndex = createRouteIndex({\n routerRoot: path.resolve(root, routerRoot),\n ignoredRouteFiles: options.router?.ignoredRouteFiles\n });\n if (!nativeDisabled) {\n globalThis.__vxrnNativeEntryConfig = {\n routerRoot,\n ignoredRouteFiles: options.router?.ignoredRouteFiles,\n linking: options.router?.linking,\n setupFile: options.setupFile,\n flags,\n app: nativeApp\n };\n }\n const inspectorPlugins = (() => {\n const devtools = options.devtools ?? true;\n const inspector = devtools === true || devtools !== false && (devtools.inspector ?? true);\n const editor = devtools !== true && devtools !== false ? devtools.editor : void 0;\n return inspector ? sourceInspectorPlugin({ editor }) : [];\n })();\n const workerdDevPlugins = shouldEnableWorkerdDev(options.web?.deploy, root) ? import(\"./plugins/workerdDevPlugin\").then(\n ({ createWorkerdDevPlugins }) => createWorkerdDevPlugins(options, root, routeIndex)\n ) : [];\n return [\n backgroundComputationPlugin(\"web\"),\n {\n name: \"one:background-worker-build\",\n config(config) {\n const plugins = config.worker?.plugins;\n return {\n worker: {\n plugins: () => [...plugins?.() ?? [], backgroundComputationPlugin(\"web\")]\n }\n };\n }\n },\n workerdDevPlugins,\n ...vxrnPlugins,\n ...devAndProdPlugins,\n ...inspectorPlugins,\n ...nativeWebDevAndProdPlugsin,\n ...nativeDisabled ? [] : [nativeFormPluginsCapture],\n /**\n * This is really the meat of one, where it handles requests:\n */\n createFileSystemRouterPlugin(options, routeIndex),\n generateFileSystemRouteTypesPlugin(options, routeIndex),\n fixDependenciesPlugin(options.patches),\n createVirtualEntry({\n ...options,\n flags,\n root: routerRoot,\n routeIndex\n }),\n {\n name: \"one-define-environment\",\n config() {\n return {\n define: {\n ...nativeAppName && {\n \"process.env.ONE_APP_NAME\": JSON.stringify(nativeAppName),\n \"import.meta.env.ONE_APP_NAME\": JSON.stringify(nativeAppName)\n },\n ...nativeAppVersion && {\n \"process.env.ONE_APP_VERSION\": JSON.stringify(nativeAppVersion),\n \"import.meta.env.ONE_APP_VERSION\": JSON.stringify(nativeAppVersion)\n },\n \"process.env.ONE_CACHE_KEY\": JSON.stringify(CACHE_KEY),\n \"import.meta.env.ONE_CACHE_KEY\": JSON.stringify(CACHE_KEY)\n }\n };\n }\n },\n SSRCSSPlugin({\n entries: [virtualEntryId]\n }),\n // devtools (always includes refresh preamble for HMR, optionally includes UI)\n ...(() => {\n const devtools = options.devtools ?? true;\n const includeUI = devtools !== false;\n return [\n // always include devtools plugin for refresh preamble (required for HMR)\n createDevtoolsPlugin({ includeUI })\n ];\n })()\n ];\n}\nexport {\n one\n};\n//# sourceMappingURL=one.js.map\n"],"mappings":"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"}