vite-plugin-react-server 1.1.15 → 1.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +2 -1
- package/dist/plugin/config/createModuleID.d.ts +8 -0
- package/dist/plugin/config/createModuleID.d.ts.map +1 -0
- package/dist/plugin/config/createModuleID.js +33 -0
- package/dist/plugin/config/defaults.d.ts +5 -0
- package/dist/plugin/config/defaults.d.ts.map +1 -1
- package/dist/plugin/config/defaults.js +8 -3
- package/dist/plugin/config/defaults.js.map +1 -1
- package/dist/plugin/config/extMap.d.ts +3 -0
- package/dist/plugin/config/extMap.d.ts.map +1 -0
- package/dist/plugin/config/extMap.js +57 -0
- package/dist/plugin/config/extMap.js.map +1 -0
- package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
- package/dist/plugin/config/resolveOptions.js +29 -26
- package/dist/plugin/config/resolveOptions.js.map +1 -1
- package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
- package/dist/plugin/config/resolveUserConfig.js +23 -13
- package/dist/plugin/config/resolveUserConfig.js.map +1 -1
- package/dist/plugin/helpers/inputNormalizer.d.ts.map +1 -1
- package/dist/plugin/helpers/inputNormalizer.js +8 -1
- package/dist/plugin/helpers/inputNormalizer.js.map +1 -1
- package/dist/plugin/helpers/requestInfo.d.ts +2 -2
- package/dist/plugin/helpers/requestInfo.d.ts.map +1 -1
- package/dist/plugin/helpers/requestInfo.js +9 -8
- package/dist/plugin/helpers/requestInfo.js.map +1 -1
- package/dist/plugin/loader/transformModuleWithPreservedFunctions.js +0 -19
- package/dist/plugin/loader/transformModuleWithPreservedFunctions.js.map +1 -1
- package/dist/plugin/react-server/configureReactServer.js.map +1 -1
- package/dist/plugin/source-map/createMappingsSerializer.d.ts.map +1 -1
- package/dist/plugin/source-map/createMappingsSerializer.js +0 -1
- package/dist/plugin/source-map/readMappings.d.ts.map +1 -1
- package/dist/plugin/source-map/readMappings.js +0 -1
- package/dist/plugin/transformer/plugin.server.d.ts.map +1 -1
- package/dist/plugin/transformer/plugin.server.js +1 -10
- package/dist/plugin/transformer/plugin.server.js.map +1 -1
- package/dist/plugin/utils/createCallServer.d.ts.map +1 -1
- package/dist/plugin/utils/createCallServer.js +1 -2
- package/dist/plugin/utils/createCallServer.js.map +1 -1
- package/dist/plugin/worker/rsc/state.d.ts +0 -9
- package/dist/plugin/worker/rsc/state.d.ts.map +1 -1
- package/dist/plugin/worker/rsc/state.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/plugin/config/createModuleID.ts +51 -0
- package/plugin/config/defaults.tsx +7 -2
- package/plugin/config/extMap.ts +60 -0
- package/plugin/config/resolveOptions.ts +66 -54
- package/plugin/config/resolveUserConfig.ts +31 -15
- package/plugin/helpers/inputNormalizer.ts +19 -3
- package/plugin/helpers/requestInfo.ts +29 -21
- package/plugin/loader/transformModuleWithPreservedFunctions.ts +1 -1
- package/plugin/react-server/configureReactServer.ts +1 -1
- package/plugin/source-map/createMappingsSerializer.ts +0 -1
- package/plugin/source-map/readMappings.ts +0 -1
- package/plugin/transformer/plugin.server.ts +1 -10
- package/plugin/utils/createCallServer.ts +1 -2
- package/plugin/worker/rsc/state.ts +0 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveUserConfig.js","sources":["../../../plugin/config/resolveUserConfig.ts"],"sourcesContent":["import type { ConfigEnv, UserConfig } from \"vite\";\nimport type {\n ResolvedUserConfig,\n ResolvedUserOptions,\n AutoDiscoveredFiles,\n PagePropOpt,\n InlineCssOpt,\n} from \"../types.js\";\nimport { join } from \"node:path\";\nimport type { OutputOptions, PreRenderedAsset, PreRenderedChunk } from \"rollup\";\nimport { DEFAULT_CONFIG } from \"./defaults.js\";\n\nlet stashedUserConfig: Record<string, ResolvedUserConfig | null> = {};\n\nexport type ResolveUserConfigProps<\n T extends PagePropOpt = PagePropOpt,\n InlineCSS extends InlineCssOpt = InlineCssOpt\n> = {\n condition: \"react-client\" | \"react-server\";\n config: UserConfig;\n configEnv: ConfigEnv;\n userOptions: ResolvedUserOptions<T, InlineCSS>;\n autoDiscoveredFiles: Pick<AutoDiscoveredFiles, \"inputs\" | \"staticManifest\">;\n};\n\nexport type ResolveUserConfigReturn =\n | { type: \"success\"; userConfig: ResolvedUserConfig }\n | { type: \"error\"; error: Error };\n\nexport function resolveUserConfig<\n T extends PagePropOpt = PagePropOpt,\n InlineCSS extends InlineCssOpt = InlineCssOpt\n>({\n condition,\n config,\n configEnv,\n userOptions,\n autoDiscoveredFiles,\n}: ResolveUserConfigProps<T, InlineCSS>): ResolveUserConfigReturn {\n const ssr =\n typeof config.build?.ssr === \"boolean\"\n ? config.build?.ssr\n : Boolean(configEnv.isSsrBuild) ||\n condition === \"react-server\" ||\n (typeof process.env[\"VITE_SSR\"] === \"string\"\n ? process.env[\"VITE_SSR\"] === \"true\" ||\n process.env[\"VITE_SSR\"] === \"1\"\n : Boolean(process.env[\"VITE_SSR\"]));\n const envDir =\n condition === \"react-client\" && ssr\n ? userOptions.build.client\n : condition === \"react-client\"\n ? userOptions.build.static\n : userOptions.build.server;\n const envId = `${envDir}${ssr ? \"-ssr\" : \"\"}`;\n\n if (stashedUserConfig[envId]) {\n return {\n type: \"success\",\n userConfig: stashedUserConfig[envId],\n };\n }\n\n // Get existing inputs\n const root = config.root ?? userOptions.projectRoot ?? process.cwd();\n\n const handleSsrName = <T extends PreRenderedChunk | PreRenderedAsset>(\n info: T,\n input: string | null,\n fallback: (info: T, ssr: boolean) => string,\n ssr: boolean\n ) => {\n if (\"source\" in info && info.source === \"\") {\n return \"\";\n }\n if (!ssr || !input) {\n return fallback(info, false);\n }\n const [, value] = userOptions.normalizer(input);\n const entry = autoDiscoveredFiles.staticManifest[value];\n if (\n entry?.name &&\n info.type === \"asset\" &&\n userOptions.autoDiscover.cssPattern(value)\n ) {\n const withoutExt = entry.name?.split(\".\")[0];\n const found = entry.css?.find((css) =>\n css.startsWith(withoutExt as string)\n );\n if (found) {\n return found;\n } else {\n return entry.file;\n }\n } else if (entry) {\n return entry.file;\n }\n return fallback(info, true);\n };\n const userDefinedOutput = config.build?.rollupOptions?.output;\n const hasOtherOutput =\n Array.isArray(userDefinedOutput) && userDefinedOutput.length > 1;\n const hasValidOutput = userDefinedOutput && !hasOtherOutput;\n const hasObjectOutput =\n userDefinedOutput &&\n !hasOtherOutput &&\n typeof userDefinedOutput === \"object\" &&\n userDefinedOutput !== null;\n\n const userDefinedAssetFileNames = hasObjectOutput\n ? \"assetFileNames\" in userDefinedOutput\n ? userDefinedOutput.assetFileNames\n : undefined\n : // find the other asset file names\n hasOtherOutput\n ? (userDefinedOutput.find((o) => o.assetFileNames) as OutputOptions)\n .assetFileNames\n : undefined;\n\n const userDefinedChunkFileNames = hasValidOutput\n ? \"chunkFileNames\" in userDefinedOutput\n ? userDefinedOutput.chunkFileNames\n : undefined\n : undefined;\n const userDefinedEntryFileNames = hasValidOutput\n ? \"entryFileNames\" in userDefinedOutput\n ? userDefinedOutput.entryFileNames\n : undefined\n : undefined;\n\n let stashedReturns: Record<string, string> = {};\n const pluginOutput = {\n preserveModulesRoot: userOptions.build.preserveModulesRoot\n ? userOptions.moduleBase\n : undefined,\n entryFileNames:\n userDefinedEntryFileNames ??\n ((info) => {\n const input = info.facadeModuleId ?? (info.name + userOptions.autoDiscover.moduleExtension);\n if (!stashedReturns[input]) {\n const r = handleSsrName(\n info,\n input,\n userOptions.build.entryFile,\n ssr\n );\n if (userOptions.verbose) {\n console.log(\"entryFileNames\", input, r);\n }\n stashedReturns[input] = r;\n }\n return stashedReturns[input];\n }),\n assetFileNames: process.env[\"VITEST\"]\n ? undefined\n : userDefinedAssetFileNames ??\n ((i) => {\n const input = i.originalFileNames[0];\n if (!stashedReturns[input]) {\n const r = handleSsrName(i, input, userOptions.build.assetFile, ssr);\n\n if (userOptions.verbose) {\n console.log(\"assetFileNames\", input, stashedReturns[input]);\n }\n stashedReturns[input] = r;\n }\n return stashedReturns[input];\n }),\n chunkFileNames:\n userDefinedChunkFileNames ??\n ((info) => {\n const input = info.facadeModuleId ?? (info.name + userOptions.autoDiscover.moduleExtension);\n if (!stashedReturns[input]) {\n const r = handleSsrName(info, input, userOptions.build.chunkFile, ssr);\n\n if (userOptions.verbose) {\n console.log(\"chunkFileNames\", input, stashedReturns[input]);\n }\n stashedReturns[input] = r;\n }\n return stashedReturns[input];\n }),\n format: \"esm\",\n exports: \"named\",\n } satisfies OutputOptions;\n\n let newOutput = Array.isArray(config.build?.rollupOptions?.output)\n ? [...config.build?.rollupOptions?.output, pluginOutput]\n : typeof config.build?.rollupOptions?.output === \"object\" &&\n config.build?.rollupOptions?.output !== null\n ? [config.build?.rollupOptions?.output, pluginOutput]\n : pluginOutput;\n const vitePrefix = config.envPrefix ?? DEFAULT_CONFIG.ENV_PREFIX;\n const mode = config.mode ?? process.env[\"VITE_MODE\"];\n const minify = config.build?.minify;\n\n const srrConfig = {\n ...config.ssr,\n target: config.ssr?.target ?? \"node\",\n optimizeDeps: {\n ...config.ssr?.optimizeDeps,\n include: config.ssr?.optimizeDeps?.include ?? [\n \"react\",\n \"react-dom\",\n \"react-server-dom-esm/client\",\n ],\n },\n resolve: {\n ...config.ssr?.resolve,\n externalConditions: config.ssr?.resolve?.externalConditions ?? [\n \"react-server\",\n ],\n },\n };\n let publicOrigin =\n userOptions.publicOrigin ?? process.env.VITE_PUBLIC_ORIGIN ?? \"\";\n let PROD = mode === \"production\";\n let DEV = mode === \"development\";\n if (configEnv.command === \"serve\" && !configEnv.isPreview) {\n publicOrigin = `http${config.server?.https ? \"s\" : \"\"}://${\n typeof config.server?.host === \"string\"\n ? config.server?.host\n : \"localhost\"\n }:${typeof config.server?.port === \"number\" ? config.server?.port : 5173}`;\n }\n const ssrDefine = ssr\n ? {\n [`process.env.${vitePrefix}SSR`]: `${ssr}`,\n [`process.env.${vitePrefix}DEV`]: `${DEV}`,\n [`process.env.${vitePrefix}PROD`]: `${PROD}`,\n [`process.env.${vitePrefix}MODE`]: `\"${mode}\"`,\n [`process.env.${vitePrefix}BASE_URL`]: `\"${userOptions.moduleBaseURL}\"`,\n [`process.env.${vitePrefix}PUBLIC_ORIGIN`]: `\"${publicOrigin}\"`,\n }\n : {};\n const define = {\n ...config.define,\n [`import.meta.env.PUBLIC_ORIGIN`]: `\"${publicOrigin}\"`,\n ...ssrDefine,\n };\n // these will never be cleaned up, because, we are resolving the user config\n // and it's assumed the thread closes after this and we don't want\n // it to change after the config has been resolved\n if (process.env.VITE_BASE_URL !== userOptions.moduleBaseURL) {\n process.env.VITE_BASE_URL = userOptions.moduleBaseURL;\n }\n if (process.env.VITE_PUBLIC_ORIGIN !== publicOrigin) {\n process.env.VITE_PUBLIC_ORIGIN = publicOrigin;\n }\n\n if (condition === \"react-client\") {\n // client plugin build options (client plugin still outputs server files)\n const clientConfig = {\n ...config,\n root: root,\n mode: mode,\n base: userOptions.moduleBaseURL,\n envPrefix: vitePrefix,\n resolve: {\n ...config.resolve,\n external: config.resolve?.external ?? [\n \"react\",\n \"react-dom\",\n \"react-server-dom-esm/client\",\n ],\n },\n define: define,\n ssr: srrConfig,\n // client build options\n build: {\n ...config.build,\n modulePreload: config.build?.modulePreload ?? false,\n emptyOutDir: config.build?.emptyOutDir ?? true,\n outDir: config.build?.outDir ?? join(userOptions.build.outDir, envDir),\n assetsDir: config.build?.assetsDir ?? userOptions.build.assetsDir,\n copyPublicDir:\n typeof config.build?.copyPublicDir === \"boolean\"\n ? config.build?.copyPublicDir\n : !ssr,\n // modern browsers\n target: config.build?.target ?? [\"esnext\"],\n minify: minify,\n rollupOptions: {\n ...config.build?.rollupOptions,\n input: {\n ...autoDiscoveredFiles.inputs,\n },\n output: newOutput,\n preserveEntrySignatures:\n config.build?.rollupOptions?.preserveEntrySignatures ??\n \"exports-only\",\n },\n ssr: ssr,\n manifest: config.build?.manifest ?? `.vite/manifest.json`,\n ssrManifest: config.build?.ssrManifest ?? `.vite/ssr-manifest.json`,\n ssrEmitAssets: config.build?.ssrEmitAssets ?? true,\n cssCodeSplit:\n typeof config.build?.cssCodeSplit === \"boolean\"\n ? config.build?.cssCodeSplit\n : true,\n },\n } satisfies ResolvedUserConfig;\n stashedUserConfig[envId] = clientConfig;\n return {\n type: \"success\",\n userConfig: clientConfig,\n };\n } else {\n const serverConfig = {\n ...config,\n root: root,\n mode: mode,\n base: userOptions.moduleBaseURL,\n envPrefix: vitePrefix,\n resolve: {\n ...config.resolve,\n externalConditions: config.resolve?.externalConditions ?? [\n \"react-server\",\n ],\n },\n define: define,\n ssr: srrConfig,\n // server build options\n build: {\n ...config.build,\n modulePreload: config.build?.modulePreload ?? false,\n emptyOutDir: config.build?.emptyOutDir ?? true,\n outDir: config.build?.outDir ?? join(userOptions.build.outDir, envDir),\n target: config.build?.target ?? \"node18\",\n minify: minify,\n ssr: ssr,\n manifest: config.build?.manifest ?? `.vite/manifest.json`,\n ssrManifest: config.build?.ssrManifest ?? `.vite/ssr-manifest.json`,\n ssrEmitAssets:\n typeof config.build?.ssrEmitAssets === \"boolean\"\n ? config.build?.ssrEmitAssets\n : true,\n copyPublicDir:\n typeof config.build?.copyPublicDir === \"boolean\"\n ? config.build?.copyPublicDir\n : !ssr,\n assetsDir: config.build?.assetsDir ?? userOptions.build.assetsDir,\n // Ensure CSS files are output to static directory\n cssCodeSplit:\n typeof config.build?.cssCodeSplit === \"boolean\"\n ? config.build?.cssCodeSplit\n : true,\n rollupOptions: {\n ...config.build?.rollupOptions,\n input: autoDiscoveredFiles.inputs,\n preserveEntrySignatures:\n config.build?.rollupOptions?.preserveEntrySignatures ?? \"strict\",\n output: newOutput,\n },\n },\n } satisfies ResolvedUserConfig;\n stashedUserConfig[envId] = serverConfig;\n return {\n type: \"success\",\n userConfig: serverConfig,\n };\n }\n}\n"],"names":["ssr"],"mappings":";;;;;;;;AAYA,IAAI,oBAA+D,EAAC;AAiB7D,SAAS,iBAGd,CAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAkE,EAAA;AAChE,EAAA,MAAM,GACJ,GAAA,OAAO,MAAO,CAAA,KAAA,EAAO,QAAQ,SACzB,GAAA,MAAA,CAAO,KAAO,EAAA,GAAA,GACd,QAAQ,SAAU,CAAA,UAAU,CAC5B,IAAA,SAAA,KAAc,mBACb,OAAO,OAAA,CAAQ,GAAI,CAAA,UAAU,MAAM,QAChC,GAAA,OAAA,CAAQ,GAAI,CAAA,UAAU,MAAM,MAC5B,IAAA,OAAA,CAAQ,GAAI,CAAA,UAAU,MAAM,GAC5B,GAAA,OAAA,CAAQ,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAC,CAAA,CAAA;AACzC,EAAA,MAAM,MACJ,GAAA,SAAA,KAAc,cAAkB,IAAA,GAAA,GAC5B,WAAY,CAAA,KAAA,CAAM,MAClB,GAAA,SAAA,KAAc,cACd,GAAA,WAAA,CAAY,KAAM,CAAA,MAAA,GAClB,YAAY,KAAM,CAAA,MAAA;AACxB,EAAA,MAAM,QAAQ,CAAG,EAAA,MAAM,CAAG,EAAA,GAAA,GAAM,SAAS,EAAE,CAAA,CAAA;AAEvC,EAAA,IAAA,iBAAA,CAAkB,KAAK,CAAG,EAAA;AACrB,IAAA,OAAA;AAAA,MACL,IAAM,EAAA,SAAA;AAAA,MACN,UAAA,EAAY,kBAAkB,KAAK;AAAA,KACrC;AAAA;AAIF,EAAA,MAAM,OAAO,MAAO,CAAA,IAAA,IAAQ,WAAY,CAAA,WAAA,IAAe,QAAQ,GAAI,EAAA;AAEnE,EAAA,MAAM,aAAgB,GAAA,CACpB,IACA,EAAA,KAAA,EACA,UACAA,IACG,KAAA;AACH,IAAA,IAAI,QAAY,IAAA,IAAA,IAAQ,IAAK,CAAA,MAAA,KAAW,EAAI,EAAA;AACnC,MAAA,OAAA,EAAA;AAAA;AAEL,IAAA,IAAA,CAACA,IAAO,IAAA,CAAC,KAAO,EAAA;AACX,MAAA,OAAA,QAAA,CAAS,MAAM,KAAK,CAAA;AAAA;AAE7B,IAAA,MAAM,GAAG,KAAK,CAAI,GAAA,WAAA,CAAY,WAAW,KAAK,CAAA;AACxC,IAAA,MAAA,KAAA,GAAQ,mBAAoB,CAAA,cAAA,CAAe,KAAK,CAAA;AAEpD,IAAA,IAAA,KAAA,EAAO,QACP,IAAK,CAAA,IAAA,KAAS,WACd,WAAY,CAAA,YAAA,CAAa,UAAW,CAAA,KAAK,CACzC,EAAA;AACA,MAAA,MAAM,aAAa,KAAM,CAAA,IAAA,EAAM,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA;AACrC,MAAA,MAAA,KAAA,GAAQ,MAAM,GAAK,EAAA,IAAA;AAAA,QAAK,CAAC,GAAA,KAC7B,GAAI,CAAA,UAAA,CAAW,UAAoB;AAAA,OACrC;AACA,MAAA,IAAI,KAAO,EAAA;AACF,QAAA,OAAA,KAAA;AAAA,OACF,MAAA;AACL,QAAA,OAAO,KAAM,CAAA,IAAA;AAAA;AACf,eACS,KAAO,EAAA;AAChB,MAAA,OAAO,KAAM,CAAA,IAAA;AAAA;AAER,IAAA,OAAA,QAAA,CAAS,MAAM,IAAI,CAAA;AAAA,GAC5B;AACM,EAAA,MAAA,iBAAA,GAAoB,MAAO,CAAA,KAAA,EAAO,aAAe,EAAA,MAAA;AACvD,EAAA,MAAM,iBACJ,KAAM,CAAA,OAAA,CAAQ,iBAAiB,CAAA,IAAK,kBAAkB,MAAS,GAAA,CAAA;AAC3D,EAAA,MAAA,cAAA,GAAiB,qBAAqB,CAAC,cAAA;AAC7C,EAAA,MAAM,kBACJ,iBACA,IAAA,CAAC,kBACD,OAAO,iBAAA,KAAsB,YAC7B,iBAAsB,KAAA,IAAA;AAExB,EAAA,MAAM,yBAA4B,GAAA,eAAA,GAC9B,gBAAoB,IAAA,iBAAA,GAClB,kBAAkB,cAClB,GAAA,SAAA;AAAA;AAAA,IAEJ,cAAA,GACG,kBAAkB,IAAK,CAAA,CAAC,MAAM,CAAE,CAAA,cAAc,EAC5C,cACH,GAAA;AAAA,GAAA;AAEJ,EAAA,MAAM,4BAA4B,cAC9B,GAAA,gBAAA,IAAoB,iBAClB,GAAA,iBAAA,CAAkB,iBAClB,SACF,GAAA,SAAA;AACJ,EAAA,MAAM,4BAA4B,cAC9B,GAAA,gBAAA,IAAoB,iBAClB,GAAA,iBAAA,CAAkB,iBAClB,SACF,GAAA,SAAA;AAEJ,EAAA,IAAI,iBAAyC,EAAC;AAC9C,EAAA,MAAM,YAAe,GAAA;AAAA,IACnB,mBAAqB,EAAA,WAAA,CAAY,KAAM,CAAA,mBAAA,GACnC,YAAY,UACZ,GAAA,SAAA;AAAA,IACJ,cAAA,EACE,yBACC,KAAA,CAAC,IAAS,KAAA;AACT,MAAA,MAAM,QAAQ,IAAK,CAAA,cAAA,IAAmB,IAAK,CAAA,IAAA,GAAO,YAAY,YAAa,CAAA,eAAA;AACvE,MAAA,IAAA,CAAC,cAAe,CAAA,KAAK,CAAG,EAAA;AAC1B,QAAA,MAAM,CAAI,GAAA,aAAA;AAAA,UACR,IAAA;AAAA,UACA,KAAA;AAAA,UACA,YAAY,KAAM,CAAA,SAAA;AAAA,UAClB;AAAA,SACF;AACA,QAAA,IAAI,YAAY,OAAS,EAAA;AACf,UAAA,OAAA,CAAA,GAAA,CAAI,gBAAkB,EAAA,KAAA,EAAO,CAAC,CAAA;AAAA;AAExC,QAAA,cAAA,CAAe,KAAK,CAAI,GAAA,CAAA;AAAA;AAE1B,MAAA,OAAO,eAAe,KAAK,CAAA;AAAA,KAC7B,CAAA;AAAA,IACF,cAAA,EAAgB,QAAQ,GAAI,CAAA,QAAQ,IAChC,SACA,GAAA,yBAAA,KACC,CAAC,CAAM,KAAA;AACA,MAAA,MAAA,KAAA,GAAQ,CAAE,CAAA,iBAAA,CAAkB,CAAC,CAAA;AAC/B,MAAA,IAAA,CAAC,cAAe,CAAA,KAAK,CAAG,EAAA;AAC1B,QAAA,MAAM,IAAI,aAAc,CAAA,CAAA,EAAG,OAAO,WAAY,CAAA,KAAA,CAAM,WAAW,GAAG,CAAA;AAElE,QAAA,IAAI,YAAY,OAAS,EAAA;AACvB,UAAA,OAAA,CAAQ,GAAI,CAAA,gBAAA,EAAkB,KAAO,EAAA,cAAA,CAAe,KAAK,CAAC,CAAA;AAAA;AAE5D,QAAA,cAAA,CAAe,KAAK,CAAI,GAAA,CAAA;AAAA;AAE1B,MAAA,OAAO,eAAe,KAAK,CAAA;AAAA,KAC7B,CAAA;AAAA,IACJ,cAAA,EACE,yBACC,KAAA,CAAC,IAAS,KAAA;AACT,MAAA,MAAM,QAAQ,IAAK,CAAA,cAAA,IAAmB,IAAK,CAAA,IAAA,GAAO,YAAY,YAAa,CAAA,eAAA;AACvE,MAAA,IAAA,CAAC,cAAe,CAAA,KAAK,CAAG,EAAA;AAC1B,QAAA,MAAM,IAAI,aAAc,CAAA,IAAA,EAAM,OAAO,WAAY,CAAA,KAAA,CAAM,WAAW,GAAG,CAAA;AAErE,QAAA,IAAI,YAAY,OAAS,EAAA;AACvB,UAAA,OAAA,CAAQ,GAAI,CAAA,gBAAA,EAAkB,KAAO,EAAA,cAAA,CAAe,KAAK,CAAC,CAAA;AAAA;AAE5D,QAAA,cAAA,CAAe,KAAK,CAAI,GAAA,CAAA;AAAA;AAE1B,MAAA,OAAO,eAAe,KAAK,CAAA;AAAA,KAC7B,CAAA;AAAA,IACF,MAAQ,EAAA,KAAA;AAAA,IACR,OAAS,EAAA;AAAA,GACX;AAEA,EAAA,IAAI,SAAY,GAAA,KAAA,CAAM,OAAQ,CAAA,MAAA,CAAO,OAAO,aAAe,EAAA,MAAM,CAC7D,GAAA,CAAC,GAAG,MAAA,CAAO,KAAO,EAAA,aAAA,EAAe,QAAQ,YAAY,CAAA,GACrD,OAAO,MAAA,CAAO,KAAO,EAAA,aAAA,EAAe,MAAW,KAAA,QAAA,IAC/C,OAAO,KAAO,EAAA,aAAA,EAAe,MAAW,KAAA,IAAA,GACxC,CAAC,MAAO,CAAA,KAAA,EAAO,aAAe,EAAA,MAAA,EAAQ,YAAY,CAClD,GAAA,YAAA;AACE,EAAA,MAAA,UAAA,GAAa,MAAO,CAAA,SAAA,IAAa,cAAe,CAAA,UAAA;AACtD,EAAA,MAAM,IAAO,GAAA,MAAA,CAAO,IAAQ,IAAA,OAAA,CAAQ,IAAI,WAAW,CAAA;AAC7C,EAAA,MAAA,MAAA,GAAS,OAAO,KAAO,EAAA,MAAA;AAE7B,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,GAAG,MAAO,CAAA,GAAA;AAAA,IACV,MAAA,EAAQ,MAAO,CAAA,GAAA,EAAK,MAAU,IAAA,MAAA;AAAA,IAC9B,YAAc,EAAA;AAAA,MACZ,GAAG,OAAO,GAAK,EAAA,YAAA;AAAA,MACf,OAAS,EAAA,MAAA,CAAO,GAAK,EAAA,YAAA,EAAc,OAAW,IAAA;AAAA,QAC5C,OAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACA,OAAS,EAAA;AAAA,MACP,GAAG,OAAO,GAAK,EAAA,OAAA;AAAA,MACf,kBAAoB,EAAA,MAAA,CAAO,GAAK,EAAA,OAAA,EAAS,kBAAsB,IAAA;AAAA,QAC7D;AAAA;AACF;AACF,GACF;AACA,EAAA,IAAI,YACF,GAAA,WAAA,CAAY,YAAgB,IAAA,OAAA,CAAQ,IAAI,kBAAsB,IAAA,EAAA;AAChE,EAAA,IAAI,OAAO,IAAS,KAAA,YAAA;AACpB,EAAA,IAAI,MAAM,IAAS,KAAA,aAAA;AACnB,EAAA,IAAI,SAAU,CAAA,OAAA,KAAY,OAAW,IAAA,CAAC,UAAU,SAAW,EAAA;AAC1C,IAAA,YAAA,GAAA,CAAA,IAAA,EAAO,MAAO,CAAA,MAAA,EAAQ,KAAQ,GAAA,GAAA,GAAM,EAAE,CACnD,GAAA,EAAA,OAAO,MAAO,CAAA,MAAA,EAAQ,IAAS,KAAA,QAAA,GAC3B,OAAO,MAAQ,EAAA,IAAA,GACf,WACN,CAAA,CAAA,EAAI,OAAO,MAAA,CAAO,MAAQ,EAAA,IAAA,KAAS,QAAW,GAAA,MAAA,CAAO,MAAQ,EAAA,IAAA,GAAO,IAAI,CAAA,CAAA;AAAA;AAE1E,EAAA,MAAM,YAAY,GACd,GAAA;AAAA,IACE,CAAC,CAAe,YAAA,EAAA,UAAU,CAAK,GAAA,CAAA,GAAG,GAAG,GAAG,CAAA,CAAA;AAAA,IACxC,CAAC,CAAe,YAAA,EAAA,UAAU,CAAK,GAAA,CAAA,GAAG,GAAG,GAAG,CAAA,CAAA;AAAA,IACxC,CAAC,CAAe,YAAA,EAAA,UAAU,CAAM,IAAA,CAAA,GAAG,GAAG,IAAI,CAAA,CAAA;AAAA,IAC1C,CAAC,CAAe,YAAA,EAAA,UAAU,CAAM,IAAA,CAAA,GAAG,IAAI,IAAI,CAAA,CAAA,CAAA;AAAA,IAC3C,CAAC,CAAe,YAAA,EAAA,UAAU,UAAU,GAAG,CAAA,CAAA,EAAI,YAAY,aAAa,CAAA,CAAA,CAAA;AAAA,IACpE,CAAC,CAAe,YAAA,EAAA,UAAU,CAAe,aAAA,CAAA,GAAG,IAAI,YAAY,CAAA,CAAA;AAAA,MAE9D,EAAC;AACL,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,GAAG,MAAO,CAAA,MAAA;AAAA,IACV,CAAC,CAAA,6BAAA,CAA+B,GAAG,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA,CAAA;AAAA,IACnD,GAAG;AAAA,GACL;AAIA,EAAA,IAAI,OAAQ,CAAA,GAAA,CAAI,aAAkB,KAAA,WAAA,CAAY,aAAe,EAAA;AACnD,IAAA,OAAA,CAAA,GAAA,CAAI,gBAAgB,WAAY,CAAA,aAAA;AAAA;AAEtC,EAAA,IAAA,OAAA,CAAQ,GAAI,CAAA,kBAAA,KAAuB,YAAc,EAAA;AACnD,IAAA,OAAA,CAAQ,IAAI,kBAAqB,GAAA,YAAA;AAAA;AAGnC,EAAA,IAAI,cAAc,cAAgB,EAAA;AAEhC,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,GAAG,MAAA;AAAA,MACH,IAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAM,WAAY,CAAA,aAAA;AAAA,MAClB,SAAW,EAAA,UAAA;AAAA,MACX,OAAS,EAAA;AAAA,QACP,GAAG,MAAO,CAAA,OAAA;AAAA,QACV,QAAA,EAAU,MAAO,CAAA,OAAA,EAAS,QAAY,IAAA;AAAA,UACpC,OAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA,MACA,MAAA;AAAA,MACA,GAAK,EAAA,SAAA;AAAA;AAAA,MAEL,KAAO,EAAA;AAAA,QACL,GAAG,MAAO,CAAA,KAAA;AAAA,QACV,aAAA,EAAe,MAAO,CAAA,KAAA,EAAO,aAAiB,IAAA,KAAA;AAAA,QAC9C,WAAA,EAAa,MAAO,CAAA,KAAA,EAAO,WAAe,IAAA,IAAA;AAAA,QAC1C,MAAA,EAAQ,OAAO,KAAO,EAAA,MAAA,IAAU,KAAK,WAAY,CAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AAAA,QACrE,SAAW,EAAA,MAAA,CAAO,KAAO,EAAA,SAAA,IAAa,YAAY,KAAM,CAAA,SAAA;AAAA,QACxD,aAAA,EACE,OAAO,MAAO,CAAA,KAAA,EAAO,kBAAkB,SACnC,GAAA,MAAA,CAAO,KAAO,EAAA,aAAA,GACd,CAAC,GAAA;AAAA;AAAA,QAEP,MAAQ,EAAA,MAAA,CAAO,KAAO,EAAA,MAAA,IAAU,CAAC,QAAQ,CAAA;AAAA,QACzC,MAAA;AAAA,QACA,aAAe,EAAA;AAAA,UACb,GAAG,OAAO,KAAO,EAAA,aAAA;AAAA,UACjB,KAAO,EAAA;AAAA,YACL,GAAG,mBAAoB,CAAA;AAAA,WACzB;AAAA,UACA,MAAQ,EAAA,SAAA;AAAA,UACR,uBACE,EAAA,MAAA,CAAO,KAAO,EAAA,aAAA,EAAe,uBAC7B,IAAA;AAAA,SACJ;AAAA,QACA,GAAA;AAAA,QACA,QAAA,EAAU,MAAO,CAAA,KAAA,EAAO,QAAY,IAAA,CAAA,mBAAA,CAAA;AAAA,QACpC,WAAA,EAAa,MAAO,CAAA,KAAA,EAAO,WAAe,IAAA,CAAA,uBAAA,CAAA;AAAA,QAC1C,aAAA,EAAe,MAAO,CAAA,KAAA,EAAO,aAAiB,IAAA,IAAA;AAAA,QAC9C,YAAA,EACE,OAAO,MAAO,CAAA,KAAA,EAAO,iBAAiB,SAClC,GAAA,MAAA,CAAO,OAAO,YACd,GAAA;AAAA;AACR,KACF;AACA,IAAA,iBAAA,CAAkB,KAAK,CAAI,GAAA,YAAA;AACpB,IAAA,OAAA;AAAA,MACL,IAAM,EAAA,SAAA;AAAA,MACN,UAAY,EAAA;AAAA,KACd;AAAA,GACK,MAAA;AACL,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,GAAG,MAAA;AAAA,MACH,IAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAM,WAAY,CAAA,aAAA;AAAA,MAClB,SAAW,EAAA,UAAA;AAAA,MACX,OAAS,EAAA;AAAA,QACP,GAAG,MAAO,CAAA,OAAA;AAAA,QACV,kBAAA,EAAoB,MAAO,CAAA,OAAA,EAAS,kBAAsB,IAAA;AAAA,UACxD;AAAA;AACF,OACF;AAAA,MACA,MAAA;AAAA,MACA,GAAK,EAAA,SAAA;AAAA;AAAA,MAEL,KAAO,EAAA;AAAA,QACL,GAAG,MAAO,CAAA,KAAA;AAAA,QACV,aAAA,EAAe,MAAO,CAAA,KAAA,EAAO,aAAiB,IAAA,KAAA;AAAA,QAC9C,WAAA,EAAa,MAAO,CAAA,KAAA,EAAO,WAAe,IAAA,IAAA;AAAA,QAC1C,MAAA,EAAQ,OAAO,KAAO,EAAA,MAAA,IAAU,KAAK,WAAY,CAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AAAA,QACrE,MAAA,EAAQ,MAAO,CAAA,KAAA,EAAO,MAAU,IAAA,QAAA;AAAA,QAChC,MAAA;AAAA,QACA,GAAA;AAAA,QACA,QAAA,EAAU,MAAO,CAAA,KAAA,EAAO,QAAY,IAAA,CAAA,mBAAA,CAAA;AAAA,QACpC,WAAA,EAAa,MAAO,CAAA,KAAA,EAAO,WAAe,IAAA,CAAA,uBAAA,CAAA;AAAA,QAC1C,aAAA,EACE,OAAO,MAAO,CAAA,KAAA,EAAO,kBAAkB,SACnC,GAAA,MAAA,CAAO,OAAO,aACd,GAAA,IAAA;AAAA,QACN,aAAA,EACE,OAAO,MAAO,CAAA,KAAA,EAAO,kBAAkB,SACnC,GAAA,MAAA,CAAO,KAAO,EAAA,aAAA,GACd,CAAC,GAAA;AAAA,QACP,SAAW,EAAA,MAAA,CAAO,KAAO,EAAA,SAAA,IAAa,YAAY,KAAM,CAAA,SAAA;AAAA;AAAA,QAExD,YAAA,EACE,OAAO,MAAO,CAAA,KAAA,EAAO,iBAAiB,SAClC,GAAA,MAAA,CAAO,OAAO,YACd,GAAA,IAAA;AAAA,QACN,aAAe,EAAA;AAAA,UACb,GAAG,OAAO,KAAO,EAAA,aAAA;AAAA,UACjB,OAAO,mBAAoB,CAAA,MAAA;AAAA,UAC3B,uBACE,EAAA,MAAA,CAAO,KAAO,EAAA,aAAA,EAAe,uBAA2B,IAAA,QAAA;AAAA,UAC1D,MAAQ,EAAA;AAAA;AACV;AACF,KACF;AACA,IAAA,iBAAA,CAAkB,KAAK,CAAI,GAAA,YAAA;AACpB,IAAA,OAAA;AAAA,MACL,IAAM,EAAA,SAAA;AAAA,MACN,UAAY,EAAA;AAAA,KACd;AAAA;AAEJ;;;;"}
|
|
1
|
+
{"version":3,"file":"resolveUserConfig.js","sources":["../../../plugin/config/resolveUserConfig.ts"],"sourcesContent":["import type { ConfigEnv, UserConfig } from \"vite\";\nimport type {\n ResolvedUserConfig,\n ResolvedUserOptions,\n AutoDiscoveredFiles,\n PagePropOpt,\n InlineCssOpt,\n} from \"../types.js\";\nimport { join } from \"node:path\";\nimport type { OutputOptions, PreRenderedAsset, PreRenderedChunk } from \"rollup\";\nimport { DEFAULT_CONFIG } from \"./defaults.js\";\n\nlet stashedUserConfig: Record<string, ResolvedUserConfig | null> = {};\n\nexport type ResolveUserConfigProps<\n T extends PagePropOpt = PagePropOpt,\n InlineCSS extends InlineCssOpt = InlineCssOpt\n> = {\n condition: \"react-client\" | \"react-server\";\n config: UserConfig;\n configEnv: ConfigEnv;\n userOptions: ResolvedUserOptions<T, InlineCSS>;\n autoDiscoveredFiles: Pick<AutoDiscoveredFiles, \"inputs\" | \"staticManifest\">;\n};\n\nexport type ResolveUserConfigReturn =\n | { type: \"success\"; userConfig: ResolvedUserConfig }\n | { type: \"error\"; error: Error };\n\nexport function resolveUserConfig<\n T extends PagePropOpt = PagePropOpt,\n InlineCSS extends InlineCssOpt = InlineCssOpt\n>({\n condition,\n config,\n configEnv,\n userOptions,\n autoDiscoveredFiles,\n}: ResolveUserConfigProps<T, InlineCSS>): ResolveUserConfigReturn {\n const ssr =\n typeof config.build?.ssr === \"boolean\"\n ? config.build?.ssr\n : Boolean(configEnv.isSsrBuild) ||\n condition === \"react-server\" ||\n (typeof process.env[\"VITE_SSR\"] === \"string\"\n ? process.env[\"VITE_SSR\"] === \"true\" ||\n process.env[\"VITE_SSR\"] === \"1\"\n : Boolean(process.env[\"VITE_SSR\"]));\n const envDir =\n condition === \"react-client\" && ssr\n ? userOptions.build.client\n : condition === \"react-client\"\n ? userOptions.build.static\n : userOptions.build.server;\n const envId = `${envDir}${ssr ? \"-ssr\" : \"\"}`;\n\n if (stashedUserConfig[envId]) {\n return {\n type: \"success\",\n userConfig: stashedUserConfig[envId],\n };\n }\n\n // Get existing inputs\n const root = config.root ?? userOptions.projectRoot ?? process.cwd();\n\n const handleSsrName = <T extends PreRenderedChunk | PreRenderedAsset>(\n info: T,\n input: string | null,\n fallback: (info: T, ssr: boolean) => string,\n ssr: boolean\n ) => {\n if (\"source\" in info && info.source === \"\") {\n return \"\";\n }\n if (!ssr || !input) {\n return fallback(info, false);\n }\n let [id, value] = userOptions.normalizer(input);\n if (value.startsWith(userOptions.moduleBasePath)) {\n value = value.slice(userOptions.moduleBasePath.length);\n }\n const entry = autoDiscoveredFiles.staticManifest[value];\n if (\n entry?.name &&\n info.type === \"asset\" &&\n userOptions.autoDiscover.cssPattern(value)\n ) {\n const found = entry.css?.find((css) =>\n css.startsWith(id as string)\n );\n if (found) {\n return found;\n } else {\n return entry.file;\n }\n } else if (entry) {\n return entry.file;\n }\n return fallback(info, true);\n };\n const userDefinedOutput = config.build?.rollupOptions?.output;\n const hasOtherOutput =\n Array.isArray(userDefinedOutput) && userDefinedOutput.length > 1;\n const hasValidOutput = userDefinedOutput && !hasOtherOutput;\n const hasObjectOutput =\n userDefinedOutput &&\n !hasOtherOutput &&\n typeof userDefinedOutput === \"object\" &&\n userDefinedOutput !== null;\n\n const userDefinedAssetFileNames = hasObjectOutput\n ? \"assetFileNames\" in userDefinedOutput\n ? userDefinedOutput.assetFileNames\n : undefined\n : // find the other asset file names\n hasOtherOutput\n ? (userDefinedOutput.find((o) => o.assetFileNames) as OutputOptions)\n .assetFileNames\n : undefined;\n\n const userDefinedChunkFileNames = hasValidOutput\n ? \"chunkFileNames\" in userDefinedOutput\n ? userDefinedOutput.chunkFileNames\n : undefined\n : undefined;\n const userDefinedEntryFileNames = hasValidOutput\n ? \"entryFileNames\" in userDefinedOutput\n ? userDefinedOutput.entryFileNames\n : undefined\n : undefined;\n\n let stashedReturns: Record<string, string> = {};\n const pluginOutput = {\n preserveModulesRoot: userOptions.build.preserveModulesRoot\n ? userOptions.moduleBase\n : undefined,\n entryFileNames:\n userDefinedEntryFileNames ??\n ((info) => {\n const input =\n info.facadeModuleId ??\n info.name + userOptions.autoDiscover.moduleExtension;\n const inputId = input + (ssr ? \"-ssr\" : \"\");\n if (!stashedReturns[inputId]) {\n const r = handleSsrName(\n info,\n input,\n userOptions.build.entryFile,\n ssr\n );\n if (userOptions.verbose) {\n console.log(\"entryFileNames\", input, r);\n }\n stashedReturns[inputId] = r;\n }\n return stashedReturns[inputId];\n }),\n assetFileNames: process.env[\"VITEST\"]\n ? undefined\n : userDefinedAssetFileNames ??\n ((i) => {\n const input = i.originalFileNames[0];\n const inputId = input + (ssr ? \"-ssr\" : \"\");\n\n if (!stashedReturns[inputId]) {\n const r = handleSsrName(i, input, userOptions.build.assetFile, ssr);\n\n if (userOptions.verbose) {\n console.log(\"assetFileNames\", input, stashedReturns[input]);\n }\n stashedReturns[inputId] = r;\n }\n return stashedReturns[inputId];\n }),\n chunkFileNames:\n userDefinedChunkFileNames ??\n ((info) => {\n const input =\n info.facadeModuleId ??\n info.name + userOptions.autoDiscover.moduleExtension;\n const inputId = input + (ssr ? \"-ssr\" : \"\");\n\n if (!stashedReturns[inputId]) {\n const r = handleSsrName(\n info,\n input,\n userOptions.build.chunkFile,\n ssr\n );\n\n if (userOptions.verbose) {\n console.log(\"chunkFileNames\", input, stashedReturns[input]);\n }\n stashedReturns[inputId] = r;\n }\n return stashedReturns[inputId];\n }),\n format: \"esm\",\n exports: \"named\",\n } satisfies OutputOptions;\n\n let newOutput = Array.isArray(config.build?.rollupOptions?.output)\n ? [...config.build?.rollupOptions?.output, pluginOutput]\n : typeof config.build?.rollupOptions?.output === \"object\" &&\n config.build?.rollupOptions?.output !== null\n ? [config.build?.rollupOptions?.output, pluginOutput]\n : pluginOutput;\n const vitePrefix = config.envPrefix ?? DEFAULT_CONFIG.ENV_PREFIX;\n const mode = config.mode ?? process.env[\"VITE_MODE\"];\n const minify = config.build?.minify;\n\n const srrConfig = {\n ...config.ssr,\n target: config.ssr?.target ?? \"node\",\n optimizeDeps: {\n ...config.ssr?.optimizeDeps,\n include: config.ssr?.optimizeDeps?.include ?? [\n \"react\",\n \"react-dom\",\n \"react-server-dom-esm/client\",\n ],\n },\n resolve: {\n ...config.ssr?.resolve,\n externalConditions: config.ssr?.resolve?.externalConditions ?? [\n \"react-server\",\n ],\n },\n };\n let publicOrigin =\n userOptions.publicOrigin ?? process.env.VITE_PUBLIC_ORIGIN ?? \"\";\n let PROD = mode === \"production\";\n let DEV = mode === \"development\";\n if (configEnv.command === \"serve\" && !configEnv.isPreview) {\n publicOrigin = `http${config.server?.https ? \"s\" : \"\"}://${\n typeof config.server?.host === \"string\"\n ? config.server?.host\n : \"localhost\"\n }:${typeof config.server?.port === \"number\" ? config.server?.port : 5173}`;\n }\n const ssrDefine = ssr\n ? {\n [`process.env.${vitePrefix}SSR`]: `${ssr}`,\n [`process.env.${vitePrefix}DEV`]: `${DEV}`,\n [`process.env.${vitePrefix}PROD`]: `${PROD}`,\n [`process.env.${vitePrefix}MODE`]: `\"${mode}\"`,\n [`process.env.${vitePrefix}BASE_URL`]: `\"${userOptions.moduleBaseURL}\"`,\n [`process.env.${vitePrefix}PUBLIC_ORIGIN`]: `\"${publicOrigin}\"`,\n }\n : {};\n const define = {\n ...config.define,\n [`import.meta.env.PUBLIC_ORIGIN`]: `\"${publicOrigin}\"`,\n ...ssrDefine,\n };\n // these will never be cleaned up, because, we are resolving the user config\n // and it's assumed the thread closes after this and we don't want\n // it to change after the config has been resolved\n if (process.env.VITE_BASE_URL !== userOptions.moduleBaseURL) {\n process.env.VITE_BASE_URL = userOptions.moduleBaseURL;\n }\n if (process.env.VITE_PUBLIC_ORIGIN !== publicOrigin) {\n process.env.VITE_PUBLIC_ORIGIN = publicOrigin;\n }\n\n if (condition === \"react-client\") {\n // client plugin build options (client plugin still outputs server files)\n const clientConfig = {\n ...config,\n root: root,\n mode: mode,\n base: userOptions.moduleBaseURL,\n envPrefix: vitePrefix,\n resolve: {\n ...config.resolve,\n external: config.resolve?.external ?? [\n \"react\",\n \"react-dom\",\n \"react-server-dom-esm/client\",\n ],\n },\n define: define,\n ssr: srrConfig,\n // client build options\n build: {\n ...config.build,\n modulePreload: config.build?.modulePreload ?? false,\n emptyOutDir: config.build?.emptyOutDir ?? true,\n outDir: config.build?.outDir ?? join(userOptions.build.outDir, envDir),\n assetsDir: config.build?.assetsDir ?? userOptions.build.assetsDir,\n copyPublicDir:\n typeof config.build?.copyPublicDir === \"boolean\"\n ? config.build?.copyPublicDir\n : !ssr,\n // modern browsers\n target: config.build?.target ?? [\"esnext\"],\n minify: minify,\n rollupOptions: {\n ...config.build?.rollupOptions,\n input: {\n ...autoDiscoveredFiles.inputs,\n },\n output: newOutput,\n preserveEntrySignatures:\n config.build?.rollupOptions?.preserveEntrySignatures ??\n \"exports-only\",\n },\n ssr: ssr,\n manifest: config.build?.manifest ?? `.vite/manifest.json`,\n ssrManifest: config.build?.ssrManifest ?? `.vite/ssr-manifest.json`,\n ssrEmitAssets: config.build?.ssrEmitAssets ?? true,\n cssCodeSplit:\n typeof config.build?.cssCodeSplit === \"boolean\"\n ? config.build?.cssCodeSplit\n : true,\n },\n } satisfies ResolvedUserConfig;\n stashedUserConfig[envId] = clientConfig;\n return {\n type: \"success\",\n userConfig: clientConfig,\n };\n } else {\n const serverConfig = {\n ...config,\n root: root,\n mode: mode,\n base: userOptions.moduleBaseURL,\n envPrefix: vitePrefix,\n resolve: {\n ...config.resolve,\n externalConditions: config.resolve?.externalConditions ?? [\n \"react-server\",\n ],\n },\n define: define,\n ssr: srrConfig,\n // server build options\n build: {\n ...config.build,\n modulePreload: config.build?.modulePreload ?? false,\n emptyOutDir: config.build?.emptyOutDir ?? true,\n outDir: config.build?.outDir ?? join(userOptions.build.outDir, envDir),\n target: config.build?.target ?? \"node18\",\n minify: minify,\n ssr: ssr,\n manifest: config.build?.manifest ?? `.vite/manifest.json`,\n ssrManifest: config.build?.ssrManifest ?? `.vite/ssr-manifest.json`,\n ssrEmitAssets:\n typeof config.build?.ssrEmitAssets === \"boolean\"\n ? config.build?.ssrEmitAssets\n : true,\n copyPublicDir:\n typeof config.build?.copyPublicDir === \"boolean\"\n ? config.build?.copyPublicDir\n : !ssr,\n assetsDir: config.build?.assetsDir ?? userOptions.build.assetsDir,\n // Ensure CSS files are output to static directory\n cssCodeSplit:\n typeof config.build?.cssCodeSplit === \"boolean\"\n ? config.build?.cssCodeSplit\n : true,\n rollupOptions: {\n ...config.build?.rollupOptions,\n input: autoDiscoveredFiles.inputs,\n preserveEntrySignatures:\n config.build?.rollupOptions?.preserveEntrySignatures ?? \"strict\",\n output: newOutput,\n },\n },\n } satisfies ResolvedUserConfig;\n stashedUserConfig[envId] = serverConfig;\n return {\n type: \"success\",\n userConfig: serverConfig,\n };\n }\n}\n"],"names":["ssr"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputNormalizer.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/inputNormalizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"inputNormalizer.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/inputNormalizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,0BAA0B,EAC1B,eAAe,EAEhB,MAAM,aAAa,CAAC;AA4KrB;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,cAAgD,EAChD,mBAA+B,EAC/B,eAA8D,GAC/D,EAAE,0BAA0B,GAAG,eAAe,CAwE9C"}
|
|
@@ -12,6 +12,9 @@ const resolveExtensionOptions = (removeExtension) => {
|
|
|
12
12
|
if (typeof removeExtension === "boolean") {
|
|
13
13
|
if (removeExtension) {
|
|
14
14
|
return (path2) => {
|
|
15
|
+
if (path2.endsWith(".client") || path2.endsWith(".server")) {
|
|
16
|
+
return path2;
|
|
17
|
+
}
|
|
15
18
|
const extensionIndex = path2.lastIndexOf(".");
|
|
16
19
|
return extensionIndex !== -1 ? path2.slice(0, extensionIndex) : path2;
|
|
17
20
|
};
|
|
@@ -26,6 +29,9 @@ const resolveExtensionOptions = (removeExtension) => {
|
|
|
26
29
|
}
|
|
27
30
|
if (typeof removeExtension === "function") {
|
|
28
31
|
return (path2) => {
|
|
32
|
+
if (path2.endsWith(".client") || path2.endsWith(".server")) {
|
|
33
|
+
return path2;
|
|
34
|
+
}
|
|
29
35
|
const extIndex = path2.lastIndexOf(".");
|
|
30
36
|
if (extIndex !== -1) {
|
|
31
37
|
const extension = path2.slice(extIndex);
|
|
@@ -164,7 +170,8 @@ function createInputNormalizer({
|
|
|
164
170
|
}
|
|
165
171
|
stashedNormalizer = (input) => {
|
|
166
172
|
const [key, path2] = normalizeInput(input);
|
|
167
|
-
|
|
173
|
+
let normalizedPath = path2.startsWith(moduleBasePath) ? path2.slice(moduleBasePath.length) : path2;
|
|
174
|
+
normalizedPath = normalizedPath.startsWith("/") ? normalizedPath.slice(1) : normalizedPath;
|
|
168
175
|
const virtualPrefix = key.match(/^\0+/) ?? "";
|
|
169
176
|
const finalPath = virtualPrefix ? virtualPrefix.length && normalizedPath.startsWith(virtualPrefix[0]) ? normalizedPath : virtualPrefix.length ? virtualPrefix[0] + normalizedPath : normalizedPath : normalizedPath;
|
|
170
177
|
return [key, finalPath];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputNormalizer.js","sources":["../../../plugin/helpers/inputNormalizer.ts"],"sourcesContent":["import { normalizePath } from \"vite\";\nimport type { CreateInputNormalizerProps, InputNormalizer, NormalizerInput } from \"../types.js\";\nimport path, { join, sep } from \"path\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\n\nlet stashedNormalizer: InputNormalizer | null = null;\n\n\nconst resolveExtensionOptions = (\n removeExtension: CreateInputNormalizerProps[\"removeExtension\"]\n) => {\n if (typeof removeExtension === \"boolean\") {\n if (removeExtension) {\n return (path: string) => {\n const extensionIndex = path.lastIndexOf(\".\");\n return extensionIndex !== -1 ? path.slice(0, extensionIndex) : path;\n };\n }\n return (path: string) => path;\n }\n if (typeof removeExtension === \"string\") {\n return (path: string) => path.replace(removeExtension, \"\");\n }\n if (removeExtension instanceof RegExp) {\n return (path: string) =>\n removeExtension.test(path) ? path.replace(removeExtension, \"\") : path;\n }\n if (typeof removeExtension === \"function\") {\n return (path: string) => {\n const extIndex = path.lastIndexOf(\".\");\n if (extIndex !== -1) {\n const extension = path.slice(extIndex);\n if (removeExtension(extension)) {\n return path.slice(0, extIndex);\n }\n }\n return path;\n };\n }\n return (path: string) => path;\n};\n\nconst resolveRootOption = (\n root: CreateInputNormalizerProps[\"root\"],\n preserveModulesRoot: CreateInputNormalizerProps[\"preserveModulesRoot\"]\n) => {\n if (typeof preserveModulesRoot === \"string\" && typeof root === \"string\") {\n const normalizedPreserveModulesRoot = normalizePath(preserveModulesRoot);\n if (root !== \"\" && normalizedPreserveModulesRoot.startsWith(root)) {\n return normalizedPreserveModulesRoot.slice(root.length + 1);\n }\n return \"\";\n } else if (\n typeof preserveModulesRoot === \"string\" &&\n typeof root !== \"string\"\n ) {\n return normalizePath(preserveModulesRoot);\n }\n return \"\";\n};\n\nconst createKeyNormalizer =\n ({\n root: normalizedRoot,\n preserveModulesRoot,\n handleExtension,\n moduleBasePath,\n }: {\n root: string;\n preserveModulesRoot: string | undefined;\n handleExtension: (path: string) => string;\n moduleBasePath: string | undefined;\n }) =>\n (key: string) => {\n if (key.includes(\"?\")) {\n key = key.split(\"?\")[0];\n }\n\n // Handle virtual modules first\n const virtualPrefix = key.match(/^\\0+/) ?? \"\";\n const actualKey = virtualPrefix ? key.slice(virtualPrefix[0].length) : key;\n\n let moduleId = normalizePath(actualKey);\n\n // Normalize root path to handle both absolute and relative paths\n const normalizedRootPath = normalizePath(normalizedRoot);\n if (moduleId.startsWith(normalizedRootPath)) {\n moduleId = moduleId.slice(normalizedRootPath.length);\n }\n if (\n typeof moduleBasePath === \"string\" &&\n moduleBasePath !== \"\" &&\n moduleBasePath !== \"/\"\n ) {\n moduleId = moduleId.startsWith(\n moduleBasePath.endsWith(sep) ? moduleBasePath : moduleBasePath + sep\n )\n ? moduleId.slice(\n moduleBasePath.length +\n (moduleBasePath.endsWith(sep) ? 0 : sep.length)\n )\n : moduleId;\n }\n\n moduleId = handleExtension(moduleId);\n while (moduleId.startsWith(\"/\") || moduleId.startsWith(\".\")) {\n moduleId = moduleId.slice(1);\n }\n while (moduleId.endsWith(\"/\")) {\n moduleId = moduleId.slice(0, -1);\n }\n if (typeof preserveModulesRoot === \"string\" && preserveModulesRoot !== \"\") {\n moduleId = moduleId.startsWith(preserveModulesRoot)\n ? moduleId.slice(preserveModulesRoot.length + path.sep.length)\n : moduleId;\n }\n\n // Add virtual prefix back\n return virtualPrefix + moduleId;\n };\n\nconst createPathNormalizer =\n ({\n root,\n preserveModulesRoot,\n moduleBasePath,\n }: {\n root: string;\n preserveModulesRoot: string | undefined;\n moduleBasePath: string | undefined;\n }) =>\n (path: string) => {\n if (typeof path !== \"string\") {\n throw new Error(`Invalid path: ${JSON.stringify(path)}`);\n }\n if (path.includes(\"?\")) {\n path = path.split(\"?\")[0];\n }\n let normalPath = normalizePath(path);\n if (normalPath.startsWith(root)) {\n normalPath = normalPath.slice(root.length);\n }\n if (\n typeof moduleBasePath === \"string\" &&\n moduleBasePath !== \"\" &&\n moduleBasePath !== \"/\"\n ) {\n normalPath = normalPath.startsWith(\n moduleBasePath.endsWith(sep) ? moduleBasePath : moduleBasePath + sep\n )\n ? normalPath.slice(\n moduleBasePath.length +\n (moduleBasePath.endsWith(sep) ? 0 : sep.length)\n )\n : normalPath;\n }\n if (typeof preserveModulesRoot === \"string\" && preserveModulesRoot !== \"\") {\n normalPath = normalPath.startsWith(preserveModulesRoot)\n ? normalPath.slice(preserveModulesRoot.length)\n : normalPath;\n }\n while (normalPath.endsWith(\"/\")) {\n normalPath = normalPath.slice(0, -1);\n }\n return normalPath;\n };\n/**\n * @description Create a function that normalizes the input\n * @param root - The root of the project\n * @param preserveModulesRoot - The root of the preserve modules\n * @param removeExtension - Whether to remove the extension of the file\n * @returns A function that normalizes the input\n */\nexport function createInputNormalizer({\n root,\n moduleBasePath = DEFAULT_CONFIG.MODULE_BASE_PATH,\n preserveModulesRoot = undefined,\n removeExtension = DEFAULT_CONFIG.AUTO_DISCOVER.moduleExtension,\n}: CreateInputNormalizerProps): InputNormalizer {\n if (stashedNormalizer) {\n return stashedNormalizer;\n }\n const relativeRoot = resolveRootOption(root, preserveModulesRoot);\n const handleExtension = resolveExtensionOptions(removeExtension);\n const normalizeEntryKey = createKeyNormalizer({\n root: root,\n preserveModulesRoot: preserveModulesRoot,\n handleExtension,\n moduleBasePath,\n });\n const normalizeEntryPath = createPathNormalizer({\n root: root,\n preserveModulesRoot: relativeRoot,\n moduleBasePath,\n });\n function normalizeInput(id: NormalizerInput): [string, string] {\n // Normalize both paths to use POSIX separators\n if (Array.isArray(id)) {\n const [key, path] = id;\n if (typeof key === \"string\" && Array.isArray(path) && path.length === 2) {\n const isNumber = !isNaN(Number(key));\n if (isNumber) {\n // ignore it\n return normalizeInput([path[0], path[1]]);\n }\n return normalizeInput([join(key, path[0]), path[1]]);\n }\n if (typeof key !== \"string\" || typeof path !== \"string\") {\n throw new Error(`Invalid input: ${JSON.stringify(id)}`);\n }\n return [normalizeEntryKey(key), normalizeEntryPath(path)];\n } else if (typeof id === \"string\") {\n // Return both the normalized ID and original normalized path\n return [normalizeEntryKey(id), normalizeEntryPath(id)];\n } else if (\n typeof id === \"object\" &&\n id !== null &&\n \"$$typeof\" in id &&\n \"$$id\" in id &&\n typeof id.$$id === \"string\"\n ) {\n const normalized: [string, string] = [\n normalizeEntryKey(id.$$id),\n normalizeEntryPath(id.$$id),\n ];\n return normalized;\n }\n throw new Error(`Invalid input type: ${typeof id}`);\n }\n\n stashedNormalizer = (input: NormalizerInput): [string, string] => {\n const [key, path] = normalizeInput(input);\n const normalizedPath = path.startsWith(moduleBasePath) ? path.slice(moduleBasePath.length) : path;\n const virtualPrefix = key.match(/^\\0+/) ?? \"\";\n // If key has virtual prefix, ensure path has it too\n const finalPath = virtualPrefix\n ? virtualPrefix.length && normalizedPath.startsWith(virtualPrefix[0])\n ? normalizedPath\n : virtualPrefix.length\n ? virtualPrefix[0] + normalizedPath\n : normalizedPath\n : normalizedPath;\n return [key, finalPath];\n };\n return stashedNormalizer;\n}\n"],"names":["path"],"mappings":";;;;;;;;;AAKA,IAAI,iBAA4C,GAAA,IAAA;AAGhD,MAAM,uBAAA,GAA0B,CAC9B,eACG,KAAA;AACH,EAAI,IAAA,OAAO,oBAAoB,SAAW,EAAA;AACxC,IAAA,IAAI,eAAiB,EAAA;AACnB,MAAA,OAAO,CAACA,KAAiB,KAAA;AACvB,QAAM,MAAA,cAAA,GAAiBA,KAAK,CAAA,WAAA,CAAY,GAAG,CAAA;AAC3C,QAAA,OAAO,mBAAmB,EAAKA,GAAAA,KAAAA,CAAK,KAAM,CAAA,CAAA,EAAG,cAAc,CAAIA,GAAAA,KAAAA;AAAA,OACjE;AAAA;AAEF,IAAA,OAAO,CAACA,KAAiBA,KAAAA,KAAAA;AAAA;AAE3B,EAAI,IAAA,OAAO,oBAAoB,QAAU,EAAA;AACvC,IAAA,OAAO,CAACA,KAAAA,KAAiBA,KAAK,CAAA,OAAA,CAAQ,iBAAiB,EAAE,CAAA;AAAA;AAE3D,EAAA,IAAI,2BAA2B,MAAQ,EAAA;AACrC,IAAO,OAAA,CAACA,KACN,KAAA,eAAA,CAAgB,IAAKA,CAAAA,KAAI,IAAIA,KAAK,CAAA,OAAA,CAAQ,eAAiB,EAAA,EAAE,CAAIA,GAAAA,KAAAA;AAAA;AAErE,EAAI,IAAA,OAAO,oBAAoB,UAAY,EAAA;AACzC,IAAA,OAAO,CAACA,KAAiB,KAAA;AACvB,MAAM,MAAA,QAAA,GAAWA,KAAK,CAAA,WAAA,CAAY,GAAG,CAAA;AACrC,MAAA,IAAI,aAAa,EAAI,EAAA;AACnB,QAAM,MAAA,SAAA,GAAYA,KAAK,CAAA,KAAA,CAAM,QAAQ,CAAA;AACrC,QAAI,IAAA,eAAA,CAAgB,SAAS,CAAG,EAAA;AAC9B,UAAOA,OAAAA,KAAAA,CAAK,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAA;AAAA;AAC/B;AAEF,MAAOA,OAAAA,KAAAA;AAAA,KACT;AAAA;AAEF,EAAA,OAAO,CAACA,KAAiBA,KAAAA,KAAAA;AAC3B,CAAA;AAEA,MAAM,iBAAA,GAAoB,CACxB,IAAA,EACA,mBACG,KAAA;AACH,EAAA,IAAI,OAAO,mBAAA,KAAwB,QAAY,IAAA,OAAO,SAAS,QAAU,EAAA;AACvE,IAAM,MAAA,6BAAA,GAAgC,cAAc,mBAAmB,CAAA;AACvE,IAAA,IAAI,IAAS,KAAA,EAAA,IAAM,6BAA8B,CAAA,UAAA,CAAW,IAAI,CAAG,EAAA;AACjE,MAAA,OAAO,6BAA8B,CAAA,KAAA,CAAM,IAAK,CAAA,MAAA,GAAS,CAAC,CAAA;AAAA;AAE5D,IAAO,OAAA,EAAA;AAAA,aAEP,OAAO,mBAAA,KAAwB,QAC/B,IAAA,OAAO,SAAS,QAChB,EAAA;AACA,IAAA,OAAO,cAAc,mBAAmB,CAAA;AAAA;AAE1C,EAAO,OAAA,EAAA;AACT,CAAA;AAEA,MAAM,sBACJ,CAAC;AAAA,EACC,IAAM,EAAA,cAAA;AAAA,EACN,mBAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,KAMA,CAAC,GAAgB,KAAA;AACf,EAAI,IAAA,GAAA,CAAI,QAAS,CAAA,GAAG,CAAG,EAAA;AACrB,IAAA,GAAA,GAAM,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA;AAAA;AAIxB,EAAA,MAAM,aAAgB,GAAA,GAAA,CAAI,KAAM,CAAA,MAAM,CAAK,IAAA,EAAA;AAC3C,EAAM,MAAA,SAAA,GAAY,gBAAgB,GAAI,CAAA,KAAA,CAAM,cAAc,CAAC,CAAA,CAAE,MAAM,CAAI,GAAA,GAAA;AAEvE,EAAI,IAAA,QAAA,GAAW,cAAc,SAAS,CAAA;AAGtC,EAAM,MAAA,kBAAA,GAAqB,cAAc,cAAc,CAAA;AACvD,EAAI,IAAA,QAAA,CAAS,UAAW,CAAA,kBAAkB,CAAG,EAAA;AAC3C,IAAW,QAAA,GAAA,QAAA,CAAS,KAAM,CAAA,kBAAA,CAAmB,MAAM,CAAA;AAAA;AAErD,EAAA,IACE,OAAO,cAAmB,KAAA,QAAA,IAC1B,cAAmB,KAAA,EAAA,IACnB,mBAAmB,GACnB,EAAA;AACA,IAAA,QAAA,GAAW,QAAS,CAAA,UAAA;AAAA,MAClB,cAAe,CAAA,QAAA,CAAS,GAAG,CAAA,GAAI,iBAAiB,cAAiB,GAAA;AAAA,QAE/D,QAAS,CAAA,KAAA;AAAA,MACP,eAAe,MACZ,IAAA,cAAA,CAAe,SAAS,GAAG,CAAA,GAAI,IAAI,GAAI,CAAA,MAAA;AAAA,KAE5C,GAAA,QAAA;AAAA;AAGN,EAAA,QAAA,GAAW,gBAAgB,QAAQ,CAAA;AACnC,EAAA,OAAO,SAAS,UAAW,CAAA,GAAG,KAAK,QAAS,CAAA,UAAA,CAAW,GAAG,CAAG,EAAA;AAC3D,IAAW,QAAA,GAAA,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA;AAE7B,EAAO,OAAA,QAAA,CAAS,QAAS,CAAA,GAAG,CAAG,EAAA;AAC7B,IAAW,QAAA,GAAA,QAAA,CAAS,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA;AAAA;AAEjC,EAAA,IAAI,OAAO,mBAAA,KAAwB,QAAY,IAAA,mBAAA,KAAwB,EAAI,EAAA;AACzE,IAAW,QAAA,GAAA,QAAA,CAAS,UAAW,CAAA,mBAAmB,CAC9C,GAAA,QAAA,CAAS,KAAM,CAAA,mBAAA,CAAoB,MAAS,GAAA,IAAA,CAAK,GAAI,CAAA,MAAM,CAC3D,GAAA,QAAA;AAAA;AAIN,EAAA,OAAO,aAAgB,GAAA,QAAA;AACzB,CAAA;AAEF,MAAM,uBACJ,CAAC;AAAA,EACC,IAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF,CAAA,KAKA,CAACA,KAAiB,KAAA;AAChB,EAAI,IAAA,OAAOA,UAAS,QAAU,EAAA;AAC5B,IAAA,MAAM,IAAI,KAAM,CAAA,CAAA,cAAA,EAAiB,KAAK,SAAUA,CAAAA,KAAI,CAAC,CAAE,CAAA,CAAA;AAAA;AAEzD,EAAIA,IAAAA,KAAAA,CAAK,QAAS,CAAA,GAAG,CAAG,EAAA;AACtB,IAAAA,KAAOA,GAAAA,KAAAA,CAAK,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA;AAAA;AAE1B,EAAI,IAAA,UAAA,GAAa,cAAcA,KAAI,CAAA;AACnC,EAAI,IAAA,UAAA,CAAW,UAAW,CAAA,IAAI,CAAG,EAAA;AAC/B,IAAa,UAAA,GAAA,UAAA,CAAW,KAAM,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AAE3C,EAAA,IACE,OAAO,cAAmB,KAAA,QAAA,IAC1B,cAAmB,KAAA,EAAA,IACnB,mBAAmB,GACnB,EAAA;AACA,IAAA,UAAA,GAAa,UAAW,CAAA,UAAA;AAAA,MACtB,cAAe,CAAA,QAAA,CAAS,GAAG,CAAA,GAAI,iBAAiB,cAAiB,GAAA;AAAA,QAE/D,UAAW,CAAA,KAAA;AAAA,MACT,eAAe,MACZ,IAAA,cAAA,CAAe,SAAS,GAAG,CAAA,GAAI,IAAI,GAAI,CAAA,MAAA;AAAA,KAE5C,GAAA,UAAA;AAAA;AAEN,EAAA,IAAI,OAAO,mBAAA,KAAwB,QAAY,IAAA,mBAAA,KAAwB,EAAI,EAAA;AACzE,IAAa,UAAA,GAAA,UAAA,CAAW,WAAW,mBAAmB,CAAA,GAClD,WAAW,KAAM,CAAA,mBAAA,CAAoB,MAAM,CAC3C,GAAA,UAAA;AAAA;AAEN,EAAO,OAAA,UAAA,CAAW,QAAS,CAAA,GAAG,CAAG,EAAA;AAC/B,IAAa,UAAA,GAAA,UAAA,CAAW,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA;AAAA;AAErC,EAAO,OAAA,UAAA;AACT,CAAA;AAQK,SAAS,qBAAsB,CAAA;AAAA,EACpC,IAAA;AAAA,EACA,iBAAiB,cAAe,CAAA,gBAAA;AAAA,EAChC,mBAAsB,GAAA,SAAA;AAAA,EACtB,eAAA,GAAkB,eAAe,aAAc,CAAA;AACjD,CAAgD,EAAA;AAC9C,EAAA,IAAI,iBAAmB,EAAA;AACrB,IAAO,OAAA,iBAAA;AAAA;AAET,EAAM,MAAA,YAAA,GAAe,iBAAkB,CAAA,IAAA,EAAM,mBAAmB,CAAA;AAChE,EAAM,MAAA,eAAA,GAAkB,wBAAwB,eAAe,CAAA;AAC/D,EAAA,MAAM,oBAAoB,mBAAoB,CAAA;AAAA,IAC5C,IAAA;AAAA,IACA,mBAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,qBAAqB,oBAAqB,CAAA;AAAA,IAC9C,IAAA;AAAA,IACA,mBAAqB,EAAA,YAAA;AAAA,IACrB;AAAA,GACD,CAAA;AACD,EAAA,SAAS,eAAe,EAAuC,EAAA;AAE7D,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,EAAE,CAAG,EAAA;AACrB,MAAM,MAAA,CAAC,GAAKA,EAAAA,KAAI,CAAI,GAAA,EAAA;AACpB,MAAI,IAAA,OAAO,QAAQ,QAAY,IAAA,KAAA,CAAM,QAAQA,KAAI,CAAA,IAAKA,KAAK,CAAA,MAAA,KAAW,CAAG,EAAA;AACvE,QAAA,MAAM,QAAW,GAAA,CAAC,KAAM,CAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AACnC,QAAA,IAAI,QAAU,EAAA;AAEZ,UAAO,OAAA,cAAA,CAAe,CAACA,KAAK,CAAA,CAAC,GAAGA,KAAK,CAAA,CAAC,CAAC,CAAC,CAAA;AAAA;AAE1C,QAAO,OAAA,cAAA,CAAe,CAAC,IAAA,CAAK,GAAKA,EAAAA,KAAAA,CAAK,CAAC,CAAC,CAAGA,EAAAA,KAAAA,CAAK,CAAC,CAAC,CAAC,CAAA;AAAA;AAErD,MAAA,IAAI,OAAO,GAAA,KAAQ,QAAY,IAAA,OAAOA,UAAS,QAAU,EAAA;AACvD,QAAA,MAAM,IAAI,KAAM,CAAA,CAAA,eAAA,EAAkB,KAAK,SAAU,CAAA,EAAE,CAAC,CAAE,CAAA,CAAA;AAAA;AAExD,MAAA,OAAO,CAAC,iBAAkB,CAAA,GAAG,CAAG,EAAA,kBAAA,CAAmBA,KAAI,CAAC,CAAA;AAAA,KAC1D,MAAA,IAAW,OAAO,EAAA,KAAO,QAAU,EAAA;AAEjC,MAAA,OAAO,CAAC,iBAAkB,CAAA,EAAE,CAAG,EAAA,kBAAA,CAAmB,EAAE,CAAC,CAAA;AAAA,KAErD,MAAA,IAAA,OAAO,EAAO,KAAA,QAAA,IACd,EAAO,KAAA,IAAA,IACP,UAAc,IAAA,EAAA,IACd,MAAU,IAAA,EAAA,IACV,OAAO,EAAA,CAAG,SAAS,QACnB,EAAA;AACA,MAAA,MAAM,UAA+B,GAAA;AAAA,QACnC,iBAAA,CAAkB,GAAG,IAAI,CAAA;AAAA,QACzB,kBAAA,CAAmB,GAAG,IAAI;AAAA,OAC5B;AACA,MAAO,OAAA,UAAA;AAAA;AAET,IAAA,MAAM,IAAI,KAAA,CAAM,CAAuB,oBAAA,EAAA,OAAO,EAAE,CAAE,CAAA,CAAA;AAAA;AAGpD,EAAA,iBAAA,GAAoB,CAAC,KAA6C,KAAA;AAChE,IAAA,MAAM,CAAC,GAAA,EAAKA,KAAI,CAAA,GAAI,eAAe,KAAK,CAAA;AACxC,IAAM,MAAA,cAAA,GAAiBA,MAAK,UAAW,CAAA,cAAc,IAAIA,KAAK,CAAA,KAAA,CAAM,cAAe,CAAA,MAAM,CAAIA,GAAAA,KAAAA;AAC7F,IAAA,MAAM,aAAgB,GAAA,GAAA,CAAI,KAAM,CAAA,MAAM,CAAK,IAAA,EAAA;AAE3C,IAAA,MAAM,YAAY,aACd,GAAA,aAAA,CAAc,MAAU,IAAA,cAAA,CAAe,WAAW,aAAc,CAAA,CAAC,CAAC,CAAA,GAChE,iBACA,aAAc,CAAA,MAAA,GACd,cAAc,CAAC,CAAA,GAAI,iBACnB,cACF,GAAA,cAAA;AACJ,IAAO,OAAA,CAAC,KAAK,SAAS,CAAA;AAAA,GACxB;AACA,EAAO,OAAA,iBAAA;AACT;;;;"}
|
|
1
|
+
{"version":3,"file":"inputNormalizer.js","sources":["../../../plugin/helpers/inputNormalizer.ts"],"sourcesContent":["import { normalizePath } from \"vite\";\nimport type {\n CreateInputNormalizerProps,\n InputNormalizer,\n NormalizerInput,\n} from \"../types.js\";\nimport path, { join, sep } from \"path\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\n\nlet stashedNormalizer: InputNormalizer | null = null;\n\nconst resolveExtensionOptions = (\n removeExtension: CreateInputNormalizerProps[\"removeExtension\"]\n) => {\n if (typeof removeExtension === \"boolean\") {\n if (removeExtension) {\n return (path: string) => {\n // if extension is client or server, don't remove it\n if (path.endsWith(\".client\") || path.endsWith(\".server\")) {\n return path;\n }\n const extensionIndex = path.lastIndexOf(\".\");\n\n return extensionIndex !== -1 ? path.slice(0, extensionIndex) : path;\n };\n }\n return (path: string) => path;\n }\n if (typeof removeExtension === \"string\") {\n return (path: string) => path.replace(removeExtension, \"\");\n }\n if (removeExtension instanceof RegExp) {\n return (path: string) =>\n removeExtension.test(path) ? path.replace(removeExtension, \"\") : path;\n }\n if (typeof removeExtension === \"function\") {\n return (path: string) => {\n if (path.endsWith(\".client\") || path.endsWith(\".server\")) {\n return path;\n }\n const extIndex = path.lastIndexOf(\".\");\n if (extIndex !== -1) {\n const extension = path.slice(extIndex);\n if (removeExtension(extension)) {\n return path.slice(0, extIndex);\n }\n }\n return path;\n };\n }\n return (path: string) => path;\n};\n\nconst resolveRootOption = (\n root: CreateInputNormalizerProps[\"root\"],\n preserveModulesRoot: CreateInputNormalizerProps[\"preserveModulesRoot\"]\n) => {\n if (typeof preserveModulesRoot === \"string\" && typeof root === \"string\") {\n const normalizedPreserveModulesRoot = normalizePath(preserveModulesRoot);\n if (root !== \"\" && normalizedPreserveModulesRoot.startsWith(root)) {\n return normalizedPreserveModulesRoot.slice(root.length + 1);\n }\n return \"\";\n } else if (\n typeof preserveModulesRoot === \"string\" &&\n typeof root !== \"string\"\n ) {\n return normalizePath(preserveModulesRoot);\n }\n return \"\";\n};\n\nconst createKeyNormalizer =\n ({\n root: normalizedRoot,\n preserveModulesRoot,\n handleExtension,\n moduleBasePath,\n }: {\n root: string;\n preserveModulesRoot: string | undefined;\n handleExtension: (path: string) => string;\n moduleBasePath: string | undefined;\n }) =>\n (key: string) => {\n if (key.includes(\"?\")) {\n key = key.split(\"?\")[0];\n }\n\n // Handle virtual modules first\n const virtualPrefix = key.match(/^\\0+/) ?? \"\";\n const actualKey = virtualPrefix ? key.slice(virtualPrefix[0].length) : key;\n\n let moduleId = normalizePath(actualKey);\n\n // Normalize root path to handle both absolute and relative paths\n const normalizedRootPath = normalizePath(normalizedRoot);\n if (moduleId.startsWith(normalizedRootPath)) {\n moduleId = moduleId.slice(normalizedRootPath.length);\n }\n if (\n typeof moduleBasePath === \"string\" &&\n moduleBasePath !== \"\" &&\n moduleBasePath !== \"/\"\n ) {\n moduleId = moduleId.startsWith(\n moduleBasePath.endsWith(sep) ? moduleBasePath : moduleBasePath + sep\n )\n ? moduleId.slice(\n moduleBasePath.length +\n (moduleBasePath.endsWith(sep) ? 0 : sep.length)\n )\n : moduleId;\n }\n\n moduleId = handleExtension(moduleId);\n while (moduleId.startsWith(\"/\") || moduleId.startsWith(\".\")) {\n moduleId = moduleId.slice(1);\n }\n while (moduleId.endsWith(\"/\")) {\n moduleId = moduleId.slice(0, -1);\n }\n if (typeof preserveModulesRoot === \"string\" && preserveModulesRoot !== \"\") {\n moduleId = moduleId.startsWith(preserveModulesRoot)\n ? moduleId.slice(preserveModulesRoot.length + path.sep.length)\n : moduleId;\n }\n\n // Add virtual prefix back\n return virtualPrefix + moduleId;\n };\n\nconst createPathNormalizer =\n ({\n root,\n preserveModulesRoot,\n moduleBasePath,\n }: {\n root: string;\n preserveModulesRoot: string | undefined;\n moduleBasePath: string | undefined;\n }) =>\n (path: string) => {\n if (typeof path !== \"string\") {\n throw new Error(`Invalid path: ${JSON.stringify(path)}`);\n }\n if (path.includes(\"?\")) {\n path = path.split(\"?\")[0];\n }\n let normalPath = normalizePath(path);\n if (normalPath.startsWith(root)) {\n normalPath = normalPath.slice(root.length);\n }\n if (\n typeof moduleBasePath === \"string\" &&\n moduleBasePath !== \"\" &&\n moduleBasePath !== \"/\"\n ) {\n normalPath = normalPath.startsWith(\n moduleBasePath.endsWith(sep) ? moduleBasePath : moduleBasePath + sep\n )\n ? normalPath.slice(\n moduleBasePath.length +\n (moduleBasePath.endsWith(sep) ? 0 : sep.length)\n )\n : normalPath;\n }\n if (typeof preserveModulesRoot === \"string\" && preserveModulesRoot !== \"\") {\n normalPath = normalPath.startsWith(preserveModulesRoot)\n ? normalPath.slice(preserveModulesRoot.length)\n : normalPath;\n }\n while (normalPath.endsWith(\"/\")) {\n normalPath = normalPath.slice(0, -1);\n }\n return normalPath;\n };\n/**\n * @description Create a function that normalizes the input\n * @param root - The root of the project\n * @param preserveModulesRoot - The root of the preserve modules\n * @param removeExtension - Whether to remove the extension of the file\n * @returns A function that normalizes the input\n */\nexport function createInputNormalizer({\n root,\n moduleBasePath = DEFAULT_CONFIG.MODULE_BASE_PATH,\n preserveModulesRoot = undefined,\n removeExtension = DEFAULT_CONFIG.AUTO_DISCOVER.moduleExtension,\n}: CreateInputNormalizerProps): InputNormalizer {\n if (stashedNormalizer) {\n return stashedNormalizer;\n }\n const relativeRoot = resolveRootOption(root, preserveModulesRoot);\n const handleExtension = resolveExtensionOptions(removeExtension);\n const normalizeEntryKey = createKeyNormalizer({\n root: root,\n preserveModulesRoot: preserveModulesRoot,\n handleExtension,\n moduleBasePath,\n });\n const normalizeEntryPath = createPathNormalizer({\n root: root,\n preserveModulesRoot: relativeRoot,\n moduleBasePath,\n });\n function normalizeInput(id: NormalizerInput): [string, string] {\n // Normalize both paths to use POSIX separators\n if (Array.isArray(id)) {\n const [key, path] = id;\n if (typeof key === \"string\" && Array.isArray(path) && path.length === 2) {\n const isNumber = !isNaN(Number(key));\n if (isNumber) {\n // ignore it\n return normalizeInput([path[0], path[1]]);\n }\n return normalizeInput([join(key, path[0]), path[1]]);\n }\n if (typeof key !== \"string\" || typeof path !== \"string\") {\n throw new Error(`Invalid input: ${JSON.stringify(id)}`);\n }\n return [normalizeEntryKey(key), normalizeEntryPath(path)];\n } else if (typeof id === \"string\") {\n // Return both the normalized ID and original normalized path\n return [normalizeEntryKey(id), normalizeEntryPath(id)];\n } else if (\n typeof id === \"object\" &&\n id !== null &&\n \"$$typeof\" in id &&\n \"$$id\" in id &&\n typeof id.$$id === \"string\"\n ) {\n const normalized: [string, string] = [\n normalizeEntryKey(id.$$id),\n normalizeEntryPath(id.$$id),\n ];\n return normalized;\n }\n throw new Error(`Invalid input type: ${typeof id}`);\n }\n\n stashedNormalizer = (input: NormalizerInput): [string, string] => {\n const [key, path] = normalizeInput(input);\n let normalizedPath = path.startsWith(moduleBasePath)\n ? path.slice(moduleBasePath.length)\n : path;\n normalizedPath = normalizedPath.startsWith(\"/\")\n ? normalizedPath.slice(1)\n : normalizedPath;\n const virtualPrefix = key.match(/^\\0+/) ?? \"\";\n // If key has virtual prefix, ensure path has it too\n const finalPath = virtualPrefix\n ? virtualPrefix.length && normalizedPath.startsWith(virtualPrefix[0])\n ? normalizedPath\n : virtualPrefix.length\n ? virtualPrefix[0] + normalizedPath\n : normalizedPath\n : normalizedPath;\n return [key, finalPath];\n };\n return stashedNormalizer;\n}\n"],"names":["path"],"mappings":"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"}
|
|
@@ -33,8 +33,8 @@ export declare function requestInfo(req: Connect.IncomingMessage, userOptions: P
|
|
|
33
33
|
hasJsonHeader: boolean | undefined;
|
|
34
34
|
hasHtmlHeader: boolean | undefined;
|
|
35
35
|
hasRscHeader: boolean | undefined;
|
|
36
|
-
hasServerActionHeaders: boolean
|
|
37
|
-
isServerActionRequest: boolean
|
|
36
|
+
hasServerActionHeaders: boolean;
|
|
37
|
+
isServerActionRequest: boolean;
|
|
38
38
|
isFormContentType: boolean;
|
|
39
39
|
isFormActionRequest: boolean;
|
|
40
40
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestInfo.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/requestInfo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAgB,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAG/D;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,OAAO,CAAC,eAAe,EAC5B,WAAW,EAAE,IAAI,CACf,mBAAmB,EACnB,YAAY,GAAG,OAAO,GAAG,cAAc,GAAG,SAAS,CACpD,EACD,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"requestInfo.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/requestInfo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAgB,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAG/D;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,OAAO,CAAC,eAAe,EAC5B,WAAW,EAAE,IAAI,CACf,mBAAmB,EACnB,YAAY,GAAG,OAAO,GAAG,cAAc,GAAG,SAAS,CACpD,EACD,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0KhC"}
|
|
@@ -24,16 +24,17 @@ function requestInfo(req, userOptions, hostDir, logger = createLogger()) {
|
|
|
24
24
|
const hasRscHeader = req.headers.accept?.includes("text/x-component");
|
|
25
25
|
const hasCssHeader = req.headers.accept?.includes("text/css");
|
|
26
26
|
const isFolder = !ext;
|
|
27
|
-
const
|
|
27
|
+
const isFormContentType = req.headers["content-type"]?.includes(
|
|
28
|
+
"application/x-www-form-urlencoded"
|
|
29
|
+
) || !!req.headers["content-type"]?.includes("multipart/form-data");
|
|
30
|
+
const hasServerActionHeaders = req.method === "POST" && (req.headers["sec-fetch-dest"] === "empty" || req.headers["sec-fetch-dest"] === "") && req.headers["sec-fetch-mode"] === "cors";
|
|
31
|
+
const isServerActionRequest = hasServerActionHeaders;
|
|
32
|
+
const isFormActionRequest = !isServerActionRequest && (req.method === "POST" || isFormContentType && req.headers["sec-fetch-dest"] === "document" && req.headers["sec-fetch-mode"] === "navigate");
|
|
33
|
+
const isJsRequest = !isFormActionRequest && !isJson && !isHtml && !isCss && !isRsc && (isJS || hasJsHeader);
|
|
28
34
|
const isJsonRequest = isJson || hasJsonHeader && !isJsRequest;
|
|
29
|
-
const isHtmlRequest = isHtml || hasHtmlHeader || isFolder && !hasRscHeader && !isRsc && !isJsRequest;
|
|
35
|
+
const isHtmlRequest = isHtml || hasHtmlHeader || isFolder && !hasRscHeader && !isRsc && !isJsRequest && !isFormActionRequest;
|
|
30
36
|
const isRscRequest = !isJsRequest && !isHtmlRequest && (isRsc || hasRscHeader);
|
|
31
37
|
const isCssRequest = !isHtmlRequest && !isRscRequest && !isJsRequest && !isJsonRequest && (isCss || hasCssHeader);
|
|
32
|
-
const formContentType = req.headers["content-type"] ?? "";
|
|
33
|
-
const isFormContentType = formContentType.includes("application/x-www-form-urlencoded") || formContentType.includes("multipart/form-data");
|
|
34
|
-
const isFormActionRequest = isFormContentType && req.headers["sec-fetch-dest"] === "document" && req.headers["sec-fetch-mode"] === "navigate";
|
|
35
|
-
const hasServerActionHeaders = isJsonRequest && (req.headers["sec-fetch-dest"] === "empty" || req.headers["sec-fetch-dest"] === "") && req.headers["sec-fetch-mode"] === "cors";
|
|
36
|
-
const isServerActionRequest = hasServerActionHeaders;
|
|
37
38
|
let filePath = join(hostDir, value);
|
|
38
39
|
let contentType;
|
|
39
40
|
if (isServerActionRequest) {
|
|
@@ -85,7 +86,7 @@ function requestInfo(req, userOptions, hostDir, logger = createLogger()) {
|
|
|
85
86
|
} else if (isHtmlRequest) {
|
|
86
87
|
logger.info(`[react-dev-server] (html) ${routeWithLeadingSlash}`);
|
|
87
88
|
} else if (isRscRequest) {
|
|
88
|
-
logger.info(`[react-dev-server] (rsc
|
|
89
|
+
logger.info(`[react-dev-server] (rsc) ${routeWithLeadingSlash}`);
|
|
89
90
|
} else if (isCssRequest) {
|
|
90
91
|
logger.info(`[react-dev-server] (css) ${routeWithLeadingSlash}`);
|
|
91
92
|
} else if (isJsRequest) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestInfo.js","sources":["../../../plugin/helpers/requestInfo.ts"],"sourcesContent":["import { join, resolve } from \"node:path\";\nimport type { ResolvedUserOptions } from \"../types.js\";\nimport { createLogger, type Connect, type Logger } from \"vite\";\nimport { MIME_TYPES } from \"../config/mimeTypes.js\";\n\n/**\n * # Request info\n *\n * Does the initial work to check if the request is for html, rsc, json, js, css, server-action, or something else not handled by this plugin.\n *\n * @param req\n * @param userOptions\n * @param hostDir\n * @returns\n */\nexport function requestInfo(\n req: Connect.IncomingMessage,\n userOptions: Pick<\n ResolvedUserOptions,\n \"normalizer\" | \"build\" | \"autoDiscover\" | \"verbose\"\n >,\n hostDir: string,\n logger: Logger = createLogger()\n) {\n const [, value] = userOptions.normalizer(req.url);\n const dotIndex = value.lastIndexOf(\".\");\n const ext = dotIndex === -1 ? \"\" : value.slice(dotIndex);\n // handle index.html\n const isVendor = userOptions.autoDiscover.vendorPattern(value);\n const isVirtual = userOptions.autoDiscover.virtualPattern(value);\n const isJS = userOptions.autoDiscover.modulePattern(value);\n const isHtml = userOptions.autoDiscover.htmlPattern(value);\n const isCss = userOptions.autoDiscover.cssPattern(value);\n const isJson = userOptions.autoDiscover.jsonPattern(value);\n const isRsc = userOptions.autoDiscover.rscPattern(value);\n const hasJsHeader =\n req.headers[\"sec-fetch-dest\"] === \"script\" ||\n req.headers[\"accept\"]?.includes(\"*/*\") ||\n req.headers[\"accept\"]?.includes(\"text/javascript\");\n const hasJsonHeader = req.headers[\"accept\"]?.includes(\"application/json\");\n const hasHtmlHeader = req.headers.accept?.includes(\"text/html\");\n const hasRscHeader = req.headers.accept?.includes(\"text/x-component\");\n const hasCssHeader = req.headers.accept?.includes(\"text/css\");\n const isFolder = !ext;\n const isJsRequest =\n !isJson && !isHtml && !isCss && !isRsc && (isJS || hasJsHeader);\n const isJsonRequest = isJson || (hasJsonHeader && !isJsRequest);\n const isHtmlRequest =\n isHtml ||\n hasHtmlHeader ||\n (isFolder && !hasRscHeader && !isRsc && !isJsRequest);\n const isRscRequest =\n !isJsRequest && !isHtmlRequest && (isRsc || hasRscHeader);\n const isCssRequest =\n !isHtmlRequest &&\n !isRscRequest &&\n !isJsRequest &&\n !isJsonRequest &&\n (isCss || hasCssHeader);\n\n // Form action detection\n const formContentType = req.headers[\"content-type\"] ?? \"\";\n const isFormContentType =\n formContentType.includes(\"application/x-www-form-urlencoded\") ||\n formContentType.includes(\"multipart/form-data\");\n const isFormActionRequest =\n isFormContentType &&\n req.headers[\"sec-fetch-dest\"] === \"document\" &&\n req.headers[\"sec-fetch-mode\"] === \"navigate\";\n\n // Server action detection\n const hasServerActionHeaders =\n isJsonRequest &&\n (req.headers[\"sec-fetch-dest\"] === \"empty\" ||\n req.headers[\"sec-fetch-dest\"] === \"\") &&\n req.headers[\"sec-fetch-mode\"] === \"cors\";\n const isServerActionRequest = hasServerActionHeaders;\n\n let filePath = join(hostDir, value);\n let contentType;\n if (isServerActionRequest) {\n // For server actions, we'll get the actual file path from the request body\n // The route is just a placeholder\n filePath = value;\n contentType = \"application/json; charset=utf-8\";\n } else if (isHtmlRequest) {\n if (!isHtml) {\n filePath = join(hostDir, value, userOptions.build.htmlOutputPath);\n }\n contentType = \"text/html; charset=utf-8\";\n } else if (isRscRequest) {\n if (!isRsc) {\n filePath = join(hostDir, value, userOptions.build.rscOutputPath);\n }\n contentType = \"text/x-component; charset=utf-8\";\n } else if (isCssRequest) {\n if (!isCss) {\n filePath = join(hostDir, value + \".css\");\n }\n contentType = \"text/css; charset=utf-8\";\n } else if (isJsRequest) {\n if (!isJS) {\n filePath = resolve(hostDir, value + \".js\");\n }\n contentType = \"application/javascript; charset=utf-8\";\n } else if (isJsonRequest) {\n if (!isJson) {\n filePath = join(hostDir, value + \".json\");\n }\n contentType = \"application/json; charset=utf-8\";\n } else {\n const mimeType = MIME_TYPES[ext];\n if (mimeType) {\n contentType = mimeType;\n } else {\n contentType = \"application/octet-stream\";\n }\n }\n const route = value\n .replace(userOptions.build.rscOutputPath, \"\")\n .replace(userOptions.build.htmlOutputPath, \"\");\n\n const routeWithoutTrailingSlash =\n route === \"\" || route === \"/\"\n ? \"/\"\n : route.endsWith(\"/\")\n ? route.slice(0, -1)\n : route;\n\n const routeWithLeadingSlash = !routeWithoutTrailingSlash\n ? \"/\"\n : routeWithoutTrailingSlash.startsWith(\"/\")\n ? routeWithoutTrailingSlash\n : `/${routeWithoutTrailingSlash}`;\n\n if (userOptions.verbose) {\n if (isFormActionRequest) {\n logger.info(`[react-dev-server] (form-action) ${routeWithLeadingSlash}`);\n } else if (isServerActionRequest) {\n logger.info(\n `[react-dev-server] (server-action) ${routeWithLeadingSlash}`\n );\n } else if (isHtmlRequest) {\n logger.info(`[react-dev-server] (html) ${routeWithLeadingSlash}`);\n } else if (isRscRequest) {\n logger.info(`[react-dev-server] (rsc.) ${routeWithLeadingSlash}`);\n } else if (isCssRequest) {\n logger.info(`[react-dev-server] (css) ${routeWithLeadingSlash}`);\n } else if (isJsRequest) {\n logger.info(`[react-dev-server] (js) ${routeWithLeadingSlash}`);\n } else if (isJsonRequest) {\n logger.info(`[react-dev-server] (json) ${routeWithLeadingSlash}`);\n } else {\n logger.info(`[react-dev-server] (other) ${routeWithLeadingSlash}`);\n }\n }\n return {\n route: routeWithLeadingSlash,\n ext,\n isHtmlRequest,\n isRscRequest,\n isCssRequest,\n isCss,\n isHtml,\n isRsc,\n isFolder,\n contentType,\n filePath,\n isJS,\n isVendor,\n isVirtual,\n hasJsHeader,\n isJsRequest,\n isJson,\n isJsonRequest,\n hasCssHeader,\n hasJsonHeader,\n hasHtmlHeader,\n hasRscHeader,\n hasServerActionHeaders,\n isServerActionRequest,\n isFormContentType,\n isFormActionRequest,\n };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"requestInfo.js","sources":["../../../plugin/helpers/requestInfo.ts"],"sourcesContent":["import { join, resolve } from \"node:path\";\nimport type { ResolvedUserOptions } from \"../types.js\";\nimport { createLogger, type Connect, type Logger } from \"vite\";\nimport { MIME_TYPES } from \"../config/mimeTypes.js\";\n\n/**\n * # Request info\n *\n * Does the initial work to check if the request is for html, rsc, json, js, css, server-action, or something else not handled by this plugin.\n *\n * @param req\n * @param userOptions\n * @param hostDir\n * @returns\n */\nexport function requestInfo(\n req: Connect.IncomingMessage,\n userOptions: Pick<\n ResolvedUserOptions,\n \"normalizer\" | \"build\" | \"autoDiscover\" | \"verbose\"\n >,\n hostDir: string,\n logger: Logger = createLogger()\n) {\n const [, value] = userOptions.normalizer(req.url);\n const dotIndex = value.lastIndexOf(\".\");\n const ext = dotIndex === -1 ? \"\" : value.slice(dotIndex);\n // handle index.html\n const isVendor = userOptions.autoDiscover.vendorPattern(value);\n const isVirtual = userOptions.autoDiscover.virtualPattern(value);\n const isJS = userOptions.autoDiscover.modulePattern(value);\n const isHtml = userOptions.autoDiscover.htmlPattern(value);\n const isCss = userOptions.autoDiscover.cssPattern(value);\n const isJson = userOptions.autoDiscover.jsonPattern(value);\n const isRsc = userOptions.autoDiscover.rscPattern(value);\n const hasJsHeader =\n req.headers[\"sec-fetch-dest\"] === \"script\" ||\n req.headers[\"accept\"]?.includes(\"*/*\") ||\n req.headers[\"accept\"]?.includes(\"text/javascript\");\n const hasJsonHeader = req.headers[\"accept\"]?.includes(\"application/json\");\n const hasHtmlHeader = req.headers.accept?.includes(\"text/html\");\n const hasRscHeader = req.headers.accept?.includes(\"text/x-component\");\n const hasCssHeader = req.headers.accept?.includes(\"text/css\");\n const isFolder = !ext;\n const isFormContentType =\n req.headers[\"content-type\"]?.includes(\n \"application/x-www-form-urlencoded\"\n ) || !!req.headers[\"content-type\"]?.includes(\"multipart/form-data\");\n \n // Server action detection\n const hasServerActionHeaders =\n req.method === \"POST\" &&\n (req.headers[\"sec-fetch-dest\"] === \"empty\" ||\n req.headers[\"sec-fetch-dest\"] === \"\") &&\n req.headers[\"sec-fetch-mode\"] === \"cors\";\n const isServerActionRequest = hasServerActionHeaders;\n\n const isFormActionRequest = !isServerActionRequest && (\n req.method === \"POST\" ||\n (isFormContentType &&\n req.headers[\"sec-fetch-dest\"] === \"document\" &&\n req.headers[\"sec-fetch-mode\"] === \"navigate\")\n );\n\n const isJsRequest =\n !isFormActionRequest && !isJson && !isHtml && !isCss && !isRsc && (isJS || hasJsHeader);\n const isJsonRequest = isJson || (hasJsonHeader && !isJsRequest);\n // Form action detection\n \n const isHtmlRequest =\n isHtml ||\n hasHtmlHeader ||\n (isFolder &&\n !hasRscHeader &&\n !isRsc &&\n !isJsRequest &&\n !isFormActionRequest);\n const isRscRequest =\n !isJsRequest && !isHtmlRequest && (isRsc || hasRscHeader);\n const isCssRequest =\n !isHtmlRequest &&\n !isRscRequest &&\n !isJsRequest &&\n !isJsonRequest &&\n (isCss || hasCssHeader);\n\n let filePath = join(hostDir, value);\n let contentType;\n if (isServerActionRequest) {\n // For server actions, we'll get the actual file path from the request body\n // The route is just a placeholder\n filePath = value;\n contentType = \"application/json; charset=utf-8\";\n } else if (isHtmlRequest) {\n if (!isHtml) {\n filePath = join(hostDir, value, userOptions.build.htmlOutputPath);\n }\n contentType = \"text/html; charset=utf-8\";\n } else if (isRscRequest) {\n if (!isRsc) {\n filePath = join(hostDir, value, userOptions.build.rscOutputPath);\n }\n contentType = \"text/x-component; charset=utf-8\";\n } else if (isCssRequest) {\n if (!isCss) {\n filePath = join(hostDir, value + \".css\");\n }\n contentType = \"text/css; charset=utf-8\";\n } else if (isJsRequest) {\n if (!isJS) {\n filePath = resolve(hostDir, value + \".js\");\n }\n contentType = \"application/javascript; charset=utf-8\";\n } else if (isJsonRequest) {\n if (!isJson) {\n filePath = join(hostDir, value + \".json\");\n }\n contentType = \"application/json; charset=utf-8\";\n } else {\n const mimeType = MIME_TYPES[ext];\n if (mimeType) {\n contentType = mimeType;\n } else {\n contentType = \"application/octet-stream\";\n }\n }\n const route = value\n .replace(userOptions.build.rscOutputPath, \"\")\n .replace(userOptions.build.htmlOutputPath, \"\");\n\n const routeWithoutTrailingSlash =\n route === \"\" || route === \"/\"\n ? \"/\"\n : route.endsWith(\"/\")\n ? route.slice(0, -1)\n : route;\n\n const routeWithLeadingSlash = !routeWithoutTrailingSlash\n ? \"/\"\n : routeWithoutTrailingSlash.startsWith(\"/\")\n ? routeWithoutTrailingSlash\n : `/${routeWithoutTrailingSlash}`;\n\n if (userOptions.verbose) {\n if (isFormActionRequest) {\n logger.info(`[react-dev-server] (form-action) ${routeWithLeadingSlash}`);\n } else if (isServerActionRequest) {\n logger.info(\n `[react-dev-server] (server-action) ${routeWithLeadingSlash}`\n );\n } else if (isHtmlRequest) {\n logger.info(`[react-dev-server] (html) ${routeWithLeadingSlash}`);\n } else if (isRscRequest) {\n logger.info(`[react-dev-server] (rsc) ${routeWithLeadingSlash}`);\n } else if (isCssRequest) {\n logger.info(`[react-dev-server] (css) ${routeWithLeadingSlash}`);\n } else if (isJsRequest) {\n logger.info(`[react-dev-server] (js) ${routeWithLeadingSlash}`);\n } else if (isJsonRequest) {\n logger.info(`[react-dev-server] (json) ${routeWithLeadingSlash}`);\n } else {\n logger.info(`[react-dev-server] (other) ${routeWithLeadingSlash}`);\n }\n }\n return {\n route: routeWithLeadingSlash,\n ext,\n isHtmlRequest,\n isRscRequest,\n isCssRequest,\n isCss,\n isHtml,\n isRsc,\n isFolder,\n contentType,\n filePath,\n isJS,\n isVendor,\n isVirtual,\n hasJsHeader,\n isJsRequest,\n isJson,\n isJsonRequest,\n hasCssHeader,\n hasJsonHeader,\n hasHtmlHeader,\n hasRscHeader,\n hasServerActionHeaders,\n isServerActionRequest,\n isFormContentType,\n isFormActionRequest,\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
6
|
import { handleExports } from './handleExports.js';
|
|
7
|
-
import createMappingsSerializer from 'webpack-sources/lib/helpers/createMappingsSerializer.js';
|
|
8
7
|
|
|
9
8
|
function createClientReferenceError(name) {
|
|
10
9
|
return `Attempted to call ${name}() from the server but ${name} is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.`;
|
|
@@ -54,18 +53,8 @@ function transformModuleWithPreservedFunctions(source, moduleId, program, isServ
|
|
|
54
53
|
}
|
|
55
54
|
const newSource = [...imports, sourceWithoutDirective, ...registrations].join("\n\n");
|
|
56
55
|
let mappings = "";
|
|
57
|
-
const createMapping = createMappingsSerializer();
|
|
58
|
-
let generatedLine = 1;
|
|
59
|
-
createMapping(generatedLine, 0, 0, 0, 0, -1);
|
|
60
|
-
generatedLine++;
|
|
61
|
-
for (let i = 0; i < registrations.length; i++) {
|
|
62
|
-
createMapping(generatedLine, 0, 0, 1, 0, -1);
|
|
63
|
-
generatedLine++;
|
|
64
|
-
}
|
|
65
56
|
const sourceLines = source.split("\n");
|
|
66
57
|
for (let i = 0; i < sourceLines.length; i++) {
|
|
67
|
-
createMapping(generatedLine, 0, 0, i + 1, 0, -1);
|
|
68
|
-
generatedLine++;
|
|
69
58
|
}
|
|
70
59
|
const sourceMap = {
|
|
71
60
|
version: 3,
|
|
@@ -98,14 +87,6 @@ throw new Error("${errorMessage}");
|
|
|
98
87
|
}
|
|
99
88
|
const newSource = [...imports, ...declarations].join("\n\n");
|
|
100
89
|
let mappings = "";
|
|
101
|
-
const createMapping = createMappingsSerializer();
|
|
102
|
-
let generatedLine = 1;
|
|
103
|
-
createMapping(generatedLine, 0, 0, 0, 0, -1);
|
|
104
|
-
generatedLine++;
|
|
105
|
-
for (let i = 0; i < declarations.length; i++) {
|
|
106
|
-
createMapping(generatedLine, 0, 0, 1, 0, -1);
|
|
107
|
-
generatedLine++;
|
|
108
|
-
}
|
|
109
90
|
const sourceMap = {
|
|
110
91
|
version: 3,
|
|
111
92
|
file: moduleId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformModuleWithPreservedFunctions.js","sources":["../../../plugin/loader/transformModuleWithPreservedFunctions.ts"],"sourcesContent":["/**\n * # RSC Boundary Handling\n *\n * This file provides the core transformation logic for React Server Components (RSC) boundaries.\n *\n * - **Server Loader**: Always strips implementation for client modules, exports error-throwing references.\n * - **Client Loader**: Always strips implementation for server modules, exports error-throwing references.\n * - **Browser**: Only client modules are passed through as-is.\n *\n * All transformations are handled by `transformModuleWithPreservedFunctions` for consistency.\n *\n * ## Error Behavior\n *\n * - If a client component is imported on the server, the export is a function that throws a clear error.\n * - If a server action is imported on the client, the export is a function that throws a clear error.\n *\n * This ensures that implementation details are never leaked across boundaries and errors are easy to debug.\n */\nimport { handleExports } from \"./handleExports.js\";\nimport type { Program } from \"./types.js\";\nimport createMappingsSerializer from \"webpack-sources/lib/helpers/createMappingsSerializer.js\";\n\nexport interface TransformOptions {\n id: string;\n exportNames: string[];\n beforeExports: string;\n afterExports: string;\n isServerModule?: boolean;\n isClientModule?: boolean;\n program?: Program;\n}\n\n/**\n * Creates a client reference error message\n */\nfunction createClientReferenceError(name: string): string {\n return `Attempted to call ${name}() from the server but ${name} is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.`;\n}\n\n/**\n * Transforms a module for RSC boundaries.\n * - Server modules: exports are wrapped with server references while preserving functionality.\n * - Client modules: exports are replaced with client references or errors, depending on environment.\n * - Only the correct references are exported; implementation is never leaked across boundaries.\n *\n * @param source - The original module source code.\n * @param moduleId - The module's unique identifier.\n * @param url - The module's URL.\n * @param program - The parsed AST.\n * @param map - The source map for the source code.\n * @param isServerFunction - Whether the module is a server function.\n * @param isClientComponent - Whether the module is a client component.\n * @returns The transformed source code.\n */\nexport function transformModuleWithPreservedFunctions(\n source: string,\n moduleId: string,\n program: Program,\n isServerFunction: boolean | RegExpMatchArray | null,\n isClientComponent: boolean | RegExpMatchArray | null\n): string {\n // Find and remove directives using AST\n let sourceWithoutDirective = source;\n let directiveEnd = 0;\n \n // Only look at top-level directives\n for (const node of program.body) {\n if (node.type !== \"ExpressionStatement\") {\n break;\n }\n\n let directive: string | null = null;\n if (\"directive\" in node && typeof node.directive === \"string\") {\n directive = node.directive;\n } else if (\n node.expression.type === \"Literal\" &&\n typeof node.expression.value === \"string\" &&\n (node.expression.value === \"use server\" || node.expression.value === \"use client\")\n ) {\n directive = node.expression.value;\n }\n\n if (directive && \"start\" in node && \"end\" in node) {\n directiveEnd = node.end;\n }\n }\n\n // Remove the directive and any whitespace after it\n if (directiveEnd > 0) {\n sourceWithoutDirective = source.slice(directiveEnd).trim();\n }\n\n // Get export names and create module ID literal\n const { exportNames, exports } = handleExports(\n sourceWithoutDirective,\n program,\n isServerFunction,\n isClientComponent\n );\n const moduleIdLiteral = JSON.stringify(moduleId);\n\n // For server modules in server environment, register server references\n if (Boolean(isServerFunction)) {\n const imports = [\n 'import { registerServerReference } from \"react-server-dom-esm/server.node\";',\n ];\n const registrations: string[] = [];\n\n // Register each export\n for (const name of exportNames) {\n const exportInfo = exports.get(name);\n if (exportInfo) {\n // For default exports, use the localName if available\n const exportName =\n name === \"default\" && exportInfo.localName\n ? exportInfo.localName\n : name;\n // Register all exports in server modules\n registrations.push(\n `registerServerReference(${exportName}, ${moduleIdLiteral}, ${JSON.stringify(\n name\n )});`\n );\n }\n }\n\n // Create new source with registrations\n // First, add the imports at the top\n const newSource = [...imports, sourceWithoutDirective, ...registrations].join(\"\\n\\n\");\n\n // Handle source maps\n let mappings = \"\";\n const createMapping = createMappingsSerializer();\n let generatedLine = 1;\n\n // Map the import line to the first line of the original source\n createMapping(generatedLine, 0, 0, 0, 0, -1);\n generatedLine++;\n\n // Map the registration lines to the first line of the original source\n for (let i = 0; i < registrations.length; i++) {\n createMapping(generatedLine, 0, 0, 1, 0, -1);\n generatedLine++;\n }\n\n // Map the original source lines, skipping the directive line\n const sourceLines = source.split(\"\\n\");\n for (let i = 0; i < sourceLines.length; i++) {\n createMapping(generatedLine, 0, 0, i + 1, 0, -1); // +1 because we skip directive line\n generatedLine++;\n }\n\n // Add source map to the output with original source content\n const sourceMap = {\n version: 3,\n file: moduleId,\n sources: [moduleId],\n sourcesContent: [newSource], // Use transformed source content\n mappings,\n sourceRoot: \"\",\n names: [],\n };\n\n return (\n newSource +\n \"\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,\" +\n Buffer.from(JSON.stringify(sourceMap)).toString(\"base64\")\n );\n // end of server module\n }\n if (!!isClientComponent) {\n // For client modules in server environment, register client references\n const imports = [\n 'import { registerClientReference } from \"react-server-dom-esm/server.node\";',\n ];\n const declarations: string[] = [];\n\n for (const name of exportNames) {\n const errorMessage = createClientReferenceError(name);\n if (name === \"default\") {\n declarations.push(`export default registerClientReference(function() {\nthrow new Error(\"${errorMessage}\");\n}, ${moduleIdLiteral}, \"default\");`);\n } else {\n declarations.push(`export const ${name} = registerClientReference(function() {\nthrow new Error(\"${errorMessage}\");\n}, ${moduleIdLiteral}, ${JSON.stringify(name)});`);\n }\n }\n // Create new source with declarations\n const newSource = [...imports, ...declarations].join(\"\\n\\n\");\n\n // Handle source maps for client modules\n let mappings = \"\";\n const createMapping = createMappingsSerializer();\n let generatedLine = 1;\n\n // Map the import line to the first line of the original source\n createMapping(generatedLine, 0, 0, 0, 0, -1);\n generatedLine++;\n\n // Map the declaration lines to the first line of the original source\n for (let i = 0; i < declarations.length; i++) {\n createMapping(generatedLine, 0, 0, 1, 0, -1);\n generatedLine++;\n }\n\n // Add source map to the output with original source content\n const sourceMap = {\n version: 3,\n file: moduleId,\n sources: [moduleId],\n sourcesContent: [newSource], // Use transformed source content\n mappings,\n sourceRoot: \"\",\n names: [],\n };\n\n return (\n newSource +\n \"\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,\" +\n Buffer.from(JSON.stringify(sourceMap)).toString(\"base64\")\n );\n }\n throw new Error(\"Invalid module type\");\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transformModuleWithPreservedFunctions.js","sources":["../../../plugin/loader/transformModuleWithPreservedFunctions.ts"],"sourcesContent":["/**\n * # RSC Boundary Handling\n *\n * This file provides the core transformation logic for React Server Components (RSC) boundaries.\n *\n * - **Server Loader**: Always strips implementation for client modules, exports error-throwing references.\n * - **Client Loader**: Always strips implementation for server modules, exports error-throwing references.\n * - **Browser**: Only client modules are passed through as-is.\n *\n * All transformations are handled by `transformModuleWithPreservedFunctions` for consistency.\n *\n * ## Error Behavior\n *\n * - If a client component is imported on the server, the export is a function that throws a clear error.\n * - If a server action is imported on the client, the export is a function that throws a clear error.\n *\n * This ensures that implementation details are never leaked across boundaries and errors are easy to debug.\n */\nimport { handleExports } from \"./handleExports.js\";\nimport type { Program } from \"./types.js\";\nimport { createMappingsSerializer } from \"../source-map/createMappingsSerializer.js\";\n\nexport interface TransformOptions {\n id: string;\n exportNames: string[];\n beforeExports: string;\n afterExports: string;\n isServerModule?: boolean;\n isClientModule?: boolean;\n program?: Program;\n}\n\n/**\n * Creates a client reference error message\n */\nfunction createClientReferenceError(name: string): string {\n return `Attempted to call ${name}() from the server but ${name} is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.`;\n}\n\n/**\n * Transforms a module for RSC boundaries.\n * - Server modules: exports are wrapped with server references while preserving functionality.\n * - Client modules: exports are replaced with client references or errors, depending on environment.\n * - Only the correct references are exported; implementation is never leaked across boundaries.\n *\n * @param source - The original module source code.\n * @param moduleId - The module's unique identifier.\n * @param url - The module's URL.\n * @param program - The parsed AST.\n * @param map - The source map for the source code.\n * @param isServerFunction - Whether the module is a server function.\n * @param isClientComponent - Whether the module is a client component.\n * @returns The transformed source code.\n */\nexport function transformModuleWithPreservedFunctions(\n source: string,\n moduleId: string,\n program: Program,\n isServerFunction: boolean | RegExpMatchArray | null,\n isClientComponent: boolean | RegExpMatchArray | null\n): string {\n // Find and remove directives using AST\n let sourceWithoutDirective = source;\n let directiveEnd = 0;\n \n // Only look at top-level directives\n for (const node of program.body) {\n if (node.type !== \"ExpressionStatement\") {\n break;\n }\n\n let directive: string | null = null;\n if (\"directive\" in node && typeof node.directive === \"string\") {\n directive = node.directive;\n } else if (\n node.expression.type === \"Literal\" &&\n typeof node.expression.value === \"string\" &&\n (node.expression.value === \"use server\" || node.expression.value === \"use client\")\n ) {\n directive = node.expression.value;\n }\n\n if (directive && \"start\" in node && \"end\" in node) {\n directiveEnd = node.end;\n }\n }\n\n // Remove the directive and any whitespace after it\n if (directiveEnd > 0) {\n sourceWithoutDirective = source.slice(directiveEnd).trim();\n }\n\n // Get export names and create module ID literal\n const { exportNames, exports } = handleExports(\n sourceWithoutDirective,\n program,\n isServerFunction,\n isClientComponent\n );\n const moduleIdLiteral = JSON.stringify(moduleId);\n\n // For server modules in server environment, register server references\n if (Boolean(isServerFunction)) {\n const imports = [\n 'import { registerServerReference } from \"react-server-dom-esm/server.node\";',\n ];\n const registrations: string[] = [];\n\n // Register each export\n for (const name of exportNames) {\n const exportInfo = exports.get(name);\n if (exportInfo) {\n // For default exports, use the localName if available\n const exportName =\n name === \"default\" && exportInfo.localName\n ? exportInfo.localName\n : name;\n // Register all exports in server modules\n registrations.push(\n `registerServerReference(${exportName}, ${moduleIdLiteral}, ${JSON.stringify(\n name\n )});`\n );\n }\n }\n\n // Create new source with registrations\n // First, add the imports at the top\n const newSource = [...imports, sourceWithoutDirective, ...registrations].join(\"\\n\\n\");\n\n // Handle source maps\n let mappings = \"\";\n const createMapping = createMappingsSerializer();\n let generatedLine = 1;\n\n // Map the import line to the first line of the original source\n createMapping(generatedLine, 0, 0, 0, 0, -1);\n generatedLine++;\n\n // Map the registration lines to the first line of the original source\n for (let i = 0; i < registrations.length; i++) {\n createMapping(generatedLine, 0, 0, 1, 0, -1);\n generatedLine++;\n }\n\n // Map the original source lines, skipping the directive line\n const sourceLines = source.split(\"\\n\");\n for (let i = 0; i < sourceLines.length; i++) {\n createMapping(generatedLine, 0, 0, i + 1, 0, -1); // +1 because we skip directive line\n generatedLine++;\n }\n\n // Add source map to the output with original source content\n const sourceMap = {\n version: 3,\n file: moduleId,\n sources: [moduleId],\n sourcesContent: [newSource], // Use transformed source content\n mappings,\n sourceRoot: \"\",\n names: [],\n };\n\n return (\n newSource +\n \"\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,\" +\n Buffer.from(JSON.stringify(sourceMap)).toString(\"base64\")\n );\n // end of server module\n }\n if (!!isClientComponent) {\n // For client modules in server environment, register client references\n const imports = [\n 'import { registerClientReference } from \"react-server-dom-esm/server.node\";',\n ];\n const declarations: string[] = [];\n\n for (const name of exportNames) {\n const errorMessage = createClientReferenceError(name);\n if (name === \"default\") {\n declarations.push(`export default registerClientReference(function() {\nthrow new Error(\"${errorMessage}\");\n}, ${moduleIdLiteral}, \"default\");`);\n } else {\n declarations.push(`export const ${name} = registerClientReference(function() {\nthrow new Error(\"${errorMessage}\");\n}, ${moduleIdLiteral}, ${JSON.stringify(name)});`);\n }\n }\n // Create new source with declarations\n const newSource = [...imports, ...declarations].join(\"\\n\\n\");\n\n // Handle source maps for client modules\n let mappings = \"\";\n const createMapping = createMappingsSerializer();\n let generatedLine = 1;\n\n // Map the import line to the first line of the original source\n createMapping(generatedLine, 0, 0, 0, 0, -1);\n generatedLine++;\n\n // Map the declaration lines to the first line of the original source\n for (let i = 0; i < declarations.length; i++) {\n createMapping(generatedLine, 0, 0, 1, 0, -1);\n generatedLine++;\n }\n\n // Add source map to the output with original source content\n const sourceMap = {\n version: 3,\n file: moduleId,\n sources: [moduleId],\n sourcesContent: [newSource], // Use transformed source content\n mappings,\n sourceRoot: \"\",\n names: [],\n };\n\n return (\n newSource +\n \"\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,\" +\n Buffer.from(JSON.stringify(sourceMap)).toString(\"base64\")\n );\n }\n throw new Error(\"Invalid module type\");\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureReactServer.js","sources":["../../../plugin/react-server/configureReactServer.ts"],"sourcesContent":["import type { Manifest, ViteDevServer } from \"vite\";\nimport type { ServerResponse } from \"http\";\nimport type {\n AutoDiscoveredFiles,\n InlineCssOpt,\n PagePropOpt,\n ResolvedUserOptions,\n} from \"../types.js\";\nimport { createEventHandler } from \"../helpers/createEventHandler.js\";\nimport { collectViteModuleGraphCss } from \"../helpers/collectViteModuleGraphCss.js\";\nimport { resolvePageAndProps } from \"../helpers/resolvePageAndProps.js\";\nimport { createHandler } from \"../helpers/createHandler.js\";\nimport React from \"react\";\nimport { requestInfo } from \"../helpers/requestInfo.js\";\nimport { getRouteFiles } from \"../helpers/getRouteFiles.js\";\nimport { logError } from \"../error/toError.js\";\nimport { handleServerAction } from \"./handleServerAction.js\";\n\nexport async function configureReactServer<\n T extends PagePropOpt = PagePropOpt,\n InlineCSS extends InlineCssOpt = InlineCssOpt\n>({\n server,\n autoDiscoveredFiles,\n userOptions: _userOptions,\n serverManifest,\n}: {\n server: ViteDevServer;\n autoDiscoveredFiles: AutoDiscoveredFiles;\n userOptions: ResolvedUserOptions<T, InlineCSS>;\n serverManifest: Manifest;\n}) {\n const activeStreams = new Set<ServerResponse>();\n const {\n Html: _UserHtmlComponent,\n onEvent,\n // remove these\n ...handlerUserOptions\n } = _userOptions;\n const handlerOptions = {\n ...handlerUserOptions,\n moduleBaseURL: server.config.base,\n moduleBasePath: server.config.base,\n projectRoot: server.config.root,\n Html: React.Fragment,\n onEvent: createEventHandler(onEvent),\n css: handlerUserOptions.css\n };\n\n // Set environment-specific configuration\n const define = {\n ...server.config.define,\n \"process.env.NODE_ENV\": JSON.stringify(\n process.env[\"NODE_ENV\"] || \"development\"\n ),\n };\n server.config = {\n ...server.config,\n define,\n };\n\n // Handle Vite server restarts\n server.ws.on(\"restart\", (path) => {\n server.config.logger.info(\n \"[vite-plugin-react-server] 🔧 Plugin changed, preparing for restart:\",\n path\n );\n\n // Close streams with restart message\n for (const res of activeStreams) {\n res.writeHead(503, {\n \"Content-Type\": \"text/x-component; charset=utf-8\",\n \"Retry-After\": \"1\",\n });\n res.end(\n `0:E{\"digest\":\"\",\"name\":\"Error\",\"message\":\"Server restarting...\",\"stack\":\"\",\"env\":\"Server\"}`\n );\n }\n activeStreams.clear();\n });\n\n server.middlewares.use(async (req, res, next) => {\n if (!req.url) {\n return next();\n }\n const info = requestInfo(req, handlerOptions, \"\", server.config.logger);\n\n // Handle server actions\n if (info.isServerActionRequest) {\n return handleServerAction(req, res, server, handlerOptions);\n }\n\n if (!info.isRscRequest) return next();\n try {\n const routeFiles = await getRouteFiles(\n info.route,\n autoDiscoveredFiles,\n handlerOptions\n );\n if (routeFiles.type === \"error\") {\n server.config.logger.error(routeFiles.error.message);\n return next();\n }\n const pagePath = routeFiles.page;\n const propsPath = routeFiles.props;\n\n // first load the page and props\n const pageAndPropsResult = await resolvePageAndProps({\n pagePath,\n propsPath,\n route: info.route,\n loader: server.ssrLoadModule,\n pageExportName: handlerOptions.pageExportName ?? \"default\",\n propsExportName: handlerOptions.propsExportName ?? \"default\",\n });\n if (pageAndPropsResult.type === \"error\") {\n throw pageAndPropsResult.error;\n }\n if (pageAndPropsResult.type === \"skip\") {\n return next();\n }\n\n const eventHandler = createEventHandler(onEvent);\n const cssFilesResult = await collectViteModuleGraphCss({\n moduleGraph: server.moduleGraph, // by having loaded the page and props, we can get them from the module graph\n parentUrl: pagePath,\n handlerOptions: {\n pagePath,\n loader: server.ssrLoadModule,\n // explicitly set for development server\n ...handlerOptions,\n },\n });\n if (cssFilesResult.type === \"skip\") {\n return next();\n }\n if (cssFilesResult.type === \"error\") {\n throw cssFilesResult.error;\n }\n const { PageComponent, pageProps } = pageAndPropsResult;\n // Create the headless RSC stream directly;\n const rscResult = createHandler({\n ...handlerOptions,\n PageComponent: PageComponent,\n pageProps: pageProps,\n logger: server.config.logger,\n loader: server.ssrLoadModule,\n Html: React.Fragment,\n onEvent: eventHandler,\n manifest: serverManifest,\n server,\n route: info.route,\n pagePath,\n propsPath,\n cssFiles: cssFilesResult.cssFiles ?? new Map(),\n globalCss: new Map(),\n });\n if (rscResult.type === \"success\") {\n // set headers\n res.setHeader(\"Content-Type\", \"text/x-component; charset=utf-8\");\n rscResult.stream!.pipe(res);\n }\n activeStreams.add(res);\n res.on(\"close\", () => {\n activeStreams.delete(res);\n });\n } catch (error) {\n logError(error, server.config.logger);\n res.end();\n }\n });\n // Listen for when the server actually starts\n server.httpServer?.once(\"listening\", () => {\n const address = server.httpServer?.address();\n if (address && typeof address !== \"string\") {\n const port = address.port;\n const host = server.config.server.host ?? \"localhost\";\n const protocol = server.config.server.https ? \"https\" : \"http\";\n handlerOptions.publicOrigin = `${protocol}://${host}:${port}`;\n if (handlerOptions.publicOrigin !== process.env.VITE_PUBLIC_ORIGIN) {\n process.env.VITE_PUBLIC_ORIGIN = handlerOptions.publicOrigin;\n }\n }\n });\n}\n"],"names":["React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"configureReactServer.js","sources":["../../../plugin/react-server/configureReactServer.ts"],"sourcesContent":["import type { Manifest, ViteDevServer } from \"vite\";\nimport type { ServerResponse } from \"http\";\nimport type {\n AutoDiscoveredFiles,\n InlineCssOpt,\n PagePropOpt,\n ResolvedUserOptions,\n} from \"../types.js\";\nimport { createEventHandler } from \"../helpers/createEventHandler.js\";\nimport { collectViteModuleGraphCss } from \"../helpers/collectViteModuleGraphCss.js\";\nimport { resolvePageAndProps } from \"../helpers/resolvePageAndProps.js\";\nimport { createHandler } from \"../helpers/createHandler.js\";\nimport React from \"react\";\nimport { requestInfo } from \"../helpers/requestInfo.js\";\nimport { getRouteFiles } from \"../helpers/getRouteFiles.js\";\nimport { logError } from \"../error/toError.js\";\nimport { handleServerAction } from \"./handleServerAction.js\";\n\nexport async function configureReactServer<\n T extends PagePropOpt = PagePropOpt,\n InlineCSS extends InlineCssOpt = InlineCssOpt\n>({\n server,\n autoDiscoveredFiles,\n userOptions: _userOptions,\n serverManifest,\n}: {\n server: ViteDevServer;\n autoDiscoveredFiles: AutoDiscoveredFiles;\n userOptions: ResolvedUserOptions<T, InlineCSS>;\n serverManifest: Manifest;\n}) {\n const activeStreams = new Set<ServerResponse>();\n const {\n Html: _UserHtmlComponent,\n onEvent,\n // remove these\n ...handlerUserOptions\n } = _userOptions;\n const handlerOptions = {\n ...handlerUserOptions,\n moduleBaseURL: server.config.base,\n moduleBasePath: server.config.base,\n projectRoot: server.config.root,\n Html: React.Fragment,\n onEvent: createEventHandler(onEvent),\n css: handlerUserOptions.css\n };\n\n // Set environment-specific configuration\n const define = {\n ...server.config.define,\n \"process.env.NODE_ENV\": JSON.stringify(\n process.env[\"NODE_ENV\"] || \"development\"\n ),\n };\n server.config = {\n ...server.config,\n define,\n };\n\n // Handle Vite server restarts\n server.ws.on(\"restart\", (path) => {\n server.config.logger.info(\n \"[vite-plugin-react-server] 🔧 Plugin changed, preparing for restart:\",\n path\n );\n\n // Close streams with restart message\n for (const res of activeStreams) {\n res.writeHead(503, {\n \"Content-Type\": \"text/x-component; charset=utf-8\",\n \"Retry-After\": \"1\",\n });\n res.end(\n `0:E{\"digest\":\"\",\"name\":\"Error\",\"message\":\"Server restarting...\",\"stack\":\"\",\"env\":\"Server\"}`\n );\n }\n activeStreams.clear();\n });\n\n server.middlewares.use(async (req, res, next) => {\n if (!req.url) {\n return next();\n }\n const info = requestInfo(req, handlerOptions, \"\", server.config.logger);\n\n\n // Handle server actions\n if (info.isServerActionRequest) {\n return handleServerAction(req, res, server, handlerOptions);\n }\n if (!info.isRscRequest) return next();\n try {\n const routeFiles = await getRouteFiles(\n info.route,\n autoDiscoveredFiles,\n handlerOptions\n );\n if (routeFiles.type === \"error\") {\n server.config.logger.error(routeFiles.error.message);\n return next();\n }\n const pagePath = routeFiles.page;\n const propsPath = routeFiles.props;\n\n // first load the page and props\n const pageAndPropsResult = await resolvePageAndProps({\n pagePath,\n propsPath,\n route: info.route,\n loader: server.ssrLoadModule,\n pageExportName: handlerOptions.pageExportName ?? \"default\",\n propsExportName: handlerOptions.propsExportName ?? \"default\",\n });\n if (pageAndPropsResult.type === \"error\") {\n throw pageAndPropsResult.error;\n }\n if (pageAndPropsResult.type === \"skip\") {\n return next();\n }\n\n const eventHandler = createEventHandler(onEvent);\n const cssFilesResult = await collectViteModuleGraphCss({\n moduleGraph: server.moduleGraph, // by having loaded the page and props, we can get them from the module graph\n parentUrl: pagePath,\n handlerOptions: {\n pagePath,\n loader: server.ssrLoadModule,\n // explicitly set for development server\n ...handlerOptions,\n },\n });\n if (cssFilesResult.type === \"skip\") {\n return next();\n }\n if (cssFilesResult.type === \"error\") {\n throw cssFilesResult.error;\n }\n const { PageComponent, pageProps } = pageAndPropsResult;\n // Create the headless RSC stream directly;\n const rscResult = createHandler({\n ...handlerOptions,\n PageComponent: PageComponent,\n pageProps: pageProps,\n logger: server.config.logger,\n loader: server.ssrLoadModule,\n Html: React.Fragment,\n onEvent: eventHandler,\n manifest: serverManifest,\n server,\n route: info.route,\n pagePath,\n propsPath,\n cssFiles: cssFilesResult.cssFiles ?? new Map(),\n globalCss: new Map(),\n });\n if (rscResult.type === \"success\") {\n // set headers\n res.setHeader(\"Content-Type\", \"text/x-component; charset=utf-8\");\n rscResult.stream!.pipe(res);\n }\n activeStreams.add(res);\n res.on(\"close\", () => {\n activeStreams.delete(res);\n });\n } catch (error) {\n logError(error, server.config.logger);\n res.end();\n }\n });\n // Listen for when the server actually starts\n server.httpServer?.once(\"listening\", () => {\n const address = server.httpServer?.address();\n if (address && typeof address !== \"string\") {\n const port = address.port;\n const host = server.config.server.host ?? \"localhost\";\n const protocol = server.config.server.https ? \"https\" : \"http\";\n handlerOptions.publicOrigin = `${protocol}://${host}:${port}`;\n if (handlerOptions.publicOrigin !== process.env.VITE_PUBLIC_ORIGIN) {\n process.env.VITE_PUBLIC_ORIGIN = handlerOptions.publicOrigin;\n }\n }\n });\n}\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMappingsSerializer.d.ts","sourceRoot":"","sources":["../../../plugin/source-map/createMappingsSerializer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createMappingsSerializer.d.ts","sourceRoot":"","sources":["../../../plugin/source-map/createMappingsSerializer.ts"],"names":[],"mappings":"AACA,wBAAgB,wBAAwB,uBAUhB,MAAM,sBACJ,MAAM,kBACV,MAAM,mBACL,MAAM,qBACJ,MAAM,gBACX,MAAM,YAoKvB"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
// alternative to webpack-sources/lib/helpers/createMappingsSerializer.js
|
|
2
|
-
// unused for now, but it's a dependency of react-server-dom-esm and you may or may not want to download webpack-sources
|
|
3
2
|
export function createMappingsSerializer() {
|
|
4
3
|
let generatedLine = 1;
|
|
5
4
|
let generatedColumn = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readMappings.d.ts","sourceRoot":"","sources":["../../../plugin/source-map/readMappings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"readMappings.d.ts","sourceRoot":"","sources":["../../../plugin/source-map/readMappings.ts"],"names":[],"mappings":"AACA,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,CACT,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,KACd,IAAI,QAuLV"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
// alternative to webpack-sources/lib/helpers/readMappings.js
|
|
2
|
-
// unused for now, but it's a dependency of react-server-dom-esm and you may or may not want to download webpack-sources
|
|
3
2
|
export function readMappings(mappings, onMapping) {
|
|
4
3
|
let generatedLine = 1;
|
|
5
4
|
let generatedColumn = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.server.d.ts","sourceRoot":"","sources":["../../../plugin/transformer/plugin.server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EAEX,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAY,MAAM,EAAE,MAAM,MAAM,CAAC;AAkC7C,wBAAgB,oBAAoB,CAClC,CAAC,SAAS,WAAW,GAAG,WAAW,EACnC,SAAS,SAAS,YAAY,GAAG,YAAY,EAC7C,OAAO,EAAE,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"plugin.server.d.ts","sourceRoot":"","sources":["../../../plugin/transformer/plugin.server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EAEX,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAY,MAAM,EAAE,MAAM,MAAM,CAAC;AAkC7C,wBAAgB,oBAAoB,CAClC,CAAC,SAAS,WAAW,GAAG,WAAW,EACnC,SAAS,SAAS,YAAY,GAAG,YAAY,EAC7C,OAAO,EAAE,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM,CAoHpD"}
|
|
@@ -45,21 +45,12 @@ function reactTransformPlugin(options) {
|
|
|
45
45
|
if (!options2?.ssr || !userOptions.autoDiscover.modulePattern(id)) {
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
|
-
const [
|
|
48
|
+
const [, value] = userOptions.normalizer(id);
|
|
49
49
|
let moduleID = value;
|
|
50
50
|
if (isBuild) {
|
|
51
51
|
if (staticManifest) {
|
|
52
52
|
if (value in staticManifest) {
|
|
53
53
|
moduleID = staticManifest[value].file;
|
|
54
|
-
} else {
|
|
55
|
-
const hash = this.emitFile({
|
|
56
|
-
id,
|
|
57
|
-
type: "chunk",
|
|
58
|
-
fileName: key + ".js",
|
|
59
|
-
name: value
|
|
60
|
-
});
|
|
61
|
-
const fileName = this.getFileName(hash);
|
|
62
|
-
moduleID = fileName;
|
|
63
54
|
}
|
|
64
55
|
} else {
|
|
65
56
|
throw new Error(`Static manifest not found during dev build.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.server.js","sources":["../../../plugin/transformer/plugin.server.ts"],"sourcesContent":["import { resolveOptions } from \"../config/resolveOptions.js\";\nimport type {\n InlineCssOpt,\n PagePropOpt,\n ResolvedUserOptions,\n StreamPluginOptions,\n} from \"../types.js\";\nimport type { Manifest, Plugin } from \"vite\";\nimport { tryManifest } from \"../helpers/tryManifest.js\";\nimport { join } from \"node:path\";\nimport { setStashedResolve } from \"../helpers/moduleResolver.js\";\nimport { transformModuleIfNeeded } from \"../loader/transformModuleIfNeeded.js\";\nimport { logError } from \"../error/toError.js\";\n\n/**\n * Plugin for transforming React Client Components.\n *\n * Core responsibilities:\n * 1. Detects \"use client\" directives\n * 2. Transforms client components for RSC boundaries\n * 3. Adds client reference metadata for RSC\n *\n * When a component is marked with \"use client\", it:\n * - Gets transformed into a client reference\n * - Maintains module ID for RSC boundaries\n * - Preserves class/function behavior\n *\n * @example\n * ```ts\n * export default defineConfig({\n * plugins: [\n * viteReactClientTransformPlugin({\n * projectRoot: process.cwd(),\n * })\n * ]\n * });\n * ```\n */\nlet isBuild = true;\nlet isSSR = false;\n\nexport function reactTransformPlugin<\n T extends PagePropOpt = PagePropOpt,\n InlineCSS extends InlineCssOpt = InlineCssOpt\n>(options: StreamPluginOptions<T, InlineCSS>): Plugin {\n let userOptions: ResolvedUserOptions<T, InlineCSS>;\n const resolvedOptionsResult = resolveOptions(options);\n if (resolvedOptionsResult.type === \"error\") throw resolvedOptionsResult.error;\n userOptions = resolvedOptionsResult.userOptions;\n\n let staticManifest: Manifest;\n\n return {\n name: \"vite:react-server-transform\",\n enforce: \"post\", // Run after Vite's transforms\n async configResolved(config) {\n isBuild = config.command === \"build\";\n isSSR = config.build?.ssr === true;\n if (isBuild && isSSR) {\n const staticManifestResult = await tryManifest({\n root: userOptions.projectRoot,\n ssrManifest: false,\n outDir: join(userOptions.build.outDir, userOptions.build.static),\n });\n if (staticManifestResult.type === \"error\") {\n throw staticManifestResult.error;\n }\n staticManifest = staticManifestResult.manifest;\n }\n },\n async resolveId(\n _id: string,\n importer: string | undefined,\n options: {\n attributes: Record<string, string>;\n custom?: any;\n ssr?: boolean;\n isEntry: boolean;\n }\n ) {\n if (!options?.ssr) {\n return null;\n }\n // Set stashedResolve before any transform operations\n setStashedResolve(async (specifier: string) => {\n try {\n const resolved = await this.resolve(specifier, importer, {\n custom: { conditions: [\"react-server\"] },\n });\n if (!resolved) return null;\n return { id: resolved.id };\n } catch (error) {\n logError(error, this.environment.logger);\n return null;\n }\n });\n return null; // Let Vite handle the resolution\n },\n async transform(code, id, options) {\n if (!options?.ssr || !userOptions.autoDiscover.modulePattern(id)) {\n return null;\n }\n const [
|
|
1
|
+
{"version":3,"file":"plugin.server.js","sources":["../../../plugin/transformer/plugin.server.ts"],"sourcesContent":["import { resolveOptions } from \"../config/resolveOptions.js\";\nimport type {\n InlineCssOpt,\n PagePropOpt,\n ResolvedUserOptions,\n StreamPluginOptions,\n} from \"../types.js\";\nimport type { Manifest, Plugin } from \"vite\";\nimport { tryManifest } from \"../helpers/tryManifest.js\";\nimport { join } from \"node:path\";\nimport { setStashedResolve } from \"../helpers/moduleResolver.js\";\nimport { transformModuleIfNeeded } from \"../loader/transformModuleIfNeeded.js\";\nimport { logError } from \"../error/toError.js\";\n\n/**\n * Plugin for transforming React Client Components.\n *\n * Core responsibilities:\n * 1. Detects \"use client\" directives\n * 2. Transforms client components for RSC boundaries\n * 3. Adds client reference metadata for RSC\n *\n * When a component is marked with \"use client\", it:\n * - Gets transformed into a client reference\n * - Maintains module ID for RSC boundaries\n * - Preserves class/function behavior\n *\n * @example\n * ```ts\n * export default defineConfig({\n * plugins: [\n * viteReactClientTransformPlugin({\n * projectRoot: process.cwd(),\n * })\n * ]\n * });\n * ```\n */\nlet isBuild = true;\nlet isSSR = false;\n\nexport function reactTransformPlugin<\n T extends PagePropOpt = PagePropOpt,\n InlineCSS extends InlineCssOpt = InlineCssOpt\n>(options: StreamPluginOptions<T, InlineCSS>): Plugin {\n let userOptions: ResolvedUserOptions<T, InlineCSS>;\n const resolvedOptionsResult = resolveOptions(options);\n if (resolvedOptionsResult.type === \"error\") throw resolvedOptionsResult.error;\n userOptions = resolvedOptionsResult.userOptions;\n\n let staticManifest: Manifest;\n\n return {\n name: \"vite:react-server-transform\",\n enforce: \"post\", // Run after Vite's transforms\n async configResolved(config) {\n isBuild = config.command === \"build\";\n isSSR = config.build?.ssr === true;\n if (isBuild && isSSR) {\n const staticManifestResult = await tryManifest({\n root: userOptions.projectRoot,\n ssrManifest: false,\n outDir: join(userOptions.build.outDir, userOptions.build.static),\n });\n if (staticManifestResult.type === \"error\") {\n throw staticManifestResult.error;\n }\n staticManifest = staticManifestResult.manifest;\n }\n },\n async resolveId(\n _id: string,\n importer: string | undefined,\n options: {\n attributes: Record<string, string>;\n custom?: any;\n ssr?: boolean;\n isEntry: boolean;\n }\n ) {\n if (!options?.ssr) {\n return null;\n }\n // Set stashedResolve before any transform operations\n setStashedResolve(async (specifier: string) => {\n try {\n const resolved = await this.resolve(specifier, importer, {\n custom: { conditions: [\"react-server\"] },\n });\n if (!resolved) return null;\n return { id: resolved.id };\n } catch (error) {\n logError(error, this.environment.logger);\n return null;\n }\n });\n return null; // Let Vite handle the resolution\n },\n async transform(code, id, options) {\n if (!options?.ssr || !userOptions.autoDiscover.modulePattern(id)) {\n return null;\n }\n const [, value] = userOptions.normalizer(id);\n let moduleID = value;\n if (isBuild) {\n if (staticManifest) {\n if (value in staticManifest) {\n moduleID = staticManifest[value].file;\n }\n } else {\n throw new Error(`Static manifest not found during dev build.`);\n }\n } else {\n // For non-SSR builds, just use the normalized path\n moduleID = join(userOptions.moduleBasePath, value);\n }\n let finalID = userOptions.moduleID(moduleID);\n // Always transform in server context\n const transformed = transformModuleIfNeeded(\n code,\n finalID,\n userOptions.autoDiscover.isServerFunctionCode(code),\n userOptions.autoDiscover.isClientComponentCode(code),\n true\n );\n if (userOptions.verbose)\n if (transformed !== code) {\n if (id !== finalID) {\n this.environment.logger.info(\n \"[react-server-transform] \" +\n id.split(\"/\").pop() +\n \" -> \" +\n finalID\n );\n } else {\n this.environment.logger.info(\n \"[react-server-transform] \" +\n id.split(\"/\").pop() +\n (code.startsWith('\"use client\"') ? \" (client)\" : \"\")\n );\n }\n this.environment.logger.info(\n \"[react-server-transform] \" + transformed\n );\n }\n if (!transformed) {\n return {\n id: finalID,\n code: \"\",\n map: null,\n };\n }\n\n return {\n id: finalID,\n code: transformed,\n map: null,\n };\n },\n };\n}\n"],"names":["options"],"mappings":"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"}
|