one 1.16.12 → 1.17.0
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/cjs/babel-preset/index.cjs +154 -0
- package/dist/cjs/babel-preset/index.native.js +186 -0
- package/dist/cjs/babel-preset/index.native.js.map +1 -0
- package/dist/cjs/babel-preset/index.test.cjs +143 -0
- package/dist/cjs/babel-preset/index.test.native.js +165 -0
- package/dist/cjs/babel-preset/index.test.native.js.map +1 -0
- package/dist/cjs/babel-preset/integration.test.cjs +94 -0
- package/dist/cjs/babel-preset/integration.test.native.js +97 -0
- package/dist/cjs/babel-preset/integration.test.native.js.map +1 -0
- package/dist/cjs/cli/generateBundlerConfig.cjs +247 -0
- package/dist/cjs/cli/generateBundlerConfig.native.js +316 -0
- package/dist/cjs/cli/generateBundlerConfig.native.js.map +1 -0
- package/dist/cjs/cli/generateBundlerConfig.test.cjs +350 -0
- package/dist/cjs/cli/generateBundlerConfig.test.native.js +380 -0
- package/dist/cjs/cli/generateBundlerConfig.test.native.js.map +1 -0
- package/dist/cjs/cli/patch.cjs +19 -2
- package/dist/cjs/cli/patch.native.js +26 -2
- package/dist/cjs/cli/patch.native.js.map +1 -1
- package/dist/cjs/cli/patch.test.cjs +56 -0
- package/dist/cjs/cli/patch.test.native.js +65 -0
- package/dist/cjs/cli/patch.test.native.js.map +1 -0
- package/dist/cjs/cli.cjs +39 -2
- package/dist/cjs/cli.native.js +40 -2
- package/dist/cjs/cli.native.js.map +1 -1
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.cjs +102 -0
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.native.js +109 -0
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.native.js.map +1 -0
- package/dist/cjs/metro-config/getViteMetroPluginOptions.cjs +17 -150
- package/dist/cjs/metro-config/getViteMetroPluginOptions.integration.test.cjs +84 -0
- package/dist/cjs/metro-config/getViteMetroPluginOptions.integration.test.native.js +90 -0
- package/dist/cjs/metro-config/getViteMetroPluginOptions.integration.test.native.js.map +1 -0
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js +17 -158
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
- package/dist/cjs/metro-config/withOne.cjs +82 -0
- package/dist/cjs/metro-config/withOne.native.js +88 -0
- package/dist/cjs/metro-config/withOne.native.js.map +1 -0
- package/dist/cjs/metro-config/withOne.test.cjs +129 -0
- package/dist/cjs/metro-config/withOne.test.native.js +156 -0
- package/dist/cjs/metro-config/withOne.test.native.js.map +1 -0
- package/dist/cjs/vite/loadConfig.cjs +20 -1
- package/dist/cjs/vite/loadConfig.native.js +20 -1
- package/dist/cjs/vite/loadConfig.native.js.map +1 -1
- package/dist/cjs/vite/plugins/warmRoutesPlugin.cjs +13 -7
- package/dist/cjs/vite/plugins/warmRoutesPlugin.native.js +13 -7
- package/dist/cjs/vite/plugins/warmRoutesPlugin.native.js.map +1 -1
- package/dist/esm/babel-preset/index.mjs +116 -0
- package/dist/esm/babel-preset/index.mjs.map +1 -0
- package/dist/esm/babel-preset/index.native.js +145 -0
- package/dist/esm/babel-preset/index.native.js.map +1 -0
- package/dist/esm/babel-preset/index.test.mjs +120 -0
- package/dist/esm/babel-preset/index.test.mjs.map +1 -0
- package/dist/esm/babel-preset/index.test.native.js +139 -0
- package/dist/esm/babel-preset/index.test.native.js.map +1 -0
- package/dist/esm/babel-preset/integration.test.mjs +71 -0
- package/dist/esm/babel-preset/integration.test.mjs.map +1 -0
- package/dist/esm/babel-preset/integration.test.native.js +71 -0
- package/dist/esm/babel-preset/integration.test.native.js.map +1 -0
- package/dist/esm/cli/generateBundlerConfig.mjs +207 -0
- package/dist/esm/cli/generateBundlerConfig.mjs.map +1 -0
- package/dist/esm/cli/generateBundlerConfig.native.js +273 -0
- package/dist/esm/cli/generateBundlerConfig.native.js.map +1 -0
- package/dist/esm/cli/generateBundlerConfig.test.mjs +327 -0
- package/dist/esm/cli/generateBundlerConfig.test.mjs.map +1 -0
- package/dist/esm/cli/generateBundlerConfig.test.native.js +354 -0
- package/dist/esm/cli/generateBundlerConfig.test.native.js.map +1 -0
- package/dist/esm/cli/patch.mjs +19 -2
- package/dist/esm/cli/patch.mjs.map +1 -1
- package/dist/esm/cli/patch.native.js +26 -2
- package/dist/esm/cli/patch.native.js.map +1 -1
- package/dist/esm/cli/patch.test.mjs +57 -0
- package/dist/esm/cli/patch.test.mjs.map +1 -0
- package/dist/esm/cli/patch.test.native.js +63 -0
- package/dist/esm/cli/patch.test.native.js.map +1 -0
- package/dist/esm/cli.mjs +39 -2
- package/dist/esm/cli.mjs.map +1 -1
- package/dist/esm/cli.native.js +40 -2
- package/dist/esm/cli.native.js.map +1 -1
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.mjs +66 -0
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.mjs.map +1 -0
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.native.js +70 -0
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.native.js.map +1 -0
- package/dist/esm/metro-config/getViteMetroPluginOptions.integration.test.mjs +61 -0
- package/dist/esm/metro-config/getViteMetroPluginOptions.integration.test.mjs.map +1 -0
- package/dist/esm/metro-config/getViteMetroPluginOptions.integration.test.native.js +64 -0
- package/dist/esm/metro-config/getViteMetroPluginOptions.integration.test.native.js.map +1 -0
- package/dist/esm/metro-config/getViteMetroPluginOptions.mjs +17 -138
- package/dist/esm/metro-config/getViteMetroPluginOptions.mjs.map +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.native.js +17 -146
- package/dist/esm/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
- package/dist/esm/metro-config/withOne.mjs +45 -0
- package/dist/esm/metro-config/withOne.mjs.map +1 -0
- package/dist/esm/metro-config/withOne.native.js +48 -0
- package/dist/esm/metro-config/withOne.native.js.map +1 -0
- package/dist/esm/metro-config/withOne.test.mjs +106 -0
- package/dist/esm/metro-config/withOne.test.mjs.map +1 -0
- package/dist/esm/metro-config/withOne.test.native.js +130 -0
- package/dist/esm/metro-config/withOne.test.native.js.map +1 -0
- package/dist/esm/vite/loadConfig.mjs +20 -1
- package/dist/esm/vite/loadConfig.mjs.map +1 -1
- package/dist/esm/vite/loadConfig.native.js +20 -1
- package/dist/esm/vite/loadConfig.native.js.map +1 -1
- package/dist/esm/vite/plugins/warmRoutesPlugin.mjs +13 -7
- package/dist/esm/vite/plugins/warmRoutesPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/warmRoutesPlugin.native.js +13 -7
- package/dist/esm/vite/plugins/warmRoutesPlugin.native.js.map +1 -1
- package/package.json +20 -9
- package/src/babel-preset/index.test.ts +148 -0
- package/src/babel-preset/index.ts +250 -0
- package/src/babel-preset/integration.test.ts +91 -0
- package/src/cli/generateBundlerConfig.test.ts +343 -0
- package/src/cli/generateBundlerConfig.ts +339 -0
- package/src/cli/patch.test.ts +65 -0
- package/src/cli/patch.ts +30 -2
- package/src/cli.ts +31 -0
- package/src/metro-config/buildOneMetroResolverOverrides.ts +104 -0
- package/src/metro-config/getViteMetroPluginOptions.integration.test.ts +75 -0
- package/src/metro-config/getViteMetroPluginOptions.ts +15 -230
- package/src/metro-config/withOne.test.ts +120 -0
- package/src/metro-config/withOne.ts +112 -0
- package/src/vite/loadConfig.ts +22 -0
- package/src/vite/plugins/warmRoutesPlugin.ts +22 -6
- package/types/babel-preset/index.d.ts +68 -0
- package/types/babel-preset/index.d.ts.map +1 -0
- package/types/babel-preset/index.test.d.ts +2 -0
- package/types/babel-preset/index.test.d.ts.map +1 -0
- package/types/babel-preset/integration.test.d.ts +2 -0
- package/types/babel-preset/integration.test.d.ts.map +1 -0
- package/types/cli/generateBundlerConfig.d.ts +61 -0
- package/types/cli/generateBundlerConfig.d.ts.map +1 -0
- package/types/cli/generateBundlerConfig.test.d.ts +2 -0
- package/types/cli/generateBundlerConfig.test.d.ts.map +1 -0
- package/types/cli/patch.d.ts.map +1 -1
- package/types/cli/patch.test.d.ts +2 -0
- package/types/cli/patch.test.d.ts.map +1 -0
- package/types/metro-config/buildOneMetroResolverOverrides.d.ts +20 -0
- package/types/metro-config/buildOneMetroResolverOverrides.d.ts.map +1 -0
- package/types/metro-config/getViteMetroPluginOptions.d.ts +0 -5
- package/types/metro-config/getViteMetroPluginOptions.d.ts.map +1 -1
- package/types/metro-config/getViteMetroPluginOptions.integration.test.d.ts +2 -0
- package/types/metro-config/getViteMetroPluginOptions.integration.test.d.ts.map +1 -0
- package/types/metro-config/withOne.d.ts +44 -0
- package/types/metro-config/withOne.d.ts.map +1 -0
- package/types/metro-config/withOne.test.d.ts +2 -0
- package/types/metro-config/withOne.test.d.ts.map +1 -0
- package/types/vite/loadConfig.d.ts +1 -0
- package/types/vite/loadConfig.d.ts.map +1 -1
- package/types/vite/plugins/warmRoutesPlugin.d.ts.map +1 -1
- package/dist/cjs/metro-config/getViteMetroPluginOptions.test.cjs +0 -23
- package/dist/cjs/metro-config/getViteMetroPluginOptions.test.native.js +0 -26
- package/dist/cjs/metro-config/getViteMetroPluginOptions.test.native.js.map +0 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.test.mjs +0 -24
- package/dist/esm/metro-config/getViteMetroPluginOptions.test.mjs.map +0 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.test.native.js +0 -24
- package/dist/esm/metro-config/getViteMetroPluginOptions.test.native.js.map +0 -1
- package/src/metro-config/getViteMetroPluginOptions.test.ts +0 -34
- package/types/metro-config/getViteMetroPluginOptions.test.d.ts +0 -2
- package/types/metro-config/getViteMetroPluginOptions.test.d.ts.map +0 -1
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import module from "module";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import mm from "micromatch";
|
|
4
|
+
import tsconfigPaths from "tsconfig-paths";
|
|
5
|
+
import { API_ROUTE_GLOB_PATTERN, ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS } from "../router/glob-patterns.native.js";
|
|
6
|
+
function oneBabelPreset(api) {
|
|
7
|
+
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
8
|
+
var _options_projectRoot, _options_routerRoot;
|
|
9
|
+
var hasViteInjectedOnePlugins = typeof (api === null || api === void 0 ? void 0 : api.caller) === "function" ? api.caller(function (caller) {
|
|
10
|
+
return !!(caller === null || caller === void 0 ? void 0 : caller.oneViteMetroBabelConfig);
|
|
11
|
+
}) : false;
|
|
12
|
+
if (!(api === null || api === void 0 ? void 0 : api.caller) && typeof (api === null || api === void 0 ? void 0 : api.cache) === "function") {
|
|
13
|
+
api.cache(true);
|
|
14
|
+
}
|
|
15
|
+
var projectRoot = path.resolve((_options_projectRoot = options.projectRoot) !== null && _options_projectRoot !== void 0 ? _options_projectRoot : typeof (api === null || api === void 0 ? void 0 : api.cwd) === "function" ? api.cwd() : process.cwd());
|
|
16
|
+
var presets = [];
|
|
17
|
+
if (options.includeExpoPreset !== false) {
|
|
18
|
+
var require2 = module.createRequire(projectRoot + "/");
|
|
19
|
+
try {
|
|
20
|
+
var expoPresetPath = require2.resolve("babel-preset-expo");
|
|
21
|
+
presets.push(require2(expoPresetPath));
|
|
22
|
+
} catch (e) {
|
|
23
|
+
throw new Error(`[one/babel-preset] Could not resolve 'babel-preset-expo' from ${projectRoot}. Install it as a project dependency (it ships with the Expo SDK). If you don't want the Expo base preset, pass { includeExpoPreset: false }.`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
presets,
|
|
28
|
+
plugins: hasViteInjectedOnePlugins ? [] : buildOneBabelPlugins({
|
|
29
|
+
projectRoot,
|
|
30
|
+
relativeRouterRoot: (_options_routerRoot = options.routerRoot) !== null && _options_routerRoot !== void 0 ? _options_routerRoot : "app",
|
|
31
|
+
ignoredRouteFiles: options.ignoredRouteFiles,
|
|
32
|
+
linking: options.linking,
|
|
33
|
+
setupFile: options.setupFile,
|
|
34
|
+
includeImportMetaEnv: options.includeImportMetaEnv
|
|
35
|
+
})
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function buildOneBabelPlugins(param) {
|
|
39
|
+
var {
|
|
40
|
+
projectRoot,
|
|
41
|
+
relativeRouterRoot,
|
|
42
|
+
ignoredRouteFiles,
|
|
43
|
+
linking,
|
|
44
|
+
setupFile,
|
|
45
|
+
includeImportMetaEnv = true
|
|
46
|
+
} = param;
|
|
47
|
+
var tsconfig = tsconfigPaths.loadConfig(projectRoot);
|
|
48
|
+
if (tsconfig.resultType === "failed") {
|
|
49
|
+
throw new Error("[one/babel-preset] tsconfig.json paths could not be loaded");
|
|
50
|
+
}
|
|
51
|
+
var require2 = module.createRequire(projectRoot + "/");
|
|
52
|
+
var metroEntryPath = require2.resolve("one/metro-entry", {
|
|
53
|
+
paths: [projectRoot]
|
|
54
|
+
});
|
|
55
|
+
var setupFileRelativeToMetroEntry = function () {
|
|
56
|
+
if (!setupFile) return void 0;
|
|
57
|
+
var file = typeof setupFile === "string" ? setupFile : setupFile.native || setupFile.ios || setupFile.android;
|
|
58
|
+
if (!file) return void 0;
|
|
59
|
+
return path.relative(path.dirname(metroEntryPath), path.join(projectRoot, file));
|
|
60
|
+
}();
|
|
61
|
+
return [
|
|
62
|
+
// standalone Metro CLI (expo export, eas update) needs `import.meta.env.*` /
|
|
63
|
+
// `process.env.*` baked in. The Vite path passes `false` here and injects
|
|
64
|
+
// its own version with the user's `define` env via the server hook.
|
|
65
|
+
...(includeImportMetaEnv ? [["@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin", {
|
|
66
|
+
env: buildStandaloneImportMetaEnv()
|
|
67
|
+
}]] : []), "one/babel-plugin-environment-guard", ["one/babel-plugin-remove-server-code", {
|
|
68
|
+
routerRoot: relativeRouterRoot
|
|
69
|
+
}], ["babel-plugin-module-resolver",
|
|
70
|
+
// "vite-tsconfig-paths" for Metro
|
|
71
|
+
{
|
|
72
|
+
alias: Object.fromEntries(Object.entries(tsconfig.paths).map(function (param2) {
|
|
73
|
+
var [k, v] = param2;
|
|
74
|
+
var key = k.endsWith("/*") ? k.replace(/\/\*$/, "") : `${k}$`;
|
|
75
|
+
var value = v[0].replace(/\/\*$/, "");
|
|
76
|
+
if (!value.startsWith("./")) value = `./${value}`;
|
|
77
|
+
return [key, value];
|
|
78
|
+
}))
|
|
79
|
+
}], ["one/babel-plugin-one-router-metro", {
|
|
80
|
+
ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY: path.relative(path.dirname(metroEntryPath), path.join(projectRoot, relativeRouterRoot)),
|
|
81
|
+
ONE_ROUTER_ROOT_FOLDER_NAME: relativeRouterRoot,
|
|
82
|
+
ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING: buildRouterRequireContextRegexString(ignoredRouteFiles),
|
|
83
|
+
ONE_ROUTER_LINKING_CONFIG: linking,
|
|
84
|
+
ONE_SETUP_FILE_NATIVE: setupFileRelativeToMetroEntry
|
|
85
|
+
}], "one/babel-plugin-inline-one-server-url"];
|
|
86
|
+
}
|
|
87
|
+
function buildStandaloneImportMetaEnv() {
|
|
88
|
+
var isProduction = process.env.NODE_ENV !== "development";
|
|
89
|
+
var env = {
|
|
90
|
+
MODE: isProduction ? "production" : "development",
|
|
91
|
+
BASE_URL: "/",
|
|
92
|
+
PROD: isProduction,
|
|
93
|
+
DEV: !isProduction,
|
|
94
|
+
SSR: false
|
|
95
|
+
};
|
|
96
|
+
var _iteratorNormalCompletion = true,
|
|
97
|
+
_didIteratorError = false,
|
|
98
|
+
_iteratorError = void 0;
|
|
99
|
+
try {
|
|
100
|
+
for (var _iterator = Object.entries(process.env)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
101
|
+
var [key, value] = _step.value;
|
|
102
|
+
if (key.startsWith("EXPO_PUBLIC_") || key.startsWith("ONE_") || key.startsWith("VITE_")) {
|
|
103
|
+
env[key] = value;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
} catch (err) {
|
|
107
|
+
_didIteratorError = true;
|
|
108
|
+
_iteratorError = err;
|
|
109
|
+
} finally {
|
|
110
|
+
try {
|
|
111
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
112
|
+
_iterator.return();
|
|
113
|
+
}
|
|
114
|
+
} finally {
|
|
115
|
+
if (_didIteratorError) {
|
|
116
|
+
throw _iteratorError;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return env;
|
|
121
|
+
}
|
|
122
|
+
function normalizeReSource(source) {
|
|
123
|
+
return source.replace(/\[\\\\\/\]/g, "\\/").replace(/\[\^\\\\\/\]/g, "[^/]");
|
|
124
|
+
}
|
|
125
|
+
function buildRouterRequireContextRegexString(ignoredRouteFiles) {
|
|
126
|
+
var excludeRes = [...(ignoredRouteFiles || []).map(function (pattern) {
|
|
127
|
+
return mm.makeRe(pattern);
|
|
128
|
+
}), ...ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS.map(function (pattern) {
|
|
129
|
+
return mm.makeRe(pattern);
|
|
130
|
+
}), mm.makeRe(API_ROUTE_GLOB_PATTERN)];
|
|
131
|
+
var mustStartWith = String.raw`^(?:(?:^|\/|(?:(?:(?!(?:^|\/)\.).)*?)\/)(?!\.)(?=.)[^/]*?`;
|
|
132
|
+
var mustEndWith = String.raw`)$`;
|
|
133
|
+
var negatives = excludeRes.map(function (re, i) {
|
|
134
|
+
var reSource = normalizeReSource(re.source);
|
|
135
|
+
if (!(reSource.startsWith(mustStartWith) && reSource.endsWith(mustEndWith))) {
|
|
136
|
+
var pattern = ignoredRouteFiles === null || ignoredRouteFiles === void 0 ? void 0 : ignoredRouteFiles[i];
|
|
137
|
+
throw new Error(pattern ? `[one/metro] ignoredRouteFile pattern "${pattern}" is not supported. We cannot process the corresponding regex "${reSource}" for now.` : `Unsupported regex "${reSource}" in "ignoredRouteFiles".`);
|
|
138
|
+
}
|
|
139
|
+
var inner = reSource.slice(mustStartWith.length, reSource.length - mustEndWith.length);
|
|
140
|
+
return String.raw`(?:.*${inner})`;
|
|
141
|
+
});
|
|
142
|
+
return String.raw`^(?:\.\/)(?!${negatives.join("|")}$).*\.tsx?$`;
|
|
143
|
+
}
|
|
144
|
+
export { buildOneBabelPlugins, buildRouterRequireContextRegexString, oneBabelPreset as default };
|
|
145
|
+
//# sourceMappingURL=index.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["module","path","mm","tsconfigPaths","API_ROUTE_GLOB_PATTERN","ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS","oneBabelPreset","api","options","arguments","length","_options_projectRoot","_options_routerRoot","hasViteInjectedOnePlugins","caller","oneViteMetroBabelConfig","cache","projectRoot","resolve","cwd","process","presets","includeExpoPreset","require2","createRequire","expoPresetPath","push","e","Error","plugins","buildOneBabelPlugins","relativeRouterRoot","routerRoot","ignoredRouteFiles","linking","setupFile","includeImportMetaEnv","param","tsconfig","loadConfig","resultType","metroEntryPath","paths","setupFileRelativeToMetroEntry","file","native","ios","android","relative","dirname","join","env","buildStandaloneImportMetaEnv","alias","Object","fromEntries","entries","map","param2","k","v","key","endsWith","replace","value","startsWith","ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY","ONE_ROUTER_ROOT_FOLDER_NAME","ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING","buildRouterRequireContextRegexString","ONE_ROUTER_LINKING_CONFIG","ONE_SETUP_FILE_NATIVE","isProduction","NODE_ENV","MODE","BASE_URL","PROD","DEV","SSR","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","err","return","normalizeReSource","source","excludeRes","pattern"],"sources":["../../../src/babel-preset/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import oneBabelPreset, { buildOneBabelPlugins } from "./index.mjs";
|
|
4
|
+
const projectRoot = path.resolve(__dirname, "../../");
|
|
5
|
+
const fakeApi = cwd => ({
|
|
6
|
+
cache: () => {},
|
|
7
|
+
cwd: () => cwd
|
|
8
|
+
});
|
|
9
|
+
describe("one/babel-preset", () => {
|
|
10
|
+
it("returns presets and plugins", () => {
|
|
11
|
+
const result = oneBabelPreset(fakeApi(projectRoot), {
|
|
12
|
+
projectRoot,
|
|
13
|
+
// skip the babel-preset-expo lookup so this test runs without the
|
|
14
|
+
// expo SDK installed in the workspace root
|
|
15
|
+
includeExpoPreset: false
|
|
16
|
+
});
|
|
17
|
+
expect(result).toHaveProperty("plugins");
|
|
18
|
+
expect(Array.isArray(result.plugins)).toBe(true);
|
|
19
|
+
expect(result.plugins).toHaveLength(6);
|
|
20
|
+
});
|
|
21
|
+
it("orders the plugin chain so server code is removed before router transforms", () => {
|
|
22
|
+
const {
|
|
23
|
+
plugins
|
|
24
|
+
} = oneBabelPreset(fakeApi(projectRoot), {
|
|
25
|
+
projectRoot,
|
|
26
|
+
includeExpoPreset: false
|
|
27
|
+
});
|
|
28
|
+
const names = (plugins ?? []).map(p => Array.isArray(p) ? p[0] : p);
|
|
29
|
+
expect(names).toEqual(["@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin", "one/babel-plugin-environment-guard", "one/babel-plugin-remove-server-code", "babel-plugin-module-resolver", "one/babel-plugin-one-router-metro", "one/babel-plugin-inline-one-server-url"]);
|
|
30
|
+
});
|
|
31
|
+
it('defaults routerRoot to "app"', () => {
|
|
32
|
+
const {
|
|
33
|
+
plugins
|
|
34
|
+
} = oneBabelPreset(fakeApi(projectRoot), {
|
|
35
|
+
projectRoot,
|
|
36
|
+
includeExpoPreset: false
|
|
37
|
+
});
|
|
38
|
+
const removeServer = (plugins ?? []).find(p => Array.isArray(p) && p[0] === "one/babel-plugin-remove-server-code");
|
|
39
|
+
expect(removeServer?.[1].routerRoot).toBe("app");
|
|
40
|
+
});
|
|
41
|
+
it("threads custom routerRoot through", () => {
|
|
42
|
+
const {
|
|
43
|
+
plugins
|
|
44
|
+
} = oneBabelPreset(fakeApi(projectRoot), {
|
|
45
|
+
projectRoot,
|
|
46
|
+
routerRoot: "src/routes",
|
|
47
|
+
includeExpoPreset: false
|
|
48
|
+
});
|
|
49
|
+
const removeServer = (plugins ?? []).find(p => Array.isArray(p) && p[0] === "one/babel-plugin-remove-server-code");
|
|
50
|
+
expect(removeServer?.[1].routerRoot).toBe("src/routes");
|
|
51
|
+
});
|
|
52
|
+
it("skips the One plugin chain when the Vite Metro caller already injected it", () => {
|
|
53
|
+
const result = oneBabelPreset({
|
|
54
|
+
cache: () => {},
|
|
55
|
+
cwd: () => projectRoot,
|
|
56
|
+
caller: cb => cb({
|
|
57
|
+
oneViteMetroBabelConfig: true
|
|
58
|
+
})
|
|
59
|
+
}, {
|
|
60
|
+
projectRoot,
|
|
61
|
+
includeExpoPreset: false
|
|
62
|
+
});
|
|
63
|
+
expect(result.plugins).toEqual([]);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe("buildOneBabelPlugins", () => {
|
|
67
|
+
it("produces the canonical One plugin chain (no env plugin)", () => {
|
|
68
|
+
const plugins = buildOneBabelPlugins({
|
|
69
|
+
projectRoot,
|
|
70
|
+
relativeRouterRoot: "app",
|
|
71
|
+
ignoredRouteFiles: [],
|
|
72
|
+
linking: void 0,
|
|
73
|
+
setupFile: void 0,
|
|
74
|
+
// skip the import-meta-env plugin so the assertion covers the One-only chain
|
|
75
|
+
includeImportMetaEnv: false
|
|
76
|
+
});
|
|
77
|
+
expect(plugins).toHaveLength(5);
|
|
78
|
+
expect(plugins[0]).toBe("one/babel-plugin-environment-guard");
|
|
79
|
+
expect(plugins[1]).toEqual(["one/babel-plugin-remove-server-code", {
|
|
80
|
+
routerRoot: "app"
|
|
81
|
+
}]);
|
|
82
|
+
expect(plugins[2]).toMatchObject(["babel-plugin-module-resolver", {
|
|
83
|
+
alias: {}
|
|
84
|
+
}]);
|
|
85
|
+
const oneRouterMetro = plugins[3];
|
|
86
|
+
expect(oneRouterMetro[0]).toBe("one/babel-plugin-one-router-metro");
|
|
87
|
+
expect(oneRouterMetro[1]).toMatchObject({
|
|
88
|
+
ONE_ROUTER_ROOT_FOLDER_NAME: "app",
|
|
89
|
+
ONE_ROUTER_LINKING_CONFIG: void 0,
|
|
90
|
+
ONE_SETUP_FILE_NATIVE: void 0
|
|
91
|
+
});
|
|
92
|
+
expect(typeof oneRouterMetro[1].ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY).toBe("string");
|
|
93
|
+
expect(typeof oneRouterMetro[1].ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING).toBe("string");
|
|
94
|
+
expect(plugins[4]).toBe("one/babel-plugin-inline-one-server-url");
|
|
95
|
+
});
|
|
96
|
+
it("threads setupFile through as a path relative to the metro entry", () => {
|
|
97
|
+
const plugins = buildOneBabelPlugins({
|
|
98
|
+
projectRoot,
|
|
99
|
+
relativeRouterRoot: "app",
|
|
100
|
+
setupFile: "src/setup-native.ts",
|
|
101
|
+
includeImportMetaEnv: false
|
|
102
|
+
});
|
|
103
|
+
const oneRouterMetro = plugins[3];
|
|
104
|
+
expect(oneRouterMetro[1].ONE_SETUP_FILE_NATIVE).toMatch(/setup-native\.ts$/);
|
|
105
|
+
});
|
|
106
|
+
it("passes the linking config through", () => {
|
|
107
|
+
const linking = {
|
|
108
|
+
prefixes: ["myapp://"]
|
|
109
|
+
};
|
|
110
|
+
const plugins = buildOneBabelPlugins({
|
|
111
|
+
projectRoot,
|
|
112
|
+
relativeRouterRoot: "app",
|
|
113
|
+
linking,
|
|
114
|
+
includeImportMetaEnv: false
|
|
115
|
+
});
|
|
116
|
+
const oneRouterMetro = plugins[3];
|
|
117
|
+
expect(oneRouterMetro[1].ONE_ROUTER_LINKING_CONFIG).toBe(linking);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=index.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["path","describe","expect","it","oneBabelPreset","buildOneBabelPlugins","projectRoot","resolve","__dirname","fakeApi","cwd","cache","result","includeExpoPreset","toHaveProperty","Array","isArray","plugins","toBe","toHaveLength","names","map","p","toEqual","removeServer","find","routerRoot","caller","cb","oneViteMetroBabelConfig","relativeRouterRoot","ignoredRouteFiles","linking","setupFile","includeImportMetaEnv","toMatchObject","alias","oneRouterMetro","ONE_ROUTER_ROOT_FOLDER_NAME","ONE_ROUTER_LINKING_CONFIG","ONE_SETUP_FILE_NATIVE","ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY","ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING","toMatch","prefixes"],"sources":["../../../src/babel-preset/index.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import oneBabelPreset, { buildOneBabelPlugins } from "./index.native.js";
|
|
4
|
+
function _type_of(obj) {
|
|
5
|
+
"@swc/helpers - typeof";
|
|
6
|
+
|
|
7
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
8
|
+
}
|
|
9
|
+
var projectRoot = path.resolve(__dirname, "../../");
|
|
10
|
+
var fakeApi = function (cwd) {
|
|
11
|
+
return {
|
|
12
|
+
cache: function () {},
|
|
13
|
+
cwd: function () {
|
|
14
|
+
return cwd;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
describe("one/babel-preset", function () {
|
|
19
|
+
it("returns presets and plugins", function () {
|
|
20
|
+
var result = oneBabelPreset(fakeApi(projectRoot), {
|
|
21
|
+
projectRoot,
|
|
22
|
+
// skip the babel-preset-expo lookup so this test runs without the
|
|
23
|
+
// expo SDK installed in the workspace root
|
|
24
|
+
includeExpoPreset: false
|
|
25
|
+
});
|
|
26
|
+
expect(result).toHaveProperty("plugins");
|
|
27
|
+
expect(Array.isArray(result.plugins)).toBe(true);
|
|
28
|
+
expect(result.plugins).toHaveLength(6);
|
|
29
|
+
});
|
|
30
|
+
it("orders the plugin chain so server code is removed before router transforms", function () {
|
|
31
|
+
var {
|
|
32
|
+
plugins
|
|
33
|
+
} = oneBabelPreset(fakeApi(projectRoot), {
|
|
34
|
+
projectRoot,
|
|
35
|
+
includeExpoPreset: false
|
|
36
|
+
});
|
|
37
|
+
var names = (plugins !== null && plugins !== void 0 ? plugins : []).map(function (p) {
|
|
38
|
+
return Array.isArray(p) ? p[0] : p;
|
|
39
|
+
});
|
|
40
|
+
expect(names).toEqual(["@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin", "one/babel-plugin-environment-guard", "one/babel-plugin-remove-server-code", "babel-plugin-module-resolver", "one/babel-plugin-one-router-metro", "one/babel-plugin-inline-one-server-url"]);
|
|
41
|
+
});
|
|
42
|
+
it('defaults routerRoot to "app"', function () {
|
|
43
|
+
var {
|
|
44
|
+
plugins
|
|
45
|
+
} = oneBabelPreset(fakeApi(projectRoot), {
|
|
46
|
+
projectRoot,
|
|
47
|
+
includeExpoPreset: false
|
|
48
|
+
});
|
|
49
|
+
var removeServer = (plugins !== null && plugins !== void 0 ? plugins : []).find(function (p) {
|
|
50
|
+
return Array.isArray(p) && p[0] === "one/babel-plugin-remove-server-code";
|
|
51
|
+
});
|
|
52
|
+
expect(removeServer === null || removeServer === void 0 ? void 0 : removeServer[1].routerRoot).toBe("app");
|
|
53
|
+
});
|
|
54
|
+
it("threads custom routerRoot through", function () {
|
|
55
|
+
var {
|
|
56
|
+
plugins
|
|
57
|
+
} = oneBabelPreset(fakeApi(projectRoot), {
|
|
58
|
+
projectRoot,
|
|
59
|
+
routerRoot: "src/routes",
|
|
60
|
+
includeExpoPreset: false
|
|
61
|
+
});
|
|
62
|
+
var removeServer = (plugins !== null && plugins !== void 0 ? plugins : []).find(function (p) {
|
|
63
|
+
return Array.isArray(p) && p[0] === "one/babel-plugin-remove-server-code";
|
|
64
|
+
});
|
|
65
|
+
expect(removeServer === null || removeServer === void 0 ? void 0 : removeServer[1].routerRoot).toBe("src/routes");
|
|
66
|
+
});
|
|
67
|
+
it("skips the One plugin chain when the Vite Metro caller already injected it", function () {
|
|
68
|
+
var result = oneBabelPreset({
|
|
69
|
+
cache: function () {},
|
|
70
|
+
cwd: function () {
|
|
71
|
+
return projectRoot;
|
|
72
|
+
},
|
|
73
|
+
caller: function (cb) {
|
|
74
|
+
return cb({
|
|
75
|
+
oneViteMetroBabelConfig: true
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}, {
|
|
79
|
+
projectRoot,
|
|
80
|
+
includeExpoPreset: false
|
|
81
|
+
});
|
|
82
|
+
expect(result.plugins).toEqual([]);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
describe("buildOneBabelPlugins", function () {
|
|
86
|
+
it("produces the canonical One plugin chain (no env plugin)", function () {
|
|
87
|
+
var plugins = buildOneBabelPlugins({
|
|
88
|
+
projectRoot,
|
|
89
|
+
relativeRouterRoot: "app",
|
|
90
|
+
ignoredRouteFiles: [],
|
|
91
|
+
linking: void 0,
|
|
92
|
+
setupFile: void 0,
|
|
93
|
+
// skip the import-meta-env plugin so the assertion covers the One-only chain
|
|
94
|
+
includeImportMetaEnv: false
|
|
95
|
+
});
|
|
96
|
+
expect(plugins).toHaveLength(5);
|
|
97
|
+
expect(plugins[0]).toBe("one/babel-plugin-environment-guard");
|
|
98
|
+
expect(plugins[1]).toEqual(["one/babel-plugin-remove-server-code", {
|
|
99
|
+
routerRoot: "app"
|
|
100
|
+
}]);
|
|
101
|
+
expect(plugins[2]).toMatchObject(["babel-plugin-module-resolver", {
|
|
102
|
+
alias: {}
|
|
103
|
+
}]);
|
|
104
|
+
var oneRouterMetro = plugins[3];
|
|
105
|
+
expect(oneRouterMetro[0]).toBe("one/babel-plugin-one-router-metro");
|
|
106
|
+
expect(oneRouterMetro[1]).toMatchObject({
|
|
107
|
+
ONE_ROUTER_ROOT_FOLDER_NAME: "app",
|
|
108
|
+
ONE_ROUTER_LINKING_CONFIG: void 0,
|
|
109
|
+
ONE_SETUP_FILE_NATIVE: void 0
|
|
110
|
+
});
|
|
111
|
+
expect(_type_of(oneRouterMetro[1].ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY)).toBe("string");
|
|
112
|
+
expect(_type_of(oneRouterMetro[1].ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING)).toBe("string");
|
|
113
|
+
expect(plugins[4]).toBe("one/babel-plugin-inline-one-server-url");
|
|
114
|
+
});
|
|
115
|
+
it("threads setupFile through as a path relative to the metro entry", function () {
|
|
116
|
+
var plugins = buildOneBabelPlugins({
|
|
117
|
+
projectRoot,
|
|
118
|
+
relativeRouterRoot: "app",
|
|
119
|
+
setupFile: "src/setup-native.ts",
|
|
120
|
+
includeImportMetaEnv: false
|
|
121
|
+
});
|
|
122
|
+
var oneRouterMetro = plugins[3];
|
|
123
|
+
expect(oneRouterMetro[1].ONE_SETUP_FILE_NATIVE).toMatch(/setup-native\.ts$/);
|
|
124
|
+
});
|
|
125
|
+
it("passes the linking config through", function () {
|
|
126
|
+
var linking = {
|
|
127
|
+
prefixes: ["myapp://"]
|
|
128
|
+
};
|
|
129
|
+
var plugins = buildOneBabelPlugins({
|
|
130
|
+
projectRoot,
|
|
131
|
+
relativeRouterRoot: "app",
|
|
132
|
+
linking,
|
|
133
|
+
includeImportMetaEnv: false
|
|
134
|
+
});
|
|
135
|
+
var oneRouterMetro = plugins[3];
|
|
136
|
+
expect(oneRouterMetro[1].ONE_ROUTER_LINKING_CONFIG).toBe(linking);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=index.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["path","describe","expect","it","oneBabelPreset","buildOneBabelPlugins","_type_of","obj","Symbol","constructor","projectRoot","resolve","__dirname","fakeApi","cwd","cache","result","includeExpoPreset","toHaveProperty","Array","isArray","plugins","toBe","toHaveLength","names","map","p","toEqual","removeServer","find","routerRoot","caller","cb","oneViteMetroBabelConfig","relativeRouterRoot","ignoredRouteFiles","linking","setupFile","includeImportMetaEnv","toMatchObject","alias","oneRouterMetro","ONE_ROUTER_ROOT_FOLDER_NAME","ONE_ROUTER_LINKING_CONFIG","ONE_SETUP_FILE_NATIVE","ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY","ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING"],"sources":["../../../src/babel-preset/index.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { transformSync } from "@babel/core";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import oneBabelPreset from "./index.mjs";
|
|
5
|
+
const projectRoot = path.resolve(__dirname, "../../");
|
|
6
|
+
describe("one/babel-preset integration", () => {
|
|
7
|
+
const presetWithOpts = [oneBabelPreset, {
|
|
8
|
+
projectRoot,
|
|
9
|
+
includeExpoPreset: false
|
|
10
|
+
}];
|
|
11
|
+
it("runs against a route file without throwing", () => {
|
|
12
|
+
const code = `
|
|
13
|
+
import { useLoader } from 'one'
|
|
14
|
+
export default function Page() {
|
|
15
|
+
return null
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
const result = transformSync(code, {
|
|
19
|
+
filename: path.join(projectRoot, "app/index.tsx"),
|
|
20
|
+
cwd: projectRoot,
|
|
21
|
+
presets: [presetWithOpts],
|
|
22
|
+
parserOpts: {
|
|
23
|
+
sourceType: "module",
|
|
24
|
+
plugins: ["jsx"]
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
expect(result?.code).toBeTruthy();
|
|
28
|
+
expect(result?.code).toContain("useLoader");
|
|
29
|
+
});
|
|
30
|
+
it("substitutes ONE_ROUTER_* process.env placeholders in metro-entry", () => {
|
|
31
|
+
const code = `
|
|
32
|
+
const ctx = require.context(
|
|
33
|
+
process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY,
|
|
34
|
+
true,
|
|
35
|
+
process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING
|
|
36
|
+
)
|
|
37
|
+
const folder = process.env.ONE_ROUTER_ROOT_FOLDER_NAME
|
|
38
|
+
module.exports = { ctx, folder }
|
|
39
|
+
`;
|
|
40
|
+
const result = transformSync(code, {
|
|
41
|
+
filename: path.join(projectRoot, "metro-entry-ctx.js"),
|
|
42
|
+
cwd: projectRoot,
|
|
43
|
+
presets: [presetWithOpts],
|
|
44
|
+
parserOpts: {
|
|
45
|
+
sourceType: "module"
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
expect(result?.code).toBeTruthy();
|
|
49
|
+
expect(result?.code).not.toContain("process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY");
|
|
50
|
+
expect(result?.code).not.toContain("process.env.ONE_ROUTER_ROOT_FOLDER_NAME");
|
|
51
|
+
expect(result?.code).not.toContain("process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING");
|
|
52
|
+
expect(result?.code).toContain('"app"');
|
|
53
|
+
expect(result?.code).toMatch(/\/\^.*\.tsx\?\$\//);
|
|
54
|
+
});
|
|
55
|
+
it("keeps client code intact in non-route files", () => {
|
|
56
|
+
const code = `
|
|
57
|
+
const x = 1
|
|
58
|
+
export default x
|
|
59
|
+
`;
|
|
60
|
+
const result = transformSync(code, {
|
|
61
|
+
filename: path.join(projectRoot, "src/utils/x.ts"),
|
|
62
|
+
cwd: projectRoot,
|
|
63
|
+
presets: [presetWithOpts],
|
|
64
|
+
parserOpts: {
|
|
65
|
+
sourceType: "module"
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
expect(result?.code).toContain("const x = 1");
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=integration.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["path","transformSync","describe","expect","it","oneBabelPreset","projectRoot","resolve","__dirname","presetWithOpts","includeExpoPreset","code","result","filename","join","cwd","presets","parserOpts","sourceType","plugins","toBeTruthy","toContain","not","toMatch"],"sources":["../../../src/babel-preset/integration.test.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,IAAA,MAAU;AACjB,SAASC,aAAA,QAAqB;AAC9B,SAASC,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AACrC,OAAOC,cAAA,MAAoB;AAE3B,MAAMC,WAAA,GAAcN,IAAA,CAAKO,OAAA,CAAQC,SAAA,EAAW,QAAQ;AAYpDN,QAAA,CAAS,gCAAgC,MAAM;EAC7C,MAAMO,cAAA,GAAiB,CACrBJ,cAAA,EACA;IAAEC,WAAA;IAAaI,iBAAA,EAAmB;EAAM,EAC1C;EAEAN,EAAA,CAAG,8CAA8C,MAAM;IACrD,MAAMO,IAAA,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;IAMb,MAAMC,MAAA,GAASX,aAAA,CAAcU,IAAA,EAAM;MACjCE,QAAA,EAAUb,IAAA,CAAKc,IAAA,CAAKR,WAAA,EAAa,eAAe;MAChDS,GAAA,EAAKT,WAAA;MACLU,OAAA,EAAS,CAACP,cAAc;MACxBQ,UAAA,EAAY;QAAEC,UAAA,EAAY;QAAUC,OAAA,EAAS,CAAC,KAAK;MAAE;IACvD,CAAC;IAEDhB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAES,UAAA,CAAW;IAIhCjB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEU,SAAA,CAAU,WAAW;EAC5C,CAAC;EAEDjB,EAAA,CAAG,oEAAoE,MAAM;IAG3E,MAAMO,IAAA,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IASb,MAAMC,MAAA,GAASX,aAAA,CAAcU,IAAA,EAAM;MACjCE,QAAA,EAAUb,IAAA,CAAKc,IAAA,CAAKR,WAAA,EAAa,oBAAoB;MACrDS,GAAA,EAAKT,WAAA;MACLU,OAAA,EAAS,CAACP,cAAc;MACxBQ,UAAA,EAAY;QAAEC,UAAA,EAAY;MAAS;IACrC,CAAC;IAEDf,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAES,UAAA,CAAW;IAEhCjB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEW,GAAA,CAAID,SAAA,CAAU,mDAAmD;IACtFlB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEW,GAAA,CAAID,SAAA,CAAU,yCAAyC;IAC5ElB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEW,GAAA,CAAID,SAAA,CACvB,qDACF;IAEAlB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEU,SAAA,CAAU,OAAO;IAEtClB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEY,OAAA,CAAQ,mBAAmB;EAClD,CAAC;EAEDnB,EAAA,CAAG,+CAA+C,MAAM;IACtD,MAAMO,IAAA,GAAO;AAAA;AAAA;AAAA;IAIb,MAAMC,MAAA,GAASX,aAAA,CAAcU,IAAA,EAAM;MACjCE,QAAA,EAAUb,IAAA,CAAKc,IAAA,CAAKR,WAAA,EAAa,gBAAgB;MACjDS,GAAA,EAAKT,WAAA;MACLU,OAAA,EAAS,CAACP,cAAc;MACxBQ,UAAA,EAAY;QAAEC,UAAA,EAAY;MAAS;IACrC,CAAC;IAEDf,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEU,SAAA,CAAU,aAAa;EAC9C,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { transformSync } from "@babel/core";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import oneBabelPreset from "./index.native.js";
|
|
5
|
+
var projectRoot = path.resolve(__dirname, "../../");
|
|
6
|
+
describe("one/babel-preset integration", function () {
|
|
7
|
+
var presetWithOpts = [oneBabelPreset, {
|
|
8
|
+
projectRoot,
|
|
9
|
+
includeExpoPreset: false
|
|
10
|
+
}];
|
|
11
|
+
it("runs against a route file without throwing", function () {
|
|
12
|
+
var code = `
|
|
13
|
+
import { useLoader } from 'one'
|
|
14
|
+
export default function Page() {
|
|
15
|
+
return null
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
var result = transformSync(code, {
|
|
19
|
+
filename: path.join(projectRoot, "app/index.tsx"),
|
|
20
|
+
cwd: projectRoot,
|
|
21
|
+
presets: [presetWithOpts],
|
|
22
|
+
parserOpts: {
|
|
23
|
+
sourceType: "module",
|
|
24
|
+
plugins: ["jsx"]
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
expect(result === null || result === void 0 ? void 0 : result.code).toBeTruthy();
|
|
28
|
+
expect(result === null || result === void 0 ? void 0 : result.code).toContain("useLoader");
|
|
29
|
+
});
|
|
30
|
+
it("substitutes ONE_ROUTER_* process.env placeholders in metro-entry", function () {
|
|
31
|
+
var code = `
|
|
32
|
+
const ctx = require.context(
|
|
33
|
+
process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY,
|
|
34
|
+
true,
|
|
35
|
+
process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING
|
|
36
|
+
)
|
|
37
|
+
const folder = process.env.ONE_ROUTER_ROOT_FOLDER_NAME
|
|
38
|
+
module.exports = { ctx, folder }
|
|
39
|
+
`;
|
|
40
|
+
var result = transformSync(code, {
|
|
41
|
+
filename: path.join(projectRoot, "metro-entry-ctx.js"),
|
|
42
|
+
cwd: projectRoot,
|
|
43
|
+
presets: [presetWithOpts],
|
|
44
|
+
parserOpts: {
|
|
45
|
+
sourceType: "module"
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
expect(result === null || result === void 0 ? void 0 : result.code).toBeTruthy();
|
|
49
|
+
expect(result === null || result === void 0 ? void 0 : result.code).not.toContain("process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY");
|
|
50
|
+
expect(result === null || result === void 0 ? void 0 : result.code).not.toContain("process.env.ONE_ROUTER_ROOT_FOLDER_NAME");
|
|
51
|
+
expect(result === null || result === void 0 ? void 0 : result.code).not.toContain("process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING");
|
|
52
|
+
expect(result === null || result === void 0 ? void 0 : result.code).toContain('"app"');
|
|
53
|
+
expect(result === null || result === void 0 ? void 0 : result.code).toMatch(/\/\^.*\.tsx\?\$\//);
|
|
54
|
+
});
|
|
55
|
+
it("keeps client code intact in non-route files", function () {
|
|
56
|
+
var code = `
|
|
57
|
+
const x = 1
|
|
58
|
+
export default x
|
|
59
|
+
`;
|
|
60
|
+
var result = transformSync(code, {
|
|
61
|
+
filename: path.join(projectRoot, "src/utils/x.ts"),
|
|
62
|
+
cwd: projectRoot,
|
|
63
|
+
presets: [presetWithOpts],
|
|
64
|
+
parserOpts: {
|
|
65
|
+
sourceType: "module"
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
expect(result === null || result === void 0 ? void 0 : result.code).toContain("const x = 1");
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=integration.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["path","transformSync","describe","expect","it","oneBabelPreset","projectRoot","resolve","__dirname","presetWithOpts","includeExpoPreset","code","result","filename","join","cwd","presets","parserOpts","sourceType","plugins","toBeTruthy","toContain","not","toMatch"],"sources":["../../../src/babel-preset/integration.test.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,IAAA,MAAU;AACjB,SAASC,aAAA,QAAqB;AAC9B,SAASC,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AACrC,OAAOC,cAAA,MAAoB;AAE3B,IAAAC,WAAM,GAAAN,IAAc,CAAAO,OAAK,CAAAC,SAAQ,UAAW;AAY5CN,QAAA,CAAS,gCAAgC,YAAM;EAC7C,IAAAO,cAAM,IACJJ,cAAA,EACA;IACFC,WAAA;IAEGI,iBAAA;EACD,EAAa;EAAAN,EAAA;IAAA,IAAAO,IAAA;AAAA;AAAA;AAMb;AAAmC;AACe;IAC3C,IACLC,MAAA,GAAUX,aAAc,CAAAU,IAAA;MACxBE,QAAA,EAAAb,IAAc,CAAAc,IAAA,CAAAR,WAAY,iBAAoB;MAC/CS,GAAA,EAAAT,WAAA;MAEDU,OAAO,GAIPP,cAAe,CAChB;MAEEQ,UAAA;QAGDC,UAAa;QAAAC,OAAA;MAAA;IAAA;IAAAhB,MAAA,CAAAS,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAS,UAAA;IAAAjB,MAAA,CAAAS,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAU,SAAA;EAAA;EASbjB,EAAA,mEAAmC;IAAA,IACjCO,IAAA;AAAqD;AAChD;AACmB;AACW;AAGrC;AAEA;AACA;AACA;IAAyB,IACvBC,MAAA,GAAAX,aAAA,CAAAU,IAAA;MACFE,QAAA,EAAAb,IAAA,CAAAc,IAAA,CAAAR,WAAA;MAEAS,GAAA,EAAOT,WAAQ;MAEfU,OAAO,GACRP,cAAA,CAEE;MACDQ,UAAM,EAAO;QAAAC,UAAA;MAAA;IAAA;IAIbf,MAAM,CAAAS,MAAA,KAAS,QAAAA,MAAc,KAAM,kBAAAA,MAAA,CAAAD,IAAA,EAAAS,UAAA;IAAAjB,MACjC,CAAAS,MAAU,KAAK,IAAK,IAAAA,MAAA,KAAa,cAAgB,IAAAA,MAAA,CAAAD,IAAA,EAAAW,GAAA,CAAAD,SAAA;IAAAlB,MACjD,CAAKS,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAW,GAAA,CAAAD,SAAA;IAAAlB,MACL,CAAAS,MAAU,aAAcA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAW,GAAA,CAAAD,SAAA;IAAAlB,MACxB,CAAAS,MAAA,KAAc,QAAAA,MAAY,KAAS,kBAAAA,MAAA,CAAAD,IAAA,EAAAU,SAAA;IACrClB,MAAC,CAAAS,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAY,OAAA;EAED;EACFnB,EAAC;IACF,IAAAO,IAAA","ignoreList":[]}
|