metro 0.83.2 → 0.83.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/package.json +25 -23
  2. package/src/Assets.js +50 -30
  3. package/src/Assets.js.flow +26 -15
  4. package/src/Bundler/util.js +33 -22
  5. package/src/Bundler/util.js.flow +2 -2
  6. package/src/Bundler.js +5 -1
  7. package/src/Bundler.js.flow +1 -1
  8. package/src/DeltaBundler/DeltaCalculator.js +9 -5
  9. package/src/DeltaBundler/DeltaCalculator.js.flow +8 -8
  10. package/src/DeltaBundler/Graph.js +21 -17
  11. package/src/DeltaBundler/Graph.js.flow +30 -30
  12. package/src/DeltaBundler/Serializers/baseJSBundle.js +5 -1
  13. package/src/DeltaBundler/Serializers/baseJSBundle.js.flow +1 -1
  14. package/src/DeltaBundler/Serializers/getAllFiles.js.flow +2 -2
  15. package/src/DeltaBundler/Serializers/getAssets.js +5 -1
  16. package/src/DeltaBundler/Serializers/getAssets.js.flow +2 -2
  17. package/src/DeltaBundler/Serializers/getExplodedSourceMap.js.flow +2 -2
  18. package/src/DeltaBundler/Serializers/getRamBundleInfo.js +5 -1
  19. package/src/DeltaBundler/Serializers/getRamBundleInfo.js.flow +8 -8
  20. package/src/DeltaBundler/Serializers/helpers/js.js +33 -22
  21. package/src/DeltaBundler/Serializers/helpers/js.js.flow +6 -6
  22. package/src/DeltaBundler/Serializers/helpers/processModules.js.flow +3 -3
  23. package/src/DeltaBundler/Serializers/hmrJSBundle.js +33 -22
  24. package/src/DeltaBundler/Serializers/hmrJSBundle.js.flow +5 -5
  25. package/src/DeltaBundler/Serializers/sourceMapGenerator.js +5 -1
  26. package/src/DeltaBundler/Serializers/sourceMapGenerator.js.flow +6 -6
  27. package/src/DeltaBundler/Serializers/sourceMapObject.js.flow +2 -2
  28. package/src/DeltaBundler/Serializers/sourceMapString.js.flow +2 -2
  29. package/src/DeltaBundler/Transformer.js +5 -1
  30. package/src/DeltaBundler/Transformer.js.flow +3 -3
  31. package/src/DeltaBundler/Worker.flow.js +5 -1
  32. package/src/DeltaBundler/Worker.flow.js.flow +1 -1
  33. package/src/DeltaBundler/WorkerFarm.js +1 -1
  34. package/src/DeltaBundler/WorkerFarm.js.flow +26 -13
  35. package/src/DeltaBundler/buildSubgraph.js +9 -5
  36. package/src/DeltaBundler/buildSubgraph.js.flow +8 -8
  37. package/src/DeltaBundler/getTransformCacheKey.js +5 -1
  38. package/src/DeltaBundler/types.js +5 -1
  39. package/src/DeltaBundler/types.js.flow +36 -34
  40. package/src/DeltaBundler.js +5 -1
  41. package/src/DeltaBundler.js.flow +2 -2
  42. package/src/HmrServer.js +42 -30
  43. package/src/HmrServer.js.flow +17 -12
  44. package/src/IncrementalBundler.js +37 -22
  45. package/src/IncrementalBundler.js.flow +13 -9
  46. package/src/ModuleGraph/worker/JsFileWrapping.js +33 -22
  47. package/src/ModuleGraph/worker/JsFileWrapping.js.flow +10 -5
  48. package/src/ModuleGraph/worker/collectDependencies.js +33 -22
  49. package/src/ModuleGraph/worker/collectDependencies.js.flow +27 -21
  50. package/src/ModuleGraph/worker/generateImportNames.js +5 -1
  51. package/src/ModuleGraph/worker/generateImportNames.js.flow +4 -2
  52. package/src/ModuleGraph/worker/importLocationsPlugin.js.flow +7 -3
  53. package/src/Server/MultipartResponse.js +5 -1
  54. package/src/Server/MultipartResponse.js.flow +1 -1
  55. package/src/Server/symbolicate.js.flow +4 -4
  56. package/src/Server.js +112 -40
  57. package/src/Server.js.flow +110 -47
  58. package/src/cli/parseKeyValueParamArray.js.flow +1 -1
  59. package/src/cli-utils.js +5 -1
  60. package/src/cli-utils.js.flow +2 -2
  61. package/src/commands/build.js +5 -1
  62. package/src/commands/build.js.flow +11 -10
  63. package/src/commands/dependencies.js +5 -1
  64. package/src/commands/dependencies.js.flow +8 -4
  65. package/src/commands/serve.js +2 -0
  66. package/src/commands/serve.js.flow +14 -9
  67. package/src/index.flow.js +38 -27
  68. package/src/index.flow.js.flow +25 -20
  69. package/src/integration_tests/basic_bundle/AssetRegistry.js.flow +1 -1
  70. package/src/integration_tests/basic_bundle/ErrorBundle.js.flow +1 -1
  71. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-import.js +5 -1
  72. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-import.js.flow +1 -1
  73. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-multi-line-import-with-escapes.js.flow +1 -1
  74. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-multi-line-import.js.flow +1 -1
  75. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-require-with-embedded-comment.js.flow +1 -1
  76. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-require.js.flow +1 -1
  77. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-specifier-with-escapes.js.flow +1 -1
  78. package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-import.js +5 -1
  79. package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-import.js.flow +1 -1
  80. package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-require.js.flow +1 -1
  81. package/src/integration_tests/basic_bundle/import-export/index.js +33 -22
  82. package/src/integration_tests/basic_bundle/import-export/index.js.flow +3 -3
  83. package/src/integration_tests/basic_bundle/import-export/utils.js.flow +2 -2
  84. package/src/integration_tests/basic_bundle/loadBundleAsyncForTest.js.flow +1 -1
  85. package/src/integration_tests/basic_bundle/optional-dependencies/index.js.flow +1 -1
  86. package/src/integration_tests/basic_bundle/require-context/conflict.js.flow +1 -1
  87. package/src/integration_tests/basic_bundle/require-context/empty.js.flow +1 -1
  88. package/src/integration_tests/basic_bundle/require-context/matching.js.flow +1 -1
  89. package/src/integration_tests/basic_bundle/require-context/mode-eager.js.flow +1 -1
  90. package/src/integration_tests/basic_bundle/require-context/mode-lazy-once.js.flow +1 -1
  91. package/src/integration_tests/basic_bundle/require-context/mode-lazy.js.flow +1 -1
  92. package/src/integration_tests/basic_bundle/require-context/mode-sync.js.flow +2 -2
  93. package/src/integration_tests/basic_bundle/require-context/utils.js.flow +1 -1
  94. package/src/integration_tests/basic_bundle/require-resolveWeak/import-and-resolveWeak.js.flow +1 -1
  95. package/src/integration_tests/basic_bundle/require-resolveWeak/multiple.js.flow +1 -1
  96. package/src/integration_tests/basic_bundle/require-resolveWeak/never-required.js.flow +1 -1
  97. package/src/integration_tests/basic_bundle/require-resolveWeak/require-and-resolveWeak.js.flow +1 -1
  98. package/src/integration_tests/execBundle.js +5 -1
  99. package/src/integration_tests/execBundle.js.flow +1 -1
  100. package/src/lib/BatchProcessor.js +10 -3
  101. package/src/lib/BatchProcessor.js.flow +10 -7
  102. package/src/lib/CountingSet.js.flow +4 -4
  103. package/src/lib/JsonReporter.js +5 -3
  104. package/src/lib/JsonReporter.js.flow +19 -17
  105. package/src/lib/RamBundleParser.js +5 -1
  106. package/src/lib/RamBundleParser.js.flow +1 -1
  107. package/src/lib/TerminalReporter.js +39 -28
  108. package/src/lib/TerminalReporter.js.flow +15 -15
  109. package/src/lib/contextModule.js +5 -1
  110. package/src/lib/contextModule.js.flow +1 -1
  111. package/src/lib/contextModuleTemplates.js +28 -21
  112. package/src/lib/countLines.js +4 -3
  113. package/src/lib/countLines.js.flow +3 -4
  114. package/src/lib/createWebsocketServer.js +14 -3
  115. package/src/lib/createWebsocketServer.js.flow +16 -9
  116. package/src/lib/debounceAsyncQueue.js.flow +1 -1
  117. package/src/lib/formatBundlingError.js +5 -1
  118. package/src/lib/formatBundlingError.js.flow +1 -1
  119. package/src/lib/getAppendScripts.js +5 -1
  120. package/src/lib/getAppendScripts.js.flow +4 -4
  121. package/src/lib/getGraphId.js +5 -1
  122. package/src/lib/getGraphId.js.flow +1 -1
  123. package/src/lib/getPreludeCode.js +4 -0
  124. package/src/lib/getPreludeCode.js.flow +10 -3
  125. package/src/lib/getPrependedScripts.js +44 -23
  126. package/src/lib/getPrependedScripts.js.flow +10 -3
  127. package/src/lib/logToConsole.js +5 -1
  128. package/src/lib/logToConsole.js.flow +2 -2
  129. package/src/lib/parseBundleOptionsFromBundleRequestUrl.js +33 -22
  130. package/src/lib/parseCustomResolverOptions.js.flow +2 -2
  131. package/src/lib/parseCustomTransformOptions.js.flow +1 -1
  132. package/src/lib/parseJsonBody.js.flow +11 -1
  133. package/src/lib/pathUtils.js +28 -21
  134. package/src/lib/pathUtils.js.flow +1 -1
  135. package/src/lib/relativizeSourceMap.js +5 -1
  136. package/src/lib/reporting.js +5 -1
  137. package/src/lib/reporting.js.flow +4 -4
  138. package/src/lib/transformHelpers.js +16 -10
  139. package/src/lib/transformHelpers.js.flow +17 -15
  140. package/src/node-haste/DependencyGraph/ModuleResolution.js +56 -43
  141. package/src/node-haste/DependencyGraph/ModuleResolution.js.flow +35 -32
  142. package/src/node-haste/DependencyGraph/createFileMap.js +64 -39
  143. package/src/node-haste/DependencyGraph/createFileMap.js.flow +44 -18
  144. package/src/node-haste/DependencyGraph.js +45 -32
  145. package/src/node-haste/DependencyGraph.js.flow +35 -37
  146. package/src/node-haste/Package.js +5 -1
  147. package/src/node-haste/PackageCache.js +5 -1
  148. package/src/node-haste/lib/AssetPaths.js +7 -3
  149. package/src/node-haste/lib/AssetPaths.js.flow +4 -4
  150. package/src/node-haste/lib/parsePlatformFilePath.js +11 -7
  151. package/src/node-haste/lib/parsePlatformFilePath.js.flow +4 -4
  152. package/src/shared/output/RamBundle/as-assets.js +5 -1
  153. package/src/shared/output/RamBundle/as-assets.js.flow +6 -6
  154. package/src/shared/output/RamBundle/as-indexed-file.js +5 -1
  155. package/src/shared/output/RamBundle/as-indexed-file.js.flow +5 -5
  156. package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js.flow +5 -5
  157. package/src/shared/output/RamBundle/util.js +5 -1
  158. package/src/shared/output/RamBundle/util.js.flow +5 -5
  159. package/src/shared/output/RamBundle/write-sourcemap.js +5 -1
  160. package/src/shared/output/RamBundle/write-sourcemap.js.flow +1 -1
  161. package/src/shared/output/RamBundle.js +5 -1
  162. package/src/shared/output/RamBundle.js.flow +1 -1
  163. package/src/shared/output/bundle.flow.js +5 -1
  164. package/src/shared/output/bundle.flow.js.flow +3 -3
  165. package/src/shared/output/meta.js +7 -3
  166. package/src/shared/output/meta.js.flow +1 -1
  167. package/src/shared/output/writeFile.js +13 -4
  168. package/src/shared/output/writeFile.js.flow +8 -2
  169. package/src/shared/types.js.flow +20 -5
  170. package/src/Asset.d.ts +0 -25
  171. package/src/Bundler.d.ts +0 -39
  172. package/src/DeltaBundler/Graph.d.ts +0 -40
  173. package/src/DeltaBundler/Serializers/getExplodedSourceMap.d.ts +0 -26
  174. package/src/DeltaBundler/Serializers/getRamBundleInfo.d.ts +0 -18
  175. package/src/DeltaBundler/Worker.d.ts +0 -45
  176. package/src/DeltaBundler/types.d.ts +0 -166
  177. package/src/DeltaBundler.d.ts +0 -58
  178. package/src/IncrementalBundler.d.ts +0 -98
  179. package/src/ModuleGraph/test-helpers.js +0 -75
  180. package/src/ModuleGraph/worker/collectDependencies.d.ts +0 -27
  181. package/src/Server/MultipartResponse.d.ts +0 -31
  182. package/src/Server/symbolicate.d.ts +0 -31
  183. package/src/Server.d.ts +0 -118
  184. package/src/index.d.ts +0 -193
  185. package/src/lib/CountingSet.d.ts +0 -48
  186. package/src/lib/TerminalReporter.d.ts +0 -27
  187. package/src/lib/contextModule.d.ts +0 -22
  188. package/src/lib/getGraphId.d.ts +0 -11
  189. package/src/lib/reporting.d.ts +0 -144
  190. package/src/node-haste/DependencyGraph.d.ts +0 -62
  191. package/src/shared/output/bundle.d.ts +0 -35
  192. package/src/shared/types.d.ts +0 -130
@@ -26,7 +26,7 @@ import path from 'path';
26
26
  const debug = require('debug')('Metro:Transformer');
27
27
 
28
28
  type GetOrComputeSha1Fn = string => Promise<
29
- $ReadOnly<{content?: Buffer, sha1: string}>,
29
+ Readonly<{content?: Buffer, sha1: string}>,
30
30
  >;
31
31
 
32
32
  export default class Transformer {
@@ -38,7 +38,7 @@ export default class Transformer {
38
38
 
39
39
  constructor(
40
40
  config: ConfigT,
41
- opts: $ReadOnly<{getOrComputeSha1: GetOrComputeSha1Fn}>,
41
+ opts: Readonly<{getOrComputeSha1: GetOrComputeSha1Fn}>,
42
42
  ) {
43
43
  this._config = config;
44
44
 
@@ -160,7 +160,7 @@ export default class Transformer {
160
160
 
161
161
  // A valid result from the cache is used directly; otherwise we call into
162
162
  // the transformer to computed the corresponding result.
163
- const data: $ReadOnly<{
163
+ const data: Readonly<{
164
164
  result: TransformResult<>,
165
165
  sha1: string,
166
166
  }> = result
@@ -9,7 +9,11 @@ var _crypto = _interopRequireDefault(require("crypto"));
9
9
  var _fs = _interopRequireDefault(require("fs"));
10
10
  var _path = _interopRequireDefault(require("path"));
11
11
  function _interopRequireDefault(e) {
12
- return e && e.__esModule ? e : { default: e };
12
+ return e && e.__esModule
13
+ ? e
14
+ : {
15
+ default: e,
16
+ };
13
17
  }
14
18
  function asDeserializedBuffer(value) {
15
19
  if (Buffer.isBuffer(value)) {
@@ -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,
@@ -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
  );
@@ -8,7 +8,11 @@ var _contextModule = require("../lib/contextModule");
8
8
  var _isResolvedDependency = require("../lib/isResolvedDependency");
9
9
  var _path = _interopRequireDefault(require("path"));
10
10
  function _interopRequireDefault(e) {
11
- return e && e.__esModule ? e : { default: e };
11
+ return e && e.__esModule
12
+ ? e
13
+ : {
14
+ default: e,
15
+ };
12
16
  }
13
17
  function resolveDependencies(parentPath, dependencies, resolve) {
14
18
  const maybeResolvedDeps = new Map();
@@ -24,13 +28,13 @@ function resolveDependencies(parentPath, dependencies, resolve) {
24
28
  contextParams,
25
29
  );
26
30
  const resolvedContext = {
27
- from,
28
- mode: contextParams.mode,
29
- recursive: contextParams.recursive,
30
31
  filter: new RegExp(
31
32
  contextParams.filter.pattern,
32
33
  contextParams.filter.flags,
33
34
  ),
35
+ from,
36
+ mode: contextParams.mode,
37
+ recursive: contextParams.recursive,
34
38
  };
35
39
  resolvedContexts.set(key, resolvedContext);
36
40
  maybeResolvedDep = {
@@ -110,7 +114,7 @@ async function buildSubgraph(
110
114
  ),
111
115
  );
112
116
  return {
113
- moduleData,
114
117
  errors,
118
+ moduleData,
115
119
  };
116
120
  }
@@ -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
  }
@@ -7,7 +7,11 @@ exports.default = getTransformCacheKey;
7
7
  var _crypto = _interopRequireDefault(require("crypto"));
8
8
  var _metroCacheKey = require("metro-cache-key");
9
9
  function _interopRequireDefault(e) {
10
- return e && e.__esModule ? e : { default: e };
10
+ return e && e.__esModule
11
+ ? e
12
+ : {
13
+ default: e,
14
+ };
11
15
  }
12
16
  const VERSION = require("../../package.json").version;
13
17
  function getTransformCacheKey(opts) {
@@ -2,5 +2,9 @@
2
2
 
3
3
  var _CountingSet = _interopRequireDefault(require("../lib/CountingSet"));
4
4
  function _interopRequireDefault(e) {
5
- return e && e.__esModule ? e : { default: e };
5
+ return e && e.__esModule
6
+ ? e
7
+ : {
8
+ default: e,
9
+ };
6
10
  }
@@ -11,19 +11,20 @@
11
11
 
12
12
  import type {RequireContext} from '../lib/contextModule';
13
13
  import type {RequireContextParams} from '../ModuleGraph/worker/collectDependencies';
14
+ import type {ReadonlySourceLocation} from '../shared/types';
14
15
  import type {Graph} from './Graph';
15
16
  import type {JsTransformOptions} from 'metro-transform-worker';
16
17
 
17
18
  import CountingSet from '../lib/CountingSet';
18
19
 
19
20
  export type MixedOutput = {
20
- +data: mixed,
21
+ +data: unknown,
21
22
  +type: string,
22
23
  };
23
24
 
24
25
  export type AsyncDependencyType = 'async' | 'maybeSync' | 'prefetch' | 'weak';
25
26
 
26
- export type TransformResultDependency = $ReadOnly<{
27
+ export type TransformResultDependency = Readonly<{
27
28
  /**
28
29
  * The literal name provided to a require or import call. For example 'foo' in
29
30
  * case of `require('foo')`.
@@ -33,7 +34,7 @@ export type TransformResultDependency = $ReadOnly<{
33
34
  /**
34
35
  * Extra data returned by the dependency extractor.
35
36
  */
36
- data: $ReadOnly<{
37
+ data: Readonly<{
37
38
  /**
38
39
  * A locally unique key for this dependency within the current module.
39
40
  */
@@ -52,43 +53,43 @@ export type TransformResultDependency = $ReadOnly<{
52
53
  */
53
54
  isOptional?: boolean,
54
55
 
55
- locs: $ReadOnlyArray<BabelSourceLocation>,
56
+ locs: ReadonlyArray<ReadonlySourceLocation>,
56
57
 
57
58
  /** Context for requiring a collection of modules. */
58
59
  contextParams?: RequireContextParams,
59
60
  }>,
60
61
  }>;
61
62
 
62
- export type ResolvedDependency = $ReadOnly<{
63
+ export type ResolvedDependency = Readonly<{
63
64
  absolutePath: string,
64
65
  data: TransformResultDependency,
65
66
  }>;
66
67
 
67
68
  export type Dependency =
68
69
  | ResolvedDependency
69
- | $ReadOnly<{
70
+ | Readonly<{
70
71
  data: TransformResultDependency,
71
72
  }>;
72
73
 
73
- export type Module<T = MixedOutput> = $ReadOnly<{
74
+ export type Module<T = MixedOutput> = Readonly<{
74
75
  dependencies: Map<string, Dependency>,
75
76
  inverseDependencies: CountingSet<string>,
76
- output: $ReadOnlyArray<T>,
77
+ output: ReadonlyArray<T>,
77
78
  path: string,
78
79
  getSource: () => Buffer,
79
80
  unstable_transformResultKey?: ?string,
80
81
  }>;
81
82
 
82
- export type ModuleData<T = MixedOutput> = $ReadOnly<{
83
- dependencies: $ReadOnlyMap<string, Dependency>,
84
- resolvedContexts: $ReadOnlyMap<string, RequireContext>,
85
- output: $ReadOnlyArray<T>,
83
+ export type ModuleData<T = MixedOutput> = Readonly<{
84
+ dependencies: ReadonlyMap<string, Dependency>,
85
+ resolvedContexts: ReadonlyMap<string, RequireContext>,
86
+ output: ReadonlyArray<T>,
86
87
  getSource: () => Buffer,
87
88
  unstable_transformResultKey?: ?string,
88
89
  }>;
89
90
 
90
91
  export type Dependencies<T = MixedOutput> = Map<string, Module<T>>;
91
- export type ReadOnlyDependencies<T = MixedOutput> = $ReadOnlyMap<
92
+ export type ReadOnlyDependencies<T = MixedOutput> = ReadonlyMap<
92
93
  string,
93
94
  Module<T>,
94
95
  >;
@@ -98,28 +99,28 @@ export type TransformInputOptions = Omit<
98
99
  'inlinePlatform' | 'inlineRequires',
99
100
  >;
100
101
 
101
- export type GraphInputOptions = $ReadOnly<{
102
- entryPoints: $ReadOnlySet<string>,
102
+ export type GraphInputOptions = Readonly<{
103
+ entryPoints: ReadonlySet<string>,
103
104
  // Unused in core but useful for custom serializers / experimentalSerializerHook
104
105
  transformOptions: TransformInputOptions,
105
106
  }>;
106
107
 
107
108
  export interface ReadOnlyGraph<T = MixedOutput> {
108
- +entryPoints: $ReadOnlySet<string>;
109
+ +entryPoints: ReadonlySet<string>;
109
110
  // Unused in core but useful for custom serializers / experimentalSerializerHook
110
- +transformOptions: $ReadOnly<TransformInputOptions>;
111
+ +transformOptions: Readonly<TransformInputOptions>;
111
112
  +dependencies: ReadOnlyDependencies<T>;
112
113
  }
113
114
 
114
115
  export type {Graph};
115
116
 
116
- export type TransformResult<T = MixedOutput> = $ReadOnly<{
117
- dependencies: $ReadOnlyArray<TransformResultDependency>,
118
- output: $ReadOnlyArray<T>,
117
+ export type TransformResult<T = MixedOutput> = Readonly<{
118
+ dependencies: ReadonlyArray<TransformResultDependency>,
119
+ output: ReadonlyArray<T>,
119
120
  unstable_transformResultKey?: ?string,
120
121
  }>;
121
122
 
122
- export type TransformResultWithSource<T = MixedOutput> = $ReadOnly<{
123
+ export type TransformResultWithSource<T = MixedOutput> = Readonly<{
123
124
  ...TransformResult<T>,
124
125
  getSource: () => Buffer,
125
126
  }>;
@@ -141,21 +142,22 @@ export type AllowOptionalDependencies =
141
142
  | boolean
142
143
  | AllowOptionalDependenciesWithOptions;
143
144
 
144
- export type BundlerResolution = $ReadOnly<{
145
+ export type BundlerResolution = Readonly<{
145
146
  type: 'sourceFile',
146
147
  filePath: string,
147
148
  }>;
148
149
 
149
- export type Options<T = MixedOutput> = {
150
- +resolve: ResolveFn,
151
- +transform: TransformFn<T>,
152
- +transformOptions: TransformInputOptions,
153
- +onProgress: ?(numProcessed: number, total: number) => mixed,
154
- +lazy: boolean,
155
- +unstable_allowRequireContext: boolean,
156
- +unstable_enablePackageExports: boolean,
157
- +shallow: boolean,
158
- };
150
+ export type Options<T = MixedOutput> = Readonly<{
151
+ resolve: ResolveFn,
152
+ transform: TransformFn<T>,
153
+ transformOptions: TransformInputOptions,
154
+ onProgress: ?(numProcessed: number, total: number) => unknown,
155
+ lazy: boolean,
156
+ unstable_allowRequireContext: boolean,
157
+ unstable_enablePackageExports: boolean,
158
+ unstable_incrementalResolution: boolean,
159
+ shallow: boolean,
160
+ }>;
159
161
 
160
162
  export type DeltaResult<T = MixedOutput> = {
161
163
  +added: Map<string, Module<T>>,
@@ -164,7 +166,7 @@ export type DeltaResult<T = MixedOutput> = {
164
166
  +reset: boolean,
165
167
  };
166
168
 
167
- export type SerializerOptions = $ReadOnly<{
169
+ export type SerializerOptions = Readonly<{
168
170
  asyncRequireModulePath: string,
169
171
  createModuleId: string => number,
170
172
  dev: boolean,
@@ -178,7 +180,7 @@ export type SerializerOptions = $ReadOnly<{
178
180
  modulesOnly: boolean,
179
181
  processModuleFilter: (module: Module<>) => boolean,
180
182
  projectRoot: string,
181
- runBeforeMainModule: $ReadOnlyArray<string>,
183
+ runBeforeMainModule: ReadonlyArray<string>,
182
184
  runModule: boolean,
183
185
  serverRoot: string,
184
186
  shouldAddToIgnoreList: (Module<>) => boolean,
@@ -8,7 +8,11 @@ var _DeltaCalculator = _interopRequireDefault(
8
8
  require("./DeltaBundler/DeltaCalculator"),
9
9
  );
10
10
  function _interopRequireDefault(e) {
11
- return e && e.__esModule ? e : { default: e };
11
+ return e && e.__esModule
12
+ ? e
13
+ : {
14
+ default: e,
15
+ };
12
16
  }
13
17
  class DeltaBundler {
14
18
  _deltaCalculators = new Map();
@@ -56,7 +56,7 @@ export default class DeltaBundler<T = MixedOutput> {
56
56
  }
57
57
 
58
58
  async getDependencies(
59
- entryPoints: $ReadOnlyArray<string>,
59
+ entryPoints: ReadonlyArray<string>,
60
60
  options: Options<T>,
61
61
  ): Promise<ReadOnlyGraph<T>['dependencies']> {
62
62
  const deltaCalculator = new DeltaCalculator(
@@ -76,7 +76,7 @@ export default class DeltaBundler<T = MixedOutput> {
76
76
  // so that we don't leak graphs that are not reachable.
77
77
  // To get just the dependencies, use getDependencies which will not leak graphs.
78
78
  async buildGraph(
79
- entryPoints: $ReadOnlyArray<string>,
79
+ entryPoints: ReadonlyArray<string>,
80
80
  options: Options<T>,
81
81
  ): Promise<Graph<T>> {
82
82
  const deltaCalculator = new DeltaCalculator(
package/src/HmrServer.js CHANGED
@@ -31,31 +31,42 @@ var transformHelpers = _interopRequireWildcard(
31
31
  );
32
32
  var _metroCore = require("metro-core");
33
33
  var _nullthrows = _interopRequireDefault(require("nullthrows"));
34
- function _getRequireWildcardCache(e) {
35
- if ("function" != typeof WeakMap) return null;
36
- var r = new WeakMap(),
37
- t = new WeakMap();
38
- return (_getRequireWildcardCache = function (e) {
39
- return e ? t : r;
40
- })(e);
41
- }
42
- function _interopRequireWildcard(e, r) {
43
- if (!r && e && e.__esModule) return e;
44
- if (null === e || ("object" != typeof e && "function" != typeof e))
45
- return { default: e };
46
- var t = _getRequireWildcardCache(r);
47
- if (t && t.has(e)) return t.get(e);
48
- var n = { __proto__: null },
49
- a = Object.defineProperty && Object.getOwnPropertyDescriptor;
50
- for (var u in e)
51
- if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
52
- var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
53
- i && (i.get || i.set) ? Object.defineProperty(n, u, i) : (n[u] = e[u]);
34
+ function _interopRequireWildcard(e, t) {
35
+ if ("function" == typeof WeakMap)
36
+ var r = new WeakMap(),
37
+ n = new WeakMap();
38
+ return (_interopRequireWildcard = function (e, t) {
39
+ if (!t && e && e.__esModule) return e;
40
+ var o,
41
+ i,
42
+ f = {
43
+ __proto__: null,
44
+ default: e,
45
+ };
46
+ if (null === e || ("object" != typeof e && "function" != typeof e))
47
+ return f;
48
+ if ((o = t ? n : r)) {
49
+ if (o.has(e)) return o.get(e);
50
+ o.set(e, f);
54
51
  }
55
- return ((n.default = e), t && t.set(e, n), n);
52
+ for (const t in e)
53
+ "default" !== t &&
54
+ {}.hasOwnProperty.call(e, t) &&
55
+ ((i =
56
+ (o = Object.defineProperty) &&
57
+ Object.getOwnPropertyDescriptor(e, t)) &&
58
+ (i.get || i.set)
59
+ ? o(f, t, i)
60
+ : (f[t] = e[t]));
61
+ return f;
62
+ })(e, t);
56
63
  }
57
64
  function _interopRequireDefault(e) {
58
- return e && e.__esModule ? e : { default: e };
65
+ return e && e.__esModule
66
+ ? e
67
+ : {
68
+ default: e,
69
+ };
59
70
  }
60
71
  const debug = require("debug")("Metro:HMR");
61
72
  const { createActionStartEntry, createActionEndEntry, log } = _metroCore.Logger;
@@ -77,9 +88,10 @@ class HmrServer {
77
88
  optedIntoHMR: false,
78
89
  };
79
90
  };
80
- async _registerEntryPoint(client, requestUrl, sendFn) {
81
- debug("Registering entry point: %s", requestUrl);
82
- requestUrl = this._config.server.rewriteRequestUrl(requestUrl);
91
+ async _registerEntryPoint(client, originalRequestUrl, sendFn) {
92
+ debug("Registering entry point: %s", originalRequestUrl);
93
+ const requestUrl =
94
+ this._config.server.rewriteRequestUrl(originalRequestUrl);
83
95
  debug("Rewritten as: %s", requestUrl);
84
96
  const { bundleType: _bundleType, ...options } = (0,
85
97
  _parseBundleOptionsFromBundleRequestUrl.default)(
@@ -150,7 +162,7 @@ class HmrServer {
150
162
  unlisten: () => unlisten(),
151
163
  };
152
164
  this._clientGroups.set(id, clientGroup);
153
- let latestEventArgs = [];
165
+ let latestChangeEvent = null;
154
166
  const debounceCallHandleFileChange = (0, _debounceAsyncQueue.default)(
155
167
  async () => {
156
168
  await this._handleFileChange(
@@ -158,15 +170,15 @@ class HmrServer {
158
170
  {
159
171
  isInitialUpdate: false,
160
172
  },
161
- ...latestEventArgs,
173
+ latestChangeEvent,
162
174
  );
163
175
  },
164
176
  50,
165
177
  );
166
178
  const unlisten = this._bundler
167
179
  .getDeltaBundler()
168
- .listen(graph, async (...args) => {
169
- latestEventArgs = args;
180
+ .listen(graph, async (changeEvent) => {
181
+ latestChangeEvent = changeEvent;
170
182
  await debounceCallHandleFileChange();
171
183
  });
172
184
  }
@@ -218,7 +230,7 @@ class HmrServer {
218
230
  onClientError = (client, e) => {
219
231
  this._config.reporter.update({
220
232
  type: "hmr_client_error",
221
- error: e.error,
233
+ error: e,
222
234
  });
223
235
  this.onClientDisconnect(client);
224
236
  };
@@ -4,11 +4,14 @@
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 strict-local
7
8
  * @format
8
- * @flow
9
9
  */
10
10
 
11
- import type IncrementalBundler, {RevisionId} from './IncrementalBundler';
11
+ import type {
12
+ RevisionId,
13
+ default as IncrementalBundler,
14
+ } from './IncrementalBundler';
12
15
  import type {GraphOptions} from './shared/types';
13
16
  import type {ConfigT, RootPerfLogger} from 'metro-config';
14
17
  import type {
@@ -93,11 +96,12 @@ export default class HmrServer<TClient: Client> {
93
96
 
94
97
  async _registerEntryPoint(
95
98
  client: Client,
96
- requestUrl: string,
99
+ originalRequestUrl: string,
97
100
  sendFn: (data: string) => void,
98
101
  ): Promise<void> {
99
- debug('Registering entry point: %s', requestUrl);
100
- requestUrl = this._config.server.rewriteRequestUrl(requestUrl);
102
+ debug('Registering entry point: %s', originalRequestUrl);
103
+ const requestUrl =
104
+ this._config.server.rewriteRequestUrl(originalRequestUrl);
101
105
  debug('Rewritten as: %s', requestUrl);
102
106
 
103
107
  const {bundleType: _bundleType, ...options} =
@@ -176,21 +180,22 @@ export default class HmrServer<TClient: Client> {
176
180
 
177
181
  this._clientGroups.set(id, clientGroup);
178
182
 
179
- let latestEventArgs: Array<any> = [];
183
+ let latestChangeEvent: ?{
184
+ logger: ?RootPerfLogger,
185
+ } = null;
180
186
 
181
187
  const debounceCallHandleFileChange = debounceAsyncQueue(async () => {
182
188
  await this._handleFileChange(
183
189
  nullthrows(clientGroup),
184
190
  {isInitialUpdate: false},
185
- ...latestEventArgs,
191
+ latestChangeEvent,
186
192
  );
187
193
  }, 50);
188
194
 
189
195
  const unlisten = this._bundler
190
196
  .getDeltaBundler()
191
- // $FlowFixMe[missing-local-annot]
192
- .listen(graph, async (...args) => {
193
- latestEventArgs = args;
197
+ .listen(graph, async changeEvent => {
198
+ latestChangeEvent = changeEvent;
194
199
  await debounceCallHandleFileChange();
195
200
  });
196
201
  }
@@ -242,10 +247,10 @@ export default class HmrServer<TClient: Client> {
242
247
  return Promise.resolve();
243
248
  };
244
249
 
245
- onClientError: (client: TClient, e: ErrorEvent) => void = (client, e) => {
250
+ onClientError: (client: TClient, e: Error) => void = (client, e) => {
246
251
  this._config.reporter.update({
247
252
  type: 'hmr_client_error',
248
- error: e.error,
253
+ error: e,
249
254
  });
250
255
  this.onClientDisconnect(client);
251
256
  };