metro 0.83.2 → 0.83.4
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/package.json +25 -23
- package/src/Assets.js +50 -30
- package/src/Assets.js.flow +26 -15
- package/src/Bundler/util.js +33 -22
- package/src/Bundler/util.js.flow +2 -2
- package/src/Bundler.js +5 -1
- package/src/Bundler.js.flow +1 -1
- package/src/DeltaBundler/DeltaCalculator.js +9 -5
- package/src/DeltaBundler/DeltaCalculator.js.flow +8 -8
- package/src/DeltaBundler/Graph.js +21 -17
- package/src/DeltaBundler/Graph.js.flow +30 -30
- package/src/DeltaBundler/Serializers/baseJSBundle.js +5 -1
- package/src/DeltaBundler/Serializers/baseJSBundle.js.flow +1 -1
- package/src/DeltaBundler/Serializers/getAllFiles.js.flow +2 -2
- package/src/DeltaBundler/Serializers/getAssets.js +5 -1
- package/src/DeltaBundler/Serializers/getAssets.js.flow +2 -2
- package/src/DeltaBundler/Serializers/getExplodedSourceMap.js.flow +2 -2
- package/src/DeltaBundler/Serializers/getRamBundleInfo.js +5 -1
- package/src/DeltaBundler/Serializers/getRamBundleInfo.js.flow +8 -8
- package/src/DeltaBundler/Serializers/helpers/js.js +33 -22
- package/src/DeltaBundler/Serializers/helpers/js.js.flow +6 -6
- package/src/DeltaBundler/Serializers/helpers/processModules.js.flow +3 -3
- package/src/DeltaBundler/Serializers/hmrJSBundle.js +33 -22
- package/src/DeltaBundler/Serializers/hmrJSBundle.js.flow +5 -5
- package/src/DeltaBundler/Serializers/sourceMapGenerator.js +5 -1
- package/src/DeltaBundler/Serializers/sourceMapGenerator.js.flow +6 -6
- package/src/DeltaBundler/Serializers/sourceMapObject.js.flow +2 -2
- package/src/DeltaBundler/Serializers/sourceMapString.js.flow +2 -2
- package/src/DeltaBundler/Transformer.js +5 -1
- package/src/DeltaBundler/Transformer.js.flow +3 -3
- package/src/DeltaBundler/Worker.flow.js +5 -1
- package/src/DeltaBundler/Worker.flow.js.flow +1 -1
- package/src/DeltaBundler/WorkerFarm.js +1 -1
- package/src/DeltaBundler/WorkerFarm.js.flow +26 -13
- package/src/DeltaBundler/buildSubgraph.js +9 -5
- package/src/DeltaBundler/buildSubgraph.js.flow +8 -8
- package/src/DeltaBundler/getTransformCacheKey.js +5 -1
- package/src/DeltaBundler/types.js +5 -1
- package/src/DeltaBundler/types.js.flow +36 -34
- package/src/DeltaBundler.js +5 -1
- package/src/DeltaBundler.js.flow +2 -2
- package/src/HmrServer.js +42 -30
- package/src/HmrServer.js.flow +17 -12
- package/src/IncrementalBundler.js +37 -22
- package/src/IncrementalBundler.js.flow +13 -9
- package/src/ModuleGraph/worker/JsFileWrapping.js +33 -22
- package/src/ModuleGraph/worker/JsFileWrapping.js.flow +10 -5
- package/src/ModuleGraph/worker/collectDependencies.js +33 -22
- package/src/ModuleGraph/worker/collectDependencies.js.flow +27 -21
- package/src/ModuleGraph/worker/generateImportNames.js +5 -1
- package/src/ModuleGraph/worker/generateImportNames.js.flow +4 -2
- package/src/ModuleGraph/worker/importLocationsPlugin.js.flow +7 -3
- package/src/Server/MultipartResponse.js +5 -1
- package/src/Server/MultipartResponse.js.flow +1 -1
- package/src/Server/symbolicate.js.flow +4 -4
- package/src/Server.js +112 -40
- package/src/Server.js.flow +110 -47
- package/src/cli/parseKeyValueParamArray.js.flow +1 -1
- package/src/cli-utils.js +5 -1
- package/src/cli-utils.js.flow +2 -2
- package/src/commands/build.js +5 -1
- package/src/commands/build.js.flow +11 -10
- package/src/commands/dependencies.js +5 -1
- package/src/commands/dependencies.js.flow +8 -4
- package/src/commands/serve.js +2 -0
- package/src/commands/serve.js.flow +14 -9
- package/src/index.flow.js +38 -27
- package/src/index.flow.js.flow +25 -20
- package/src/integration_tests/basic_bundle/AssetRegistry.js.flow +1 -1
- package/src/integration_tests/basic_bundle/ErrorBundle.js.flow +1 -1
- package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-import.js +5 -1
- package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-import.js.flow +1 -1
- package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-multi-line-import-with-escapes.js.flow +1 -1
- package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-multi-line-import.js.flow +1 -1
- package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-require-with-embedded-comment.js.flow +1 -1
- package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-require.js.flow +1 -1
- package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-specifier-with-escapes.js.flow +1 -1
- package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-import.js +5 -1
- package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-import.js.flow +1 -1
- package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-require.js.flow +1 -1
- package/src/integration_tests/basic_bundle/import-export/index.js +33 -22
- package/src/integration_tests/basic_bundle/import-export/index.js.flow +3 -3
- package/src/integration_tests/basic_bundle/import-export/utils.js.flow +2 -2
- package/src/integration_tests/basic_bundle/loadBundleAsyncForTest.js.flow +1 -1
- package/src/integration_tests/basic_bundle/optional-dependencies/index.js.flow +1 -1
- package/src/integration_tests/basic_bundle/require-context/conflict.js.flow +1 -1
- package/src/integration_tests/basic_bundle/require-context/empty.js.flow +1 -1
- package/src/integration_tests/basic_bundle/require-context/matching.js.flow +1 -1
- package/src/integration_tests/basic_bundle/require-context/mode-eager.js.flow +1 -1
- package/src/integration_tests/basic_bundle/require-context/mode-lazy-once.js.flow +1 -1
- package/src/integration_tests/basic_bundle/require-context/mode-lazy.js.flow +1 -1
- package/src/integration_tests/basic_bundle/require-context/mode-sync.js.flow +2 -2
- package/src/integration_tests/basic_bundle/require-context/utils.js.flow +1 -1
- package/src/integration_tests/basic_bundle/require-resolveWeak/import-and-resolveWeak.js.flow +1 -1
- package/src/integration_tests/basic_bundle/require-resolveWeak/multiple.js.flow +1 -1
- package/src/integration_tests/basic_bundle/require-resolveWeak/never-required.js.flow +1 -1
- package/src/integration_tests/basic_bundle/require-resolveWeak/require-and-resolveWeak.js.flow +1 -1
- package/src/integration_tests/execBundle.js +5 -1
- package/src/integration_tests/execBundle.js.flow +1 -1
- package/src/lib/BatchProcessor.js +10 -3
- package/src/lib/BatchProcessor.js.flow +10 -7
- package/src/lib/CountingSet.js.flow +4 -4
- package/src/lib/JsonReporter.js +5 -3
- package/src/lib/JsonReporter.js.flow +19 -17
- package/src/lib/RamBundleParser.js +5 -1
- package/src/lib/RamBundleParser.js.flow +1 -1
- package/src/lib/TerminalReporter.js +39 -28
- package/src/lib/TerminalReporter.js.flow +15 -15
- package/src/lib/contextModule.js +5 -1
- package/src/lib/contextModule.js.flow +1 -1
- package/src/lib/contextModuleTemplates.js +28 -21
- package/src/lib/countLines.js +4 -3
- package/src/lib/countLines.js.flow +3 -4
- package/src/lib/createWebsocketServer.js +14 -3
- package/src/lib/createWebsocketServer.js.flow +16 -9
- package/src/lib/debounceAsyncQueue.js.flow +1 -1
- package/src/lib/formatBundlingError.js +5 -1
- package/src/lib/formatBundlingError.js.flow +1 -1
- package/src/lib/getAppendScripts.js +5 -1
- package/src/lib/getAppendScripts.js.flow +4 -4
- package/src/lib/getGraphId.js +5 -1
- package/src/lib/getGraphId.js.flow +1 -1
- package/src/lib/getPreludeCode.js +4 -0
- package/src/lib/getPreludeCode.js.flow +10 -3
- package/src/lib/getPrependedScripts.js +44 -23
- package/src/lib/getPrependedScripts.js.flow +10 -3
- package/src/lib/logToConsole.js +5 -1
- package/src/lib/logToConsole.js.flow +2 -2
- package/src/lib/parseBundleOptionsFromBundleRequestUrl.js +33 -22
- package/src/lib/parseCustomResolverOptions.js.flow +2 -2
- package/src/lib/parseCustomTransformOptions.js.flow +1 -1
- package/src/lib/parseJsonBody.js.flow +11 -1
- package/src/lib/pathUtils.js +28 -21
- package/src/lib/pathUtils.js.flow +1 -1
- package/src/lib/relativizeSourceMap.js +5 -1
- package/src/lib/reporting.js +5 -1
- package/src/lib/reporting.js.flow +4 -4
- package/src/lib/transformHelpers.js +16 -10
- package/src/lib/transformHelpers.js.flow +17 -15
- package/src/node-haste/DependencyGraph/ModuleResolution.js +56 -43
- package/src/node-haste/DependencyGraph/ModuleResolution.js.flow +35 -32
- package/src/node-haste/DependencyGraph/createFileMap.js +64 -39
- package/src/node-haste/DependencyGraph/createFileMap.js.flow +44 -18
- package/src/node-haste/DependencyGraph.js +45 -32
- package/src/node-haste/DependencyGraph.js.flow +35 -37
- package/src/node-haste/Package.js +5 -1
- package/src/node-haste/PackageCache.js +5 -1
- package/src/node-haste/lib/AssetPaths.js +7 -3
- package/src/node-haste/lib/AssetPaths.js.flow +4 -4
- package/src/node-haste/lib/parsePlatformFilePath.js +11 -7
- package/src/node-haste/lib/parsePlatformFilePath.js.flow +4 -4
- package/src/shared/output/RamBundle/as-assets.js +5 -1
- package/src/shared/output/RamBundle/as-assets.js.flow +6 -6
- package/src/shared/output/RamBundle/as-indexed-file.js +5 -1
- package/src/shared/output/RamBundle/as-indexed-file.js.flow +5 -5
- package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js.flow +5 -5
- package/src/shared/output/RamBundle/util.js +5 -1
- package/src/shared/output/RamBundle/util.js.flow +5 -5
- package/src/shared/output/RamBundle/write-sourcemap.js +5 -1
- package/src/shared/output/RamBundle/write-sourcemap.js.flow +1 -1
- package/src/shared/output/RamBundle.js +5 -1
- package/src/shared/output/RamBundle.js.flow +1 -1
- package/src/shared/output/bundle.flow.js +5 -1
- package/src/shared/output/bundle.flow.js.flow +3 -3
- package/src/shared/output/meta.js +7 -3
- package/src/shared/output/meta.js.flow +1 -1
- package/src/shared/output/writeFile.js +13 -4
- package/src/shared/output/writeFile.js.flow +8 -2
- package/src/shared/types.js.flow +20 -5
- package/src/Asset.d.ts +0 -25
- package/src/Bundler.d.ts +0 -39
- package/src/DeltaBundler/Graph.d.ts +0 -40
- package/src/DeltaBundler/Serializers/getExplodedSourceMap.d.ts +0 -26
- package/src/DeltaBundler/Serializers/getRamBundleInfo.d.ts +0 -18
- package/src/DeltaBundler/Worker.d.ts +0 -45
- package/src/DeltaBundler/types.d.ts +0 -166
- package/src/DeltaBundler.d.ts +0 -58
- package/src/IncrementalBundler.d.ts +0 -98
- package/src/ModuleGraph/test-helpers.js +0 -75
- package/src/ModuleGraph/worker/collectDependencies.d.ts +0 -27
- package/src/Server/MultipartResponse.d.ts +0 -31
- package/src/Server/symbolicate.d.ts +0 -31
- package/src/Server.d.ts +0 -118
- package/src/index.d.ts +0 -193
- package/src/lib/CountingSet.d.ts +0 -48
- package/src/lib/TerminalReporter.d.ts +0 -27
- package/src/lib/contextModule.d.ts +0 -22
- package/src/lib/getGraphId.d.ts +0 -11
- package/src/lib/reporting.d.ts +0 -144
- package/src/node-haste/DependencyGraph.d.ts +0 -62
- package/src/shared/output/bundle.d.ts +0 -35
- package/src/shared/types.d.ts +0 -130
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "metro",
|
|
3
|
-
"version": "0.83.
|
|
3
|
+
"version": "0.83.4",
|
|
4
4
|
"description": "🚇 The JavaScript bundler for React Native.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"bin": "src/cli.js",
|
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
"cleanup-release": "test ! -e build && mv src build && mv src.real src"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@babel/code-frame": "^7.
|
|
21
|
+
"@babel/code-frame": "^7.29.0",
|
|
22
22
|
"@babel/core": "^7.25.2",
|
|
23
|
-
"@babel/generator": "^7.
|
|
24
|
-
"@babel/parser": "^7.
|
|
25
|
-
"@babel/template": "^7.
|
|
26
|
-
"@babel/traverse": "^7.
|
|
27
|
-
"@babel/types": "^7.
|
|
28
|
-
"accepts": "^
|
|
23
|
+
"@babel/generator": "^7.29.1",
|
|
24
|
+
"@babel/parser": "^7.29.0",
|
|
25
|
+
"@babel/template": "^7.28.6",
|
|
26
|
+
"@babel/traverse": "^7.29.0",
|
|
27
|
+
"@babel/types": "^7.29.0",
|
|
28
|
+
"accepts": "^2.0.0",
|
|
29
29
|
"chalk": "^4.0.0",
|
|
30
30
|
"ci-info": "^2.0.0",
|
|
31
31
|
"connect": "^3.6.5",
|
|
@@ -33,25 +33,25 @@
|
|
|
33
33
|
"error-stack-parser": "^2.0.6",
|
|
34
34
|
"flow-enums-runtime": "^0.0.6",
|
|
35
35
|
"graceful-fs": "^4.2.4",
|
|
36
|
-
"hermes-parser": "0.
|
|
36
|
+
"hermes-parser": "0.33.3",
|
|
37
37
|
"image-size": "^1.0.2",
|
|
38
38
|
"invariant": "^2.2.4",
|
|
39
39
|
"jest-worker": "^29.7.0",
|
|
40
40
|
"jsc-safe-url": "^0.2.2",
|
|
41
41
|
"lodash.throttle": "^4.1.1",
|
|
42
|
-
"metro-babel-transformer": "0.83.
|
|
43
|
-
"metro-cache": "0.83.
|
|
44
|
-
"metro-cache-key": "0.83.
|
|
45
|
-
"metro-config": "0.83.
|
|
46
|
-
"metro-core": "0.83.
|
|
47
|
-
"metro-file-map": "0.83.
|
|
48
|
-
"metro-resolver": "0.83.
|
|
49
|
-
"metro-runtime": "0.83.
|
|
50
|
-
"metro-source-map": "0.83.
|
|
51
|
-
"metro-symbolicate": "0.83.
|
|
52
|
-
"metro-transform-plugins": "0.83.
|
|
53
|
-
"metro-transform-worker": "0.83.
|
|
54
|
-
"mime-types": "^
|
|
42
|
+
"metro-babel-transformer": "0.83.4",
|
|
43
|
+
"metro-cache": "0.83.4",
|
|
44
|
+
"metro-cache-key": "0.83.4",
|
|
45
|
+
"metro-config": "0.83.4",
|
|
46
|
+
"metro-core": "0.83.4",
|
|
47
|
+
"metro-file-map": "0.83.4",
|
|
48
|
+
"metro-resolver": "0.83.4",
|
|
49
|
+
"metro-runtime": "0.83.4",
|
|
50
|
+
"metro-source-map": "0.83.4",
|
|
51
|
+
"metro-symbolicate": "0.83.4",
|
|
52
|
+
"metro-transform-plugins": "0.83.4",
|
|
53
|
+
"metro-transform-worker": "0.83.4",
|
|
54
|
+
"mime-types": "^3.0.1",
|
|
55
55
|
"nullthrows": "^1.1.1",
|
|
56
56
|
"serialize-error": "^2.1.0",
|
|
57
57
|
"source-map": "^0.5.6",
|
|
@@ -65,11 +65,13 @@
|
|
|
65
65
|
"@babel/plugin-transform-runtime": "^7.24.7",
|
|
66
66
|
"@react-native/babel-preset": "0.78.0",
|
|
67
67
|
"@react-native/metro-babel-transformer": "0.78.0",
|
|
68
|
+
"@types/ws": "^7.4.7",
|
|
69
|
+
"@types/yargs": "^17.0.35",
|
|
68
70
|
"babel-jest": "^29.7.0",
|
|
69
71
|
"dedent": "^0.7.0",
|
|
70
72
|
"jest-snapshot": "^29.7.0",
|
|
71
73
|
"jest-snapshot-serializer-raw": "^1.2.0",
|
|
72
|
-
"metro-babel-register": "0.83.
|
|
74
|
+
"metro-babel-register": "0.83.4",
|
|
73
75
|
"metro-memory-fs": "*",
|
|
74
76
|
"mock-req": "^0.2.0",
|
|
75
77
|
"mock-res": "^0.6.0",
|
package/src/Assets.js
CHANGED
|
@@ -17,30 +17,41 @@ var _fs = _interopRequireDefault(require("fs"));
|
|
|
17
17
|
var _imageSize = _interopRequireDefault(require("image-size"));
|
|
18
18
|
var _path = _interopRequireDefault(require("path"));
|
|
19
19
|
function _interopRequireDefault(e) {
|
|
20
|
-
return e && e.__esModule
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
t = new WeakMap();
|
|
26
|
-
return (_getRequireWildcardCache = function (e) {
|
|
27
|
-
return e ? t : r;
|
|
28
|
-
})(e);
|
|
20
|
+
return e && e.__esModule
|
|
21
|
+
? e
|
|
22
|
+
: {
|
|
23
|
+
default: e,
|
|
24
|
+
};
|
|
29
25
|
}
|
|
30
|
-
function _interopRequireWildcard(e,
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
26
|
+
function _interopRequireWildcard(e, t) {
|
|
27
|
+
if ("function" == typeof WeakMap)
|
|
28
|
+
var r = new WeakMap(),
|
|
29
|
+
n = new WeakMap();
|
|
30
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
31
|
+
if (!t && e && e.__esModule) return e;
|
|
32
|
+
var o,
|
|
33
|
+
i,
|
|
34
|
+
f = {
|
|
35
|
+
__proto__: null,
|
|
36
|
+
default: e,
|
|
37
|
+
};
|
|
38
|
+
if (null === e || ("object" != typeof e && "function" != typeof e))
|
|
39
|
+
return f;
|
|
40
|
+
if ((o = t ? n : r)) {
|
|
41
|
+
if (o.has(e)) return o.get(e);
|
|
42
|
+
o.set(e, f);
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
+
for (const t in e)
|
|
45
|
+
"default" !== t &&
|
|
46
|
+
{}.hasOwnProperty.call(e, t) &&
|
|
47
|
+
((i =
|
|
48
|
+
(o = Object.defineProperty) &&
|
|
49
|
+
Object.getOwnPropertyDescriptor(e, t)) &&
|
|
50
|
+
(i.get || i.set)
|
|
51
|
+
? o(f, t, i)
|
|
52
|
+
: (f[t] = e[t]));
|
|
53
|
+
return f;
|
|
54
|
+
})(e, t);
|
|
44
55
|
}
|
|
45
56
|
function isAssetTypeAnImage(type) {
|
|
46
57
|
return (
|
|
@@ -158,7 +169,7 @@ async function getAssetData(
|
|
|
158
169
|
assetPath,
|
|
159
170
|
localPath,
|
|
160
171
|
assetDataPlugins,
|
|
161
|
-
platform
|
|
172
|
+
platform,
|
|
162
173
|
publicPath,
|
|
163
174
|
) {
|
|
164
175
|
let assetUrlPath = localPath.startsWith("..")
|
|
@@ -166,7 +177,7 @@ async function getAssetData(
|
|
|
166
177
|
: _path.default.join(publicPath, _path.default.dirname(localPath));
|
|
167
178
|
assetUrlPath = (0, _pathUtils.normalizePathSeparatorsToPosix)(assetUrlPath);
|
|
168
179
|
const isImage = isAssetTypeAnImage(_path.default.extname(assetPath).slice(1));
|
|
169
|
-
const assetInfo = await getAbsoluteAssetInfo(assetPath, platform);
|
|
180
|
+
const assetInfo = await getAbsoluteAssetInfo(assetPath, platform ?? null);
|
|
170
181
|
const isImageInput = assetInfo.files[0].includes(".zip/")
|
|
171
182
|
? _fs.default.readFileSync(assetInfo.files[0])
|
|
172
183
|
: assetInfo.files[0];
|
|
@@ -203,8 +214,9 @@ async function getAsset(
|
|
|
203
214
|
relativePath,
|
|
204
215
|
projectRoot,
|
|
205
216
|
watchFolders,
|
|
206
|
-
platform
|
|
217
|
+
platform,
|
|
207
218
|
assetExts,
|
|
219
|
+
fileExistsInFileMap,
|
|
208
220
|
) {
|
|
209
221
|
const assetData = AssetPaths.parse(
|
|
210
222
|
relativePath,
|
|
@@ -216,12 +228,20 @@ async function getAsset(
|
|
|
216
228
|
`'${relativePath}' cannot be loaded as its extension is not registered in assetExts`,
|
|
217
229
|
);
|
|
218
230
|
}
|
|
219
|
-
if (
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
231
|
+
if (fileExistsInFileMap != null) {
|
|
232
|
+
if (!fileExistsInFileMap(absolutePath)) {
|
|
233
|
+
throw new Error(
|
|
234
|
+
`'${relativePath}' could not be found, because it is not within the projectRoot or watchFolders, or it is blocked via the resolver.blockList config`,
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
} else {
|
|
238
|
+
if (!pathBelongsToRoots(absolutePath, [projectRoot, ...watchFolders])) {
|
|
239
|
+
throw new Error(
|
|
240
|
+
`'${relativePath}' could not be found, because it cannot be found in the project root or any watch folder`,
|
|
241
|
+
);
|
|
242
|
+
}
|
|
223
243
|
}
|
|
224
|
-
const record = await getAbsoluteAssetRecord(absolutePath, platform);
|
|
244
|
+
const record = await getAbsoluteAssetRecord(absolutePath, platform ?? null);
|
|
225
245
|
for (let i = 0; i < record.scales.length; i++) {
|
|
226
246
|
if (record.scales[i] >= assetData.resolution) {
|
|
227
247
|
return _fs.default.promises.readFile(record.files[i]);
|
package/src/Assets.js.flow
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @flow
|
|
7
|
+
* @flow strict-local
|
|
8
8
|
* @format
|
|
9
9
|
* @oncall react_native
|
|
10
10
|
*/
|
|
@@ -15,6 +15,7 @@ import {normalizePathSeparatorsToPosix} from './lib/pathUtils';
|
|
|
15
15
|
import * as AssetPaths from './node-haste/lib/AssetPaths';
|
|
16
16
|
import crypto from 'crypto';
|
|
17
17
|
import fs from 'fs';
|
|
18
|
+
// $FlowFixMe[untyped-import] image-size
|
|
18
19
|
import getImageSize from 'image-size';
|
|
19
20
|
import path from 'path';
|
|
20
21
|
|
|
@@ -92,7 +93,7 @@ export type AssetDataPlugin = (
|
|
|
92
93
|
|
|
93
94
|
function buildAssetMap(
|
|
94
95
|
dir: string,
|
|
95
|
-
files:
|
|
96
|
+
files: ReadonlyArray<string>,
|
|
96
97
|
platform: ?string,
|
|
97
98
|
): Map<string, {files: Array<string>, scales: Array<number>}> {
|
|
98
99
|
const platforms = new Set(platform != null ? [platform] : []);
|
|
@@ -200,8 +201,8 @@ async function getAbsoluteAssetInfo(
|
|
|
200
201
|
export async function getAssetData(
|
|
201
202
|
assetPath: string,
|
|
202
203
|
localPath: string,
|
|
203
|
-
assetDataPlugins:
|
|
204
|
-
platform: ?string
|
|
204
|
+
assetDataPlugins: ReadonlyArray<string>,
|
|
205
|
+
platform: ?string,
|
|
205
206
|
publicPath: string,
|
|
206
207
|
): Promise<AssetData> {
|
|
207
208
|
// If the path of the asset is outside of the projectRoot, we don't want to
|
|
@@ -215,7 +216,7 @@ export async function getAssetData(
|
|
|
215
216
|
assetUrlPath = normalizePathSeparatorsToPosix(assetUrlPath);
|
|
216
217
|
|
|
217
218
|
const isImage = isAssetTypeAnImage(path.extname(assetPath).slice(1));
|
|
218
|
-
const assetInfo = await getAbsoluteAssetInfo(assetPath, platform);
|
|
219
|
+
const assetInfo = await getAbsoluteAssetInfo(assetPath, platform ?? null);
|
|
219
220
|
|
|
220
221
|
const isImageInput = assetInfo.files[0].includes('.zip/')
|
|
221
222
|
? fs.readFileSync(assetInfo.files[0])
|
|
@@ -239,7 +240,7 @@ export async function getAssetData(
|
|
|
239
240
|
}
|
|
240
241
|
|
|
241
242
|
async function applyAssetDataPlugins(
|
|
242
|
-
assetDataPlugins:
|
|
243
|
+
assetDataPlugins: ReadonlyArray<string>,
|
|
243
244
|
assetData: AssetData,
|
|
244
245
|
): Promise<AssetData> {
|
|
245
246
|
if (!assetDataPlugins.length) {
|
|
@@ -279,9 +280,10 @@ export async function getAssetFiles(
|
|
|
279
280
|
export async function getAsset(
|
|
280
281
|
relativePath: string,
|
|
281
282
|
projectRoot: string,
|
|
282
|
-
watchFolders:
|
|
283
|
-
platform: ?string
|
|
284
|
-
assetExts:
|
|
283
|
+
watchFolders: ReadonlyArray<string>,
|
|
284
|
+
platform: ?string,
|
|
285
|
+
assetExts: ReadonlyArray<string>,
|
|
286
|
+
fileExistsInFileMap?: (absolutePath: string) => boolean,
|
|
285
287
|
): Promise<Buffer> {
|
|
286
288
|
const assetData = AssetPaths.parse(
|
|
287
289
|
relativePath,
|
|
@@ -296,13 +298,22 @@ export async function getAsset(
|
|
|
296
298
|
);
|
|
297
299
|
}
|
|
298
300
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
301
|
+
// NOTE: If fileExistsInFileMap is not provided, we fall back to pathBelongsToRoots for backward compatibility, as getAsset is part of the public API.
|
|
302
|
+
if (fileExistsInFileMap != null) {
|
|
303
|
+
if (!fileExistsInFileMap(absolutePath)) {
|
|
304
|
+
throw new Error(
|
|
305
|
+
`'${relativePath}' could not be found, because it is not within the projectRoot or watchFolders, or it is blocked via the resolver.blockList config`,
|
|
306
|
+
);
|
|
307
|
+
}
|
|
308
|
+
} else {
|
|
309
|
+
if (!pathBelongsToRoots(absolutePath, [projectRoot, ...watchFolders])) {
|
|
310
|
+
throw new Error(
|
|
311
|
+
`'${relativePath}' could not be found, because it cannot be found in the project root or any watch folder`,
|
|
312
|
+
);
|
|
313
|
+
}
|
|
303
314
|
}
|
|
304
315
|
|
|
305
|
-
const record = await getAbsoluteAssetRecord(absolutePath, platform);
|
|
316
|
+
const record = await getAbsoluteAssetRecord(absolutePath, platform ?? null);
|
|
306
317
|
|
|
307
318
|
for (let i = 0; i < record.scales.length; i++) {
|
|
308
319
|
if (record.scales[i] >= assetData.resolution) {
|
|
@@ -315,7 +326,7 @@ export async function getAsset(
|
|
|
315
326
|
|
|
316
327
|
function pathBelongsToRoots(
|
|
317
328
|
pathToCheck: string,
|
|
318
|
-
roots:
|
|
329
|
+
roots: ReadonlyArray<string>,
|
|
319
330
|
): boolean {
|
|
320
331
|
for (const rootFolder of roots) {
|
|
321
332
|
if (pathToCheck.startsWith(path.resolve(rootFolder))) {
|
package/src/Bundler/util.js
CHANGED
|
@@ -9,30 +9,41 @@ var babylon = _interopRequireWildcard(require("@babel/parser"));
|
|
|
9
9
|
var _template = _interopRequireDefault(require("@babel/template"));
|
|
10
10
|
var babelTypes = _interopRequireWildcard(require("@babel/types"));
|
|
11
11
|
function _interopRequireDefault(e) {
|
|
12
|
-
return e && e.__esModule
|
|
12
|
+
return e && e.__esModule
|
|
13
|
+
? e
|
|
14
|
+
: {
|
|
15
|
+
default: e,
|
|
16
|
+
};
|
|
13
17
|
}
|
|
14
|
-
function
|
|
15
|
-
if ("function"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
|
|
32
|
-
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
33
|
-
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : (n[u] = e[u]);
|
|
18
|
+
function _interopRequireWildcard(e, t) {
|
|
19
|
+
if ("function" == typeof WeakMap)
|
|
20
|
+
var r = new WeakMap(),
|
|
21
|
+
n = new WeakMap();
|
|
22
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
23
|
+
if (!t && e && e.__esModule) return e;
|
|
24
|
+
var o,
|
|
25
|
+
i,
|
|
26
|
+
f = {
|
|
27
|
+
__proto__: null,
|
|
28
|
+
default: e,
|
|
29
|
+
};
|
|
30
|
+
if (null === e || ("object" != typeof e && "function" != typeof e))
|
|
31
|
+
return f;
|
|
32
|
+
if ((o = t ? n : r)) {
|
|
33
|
+
if (o.has(e)) return o.get(e);
|
|
34
|
+
o.set(e, f);
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
+
for (const t in e)
|
|
37
|
+
"default" !== t &&
|
|
38
|
+
{}.hasOwnProperty.call(e, t) &&
|
|
39
|
+
((i =
|
|
40
|
+
(o = Object.defineProperty) &&
|
|
41
|
+
Object.getOwnPropertyDescriptor(e, t)) &&
|
|
42
|
+
(i.get || i.set)
|
|
43
|
+
? o(f, t, i)
|
|
44
|
+
: (f[t] = e[t]));
|
|
45
|
+
return f;
|
|
46
|
+
})(e, t);
|
|
36
47
|
}
|
|
37
48
|
const assetPropertyBlockList = new Set(["files", "fileSystemLocation", "path"]);
|
|
38
49
|
function generateAssetCodeFileAst(assetRegistryPath, assetDescriptor) {
|
package/src/Bundler/util.js.flow
CHANGED
|
@@ -67,8 +67,8 @@ function filterObject(
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
export function createRamBundleGroups<T: ModuleTransportLike>(
|
|
70
|
-
ramGroups:
|
|
71
|
-
groupableModules:
|
|
70
|
+
ramGroups: ReadonlyArray<string>,
|
|
71
|
+
groupableModules: ReadonlyArray<T>,
|
|
72
72
|
subtree: SubTree<T>,
|
|
73
73
|
): Map<number, Set<number>> {
|
|
74
74
|
// build two maps that allow to lookup module data
|
package/src/Bundler.js
CHANGED
|
@@ -11,7 +11,11 @@ var _DependencyGraph = _interopRequireDefault(
|
|
|
11
11
|
require("./node-haste/DependencyGraph"),
|
|
12
12
|
);
|
|
13
13
|
function _interopRequireDefault(e) {
|
|
14
|
-
return e && e.__esModule
|
|
14
|
+
return e && e.__esModule
|
|
15
|
+
? e
|
|
16
|
+
: {
|
|
17
|
+
default: e,
|
|
18
|
+
};
|
|
15
19
|
}
|
|
16
20
|
class Bundler {
|
|
17
21
|
constructor(config, options) {
|
package/src/Bundler.js.flow
CHANGED
|
@@ -17,7 +17,7 @@ import type {ConfigT} from 'metro-config';
|
|
|
17
17
|
import Transformer from './DeltaBundler/Transformer';
|
|
18
18
|
import DependencyGraph from './node-haste/DependencyGraph';
|
|
19
19
|
|
|
20
|
-
export type BundlerOptions =
|
|
20
|
+
export type BundlerOptions = Readonly<{
|
|
21
21
|
hasReducedPerformance?: boolean,
|
|
22
22
|
watch?: boolean,
|
|
23
23
|
}>;
|
|
@@ -8,7 +8,11 @@ var _Graph = require("./Graph");
|
|
|
8
8
|
var _events = _interopRequireDefault(require("events"));
|
|
9
9
|
var _path = _interopRequireDefault(require("path"));
|
|
10
10
|
function _interopRequireDefault(e) {
|
|
11
|
-
return e && e.__esModule
|
|
11
|
+
return e && e.__esModule
|
|
12
|
+
? e
|
|
13
|
+
: {
|
|
14
|
+
default: e,
|
|
15
|
+
};
|
|
12
16
|
}
|
|
13
17
|
const debug = require("debug")("Metro:DeltaCalculator");
|
|
14
18
|
class DeltaCalculator extends _events.default {
|
|
@@ -84,8 +88,8 @@ class DeltaCalculator extends _events.default {
|
|
|
84
88
|
});
|
|
85
89
|
return {
|
|
86
90
|
added: this._graph.dependencies,
|
|
87
|
-
modified: new Map(),
|
|
88
91
|
deleted: new Set(),
|
|
92
|
+
modified: new Map(),
|
|
89
93
|
reset: true,
|
|
90
94
|
};
|
|
91
95
|
}
|
|
@@ -157,8 +161,8 @@ class DeltaCalculator extends _events.default {
|
|
|
157
161
|
);
|
|
158
162
|
return {
|
|
159
163
|
added,
|
|
160
|
-
modified: new Map(),
|
|
161
164
|
deleted: new Set(),
|
|
165
|
+
modified: new Map(),
|
|
162
166
|
reset: true,
|
|
163
167
|
};
|
|
164
168
|
}
|
|
@@ -182,8 +186,8 @@ class DeltaCalculator extends _events.default {
|
|
|
182
186
|
if (modifiedDependencies.length === 0) {
|
|
183
187
|
return {
|
|
184
188
|
added: new Map(),
|
|
185
|
-
modified: new Map(),
|
|
186
189
|
deleted: new Set(),
|
|
190
|
+
modified: new Map(),
|
|
187
191
|
reset: false,
|
|
188
192
|
};
|
|
189
193
|
}
|
|
@@ -200,8 +204,8 @@ class DeltaCalculator extends _events.default {
|
|
|
200
204
|
);
|
|
201
205
|
return {
|
|
202
206
|
added,
|
|
203
|
-
modified,
|
|
204
207
|
deleted,
|
|
208
|
+
modified,
|
|
205
209
|
reset: false,
|
|
206
210
|
};
|
|
207
211
|
}
|
|
@@ -34,12 +34,12 @@ export default class DeltaCalculator<T> extends EventEmitter {
|
|
|
34
34
|
_deletedFiles: Set<string> = new Set();
|
|
35
35
|
_modifiedFiles: Set<string> = new Set();
|
|
36
36
|
_addedFiles: Set<string> = new Set();
|
|
37
|
-
_requiresReset = false;
|
|
37
|
+
_requiresReset: boolean = false;
|
|
38
38
|
|
|
39
39
|
_graph: Graph<T>;
|
|
40
40
|
|
|
41
41
|
constructor(
|
|
42
|
-
entryPoints:
|
|
42
|
+
entryPoints: ReadonlySet<string>,
|
|
43
43
|
changeEventSource: EventEmitter,
|
|
44
44
|
options: Options<T>,
|
|
45
45
|
) {
|
|
@@ -154,8 +154,8 @@ export default class DeltaCalculator<T> extends EventEmitter {
|
|
|
154
154
|
|
|
155
155
|
return {
|
|
156
156
|
added: this._graph.dependencies,
|
|
157
|
-
modified: new Map(),
|
|
158
157
|
deleted: new Set(),
|
|
158
|
+
modified: new Map(),
|
|
159
159
|
reset: true,
|
|
160
160
|
};
|
|
161
161
|
}
|
|
@@ -186,7 +186,7 @@ export default class DeltaCalculator<T> extends EventEmitter {
|
|
|
186
186
|
_handleFileChange = (
|
|
187
187
|
{type, filePath, metadata}: ChangeEvent['eventsQueue'][number],
|
|
188
188
|
logger: ?RootPerfLogger,
|
|
189
|
-
):
|
|
189
|
+
): unknown => {
|
|
190
190
|
debug('Handling %s: %s (type: %s)', type, filePath, metadata.type);
|
|
191
191
|
if (
|
|
192
192
|
metadata.type === 'l' ||
|
|
@@ -234,7 +234,7 @@ export default class DeltaCalculator<T> extends EventEmitter {
|
|
|
234
234
|
this._addedFiles.delete(filePath);
|
|
235
235
|
break;
|
|
236
236
|
default:
|
|
237
|
-
|
|
237
|
+
nextState as empty;
|
|
238
238
|
}
|
|
239
239
|
|
|
240
240
|
// Notify users that there is a change in some of the bundle files. This
|
|
@@ -256,8 +256,8 @@ export default class DeltaCalculator<T> extends EventEmitter {
|
|
|
256
256
|
|
|
257
257
|
return {
|
|
258
258
|
added,
|
|
259
|
-
modified: new Map(),
|
|
260
259
|
deleted: new Set(),
|
|
260
|
+
modified: new Map(),
|
|
261
261
|
reset: true,
|
|
262
262
|
};
|
|
263
263
|
}
|
|
@@ -297,8 +297,8 @@ export default class DeltaCalculator<T> extends EventEmitter {
|
|
|
297
297
|
if (modifiedDependencies.length === 0) {
|
|
298
298
|
return {
|
|
299
299
|
added: new Map(),
|
|
300
|
-
modified: new Map(),
|
|
301
300
|
deleted: new Set(),
|
|
301
|
+
modified: new Map(),
|
|
302
302
|
reset: false,
|
|
303
303
|
};
|
|
304
304
|
}
|
|
@@ -317,8 +317,8 @@ export default class DeltaCalculator<T> extends EventEmitter {
|
|
|
317
317
|
|
|
318
318
|
return {
|
|
319
319
|
added,
|
|
320
|
-
modified,
|
|
321
320
|
deleted,
|
|
321
|
+
modified,
|
|
322
322
|
reset: false,
|
|
323
323
|
};
|
|
324
324
|
}
|
|
@@ -11,18 +11,22 @@ var _buildSubgraph = require("./buildSubgraph");
|
|
|
11
11
|
var _invariant = _interopRequireDefault(require("invariant"));
|
|
12
12
|
var _nullthrows = _interopRequireDefault(require("nullthrows"));
|
|
13
13
|
function _interopRequireDefault(e) {
|
|
14
|
-
return e && e.__esModule
|
|
14
|
+
return e && e.__esModule
|
|
15
|
+
? e
|
|
16
|
+
: {
|
|
17
|
+
default: e,
|
|
18
|
+
};
|
|
15
19
|
}
|
|
16
20
|
function getInternalOptions({ transform, resolve, onProgress, lazy, shallow }) {
|
|
17
21
|
let numProcessed = 0;
|
|
18
22
|
let total = 0;
|
|
19
23
|
return {
|
|
20
24
|
lazy,
|
|
21
|
-
transform,
|
|
22
|
-
resolve,
|
|
23
25
|
onDependencyAdd: () => onProgress && onProgress(numProcessed, ++total),
|
|
24
26
|
onDependencyAdded: () => onProgress && onProgress(++numProcessed, total),
|
|
27
|
+
resolve,
|
|
25
28
|
shallow,
|
|
29
|
+
transform,
|
|
26
30
|
};
|
|
27
31
|
}
|
|
28
32
|
function isWeakOrLazy(dependency, options) {
|
|
@@ -88,11 +92,11 @@ class Graph {
|
|
|
88
92
|
} catch (error) {
|
|
89
93
|
const rollbackDelta = {
|
|
90
94
|
added: delta.added,
|
|
95
|
+
baseModuleData: new Map(),
|
|
91
96
|
deleted: delta.deleted,
|
|
97
|
+
errors: new Map(),
|
|
92
98
|
touched: new Set(),
|
|
93
99
|
updatedModuleData: delta.baseModuleData,
|
|
94
|
-
baseModuleData: new Map(),
|
|
95
|
-
errors: new Map(),
|
|
96
100
|
};
|
|
97
101
|
for (const modified of modifiedPathsInBaseGraph) {
|
|
98
102
|
const module = this.dependencies.get(modified);
|
|
@@ -127,8 +131,8 @@ class Graph {
|
|
|
127
131
|
}
|
|
128
132
|
return {
|
|
129
133
|
added,
|
|
130
|
-
modified,
|
|
131
134
|
deleted: delta.deleted,
|
|
135
|
+
modified,
|
|
132
136
|
};
|
|
133
137
|
}
|
|
134
138
|
async initialTraverseDependencies(options) {
|
|
@@ -155,8 +159,8 @@ class Graph {
|
|
|
155
159
|
});
|
|
156
160
|
return {
|
|
157
161
|
added: this.dependencies,
|
|
158
|
-
modified: new Map(),
|
|
159
162
|
deleted: new Set(),
|
|
163
|
+
modified: new Map(),
|
|
160
164
|
};
|
|
161
165
|
}
|
|
162
166
|
async _buildDelta(pathsToVisit, options, moduleFilter) {
|
|
@@ -165,27 +169,27 @@ class Graph {
|
|
|
165
169
|
this.#resolvedContexts,
|
|
166
170
|
{
|
|
167
171
|
resolve: options.resolve,
|
|
168
|
-
transform: async (absolutePath, requireContext) => {
|
|
169
|
-
options.onDependencyAdd();
|
|
170
|
-
const result = await options.transform(absolutePath, requireContext);
|
|
171
|
-
options.onDependencyAdded();
|
|
172
|
-
return result;
|
|
173
|
-
},
|
|
174
172
|
shouldTraverse: (dependency) => {
|
|
175
173
|
if (options.shallow || isWeakOrLazy(dependency, options)) {
|
|
176
174
|
return false;
|
|
177
175
|
}
|
|
178
176
|
return moduleFilter == null || moduleFilter(dependency.absolutePath);
|
|
179
177
|
},
|
|
178
|
+
transform: async (absolutePath, requireContext) => {
|
|
179
|
+
options.onDependencyAdd();
|
|
180
|
+
const result = await options.transform(absolutePath, requireContext);
|
|
181
|
+
options.onDependencyAdded();
|
|
182
|
+
return result;
|
|
183
|
+
},
|
|
180
184
|
},
|
|
181
185
|
);
|
|
182
186
|
return {
|
|
183
187
|
added: new Set(),
|
|
184
|
-
touched: new Set(),
|
|
185
|
-
deleted: new Set(),
|
|
186
|
-
updatedModuleData: subGraph.moduleData,
|
|
187
188
|
baseModuleData: new Map(),
|
|
189
|
+
deleted: new Set(),
|
|
188
190
|
errors: subGraph.errors,
|
|
191
|
+
touched: new Set(),
|
|
192
|
+
updatedModuleData: subGraph.moduleData,
|
|
189
193
|
};
|
|
190
194
|
}
|
|
191
195
|
_recursivelyCommitModule(
|
|
@@ -462,9 +466,9 @@ class Graph {
|
|
|
462
466
|
}
|
|
463
467
|
return {
|
|
464
468
|
dependencies: new Map(dependencies),
|
|
465
|
-
resolvedContexts,
|
|
466
469
|
getSource,
|
|
467
470
|
output,
|
|
471
|
+
resolvedContexts,
|
|
468
472
|
unstable_transformResultKey,
|
|
469
473
|
};
|
|
470
474
|
}
|