metro 0.83.0 → 0.83.2
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 +16 -16
- package/src/Assets.js +68 -42
- package/src/Assets.js.flow +13 -24
- package/src/Bundler/util.js +40 -17
- package/src/Bundler/util.js.flow +6 -13
- package/src/Bundler.js +17 -6
- package/src/Bundler.js.flow +3 -7
- package/src/DeltaBundler/DeltaCalculator.js +15 -15
- package/src/DeltaBundler/DeltaCalculator.js.flow +4 -7
- package/src/DeltaBundler/Graph.js +45 -40
- package/src/DeltaBundler/Graph.js.flow +3 -4
- package/src/DeltaBundler/Serializers/baseJSBundle.js +24 -10
- package/src/DeltaBundler/Serializers/baseJSBundle.js.flow +6 -9
- package/src/DeltaBundler/Serializers/getAllFiles.js +9 -6
- package/src/DeltaBundler/Serializers/getAllFiles.js.flow +4 -8
- package/src/DeltaBundler/Serializers/getAssets.js +18 -11
- package/src/DeltaBundler/Serializers/getAssets.js.flow +5 -9
- package/src/DeltaBundler/Serializers/getExplodedSourceMap.d.ts +26 -0
- package/src/DeltaBundler/Serializers/getExplodedSourceMap.js +7 -6
- package/src/DeltaBundler/Serializers/getExplodedSourceMap.js.flow +3 -9
- package/src/DeltaBundler/Serializers/getRamBundleInfo.js +40 -23
- package/src/DeltaBundler/Serializers/getRamBundleInfo.js.flow +11 -18
- package/src/DeltaBundler/Serializers/helpers/getInlineSourceMappingURL.js +4 -1
- package/src/DeltaBundler/Serializers/helpers/getInlineSourceMappingURL.js.flow +1 -5
- package/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js +7 -4
- package/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js.flow +3 -7
- package/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies.js +4 -1
- package/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies.js.flow +2 -6
- package/src/DeltaBundler/Serializers/helpers/js.js +65 -31
- package/src/DeltaBundler/Serializers/helpers/js.js.flow +21 -21
- package/src/DeltaBundler/Serializers/helpers/processModules.js +8 -5
- package/src/DeltaBundler/Serializers/helpers/processModules.js.flow +3 -7
- package/src/DeltaBundler/Serializers/hmrJSBundle.js +70 -25
- package/src/DeltaBundler/Serializers/hmrJSBundle.js.flow +43 -33
- package/src/DeltaBundler/Serializers/sourceMapGenerator.js +19 -16
- package/src/DeltaBundler/Serializers/sourceMapGenerator.js.flow +6 -14
- package/src/DeltaBundler/Serializers/sourceMapObject.js +12 -10
- package/src/DeltaBundler/Serializers/sourceMapObject.js.flow +4 -9
- package/src/DeltaBundler/Serializers/sourceMapString.js +14 -12
- package/src/DeltaBundler/Serializers/sourceMapString.js.flow +4 -9
- package/src/DeltaBundler/Transformer.js +32 -27
- package/src/DeltaBundler/Transformer.js.flow +10 -17
- package/src/DeltaBundler/Worker.flow.js +25 -18
- package/src/DeltaBundler/Worker.flow.js.flow +12 -18
- package/src/DeltaBundler/Worker.js.flow +2 -0
- package/src/DeltaBundler/WorkerFarm.js +13 -11
- package/src/DeltaBundler/WorkerFarm.js.flow +7 -9
- package/src/DeltaBundler/buildSubgraph.js +13 -17
- package/src/DeltaBundler/buildSubgraph.js.flow +1 -1
- package/src/DeltaBundler/getTransformCacheKey.js +12 -6
- package/src/DeltaBundler/getTransformCacheKey.js.flow +5 -7
- package/src/DeltaBundler/mergeDeltas.js +4 -1
- package/src/DeltaBundler/mergeDeltas.js.flow +5 -6
- package/src/DeltaBundler/types.d.ts +4 -1
- package/src/DeltaBundler/{types.flow.js → types.js} +1 -5
- package/src/DeltaBundler/{types.flow.js.flow → types.js.flow} +5 -3
- package/src/DeltaBundler.js +15 -6
- package/src/DeltaBundler.js.flow +4 -8
- package/src/HmrServer.js +116 -68
- package/src/HmrServer.js.flow +41 -52
- package/src/IncrementalBundler/GraphNotFoundError.js +5 -1
- package/src/IncrementalBundler/GraphNotFoundError.js.flow +1 -5
- package/src/IncrementalBundler/ResourceNotFoundError.js +5 -1
- package/src/IncrementalBundler/ResourceNotFoundError.js.flow +1 -5
- package/src/IncrementalBundler/RevisionNotFoundError.js +5 -1
- package/src/IncrementalBundler/RevisionNotFoundError.js.flow +1 -5
- package/src/IncrementalBundler.js +71 -35
- package/src/IncrementalBundler.js.flow +12 -16
- package/src/ModuleGraph/test-helpers.js +19 -14
- package/src/ModuleGraph/worker/JsFileWrapping.js +22 -29
- package/src/ModuleGraph/worker/JsFileWrapping.js.flow +1 -10
- package/src/ModuleGraph/worker/collectDependencies.js +81 -52
- package/src/ModuleGraph/worker/collectDependencies.js.flow +15 -22
- package/src/ModuleGraph/worker/generateImportNames.js +12 -6
- package/src/ModuleGraph/worker/generateImportNames.js.flow +3 -7
- package/src/ModuleGraph/worker/importLocationsPlugin.js +5 -4
- package/src/ModuleGraph/worker/importLocationsPlugin.js.flow +2 -4
- package/src/Server/MultipartResponse.js +11 -4
- package/src/Server/MultipartResponse.js.flow +2 -5
- package/src/Server/symbolicate.d.ts +31 -0
- package/src/Server/symbolicate.js +15 -16
- package/src/Server/symbolicate.js.flow +6 -16
- package/src/Server.d.ts +0 -1
- package/src/Server.js +298 -191
- package/src/Server.js.flow +136 -99
- package/src/cli-utils.js +13 -4
- package/src/cli-utils.js.flow +3 -5
- package/src/cli.js.flow +2 -0
- package/src/commands/build.js +18 -15
- package/src/commands/build.js.flow +6 -6
- package/src/commands/dependencies.js +26 -16
- package/src/commands/dependencies.js.flow +7 -9
- package/src/commands/serve.js +16 -11
- package/src/commands/serve.js.flow +5 -6
- package/src/index.d.ts +26 -3
- package/src/index.flow.js +162 -72
- package/src/index.flow.js.flow +60 -47
- package/src/index.js.flow +2 -0
- package/src/integration_tests/basic_bundle/TestBundle.js.flow +2 -1
- package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-import.js +1 -5
- package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-import.js +1 -5
- package/src/integration_tests/basic_bundle/import-export/index.js +5 -13
- package/src/integration_tests/basic_bundle/require-context/mode-eager.js +2 -2
- package/src/integration_tests/basic_bundle/require-context/mode-lazy-once.js +2 -2
- package/src/integration_tests/basic_bundle/require-context/mode-lazy.js +2 -2
- package/src/integration_tests/basic_bundle/require-context/mode-sync.js +1 -1
- package/src/integration_tests/basic_bundle/require-context/utils.js +1 -1
- package/src/integration_tests/execBundle.js +7 -4
- package/src/integration_tests/execBundle.js.flow +1 -3
- package/src/integration_tests/metro.config.js +3 -3
- package/src/lib/BatchProcessor.js +15 -5
- package/src/lib/BatchProcessor.js.flow +2 -6
- package/src/lib/CountingSet.js.flow +2 -2
- package/src/lib/JsonReporter.js +6 -2
- package/src/lib/JsonReporter.js.flow +1 -5
- package/src/lib/RamBundleParser.js +12 -3
- package/src/lib/RamBundleParser.js.flow +2 -6
- package/src/lib/TerminalReporter.js +95 -56
- package/src/lib/TerminalReporter.js.flow +9 -12
- package/src/lib/bundleToString.js +4 -1
- package/src/lib/bundleToString.js.flow +2 -9
- package/src/lib/contextModule.js +3 -7
- package/src/lib/contextModuleTemplates.js +9 -19
- package/src/lib/countLines.js +5 -1
- package/src/lib/countLines.js.flow +1 -3
- package/src/lib/createWebsocketServer.js +7 -7
- package/src/lib/createWebsocketServer.js.flow +4 -4
- package/src/lib/debounceAsyncQueue.js +4 -1
- package/src/lib/debounceAsyncQueue.js.flow +1 -5
- package/src/lib/formatBundlingError.js +32 -22
- package/src/lib/formatBundlingError.js.flow +18 -20
- package/src/lib/getAppendScripts.js +20 -20
- package/src/lib/getAppendScripts.js.flow +9 -13
- package/src/lib/getGraphId.js +12 -6
- package/src/lib/getGraphId.js.flow +4 -10
- package/src/lib/getPreludeCode.js +7 -10
- package/src/lib/getPreludeCode.js.flow +2 -6
- package/src/lib/getPrependedScripts.js +40 -16
- package/src/lib/getPrependedScripts.js.flow +8 -13
- package/src/lib/isResolvedDependency.js.flow +1 -1
- package/src/lib/logToConsole.js +18 -12
- package/src/lib/logToConsole.js.flow +5 -14
- package/src/lib/parseBundleOptionsFromBundleRequestUrl.js +144 -0
- package/src/lib/parseBundleOptionsFromBundleRequestUrl.js.flow +146 -0
- package/src/lib/parseCustomResolverOptions.js +8 -6
- package/src/lib/parseCustomResolverOptions.js.flow +6 -12
- package/src/lib/parseCustomTransformOptions.js +8 -6
- package/src/lib/parseCustomTransformOptions.js.flow +11 -14
- package/src/lib/parseJsonBody.js +4 -1
- package/src/lib/parseJsonBody.js.flow +1 -3
- package/src/lib/pathUtils.js +34 -0
- package/src/lib/pathUtils.js.flow +16 -0
- package/src/lib/relativizeSourceMap.js +12 -3
- package/src/lib/relativizeSourceMap.js.flow +2 -6
- package/src/lib/reporting.js +25 -19
- package/src/lib/reporting.js.flow +6 -16
- package/src/lib/splitBundleOptions.js +4 -2
- package/src/lib/splitBundleOptions.js.flow +4 -7
- package/src/lib/transformHelpers.js +19 -25
- package/src/lib/transformHelpers.js.flow +5 -15
- package/src/node-haste/DependencyGraph/ModuleResolution.js +75 -57
- package/src/node-haste/DependencyGraph/ModuleResolution.js.flow +28 -44
- package/src/node-haste/DependencyGraph/createFileMap.js +15 -13
- package/src/node-haste/DependencyGraph/createFileMap.js.flow +2 -5
- package/src/node-haste/DependencyGraph.js +61 -45
- package/src/node-haste/DependencyGraph.js.flow +34 -31
- package/src/node-haste/Package.js +13 -6
- package/src/node-haste/Package.js.flow +3 -7
- package/src/node-haste/{ModuleCache.js → PackageCache.js} +11 -19
- package/src/node-haste/{ModuleCache.js.flow → PackageCache.js.flow} +2 -30
- package/src/node-haste/lib/AssetPaths.js +14 -8
- package/src/node-haste/lib/AssetPaths.js.flow +7 -8
- package/src/node-haste/lib/parsePlatformFilePath.js +10 -4
- package/src/node-haste/lib/parsePlatformFilePath.js.flow +2 -6
- package/src/shared/output/RamBundle/as-assets.js +42 -22
- package/src/shared/output/RamBundle/as-assets.js.flow +12 -15
- package/src/shared/output/RamBundle/as-indexed-file.js +33 -23
- package/src/shared/output/RamBundle/as-indexed-file.js.flow +10 -16
- package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js +11 -10
- package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js.flow +4 -6
- package/src/shared/output/RamBundle/magic-number.js +5 -1
- package/src/shared/output/RamBundle/magic-number.js.flow +1 -3
- package/src/shared/output/RamBundle/util.js +21 -18
- package/src/shared/output/RamBundle/util.js.flow +4 -6
- package/src/shared/output/RamBundle/write-sourcemap.js +9 -3
- package/src/shared/output/RamBundle/write-sourcemap.js.flow +2 -6
- package/src/shared/output/RamBundle.js +16 -9
- package/src/shared/output/RamBundle.js.flow +8 -12
- package/src/shared/output/bundle.flow.js +37 -13
- package/src/shared/output/bundle.flow.js.flow +24 -12
- package/src/shared/output/bundle.js.flow +2 -0
- package/src/shared/output/meta.js +16 -9
- package/src/shared/output/meta.js.flow +3 -5
- package/src/shared/output/unbundle.js +14 -1
- package/src/shared/output/unbundle.js.flow +1 -3
- package/src/shared/output/writeFile.js +11 -4
- package/src/shared/output/writeFile.js.flow +3 -5
- package/src/shared/types.d.ts +0 -1
- package/src/shared/{types.flow.js.flow → types.js.flow} +16 -17
- package/src/lib/createModuleIdFactory.js +0 -15
- package/src/lib/createModuleIdFactory.js.flow +0 -27
- package/src/lib/getMaxWorkers.js +0 -9
- package/src/lib/getMaxWorkers.js.flow +0 -22
- package/src/lib/parseOptionsFromUrl.js +0 -62
- package/src/lib/parseOptionsFromUrl.js.flow +0 -97
- package/src/node-haste/Module.js +0 -24
- package/src/node-haste/Module.js.flow +0 -41
- /package/src/shared/{types.flow.js → types.js} +0 -0
|
@@ -9,27 +9,27 @@
|
|
|
9
9
|
* @oncall react_native
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
'use strict';
|
|
13
|
-
|
|
14
12
|
import type {TransformResult, TransformResultWithSource} from '../DeltaBundler';
|
|
15
13
|
import type {TransformerConfig, TransformOptions} from './Worker';
|
|
16
14
|
import type {ConfigT} from 'metro-config';
|
|
17
15
|
|
|
16
|
+
import {normalizePathSeparatorsToPosix} from '../lib/pathUtils';
|
|
17
|
+
import getTransformCacheKey from './getTransformCacheKey';
|
|
18
|
+
import WorkerFarm from './WorkerFarm';
|
|
19
|
+
import assert from 'assert';
|
|
18
20
|
import crypto from 'crypto';
|
|
21
|
+
import fs from 'fs';
|
|
22
|
+
import {Cache, stableHash} from 'metro-cache';
|
|
23
|
+
import path from 'path';
|
|
19
24
|
|
|
20
|
-
|
|
21
|
-
const WorkerFarm = require('./WorkerFarm');
|
|
22
|
-
const assert = require('assert');
|
|
25
|
+
// eslint-disable-next-line import/no-commonjs
|
|
23
26
|
const debug = require('debug')('Metro:Transformer');
|
|
24
|
-
const fs = require('fs');
|
|
25
|
-
const {Cache, stableHash} = require('metro-cache');
|
|
26
|
-
const path = require('path');
|
|
27
27
|
|
|
28
28
|
type GetOrComputeSha1Fn = string => Promise<
|
|
29
29
|
$ReadOnly<{content?: Buffer, sha1: string}>,
|
|
30
30
|
>;
|
|
31
31
|
|
|
32
|
-
class Transformer {
|
|
32
|
+
export default class Transformer {
|
|
33
33
|
_config: ConfigT;
|
|
34
34
|
_cache: Cache<TransformResult<>>;
|
|
35
35
|
_baseHash: string;
|
|
@@ -87,14 +87,12 @@ class Transformer {
|
|
|
87
87
|
customTransformOptions,
|
|
88
88
|
dev,
|
|
89
89
|
experimentalImportSupport,
|
|
90
|
-
hot,
|
|
91
90
|
inlinePlatform,
|
|
92
91
|
inlineRequires,
|
|
93
92
|
minify,
|
|
94
93
|
nonInlinedRequires,
|
|
95
94
|
platform,
|
|
96
95
|
type,
|
|
97
|
-
unstable_disableES6Transforms,
|
|
98
96
|
unstable_transformProfile,
|
|
99
97
|
unstable_memoizeInlineRequires,
|
|
100
98
|
unstable_nonMemoizedInlineRequires,
|
|
@@ -119,19 +117,16 @@ class Transformer {
|
|
|
119
117
|
// Project-relative, posix-separated path for portability. Necessary in
|
|
120
118
|
// addition to content hash because transformers receive path as an
|
|
121
119
|
// input, and may apply e.g. extension-based logic.
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
normalizePathSeparatorsToPosix(localPath),
|
|
124
121
|
customTransformOptions,
|
|
125
122
|
dev,
|
|
126
123
|
experimentalImportSupport,
|
|
127
|
-
hot,
|
|
128
124
|
inlinePlatform,
|
|
129
125
|
inlineRequires,
|
|
130
126
|
minify,
|
|
131
127
|
nonInlinedRequires,
|
|
132
128
|
platform,
|
|
133
129
|
type,
|
|
134
|
-
unstable_disableES6Transforms,
|
|
135
130
|
unstable_memoizeInlineRequires,
|
|
136
131
|
unstable_nonMemoizedInlineRequires,
|
|
137
132
|
unstable_transformProfile,
|
|
@@ -212,5 +207,3 @@ function verifyRootExists(root: string): void {
|
|
|
212
207
|
// Verify that the root exists.
|
|
213
208
|
assert(fs.statSync(root).isDirectory(), 'Root has to be a valid directory');
|
|
214
209
|
}
|
|
215
|
-
|
|
216
|
-
module.exports = Transformer;
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.transform = void 0;
|
|
7
|
+
var _traverse = _interopRequireDefault(require("@babel/traverse"));
|
|
8
|
+
var _crypto = _interopRequireDefault(require("crypto"));
|
|
9
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
10
|
+
var _path = _interopRequireDefault(require("path"));
|
|
11
|
+
function _interopRequireDefault(e) {
|
|
12
|
+
return e && e.__esModule ? e : { default: e };
|
|
13
|
+
}
|
|
7
14
|
function asDeserializedBuffer(value) {
|
|
8
15
|
if (Buffer.isBuffer(value)) {
|
|
9
16
|
return value;
|
|
@@ -16,34 +23,37 @@ function asDeserializedBuffer(value) {
|
|
|
16
23
|
}
|
|
17
24
|
return null;
|
|
18
25
|
}
|
|
19
|
-
|
|
26
|
+
const transform = (
|
|
20
27
|
filename,
|
|
21
28
|
transformOptions,
|
|
22
29
|
projectRoot,
|
|
23
30
|
transformerConfig,
|
|
24
|
-
fileBuffer
|
|
25
|
-
) {
|
|
31
|
+
fileBuffer,
|
|
32
|
+
) => {
|
|
26
33
|
let data;
|
|
27
34
|
const fileBufferObject = asDeserializedBuffer(fileBuffer);
|
|
28
35
|
if (fileBufferObject) {
|
|
29
36
|
data = fileBufferObject;
|
|
30
37
|
} else {
|
|
31
|
-
data =
|
|
38
|
+
data = _fs.default.readFileSync(
|
|
39
|
+
_path.default.resolve(projectRoot, filename),
|
|
40
|
+
);
|
|
32
41
|
}
|
|
33
42
|
return transformFile(
|
|
34
43
|
filename,
|
|
35
44
|
data,
|
|
36
45
|
transformOptions,
|
|
37
46
|
projectRoot,
|
|
38
|
-
transformerConfig
|
|
47
|
+
transformerConfig,
|
|
39
48
|
);
|
|
40
|
-
}
|
|
49
|
+
};
|
|
50
|
+
exports.transform = transform;
|
|
41
51
|
async function transformFile(
|
|
42
52
|
filename,
|
|
43
53
|
data,
|
|
44
54
|
transformOptions,
|
|
45
55
|
projectRoot,
|
|
46
|
-
transformerConfig
|
|
56
|
+
transformerConfig,
|
|
47
57
|
) {
|
|
48
58
|
const Transformer = require.call(null, transformerConfig.transformerPath);
|
|
49
59
|
const transformFileStartLogEntry = {
|
|
@@ -53,18 +63,18 @@ async function transformFile(
|
|
|
53
63
|
log_entry_label: "Transforming file",
|
|
54
64
|
start_timestamp: process.hrtime(),
|
|
55
65
|
};
|
|
56
|
-
const sha1 =
|
|
66
|
+
const sha1 = _crypto.default.createHash("sha1").update(data).digest("hex");
|
|
57
67
|
const result = await Transformer.transform(
|
|
58
68
|
transformerConfig.transformerConfig,
|
|
59
69
|
projectRoot,
|
|
60
70
|
filename,
|
|
61
71
|
data,
|
|
62
|
-
transformOptions
|
|
72
|
+
transformOptions,
|
|
63
73
|
);
|
|
64
|
-
|
|
74
|
+
_traverse.default.cache.clear();
|
|
65
75
|
const transformFileEndLogEntry = getEndLogEntry(
|
|
66
76
|
transformFileStartLogEntry,
|
|
67
|
-
filename
|
|
77
|
+
filename,
|
|
68
78
|
);
|
|
69
79
|
return {
|
|
70
80
|
result,
|
|
@@ -84,6 +94,3 @@ function getEndLogEntry(startLogEntry, filename) {
|
|
|
84
94
|
log_entry_label: "Transforming file",
|
|
85
95
|
};
|
|
86
96
|
}
|
|
87
|
-
module.exports = {
|
|
88
|
-
transform,
|
|
89
|
-
};
|
|
@@ -9,26 +9,20 @@
|
|
|
9
9
|
* @oncall react_native
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
import type {TransformResult} from './types.flow';
|
|
12
|
+
import type {TransformResult} from './types';
|
|
15
13
|
import type {LogEntry} from 'metro-core/private/Logger';
|
|
16
14
|
import type {
|
|
17
15
|
JsTransformerConfig,
|
|
18
16
|
JsTransformOptions,
|
|
19
17
|
} from 'metro-transform-worker';
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
import traverse from '@babel/traverse';
|
|
20
|
+
import crypto from 'crypto';
|
|
21
|
+
import fs from 'fs';
|
|
22
|
+
import path from 'path';
|
|
25
23
|
|
|
26
24
|
export type {JsTransformOptions as TransformOptions} from 'metro-transform-worker';
|
|
27
25
|
|
|
28
|
-
export type Worker = {
|
|
29
|
-
+transform: typeof transform,
|
|
30
|
-
};
|
|
31
|
-
|
|
32
26
|
type TransformerInterface = {
|
|
33
27
|
transform(
|
|
34
28
|
JsTransformerConfig,
|
|
@@ -72,13 +66,13 @@ function asDeserializedBuffer(value: any): Buffer | null {
|
|
|
72
66
|
return null;
|
|
73
67
|
}
|
|
74
68
|
|
|
75
|
-
|
|
69
|
+
export const transform = (
|
|
76
70
|
filename: string,
|
|
77
71
|
transformOptions: JsTransformOptions,
|
|
78
72
|
projectRoot: string,
|
|
79
73
|
transformerConfig: TransformerConfig,
|
|
80
74
|
fileBuffer?: Buffer,
|
|
81
|
-
): Promise<Data> {
|
|
75
|
+
): Promise<Data> => {
|
|
82
76
|
let data;
|
|
83
77
|
|
|
84
78
|
const fileBufferObject = asDeserializedBuffer(fileBuffer);
|
|
@@ -94,7 +88,11 @@ async function transform(
|
|
|
94
88
|
projectRoot,
|
|
95
89
|
transformerConfig,
|
|
96
90
|
);
|
|
97
|
-
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export type Worker = {
|
|
94
|
+
+transform: typeof transform,
|
|
95
|
+
};
|
|
98
96
|
|
|
99
97
|
async function transformFile(
|
|
100
98
|
filename: string,
|
|
@@ -160,7 +158,3 @@ function getEndLogEntry(startLogEntry: LogEntry, filename: string): LogEntry {
|
|
|
160
158
|
log_entry_label: 'Transforming file',
|
|
161
159
|
};
|
|
162
160
|
}
|
|
163
|
-
|
|
164
|
-
module.exports = ({
|
|
165
|
-
transform,
|
|
166
|
-
}: Worker);
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _jestWorker = require("jest-worker");
|
|
8
|
+
var _metroCore = require("metro-core");
|
|
5
9
|
class WorkerFarm {
|
|
6
10
|
constructor(config, transformerConfig) {
|
|
7
11
|
this._config = config;
|
|
@@ -11,7 +15,7 @@ class WorkerFarm {
|
|
|
11
15
|
const worker = this._makeFarm(
|
|
12
16
|
absoluteWorkerPath,
|
|
13
17
|
["transform"],
|
|
14
|
-
this._config.maxWorkers
|
|
18
|
+
this._config.maxWorkers,
|
|
15
19
|
);
|
|
16
20
|
worker.getStdout().on("data", (chunk) => {
|
|
17
21
|
this._config.reporter.update({
|
|
@@ -42,10 +46,10 @@ class WorkerFarm {
|
|
|
42
46
|
options,
|
|
43
47
|
this._config.projectRoot,
|
|
44
48
|
this._transformerConfig,
|
|
45
|
-
fileBuffer
|
|
49
|
+
fileBuffer,
|
|
46
50
|
);
|
|
47
|
-
Logger.log(data.transformFileStartLogEntry);
|
|
48
|
-
Logger.log(data.transformFileEndLogEntry);
|
|
51
|
+
_metroCore.Logger.log(data.transformFileStartLogEntry);
|
|
52
|
+
_metroCore.Logger.log(data.transformFileEndLogEntry);
|
|
49
53
|
return {
|
|
50
54
|
result: data.result,
|
|
51
55
|
sha1: data.sha1,
|
|
@@ -63,7 +67,7 @@ class WorkerFarm {
|
|
|
63
67
|
...process.env,
|
|
64
68
|
FORCE_COLOR: 1,
|
|
65
69
|
};
|
|
66
|
-
return new
|
|
70
|
+
return new _jestWorker.Worker(absoluteWorkerPath, {
|
|
67
71
|
computeWorkerKey: this._config.stickyWorkers
|
|
68
72
|
? this._computeWorkerKey
|
|
69
73
|
: undefined,
|
|
@@ -91,9 +95,7 @@ class WorkerFarm {
|
|
|
91
95
|
}
|
|
92
96
|
_formatBabelError(err, filename) {
|
|
93
97
|
const error = new TransformError(
|
|
94
|
-
`${err.type || "Error"}${
|
|
95
|
-
err.message.includes(filename) ? "" : " in " + filename
|
|
96
|
-
}: ${err.message}`
|
|
98
|
+
`${err.type || "Error"}${err.message.includes(filename) ? "" : " in " + filename}: ${err.message}`,
|
|
97
99
|
);
|
|
98
100
|
return Object.assign(error, {
|
|
99
101
|
stack: err.stack,
|
|
@@ -104,6 +106,7 @@ class WorkerFarm {
|
|
|
104
106
|
});
|
|
105
107
|
}
|
|
106
108
|
}
|
|
109
|
+
exports.default = WorkerFarm;
|
|
107
110
|
class TransformError extends SyntaxError {
|
|
108
111
|
type = "TransformError";
|
|
109
112
|
constructor(message) {
|
|
@@ -111,4 +114,3 @@ class TransformError extends SyntaxError {
|
|
|
111
114
|
Error.captureStackTrace && Error.captureStackTrace(this, TransformError);
|
|
112
115
|
}
|
|
113
116
|
}
|
|
114
|
-
module.exports = WorkerFarm;
|
|
@@ -9,15 +9,13 @@
|
|
|
9
9
|
* @oncall react_native
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
'use strict';
|
|
13
|
-
|
|
14
12
|
import type {TransformResult} from '../DeltaBundler';
|
|
15
13
|
import type {TransformerConfig, TransformOptions, Worker} from './Worker';
|
|
16
14
|
import type {ConfigT} from 'metro-config';
|
|
17
15
|
import type {Readable} from 'stream';
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
import {Worker as JestWorker} from 'jest-worker';
|
|
18
|
+
import {Logger} from 'metro-core';
|
|
21
19
|
|
|
22
20
|
type WorkerInterface = {
|
|
23
21
|
getStdout(): Readable,
|
|
@@ -31,7 +29,7 @@ type TransformerResult = $ReadOnly<{
|
|
|
31
29
|
sha1: string,
|
|
32
30
|
}>;
|
|
33
31
|
|
|
34
|
-
class WorkerFarm {
|
|
32
|
+
export default class WorkerFarm {
|
|
35
33
|
_config: ConfigT;
|
|
36
34
|
_transformerConfig: TransformerConfig;
|
|
37
35
|
_worker: WorkerInterface | Worker;
|
|
@@ -63,6 +61,7 @@ class WorkerFarm {
|
|
|
63
61
|
|
|
64
62
|
this._worker = worker;
|
|
65
63
|
} else {
|
|
64
|
+
// eslint-disable-next-line import/no-commonjs
|
|
66
65
|
this._worker = (require('./Worker'): Worker);
|
|
67
66
|
}
|
|
68
67
|
}
|
|
@@ -117,7 +116,7 @@ class WorkerFarm {
|
|
|
117
116
|
return new JestWorker(absoluteWorkerPath, {
|
|
118
117
|
computeWorkerKey: this._config.stickyWorkers
|
|
119
118
|
? // $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
120
|
-
// $FlowFixMe[incompatible-
|
|
119
|
+
// $FlowFixMe[incompatible-type]
|
|
121
120
|
this._computeWorkerKey
|
|
122
121
|
: undefined,
|
|
123
122
|
exposedMethods,
|
|
@@ -161,7 +160,8 @@ class WorkerFarm {
|
|
|
161
160
|
}: ${err.message}`,
|
|
162
161
|
);
|
|
163
162
|
|
|
164
|
-
// $
|
|
163
|
+
// $FlowFixMe[prop-missing]
|
|
164
|
+
// $FlowExpectedError[unsafe-object-assign] : TODO(t67543470): Change this to properly extend the error.
|
|
165
165
|
return Object.assign(error, {
|
|
166
166
|
stack: err.stack,
|
|
167
167
|
snippet: err.codeFrame,
|
|
@@ -180,5 +180,3 @@ class TransformError extends SyntaxError {
|
|
|
180
180
|
Error.captureStackTrace && Error.captureStackTrace(this, TransformError);
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
|
-
|
|
184
|
-
module.exports = WorkerFarm;
|
|
@@ -8,11 +8,7 @@ var _contextModule = require("../lib/contextModule");
|
|
|
8
8
|
var _isResolvedDependency = require("../lib/isResolvedDependency");
|
|
9
9
|
var _path = _interopRequireDefault(require("path"));
|
|
10
10
|
function _interopRequireDefault(e) {
|
|
11
|
-
return e && e.__esModule
|
|
12
|
-
? e
|
|
13
|
-
: {
|
|
14
|
-
default: e,
|
|
15
|
-
};
|
|
11
|
+
return e && e.__esModule ? e : { default: e };
|
|
16
12
|
}
|
|
17
13
|
function resolveDependencies(parentPath, dependencies, resolve) {
|
|
18
14
|
const maybeResolvedDeps = new Map();
|
|
@@ -25,7 +21,7 @@ function resolveDependencies(parentPath, dependencies, resolve) {
|
|
|
25
21
|
const from = _path.default.join(parentPath, "..", dep.name);
|
|
26
22
|
const absolutePath = (0, _contextModule.deriveAbsolutePathFromContext)(
|
|
27
23
|
from,
|
|
28
|
-
contextParams
|
|
24
|
+
contextParams,
|
|
29
25
|
);
|
|
30
26
|
const resolvedContext = {
|
|
31
27
|
from,
|
|
@@ -33,7 +29,7 @@ function resolveDependencies(parentPath, dependencies, resolve) {
|
|
|
33
29
|
recursive: contextParams.recursive,
|
|
34
30
|
filter: new RegExp(
|
|
35
31
|
contextParams.filter.pattern,
|
|
36
|
-
contextParams.filter.flags
|
|
32
|
+
contextParams.filter.flags,
|
|
37
33
|
),
|
|
38
34
|
};
|
|
39
35
|
resolvedContexts.set(key, resolvedContext);
|
|
@@ -58,7 +54,7 @@ function resolveDependencies(parentPath, dependencies, resolve) {
|
|
|
58
54
|
}
|
|
59
55
|
if (maybeResolvedDeps.has(key)) {
|
|
60
56
|
throw new Error(
|
|
61
|
-
`resolveDependencies: Found duplicate dependency key '${key}' in ${parentPath}
|
|
57
|
+
`resolveDependencies: Found duplicate dependency key '${key}' in ${parentPath}`,
|
|
62
58
|
);
|
|
63
59
|
}
|
|
64
60
|
maybeResolvedDeps.set(key, maybeResolvedDep);
|
|
@@ -71,7 +67,7 @@ function resolveDependencies(parentPath, dependencies, resolve) {
|
|
|
71
67
|
async function buildSubgraph(
|
|
72
68
|
entryPaths,
|
|
73
69
|
resolvedContexts,
|
|
74
|
-
{ resolve, transform, shouldTraverse }
|
|
70
|
+
{ resolve, transform, shouldTraverse },
|
|
75
71
|
) {
|
|
76
72
|
const moduleData = new Map();
|
|
77
73
|
const errors = new Map();
|
|
@@ -85,7 +81,7 @@ async function buildSubgraph(
|
|
|
85
81
|
const resolutionResult = resolveDependencies(
|
|
86
82
|
absolutePath,
|
|
87
83
|
transformResult.dependencies,
|
|
88
|
-
resolve
|
|
84
|
+
resolve,
|
|
89
85
|
);
|
|
90
86
|
moduleData.set(absolutePath, {
|
|
91
87
|
...transformResult,
|
|
@@ -96,22 +92,22 @@ async function buildSubgraph(
|
|
|
96
92
|
.filter(
|
|
97
93
|
(dependency) =>
|
|
98
94
|
(0, _isResolvedDependency.isResolvedDependency)(dependency) &&
|
|
99
|
-
shouldTraverse(dependency)
|
|
95
|
+
shouldTraverse(dependency),
|
|
100
96
|
)
|
|
101
97
|
.map((dependency) =>
|
|
102
98
|
visit(
|
|
103
99
|
dependency.absolutePath,
|
|
104
|
-
resolutionResult.resolvedContexts.get(dependency.data.data.key)
|
|
105
|
-
).catch((error) => errors.set(dependency.absolutePath, error))
|
|
106
|
-
)
|
|
100
|
+
resolutionResult.resolvedContexts.get(dependency.data.data.key),
|
|
101
|
+
).catch((error) => errors.set(dependency.absolutePath, error)),
|
|
102
|
+
),
|
|
107
103
|
);
|
|
108
104
|
}
|
|
109
105
|
await Promise.all(
|
|
110
106
|
[...entryPaths].map((absolutePath) =>
|
|
111
107
|
visit(absolutePath, resolvedContexts.get(absolutePath)).catch((error) =>
|
|
112
|
-
errors.set(absolutePath, error)
|
|
113
|
-
)
|
|
114
|
-
)
|
|
108
|
+
errors.set(absolutePath, error),
|
|
109
|
+
),
|
|
110
|
+
),
|
|
115
111
|
);
|
|
116
112
|
return {
|
|
117
113
|
moduleData,
|
|
@@ -16,7 +16,7 @@ import type {
|
|
|
16
16
|
ResolveFn,
|
|
17
17
|
TransformFn,
|
|
18
18
|
TransformResultDependency,
|
|
19
|
-
} from './types
|
|
19
|
+
} from './types';
|
|
20
20
|
|
|
21
21
|
import {deriveAbsolutePathFromContext} from '../lib/contextModule';
|
|
22
22
|
import {isResolvedDependency} from '../lib/isResolvedDependency';
|
|
@@ -1,26 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.default = getTransformCacheKey;
|
|
7
|
+
var _crypto = _interopRequireDefault(require("crypto"));
|
|
8
|
+
var _metroCacheKey = require("metro-cache-key");
|
|
9
|
+
function _interopRequireDefault(e) {
|
|
10
|
+
return e && e.__esModule ? e : { default: e };
|
|
11
|
+
}
|
|
3
12
|
const VERSION = require("../../package.json").version;
|
|
4
|
-
const crypto = require("crypto");
|
|
5
|
-
const { getCacheKey } = require("metro-cache-key");
|
|
6
13
|
function getTransformCacheKey(opts) {
|
|
7
14
|
const { transformerPath, transformerConfig } = opts.transformerConfig;
|
|
8
15
|
const Transformer = require.call(null, transformerPath);
|
|
9
16
|
const transformerKey = Transformer.getCacheKey
|
|
10
17
|
? Transformer.getCacheKey(transformerConfig)
|
|
11
18
|
: "";
|
|
12
|
-
return
|
|
19
|
+
return _crypto.default
|
|
13
20
|
.createHash("sha1")
|
|
14
21
|
.update(
|
|
15
22
|
[
|
|
16
23
|
"metro-cache",
|
|
17
24
|
VERSION,
|
|
18
25
|
opts.cacheVersion,
|
|
19
|
-
getCacheKey([require.resolve(transformerPath)]),
|
|
26
|
+
(0, _metroCacheKey.getCacheKey)([require.resolve(transformerPath)]),
|
|
20
27
|
transformerKey,
|
|
21
28
|
transformerConfig.globalPrefix,
|
|
22
|
-
].join("$")
|
|
29
|
+
].join("$"),
|
|
23
30
|
)
|
|
24
31
|
.digest("hex");
|
|
25
32
|
}
|
|
26
|
-
module.exports = getTransformCacheKey;
|
|
@@ -9,20 +9,20 @@
|
|
|
9
9
|
* @oncall react_native
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
'use strict';
|
|
13
|
-
|
|
14
12
|
import type {TransformerConfig} from './Worker';
|
|
15
13
|
import type {JsTransformerConfig} from 'metro-transform-worker';
|
|
16
14
|
|
|
15
|
+
import crypto from 'crypto';
|
|
16
|
+
import {getCacheKey} from 'metro-cache-key';
|
|
17
|
+
|
|
18
|
+
// eslint-disable-next-line import/no-commonjs
|
|
17
19
|
const VERSION = require('../../package.json').version;
|
|
18
|
-
const crypto = require('crypto');
|
|
19
|
-
const {getCacheKey} = require('metro-cache-key');
|
|
20
20
|
|
|
21
21
|
type CacheKeyProvider = {
|
|
22
22
|
getCacheKey?: JsTransformerConfig => string,
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
function getTransformCacheKey(opts: {
|
|
25
|
+
export default function getTransformCacheKey(opts: {
|
|
26
26
|
+cacheVersion: string,
|
|
27
27
|
+projectRoot: string,
|
|
28
28
|
+transformerConfig: TransformerConfig,
|
|
@@ -49,5 +49,3 @@ function getTransformCacheKey(opts: {
|
|
|
49
49
|
)
|
|
50
50
|
.digest('hex');
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
module.exports = getTransformCacheKey;
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.default = mergeDeltas;
|
|
3
7
|
function mergeDeltas(delta1, delta2) {
|
|
4
8
|
const added1 = new Map(delta1.added);
|
|
5
9
|
const modified1 = new Map(delta1.modified);
|
|
@@ -50,4 +54,3 @@ function mergeDeltas(delta1, delta2) {
|
|
|
50
54
|
deleted: [...deleted],
|
|
51
55
|
};
|
|
52
56
|
}
|
|
53
|
-
module.exports = mergeDeltas;
|
|
@@ -9,11 +9,12 @@
|
|
|
9
9
|
* @oncall react_native
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
import type {DeltaBundle} from 'metro-runtime/src/modules/types';
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
export default function mergeDeltas(
|
|
15
|
+
delta1: DeltaBundle,
|
|
16
|
+
delta2: DeltaBundle,
|
|
17
|
+
): DeltaBundle {
|
|
17
18
|
const added1 = new Map(delta1.added);
|
|
18
19
|
const modified1 = new Map(delta1.modified);
|
|
19
20
|
const deleted1 = new Set(delta1.deleted);
|
|
@@ -70,5 +71,3 @@ function mergeDeltas(delta1: DeltaBundle, delta2: DeltaBundle): DeltaBundle {
|
|
|
70
71
|
deleted: [...deleted],
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
|
-
|
|
74
|
-
module.exports = mergeDeltas;
|
|
@@ -148,7 +148,10 @@ export interface SerializerOptions<T = MixedOutput> {
|
|
|
148
148
|
readonly asyncRequireModulePath: string;
|
|
149
149
|
readonly createModuleId: (filePath: string) => number;
|
|
150
150
|
readonly dev: boolean;
|
|
151
|
-
readonly getRunModuleStatement: (
|
|
151
|
+
readonly getRunModuleStatement: (
|
|
152
|
+
moduleId: number | string,
|
|
153
|
+
globalPrefix: string,
|
|
154
|
+
) => string;
|
|
152
155
|
readonly includeAsyncPaths: boolean;
|
|
153
156
|
readonly inlineSourceMap?: boolean;
|
|
154
157
|
readonly modulesOnly: boolean;
|
|
@@ -9,8 +9,6 @@
|
|
|
9
9
|
* @oncall react_native
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
'use strict';
|
|
13
|
-
|
|
14
12
|
import type {RequireContext} from '../lib/contextModule';
|
|
15
13
|
import type {RequireContextParams} from '../ModuleGraph/worker/collectDependencies';
|
|
16
14
|
import type {Graph} from './Graph';
|
|
@@ -170,7 +168,11 @@ export type SerializerOptions = $ReadOnly<{
|
|
|
170
168
|
asyncRequireModulePath: string,
|
|
171
169
|
createModuleId: string => number,
|
|
172
170
|
dev: boolean,
|
|
173
|
-
getRunModuleStatement: (
|
|
171
|
+
getRunModuleStatement: (
|
|
172
|
+
moduleId: number | string,
|
|
173
|
+
globalPrefix: string,
|
|
174
|
+
) => string,
|
|
175
|
+
globalPrefix: string,
|
|
174
176
|
includeAsyncPaths: boolean,
|
|
175
177
|
inlineSourceMap: ?boolean,
|
|
176
178
|
modulesOnly: boolean,
|
package/src/DeltaBundler.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _DeltaCalculator = _interopRequireDefault(
|
|
8
|
+
require("./DeltaBundler/DeltaCalculator"),
|
|
9
|
+
);
|
|
10
|
+
function _interopRequireDefault(e) {
|
|
11
|
+
return e && e.__esModule ? e : { default: e };
|
|
12
|
+
}
|
|
4
13
|
class DeltaBundler {
|
|
5
14
|
_deltaCalculators = new Map();
|
|
6
15
|
constructor(changeEventSource) {
|
|
@@ -11,10 +20,10 @@ class DeltaBundler {
|
|
|
11
20
|
this._deltaCalculators = new Map();
|
|
12
21
|
}
|
|
13
22
|
async getDependencies(entryPoints, options) {
|
|
14
|
-
const deltaCalculator = new
|
|
23
|
+
const deltaCalculator = new _DeltaCalculator.default(
|
|
15
24
|
new Set(entryPoints),
|
|
16
25
|
this._changeEventSource,
|
|
17
|
-
options
|
|
26
|
+
options,
|
|
18
27
|
);
|
|
19
28
|
await deltaCalculator.getDelta({
|
|
20
29
|
reset: true,
|
|
@@ -25,10 +34,10 @@ class DeltaBundler {
|
|
|
25
34
|
return graph.dependencies;
|
|
26
35
|
}
|
|
27
36
|
async buildGraph(entryPoints, options) {
|
|
28
|
-
const deltaCalculator = new
|
|
37
|
+
const deltaCalculator = new _DeltaCalculator.default(
|
|
29
38
|
new Set(entryPoints),
|
|
30
39
|
this._changeEventSource,
|
|
31
|
-
options
|
|
40
|
+
options,
|
|
32
41
|
);
|
|
33
42
|
await deltaCalculator.getDelta({
|
|
34
43
|
reset: true,
|
|
@@ -67,4 +76,4 @@ class DeltaBundler {
|
|
|
67
76
|
this._deltaCalculators.delete(graph);
|
|
68
77
|
}
|
|
69
78
|
}
|
|
70
|
-
|
|
79
|
+
exports.default = DeltaBundler;
|