@expo/metro-config 0.5.2 → 0.6.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/build/ExpoMetroConfig.d.ts +1 -4
- package/build/ExpoMetroConfig.js +54 -144
- package/build/ExpoMetroConfig.js.map +1 -1
- package/build/getModulesPaths.js +3 -14
- package/build/getModulesPaths.js.map +1 -1
- package/build/getWatchFolders.js +32 -48
- package/build/getWatchFolders.js.map +1 -1
- package/build/importMetroFromProject.js +0 -13
- package/build/importMetroFromProject.js.map +1 -1
- package/build/transformer/createExoticTransformer.js +21 -24
- package/build/transformer/createExoticTransformer.js.map +1 -1
- package/build/transformer/createMatcher.js +14 -14
- package/build/transformer/createMatcher.js.map +1 -1
- package/build/transformer/createMultiRuleTransformer.d.ts +1 -1
- package/build/transformer/createMultiRuleTransformer.js +78 -101
- package/build/transformer/createMultiRuleTransformer.js.map +1 -1
- package/build/transformer/generateFunctionMap.js +0 -5
- package/build/transformer/generateFunctionMap.js.map +1 -1
- package/build/transformer/getBabelConfig.js +26 -40
- package/build/transformer/getBabelConfig.js.map +1 -1
- package/build/transformer/getCacheKey.js +6 -13
- package/build/transformer/getCacheKey.js.map +1 -1
- package/build/transformer/index.js +0 -12
- package/build/transformer/index.js.map +1 -1
- package/build/transformer/metro-expo-babel-transformer.js +2 -14
- package/build/transformer/metro-expo-babel-transformer.js.map +1 -1
- package/build/transformer/metro-expo-exotic-babel-transformer.js +1 -3
- package/build/transformer/metro-expo-exotic-babel-transformer.js.map +1 -1
- package/package.json +3 -4
package/build/getWatchFolders.js
CHANGED
|
@@ -6,58 +6,57 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.getWatchFolders = getWatchFolders;
|
|
7
7
|
exports.globAllPackageJsonPaths = globAllPackageJsonPaths;
|
|
8
8
|
exports.resolveAllWorkspacePackageJsonPaths = resolveAllWorkspacePackageJsonPaths;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
_jsonFile = function () {
|
|
9
|
+
function _assert() {
|
|
10
|
+
const data = _interopRequireDefault(require("assert"));
|
|
11
|
+
_assert = function () {
|
|
14
12
|
return data;
|
|
15
13
|
};
|
|
16
|
-
|
|
17
14
|
return data;
|
|
18
15
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
_assert = function () {
|
|
16
|
+
function _fs() {
|
|
17
|
+
const data = _interopRequireDefault(require("fs"));
|
|
18
|
+
_fs = function () {
|
|
24
19
|
return data;
|
|
25
20
|
};
|
|
26
|
-
|
|
27
21
|
return data;
|
|
28
22
|
}
|
|
29
|
-
|
|
30
23
|
function _glob() {
|
|
31
24
|
const data = require("glob");
|
|
32
|
-
|
|
33
25
|
_glob = function () {
|
|
34
26
|
return data;
|
|
35
27
|
};
|
|
36
|
-
|
|
37
28
|
return data;
|
|
38
29
|
}
|
|
39
|
-
|
|
40
30
|
function _path() {
|
|
41
31
|
const data = _interopRequireDefault(require("path"));
|
|
42
|
-
|
|
43
32
|
_path = function () {
|
|
44
33
|
return data;
|
|
45
34
|
};
|
|
46
|
-
|
|
47
35
|
return data;
|
|
48
36
|
}
|
|
49
|
-
|
|
50
37
|
function _getModulesPaths() {
|
|
51
38
|
const data = require("./getModulesPaths");
|
|
52
|
-
|
|
53
39
|
_getModulesPaths = function () {
|
|
54
40
|
return data;
|
|
55
41
|
};
|
|
56
|
-
|
|
57
42
|
return data;
|
|
58
43
|
}
|
|
59
|
-
|
|
60
44
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
45
|
+
function readJsonFile(filePath) {
|
|
46
|
+
// Read with fs
|
|
47
|
+
const file = _fs().default.readFileSync(filePath, 'utf8');
|
|
48
|
+
// Parse with JSON.parse
|
|
49
|
+
return JSON.parse(file);
|
|
50
|
+
}
|
|
51
|
+
function isValidJsonFile(filePath) {
|
|
52
|
+
try {
|
|
53
|
+
// Throws if invalid or unable to read.
|
|
54
|
+
readJsonFile(filePath);
|
|
55
|
+
return true;
|
|
56
|
+
} catch {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
61
60
|
|
|
62
61
|
/**
|
|
63
62
|
* @param workspaceProjectRoot Root file path for the yarn workspace
|
|
@@ -71,71 +70,56 @@ function globAllPackageJsonPaths(workspaceProjectRoot, linkedPackages) {
|
|
|
71
70
|
absolute: true,
|
|
72
71
|
ignore: ['**/@(Carthage|Pods|node_modules)/**']
|
|
73
72
|
}).map(pkgPath => {
|
|
74
|
-
|
|
75
|
-
_jsonFile().default.read(pkgPath);
|
|
76
|
-
|
|
77
|
-
return pkgPath;
|
|
78
|
-
} catch {// Skip adding path if the package.json is invalid or cannot be read.
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return null;
|
|
73
|
+
return isValidJsonFile(pkgPath) ? pkgPath : null;
|
|
82
74
|
});
|
|
83
75
|
}).flat().filter(Boolean).map(p => _path().default.join(p));
|
|
84
76
|
}
|
|
85
|
-
|
|
86
77
|
function getWorkspacePackagesArray({
|
|
87
78
|
workspaces
|
|
88
79
|
}) {
|
|
89
80
|
if (Array.isArray(workspaces)) {
|
|
90
81
|
return workspaces;
|
|
91
82
|
}
|
|
92
|
-
|
|
93
83
|
(0, _assert().default)(workspaces === null || workspaces === void 0 ? void 0 : workspaces.packages, 'Could not find a `workspaces` object in the root package.json');
|
|
94
84
|
return workspaces.packages;
|
|
95
85
|
}
|
|
86
|
+
|
|
96
87
|
/**
|
|
97
88
|
* @param workspaceProjectRoot root file path for a yarn workspace.
|
|
98
89
|
* @returns list of package.json file paths that are linked to the yarn workspace.
|
|
99
90
|
*/
|
|
100
|
-
|
|
101
|
-
|
|
102
91
|
function resolveAllWorkspacePackageJsonPaths(workspaceProjectRoot) {
|
|
103
92
|
try {
|
|
104
|
-
const rootPackageJsonFilePath = _path().default.join(workspaceProjectRoot, 'package.json');
|
|
93
|
+
const rootPackageJsonFilePath = _path().default.join(workspaceProjectRoot, 'package.json');
|
|
94
|
+
// Could throw if package.json is invalid.
|
|
95
|
+
const rootPackageJson = readJsonFile(rootPackageJsonFilePath);
|
|
105
96
|
|
|
97
|
+
// Extract the "packages" array or use "workspaces" as packages array (yarn workspaces spec).
|
|
98
|
+
const packages = getWorkspacePackagesArray(rootPackageJson);
|
|
106
99
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const packages = getWorkspacePackagesArray(rootPackageJson); // Glob all package.json files and return valid paths.
|
|
111
|
-
|
|
100
|
+
// Glob all package.json files and return valid paths.
|
|
112
101
|
return globAllPackageJsonPaths(workspaceProjectRoot, packages);
|
|
113
102
|
} catch {
|
|
114
103
|
return [];
|
|
115
104
|
}
|
|
116
105
|
}
|
|
106
|
+
|
|
117
107
|
/**
|
|
118
108
|
* @param projectRoot file path to app's project root
|
|
119
109
|
* @returns list of node module paths to watch in Metro bundler, ex: `['/Users/me/app/node_modules/', '/Users/me/app/apps/my-app/', '/Users/me/app/packages/my-package/']`
|
|
120
110
|
*/
|
|
121
|
-
|
|
122
|
-
|
|
123
111
|
function getWatchFolders(projectRoot) {
|
|
124
|
-
const workspaceRoot = (0, _getModulesPaths().getWorkspaceRoot)(_path().default.resolve(projectRoot));
|
|
125
|
-
|
|
112
|
+
const workspaceRoot = (0, _getModulesPaths().getWorkspaceRoot)(_path().default.resolve(projectRoot));
|
|
113
|
+
// Rely on default behavior in standard projects.
|
|
126
114
|
if (!workspaceRoot) {
|
|
127
115
|
return [];
|
|
128
116
|
}
|
|
129
|
-
|
|
130
117
|
const packages = resolveAllWorkspacePackageJsonPaths(workspaceRoot);
|
|
131
|
-
|
|
132
118
|
if (!packages.length) {
|
|
133
119
|
return [];
|
|
134
120
|
}
|
|
135
|
-
|
|
136
121
|
return uniqueItems([_path().default.join(workspaceRoot, 'node_modules'), ...packages.map(pkg => _path().default.dirname(pkg))]);
|
|
137
122
|
}
|
|
138
|
-
|
|
139
123
|
function uniqueItems(items) {
|
|
140
124
|
return [...new Set(items)];
|
|
141
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getWatchFolders.js","names":["globAllPackageJsonPaths","workspaceProjectRoot","linkedPackages","map","glob","globSync","path","join","replace","cwd","absolute","ignore","pkgPath","
|
|
1
|
+
{"version":3,"file":"getWatchFolders.js","names":["readJsonFile","filePath","file","fs","readFileSync","JSON","parse","isValidJsonFile","globAllPackageJsonPaths","workspaceProjectRoot","linkedPackages","map","glob","globSync","path","join","replace","cwd","absolute","ignore","pkgPath","flat","filter","Boolean","p","getWorkspacePackagesArray","workspaces","Array","isArray","assert","packages","resolveAllWorkspacePackageJsonPaths","rootPackageJsonFilePath","rootPackageJson","getWatchFolders","projectRoot","workspaceRoot","getWorkspaceRoot","resolve","length","uniqueItems","pkg","dirname","items","Set"],"sources":["../src/getWatchFolders.ts"],"sourcesContent":["import assert from 'assert';\nimport fs from 'fs';\nimport { sync as globSync } from 'glob';\nimport path from 'path';\n\nimport { getWorkspaceRoot } from './getModulesPaths';\n\nfunction readJsonFile(filePath: string) {\n // Read with fs\n const file = fs.readFileSync(filePath, 'utf8');\n // Parse with JSON.parse\n return JSON.parse(file);\n}\n\nfunction isValidJsonFile(filePath: string): boolean {\n try {\n // Throws if invalid or unable to read.\n readJsonFile(filePath);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * @param workspaceProjectRoot Root file path for the yarn workspace\n * @param linkedPackages List of folders that contain linked node modules, ex: `['packages/*', 'apps/*']`\n * @returns List of valid package.json file paths, ex: `['/Users/me/app/apps/my-app/package.json', '/Users/me/app/packages/my-package/package.json']`\n */\nexport function globAllPackageJsonPaths(\n workspaceProjectRoot: string,\n linkedPackages: string[]\n): string[] {\n return linkedPackages\n .map((glob) => {\n return globSync(path.join(glob, 'package.json').replace(/\\\\/g, '/'), {\n cwd: workspaceProjectRoot,\n absolute: true,\n ignore: ['**/@(Carthage|Pods|node_modules)/**'],\n }).map((pkgPath) => {\n return isValidJsonFile(pkgPath) ? pkgPath : null;\n });\n })\n .flat()\n .filter(Boolean)\n .map((p) => path.join(p as string));\n}\n\nfunction getWorkspacePackagesArray({ workspaces }: any): string[] {\n if (Array.isArray(workspaces)) {\n return workspaces;\n }\n\n assert(workspaces?.packages, 'Could not find a `workspaces` object in the root package.json');\n\n return workspaces.packages;\n}\n\n/**\n * @param workspaceProjectRoot root file path for a yarn workspace.\n * @returns list of package.json file paths that are linked to the yarn workspace.\n */\nexport function resolveAllWorkspacePackageJsonPaths(workspaceProjectRoot: string) {\n try {\n const rootPackageJsonFilePath = path.join(workspaceProjectRoot, 'package.json');\n // Could throw if package.json is invalid.\n const rootPackageJson = readJsonFile(rootPackageJsonFilePath);\n\n // Extract the \"packages\" array or use \"workspaces\" as packages array (yarn workspaces spec).\n const packages = getWorkspacePackagesArray(rootPackageJson);\n\n // Glob all package.json files and return valid paths.\n return globAllPackageJsonPaths(workspaceProjectRoot, packages);\n } catch {\n return [];\n }\n}\n\n/**\n * @param projectRoot file path to app's project root\n * @returns list of node module paths to watch in Metro bundler, ex: `['/Users/me/app/node_modules/', '/Users/me/app/apps/my-app/', '/Users/me/app/packages/my-package/']`\n */\nexport function getWatchFolders(projectRoot: string): string[] {\n const workspaceRoot = getWorkspaceRoot(path.resolve(projectRoot));\n // Rely on default behavior in standard projects.\n if (!workspaceRoot) {\n return [];\n }\n\n const packages = resolveAllWorkspacePackageJsonPaths(workspaceRoot);\n if (!packages.length) {\n return [];\n }\n\n return uniqueItems([\n path.join(workspaceRoot, 'node_modules'),\n ...packages.map((pkg) => path.dirname(pkg)),\n ]);\n}\n\nfunction uniqueItems(items: string[]): string[] {\n return [...new Set(items)];\n}\n"],"mappings":"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"}
|
|
@@ -5,46 +5,33 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.importMetroConfigFromProject = importMetroConfigFromProject;
|
|
7
7
|
exports.importMetroSourceMapFromProject = importMetroSourceMapFromProject;
|
|
8
|
-
|
|
9
8
|
function _resolveFrom() {
|
|
10
9
|
const data = _interopRequireDefault(require("resolve-from"));
|
|
11
|
-
|
|
12
10
|
_resolveFrom = function () {
|
|
13
11
|
return data;
|
|
14
12
|
};
|
|
15
|
-
|
|
16
13
|
return data;
|
|
17
14
|
}
|
|
18
|
-
|
|
19
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
|
-
|
|
21
16
|
class MetroImportError extends Error {
|
|
22
17
|
constructor(projectRoot, moduleId) {
|
|
23
18
|
super(`Missing package "${moduleId}" in the project at: ${projectRoot}\n` + 'This usually means `react-native` is not installed. ' + 'Please verify that dependencies in package.json include "react-native" ' + 'and run `yarn` or `npm install`.');
|
|
24
19
|
}
|
|
25
|
-
|
|
26
20
|
}
|
|
27
|
-
|
|
28
21
|
function resolveFromProject(projectRoot, moduleId) {
|
|
29
22
|
const resolvedPath = _resolveFrom().default.silent(projectRoot, moduleId);
|
|
30
|
-
|
|
31
23
|
if (!resolvedPath) {
|
|
32
24
|
throw new MetroImportError(projectRoot, moduleId);
|
|
33
25
|
}
|
|
34
|
-
|
|
35
26
|
return resolvedPath;
|
|
36
27
|
}
|
|
37
|
-
|
|
38
28
|
function importFromProject(projectRoot, moduleId) {
|
|
39
29
|
return require(resolveFromProject(projectRoot, moduleId));
|
|
40
30
|
}
|
|
41
|
-
|
|
42
31
|
function importMetroConfigFromProject(projectRoot) {
|
|
43
32
|
return importFromProject(projectRoot, 'metro-config');
|
|
44
33
|
}
|
|
45
|
-
|
|
46
34
|
let metroSourceMap;
|
|
47
|
-
|
|
48
35
|
function importMetroSourceMapFromProject(projectRoot) {
|
|
49
36
|
if (metroSourceMap) return metroSourceMap;
|
|
50
37
|
metroSourceMap = importFromProject(projectRoot, 'metro-source-map');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importMetroFromProject.js","names":["MetroImportError","Error","constructor","projectRoot","moduleId","resolveFromProject","resolvedPath","resolveFrom","silent","importFromProject","require","importMetroConfigFromProject","metroSourceMap","importMetroSourceMapFromProject"],"sources":["../src/importMetroFromProject.ts"],"sourcesContent":["import type MetroConfig from 'metro-config';\nimport type MetroSourceMap from 'metro-source-map';\nimport resolveFrom from 'resolve-from';\n\nclass MetroImportError extends Error {\n constructor(projectRoot: string, moduleId: string) {\n super(\n `Missing package \"${moduleId}\" in the project at: ${projectRoot}\\n` +\n 'This usually means `react-native` is not installed. ' +\n 'Please verify that dependencies in package.json include \"react-native\" ' +\n 'and run `yarn` or `npm install`.'\n );\n }\n}\n\nfunction resolveFromProject(projectRoot: string, moduleId: string) {\n const resolvedPath = resolveFrom.silent(projectRoot, moduleId);\n if (!resolvedPath) {\n throw new MetroImportError(projectRoot, moduleId);\n }\n return resolvedPath;\n}\n\nfunction importFromProject<T = any>(projectRoot: string, moduleId: string): T {\n return require(resolveFromProject(projectRoot, moduleId));\n}\n\nexport function importMetroConfigFromProject(projectRoot: string): typeof MetroConfig {\n return importFromProject(projectRoot, 'metro-config');\n}\n\nlet metroSourceMap: typeof MetroSourceMap | undefined;\n\nexport function importMetroSourceMapFromProject(projectRoot: string): typeof MetroSourceMap {\n if (metroSourceMap) return metroSourceMap;\n metroSourceMap = importFromProject<typeof MetroSourceMap>(projectRoot, 'metro-source-map');\n return metroSourceMap;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"importMetroFromProject.js","names":["MetroImportError","Error","constructor","projectRoot","moduleId","resolveFromProject","resolvedPath","resolveFrom","silent","importFromProject","require","importMetroConfigFromProject","metroSourceMap","importMetroSourceMapFromProject"],"sources":["../src/importMetroFromProject.ts"],"sourcesContent":["import type MetroConfig from 'metro-config';\nimport type MetroSourceMap from 'metro-source-map';\nimport resolveFrom from 'resolve-from';\n\nclass MetroImportError extends Error {\n constructor(projectRoot: string, moduleId: string) {\n super(\n `Missing package \"${moduleId}\" in the project at: ${projectRoot}\\n` +\n 'This usually means `react-native` is not installed. ' +\n 'Please verify that dependencies in package.json include \"react-native\" ' +\n 'and run `yarn` or `npm install`.'\n );\n }\n}\n\nfunction resolveFromProject(projectRoot: string, moduleId: string) {\n const resolvedPath = resolveFrom.silent(projectRoot, moduleId);\n if (!resolvedPath) {\n throw new MetroImportError(projectRoot, moduleId);\n }\n return resolvedPath;\n}\n\nfunction importFromProject<T = any>(projectRoot: string, moduleId: string): T {\n return require(resolveFromProject(projectRoot, moduleId));\n}\n\nexport function importMetroConfigFromProject(projectRoot: string): typeof MetroConfig {\n return importFromProject(projectRoot, 'metro-config');\n}\n\nlet metroSourceMap: typeof MetroSourceMap | undefined;\n\nexport function importMetroSourceMapFromProject(projectRoot: string): typeof MetroSourceMap {\n if (metroSourceMap) return metroSourceMap;\n metroSourceMap = importFromProject<typeof MetroSourceMap>(projectRoot, 'metro-source-map');\n return metroSourceMap;\n}\n"],"mappings":";;;;;;;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAuC;AAEvC,MAAMA,gBAAgB,SAASC,KAAK,CAAC;EACnCC,WAAW,CAACC,WAAmB,EAAEC,QAAgB,EAAE;IACjD,KAAK,CACF,oBAAmBA,QAAS,wBAAuBD,WAAY,IAAG,GACjE,sDAAsD,GACtD,yEAAyE,GACzE,kCAAkC,CACrC;EACH;AACF;AAEA,SAASE,kBAAkB,CAACF,WAAmB,EAAEC,QAAgB,EAAE;EACjE,MAAME,YAAY,GAAGC,sBAAW,CAACC,MAAM,CAACL,WAAW,EAAEC,QAAQ,CAAC;EAC9D,IAAI,CAACE,YAAY,EAAE;IACjB,MAAM,IAAIN,gBAAgB,CAACG,WAAW,EAAEC,QAAQ,CAAC;EACnD;EACA,OAAOE,YAAY;AACrB;AAEA,SAASG,iBAAiB,CAAUN,WAAmB,EAAEC,QAAgB,EAAK;EAC5E,OAAOM,OAAO,CAACL,kBAAkB,CAACF,WAAW,EAAEC,QAAQ,CAAC,CAAC;AAC3D;AAEO,SAASO,4BAA4B,CAACR,WAAmB,EAAsB;EACpF,OAAOM,iBAAiB,CAACN,WAAW,EAAE,cAAc,CAAC;AACvD;AAEA,IAAIS,cAAiD;AAE9C,SAASC,+BAA+B,CAACV,WAAmB,EAAyB;EAC1F,IAAIS,cAAc,EAAE,OAAOA,cAAc;EACzCA,cAAc,GAAGH,iBAAiB,CAAwBN,WAAW,EAAE,kBAAkB,CAAC;EAC1F,OAAOS,cAAc;AACvB"}
|
|
@@ -4,37 +4,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createExoticTransformer = createExoticTransformer;
|
|
7
|
-
|
|
8
7
|
function _createMatcher() {
|
|
9
8
|
const data = require("./createMatcher");
|
|
10
|
-
|
|
11
9
|
_createMatcher = function () {
|
|
12
10
|
return data;
|
|
13
11
|
};
|
|
14
|
-
|
|
15
12
|
return data;
|
|
16
13
|
}
|
|
17
|
-
|
|
18
14
|
function _createMultiRuleTransformer() {
|
|
19
15
|
const data = require("./createMultiRuleTransformer");
|
|
20
|
-
|
|
21
16
|
_createMultiRuleTransformer = function () {
|
|
22
17
|
return data;
|
|
23
18
|
};
|
|
24
|
-
|
|
25
19
|
return data;
|
|
26
20
|
}
|
|
27
|
-
|
|
28
21
|
function _getCacheKey() {
|
|
29
22
|
const data = require("./getCacheKey");
|
|
30
|
-
|
|
31
23
|
_getCacheKey = function () {
|
|
32
24
|
return data;
|
|
33
25
|
};
|
|
34
|
-
|
|
35
26
|
return data;
|
|
36
27
|
}
|
|
37
|
-
|
|
38
28
|
// Copyright 2021-present 650 Industries (Expo). All rights reserved.
|
|
39
29
|
|
|
40
30
|
/**
|
|
@@ -58,19 +48,21 @@ function createExoticTransformer({
|
|
|
58
48
|
}) {
|
|
59
49
|
if (!nodeModulesPaths) {
|
|
60
50
|
nodeModulesPaths = ['node_modules'];
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
51
|
+
}
|
|
52
|
+
// Match any node modules, or monorepo module.
|
|
64
53
|
const nodeModuleMatcher = (0, _createMatcher().createModuleMatcher)({
|
|
65
54
|
folders: nodeModulesPaths,
|
|
66
55
|
moduleIds: []
|
|
67
|
-
});
|
|
68
|
-
// transpile them with every possible option (most expensive).
|
|
56
|
+
});
|
|
69
57
|
|
|
58
|
+
// Match node modules which are so oddly written that we must
|
|
59
|
+
// transpile them with every possible option (most expensive).
|
|
70
60
|
const impossibleNodeModuleMatcher = (0, _createMatcher().createModuleMatcher)({
|
|
71
|
-
moduleIds: [
|
|
61
|
+
moduleIds: [
|
|
62
|
+
// victory is too wild
|
|
72
63
|
// SyntaxError in ../../node_modules/victory-native/lib/components/victory-primitives/bar.js: Missing semicolon. (9:1)
|
|
73
|
-
'victory',
|
|
64
|
+
'victory',
|
|
65
|
+
// vector icons has some hidden issues that break NCL
|
|
74
66
|
'@expo/vector-icons', ...(transpileModules || [])],
|
|
75
67
|
folders: nodeModulesPaths
|
|
76
68
|
});
|
|
@@ -83,10 +75,10 @@ function createExoticTransformer({
|
|
|
83
75
|
// Is a node module, and is not one of the impossible modules.
|
|
84
76
|
return nodeModuleMatcher.test(filename) && !impossibleNodeModuleMatcher.test(filename) ? 'module' : 'app';
|
|
85
77
|
},
|
|
86
|
-
|
|
87
78
|
// Order is very important, we use wild card matchers to transpile
|
|
88
79
|
// "every unhandled node module" and "every unhandled application module".
|
|
89
|
-
rules: [
|
|
80
|
+
rules: [
|
|
81
|
+
// Match bob compiler modules, use the passthrough loader.
|
|
90
82
|
{
|
|
91
83
|
name: 'bob',
|
|
92
84
|
type: 'module',
|
|
@@ -96,7 +88,8 @@ function createExoticTransformer({
|
|
|
96
88
|
}),
|
|
97
89
|
transform: _createMultiRuleTransformer().loaders.passthroughModule,
|
|
98
90
|
warn: true
|
|
99
|
-
},
|
|
91
|
+
},
|
|
92
|
+
// Match React Native modules, convert them statically using sucrase.
|
|
100
93
|
{
|
|
101
94
|
name: 'react-native',
|
|
102
95
|
type: 'module',
|
|
@@ -105,7 +98,8 @@ function createExoticTransformer({
|
|
|
105
98
|
}),
|
|
106
99
|
transform: _createMultiRuleTransformer().loaders.reactNativeModule,
|
|
107
100
|
warn: true
|
|
108
|
-
},
|
|
101
|
+
},
|
|
102
|
+
// Match Expo SDK modules, convert them statically using sucrase.
|
|
109
103
|
{
|
|
110
104
|
name: 'expo-module',
|
|
111
105
|
type: 'module',
|
|
@@ -114,7 +108,8 @@ function createExoticTransformer({
|
|
|
114
108
|
}),
|
|
115
109
|
transform: _createMultiRuleTransformer().loaders.expoModule,
|
|
116
110
|
warn: true
|
|
117
|
-
},
|
|
111
|
+
},
|
|
112
|
+
// Match known problematic modules, convert them statically using an expensive, dynamic sucrase.
|
|
118
113
|
{
|
|
119
114
|
name: 'sucrase',
|
|
120
115
|
type: 'module',
|
|
@@ -123,7 +118,8 @@ function createExoticTransformer({
|
|
|
123
118
|
}),
|
|
124
119
|
transform: _createMultiRuleTransformer().loaders.untranspiledModule,
|
|
125
120
|
warn: true
|
|
126
|
-
},
|
|
121
|
+
},
|
|
122
|
+
// Pass through any unhandled node modules as passthrough, this is where the most savings occur.
|
|
127
123
|
// Ideally, you want your project to pass all node modules through this loader.
|
|
128
124
|
// This should be the last "module" rule.
|
|
129
125
|
// Message library authors and ask them to ship their modules as pre-transpiled
|
|
@@ -133,7 +129,8 @@ function createExoticTransformer({
|
|
|
133
129
|
type: 'module',
|
|
134
130
|
test: () => true,
|
|
135
131
|
transform: _createMultiRuleTransformer().loaders.passthroughModule
|
|
136
|
-
},
|
|
132
|
+
},
|
|
133
|
+
// All application code should be transpiled with the user's babel preset,
|
|
137
134
|
// this is the most expensive operation but provides the most customization to the user.
|
|
138
135
|
// The goal is to use this as sparingly as possible.
|
|
139
136
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createExoticTransformer.js","names":["createExoticTransformer","nodeModulesPaths","transpileModules","nodeModuleMatcher","createModuleMatcher","folders","moduleIds","impossibleNodeModuleMatcher","transform","createMultiRuleTransformer","getRuleType","filename","test","rules","name","type","loaders","passthroughModule","warn","createReactNativeMatcher","reactNativeModule","createExpoMatcher","expoModule","createKnownCommunityMatcher","untranspiledModule","app","getCacheKey"],"sources":["../../src/transformer/createExoticTransformer.ts"],"sourcesContent":["// Copyright 2021-present 650 Industries (Expo). All rights reserved.\nimport { BabelTransformer } from 'metro-babel-transformer';\n\nimport {\n createExpoMatcher,\n createKnownCommunityMatcher,\n createModuleMatcher,\n createReactNativeMatcher,\n} from './createMatcher';\nimport { createMultiRuleTransformer, loaders } from './createMultiRuleTransformer';\nimport { getCacheKey } from './getCacheKey';\n\n/**\n * Create an experimental multi-rule transformer for a React Native app.\n *\n * @example\n * ```\n * module.exports = createExoticTransformer({\n * nodeModulesPaths: ['react-native'],\n * transpileModules: ['@stripe/stripe-react-native'],\n * });\n * ```\n *\n * @param props.nodeModulesPaths paths to node_modules folders, relative to project root. Default: `['node_modules']`\n * @param props.transpileModules matchers for module names that should be transpiled using the project Babel configuration. Example: `['@stripe/stripe-react-native']`\n * @returns a Metro `transformer` function and default `getCacheKey` function.\n */\nexport function createExoticTransformer({\n nodeModulesPaths,\n transpileModules,\n}: {\n nodeModulesPaths?: string[];\n transpileModules?: string[];\n}): BabelTransformer {\n if (!nodeModulesPaths) {\n nodeModulesPaths = ['node_modules'];\n }\n // Match any node modules, or monorepo module.\n const nodeModuleMatcher = createModuleMatcher({ folders: nodeModulesPaths, moduleIds: [] });\n\n // Match node modules which are so oddly written that we must\n // transpile them with every possible option (most expensive).\n const impossibleNodeModuleMatcher = createModuleMatcher({\n moduleIds: [\n // victory is too wild\n // SyntaxError in ../../node_modules/victory-native/lib/components/victory-primitives/bar.js: Missing semicolon. (9:1)\n 'victory',\n // vector icons has some hidden issues that break NCL\n '@expo/vector-icons',\n ...(transpileModules || []),\n ],\n folders: nodeModulesPaths,\n });\n\n const transform = createMultiRuleTransformer({\n // Specify which rules to use on a per-file basis, basically\n // this is used to determine which modules are node modules, and which are application code.\n getRuleType({ filename }) {\n // Is a node module, and is not one of the impossible modules.\n return nodeModuleMatcher.test(filename) && !impossibleNodeModuleMatcher.test(filename)\n ? 'module'\n : 'app';\n },\n\n // Order is very important, we use wild card matchers to transpile\n // \"every unhandled node module\" and \"every unhandled application module\".\n rules: [\n // Match bob compiler modules, use the passthrough loader.\n {\n name: 'bob',\n type: 'module',\n test: createModuleMatcher({ moduleIds: ['.*/lib/commonjs/'], folders: nodeModulesPaths }),\n transform: loaders.passthroughModule,\n warn: true,\n },\n // Match React Native modules, convert them statically using sucrase.\n {\n name: 'react-native',\n type: 'module',\n test: createReactNativeMatcher({ folders: nodeModulesPaths }),\n transform: loaders.reactNativeModule,\n warn: true,\n },\n // Match Expo SDK modules, convert them statically using sucrase.\n {\n name: 'expo-module',\n type: 'module',\n test: createExpoMatcher({ folders: nodeModulesPaths }),\n transform: loaders.expoModule,\n warn: true,\n },\n // Match known problematic modules, convert them statically using an expensive, dynamic sucrase.\n {\n name: 'sucrase',\n type: 'module',\n test: createKnownCommunityMatcher({\n folders: nodeModulesPaths,\n }),\n transform: loaders.untranspiledModule,\n warn: true,\n },\n // Pass through any unhandled node modules as passthrough, this is where the most savings occur.\n // Ideally, you want your project to pass all node modules through this loader.\n // This should be the last \"module\" rule.\n // Message library authors and ask them to ship their modules as pre-transpiled\n // commonjs, to improve the development speed of your project.\n {\n name: 'skip-module',\n type: 'module',\n test: () => true,\n transform: loaders.passthroughModule,\n },\n // All application code should be transpiled with the user's babel preset,\n // this is the most expensive operation but provides the most customization to the user.\n // The goal is to use this as sparingly as possible.\n {\n name: 'babel',\n test: () => true,\n transform: loaders.app,\n },\n ],\n });\n\n return {\n transform,\n getCacheKey,\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"createExoticTransformer.js","names":["createExoticTransformer","nodeModulesPaths","transpileModules","nodeModuleMatcher","createModuleMatcher","folders","moduleIds","impossibleNodeModuleMatcher","transform","createMultiRuleTransformer","getRuleType","filename","test","rules","name","type","loaders","passthroughModule","warn","createReactNativeMatcher","reactNativeModule","createExpoMatcher","expoModule","createKnownCommunityMatcher","untranspiledModule","app","getCacheKey"],"sources":["../../src/transformer/createExoticTransformer.ts"],"sourcesContent":["// Copyright 2021-present 650 Industries (Expo). All rights reserved.\nimport { BabelTransformer } from 'metro-babel-transformer';\n\nimport {\n createExpoMatcher,\n createKnownCommunityMatcher,\n createModuleMatcher,\n createReactNativeMatcher,\n} from './createMatcher';\nimport { createMultiRuleTransformer, loaders } from './createMultiRuleTransformer';\nimport { getCacheKey } from './getCacheKey';\n\n/**\n * Create an experimental multi-rule transformer for a React Native app.\n *\n * @example\n * ```\n * module.exports = createExoticTransformer({\n * nodeModulesPaths: ['react-native'],\n * transpileModules: ['@stripe/stripe-react-native'],\n * });\n * ```\n *\n * @param props.nodeModulesPaths paths to node_modules folders, relative to project root. Default: `['node_modules']`\n * @param props.transpileModules matchers for module names that should be transpiled using the project Babel configuration. Example: `['@stripe/stripe-react-native']`\n * @returns a Metro `transformer` function and default `getCacheKey` function.\n */\nexport function createExoticTransformer({\n nodeModulesPaths,\n transpileModules,\n}: {\n nodeModulesPaths?: string[];\n transpileModules?: string[];\n}): BabelTransformer {\n if (!nodeModulesPaths) {\n nodeModulesPaths = ['node_modules'];\n }\n // Match any node modules, or monorepo module.\n const nodeModuleMatcher = createModuleMatcher({ folders: nodeModulesPaths, moduleIds: [] });\n\n // Match node modules which are so oddly written that we must\n // transpile them with every possible option (most expensive).\n const impossibleNodeModuleMatcher = createModuleMatcher({\n moduleIds: [\n // victory is too wild\n // SyntaxError in ../../node_modules/victory-native/lib/components/victory-primitives/bar.js: Missing semicolon. (9:1)\n 'victory',\n // vector icons has some hidden issues that break NCL\n '@expo/vector-icons',\n ...(transpileModules || []),\n ],\n folders: nodeModulesPaths,\n });\n\n const transform = createMultiRuleTransformer({\n // Specify which rules to use on a per-file basis, basically\n // this is used to determine which modules are node modules, and which are application code.\n getRuleType({ filename }) {\n // Is a node module, and is not one of the impossible modules.\n return nodeModuleMatcher.test(filename) && !impossibleNodeModuleMatcher.test(filename)\n ? 'module'\n : 'app';\n },\n\n // Order is very important, we use wild card matchers to transpile\n // \"every unhandled node module\" and \"every unhandled application module\".\n rules: [\n // Match bob compiler modules, use the passthrough loader.\n {\n name: 'bob',\n type: 'module',\n test: createModuleMatcher({ moduleIds: ['.*/lib/commonjs/'], folders: nodeModulesPaths }),\n transform: loaders.passthroughModule,\n warn: true,\n },\n // Match React Native modules, convert them statically using sucrase.\n {\n name: 'react-native',\n type: 'module',\n test: createReactNativeMatcher({ folders: nodeModulesPaths }),\n transform: loaders.reactNativeModule,\n warn: true,\n },\n // Match Expo SDK modules, convert them statically using sucrase.\n {\n name: 'expo-module',\n type: 'module',\n test: createExpoMatcher({ folders: nodeModulesPaths }),\n transform: loaders.expoModule,\n warn: true,\n },\n // Match known problematic modules, convert them statically using an expensive, dynamic sucrase.\n {\n name: 'sucrase',\n type: 'module',\n test: createKnownCommunityMatcher({\n folders: nodeModulesPaths,\n }),\n transform: loaders.untranspiledModule,\n warn: true,\n },\n // Pass through any unhandled node modules as passthrough, this is where the most savings occur.\n // Ideally, you want your project to pass all node modules through this loader.\n // This should be the last \"module\" rule.\n // Message library authors and ask them to ship their modules as pre-transpiled\n // commonjs, to improve the development speed of your project.\n {\n name: 'skip-module',\n type: 'module',\n test: () => true,\n transform: loaders.passthroughModule,\n },\n // All application code should be transpiled with the user's babel preset,\n // this is the most expensive operation but provides the most customization to the user.\n // The goal is to use this as sparingly as possible.\n {\n name: 'babel',\n test: () => true,\n transform: loaders.app,\n },\n ],\n });\n\n return {\n transform,\n getCacheKey,\n };\n}\n"],"mappings":";;;;;;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAMA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAVA;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,uBAAuB,CAAC;EACtCC,gBAAgB;EAChBC;AAIF,CAAC,EAAoB;EACnB,IAAI,CAACD,gBAAgB,EAAE;IACrBA,gBAAgB,GAAG,CAAC,cAAc,CAAC;EACrC;EACA;EACA,MAAME,iBAAiB,GAAG,IAAAC,oCAAmB,EAAC;IAAEC,OAAO,EAAEJ,gBAAgB;IAAEK,SAAS,EAAE;EAAG,CAAC,CAAC;;EAE3F;EACA;EACA,MAAMC,2BAA2B,GAAG,IAAAH,oCAAmB,EAAC;IACtDE,SAAS,EAAE;IACT;IACA;IACA,SAAS;IACT;IACA,oBAAoB,EACpB,IAAIJ,gBAAgB,IAAI,EAAE,CAAC,CAC5B;IACDG,OAAO,EAAEJ;EACX,CAAC,CAAC;EAEF,MAAMO,SAAS,GAAG,IAAAC,wDAA0B,EAAC;IAC3C;IACA;IACAC,WAAW,CAAC;MAAEC;IAAS,CAAC,EAAE;MACxB;MACA,OAAOR,iBAAiB,CAACS,IAAI,CAACD,QAAQ,CAAC,IAAI,CAACJ,2BAA2B,CAACK,IAAI,CAACD,QAAQ,CAAC,GAClF,QAAQ,GACR,KAAK;IACX,CAAC;IAED;IACA;IACAE,KAAK,EAAE;IACL;IACA;MACEC,IAAI,EAAE,KAAK;MACXC,IAAI,EAAE,QAAQ;MACdH,IAAI,EAAE,IAAAR,oCAAmB,EAAC;QAAEE,SAAS,EAAE,CAAC,kBAAkB,CAAC;QAAED,OAAO,EAAEJ;MAAiB,CAAC,CAAC;MACzFO,SAAS,EAAEQ,qCAAO,CAACC,iBAAiB;MACpCC,IAAI,EAAE;IACR,CAAC;IACD;IACA;MACEJ,IAAI,EAAE,cAAc;MACpBC,IAAI,EAAE,QAAQ;MACdH,IAAI,EAAE,IAAAO,yCAAwB,EAAC;QAAEd,OAAO,EAAEJ;MAAiB,CAAC,CAAC;MAC7DO,SAAS,EAAEQ,qCAAO,CAACI,iBAAiB;MACpCF,IAAI,EAAE;IACR,CAAC;IACD;IACA;MACEJ,IAAI,EAAE,aAAa;MACnBC,IAAI,EAAE,QAAQ;MACdH,IAAI,EAAE,IAAAS,kCAAiB,EAAC;QAAEhB,OAAO,EAAEJ;MAAiB,CAAC,CAAC;MACtDO,SAAS,EAAEQ,qCAAO,CAACM,UAAU;MAC7BJ,IAAI,EAAE;IACR,CAAC;IACD;IACA;MACEJ,IAAI,EAAE,SAAS;MACfC,IAAI,EAAE,QAAQ;MACdH,IAAI,EAAE,IAAAW,4CAA2B,EAAC;QAChClB,OAAO,EAAEJ;MACX,CAAC,CAAC;MACFO,SAAS,EAAEQ,qCAAO,CAACQ,kBAAkB;MACrCN,IAAI,EAAE;IACR,CAAC;IACD;IACA;IACA;IACA;IACA;IACA;MACEJ,IAAI,EAAE,aAAa;MACnBC,IAAI,EAAE,QAAQ;MACdH,IAAI,EAAE,MAAM,IAAI;MAChBJ,SAAS,EAAEQ,qCAAO,CAACC;IACrB,CAAC;IACD;IACA;IACA;IACA;MACEH,IAAI,EAAE,OAAO;MACbF,IAAI,EAAE,MAAM,IAAI;MAChBJ,SAAS,EAAEQ,qCAAO,CAACS;IACrB,CAAC;EAEL,CAAC,CAAC;EAEF,OAAO;IACLjB,SAAS;IACTkB,WAAW,EAAXA;EACF,CAAC;AACH"}
|
|
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.createKnownCommunityMatcher = exports.createExpoMatcher = void 0;
|
|
7
7
|
exports.createModuleMatcher = createModuleMatcher;
|
|
8
8
|
exports.createReactNativeMatcher = void 0;
|
|
9
|
-
|
|
10
9
|
// Copyright 2021-present 650 Industries (Expo). All rights reserved.
|
|
10
|
+
|
|
11
11
|
function createModuleMatcher({
|
|
12
12
|
folders = ['node_modules'],
|
|
13
13
|
moduleIds
|
|
@@ -17,41 +17,41 @@ function createModuleMatcher({
|
|
|
17
17
|
const moduleMatcherId = '^' + [modulePathsGroup, moduleMatchersGroup].map(value => `(?:${value})`).join('/');
|
|
18
18
|
return new RegExp(moduleMatcherId);
|
|
19
19
|
}
|
|
20
|
-
|
|
21
20
|
const createReactNativeMatcher = ({
|
|
22
21
|
folders
|
|
23
22
|
}) => createModuleMatcher({
|
|
24
23
|
folders,
|
|
25
24
|
moduleIds: ['react-native/']
|
|
26
25
|
});
|
|
27
|
-
|
|
28
26
|
exports.createReactNativeMatcher = createReactNativeMatcher;
|
|
29
|
-
|
|
30
27
|
const createExpoMatcher = ({
|
|
31
28
|
folders
|
|
32
29
|
}) => createModuleMatcher({
|
|
33
30
|
folders,
|
|
34
31
|
// We'll work to start reducing this.
|
|
35
32
|
moduleIds: ['expo', '@expo', '@unimodules', '@use-expo']
|
|
36
|
-
});
|
|
37
|
-
// TODO: Add SDK version compat list.
|
|
38
|
-
|
|
33
|
+
});
|
|
39
34
|
|
|
35
|
+
// TODO: Make this list as short as possible before releasing.
|
|
36
|
+
// TODO: Add SDK version compat list.
|
|
40
37
|
exports.createExpoMatcher = createExpoMatcher;
|
|
41
|
-
|
|
42
38
|
const createKnownCommunityMatcher = ({
|
|
43
39
|
folders,
|
|
44
40
|
moduleIds = []
|
|
45
41
|
} = {}) => createModuleMatcher({
|
|
46
42
|
folders,
|
|
47
|
-
moduleIds: [...moduleIds,
|
|
43
|
+
moduleIds: [...moduleIds,
|
|
44
|
+
// The more complex, the longer the entire project takes...
|
|
48
45
|
// react-native-community, react-native-masked-view, react-native-picker, react-native-segmented-control, react-native
|
|
49
|
-
'@react-',
|
|
50
|
-
|
|
51
|
-
'
|
|
52
|
-
|
|
46
|
+
'@react-',
|
|
47
|
+
// @sentry/react-native
|
|
48
|
+
'@(?:[\\w|-]+)/react-native', 'react-native-', 'victory-', 'native-base', 'styled-components',
|
|
49
|
+
// three.js
|
|
50
|
+
'three/build/three.module.js', 'three/examples/jsm',
|
|
51
|
+
// Special case for testing expo/expo repo
|
|
52
|
+
'html-elements/',
|
|
53
|
+
// shared-element
|
|
53
54
|
'react-navigation-']
|
|
54
55
|
});
|
|
55
|
-
|
|
56
56
|
exports.createKnownCommunityMatcher = createKnownCommunityMatcher;
|
|
57
57
|
//# sourceMappingURL=createMatcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMatcher.js","names":["createModuleMatcher","folders","moduleIds","modulePathsGroup","join","moduleMatchersGroup","moduleMatcherId","map","value","RegExp","createReactNativeMatcher","createExpoMatcher","createKnownCommunityMatcher"],"sources":["../../src/transformer/createMatcher.ts"],"sourcesContent":["// Copyright 2021-present 650 Industries (Expo). All rights reserved.\n\nexport function createModuleMatcher({\n folders = ['node_modules'],\n moduleIds,\n}: {\n folders?: string[];\n moduleIds: string[];\n}) {\n const modulePathsGroup = folders.join('|');\n\n const moduleMatchersGroup = moduleIds.join('|');\n\n const moduleMatcherId =\n '^' + [modulePathsGroup, moduleMatchersGroup].map((value) => `(?:${value})`).join('/');\n\n return new RegExp(moduleMatcherId);\n}\n\nexport const createReactNativeMatcher = ({ folders }: { folders?: string[] }) =>\n createModuleMatcher({\n folders,\n moduleIds: ['react-native/'],\n });\n\nexport const createExpoMatcher = ({ folders }: { folders?: string[] }) =>\n createModuleMatcher({\n folders,\n // We'll work to start reducing this.\n moduleIds: ['expo', '@expo', '@unimodules', '@use-expo'],\n });\n\n// TODO: Make this list as short as possible before releasing.\n// TODO: Add SDK version compat list.\nexport const createKnownCommunityMatcher = ({\n folders,\n moduleIds = [],\n}: {\n folders?: string[];\n moduleIds?: string[];\n} = {}) =>\n createModuleMatcher({\n folders,\n moduleIds: [\n ...moduleIds,\n // The more complex, the longer the entire project takes...\n // react-native-community, react-native-masked-view, react-native-picker, react-native-segmented-control, react-native\n '@react-',\n // @sentry/react-native\n '@(?:[\\\\w|-]+)/react-native',\n 'react-native-',\n 'victory-',\n 'native-base',\n 'styled-components',\n // three.js\n 'three/build/three.module.js',\n 'three/examples/jsm',\n // Special case for testing expo/expo repo\n 'html-elements/',\n // shared-element\n 'react-navigation-',\n ],\n });\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"createMatcher.js","names":["createModuleMatcher","folders","moduleIds","modulePathsGroup","join","moduleMatchersGroup","moduleMatcherId","map","value","RegExp","createReactNativeMatcher","createExpoMatcher","createKnownCommunityMatcher"],"sources":["../../src/transformer/createMatcher.ts"],"sourcesContent":["// Copyright 2021-present 650 Industries (Expo). All rights reserved.\n\nexport function createModuleMatcher({\n folders = ['node_modules'],\n moduleIds,\n}: {\n folders?: string[];\n moduleIds: string[];\n}) {\n const modulePathsGroup = folders.join('|');\n\n const moduleMatchersGroup = moduleIds.join('|');\n\n const moduleMatcherId =\n '^' + [modulePathsGroup, moduleMatchersGroup].map((value) => `(?:${value})`).join('/');\n\n return new RegExp(moduleMatcherId);\n}\n\nexport const createReactNativeMatcher = ({ folders }: { folders?: string[] }) =>\n createModuleMatcher({\n folders,\n moduleIds: ['react-native/'],\n });\n\nexport const createExpoMatcher = ({ folders }: { folders?: string[] }) =>\n createModuleMatcher({\n folders,\n // We'll work to start reducing this.\n moduleIds: ['expo', '@expo', '@unimodules', '@use-expo'],\n });\n\n// TODO: Make this list as short as possible before releasing.\n// TODO: Add SDK version compat list.\nexport const createKnownCommunityMatcher = ({\n folders,\n moduleIds = [],\n}: {\n folders?: string[];\n moduleIds?: string[];\n} = {}) =>\n createModuleMatcher({\n folders,\n moduleIds: [\n ...moduleIds,\n // The more complex, the longer the entire project takes...\n // react-native-community, react-native-masked-view, react-native-picker, react-native-segmented-control, react-native\n '@react-',\n // @sentry/react-native\n '@(?:[\\\\w|-]+)/react-native',\n 'react-native-',\n 'victory-',\n 'native-base',\n 'styled-components',\n // three.js\n 'three/build/three.module.js',\n 'three/examples/jsm',\n // Special case for testing expo/expo repo\n 'html-elements/',\n // shared-element\n 'react-navigation-',\n ],\n });\n"],"mappings":";;;;;;;;AAAA;;AAEO,SAASA,mBAAmB,CAAC;EAClCC,OAAO,GAAG,CAAC,cAAc,CAAC;EAC1BC;AAIF,CAAC,EAAE;EACD,MAAMC,gBAAgB,GAAGF,OAAO,CAACG,IAAI,CAAC,GAAG,CAAC;EAE1C,MAAMC,mBAAmB,GAAGH,SAAS,CAACE,IAAI,CAAC,GAAG,CAAC;EAE/C,MAAME,eAAe,GACnB,GAAG,GAAG,CAACH,gBAAgB,EAAEE,mBAAmB,CAAC,CAACE,GAAG,CAAEC,KAAK,IAAM,MAAKA,KAAM,GAAE,CAAC,CAACJ,IAAI,CAAC,GAAG,CAAC;EAExF,OAAO,IAAIK,MAAM,CAACH,eAAe,CAAC;AACpC;AAEO,MAAMI,wBAAwB,GAAG,CAAC;EAAET;AAAgC,CAAC,KAC1ED,mBAAmB,CAAC;EAClBC,OAAO;EACPC,SAAS,EAAE,CAAC,eAAe;AAC7B,CAAC,CAAC;AAAC;AAEE,MAAMS,iBAAiB,GAAG,CAAC;EAAEV;AAAgC,CAAC,KACnED,mBAAmB,CAAC;EAClBC,OAAO;EACP;EACAC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW;AACzD,CAAC,CAAC;;AAEJ;AACA;AAAA;AACO,MAAMU,2BAA2B,GAAG,CAAC;EAC1CX,OAAO;EACPC,SAAS,GAAG;AAId,CAAC,GAAG,CAAC,CAAC,KACJF,mBAAmB,CAAC;EAClBC,OAAO;EACPC,SAAS,EAAE,CACT,GAAGA,SAAS;EACZ;EACA;EACA,SAAS;EACT;EACA,4BAA4B,EAC5B,eAAe,EACf,UAAU,EACV,aAAa,EACb,mBAAmB;EACnB;EACA,6BAA6B,EAC7B,oBAAoB;EACpB;EACA,gBAAgB;EAChB;EACA,mBAAmB;AAEvB,CAAC,CAAC;AAAC"}
|