-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmetro.config.cjs
More file actions
64 lines (61 loc) · 2.71 KB
/
metro.config.cjs
File metadata and controls
64 lines (61 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
const { getSentryExpoConfig } = require("@sentry/react-native/metro");
const path = require("node:path");
const config = getSentryExpoConfig(__dirname, { annotateReactComponents: true });
/** @type {import('metro-config').InputConfigT} */
module.exports = {
...config,
resolver: {
...config.resolver,
extraNodeModules: { crypto: require.resolve("react-native-quick-crypto") },
assetExts: config.resolver?.assetExts?.filter((extension) => extension !== "svg"),
sourceExts: [...(config.resolver?.sourceExts ?? []), "svg"],
blockList: [
...((config.resolver?.blockList &&
(Array.isArray(config.resolver.blockList) ? config.resolver.blockList : [config.resolver.blockList])) ??
[]),
new RegExp(path.join(__dirname, String.raw`\.\w+/`)),
new RegExp(path.join(__dirname, "android/")),
new RegExp(path.join(__dirname, "contracts/")),
new RegExp(path.join(__dirname, "build/")),
new RegExp(path.join(__dirname, "dist/")),
new RegExp(path.join(__dirname, "ios/")),
new RegExp(path.join(__dirname, "public/")),
new RegExp(path.join(__dirname, "server/")),
],
resolveRequest: (context, moduleName, platform) => {
if (moduleName === "tslib") return context.resolveRequest(context, "tslib/tslib.es6.js", platform);
if (
/date-fns\/locale\.(?:js|cjs|mjs)$/.test(context.originModulePath) &&
moduleName.startsWith("./locale/") &&
!/^(?:en|es|pt)(?:-|$)/.test(moduleName.slice("./locale/".length).replace(/\.js$/, ""))
) {
return { type: "empty" };
}
try {
return context.resolveRequest(context, moduleName, platform);
} catch (error) {
if (moduleName.endsWith(".js")) return context.resolveRequest(context, moduleName.slice(0, -3), platform);
throw error;
}
},
},
transformer: {
...config.transformer,
babelTransformerPath: require.resolve("react-native-svg-transformer/expo"),
},
};
if (process.argv.includes("export")) {
const { setInterval, setTimeout } = require("node:timers");
// @ts-expect-error implicit any is fine in shim
// eslint-disable-next-line jsdoc/require-jsdoc
function wrap(timer) {
// @ts-expect-error implicit any is fine in shim
return (...args) => {
const id = timer(...args); // eslint-disable-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
id.unref(); // eslint-disable-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
return id; // eslint-disable-line @typescript-eslint/no-unsafe-return
};
}
global.setTimeout = Object.assign(wrap(setTimeout), { __promisify__: setTimeout.__promisify__ });
global.setInterval = wrap(setInterval);
}