metro 0.83.3 → 0.83.5
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 +28 -24
- package/src/Assets.d.ts +83 -0
- package/src/Assets.js +42 -29
- package/src/Assets.js.flow +26 -15
- package/src/Bundler/util.d.ts +27 -0
- package/src/Bundler/util.js +25 -21
- package/src/Bundler/util.js.flow +2 -2
- package/src/Bundler.d.ts +14 -15
- package/src/Bundler.js.flow +1 -1
- package/src/DeltaBundler/DeltaCalculator.d.ts +71 -0
- package/src/DeltaBundler/DeltaCalculator.js +4 -4
- package/src/DeltaBundler/DeltaCalculator.js.flow +8 -8
- package/src/DeltaBundler/Graph.d.ts +135 -8
- package/src/DeltaBundler/Graph.js +16 -16
- package/src/DeltaBundler/Graph.js.flow +30 -30
- package/src/DeltaBundler/Serializers/baseJSBundle.d.ts +20 -0
- package/src/DeltaBundler/Serializers/baseJSBundle.js.flow +1 -1
- package/src/DeltaBundler/Serializers/getAllFiles.d.ts +22 -0
- package/src/DeltaBundler/Serializers/getAllFiles.js.flow +2 -2
- package/src/DeltaBundler/Serializers/getAssets.d.ts +25 -0
- package/src/DeltaBundler/Serializers/getAssets.js.flow +2 -2
- package/src/DeltaBundler/Serializers/getExplodedSourceMap.js.flow +2 -2
- package/src/DeltaBundler/Serializers/getRamBundleInfo.d.ts +36 -6
- package/src/DeltaBundler/Serializers/getRamBundleInfo.js.flow +8 -8
- package/src/DeltaBundler/Serializers/helpers/getInlineSourceMappingURL.d.ts +12 -0
- package/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.d.ts +33 -0
- package/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies.d.ts +17 -0
- package/src/DeltaBundler/Serializers/helpers/js.d.ts +30 -0
- package/src/DeltaBundler/Serializers/helpers/js.js +25 -21
- package/src/DeltaBundler/Serializers/helpers/js.js.flow +6 -6
- package/src/DeltaBundler/Serializers/helpers/processModules.d.ts +25 -0
- package/src/DeltaBundler/Serializers/helpers/processModules.js.flow +3 -3
- package/src/DeltaBundler/Serializers/hmrJSBundle.d.ts +30 -0
- package/src/DeltaBundler/Serializers/hmrJSBundle.js +25 -21
- package/src/DeltaBundler/Serializers/hmrJSBundle.js.flow +5 -5
- package/src/DeltaBundler/Serializers/sourceMapGenerator.d.ts +29 -0
- package/src/DeltaBundler/Serializers/sourceMapGenerator.js.flow +6 -6
- package/src/DeltaBundler/Serializers/sourceMapObject.d.ts +23 -0
- package/src/DeltaBundler/Serializers/sourceMapObject.js.flow +2 -2
- package/src/DeltaBundler/Serializers/sourceMapString.d.ts +22 -0
- package/src/DeltaBundler/Serializers/sourceMapString.js.flow +2 -2
- package/src/DeltaBundler/Transformer.d.ts +38 -0
- package/src/DeltaBundler/Transformer.js.flow +3 -3
- package/src/DeltaBundler/Worker.d.ts +19 -27
- package/src/DeltaBundler/Worker.flow.js.flow +1 -1
- package/src/DeltaBundler/WorkerFarm.d.ts +70 -0
- package/src/DeltaBundler/WorkerFarm.js +1 -1
- package/src/DeltaBundler/WorkerFarm.js.flow +26 -13
- package/src/DeltaBundler/buildSubgraph.d.ts +30 -0
- package/src/DeltaBundler/buildSubgraph.js +4 -4
- package/src/DeltaBundler/buildSubgraph.js.flow +8 -8
- package/src/DeltaBundler/getTransformCacheKey.d.ts +18 -0
- package/src/DeltaBundler/mergeDeltas.d.ts +17 -0
- package/src/DeltaBundler/types.d.ts +97 -100
- package/src/DeltaBundler/types.js.flow +36 -34
- package/src/DeltaBundler.d.ts +14 -12
- package/src/DeltaBundler.js.flow +2 -2
- package/src/HmrServer.d.ts +79 -0
- package/src/HmrServer.js +34 -29
- package/src/HmrServer.js.flow +17 -12
- package/src/IncrementalBundler/GraphNotFoundError.d.ts +17 -0
- package/src/IncrementalBundler/ResourceNotFoundError.d.ts +15 -0
- package/src/IncrementalBundler/RevisionNotFoundError.d.ts +17 -0
- package/src/IncrementalBundler.d.ts +43 -45
- package/src/IncrementalBundler.js +29 -21
- package/src/IncrementalBundler.js.flow +13 -9
- package/src/ModuleGraph/worker/JsFileWrapping.d.ts +29 -0
- package/src/ModuleGraph/worker/JsFileWrapping.js +25 -21
- package/src/ModuleGraph/worker/JsFileWrapping.js.flow +10 -5
- package/src/ModuleGraph/worker/collectDependencies.d.ts +118 -14
- package/src/ModuleGraph/worker/collectDependencies.js +25 -21
- package/src/ModuleGraph/worker/collectDependencies.js.flow +27 -21
- package/src/ModuleGraph/worker/generateImportNames.d.ts +19 -0
- package/src/ModuleGraph/worker/generateImportNames.js.flow +4 -2
- package/src/ModuleGraph/worker/importLocationsPlugin.d.ts +26 -0
- package/src/ModuleGraph/worker/importLocationsPlugin.js.flow +7 -3
- package/src/Server/MultipartResponse.d.ts +5 -6
- package/src/Server/MultipartResponse.js.flow +1 -1
- package/src/Server/symbolicate.js.flow +4 -4
- package/src/Server.d.ts +220 -67
- package/src/Server.js +149 -45
- package/src/Server.js.flow +167 -57
- package/src/cli/parseKeyValueParamArray.d.ts +14 -0
- package/src/cli/parseKeyValueParamArray.js.flow +1 -1
- package/src/cli-utils.d.ts +19 -0
- package/src/cli-utils.js.flow +2 -2
- package/src/commands/build.d.ts +16 -0
- package/src/commands/build.js.flow +11 -10
- package/src/commands/dependencies.d.ts +16 -0
- package/src/commands/dependencies.js.flow +8 -4
- package/src/commands/serve.d.ts +16 -0
- package/src/commands/serve.js +2 -0
- package/src/commands/serve.js.flow +14 -9
- package/src/index.d.ts +97 -110
- package/src/index.flow.js +53 -35
- package/src/index.flow.js.flow +49 -29
- 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.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.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 +25 -21
- 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.flow +1 -1
- package/src/lib/BatchProcessor.d.ts +54 -0
- package/src/lib/BatchProcessor.js +5 -2
- package/src/lib/BatchProcessor.js.flow +10 -7
- package/src/lib/CountingSet.d.ts +10 -10
- package/src/lib/CountingSet.js.flow +4 -4
- package/src/lib/JsonReporter.d.ts +37 -0
- package/src/lib/JsonReporter.js +5 -3
- package/src/lib/JsonReporter.js.flow +19 -17
- package/src/lib/RamBundleParser.d.ts +29 -0
- package/src/lib/RamBundleParser.js.flow +1 -1
- package/src/lib/TerminalReporter.d.ts +97 -6
- package/src/lib/TerminalReporter.js +37 -34
- package/src/lib/TerminalReporter.js.flow +21 -30
- package/src/lib/bundleProgressUtils.d.ts +26 -0
- package/src/lib/bundleProgressUtils.js +19 -0
- package/src/lib/bundleProgressUtils.js.flow +35 -0
- package/src/lib/bundleToString.d.ts +19 -0
- package/src/lib/contextModule.d.ts +20 -9
- package/src/lib/contextModule.js.flow +1 -1
- package/src/lib/contextModuleTemplates.d.ts +25 -0
- package/src/lib/contextModuleTemplates.js +25 -21
- package/src/lib/countLines.d.ts +12 -0
- package/src/lib/countLines.js +4 -3
- package/src/lib/countLines.js.flow +3 -4
- package/src/lib/createWebsocketServer.d.ts +43 -0
- package/src/lib/createWebsocketServer.js +9 -2
- package/src/lib/createWebsocketServer.js.flow +16 -9
- package/src/lib/debounceAsyncQueue.d.ts +15 -0
- package/src/lib/debounceAsyncQueue.js.flow +1 -1
- package/src/lib/formatBundlingError.d.ts +23 -0
- package/src/lib/formatBundlingError.js.flow +1 -1
- package/src/lib/getAppendScripts.d.ts +31 -0
- package/src/lib/getAppendScripts.js.flow +4 -4
- package/src/lib/getGraphId.d.ts +15 -1
- package/src/lib/getGraphId.js.flow +1 -1
- package/src/lib/getPreludeCode.d.ts +18 -0
- package/src/lib/getPreludeCode.js +4 -0
- package/src/lib/getPreludeCode.js.flow +10 -3
- package/src/lib/getPrependedScripts.d.ts +24 -0
- package/src/lib/getPrependedScripts.js +36 -22
- package/src/lib/getPrependedScripts.js.flow +10 -3
- package/src/lib/isResolvedDependency.d.ts +15 -0
- package/src/lib/logToConsole.d.ts +19 -0
- package/src/lib/logToConsole.js.flow +2 -2
- package/src/lib/parseBundleOptionsFromBundleRequestUrl.d.ts +17 -0
- package/src/lib/parseBundleOptionsFromBundleRequestUrl.js +25 -21
- package/src/lib/parseCustomResolverOptions.d.ts +16 -0
- package/src/lib/parseCustomResolverOptions.js.flow +2 -2
- package/src/lib/parseCustomTransformOptions.d.ts +16 -0
- package/src/lib/parseCustomTransformOptions.js.flow +1 -1
- package/src/lib/parseJsonBody.d.ts +27 -0
- package/src/lib/parseJsonBody.js.flow +11 -1
- package/src/lib/pathUtils.d.ts +14 -0
- package/src/lib/pathUtils.js +25 -21
- package/src/lib/pathUtils.js.flow +1 -1
- package/src/lib/relativizeSourceMap.d.ts +17 -0
- package/src/lib/reporting.d.ts +65 -81
- package/src/lib/reporting.js.flow +4 -4
- package/src/lib/splitBundleOptions.d.ts +16 -0
- package/src/lib/transformHelpers.d.ts +35 -0
- package/src/lib/transformHelpers.js +11 -9
- package/src/lib/transformHelpers.js.flow +17 -15
- package/src/node-haste/DependencyGraph/ModuleResolution.d.ts +126 -0
- package/src/node-haste/DependencyGraph/ModuleResolution.js +48 -42
- package/src/node-haste/DependencyGraph/ModuleResolution.js.flow +35 -32
- package/src/node-haste/DependencyGraph/createFileMap.d.ts +29 -0
- package/src/node-haste/DependencyGraph/createFileMap.js +56 -38
- package/src/node-haste/DependencyGraph/createFileMap.js.flow +44 -18
- package/src/node-haste/DependencyGraph.d.ts +57 -33
- package/src/node-haste/DependencyGraph.js +40 -31
- package/src/node-haste/DependencyGraph.js.flow +35 -37
- package/src/node-haste/Package.d.ts +21 -0
- package/src/node-haste/PackageCache.d.ts +34 -0
- package/src/node-haste/lib/AssetPaths.d.ts +29 -0
- package/src/node-haste/lib/AssetPaths.js +2 -2
- package/src/node-haste/lib/AssetPaths.js.flow +4 -4
- package/src/node-haste/lib/parsePlatformFilePath.d.ts +25 -0
- package/src/node-haste/lib/parsePlatformFilePath.js +6 -6
- package/src/node-haste/lib/parsePlatformFilePath.js.flow +4 -4
- package/src/shared/output/RamBundle/as-assets.d.ts +25 -0
- package/src/shared/output/RamBundle/as-assets.js.flow +6 -6
- package/src/shared/output/RamBundle/as-indexed-file.d.ts +38 -0
- package/src/shared/output/RamBundle/as-indexed-file.js.flow +5 -5
- package/src/shared/output/RamBundle/buildSourcemapWithMetadata.d.ts +23 -0
- package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js.flow +5 -5
- package/src/shared/output/RamBundle/magic-number.d.ts +14 -0
- package/src/shared/output/RamBundle/util.d.ts +41 -0
- package/src/shared/output/RamBundle/util.js.flow +5 -5
- package/src/shared/output/RamBundle/write-sourcemap.d.ts +16 -0
- package/src/shared/output/RamBundle/write-sourcemap.js.flow +1 -1
- package/src/shared/output/RamBundle.d.ts +26 -0
- package/src/shared/output/RamBundle.js.flow +1 -1
- package/src/shared/output/bundle.d.ts +9 -17
- package/src/shared/output/bundle.flow.js.flow +3 -3
- package/src/shared/output/meta.d.ts +15 -0
- package/src/shared/output/meta.js +2 -2
- package/src/shared/output/meta.js.flow +1 -1
- package/src/shared/output/unbundle.d.ts +11 -0
- package/src/shared/output/writeFile.d.ts +16 -0
- package/src/shared/output/writeFile.js +8 -3
- package/src/shared/output/writeFile.js.flow +8 -2
- package/src/shared/types.d.ts +81 -66
- package/src/shared/types.js.flow +20 -5
- package/src/Asset.d.ts +0 -25
- package/src/ModuleGraph/test-helpers.js +0 -75
|
@@ -9,37 +9,29 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import type {TransformResult} from './types';
|
|
12
|
+
import type {LogEntry} from 'metro-core/private/Logger';
|
|
12
13
|
import type {
|
|
13
14
|
JsTransformerConfig,
|
|
14
15
|
JsTransformOptions,
|
|
15
16
|
} from 'metro-transform-worker';
|
|
16
17
|
|
|
17
|
-
type
|
|
18
|
-
|
|
19
|
-
export type TransformOptions = JsTransformOptions;
|
|
20
|
-
|
|
21
|
-
export interface Worker {
|
|
22
|
-
readonly transform: (
|
|
23
|
-
filename: string,
|
|
24
|
-
transformOptions: JsTransformOptions,
|
|
25
|
-
projectRoot: string,
|
|
26
|
-
transformerConfig: TransformerConfig,
|
|
27
|
-
fileBuffer?: Buffer,
|
|
28
|
-
) => Promise<Data>;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export interface TransformerConfig {
|
|
18
|
+
export type {JsTransformOptions as TransformOptions} from 'metro-transform-worker';
|
|
19
|
+
export type TransformerConfig = {
|
|
32
20
|
transformerPath: string;
|
|
33
21
|
transformerConfig: JsTransformerConfig;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
22
|
+
};
|
|
23
|
+
type Data = Readonly<{
|
|
24
|
+
result: TransformResult;
|
|
25
|
+
sha1: string;
|
|
26
|
+
transformFileStartLogEntry: LogEntry;
|
|
27
|
+
transformFileEndLogEntry: LogEntry;
|
|
28
|
+
}>;
|
|
29
|
+
export declare const transform: (
|
|
30
|
+
filename: string,
|
|
31
|
+
transformOptions: JsTransformOptions,
|
|
32
|
+
projectRoot: string,
|
|
33
|
+
transformerConfig: TransformerConfig,
|
|
34
|
+
fileBuffer?: Buffer,
|
|
35
|
+
) => Promise<Data>;
|
|
36
|
+
export declare type transform = typeof transform;
|
|
37
|
+
export type Worker = {readonly transform: typeof transform};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @format
|
|
8
|
+
* @oncall react_native
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type {TransformResult} from '../DeltaBundler';
|
|
12
|
+
import type {TransformerConfig, TransformOptions, Worker} from './Worker';
|
|
13
|
+
import type {ConfigT} from 'metro-config';
|
|
14
|
+
import type {Readable} from 'stream';
|
|
15
|
+
|
|
16
|
+
type WorkerInterface = Readonly<
|
|
17
|
+
Omit<
|
|
18
|
+
Worker,
|
|
19
|
+
keyof {
|
|
20
|
+
end(): void | Promise<void>;
|
|
21
|
+
getStdout(): Readable;
|
|
22
|
+
getStderr(): Readable;
|
|
23
|
+
}
|
|
24
|
+
> & {
|
|
25
|
+
end(): void | Promise<void>;
|
|
26
|
+
getStdout(): Readable;
|
|
27
|
+
getStderr(): Readable;
|
|
28
|
+
}
|
|
29
|
+
>;
|
|
30
|
+
type TransformerResult = Readonly<{result: TransformResult; sha1: string}>;
|
|
31
|
+
declare class WorkerFarm {
|
|
32
|
+
_config: ConfigT;
|
|
33
|
+
_transformerConfig: TransformerConfig;
|
|
34
|
+
_worker: WorkerInterface | Worker;
|
|
35
|
+
constructor(config: ConfigT, transformerConfig: TransformerConfig);
|
|
36
|
+
kill(): Promise<void>;
|
|
37
|
+
transform(
|
|
38
|
+
filename: string,
|
|
39
|
+
options: TransformOptions,
|
|
40
|
+
fileBuffer?: Buffer,
|
|
41
|
+
): Promise<TransformerResult>;
|
|
42
|
+
_makeFarm(
|
|
43
|
+
absoluteWorkerPath: string,
|
|
44
|
+
exposedMethods: ReadonlyArray<string>,
|
|
45
|
+
numWorkers: number,
|
|
46
|
+
): WorkerInterface;
|
|
47
|
+
_computeWorkerKey(
|
|
48
|
+
method: string,
|
|
49
|
+
filename: string,
|
|
50
|
+
): null | undefined | string;
|
|
51
|
+
_formatGenericError(
|
|
52
|
+
err: Readonly<{message: string; stack?: string}>,
|
|
53
|
+
filename: string,
|
|
54
|
+
): TransformError;
|
|
55
|
+
_formatBabelError(
|
|
56
|
+
err: Readonly<{
|
|
57
|
+
message: string;
|
|
58
|
+
stack?: string;
|
|
59
|
+
type?: string;
|
|
60
|
+
codeFrame?: unknown;
|
|
61
|
+
loc: {line?: number; column?: number};
|
|
62
|
+
}>,
|
|
63
|
+
filename: string,
|
|
64
|
+
): TransformError;
|
|
65
|
+
}
|
|
66
|
+
export default WorkerFarm;
|
|
67
|
+
declare class TransformError extends SyntaxError {
|
|
68
|
+
type: string;
|
|
69
|
+
constructor(message: string);
|
|
70
|
+
}
|
|
@@ -95,7 +95,7 @@ class WorkerFarm {
|
|
|
95
95
|
}
|
|
96
96
|
_formatBabelError(err, filename) {
|
|
97
97
|
const error = new TransformError(
|
|
98
|
-
`${err.type
|
|
98
|
+
`${err.type ?? "Error"}${err.message.includes(filename) ? "" : " in " + filename}: ${err.message}`,
|
|
99
99
|
);
|
|
100
100
|
return Object.assign(error, {
|
|
101
101
|
stack: err.stack,
|
|
@@ -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
|
*/
|
|
@@ -17,14 +17,14 @@ import type {Readable} from 'stream';
|
|
|
17
17
|
import {Worker as JestWorker} from 'jest-worker';
|
|
18
18
|
import {Logger} from 'metro-core';
|
|
19
19
|
|
|
20
|
-
type WorkerInterface = {
|
|
20
|
+
type WorkerInterface = Readonly<{
|
|
21
|
+
...Worker,
|
|
22
|
+
end(): void | Promise<void>,
|
|
21
23
|
getStdout(): Readable,
|
|
22
24
|
getStderr(): Readable,
|
|
23
|
-
|
|
24
|
-
...Worker,
|
|
25
|
-
};
|
|
25
|
+
}>;
|
|
26
26
|
|
|
27
|
-
type TransformerResult =
|
|
27
|
+
type TransformerResult = Readonly<{
|
|
28
28
|
result: TransformResult<>,
|
|
29
29
|
sha1: string,
|
|
30
30
|
}>;
|
|
@@ -62,7 +62,7 @@ export default class WorkerFarm {
|
|
|
62
62
|
this._worker = worker;
|
|
63
63
|
} else {
|
|
64
64
|
// eslint-disable-next-line import/no-commonjs
|
|
65
|
-
this._worker =
|
|
65
|
+
this._worker = require('./Worker') as Worker;
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -104,16 +104,16 @@ export default class WorkerFarm {
|
|
|
104
104
|
|
|
105
105
|
_makeFarm(
|
|
106
106
|
absoluteWorkerPath: string,
|
|
107
|
-
exposedMethods:
|
|
107
|
+
exposedMethods: ReadonlyArray<string>,
|
|
108
108
|
numWorkers: number,
|
|
109
|
-
):
|
|
109
|
+
): WorkerInterface {
|
|
110
110
|
const env = {
|
|
111
111
|
...process.env,
|
|
112
112
|
// Force color to print syntax highlighted code frames.
|
|
113
113
|
FORCE_COLOR: 1,
|
|
114
114
|
};
|
|
115
115
|
|
|
116
|
-
return new JestWorker(absoluteWorkerPath, {
|
|
116
|
+
return new JestWorker<Worker>(absoluteWorkerPath, {
|
|
117
117
|
computeWorkerKey: this._config.stickyWorkers
|
|
118
118
|
? // $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
119
119
|
// $FlowFixMe[incompatible-type]
|
|
@@ -143,7 +143,10 @@ export default class WorkerFarm {
|
|
|
143
143
|
return null;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
_formatGenericError(
|
|
146
|
+
_formatGenericError(
|
|
147
|
+
err: Readonly<{message: string, stack?: string, ...}>,
|
|
148
|
+
filename: string,
|
|
149
|
+
): TransformError {
|
|
147
150
|
const error = new TransformError(`${filename}: ${err.message}`);
|
|
148
151
|
|
|
149
152
|
// $FlowFixMe[unsafe-object-assign]
|
|
@@ -153,9 +156,19 @@ export default class WorkerFarm {
|
|
|
153
156
|
});
|
|
154
157
|
}
|
|
155
158
|
|
|
156
|
-
_formatBabelError(
|
|
159
|
+
_formatBabelError(
|
|
160
|
+
err: Readonly<{
|
|
161
|
+
message: string,
|
|
162
|
+
stack?: string,
|
|
163
|
+
type?: string,
|
|
164
|
+
codeFrame?: unknown,
|
|
165
|
+
loc: {line?: number, column?: number, ...},
|
|
166
|
+
...
|
|
167
|
+
}>,
|
|
168
|
+
filename: string,
|
|
169
|
+
): TransformError {
|
|
157
170
|
const error = new TransformError(
|
|
158
|
-
`${err.type
|
|
171
|
+
`${err.type ?? 'Error'}${
|
|
159
172
|
err.message.includes(filename) ? '' : ' in ' + filename
|
|
160
173
|
}: ${err.message}`,
|
|
161
174
|
);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @format
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type {RequireContext} from '../lib/contextModule';
|
|
11
|
+
import type {
|
|
12
|
+
ModuleData,
|
|
13
|
+
ResolvedDependency,
|
|
14
|
+
ResolveFn,
|
|
15
|
+
TransformFn,
|
|
16
|
+
} from './types';
|
|
17
|
+
|
|
18
|
+
type Parameters<T> = Readonly<{
|
|
19
|
+
resolve: ResolveFn;
|
|
20
|
+
transform: TransformFn<T>;
|
|
21
|
+
shouldTraverse: ($$PARAM_0$$: ResolvedDependency) => boolean;
|
|
22
|
+
}>;
|
|
23
|
+
export declare function buildSubgraph<T>(
|
|
24
|
+
entryPaths: ReadonlySet<string>,
|
|
25
|
+
resolvedContexts: ReadonlyMap<string, null | undefined | RequireContext>,
|
|
26
|
+
$$PARAM_2$$: Parameters<T>,
|
|
27
|
+
): Promise<{
|
|
28
|
+
moduleData: Map<string, ModuleData<T>>;
|
|
29
|
+
errors: Map<string, Error>;
|
|
30
|
+
}>;
|
|
@@ -24,13 +24,13 @@ function resolveDependencies(parentPath, dependencies, resolve) {
|
|
|
24
24
|
contextParams,
|
|
25
25
|
);
|
|
26
26
|
const resolvedContext = {
|
|
27
|
-
from,
|
|
28
|
-
mode: contextParams.mode,
|
|
29
|
-
recursive: contextParams.recursive,
|
|
30
27
|
filter: new RegExp(
|
|
31
28
|
contextParams.filter.pattern,
|
|
32
29
|
contextParams.filter.flags,
|
|
33
30
|
),
|
|
31
|
+
from,
|
|
32
|
+
mode: contextParams.mode,
|
|
33
|
+
recursive: contextParams.recursive,
|
|
34
34
|
};
|
|
35
35
|
resolvedContexts.set(key, resolvedContext);
|
|
36
36
|
maybeResolvedDep = {
|
|
@@ -110,7 +110,7 @@ async function buildSubgraph(
|
|
|
110
110
|
),
|
|
111
111
|
);
|
|
112
112
|
return {
|
|
113
|
-
moduleData,
|
|
114
113
|
errors,
|
|
114
|
+
moduleData,
|
|
115
115
|
};
|
|
116
116
|
}
|
|
@@ -22,7 +22,7 @@ import {deriveAbsolutePathFromContext} from '../lib/contextModule';
|
|
|
22
22
|
import {isResolvedDependency} from '../lib/isResolvedDependency';
|
|
23
23
|
import path from 'path';
|
|
24
24
|
|
|
25
|
-
type Parameters<T> =
|
|
25
|
+
type Parameters<T> = Readonly<{
|
|
26
26
|
resolve: ResolveFn,
|
|
27
27
|
transform: TransformFn<T>,
|
|
28
28
|
shouldTraverse: ResolvedDependency => boolean,
|
|
@@ -30,7 +30,7 @@ type Parameters<T> = $ReadOnly<{
|
|
|
30
30
|
|
|
31
31
|
function resolveDependencies(
|
|
32
32
|
parentPath: string,
|
|
33
|
-
dependencies:
|
|
33
|
+
dependencies: ReadonlyArray<TransformResultDependency>,
|
|
34
34
|
resolve: ResolveFn,
|
|
35
35
|
): {
|
|
36
36
|
dependencies: Map<string, Dependency>,
|
|
@@ -52,13 +52,13 @@ function resolveDependencies(
|
|
|
52
52
|
const absolutePath = deriveAbsolutePathFromContext(from, contextParams);
|
|
53
53
|
|
|
54
54
|
const resolvedContext: RequireContext = {
|
|
55
|
-
from,
|
|
56
|
-
mode: contextParams.mode,
|
|
57
|
-
recursive: contextParams.recursive,
|
|
58
55
|
filter: new RegExp(
|
|
59
56
|
contextParams.filter.pattern,
|
|
60
57
|
contextParams.filter.flags,
|
|
61
58
|
),
|
|
59
|
+
from,
|
|
60
|
+
mode: contextParams.mode,
|
|
61
|
+
recursive: contextParams.recursive,
|
|
62
62
|
};
|
|
63
63
|
|
|
64
64
|
resolvedContexts.set(key, resolvedContext);
|
|
@@ -100,8 +100,8 @@ function resolveDependencies(
|
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
export async function buildSubgraph<T>(
|
|
103
|
-
entryPaths:
|
|
104
|
-
resolvedContexts:
|
|
103
|
+
entryPaths: ReadonlySet<string>,
|
|
104
|
+
resolvedContexts: ReadonlyMap<string, ?RequireContext>,
|
|
105
105
|
{resolve, transform, shouldTraverse}: Parameters<T>,
|
|
106
106
|
): Promise<{
|
|
107
107
|
moduleData: Map<string, ModuleData<T>>,
|
|
@@ -157,5 +157,5 @@ export async function buildSubgraph<T>(
|
|
|
157
157
|
),
|
|
158
158
|
);
|
|
159
159
|
|
|
160
|
-
return {
|
|
160
|
+
return {errors, moduleData};
|
|
161
161
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @format
|
|
8
|
+
* @oncall react_native
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type {TransformerConfig} from './Worker';
|
|
12
|
+
|
|
13
|
+
declare function getTransformCacheKey(opts: {
|
|
14
|
+
readonly cacheVersion: string;
|
|
15
|
+
readonly projectRoot: string;
|
|
16
|
+
readonly transformerConfig: TransformerConfig;
|
|
17
|
+
}): string;
|
|
18
|
+
export default getTransformCacheKey;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @format
|
|
8
|
+
* @oncall react_native
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type {DeltaBundle} from 'metro-runtime/src/modules/types';
|
|
12
|
+
|
|
13
|
+
declare function mergeDeltas(
|
|
14
|
+
delta1: DeltaBundle,
|
|
15
|
+
delta2: DeltaBundle,
|
|
16
|
+
): DeltaBundle;
|
|
17
|
+
export default mergeDeltas;
|
|
@@ -9,158 +9,155 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import type {RequireContext} from '../lib/contextModule';
|
|
12
|
-
import type CountingSet from '../lib/CountingSet';
|
|
13
12
|
import type {RequireContextParams} from '../ModuleGraph/worker/collectDependencies';
|
|
13
|
+
import type {ReadonlySourceLocation} from '../shared/types';
|
|
14
14
|
import type {Graph} from './Graph';
|
|
15
15
|
import type {JsTransformOptions} from 'metro-transform-worker';
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
readonly data: {code: string};
|
|
19
|
-
readonly type: string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export type AsyncDependencyType = 'async' | 'prefetch' | 'weak';
|
|
17
|
+
import CountingSet from '../lib/CountingSet';
|
|
23
18
|
|
|
24
|
-
export
|
|
19
|
+
export type MixedOutput = {readonly data: unknown; readonly type: string};
|
|
20
|
+
export type AsyncDependencyType = 'async' | 'maybeSync' | 'prefetch' | 'weak';
|
|
21
|
+
export type TransformResultDependency = Readonly<{
|
|
25
22
|
/**
|
|
26
23
|
* The literal name provided to a require or import call. For example 'foo' in
|
|
27
24
|
* case of `require('foo')`.
|
|
28
25
|
*/
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
name: string;
|
|
31
27
|
/**
|
|
32
28
|
* Extra data returned by the dependency extractor.
|
|
33
29
|
*/
|
|
34
|
-
|
|
30
|
+
data: Readonly<{
|
|
35
31
|
/**
|
|
36
32
|
* A locally unique key for this dependency within the current module.
|
|
37
33
|
*/
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
key: string;
|
|
40
35
|
/**
|
|
41
36
|
* If not null, this dependency is due to a dynamic `import()` or `__prefetchImport()` call.
|
|
42
37
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
asyncType: AsyncDependencyType | null;
|
|
39
|
+
/**
|
|
40
|
+
* True if the dependency is declared with a static "import x from 'y'" or
|
|
41
|
+
* an import() call.
|
|
42
|
+
*/
|
|
43
|
+
isESMImport: boolean;
|
|
45
44
|
/**
|
|
46
45
|
* The dependency is enclosed in a try/catch block.
|
|
47
46
|
*/
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
readonly locs: ReadonlyArray<{
|
|
51
|
-
readonly start: {readonly line: number; readonly column: number};
|
|
52
|
-
readonly end: {readonly line: number; readonly column: number};
|
|
53
|
-
}>;
|
|
54
|
-
|
|
47
|
+
isOptional?: boolean;
|
|
48
|
+
locs: ReadonlyArray<ReadonlySourceLocation>;
|
|
55
49
|
/** Context for requiring a collection of modules. */
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
export
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
50
|
+
contextParams?: RequireContextParams;
|
|
51
|
+
}>;
|
|
52
|
+
}>;
|
|
53
|
+
export type ResolvedDependency = Readonly<{
|
|
54
|
+
absolutePath: string;
|
|
55
|
+
data: TransformResultDependency;
|
|
56
|
+
}>;
|
|
57
|
+
export type Dependency =
|
|
58
|
+
| ResolvedDependency
|
|
59
|
+
| Readonly<{data: TransformResultDependency}>;
|
|
60
|
+
export type Module<T = MixedOutput> = Readonly<{
|
|
61
|
+
dependencies: Map<string, Dependency>;
|
|
62
|
+
inverseDependencies: CountingSet<string>;
|
|
63
|
+
output: ReadonlyArray<T>;
|
|
64
|
+
path: string;
|
|
65
|
+
getSource: () => Buffer;
|
|
66
|
+
unstable_transformResultKey?: null | undefined | string;
|
|
67
|
+
}>;
|
|
68
|
+
export type ModuleData<T = MixedOutput> = Readonly<{
|
|
69
|
+
dependencies: ReadonlyMap<string, Dependency>;
|
|
70
|
+
resolvedContexts: ReadonlyMap<string, RequireContext>;
|
|
71
|
+
output: ReadonlyArray<T>;
|
|
72
|
+
getSource: () => Buffer;
|
|
73
|
+
unstable_transformResultKey?: null | undefined | string;
|
|
74
|
+
}>;
|
|
74
75
|
export type Dependencies<T = MixedOutput> = Map<string, Module<T>>;
|
|
75
76
|
export type ReadOnlyDependencies<T = MixedOutput> = ReadonlyMap<
|
|
76
77
|
string,
|
|
77
78
|
Module<T>
|
|
78
79
|
>;
|
|
79
|
-
|
|
80
80
|
export type TransformInputOptions = Omit<
|
|
81
81
|
JsTransformOptions,
|
|
82
82
|
'inlinePlatform' | 'inlineRequires'
|
|
83
83
|
>;
|
|
84
|
-
|
|
85
84
|
export type GraphInputOptions = Readonly<{
|
|
86
85
|
entryPoints: ReadonlySet<string>;
|
|
87
|
-
// Unused in core but useful for custom serializers / experimentalSerializerHook
|
|
88
86
|
transformOptions: TransformInputOptions;
|
|
89
87
|
}>;
|
|
90
|
-
|
|
91
88
|
export interface ReadOnlyGraph<T = MixedOutput> {
|
|
92
89
|
readonly entryPoints: ReadonlySet<string>;
|
|
93
|
-
// Unused in core but useful for custom serializers / experimentalSerializerHook
|
|
94
90
|
readonly transformOptions: Readonly<TransformInputOptions>;
|
|
95
91
|
readonly dependencies: ReadOnlyDependencies<T>;
|
|
96
92
|
}
|
|
97
|
-
|
|
98
93
|
export type {Graph};
|
|
99
|
-
|
|
100
|
-
export interface TransformResult<T = MixedOutput> {
|
|
94
|
+
export type TransformResult<T = MixedOutput> = Readonly<{
|
|
101
95
|
dependencies: ReadonlyArray<TransformResultDependency>;
|
|
102
96
|
output: ReadonlyArray<T>;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
export
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
|
|
97
|
+
unstable_transformResultKey?: null | undefined | string;
|
|
98
|
+
}>;
|
|
99
|
+
export type TransformResultWithSource<T = MixedOutput> = Readonly<
|
|
100
|
+
Omit<TransformResult<T>, keyof {getSource: () => Buffer}> & {
|
|
101
|
+
getSource: () => Buffer;
|
|
102
|
+
}
|
|
103
|
+
>;
|
|
110
104
|
export type TransformFn<T = MixedOutput> = (
|
|
111
|
-
|
|
112
|
-
|
|
105
|
+
$$PARAM_0$$: string,
|
|
106
|
+
$$PARAM_1$$: null | undefined | RequireContext,
|
|
113
107
|
) => Promise<TransformResultWithSource<T>>;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
108
|
+
export type ResolveFn = (
|
|
109
|
+
from: string,
|
|
110
|
+
dependency: TransformResultDependency,
|
|
111
|
+
) => BundlerResolution;
|
|
112
|
+
export type AllowOptionalDependenciesWithOptions = {
|
|
113
|
+
readonly exclude: Array<string>;
|
|
114
|
+
};
|
|
119
115
|
export type AllowOptionalDependencies =
|
|
120
116
|
| boolean
|
|
121
117
|
| AllowOptionalDependenciesWithOptions;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
| ((numProcessed: number, total: number) => unknown)
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
export
|
|
118
|
+
export type BundlerResolution = Readonly<{
|
|
119
|
+
type: 'sourceFile';
|
|
120
|
+
filePath: string;
|
|
121
|
+
}>;
|
|
122
|
+
export type Options<T = MixedOutput> = Readonly<{
|
|
123
|
+
resolve: ResolveFn;
|
|
124
|
+
transform: TransformFn<T>;
|
|
125
|
+
transformOptions: TransformInputOptions;
|
|
126
|
+
onProgress:
|
|
127
|
+
| null
|
|
128
|
+
| undefined
|
|
129
|
+
| ((numProcessed: number, total: number) => unknown);
|
|
130
|
+
lazy: boolean;
|
|
131
|
+
unstable_allowRequireContext: boolean;
|
|
132
|
+
unstable_enablePackageExports: boolean;
|
|
133
|
+
unstable_incrementalResolution: boolean;
|
|
134
|
+
shallow: boolean;
|
|
135
|
+
}>;
|
|
136
|
+
export type DeltaResult<T = MixedOutput> = {
|
|
141
137
|
readonly added: Map<string, Module<T>>;
|
|
142
138
|
readonly modified: Map<string, Module<T>>;
|
|
143
139
|
readonly deleted: Set<string>;
|
|
144
140
|
readonly reset: boolean;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
readonly getRunModuleStatement: (
|
|
141
|
+
};
|
|
142
|
+
export type SerializerOptions = Readonly<{
|
|
143
|
+
asyncRequireModulePath: string;
|
|
144
|
+
createModuleId: ($$PARAM_0$$: string) => number;
|
|
145
|
+
dev: boolean;
|
|
146
|
+
getRunModuleStatement: (
|
|
152
147
|
moduleId: number | string,
|
|
153
148
|
globalPrefix: string,
|
|
154
149
|
) => string;
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
150
|
+
globalPrefix: string;
|
|
151
|
+
includeAsyncPaths: boolean;
|
|
152
|
+
inlineSourceMap: null | undefined | boolean;
|
|
153
|
+
modulesOnly: boolean;
|
|
154
|
+
processModuleFilter: (module: Module) => boolean;
|
|
155
|
+
projectRoot: string;
|
|
156
|
+
runBeforeMainModule: ReadonlyArray<string>;
|
|
157
|
+
runModule: boolean;
|
|
158
|
+
serverRoot: string;
|
|
159
|
+
shouldAddToIgnoreList: ($$PARAM_0$$: Module) => boolean;
|
|
160
|
+
sourceMapUrl: null | undefined | string;
|
|
161
|
+
sourceUrl: null | undefined | string;
|
|
162
|
+
getSourceUrl: null | undefined | (($$PARAM_0$$: Module) => string);
|
|
163
|
+
}>;
|