UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

157 lines (152 loc) 5.85 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__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: true }) : target, mod)); var import_path = __toESM(require("path"), 1); var import_fs = __toESM(require("fs"), 1); var import_vitest = require("vitest"); var import_withOne = require("./withOne.native.js"); function _type_of(obj) { "@swc/helpers - typeof"; return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } var projectRoot = import_path.default.resolve(__dirname, "../../"); var tmpDirs = []; function createOneFixtureProject() { var workspaceRoot = import_path.default.resolve(__dirname, "../../../../"); var tmpDir = import_fs.default.mkdtempSync(import_path.default.join(workspaceRoot, ".tmp-with-one-")); tmpDirs.push(tmpDir); import_fs.default.writeFileSync(import_path.default.join(tmpDir, "package.json"), JSON.stringify({ name: "tmp-with-one", private: true })); import_fs.default.writeFileSync(import_path.default.join(tmpDir, "tsconfig.json"), JSON.stringify({ compilerOptions: { paths: {} } })); import_fs.default.mkdirSync(import_path.default.join(tmpDir, "app")); import_fs.default.writeFileSync(import_path.default.join(tmpDir, "app", "index.tsx"), "export default null\n"); import_fs.default.writeFileSync(import_path.default.join(tmpDir, "vite.config.ts"), ` const defaultConfigOverrides = (config) => ({ ...config, watchFolders: [ ...(config.watchFolders || []), ${JSON.stringify(import_path.default.join(tmpDir, "shared"))}, ], resolver: { ...config.resolver, extraNodeModules: { ...config.resolver?.extraNodeModules, 'fixture-singleton': ${JSON.stringify(tmpDir)}, }, }, }) globalThis.__oneOptions = { setupFile: { native: './src/setup-native.ts', }, native: { bundler: 'metro', bundlerOptions: { argv: { projectRoot: ${JSON.stringify(tmpDir)}, }, defaultConfigOverrides, }, }, } globalThis.__vxrnMetroOptions__ = { argv: { projectRoot: ${JSON.stringify(tmpDir)}, }, defaultConfigOverrides, } export default { root: ${JSON.stringify(tmpDir)}, } `); return tmpDir; } (0, import_vitest.afterAll)(function () { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0; try { for (var _iterator = tmpDirs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var tmpDir = _step.value; import_fs.default.rmSync(tmpDir, { recursive: true, force: true }); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } }); (0, import_vitest.describe)("withOne", function () { (0, import_vitest.it)("returns a config produced by the production native bundle pipeline", async function () { var config = await (0, import_withOne.withOne)(projectRoot, { loadViteConfig: false }); (0, import_vitest.expect)(config).toBeTruthy(); (0, import_vitest.expect)(config.resolver).toBeTruthy(); (0, import_vitest.expect)(_type_of(config.resolver.resolveRequest)).toBe("function"); (0, import_vitest.expect)(config.transformer).toBeTruthy(); (0, import_vitest.expect)(config.transformer.babelTransformerPath).toMatch(/vite-plugin-metro.*babel-transformer/); }); (0, import_vitest.it)("orders sourceExts so .js wins over .mjs (the proven One fix)", async function () { var config = await (0, import_withOne.withOne)(projectRoot, { loadViteConfig: false }); var exts = config.resolver.sourceExts; (0, import_vitest.expect)(exts).toContain("mjs"); (0, import_vitest.expect)(exts).toContain("js"); (0, import_vitest.expect)(exts.indexOf("js")).toBeLessThan(exts.indexOf("mjs")); }); (0, import_vitest.it)("accepts a project root as the first arg", async function () { var config = await (0, import_withOne.withOne)(projectRoot, { loadViteConfig: false }); (0, import_vitest.expect)(config).toBeTruthy(); }); (0, import_vitest.it)("loads vite.config by default and applies the real native Metro options", async function () { var fixtureRoot = createOneFixtureProject(); var config = await (0, import_withOne.withOne)(fixtureRoot); (0, import_vitest.expect)(config.resolver.extraNodeModules["fixture-singleton"]).toBe(fixtureRoot); (0, import_vitest.expect)(config.watchFolders).toContain(import_path.default.join(fixtureRoot, "shared")); }); }); //# sourceMappingURL=withOne.test.native.js.map