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.
Files changed (229) hide show
  1. package/package.json +28 -24
  2. package/src/Assets.d.ts +83 -0
  3. package/src/Assets.js +42 -29
  4. package/src/Assets.js.flow +26 -15
  5. package/src/Bundler/util.d.ts +27 -0
  6. package/src/Bundler/util.js +25 -21
  7. package/src/Bundler/util.js.flow +2 -2
  8. package/src/Bundler.d.ts +14 -15
  9. package/src/Bundler.js.flow +1 -1
  10. package/src/DeltaBundler/DeltaCalculator.d.ts +71 -0
  11. package/src/DeltaBundler/DeltaCalculator.js +4 -4
  12. package/src/DeltaBundler/DeltaCalculator.js.flow +8 -8
  13. package/src/DeltaBundler/Graph.d.ts +135 -8
  14. package/src/DeltaBundler/Graph.js +16 -16
  15. package/src/DeltaBundler/Graph.js.flow +30 -30
  16. package/src/DeltaBundler/Serializers/baseJSBundle.d.ts +20 -0
  17. package/src/DeltaBundler/Serializers/baseJSBundle.js.flow +1 -1
  18. package/src/DeltaBundler/Serializers/getAllFiles.d.ts +22 -0
  19. package/src/DeltaBundler/Serializers/getAllFiles.js.flow +2 -2
  20. package/src/DeltaBundler/Serializers/getAssets.d.ts +25 -0
  21. package/src/DeltaBundler/Serializers/getAssets.js.flow +2 -2
  22. package/src/DeltaBundler/Serializers/getExplodedSourceMap.js.flow +2 -2
  23. package/src/DeltaBundler/Serializers/getRamBundleInfo.d.ts +36 -6
  24. package/src/DeltaBundler/Serializers/getRamBundleInfo.js.flow +8 -8
  25. package/src/DeltaBundler/Serializers/helpers/getInlineSourceMappingURL.d.ts +12 -0
  26. package/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.d.ts +33 -0
  27. package/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies.d.ts +17 -0
  28. package/src/DeltaBundler/Serializers/helpers/js.d.ts +30 -0
  29. package/src/DeltaBundler/Serializers/helpers/js.js +25 -21
  30. package/src/DeltaBundler/Serializers/helpers/js.js.flow +6 -6
  31. package/src/DeltaBundler/Serializers/helpers/processModules.d.ts +25 -0
  32. package/src/DeltaBundler/Serializers/helpers/processModules.js.flow +3 -3
  33. package/src/DeltaBundler/Serializers/hmrJSBundle.d.ts +30 -0
  34. package/src/DeltaBundler/Serializers/hmrJSBundle.js +25 -21
  35. package/src/DeltaBundler/Serializers/hmrJSBundle.js.flow +5 -5
  36. package/src/DeltaBundler/Serializers/sourceMapGenerator.d.ts +29 -0
  37. package/src/DeltaBundler/Serializers/sourceMapGenerator.js.flow +6 -6
  38. package/src/DeltaBundler/Serializers/sourceMapObject.d.ts +23 -0
  39. package/src/DeltaBundler/Serializers/sourceMapObject.js.flow +2 -2
  40. package/src/DeltaBundler/Serializers/sourceMapString.d.ts +22 -0
  41. package/src/DeltaBundler/Serializers/sourceMapString.js.flow +2 -2
  42. package/src/DeltaBundler/Transformer.d.ts +38 -0
  43. package/src/DeltaBundler/Transformer.js.flow +3 -3
  44. package/src/DeltaBundler/Worker.d.ts +19 -27
  45. package/src/DeltaBundler/Worker.flow.js.flow +1 -1
  46. package/src/DeltaBundler/WorkerFarm.d.ts +70 -0
  47. package/src/DeltaBundler/WorkerFarm.js +1 -1
  48. package/src/DeltaBundler/WorkerFarm.js.flow +26 -13
  49. package/src/DeltaBundler/buildSubgraph.d.ts +30 -0
  50. package/src/DeltaBundler/buildSubgraph.js +4 -4
  51. package/src/DeltaBundler/buildSubgraph.js.flow +8 -8
  52. package/src/DeltaBundler/getTransformCacheKey.d.ts +18 -0
  53. package/src/DeltaBundler/mergeDeltas.d.ts +17 -0
  54. package/src/DeltaBundler/types.d.ts +97 -100
  55. package/src/DeltaBundler/types.js.flow +36 -34
  56. package/src/DeltaBundler.d.ts +14 -12
  57. package/src/DeltaBundler.js.flow +2 -2
  58. package/src/HmrServer.d.ts +79 -0
  59. package/src/HmrServer.js +34 -29
  60. package/src/HmrServer.js.flow +17 -12
  61. package/src/IncrementalBundler/GraphNotFoundError.d.ts +17 -0
  62. package/src/IncrementalBundler/ResourceNotFoundError.d.ts +15 -0
  63. package/src/IncrementalBundler/RevisionNotFoundError.d.ts +17 -0
  64. package/src/IncrementalBundler.d.ts +43 -45
  65. package/src/IncrementalBundler.js +29 -21
  66. package/src/IncrementalBundler.js.flow +13 -9
  67. package/src/ModuleGraph/worker/JsFileWrapping.d.ts +29 -0
  68. package/src/ModuleGraph/worker/JsFileWrapping.js +25 -21
  69. package/src/ModuleGraph/worker/JsFileWrapping.js.flow +10 -5
  70. package/src/ModuleGraph/worker/collectDependencies.d.ts +118 -14
  71. package/src/ModuleGraph/worker/collectDependencies.js +25 -21
  72. package/src/ModuleGraph/worker/collectDependencies.js.flow +27 -21
  73. package/src/ModuleGraph/worker/generateImportNames.d.ts +19 -0
  74. package/src/ModuleGraph/worker/generateImportNames.js.flow +4 -2
  75. package/src/ModuleGraph/worker/importLocationsPlugin.d.ts +26 -0
  76. package/src/ModuleGraph/worker/importLocationsPlugin.js.flow +7 -3
  77. package/src/Server/MultipartResponse.d.ts +5 -6
  78. package/src/Server/MultipartResponse.js.flow +1 -1
  79. package/src/Server/symbolicate.js.flow +4 -4
  80. package/src/Server.d.ts +220 -67
  81. package/src/Server.js +149 -45
  82. package/src/Server.js.flow +167 -57
  83. package/src/cli/parseKeyValueParamArray.d.ts +14 -0
  84. package/src/cli/parseKeyValueParamArray.js.flow +1 -1
  85. package/src/cli-utils.d.ts +19 -0
  86. package/src/cli-utils.js.flow +2 -2
  87. package/src/commands/build.d.ts +16 -0
  88. package/src/commands/build.js.flow +11 -10
  89. package/src/commands/dependencies.d.ts +16 -0
  90. package/src/commands/dependencies.js.flow +8 -4
  91. package/src/commands/serve.d.ts +16 -0
  92. package/src/commands/serve.js +2 -0
  93. package/src/commands/serve.js.flow +14 -9
  94. package/src/index.d.ts +97 -110
  95. package/src/index.flow.js +53 -35
  96. package/src/index.flow.js.flow +49 -29
  97. package/src/integration_tests/basic_bundle/AssetRegistry.js.flow +1 -1
  98. package/src/integration_tests/basic_bundle/ErrorBundle.js.flow +1 -1
  99. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-import.js.flow +1 -1
  100. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-multi-line-import-with-escapes.js.flow +1 -1
  101. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-multi-line-import.js.flow +1 -1
  102. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-require-with-embedded-comment.js.flow +1 -1
  103. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-require.js.flow +1 -1
  104. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-specifier-with-escapes.js.flow +1 -1
  105. package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-import.js.flow +1 -1
  106. package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-require.js.flow +1 -1
  107. package/src/integration_tests/basic_bundle/import-export/index.js +25 -21
  108. package/src/integration_tests/basic_bundle/import-export/index.js.flow +3 -3
  109. package/src/integration_tests/basic_bundle/import-export/utils.js.flow +2 -2
  110. package/src/integration_tests/basic_bundle/loadBundleAsyncForTest.js.flow +1 -1
  111. package/src/integration_tests/basic_bundle/optional-dependencies/index.js.flow +1 -1
  112. package/src/integration_tests/basic_bundle/require-context/conflict.js.flow +1 -1
  113. package/src/integration_tests/basic_bundle/require-context/empty.js.flow +1 -1
  114. package/src/integration_tests/basic_bundle/require-context/matching.js.flow +1 -1
  115. package/src/integration_tests/basic_bundle/require-context/mode-eager.js.flow +1 -1
  116. package/src/integration_tests/basic_bundle/require-context/mode-lazy-once.js.flow +1 -1
  117. package/src/integration_tests/basic_bundle/require-context/mode-lazy.js.flow +1 -1
  118. package/src/integration_tests/basic_bundle/require-context/mode-sync.js.flow +2 -2
  119. package/src/integration_tests/basic_bundle/require-context/utils.js.flow +1 -1
  120. package/src/integration_tests/basic_bundle/require-resolveWeak/import-and-resolveWeak.js.flow +1 -1
  121. package/src/integration_tests/basic_bundle/require-resolveWeak/multiple.js.flow +1 -1
  122. package/src/integration_tests/basic_bundle/require-resolveWeak/never-required.js.flow +1 -1
  123. package/src/integration_tests/basic_bundle/require-resolveWeak/require-and-resolveWeak.js.flow +1 -1
  124. package/src/integration_tests/execBundle.js.flow +1 -1
  125. package/src/lib/BatchProcessor.d.ts +54 -0
  126. package/src/lib/BatchProcessor.js +5 -2
  127. package/src/lib/BatchProcessor.js.flow +10 -7
  128. package/src/lib/CountingSet.d.ts +10 -10
  129. package/src/lib/CountingSet.js.flow +4 -4
  130. package/src/lib/JsonReporter.d.ts +37 -0
  131. package/src/lib/JsonReporter.js +5 -3
  132. package/src/lib/JsonReporter.js.flow +19 -17
  133. package/src/lib/RamBundleParser.d.ts +29 -0
  134. package/src/lib/RamBundleParser.js.flow +1 -1
  135. package/src/lib/TerminalReporter.d.ts +97 -6
  136. package/src/lib/TerminalReporter.js +37 -34
  137. package/src/lib/TerminalReporter.js.flow +21 -30
  138. package/src/lib/bundleProgressUtils.d.ts +26 -0
  139. package/src/lib/bundleProgressUtils.js +19 -0
  140. package/src/lib/bundleProgressUtils.js.flow +35 -0
  141. package/src/lib/bundleToString.d.ts +19 -0
  142. package/src/lib/contextModule.d.ts +20 -9
  143. package/src/lib/contextModule.js.flow +1 -1
  144. package/src/lib/contextModuleTemplates.d.ts +25 -0
  145. package/src/lib/contextModuleTemplates.js +25 -21
  146. package/src/lib/countLines.d.ts +12 -0
  147. package/src/lib/countLines.js +4 -3
  148. package/src/lib/countLines.js.flow +3 -4
  149. package/src/lib/createWebsocketServer.d.ts +43 -0
  150. package/src/lib/createWebsocketServer.js +9 -2
  151. package/src/lib/createWebsocketServer.js.flow +16 -9
  152. package/src/lib/debounceAsyncQueue.d.ts +15 -0
  153. package/src/lib/debounceAsyncQueue.js.flow +1 -1
  154. package/src/lib/formatBundlingError.d.ts +23 -0
  155. package/src/lib/formatBundlingError.js.flow +1 -1
  156. package/src/lib/getAppendScripts.d.ts +31 -0
  157. package/src/lib/getAppendScripts.js.flow +4 -4
  158. package/src/lib/getGraphId.d.ts +15 -1
  159. package/src/lib/getGraphId.js.flow +1 -1
  160. package/src/lib/getPreludeCode.d.ts +18 -0
  161. package/src/lib/getPreludeCode.js +4 -0
  162. package/src/lib/getPreludeCode.js.flow +10 -3
  163. package/src/lib/getPrependedScripts.d.ts +24 -0
  164. package/src/lib/getPrependedScripts.js +36 -22
  165. package/src/lib/getPrependedScripts.js.flow +10 -3
  166. package/src/lib/isResolvedDependency.d.ts +15 -0
  167. package/src/lib/logToConsole.d.ts +19 -0
  168. package/src/lib/logToConsole.js.flow +2 -2
  169. package/src/lib/parseBundleOptionsFromBundleRequestUrl.d.ts +17 -0
  170. package/src/lib/parseBundleOptionsFromBundleRequestUrl.js +25 -21
  171. package/src/lib/parseCustomResolverOptions.d.ts +16 -0
  172. package/src/lib/parseCustomResolverOptions.js.flow +2 -2
  173. package/src/lib/parseCustomTransformOptions.d.ts +16 -0
  174. package/src/lib/parseCustomTransformOptions.js.flow +1 -1
  175. package/src/lib/parseJsonBody.d.ts +27 -0
  176. package/src/lib/parseJsonBody.js.flow +11 -1
  177. package/src/lib/pathUtils.d.ts +14 -0
  178. package/src/lib/pathUtils.js +25 -21
  179. package/src/lib/pathUtils.js.flow +1 -1
  180. package/src/lib/relativizeSourceMap.d.ts +17 -0
  181. package/src/lib/reporting.d.ts +65 -81
  182. package/src/lib/reporting.js.flow +4 -4
  183. package/src/lib/splitBundleOptions.d.ts +16 -0
  184. package/src/lib/transformHelpers.d.ts +35 -0
  185. package/src/lib/transformHelpers.js +11 -9
  186. package/src/lib/transformHelpers.js.flow +17 -15
  187. package/src/node-haste/DependencyGraph/ModuleResolution.d.ts +126 -0
  188. package/src/node-haste/DependencyGraph/ModuleResolution.js +48 -42
  189. package/src/node-haste/DependencyGraph/ModuleResolution.js.flow +35 -32
  190. package/src/node-haste/DependencyGraph/createFileMap.d.ts +29 -0
  191. package/src/node-haste/DependencyGraph/createFileMap.js +56 -38
  192. package/src/node-haste/DependencyGraph/createFileMap.js.flow +44 -18
  193. package/src/node-haste/DependencyGraph.d.ts +57 -33
  194. package/src/node-haste/DependencyGraph.js +40 -31
  195. package/src/node-haste/DependencyGraph.js.flow +35 -37
  196. package/src/node-haste/Package.d.ts +21 -0
  197. package/src/node-haste/PackageCache.d.ts +34 -0
  198. package/src/node-haste/lib/AssetPaths.d.ts +29 -0
  199. package/src/node-haste/lib/AssetPaths.js +2 -2
  200. package/src/node-haste/lib/AssetPaths.js.flow +4 -4
  201. package/src/node-haste/lib/parsePlatformFilePath.d.ts +25 -0
  202. package/src/node-haste/lib/parsePlatformFilePath.js +6 -6
  203. package/src/node-haste/lib/parsePlatformFilePath.js.flow +4 -4
  204. package/src/shared/output/RamBundle/as-assets.d.ts +25 -0
  205. package/src/shared/output/RamBundle/as-assets.js.flow +6 -6
  206. package/src/shared/output/RamBundle/as-indexed-file.d.ts +38 -0
  207. package/src/shared/output/RamBundle/as-indexed-file.js.flow +5 -5
  208. package/src/shared/output/RamBundle/buildSourcemapWithMetadata.d.ts +23 -0
  209. package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js.flow +5 -5
  210. package/src/shared/output/RamBundle/magic-number.d.ts +14 -0
  211. package/src/shared/output/RamBundle/util.d.ts +41 -0
  212. package/src/shared/output/RamBundle/util.js.flow +5 -5
  213. package/src/shared/output/RamBundle/write-sourcemap.d.ts +16 -0
  214. package/src/shared/output/RamBundle/write-sourcemap.js.flow +1 -1
  215. package/src/shared/output/RamBundle.d.ts +26 -0
  216. package/src/shared/output/RamBundle.js.flow +1 -1
  217. package/src/shared/output/bundle.d.ts +9 -17
  218. package/src/shared/output/bundle.flow.js.flow +3 -3
  219. package/src/shared/output/meta.d.ts +15 -0
  220. package/src/shared/output/meta.js +2 -2
  221. package/src/shared/output/meta.js.flow +1 -1
  222. package/src/shared/output/unbundle.d.ts +11 -0
  223. package/src/shared/output/writeFile.d.ts +16 -0
  224. package/src/shared/output/writeFile.js +8 -3
  225. package/src/shared/output/writeFile.js.flow +8 -2
  226. package/src/shared/types.d.ts +81 -66
  227. package/src/shared/types.js.flow +20 -5
  228. package/src/Asset.d.ts +0 -25
  229. 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 LogEntry = unknown;
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
- interface Data {
37
- readonly result: TransformResult<void>;
38
- readonly sha1: string;
39
- readonly transformFileStartLogEntry: LogEntry;
40
- readonly transformFileEndLogEntry: LogEntry;
41
- }
42
-
43
- declare const worker: Worker;
44
-
45
- export default worker;
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};
@@ -39,7 +39,7 @@ export type TransformerConfig = {
39
39
  ...
40
40
  };
41
41
 
42
- type Data = $ReadOnly<{
42
+ type Data = Readonly<{
43
43
  result: TransformResult<>,
44
44
  sha1: string,
45
45
  transformFileStartLogEntry: LogEntry,
@@ -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 || "Error"}${err.message.includes(filename) ? "" : " in " + filename}: ${err.message}`,
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
- end(): void,
24
- ...Worker,
25
- };
25
+ }>;
26
26
 
27
- type TransformerResult = $ReadOnly<{
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 = (require('./Worker'): 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: $ReadOnlyArray<string>,
107
+ exposedMethods: ReadonlyArray<string>,
108
108
  numWorkers: number,
109
- ): any {
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(err: any, filename: string): TransformError {
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(err: any, filename: string): TransformError {
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 || 'Error'}${
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> = $ReadOnly<{
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: $ReadOnlyArray<TransformResultDependency>,
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: $ReadOnlySet<string>,
104
- resolvedContexts: $ReadOnlyMap<string, ?RequireContext>,
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 {moduleData, errors};
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
- export interface MixedOutput {
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 interface TransformResultDependency {
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
- readonly name: string;
30
-
26
+ name: string;
31
27
  /**
32
28
  * Extra data returned by the dependency extractor.
33
29
  */
34
- readonly data: {
30
+ data: Readonly<{
35
31
  /**
36
32
  * A locally unique key for this dependency within the current module.
37
33
  */
38
- readonly key: string;
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
- readonly asyncType: AsyncDependencyType | null;
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
- readonly isOptional?: boolean;
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
- readonly contextParams?: RequireContextParams;
57
- };
58
- }
59
-
60
- export interface Dependency {
61
- readonly absolutePath: string;
62
- readonly data: TransformResultDependency;
63
- [key: string]: unknown;
64
- }
65
-
66
- export interface Module<T = MixedOutput> {
67
- readonly dependencies: Map<string, Dependency>;
68
- readonly inverseDependencies: CountingSet<string>;
69
- readonly output: ReadonlyArray<T>;
70
- readonly path: string;
71
- readonly getSource: () => Buffer;
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 interface TransformResultWithSource<T = MixedOutput>
106
- extends TransformResult<T> {
107
- getSource: () => Buffer;
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
- modulePath: string,
112
- requireContext: RequireContext | null,
105
+ $$PARAM_0$$: string,
106
+ $$PARAM_1$$: null | undefined | RequireContext,
113
107
  ) => Promise<TransformResultWithSource<T>>;
114
-
115
- export interface AllowOptionalDependenciesWithOptions {
116
- readonly exclude: string[];
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
- export interface BundlerResolution {
124
- readonly type: 'sourceFile';
125
- readonly filePath: string;
126
- }
127
-
128
- export interface Options<T = MixedOutput> {
129
- readonly resolve: (from: string, to: TransformResultDependency) => string;
130
- readonly transform: TransformFn<T>;
131
- readonly transformOptions: TransformInputOptions;
132
- readonly onProgress:
133
- | ((numProcessed: number, total: number) => unknown)
134
- | null;
135
- readonly lazy: boolean;
136
- readonly unstable_allowRequireContext: boolean;
137
- readonly shallow: boolean;
138
- }
139
-
140
- export interface DeltaResult<T = MixedOutput> {
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
- export interface SerializerOptions<T = MixedOutput> {
148
- readonly asyncRequireModulePath: string;
149
- readonly createModuleId: (filePath: string) => number;
150
- readonly dev: boolean;
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
- readonly includeAsyncPaths: boolean;
156
- readonly inlineSourceMap?: boolean;
157
- readonly modulesOnly: boolean;
158
- readonly processModuleFilter: (module: Module<T>) => boolean;
159
- readonly projectRoot: string;
160
- readonly runBeforeMainModule: ReadonlyArray<string>;
161
- readonly runModule: boolean;
162
- readonly serverRoot: string;
163
- readonly shouldAddToIgnoreList: (module: Module<T>) => boolean;
164
- readonly sourceMapUrl?: string;
165
- readonly sourceUrl?: string;
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
+ }>;