one
Version:
One is a React framework for web, iOS, and Android apps.
78 lines (75 loc) • 2.55 kB
JavaScript
import module from "node:module";
import path from "node:path";
import { absorbedPackageAliases } from "../utils/absorbedPackages.mjs";
function buildOneMetroResolverOverrides({ projectRoot }) {
const require2 = module.createRequire(projectRoot + "/");
const emptyPath = require2.resolve("@vxrn/vite-plugin-metro/empty", { paths: [projectRoot] });
const projectPackagePath = path.join(projectRoot, "package.json");
const absorbed = absorbedPackageAliases(projectRoot, "native");
return (defaultConfig) => {
const resolver = {
...defaultConfig?.resolver,
assetExts: [.../* @__PURE__ */ new Set([...defaultConfig?.resolver?.assetExts ?? [], "txt"])],
extraNodeModules: { ...defaultConfig?.resolver?.extraNodeModules },
nodeModulesPaths: defaultConfig?.resolver?.nodeModulesPaths,
resolveRequest: (context, moduleName, platform) => {
const defaultResolveRequest = defaultConfig?.resolver?.resolveRequest || context.resolveRequest;
if (moduleName === "react-native-worklets" || moduleName.startsWith("react-native-worklets/")) {
return defaultResolveRequest({
...context,
originModulePath: projectPackagePath
}, moduleName, platform);
}
if (moduleName in absorbed) {
return {
type: "sourceFile",
filePath: absorbed[moduleName]
};
}
if (moduleName.endsWith(".css")) {
return {
type: "sourceFile",
filePath: emptyPath
};
}
if (/_middleware.tsx?$/.test(moduleName)) {
return {
type: "sourceFile",
filePath: emptyPath
};
}
if (/\.server(\.[jt]sx?)?$/.test(moduleName)) {
return {
type: "sourceFile",
filePath: emptyPath
};
}
if (moduleName === "react-native-svg") {
const res2 = defaultResolveRequest(context, moduleName, platform);
const svgSrcSuffix = `${path.sep}src${path.sep}index.ts`;
if (res2 && "filePath" in res2 && res2.filePath.includes(svgSrcSuffix)) {
return {
...res2,
filePath: res2.filePath.replace(svgSrcSuffix, `${path.sep}lib${path.sep}commonjs${path.sep}index.js`)
};
}
return res2;
}
const res = defaultResolveRequest(context, moduleName, platform);
if (res && "filePath" in res && /\.server\.[jt]sx?$/.test(res.filePath)) {
return {
type: "sourceFile",
filePath: emptyPath
};
}
return res;
}
};
return {
...defaultConfig,
resolver
};
};
}
export { buildOneMetroResolverOverrides };
//# sourceMappingURL=buildOneMetroResolverOverrides.mjs.map