metro 0.65.2 → 0.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/package.json +27 -27
  2. package/src/Assets.js +9 -9
  3. package/src/Assets.js.flow +5 -7
  4. package/src/Bundler/util.js +17 -15
  5. package/src/Bundler/util.js.flow +12 -10
  6. package/src/Bundler.js +22 -9
  7. package/src/Bundler.js.flow +20 -7
  8. package/src/DeltaBundler/DeltaCalculator.js +17 -15
  9. package/src/DeltaBundler/DeltaCalculator.js.flow +9 -7
  10. package/src/DeltaBundler/Serializers/baseBytecodeBundle.js +13 -13
  11. package/src/DeltaBundler/Serializers/baseBytecodeBundle.js.flow +6 -7
  12. package/src/DeltaBundler/Serializers/baseJSBundle.js +4 -4
  13. package/src/DeltaBundler/Serializers/baseJSBundle.js.flow +4 -4
  14. package/src/DeltaBundler/Serializers/getAllFiles.js +1 -1
  15. package/src/DeltaBundler/Serializers/getAllFiles.js.flow +3 -3
  16. package/src/DeltaBundler/Serializers/getAssets.js +3 -3
  17. package/src/DeltaBundler/Serializers/getAssets.js.flow +4 -5
  18. package/src/DeltaBundler/Serializers/getExplodedSourceMap.js +4 -4
  19. package/src/DeltaBundler/Serializers/getExplodedSourceMap.js.flow +4 -4
  20. package/src/DeltaBundler/Serializers/getRamBundleInfo.js +20 -20
  21. package/src/DeltaBundler/Serializers/getRamBundleInfo.js.flow +9 -10
  22. package/src/DeltaBundler/Serializers/helpers/bytecode.js +11 -11
  23. package/src/DeltaBundler/Serializers/helpers/bytecode.js.flow +5 -6
  24. package/src/DeltaBundler/Serializers/helpers/getInlineSourceMappingURL.js +1 -1
  25. package/src/DeltaBundler/Serializers/helpers/getInlineSourceMappingURL.js.flow +1 -1
  26. package/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js +2 -2
  27. package/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js.flow +4 -4
  28. package/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies.js +1 -1
  29. package/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies.js.flow +1 -1
  30. package/src/DeltaBundler/Serializers/helpers/js.js +18 -8
  31. package/src/DeltaBundler/Serializers/helpers/js.js.flow +19 -10
  32. package/src/DeltaBundler/Serializers/helpers/processBytecodeModules.js +4 -4
  33. package/src/DeltaBundler/Serializers/helpers/processBytecodeModules.js.flow +3 -3
  34. package/src/DeltaBundler/Serializers/helpers/processModules.js +4 -4
  35. package/src/DeltaBundler/Serializers/helpers/processModules.js.flow +3 -3
  36. package/src/DeltaBundler/Serializers/hmrJSBundle.js +9 -9
  37. package/src/DeltaBundler/Serializers/hmrJSBundle.js.flow +9 -8
  38. package/src/DeltaBundler/Serializers/sourceMapGenerator.js +6 -6
  39. package/src/DeltaBundler/Serializers/sourceMapGenerator.js.flow +3 -4
  40. package/src/DeltaBundler/Serializers/sourceMapObject.js +5 -5
  41. package/src/DeltaBundler/Serializers/sourceMapObject.js.flow +4 -4
  42. package/src/DeltaBundler/Serializers/sourceMapString.js +2 -2
  43. package/src/DeltaBundler/Serializers/sourceMapString.js.flow +3 -3
  44. package/src/DeltaBundler/Transformer.js +16 -14
  45. package/src/DeltaBundler/Transformer.js.flow +15 -15
  46. package/src/DeltaBundler/Worker.js +8 -11
  47. package/src/DeltaBundler/Worker.js.flow +8 -11
  48. package/src/DeltaBundler/WorkerFarm.js +15 -18
  49. package/src/DeltaBundler/WorkerFarm.js.flow +9 -11
  50. package/src/DeltaBundler/__fixtures__/hasteImpl.js +2 -2
  51. package/src/DeltaBundler/computeDelta.js +2 -2
  52. package/src/DeltaBundler/computeDelta.js.flow +2 -2
  53. package/src/DeltaBundler/getTransformCacheKey.js +4 -4
  54. package/src/DeltaBundler/getTransformCacheKey.js.flow +5 -6
  55. package/src/DeltaBundler/mergeDeltas.js +2 -2
  56. package/src/DeltaBundler/mergeDeltas.js.flow +1 -1
  57. package/src/DeltaBundler/traverseDependencies.js +22 -22
  58. package/src/DeltaBundler/traverseDependencies.js.flow +3 -3
  59. package/src/DeltaBundler/types.flow.js +1 -1
  60. package/src/DeltaBundler/types.flow.js.flow +15 -1
  61. package/src/DeltaBundler.js +5 -5
  62. package/src/DeltaBundler.js.flow +4 -4
  63. package/src/HmrServer.js +73 -55
  64. package/src/HmrServer.js.flow +42 -37
  65. package/src/IncrementalBundler/GraphNotFoundError.js +1 -1
  66. package/src/IncrementalBundler/GraphNotFoundError.js.flow +1 -1
  67. package/src/IncrementalBundler/ResourceNotFoundError.js +1 -1
  68. package/src/IncrementalBundler/ResourceNotFoundError.js.flow +1 -1
  69. package/src/IncrementalBundler/RevisionNotFoundError.js +1 -1
  70. package/src/IncrementalBundler/RevisionNotFoundError.js.flow +1 -1
  71. package/src/IncrementalBundler.js +46 -32
  72. package/src/IncrementalBundler.js.flow +32 -24
  73. package/src/ModuleGraph/module.js +3 -3
  74. package/src/ModuleGraph/module.js.flow +1 -1
  75. package/src/ModuleGraph/node-haste/HasteFS.js +5 -3
  76. package/src/ModuleGraph/node-haste/HasteFS.js.flow +3 -1
  77. package/src/ModuleGraph/node-haste/Module.js +1 -1
  78. package/src/ModuleGraph/node-haste/Module.js.flow +1 -1
  79. package/src/ModuleGraph/node-haste/ModuleCache.js +1 -1
  80. package/src/ModuleGraph/node-haste/ModuleCache.js.flow +3 -3
  81. package/src/ModuleGraph/node-haste/Package.js +3 -3
  82. package/src/ModuleGraph/node-haste/Package.js.flow +3 -3
  83. package/src/ModuleGraph/node-haste/node-haste.flow.js +1 -1
  84. package/src/ModuleGraph/node-haste/node-haste.flow.js.flow +1 -1
  85. package/src/ModuleGraph/node-haste/node-haste.js +41 -31
  86. package/src/ModuleGraph/node-haste/node-haste.js.flow +28 -22
  87. package/src/ModuleGraph/output/indexed-ram-bundle.js +17 -17
  88. package/src/ModuleGraph/output/indexed-ram-bundle.js.flow +41 -9
  89. package/src/ModuleGraph/output/multiple-files-ram-bundle.js +18 -18
  90. package/src/ModuleGraph/output/multiple-files-ram-bundle.js.flow +21 -9
  91. package/src/ModuleGraph/output/plain-bundle.js +6 -6
  92. package/src/ModuleGraph/output/plain-bundle.js.flow +7 -7
  93. package/src/ModuleGraph/output/reverse-dependency-map-references.js +3 -3
  94. package/src/ModuleGraph/output/reverse-dependency-map-references.js.flow +4 -8
  95. package/src/ModuleGraph/output/util.js +61 -40
  96. package/src/ModuleGraph/output/util.js.flow +51 -28
  97. package/src/ModuleGraph/silent-console.js +2 -2
  98. package/src/ModuleGraph/silent-console.js.flow +1 -1
  99. package/src/ModuleGraph/test-helpers.js +7 -7
  100. package/src/ModuleGraph/types.flow.js +1 -1
  101. package/src/ModuleGraph/types.flow.js.flow +47 -31
  102. package/src/ModuleGraph/worker/JsFileWrapping.js +16 -16
  103. package/src/ModuleGraph/worker/JsFileWrapping.js.flow +3 -2
  104. package/src/ModuleGraph/worker/Platforms.js +2 -2
  105. package/src/ModuleGraph/worker/Platforms.js.flow +1 -1
  106. package/src/ModuleGraph/worker/collectDependencies.js +24 -25
  107. package/src/ModuleGraph/worker/collectDependencies.js.flow +16 -18
  108. package/src/ModuleGraph/worker/generate.js +2 -2
  109. package/src/ModuleGraph/worker/generate.js.flow +3 -3
  110. package/src/ModuleGraph/worker/generateImportNames.js +5 -5
  111. package/src/ModuleGraph/worker/generateImportNames.js.flow +3 -5
  112. package/src/ModuleGraph/worker/mergeSourceMaps.js +8 -7
  113. package/src/ModuleGraph/worker/mergeSourceMaps.js.flow +3 -3
  114. package/src/Server/MultipartResponse.js +4 -8
  115. package/src/Server/symbolicate.js +8 -8
  116. package/src/Server/symbolicate.js.flow +17 -5
  117. package/src/Server.js +204 -150
  118. package/src/Server.js.flow +131 -87
  119. package/src/cli-utils.js +4 -4
  120. package/src/cli-utils.js.flow +15 -13
  121. package/src/cli.js +4 -4
  122. package/src/cli.js.flow +2 -4
  123. package/src/commands/build.js +23 -24
  124. package/src/commands/build.js.flow +6 -9
  125. package/src/commands/dependencies.js +25 -19
  126. package/src/commands/serve.js +19 -19
  127. package/src/commands/serve.js.flow +7 -9
  128. package/src/index.js +117 -50
  129. package/src/index.js.flow +108 -40
  130. package/src/integration_tests/basic_bundle/AssetRegistry.js +2 -2
  131. package/src/integration_tests/basic_bundle/AssetRegistry.js.flow +1 -1
  132. package/src/integration_tests/basic_bundle/Bar.js +2 -2
  133. package/src/integration_tests/basic_bundle/Bar.js.flow +1 -1
  134. package/src/integration_tests/basic_bundle/ErrorBundle.js +2 -2
  135. package/src/integration_tests/basic_bundle/ErrorBundle.js.flow +1 -1
  136. package/src/integration_tests/basic_bundle/Foo.js +2 -2
  137. package/src/integration_tests/basic_bundle/Foo.js.flow +1 -1
  138. package/src/integration_tests/basic_bundle/TestBundle.js +2 -2
  139. package/src/integration_tests/basic_bundle/TestBundle.js.flow +1 -1
  140. package/src/integration_tests/basic_bundle/TestPolyfill.js +1 -1
  141. package/src/integration_tests/basic_bundle/TestPolyfill.js.flow +1 -1
  142. package/src/integration_tests/basic_bundle/TypeScript.ts +1 -1
  143. package/src/integration_tests/basic_bundle/import-export/export-1.js +2 -2
  144. package/src/integration_tests/basic_bundle/import-export/export-1.js.flow +1 -1
  145. package/src/integration_tests/basic_bundle/import-export/export-2.js +2 -2
  146. package/src/integration_tests/basic_bundle/import-export/export-2.js.flow +1 -1
  147. package/src/integration_tests/basic_bundle/import-export/export-3.js +2 -2
  148. package/src/integration_tests/basic_bundle/import-export/export-3.js.flow +1 -1
  149. package/src/integration_tests/basic_bundle/import-export/export-4.js +2 -2
  150. package/src/integration_tests/basic_bundle/import-export/export-4.js.flow +1 -1
  151. package/src/integration_tests/basic_bundle/import-export/export-5.js +2 -2
  152. package/src/integration_tests/basic_bundle/import-export/export-5.js.flow +1 -1
  153. package/src/integration_tests/basic_bundle/import-export/export-6.js +2 -2
  154. package/src/integration_tests/basic_bundle/import-export/export-6.js.flow +1 -1
  155. package/src/integration_tests/basic_bundle/import-export/export-null.js +2 -2
  156. package/src/integration_tests/basic_bundle/import-export/export-null.js.flow +1 -1
  157. package/src/integration_tests/basic_bundle/import-export/export-primitive-default.js +2 -2
  158. package/src/integration_tests/basic_bundle/import-export/export-primitive-default.js.flow +1 -1
  159. package/src/integration_tests/basic_bundle/import-export/index.js +17 -17
  160. package/src/integration_tests/basic_bundle/import-export/index.js.flow +1 -1
  161. package/src/integration_tests/basic_bundle/polyfill.js +1 -1
  162. package/src/integration_tests/execBundle.js +2 -2
  163. package/src/integration_tests/execBundle.js.flow +1 -1
  164. package/src/integration_tests/metro.config.js +8 -8
  165. package/src/lib/BatchProcessor.js +10 -6
  166. package/src/lib/BatchProcessor.js.flow +6 -1
  167. package/src/lib/JsonReporter.js +3 -2
  168. package/src/lib/JsonReporter.js.flow +2 -1
  169. package/src/lib/RamBundleParser.js +1 -1
  170. package/src/lib/RamBundleParser.js.flow +1 -1
  171. package/src/lib/TerminalReporter.js +15 -15
  172. package/src/lib/TerminalReporter.js.flow +15 -16
  173. package/src/lib/bundleToBytecode.js +6 -7
  174. package/src/lib/bundleToBytecode.js.flow +8 -7
  175. package/src/lib/bundleToString.js +3 -3
  176. package/src/lib/bundleToString.js.flow +5 -4
  177. package/src/lib/countLines.js +3 -7
  178. package/src/lib/countLines.js.flow +4 -7
  179. package/src/lib/createModuleIdFactory.js +2 -2
  180. package/src/lib/createModuleIdFactory.js.flow +1 -1
  181. package/src/lib/{attachWebsocketServer.js → createWebsocketServer.js} +18 -17
  182. package/src/lib/{attachWebsocketServer.js.flow → createWebsocketServer.js.flow} +13 -23
  183. package/src/lib/debounceAsyncQueue.js +2 -2
  184. package/src/lib/debounceAsyncQueue.js.flow +1 -1
  185. package/src/lib/formatBundlingError.js +21 -21
  186. package/src/lib/formatBundlingError.js.flow +18 -20
  187. package/src/lib/getAppendScripts.js +26 -27
  188. package/src/lib/getAppendScripts.js.flow +7 -8
  189. package/src/lib/getGraphId.js +3 -3
  190. package/src/lib/getGraphId.js.flow +3 -3
  191. package/src/lib/getMaxWorkers.js +2 -2
  192. package/src/lib/getMaxWorkers.js.flow +1 -1
  193. package/src/lib/getPreludeCode.js +2 -2
  194. package/src/lib/getPreludeCode.js.flow +1 -1
  195. package/src/lib/getPrependedScripts.js +16 -15
  196. package/src/lib/getPrependedScripts.js.flow +8 -8
  197. package/src/lib/logToConsole.js +12 -5
  198. package/src/lib/logToConsole.js.flow +19 -6
  199. package/src/lib/parseCustomTransformOptions.js +2 -2
  200. package/src/lib/parseCustomTransformOptions.js.flow +3 -3
  201. package/src/lib/parseOptionsFromUrl.js +7 -7
  202. package/src/lib/parseOptionsFromUrl.js.flow +29 -9
  203. package/src/lib/relativizeSourceMap.js +1 -1
  204. package/src/lib/relativizeSourceMap.js.flow +3 -3
  205. package/src/lib/reporting.js +5 -5
  206. package/src/lib/reporting.js.flow +18 -4
  207. package/src/lib/splitBundleOptions.js +5 -5
  208. package/src/lib/splitBundleOptions.js.flow +1 -1
  209. package/src/lib/transformHelpers.js +11 -10
  210. package/src/lib/transformHelpers.js.flow +6 -13
  211. package/src/node-haste/DependencyGraph/ModuleResolution.js +51 -30
  212. package/src/node-haste/DependencyGraph/ModuleResolution.js.flow +49 -48
  213. package/src/node-haste/DependencyGraph/createHasteMap.js +99 -0
  214. package/src/node-haste/DependencyGraph/createHasteMap.js.flow +88 -0
  215. package/src/node-haste/DependencyGraph/{assets/empty-module.js → types.js} +2 -2
  216. package/src/node-haste/DependencyGraph/types.js.flow +88 -0
  217. package/src/node-haste/DependencyGraph.js +51 -118
  218. package/src/node-haste/DependencyGraph.js.flow +38 -111
  219. package/src/node-haste/Module.js +1 -1
  220. package/src/node-haste/Module.js.flow +3 -3
  221. package/src/node-haste/ModuleCache.js +54 -13
  222. package/src/node-haste/ModuleCache.js.flow +53 -12
  223. package/src/node-haste/Package.js +2 -2
  224. package/src/node-haste/Package.js.flow +1 -1
  225. package/src/node-haste/lib/AssetPaths.js +5 -5
  226. package/src/node-haste/lib/AssetPaths.js.flow +7 -6
  227. package/src/node-haste/lib/parsePlatformFilePath.js +4 -4
  228. package/src/node-haste/lib/parsePlatformFilePath.js.flow +2 -2
  229. package/src/shared/output/RamBundle/as-assets.js +14 -15
  230. package/src/shared/output/RamBundle/as-assets.js.flow +9 -11
  231. package/src/shared/output/RamBundle/as-indexed-file.js +14 -15
  232. package/src/shared/output/RamBundle/as-indexed-file.js.flow +8 -12
  233. package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js +7 -7
  234. package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js.flow +4 -4
  235. package/src/shared/output/RamBundle/magic-number.js +1 -1
  236. package/src/shared/output/RamBundle/magic-number.js.flow +1 -1
  237. package/src/shared/output/RamBundle/util.js +21 -19
  238. package/src/shared/output/RamBundle/util.js.flow +5 -8
  239. package/src/shared/output/RamBundle/write-sourcemap.js +1 -1
  240. package/src/shared/output/RamBundle/write-sourcemap.js.flow +1 -1
  241. package/src/shared/output/RamBundle.js +2 -2
  242. package/src/shared/output/RamBundle.js.flow +4 -5
  243. package/src/shared/output/bundle.js +6 -6
  244. package/src/shared/output/bundle.js.flow +4 -5
  245. package/src/shared/output/meta.js +4 -5
  246. package/src/shared/output/meta.js.flow +2 -4
  247. package/src/shared/output/unbundle.js +1 -1
  248. package/src/shared/output/unbundle.js.flow +1 -1
  249. package/src/shared/output/writeFile.js +1 -1
  250. package/src/shared/output/writeFile.js.flow +1 -1
  251. package/src/shared/types.flow.js +1 -1
  252. package/src/shared/types.flow.js.flow +6 -4
  253. package/src/node-haste/DependencyGraph/assets/empty-module.js.flow +0 -9
  254. package/src/node-haste/types.js +0 -10
  255. package/src/node-haste/types.js.flow +0 -23
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -15,18 +15,18 @@ const DeltaBundler = require("./DeltaBundler");
15
15
 
16
16
  const ResourceNotFoundError = require("./IncrementalBundler/ResourceNotFoundError");
17
17
 
18
- const crypto = require("crypto");
19
-
20
- const fs = require("fs");
21
-
22
18
  const getGraphId = require("./lib/getGraphId");
23
19
 
24
20
  const getPrependedScripts = require("./lib/getPrependedScripts");
25
21
 
26
- const path = require("path");
27
-
28
22
  const transformHelpers = require("./lib/transformHelpers");
29
23
 
24
+ const crypto = require("crypto");
25
+
26
+ const fs = require("fs");
27
+
28
+ const path = require("path");
29
+
30
30
  function createRevisionId() {
31
31
  return crypto.randomBytes(8).toString("hex");
32
32
  }
@@ -73,7 +73,7 @@ class IncrementalBundler {
73
73
  transformOptions,
74
74
  otherOptions = {
75
75
  onProgress: null,
76
- shallow: false
76
+ shallow: false,
77
77
  }
78
78
  ) {
79
79
  const absoluteEntryFiles = await this._getAbsoluteEntryFiles(entryFiles);
@@ -89,17 +89,18 @@ class IncrementalBundler {
89
89
  this._config,
90
90
  transformOptions
91
91
  ),
92
+ transformOptions,
92
93
  onProgress: otherOptions.onProgress,
93
- experimentalImportBundleSupport: this._config.transformer
94
- .experimentalImportBundleSupport,
95
- shallow: otherOptions.shallow
94
+ experimentalImportBundleSupport:
95
+ this._config.transformer.experimentalImportBundleSupport,
96
+ shallow: otherOptions.shallow,
96
97
  });
97
98
 
98
99
  this._config.serializer.experimentalSerializerHook(graph, {
99
100
  added: graph.dependencies,
100
101
  modified: new Map(),
101
102
  deleted: new Set(),
102
- reset: true
103
+ reset: true,
103
104
  });
104
105
 
105
106
  return graph;
@@ -110,7 +111,7 @@ class IncrementalBundler {
110
111
  transformOptions,
111
112
  otherOptions = {
112
113
  onProgress: null,
113
- shallow: false
114
+ shallow: false,
114
115
  }
115
116
  ) {
116
117
  const absoluteEntryFiles = await this._getAbsoluteEntryFiles(entryFiles);
@@ -128,10 +129,11 @@ class IncrementalBundler {
128
129
  this._config,
129
130
  transformOptions
130
131
  ),
132
+ transformOptions,
131
133
  onProgress: otherOptions.onProgress,
132
- experimentalImportBundleSupport: this._config.transformer
133
- .experimentalImportBundleSupport,
134
- shallow: otherOptions.shallow
134
+ experimentalImportBundleSupport:
135
+ this._config.transformer.experimentalImportBundleSupport,
136
+ shallow: otherOptions.shallow,
135
137
  }
136
138
  );
137
139
  return dependencies;
@@ -142,7 +144,7 @@ class IncrementalBundler {
142
144
  transformOptions,
143
145
  otherOptions = {
144
146
  onProgress: null,
145
- shallow: false
147
+ shallow: false,
146
148
  }
147
149
  ) {
148
150
  const graph = await this.buildGraphForEntries(
@@ -159,7 +161,7 @@ class IncrementalBundler {
159
161
  );
160
162
  return {
161
163
  prepend,
162
- graph
164
+ graph,
163
165
  };
164
166
  } // TODO T34760750 (alexkirsz) Eventually, I'd like to get to a point where
165
167
  // this class exposes only initializeGraph and updateGraph.
@@ -169,13 +171,13 @@ class IncrementalBundler {
169
171
  transformOptions,
170
172
  otherOptions = {
171
173
  onProgress: null,
172
- shallow: false
174
+ shallow: false,
173
175
  }
174
176
  ) {
175
177
  const graphId = getGraphId(entryFile, transformOptions, {
176
178
  shallow: otherOptions.shallow,
177
- experimentalImportBundleSupport: this._config.transformer
178
- .experimentalImportBundleSupport
179
+ experimentalImportBundleSupport:
180
+ this._config.transformer.experimentalImportBundleSupport,
179
181
  });
180
182
  const revisionId = createRevisionId();
181
183
 
@@ -190,7 +192,7 @@ class IncrementalBundler {
190
192
  date: new Date(),
191
193
  graphId,
192
194
  graph,
193
- prepend
195
+ prepend,
194
196
  };
195
197
  })();
196
198
 
@@ -204,11 +206,11 @@ class IncrementalBundler {
204
206
  added: revision.graph.dependencies,
205
207
  modified: new Map(),
206
208
  deleted: new Set(),
207
- reset: true
209
+ reset: true,
208
210
  };
209
211
  return {
210
212
  revision,
211
- delta
213
+ delta,
212
214
  };
213
215
  } catch (err) {
214
216
  // Evict a bad revision from the cache since otherwise
@@ -224,7 +226,7 @@ class IncrementalBundler {
224
226
  async updateGraph(revision, reset) {
225
227
  const delta = await this._deltaBundler.getDelta(revision.graph, {
226
228
  reset,
227
- shallow: false
229
+ shallow: false,
228
230
  });
229
231
 
230
232
  this._config.serializer.experimentalSerializerHook(revision.graph, delta);
@@ -241,7 +243,7 @@ class IncrementalBundler {
241
243
  // Generate a new revision id, to be used to verify the next incremental
242
244
  // request.
243
245
  id: crypto.randomBytes(8).toString("hex"),
244
- date: new Date()
246
+ date: new Date(),
245
247
  };
246
248
  const revisionPromise = Promise.resolve(revision);
247
249
 
@@ -252,7 +254,7 @@ class IncrementalBundler {
252
254
 
253
255
  return {
254
256
  revision,
255
- delta
257
+ delta,
256
258
  };
257
259
  }
258
260
 
@@ -273,16 +275,24 @@ class IncrementalBundler {
273
275
  }
274
276
 
275
277
  async _getAbsoluteEntryFiles(entryFiles) {
276
- const absoluteEntryFiles = entryFiles.map(entryFile =>
277
- path.resolve(this._config.projectRoot, entryFile)
278
- );
278
+ const absoluteEntryFiles = entryFiles.map((entryFile) => {
279
+ var _this$_config$server$;
280
+
281
+ return path.resolve(
282
+ (_this$_config$server$ = this._config.server.unstable_serverRoot) !==
283
+ null && _this$_config$server$ !== void 0
284
+ ? _this$_config$server$
285
+ : this._config.projectRoot,
286
+ entryFile
287
+ );
288
+ });
279
289
  await Promise.all(
280
290
  absoluteEntryFiles.map(
281
- entryFile =>
291
+ (entryFile) =>
282
292
  new Promise((resolve, reject) => {
283
293
  // This should throw an error if the file doesn't exist.
284
294
  // Using this instead of fs.exists to account for SimLinks.
285
- fs.realpath(entryFile, err => {
295
+ fs.realpath(entryFile, (err) => {
286
296
  if (err) {
287
297
  reject(new ResourceNotFoundError(entryFile));
288
298
  } else {
@@ -293,6 +303,10 @@ class IncrementalBundler {
293
303
  )
294
304
  );
295
305
  return absoluteEntryFiles;
306
+ } // Wait for the bundler to become ready.
307
+
308
+ async ready() {
309
+ await this._bundler.ready();
296
310
  }
297
311
  }
298
312
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -10,25 +10,24 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ import type {DeltaResult, Graph, Module} from './DeltaBundler';
14
+ import type {
15
+ Dependencies,
16
+ Options as DeltaBundlerOptions,
17
+ TransformInputOptions,
18
+ } from './DeltaBundler/types.flow';
19
+ import type {GraphId} from './lib/getGraphId';
20
+ import type {ConfigT} from 'metro-config/src/configTypes.flow';
21
+
13
22
  const Bundler = require('./Bundler');
14
23
  const DeltaBundler = require('./DeltaBundler');
15
24
  const ResourceNotFoundError = require('./IncrementalBundler/ResourceNotFoundError');
16
-
17
- const crypto = require('crypto');
18
- const fs = require('fs');
19
25
  const getGraphId = require('./lib/getGraphId');
20
26
  const getPrependedScripts = require('./lib/getPrependedScripts');
21
- const path = require('path');
22
27
  const transformHelpers = require('./lib/transformHelpers');
23
-
24
- import type {
25
- Options as DeltaBundlerOptions,
26
- Dependencies,
27
- } from './DeltaBundler/types.flow';
28
- import type {DeltaResult, Module, Graph} from './DeltaBundler';
29
- import type {GraphId} from './lib/getGraphId';
30
- import type {TransformInputOptions} from './lib/transformHelpers';
31
- import type {ConfigT} from 'metro-config/src/configTypes.flow';
28
+ const crypto = require('crypto');
29
+ const fs = require('fs');
30
+ const path = require('path');
32
31
 
33
32
  export opaque type RevisionId: string = string;
34
33
 
@@ -68,9 +67,8 @@ class IncrementalBundler {
68
67
  _revisionsById: Map<RevisionId, Promise<GraphRevision>> = new Map();
69
68
  _revisionsByGraphId: Map<GraphId, Promise<GraphRevision>> = new Map();
70
69
 
71
- static revisionIdFromString: (
72
- str: string,
73
- ) => RevisionId = revisionIdFromString;
70
+ static revisionIdFromString: (str: string) => RevisionId =
71
+ revisionIdFromString;
74
72
 
75
73
  constructor(config: ConfigT, options?: IncrementalBundlerOptions) {
76
74
  this._config = config;
@@ -121,9 +119,10 @@ class IncrementalBundler {
121
119
  this._config,
122
120
  transformOptions,
123
121
  ),
122
+ transformOptions,
124
123
  onProgress: otherOptions.onProgress,
125
- experimentalImportBundleSupport: this._config.transformer
126
- .experimentalImportBundleSupport,
124
+ experimentalImportBundleSupport:
125
+ this._config.transformer.experimentalImportBundleSupport,
127
126
  shallow: otherOptions.shallow,
128
127
  });
129
128
 
@@ -161,9 +160,10 @@ class IncrementalBundler {
161
160
  this._config,
162
161
  transformOptions,
163
162
  ),
163
+ transformOptions,
164
164
  onProgress: otherOptions.onProgress,
165
- experimentalImportBundleSupport: this._config.transformer
166
- .experimentalImportBundleSupport,
165
+ experimentalImportBundleSupport:
166
+ this._config.transformer.experimentalImportBundleSupport,
167
167
  shallow: otherOptions.shallow,
168
168
  },
169
169
  );
@@ -216,8 +216,8 @@ class IncrementalBundler {
216
216
  }> {
217
217
  const graphId = getGraphId(entryFile, transformOptions, {
218
218
  shallow: otherOptions.shallow,
219
- experimentalImportBundleSupport: this._config.transformer
220
- .experimentalImportBundleSupport,
219
+ experimentalImportBundleSupport:
220
+ this._config.transformer.experimentalImportBundleSupport,
221
221
  });
222
222
  const revisionId = createRevisionId();
223
223
  const revisionPromise = (async () => {
@@ -309,7 +309,10 @@ class IncrementalBundler {
309
309
  entryFiles: $ReadOnlyArray<string>,
310
310
  ): Promise<$ReadOnlyArray<string>> {
311
311
  const absoluteEntryFiles = entryFiles.map((entryFile: string) =>
312
- path.resolve(this._config.projectRoot, entryFile),
312
+ path.resolve(
313
+ this._config.server.unstable_serverRoot ?? this._config.projectRoot,
314
+ entryFile,
315
+ ),
313
316
  );
314
317
 
315
318
  await Promise.all(
@@ -331,6 +334,11 @@ class IncrementalBundler {
331
334
 
332
335
  return absoluteEntryFiles;
333
336
  }
337
+
338
+ // Wait for the bundler to become ready.
339
+ async ready(): Promise<void> {
340
+ await this._bundler.ready();
341
+ }
334
342
  }
335
343
 
336
344
  module.exports = IncrementalBundler;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -20,8 +20,8 @@ const virtual = (code, filePath) => ({
20
20
  functionMap: null,
21
21
  path: filePath,
22
22
  type: "script",
23
- libraryIdx: null
24
- }
23
+ libraryIdx: null,
24
+ },
25
25
  });
26
26
 
27
27
  exports.virtual = virtual;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -53,14 +53,16 @@ module.exports = class HasteFS {
53
53
  }
54
54
 
55
55
  matches(directory, pattern) {
56
- const entries = this.directoryEntries.get(directory);
56
+ const entries = this.directoryEntries.get(directory); // $FlowFixMe[method-unbinding] added when improving typing for this parameters
57
+ // $FlowFixMe[incompatible-call]
58
+
57
59
  return entries ? entries.filter(pattern.test, pattern) : [];
58
60
  }
59
61
  };
60
62
 
61
63
  function buildDirectorySet(files) {
62
64
  const directories = new Set();
63
- files.forEach(path => {
65
+ files.forEach((path) => {
64
66
  const parsedPath = parse(path);
65
67
  const root = parsedPath.root;
66
68
  let dir = parsedPath.dir;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -65,6 +65,8 @@ module.exports = class HasteFS {
65
65
  matches(directory: string, pattern: RegExp): Array<string> {
66
66
  const entries = this.directoryEntries.get(directory);
67
67
 
68
+ // $FlowFixMe[method-unbinding] added when improving typing for this parameters
69
+ // $FlowFixMe[incompatible-call]
68
70
  return entries ? entries.filter(pattern.test, pattern) : [];
69
71
  }
70
72
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -10,11 +10,11 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ import type {PackageData, TransformedCodeFile} from '../types.flow';
14
+
13
15
  const Module = require('./Module');
14
16
  const Package = require('./Package');
15
17
 
16
- import type {PackageData, TransformedCodeFile} from '../types.flow';
17
-
18
18
  type GetClosestPackageFn = (filePath: string) => ?string;
19
19
 
20
20
  module.exports = class ModuleCache {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -113,13 +113,13 @@ function getReplacements(pkg) {
113
113
 
114
114
  if (typeof rn !== "object") {
115
115
  rn = {
116
- [main]: rn
116
+ [main]: rn,
117
117
  };
118
118
  }
119
119
 
120
120
  if (typeof browser !== "object") {
121
121
  browser = {
122
- [main]: browser
122
+ [main]: browser,
123
123
  };
124
124
  } // merge with "browser" as default,
125
125
  // "react-native" as override
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -10,11 +10,11 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ import type {PackageData} from '../types.flow';
14
+
13
15
  const nullthrows = require('nullthrows');
14
16
  const path = require('path');
15
17
 
16
- import type {PackageData} from '../types.flow';
17
-
18
18
  module.exports = class Package {
19
19
  data: PackageData;
20
20
  path: string;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -1,5 +1,9 @@
1
+ "use strict";
2
+
3
+ var _jestHasteMap = require("jest-haste-map");
4
+
1
5
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
6
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
7
  *
4
8
  * This source code is licensed under the MIT license found in the
5
9
  * LICENSE file in the root directory of this source tree.
@@ -7,7 +11,11 @@
7
11
  *
8
12
  * @format
9
13
  */
10
- "use strict";
14
+ const {
15
+ ModuleResolver,
16
+ } = require("../../node-haste/DependencyGraph/ModuleResolution");
17
+
18
+ const parsePlatformFilePath = require("../../node-haste/lib/parsePlatformFilePath");
11
19
 
12
20
  const HasteFS = require("./HasteFS");
13
21
 
@@ -17,17 +25,9 @@ const ModuleCache = require("./ModuleCache");
17
25
 
18
26
  const defaults = require("metro-config/src/defaults/defaults");
19
27
 
20
- const parsePlatformFilePath = require("../../node-haste/lib/parsePlatformFilePath");
21
-
22
28
  const path = require("path");
23
29
 
24
- const {
25
- ModuleResolver
26
- } = require("../../node-haste/DependencyGraph/ModuleResolution");
27
-
28
- const { ModuleMap } = require("jest-haste-map");
29
-
30
- const platforms = new Set(defaults.platforms);
30
+ const NATIVE_PLATFORM = "native";
31
31
  const GENERIC_PLATFORM = "g";
32
32
  const PACKAGE_JSON = path.sep + "package.json";
33
33
  const NULL_MODULE = {
@@ -41,15 +41,21 @@ const NULL_MODULE = {
41
41
 
42
42
  getName() {
43
43
  throw new Error("not implemented");
44
- }
44
+ },
45
45
  };
46
46
  const NODE_MODULES = path.sep + "node_modules" + path.sep;
47
47
 
48
- const isNodeModules = file => file.includes(NODE_MODULES); // This function maps the ModuleGraph data structure to jest-haste-map's ModuleMap
48
+ const isNodeModules = (file) => file.includes(NODE_MODULES); // This function maps the ModuleGraph data structure to jest-haste-map's ModuleMap
49
49
 
50
- const createModuleMap = ({ files, moduleCache, sourceExts }) => {
50
+ const createModuleMap = ({ files, moduleCache, sourceExts, platforms }) => {
51
+ const platformSet = new Set(
52
+ (platforms !== null && platforms !== void 0
53
+ ? platforms
54
+ : defaults.platforms
55
+ ).concat([NATIVE_PLATFORM])
56
+ );
51
57
  const map = new Map();
52
- files.forEach(filePath => {
58
+ files.forEach((filePath) => {
53
59
  if (isNodeModules(filePath)) {
54
60
  return;
55
61
  }
@@ -71,7 +77,7 @@ const createModuleMap = ({ files, moduleCache, sourceExts }) => {
71
77
 
72
78
  const mapModule = map.get(id) || Object.create(null);
73
79
  const platform =
74
- parsePlatformFilePath(filePath, platforms).platform || GENERIC_PLATFORM;
80
+ parsePlatformFilePath(filePath, platformSet).platform || GENERIC_PLATFORM;
75
81
  const existingModule = mapModule[platform]; // 0 = Module, 1 = Package in jest-haste-map
76
82
 
77
83
  mapModule[platform] = [filePath, module.type === "Package" ? 1 : 0];
@@ -84,7 +90,7 @@ const createModuleMap = ({ files, moduleCache, sourceExts }) => {
84
90
  ` Paths: \`${filePath}\` collides with \`${existingModule[0]}\``,
85
91
  "",
86
92
  "This error is caused by a @providesModule declaration " +
87
- "with the same name across two different files."
93
+ "with the same name across two different files.",
88
94
  ].join("\n")
89
95
  );
90
96
  }
@@ -94,14 +100,15 @@ const createModuleMap = ({ files, moduleCache, sourceExts }) => {
94
100
  return map;
95
101
  };
96
102
 
97
- exports.createResolveFn = function(options) {
103
+ exports.createResolveFn = function (options) {
98
104
  const {
99
105
  assetExts,
100
106
  assetResolutions,
101
107
  extraNodeModules,
102
108
  transformedFiles,
103
109
  sourceExts,
104
- platform
110
+ platform,
111
+ platforms,
105
112
  } = options;
106
113
  const files = Object.keys(transformedFiles);
107
114
 
@@ -117,30 +124,33 @@ exports.createResolveFn = function(options) {
117
124
 
118
125
  const hasteFS = new HasteFS(files);
119
126
  const moduleCache = new ModuleCache(
120
- filePath => hasteFS.closest(filePath, "package.json"),
127
+ (filePath) => hasteFS.closest(filePath, "package.json"),
121
128
  getTransformedFile
122
129
  );
123
- const assetExtensions = new Set(assetExts.map(asset => "." + asset));
130
+ const assetExtensions = new Set(assetExts.map((asset) => "." + asset));
124
131
 
125
- const isAssetFile = file => assetExtensions.has(path.extname(file));
132
+ const isAssetFile = (file) => assetExtensions.has(path.extname(file));
126
133
 
127
134
  const moduleResolver = new ModuleResolver({
128
- dirExists: filePath => hasteFS.dirExists(filePath),
129
- doesFileExist: filePath => hasteFS.exists(filePath),
135
+ dirExists: (filePath) => hasteFS.dirExists(filePath),
136
+ disableHierarchicalLookup: options.disableHierarchicalLookup,
137
+ doesFileExist: (filePath) => hasteFS.exists(filePath),
138
+ emptyModulePath: options.emptyModulePath,
130
139
  extraNodeModules,
131
140
  isAssetFile,
132
141
  mainFields: options.mainFields,
133
142
  // $FlowFixMe -- error revealed by types-first codemod
134
143
  moduleCache,
135
- moduleMap: new ModuleMap({
144
+ moduleMap: new _jestHasteMap.ModuleMap({
136
145
  duplicates: new Map(),
137
146
  map: createModuleMap({
138
147
  files,
139
148
  moduleCache,
140
- sourceExts
149
+ sourceExts,
150
+ platforms,
141
151
  }),
142
152
  mocks: new Map(),
143
- rootDir: ""
153
+ rootDir: "",
144
154
  }),
145
155
  nodeModulesPaths: options.nodeModulesPaths,
146
156
  preferNativePlatform: true,
@@ -150,13 +160,13 @@ exports.createResolveFn = function(options) {
150
160
  const assets = [
151
161
  basePath + extension,
152
162
  ...assetResolutions.map(
153
- resolution => basePath + "@" + resolution + "x" + extension
154
- )
155
- ].filter(candidate => hasteFS.exists(candidate));
163
+ (resolution) => basePath + "@" + resolution + "x" + extension
164
+ ),
165
+ ].filter((candidate) => hasteFS.exists(candidate));
156
166
  return assets.length ? assets : null;
157
167
  },
158
168
  resolveRequest: options.resolveRequest,
159
- sourceExts
169
+ sourceExts,
160
170
  });
161
171
  return (id, sourcePath) => {
162
172
  const from =