one
Version:
One is a new React Framework that makes Vite serve both native and web.
136 lines (131 loc) • 5.65 kB
JavaScript
;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf,
__hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: !0
});
},
__copyProps = (to, from, except, desc) => {
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: !0
}) : target, mod)),
__toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
value: !0
}), mod);
var easPrebuild_exports = {};
__export(easPrebuild_exports, {
run: () => run
});
module.exports = __toCommonJS(easPrebuild_exports);
var import_fs = __toESM(require("fs"), 1),
import_path = __toESM(require("path"), 1),
import_loadConfig = require("../vite/loadConfig.native.js"),
import_getRouterRootFromOneOptions = require("../utils/getRouterRootFromOneOptions.native.js");
function _type_of(obj) {
"@swc/helpers - typeof";
return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
}
var GENERATED_COMMENT = `// auto-generated by "one eas-prebuild" - do not edit manually
// regenerate with: npx one eas-prebuild
`;
async function run() {
var _oneOptions_react,
root = process.cwd();
console.info("one eas-prebuild: generating EAS build configs..."), process.env.IS_VXRN_CLI = "true";
var {
oneOptions
} = await (0, import_loadConfig.loadUserOneOptions)("build", !0),
routerRoot = (0, import_getRouterRootFromOneOptions.getRouterRootFromOneOptions)(oneOptions),
setupFile = oneOptions.setupFile,
reactCompiler = (_oneOptions_react = oneOptions.react) === null || _oneOptions_react === void 0 ? void 0 : _oneOptions_react.compiler,
useReactCompiler = reactCompiler === !0 || reactCompiler === "native" || (typeof reactCompiler > "u" ? "undefined" : _type_of(reactCompiler)) === "object",
hasReanimated = checkDependency(root, "react-native-reanimated"),
babelConfig = generateBabelConfig({
routerRoot,
setupFile,
useReactCompiler,
hasReanimated
}),
babelPath = import_path.default.join(root, "babel.config.cjs");
import_fs.default.writeFileSync(babelPath, babelConfig), console.info(` \u2713 wrote ${import_path.default.relative(root, babelPath)}`);
var metroConfig = generateMetroConfig(),
metroPath = import_path.default.join(root, "metro.config.cjs");
import_fs.default.writeFileSync(metroPath, metroConfig), console.info(` \u2713 wrote ${import_path.default.relative(root, metroPath)}`), console.info("one eas-prebuild: done");
}
function checkDependency(root, pkg) {
try {
var _pkgJson_dependencies,
_pkgJson_devDependencies,
pkgJsonPath = import_path.default.join(root, "package.json"),
pkgJson = JSON.parse(import_fs.default.readFileSync(pkgJsonPath, "utf-8"));
return !!(!((_pkgJson_dependencies = pkgJson.dependencies) === null || _pkgJson_dependencies === void 0) && _pkgJson_dependencies[pkg] || !((_pkgJson_devDependencies = pkgJson.devDependencies) === null || _pkgJson_devDependencies === void 0) && _pkgJson_devDependencies[pkg]);
} catch {
return !1;
}
}
function generateBabelConfig(param) {
var {
routerRoot,
setupFile,
useReactCompiler,
hasReanimated
} = param,
setupFileArg = setupFile ? typeof setupFile == "string" ? `'${setupFile}'` : `{ ${Object.entries(setupFile).filter(function (param2) {
var [, v] = param2;
return v;
}).map(function (param2) {
var [k, v] = param2;
return `${k}: '${v}'`;
}).join(", ")} }` : "undefined",
prePlugins = [],
postPlugins = [];
useReactCompiler && prePlugins.push("'babel-plugin-react-compiler'"), hasReanimated && postPlugins.push("'react-native-reanimated/plugin'");
var pluginsCode = function () {
if (!prePlugins.length && !postPlugins.length) return "options.babelConfig?.plugins || []";
var parts = [];
return prePlugins.length && parts.push(...prePlugins), parts.push("...(options.babelConfig?.plugins || [])"), postPlugins.length && parts.push(...postPlugins), `[
${parts.join(`,
`)},
]`;
}();
return `${GENERATED_COMMENT}
const { getViteMetroPluginOptions } = require('one/getViteMetroPluginOptions')
const options = getViteMetroPluginOptions({
projectRoot: __dirname,
relativeRouterRoot: '${routerRoot}',
setupFile: ${setupFileArg},
})
module.exports = function (api) {
api.cache(true)
return {
presets: ['babel-preset-expo'],
plugins: ${pluginsCode},
}
}
`;
}
function generateMetroConfig() {
return `${GENERATED_COMMENT}
const { getDefaultConfig } = require('one/metro-eas')
module.exports = getDefaultConfig(__dirname)
`;
}
//# sourceMappingURL=easPrebuild.native.js.map