@vxrn/vite-plugin-metro 2.0.0-beta.51.1 → 2.0.0-beta.56.1
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/env/platformEnv.cjs +2 -0
- package/dist/cjs/env/platformEnv.native.cjs +2 -0
- package/dist/cjs/env/platformEnv.native.js +2 -0
- package/dist/cjs/env/platformEnv.native.js.map +1 -1
- package/dist/cjs/index.cjs +0 -2
- package/dist/cjs/index.native.cjs +0 -2
- package/dist/cjs/index.native.js +0 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.cjs +10 -15
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.cjs +27 -48
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js +27 -48
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +71 -38
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.cjs +86 -42
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +86 -42
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/cjs/transformer/babel-transformer.cjs +53 -4
- package/dist/cjs/transformer/babel-transformer.native.cjs +65 -6
- package/dist/cjs/transformer/babel-transformer.native.js +65 -6
- package/dist/cjs/transformer/babel-transformer.native.js.map +1 -1
- package/dist/cjs/transformer/expoVirtualEnv.cjs +92 -0
- package/dist/cjs/transformer/expoVirtualEnv.native.cjs +113 -0
- package/dist/cjs/transformer/expoVirtualEnv.native.js +115 -0
- package/dist/cjs/transformer/expoVirtualEnv.native.js.map +1 -0
- package/dist/cjs/transformer/loadBabelConfig.cjs +1 -1
- package/dist/cjs/transformer/loadBabelConfig.native.cjs +1 -1
- package/dist/cjs/transformer/loadBabelConfig.native.js +1 -1
- package/dist/cjs/transformer/loadBabelConfig.native.js.map +1 -1
- package/dist/cjs/transformer/metroNativeWorker.cjs +20 -29
- package/dist/cjs/transformer/metroNativeWorker.native.cjs +24 -30
- package/dist/cjs/transformer/metroNativeWorker.native.js +24 -30
- package/dist/cjs/transformer/metroNativeWorker.native.js.map +1 -1
- package/dist/cjs/transformer/transformSync.cjs +3 -3
- package/dist/cjs/transformer/transformSync.native.cjs +3 -3
- package/dist/cjs/transformer/transformSync.native.js +3 -3
- package/dist/cjs/transformer/transformSync.native.js.map +1 -1
- package/dist/cjs/utils/exit.cjs +1 -1
- package/dist/cjs/utils/exit.native.cjs +1 -1
- package/dist/cjs/utils/exit.native.js +1 -1
- package/dist/cjs/utils/exit.native.js.map +1 -1
- package/dist/esm/env/platformEnv.mjs +2 -0
- package/dist/esm/env/platformEnv.mjs.map +1 -1
- package/dist/esm/env/platformEnv.native.js +2 -0
- package/dist/esm/env/platformEnv.native.js.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.mjs +1 -2
- package/dist/esm/index.native.js +1 -2
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs +11 -15
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs.map +1 -1
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js +28 -48
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +71 -38
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +86 -42
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/esm/transformer/babel-transformer.mjs +133 -96
- package/dist/esm/transformer/babel-transformer.mjs.map +1 -1
- package/dist/esm/transformer/babel-transformer.native.js +147 -103
- package/dist/esm/transformer/babel-transformer.native.js.map +1 -1
- package/dist/esm/transformer/expoVirtualEnv.mjs +67 -0
- package/dist/esm/transformer/expoVirtualEnv.mjs.map +1 -0
- package/dist/esm/transformer/expoVirtualEnv.native.js +86 -0
- package/dist/esm/transformer/expoVirtualEnv.native.js.map +1 -0
- package/dist/esm/transformer/loadBabelConfig.mjs +1 -1
- package/dist/esm/transformer/loadBabelConfig.mjs.map +1 -1
- package/dist/esm/transformer/loadBabelConfig.native.js +1 -1
- package/dist/esm/transformer/loadBabelConfig.native.js.map +1 -1
- package/dist/esm/transformer/metroNativeWorker.mjs +20 -29
- package/dist/esm/transformer/metroNativeWorker.mjs.map +1 -1
- package/dist/esm/transformer/metroNativeWorker.native.js +24 -30
- package/dist/esm/transformer/metroNativeWorker.native.js.map +1 -1
- package/dist/esm/transformer/transformSync.mjs +3 -3
- package/dist/esm/transformer/transformSync.mjs.map +1 -1
- package/dist/esm/transformer/transformSync.native.js +3 -3
- package/dist/esm/transformer/transformSync.native.js.map +1 -1
- package/dist/esm/utils/exit.mjs +1 -1
- package/dist/esm/utils/exit.mjs.map +1 -1
- package/dist/esm/utils/exit.native.js +1 -1
- package/dist/esm/utils/exit.native.js.map +1 -1
- package/package.json +7 -9
- package/src/babel-plugins/import-meta-env-plugin.ts +1 -1
- package/src/env/platformEnv.test.ts +12 -2
- package/src/env/platformEnv.ts +3 -0
- package/src/index.ts +0 -2
- package/src/metro-config/getMetroBabelConfigFromViteConfig.test.ts +19 -25
- package/src/metro-config/getMetroBabelConfigFromViteConfig.ts +8 -27
- package/src/metro-config/getMetroConfigFromViteConfig.test.ts +60 -0
- package/src/metro-config/getMetroConfigFromViteConfig.ts +119 -96
- package/src/plugins/metroPlugin.ts +3 -6
- package/src/transformer/babel-transformer.test.ts +118 -0
- package/src/transformer/babel-transformer.ts +82 -15
- package/src/transformer/expoVirtualEnv.integration.test.ts +106 -0
- package/src/transformer/expoVirtualEnv.test.ts +72 -0
- package/src/transformer/expoVirtualEnv.ts +115 -0
- package/src/transformer/loadBabelConfig.ts +1 -1
- package/src/transformer/metroNativeWorker.test.ts +134 -17
- package/src/transformer/metroNativeWorker.ts +43 -51
- package/src/transformer/transformSync.test.ts +22 -0
- package/src/transformer/transformSync.ts +4 -4
- package/src/utils/exit.ts +2 -2
- package/src/utils/getTerminalReporter.ts +1 -1
- package/src/utils/projectImport.ts +2 -2
- package/types/babel-plugins/import-meta-env-plugin.d.ts +1 -1
- package/types/env/platformEnv.d.ts +1 -0
- package/types/env/platformEnv.d.ts.map +1 -1
- package/types/index.d.ts +0 -2
- package/types/index.d.ts.map +1 -1
- package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts +1 -1
- package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts.map +1 -1
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts +2 -2
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
- package/types/plugins/metroPlugin.d.ts +2 -4
- package/types/plugins/metroPlugin.d.ts.map +1 -1
- package/types/transformer/babel-transformer.d.ts +10 -1
- package/types/transformer/babel-transformer.d.ts.map +1 -1
- package/types/transformer/expoVirtualEnv.d.ts +8 -0
- package/types/transformer/expoVirtualEnv.d.ts.map +1 -0
- package/types/transformer/metroNativeWorker.d.ts +3 -5
- package/types/transformer/metroNativeWorker.d.ts.map +1 -1
- package/types/utils/projectImport.d.ts +2 -2
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.cjs +0 -59
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.cjs +0 -62
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js +0 -64
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.cjs +0 -35
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.cjs +0 -37
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -39
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs +0 -40
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs.map +0 -1
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js +0 -41
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs +0 -15
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs.map +0 -1
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -15
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
- package/src/plugins/expoManifestRequestHandlerPlugin.ts +0 -88
- package/src/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.ts +0 -28
- package/types/plugins/expoManifestRequestHandlerPlugin.d.ts +0 -14
- package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +0 -1
- package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts +0 -5
- package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts.map +0 -1
|
@@ -30,14 +30,20 @@ __export(getMetroConfigFromViteConfig_exports, {
|
|
|
30
30
|
getMetroConfigFromViteConfig: () => getMetroConfigFromViteConfig
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(getMetroConfigFromViteConfig_exports);
|
|
33
|
+
var import_vite = require("vite");
|
|
33
34
|
var import_node_child_process = require("node:child_process");
|
|
34
35
|
var import_node_path = require("node:path");
|
|
35
36
|
var import_micromatch = __toESM(require("micromatch"), 1);
|
|
37
|
+
var import_metro_config = require("@react-native/metro-config");
|
|
36
38
|
var import_compiler = require("@vxrn/compiler");
|
|
37
39
|
var import_projectImport = require("../utils/projectImport.cjs");
|
|
38
40
|
var import_getTerminalReporter = require("../utils/getTerminalReporter.cjs");
|
|
39
|
-
var import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName = require("../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.cjs");
|
|
40
41
|
const WATCHMAN_PROBE_TIMEOUT_MS = 2e3;
|
|
42
|
+
const expoEnvAdditionalExts = [
|
|
43
|
+
"env",
|
|
44
|
+
"local",
|
|
45
|
+
"development"
|
|
46
|
+
];
|
|
41
47
|
const watchmanResponsivePromises = /* @__PURE__ */ new Map();
|
|
42
48
|
let didWarnAboutWatchmanFallback = false;
|
|
43
49
|
const rootIndexBundleRequestPattern = /^(https?:\/\/[^/]+)?\/index\.bundle(?=$|[?#])/;
|
|
@@ -48,17 +54,56 @@ const metroWatchExclusions = [
|
|
|
48
54
|
/[/\\]\.vite(?:[/\\]|$)/,
|
|
49
55
|
/[/\\]node_modules[/\\]\.vxrn(?:[/\\]|$)/
|
|
50
56
|
];
|
|
57
|
+
function enforceWorkspaceVisibility(config, projectRoot) {
|
|
58
|
+
const workspaceRoot = (0, import_vite.searchForWorkspaceRoot)(projectRoot);
|
|
59
|
+
if (workspaceRoot === projectRoot) return config;
|
|
60
|
+
return {
|
|
61
|
+
...config,
|
|
62
|
+
watchFolders: [.../* @__PURE__ */ new Set([...config.watchFolders ?? [], workspaceRoot])],
|
|
63
|
+
resolver: {
|
|
64
|
+
...config.resolver,
|
|
65
|
+
nodeModulesPaths: [.../* @__PURE__ */ new Set([
|
|
66
|
+
...config.resolver?.nodeModulesPaths ?? [],
|
|
67
|
+
(0, import_node_path.resolve)(projectRoot, "node_modules"),
|
|
68
|
+
(0, import_node_path.resolve)(workspaceRoot, "node_modules")
|
|
69
|
+
])]
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function getReactNativeDefaultConfig(projectRoot) {
|
|
74
|
+
return enforceWorkspaceVisibility((0, import_metro_config.getDefaultConfig)(projectRoot), projectRoot);
|
|
75
|
+
}
|
|
51
76
|
function getPlatformFromBundleUrl(url) {
|
|
52
77
|
const platform = url.match(/[?&]platform=(ios|android)(?:&|$)/)?.[1];
|
|
53
78
|
return platform === "android" ? "android" : "ios";
|
|
54
79
|
}
|
|
55
80
|
function rewriteMainModuleBundleUrl(url, resolveMainModuleName) {
|
|
56
81
|
const resolvedMainModulePath = resolveMainModuleName({ platform: getPlatformFromBundleUrl(url) });
|
|
57
|
-
if (url.includes("/.expo/.virtual-metro-entry.bundle?")) {
|
|
58
|
-
return url.replace(".expo/.virtual-metro-entry", resolvedMainModulePath);
|
|
59
|
-
}
|
|
60
82
|
return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);
|
|
61
83
|
}
|
|
84
|
+
function isBareSpecifier(name) {
|
|
85
|
+
return name !== "" && !name.startsWith(".") && !name.startsWith("/");
|
|
86
|
+
}
|
|
87
|
+
function bareMainModuleForRequest(moduleName, mainModuleName) {
|
|
88
|
+
if (!mainModuleName || !isBareSpecifier(mainModuleName)) return void 0;
|
|
89
|
+
if (moduleName === `./${mainModuleName}`) return mainModuleName;
|
|
90
|
+
return void 0;
|
|
91
|
+
}
|
|
92
|
+
function enforceBareMainModuleEntry(config, mainModuleName) {
|
|
93
|
+
if (!mainModuleName || !isBareSpecifier(mainModuleName)) return config;
|
|
94
|
+
const innerResolveRequest = config?.resolver?.resolveRequest;
|
|
95
|
+
return {
|
|
96
|
+
...config,
|
|
97
|
+
resolver: {
|
|
98
|
+
...config?.resolver,
|
|
99
|
+
resolveRequest: (context, moduleName, platform) => {
|
|
100
|
+
const bareMain = bareMainModuleForRequest(moduleName, mainModuleName);
|
|
101
|
+
const resolveRequest = innerResolveRequest || context.resolveRequest;
|
|
102
|
+
return resolveRequest(context, bareMain ?? moduleName, platform);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
62
107
|
async function isWatchmanResponsive(projectRoot) {
|
|
63
108
|
let probe = watchmanResponsivePromises.get(projectRoot);
|
|
64
109
|
if (probe) {
|
|
@@ -108,27 +153,16 @@ async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
|
|
|
108
153
|
didWarnAboutWatchmanFallback = true;
|
|
109
154
|
console.warn("[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.");
|
|
110
155
|
}
|
|
111
|
-
const
|
|
112
|
-
const _defaultConfig = getDefaultConfig(projectRoot);
|
|
156
|
+
const _defaultConfig = getReactNativeDefaultConfig(projectRoot);
|
|
113
157
|
if (mainModuleName) {
|
|
114
|
-
const origRewriteRequestUrl = _defaultConfig.server
|
|
115
|
-
const resolveMainModuleName =
|
|
116
|
-
const ExpoGoManifestHandlerMiddleware = (await (0, import_projectImport.projectImport)(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js")).default.ExpoGoManifestHandlerMiddleware;
|
|
117
|
-
const manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {});
|
|
118
|
-
(0, import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName)(manifestHandlerMiddleware, mainModuleName);
|
|
119
|
-
return (p) => {
|
|
120
|
-
return manifestHandlerMiddleware.resolveMainModuleName({
|
|
121
|
-
pkg: { main: mainModuleName },
|
|
122
|
-
platform: p.platform
|
|
123
|
-
});
|
|
124
|
-
};
|
|
125
|
-
})();
|
|
158
|
+
const origRewriteRequestUrl = _defaultConfig.server?.rewriteRequestUrl;
|
|
159
|
+
const resolveMainModuleName = () => mainModuleName;
|
|
126
160
|
extraConfig.getResolveMainModuleName = resolveMainModuleName;
|
|
127
161
|
_defaultConfig.server.rewriteRequestUrl = (url) => {
|
|
128
|
-
if (
|
|
162
|
+
if (rootIndexBundleRequestPattern.test(url)) {
|
|
129
163
|
return rewriteMainModuleBundleUrl(url, resolveMainModuleName);
|
|
130
164
|
}
|
|
131
|
-
return origRewriteRequestUrl(url);
|
|
165
|
+
return origRewriteRequestUrl?.(url) ?? url;
|
|
132
166
|
};
|
|
133
167
|
}
|
|
134
168
|
const existingBlockList = _defaultConfig?.resolver?.blockList;
|
|
@@ -140,6 +174,10 @@ async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
|
|
|
140
174
|
}
|
|
141
175
|
const defaultConfig = {
|
|
142
176
|
..._defaultConfig,
|
|
177
|
+
watcher: {
|
|
178
|
+
..._defaultConfig?.watcher,
|
|
179
|
+
additionalExts: [.../* @__PURE__ */ new Set([..._defaultConfig?.watcher?.additionalExts ?? [], ...expoEnvAdditionalExts])]
|
|
180
|
+
},
|
|
143
181
|
resolver: {
|
|
144
182
|
..._defaultConfig?.resolver,
|
|
145
183
|
useWatchman,
|
|
@@ -172,6 +210,7 @@ async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
|
|
|
172
210
|
},
|
|
173
211
|
transformer: {
|
|
174
212
|
..._defaultConfig?.transformer,
|
|
213
|
+
unstable_allowRequireContext: true,
|
|
175
214
|
babelTransformerPath: (0, import_projectImport.projectResolve)(projectRoot, "@vxrn/vite-plugin-metro/babel-transformer")
|
|
176
215
|
},
|
|
177
216
|
...nativeWorkerPath ? { transformerPath: nativeWorkerPath } : {},
|
|
@@ -182,7 +221,7 @@ async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
|
|
|
182
221
|
...typeof defaultConfigOverrides === "function" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides
|
|
183
222
|
};
|
|
184
223
|
return {
|
|
185
|
-
defaultConfig: merged,
|
|
224
|
+
defaultConfig: enforceBareMainModuleEntry(enforceWorkspaceVisibility(merged, projectRoot), mainModuleName),
|
|
186
225
|
projectRoot,
|
|
187
226
|
extraConfig
|
|
188
227
|
};
|
|
@@ -197,27 +236,16 @@ async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
|
|
|
197
236
|
console.warn("[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.");
|
|
198
237
|
}
|
|
199
238
|
const { loadConfig } = await (0, import_projectImport.projectImport)(projectRoot, "metro");
|
|
200
|
-
const
|
|
201
|
-
const _defaultConfig = getDefaultConfig(projectRoot);
|
|
239
|
+
const _defaultConfig = getReactNativeDefaultConfig(projectRoot);
|
|
202
240
|
if (mainModuleName) {
|
|
203
|
-
const origRewriteRequestUrl = _defaultConfig.server
|
|
204
|
-
const resolveMainModuleName =
|
|
205
|
-
const ExpoGoManifestHandlerMiddleware = (await (0, import_projectImport.projectImport)(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js")).default.ExpoGoManifestHandlerMiddleware;
|
|
206
|
-
const manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {});
|
|
207
|
-
(0, import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName)(manifestHandlerMiddleware, mainModuleName);
|
|
208
|
-
return (p) => {
|
|
209
|
-
return manifestHandlerMiddleware.resolveMainModuleName({
|
|
210
|
-
pkg: { main: mainModuleName },
|
|
211
|
-
platform: p.platform
|
|
212
|
-
});
|
|
213
|
-
};
|
|
214
|
-
})();
|
|
241
|
+
const origRewriteRequestUrl = _defaultConfig.server?.rewriteRequestUrl;
|
|
242
|
+
const resolveMainModuleName = () => mainModuleName;
|
|
215
243
|
extraConfig.getResolveMainModuleName = resolveMainModuleName;
|
|
216
244
|
_defaultConfig.server.rewriteRequestUrl = (url) => {
|
|
217
|
-
if (
|
|
245
|
+
if (rootIndexBundleRequestPattern.test(url)) {
|
|
218
246
|
return rewriteMainModuleBundleUrl(url, resolveMainModuleName);
|
|
219
247
|
}
|
|
220
|
-
return origRewriteRequestUrl(url);
|
|
248
|
+
return origRewriteRequestUrl?.(url) ?? url;
|
|
221
249
|
};
|
|
222
250
|
}
|
|
223
251
|
const existingBlockList = _defaultConfig?.resolver?.blockList;
|
|
@@ -229,6 +257,10 @@ async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
|
|
|
229
257
|
}
|
|
230
258
|
const defaultConfig = {
|
|
231
259
|
..._defaultConfig,
|
|
260
|
+
watcher: {
|
|
261
|
+
..._defaultConfig?.watcher,
|
|
262
|
+
additionalExts: [.../* @__PURE__ */ new Set([..._defaultConfig?.watcher?.additionalExts ?? [], ...expoEnvAdditionalExts])]
|
|
263
|
+
},
|
|
232
264
|
resolver: {
|
|
233
265
|
..._defaultConfig?.resolver,
|
|
234
266
|
useWatchman,
|
|
@@ -261,6 +293,7 @@ async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
|
|
|
261
293
|
},
|
|
262
294
|
transformer: {
|
|
263
295
|
..._defaultConfig?.transformer,
|
|
296
|
+
unstable_allowRequireContext: true,
|
|
264
297
|
babelTransformerPath: (0, import_projectImport.projectResolve)(projectRoot, "@vxrn/vite-plugin-metro/babel-transformer")
|
|
265
298
|
},
|
|
266
299
|
...nativeWorkerPath ? { transformerPath: nativeWorkerPath } : {},
|
|
@@ -276,7 +309,7 @@ async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
|
|
|
276
309
|
...typeof defaultConfigOverrides === "function" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides
|
|
277
310
|
});
|
|
278
311
|
return {
|
|
279
|
-
...metroConfig,
|
|
312
|
+
...enforceBareMainModuleEntry(enforceWorkspaceVisibility(metroConfig, projectRoot), mainModuleName),
|
|
280
313
|
...extraConfig
|
|
281
314
|
};
|
|
282
315
|
}
|
|
@@ -32,14 +32,20 @@ __export(getMetroConfigFromViteConfig_exports, {
|
|
|
32
32
|
getMetroConfigFromViteConfig: () => getMetroConfigFromViteConfig
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(getMetroConfigFromViteConfig_exports);
|
|
35
|
+
var import_vite = require("vite");
|
|
35
36
|
var import_child_process = require("child_process");
|
|
36
37
|
var import_path = require("path");
|
|
37
38
|
var import_micromatch = __toESM(require("micromatch"), 1);
|
|
39
|
+
var import_metro_config = require("@react-native/metro-config");
|
|
38
40
|
var import_compiler = require("@vxrn/compiler");
|
|
39
41
|
var import_projectImport = require("../utils/projectImport.native.js");
|
|
40
42
|
var import_getTerminalReporter = require("../utils/getTerminalReporter.native.js");
|
|
41
|
-
var import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName = require("../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js");
|
|
42
43
|
var WATCHMAN_PROBE_TIMEOUT_MS = 2e3;
|
|
44
|
+
var expoEnvAdditionalExts = [
|
|
45
|
+
"env",
|
|
46
|
+
"local",
|
|
47
|
+
"development"
|
|
48
|
+
];
|
|
43
49
|
var watchmanResponsivePromises = /* @__PURE__ */ new Map();
|
|
44
50
|
var didWarnAboutWatchmanFallback = false;
|
|
45
51
|
var rootIndexBundleRequestPattern = /^(https?:\/\/[^/]+)?\/index\.bundle(?=$|[?#])/;
|
|
@@ -50,6 +56,27 @@ var metroWatchExclusions = [
|
|
|
50
56
|
/[/\\]\.vite(?:[/\\]|$)/,
|
|
51
57
|
/[/\\]node_modules[/\\]\.vxrn(?:[/\\]|$)/
|
|
52
58
|
];
|
|
59
|
+
function enforceWorkspaceVisibility(config, projectRoot) {
|
|
60
|
+
var _config_watchFolders, _ref;
|
|
61
|
+
var _config_resolver;
|
|
62
|
+
var workspaceRoot = (0, import_vite.searchForWorkspaceRoot)(projectRoot);
|
|
63
|
+
if (workspaceRoot === projectRoot) return config;
|
|
64
|
+
return {
|
|
65
|
+
...config,
|
|
66
|
+
watchFolders: [.../* @__PURE__ */ new Set([...(_config_watchFolders = config.watchFolders) !== null && _config_watchFolders !== void 0 ? _config_watchFolders : [], workspaceRoot])],
|
|
67
|
+
resolver: {
|
|
68
|
+
...config.resolver,
|
|
69
|
+
nodeModulesPaths: [.../* @__PURE__ */ new Set([
|
|
70
|
+
...(_ref = (_config_resolver = config.resolver) === null || _config_resolver === void 0 ? void 0 : _config_resolver.nodeModulesPaths) !== null && _ref !== void 0 ? _ref : [],
|
|
71
|
+
(0, import_path.resolve)(projectRoot, "node_modules"),
|
|
72
|
+
(0, import_path.resolve)(workspaceRoot, "node_modules")
|
|
73
|
+
])]
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function getReactNativeDefaultConfig(projectRoot) {
|
|
78
|
+
return enforceWorkspaceVisibility((0, import_metro_config.getDefaultConfig)(projectRoot), projectRoot);
|
|
79
|
+
}
|
|
53
80
|
function getPlatformFromBundleUrl(url) {
|
|
54
81
|
var _url_match;
|
|
55
82
|
var platform = (_url_match = url.match(/[?&]platform=(ios|android)(?:&|$)/)) === null || _url_match === void 0 ? void 0 : _url_match[1];
|
|
@@ -57,11 +84,32 @@ function getPlatformFromBundleUrl(url) {
|
|
|
57
84
|
}
|
|
58
85
|
function rewriteMainModuleBundleUrl(url, resolveMainModuleName) {
|
|
59
86
|
var resolvedMainModulePath = resolveMainModuleName({ platform: getPlatformFromBundleUrl(url) });
|
|
60
|
-
if (url.includes("/.expo/.virtual-metro-entry.bundle?")) {
|
|
61
|
-
return url.replace(".expo/.virtual-metro-entry", resolvedMainModulePath);
|
|
62
|
-
}
|
|
63
87
|
return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);
|
|
64
88
|
}
|
|
89
|
+
function isBareSpecifier(name) {
|
|
90
|
+
return name !== "" && !name.startsWith(".") && !name.startsWith("/");
|
|
91
|
+
}
|
|
92
|
+
function bareMainModuleForRequest(moduleName, mainModuleName) {
|
|
93
|
+
if (!mainModuleName || !isBareSpecifier(mainModuleName)) return void 0;
|
|
94
|
+
if (moduleName === `./${mainModuleName}`) return mainModuleName;
|
|
95
|
+
return void 0;
|
|
96
|
+
}
|
|
97
|
+
function enforceBareMainModuleEntry(config, mainModuleName) {
|
|
98
|
+
var _config_resolver;
|
|
99
|
+
if (!mainModuleName || !isBareSpecifier(mainModuleName)) return config;
|
|
100
|
+
var innerResolveRequest = config === null || config === void 0 ? void 0 : (_config_resolver = config.resolver) === null || _config_resolver === void 0 ? void 0 : _config_resolver.resolveRequest;
|
|
101
|
+
return {
|
|
102
|
+
...config,
|
|
103
|
+
resolver: {
|
|
104
|
+
...config === null || config === void 0 ? void 0 : config.resolver,
|
|
105
|
+
resolveRequest: function(context, moduleName, platform) {
|
|
106
|
+
var bareMain = bareMainModuleForRequest(moduleName, mainModuleName);
|
|
107
|
+
var resolveRequest = innerResolveRequest || context.resolveRequest;
|
|
108
|
+
return resolveRequest(context, bareMain !== null && bareMain !== void 0 ? bareMain : moduleName, platform);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
65
113
|
async function isWatchmanResponsive(projectRoot) {
|
|
66
114
|
var probe = watchmanResponsivePromises.get(projectRoot);
|
|
67
115
|
if (probe) {
|
|
@@ -103,8 +151,8 @@ function resolveNativeTransforms(projectRoot, metroPluginOptions) {
|
|
|
103
151
|
};
|
|
104
152
|
}
|
|
105
153
|
async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
|
|
106
|
-
var _ref;
|
|
107
|
-
var _metroPluginOptions_argv, _defaultConfig_resolver;
|
|
154
|
+
var _ref, _ref1;
|
|
155
|
+
var _metroPluginOptions_argv, _defaultConfig_resolver, _defaultConfig_watcher;
|
|
108
156
|
var extraConfig = {};
|
|
109
157
|
var projectRoot = (0, import_path.resolve)((_ref = (_metroPluginOptions_argv = metroPluginOptions.argv) === null || _metroPluginOptions_argv === void 0 ? void 0 : _metroPluginOptions_argv.projectRoot) !== null && _ref !== void 0 ? _ref : config.root);
|
|
110
158
|
var { mainModuleName, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;
|
|
@@ -113,27 +161,20 @@ async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
|
|
|
113
161
|
didWarnAboutWatchmanFallback = true;
|
|
114
162
|
console.warn("[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.");
|
|
115
163
|
}
|
|
116
|
-
var
|
|
117
|
-
var _defaultConfig = getDefaultConfig(projectRoot);
|
|
164
|
+
var _defaultConfig = getReactNativeDefaultConfig(projectRoot);
|
|
118
165
|
if (mainModuleName) {
|
|
119
|
-
var
|
|
120
|
-
var
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
return function(p) {
|
|
125
|
-
return manifestHandlerMiddleware.resolveMainModuleName({
|
|
126
|
-
pkg: { main: mainModuleName },
|
|
127
|
-
platform: p.platform
|
|
128
|
-
});
|
|
129
|
-
};
|
|
130
|
-
})();
|
|
166
|
+
var _defaultConfig_server;
|
|
167
|
+
var origRewriteRequestUrl = (_defaultConfig_server = _defaultConfig.server) === null || _defaultConfig_server === void 0 ? void 0 : _defaultConfig_server.rewriteRequestUrl;
|
|
168
|
+
var resolveMainModuleName = function() {
|
|
169
|
+
return mainModuleName;
|
|
170
|
+
};
|
|
131
171
|
extraConfig.getResolveMainModuleName = resolveMainModuleName;
|
|
132
172
|
_defaultConfig.server.rewriteRequestUrl = function(url) {
|
|
133
|
-
|
|
173
|
+
var _ref2;
|
|
174
|
+
if (rootIndexBundleRequestPattern.test(url)) {
|
|
134
175
|
return rewriteMainModuleBundleUrl(url, resolveMainModuleName);
|
|
135
176
|
}
|
|
136
|
-
return origRewriteRequestUrl(url);
|
|
177
|
+
return (_ref2 = origRewriteRequestUrl === null || origRewriteRequestUrl === void 0 ? void 0 : origRewriteRequestUrl(url)) !== null && _ref2 !== void 0 ? _ref2 : url;
|
|
137
178
|
};
|
|
138
179
|
}
|
|
139
180
|
var existingBlockList = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver = _defaultConfig.resolver) === null || _defaultConfig_resolver === void 0 ? void 0 : _defaultConfig_resolver.blockList;
|
|
@@ -145,6 +186,10 @@ async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
|
|
|
145
186
|
}
|
|
146
187
|
var defaultConfig = {
|
|
147
188
|
..._defaultConfig,
|
|
189
|
+
watcher: {
|
|
190
|
+
..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.watcher,
|
|
191
|
+
additionalExts: [.../* @__PURE__ */ new Set([...(_ref1 = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_watcher = _defaultConfig.watcher) === null || _defaultConfig_watcher === void 0 ? void 0 : _defaultConfig_watcher.additionalExts) !== null && _ref1 !== void 0 ? _ref1 : [], ...expoEnvAdditionalExts])]
|
|
192
|
+
},
|
|
148
193
|
resolver: {
|
|
149
194
|
..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.resolver,
|
|
150
195
|
useWatchman,
|
|
@@ -180,6 +225,7 @@ async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
|
|
|
180
225
|
},
|
|
181
226
|
transformer: {
|
|
182
227
|
..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.transformer,
|
|
228
|
+
unstable_allowRequireContext: true,
|
|
183
229
|
babelTransformerPath: (0, import_projectImport.projectResolve)(projectRoot, "@vxrn/vite-plugin-metro/babel-transformer")
|
|
184
230
|
},
|
|
185
231
|
...nativeWorkerPath ? { transformerPath: nativeWorkerPath } : {},
|
|
@@ -190,14 +236,14 @@ async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
|
|
|
190
236
|
...typeof defaultConfigOverrides === "function" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides
|
|
191
237
|
};
|
|
192
238
|
return {
|
|
193
|
-
defaultConfig: merged,
|
|
239
|
+
defaultConfig: enforceBareMainModuleEntry(enforceWorkspaceVisibility(merged, projectRoot), mainModuleName),
|
|
194
240
|
projectRoot,
|
|
195
241
|
extraConfig
|
|
196
242
|
};
|
|
197
243
|
}
|
|
198
244
|
async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
|
|
199
|
-
var _ref;
|
|
200
|
-
var _metroPluginOptions_argv, _defaultConfig_resolver;
|
|
245
|
+
var _ref, _ref1;
|
|
246
|
+
var _metroPluginOptions_argv, _defaultConfig_resolver, _defaultConfig_watcher;
|
|
201
247
|
var extraConfig = {};
|
|
202
248
|
var projectRoot = (0, import_path.resolve)((_ref = (_metroPluginOptions_argv = metroPluginOptions.argv) === null || _metroPluginOptions_argv === void 0 ? void 0 : _metroPluginOptions_argv.projectRoot) !== null && _ref !== void 0 ? _ref : config.root);
|
|
203
249
|
var { mainModuleName, argv, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;
|
|
@@ -207,27 +253,20 @@ async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
|
|
|
207
253
|
console.warn("[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.");
|
|
208
254
|
}
|
|
209
255
|
var { loadConfig } = await (0, import_projectImport.projectImport)(projectRoot, "metro");
|
|
210
|
-
var
|
|
211
|
-
var _defaultConfig = getDefaultConfig(projectRoot);
|
|
256
|
+
var _defaultConfig = getReactNativeDefaultConfig(projectRoot);
|
|
212
257
|
if (mainModuleName) {
|
|
213
|
-
var
|
|
214
|
-
var
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
return function(p) {
|
|
219
|
-
return manifestHandlerMiddleware.resolveMainModuleName({
|
|
220
|
-
pkg: { main: mainModuleName },
|
|
221
|
-
platform: p.platform
|
|
222
|
-
});
|
|
223
|
-
};
|
|
224
|
-
})();
|
|
258
|
+
var _defaultConfig_server;
|
|
259
|
+
var origRewriteRequestUrl = (_defaultConfig_server = _defaultConfig.server) === null || _defaultConfig_server === void 0 ? void 0 : _defaultConfig_server.rewriteRequestUrl;
|
|
260
|
+
var resolveMainModuleName = function() {
|
|
261
|
+
return mainModuleName;
|
|
262
|
+
};
|
|
225
263
|
extraConfig.getResolveMainModuleName = resolveMainModuleName;
|
|
226
264
|
_defaultConfig.server.rewriteRequestUrl = function(url) {
|
|
227
|
-
|
|
265
|
+
var _ref2;
|
|
266
|
+
if (rootIndexBundleRequestPattern.test(url)) {
|
|
228
267
|
return rewriteMainModuleBundleUrl(url, resolveMainModuleName);
|
|
229
268
|
}
|
|
230
|
-
return origRewriteRequestUrl(url);
|
|
269
|
+
return (_ref2 = origRewriteRequestUrl === null || origRewriteRequestUrl === void 0 ? void 0 : origRewriteRequestUrl(url)) !== null && _ref2 !== void 0 ? _ref2 : url;
|
|
231
270
|
};
|
|
232
271
|
}
|
|
233
272
|
var existingBlockList = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver = _defaultConfig.resolver) === null || _defaultConfig_resolver === void 0 ? void 0 : _defaultConfig_resolver.blockList;
|
|
@@ -239,6 +278,10 @@ async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
|
|
|
239
278
|
}
|
|
240
279
|
var defaultConfig = {
|
|
241
280
|
..._defaultConfig,
|
|
281
|
+
watcher: {
|
|
282
|
+
..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.watcher,
|
|
283
|
+
additionalExts: [.../* @__PURE__ */ new Set([...(_ref1 = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_watcher = _defaultConfig.watcher) === null || _defaultConfig_watcher === void 0 ? void 0 : _defaultConfig_watcher.additionalExts) !== null && _ref1 !== void 0 ? _ref1 : [], ...expoEnvAdditionalExts])]
|
|
284
|
+
},
|
|
242
285
|
resolver: {
|
|
243
286
|
..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.resolver,
|
|
244
287
|
useWatchman,
|
|
@@ -274,6 +317,7 @@ async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
|
|
|
274
317
|
},
|
|
275
318
|
transformer: {
|
|
276
319
|
..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.transformer,
|
|
320
|
+
unstable_allowRequireContext: true,
|
|
277
321
|
babelTransformerPath: (0, import_projectImport.projectResolve)(projectRoot, "@vxrn/vite-plugin-metro/babel-transformer")
|
|
278
322
|
},
|
|
279
323
|
...nativeWorkerPath ? { transformerPath: nativeWorkerPath } : {},
|
|
@@ -289,7 +333,7 @@ async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
|
|
|
289
333
|
...typeof defaultConfigOverrides === "function" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides
|
|
290
334
|
});
|
|
291
335
|
return {
|
|
292
|
-
...metroConfig,
|
|
336
|
+
...enforceBareMainModuleEntry(enforceWorkspaceVisibility(metroConfig, projectRoot), mainModuleName),
|
|
293
337
|
...extraConfig
|
|
294
338
|
};
|
|
295
339
|
}
|