metro 0.83.3 → 0.84.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 (158) hide show
  1. package/package.json +28 -25
  2. package/src/Assets.js +42 -29
  3. package/src/Assets.js.flow +26 -15
  4. package/src/Bundler/util.js +25 -21
  5. package/src/Bundler/util.js.flow +2 -2
  6. package/src/Bundler.js.flow +1 -1
  7. package/src/DeltaBundler/DeltaCalculator.js +4 -4
  8. package/src/DeltaBundler/DeltaCalculator.js.flow +8 -8
  9. package/src/DeltaBundler/Graph.js +16 -16
  10. package/src/DeltaBundler/Graph.js.flow +30 -30
  11. package/src/DeltaBundler/Serializers/baseJSBundle.js.flow +1 -1
  12. package/src/DeltaBundler/Serializers/getAllFiles.js.flow +2 -2
  13. package/src/DeltaBundler/Serializers/getAssets.js.flow +2 -2
  14. package/src/DeltaBundler/Serializers/getExplodedSourceMap.js.flow +2 -2
  15. package/src/DeltaBundler/Serializers/getRamBundleInfo.js.flow +8 -8
  16. package/src/DeltaBundler/Serializers/helpers/js.js +25 -21
  17. package/src/DeltaBundler/Serializers/helpers/js.js.flow +6 -6
  18. package/src/DeltaBundler/Serializers/helpers/processModules.js.flow +3 -3
  19. package/src/DeltaBundler/Serializers/hmrJSBundle.js +25 -21
  20. package/src/DeltaBundler/Serializers/hmrJSBundle.js.flow +5 -5
  21. package/src/DeltaBundler/Serializers/sourceMapGenerator.js.flow +6 -6
  22. package/src/DeltaBundler/Serializers/sourceMapObject.js.flow +2 -2
  23. package/src/DeltaBundler/Serializers/sourceMapString.js.flow +2 -2
  24. package/src/DeltaBundler/Transformer.js.flow +3 -3
  25. package/src/DeltaBundler/Worker.flow.js.flow +1 -1
  26. package/src/DeltaBundler/WorkerFarm.js +1 -1
  27. package/src/DeltaBundler/WorkerFarm.js.flow +26 -13
  28. package/src/DeltaBundler/buildSubgraph.js +4 -4
  29. package/src/DeltaBundler/buildSubgraph.js.flow +8 -8
  30. package/src/DeltaBundler/types.js.flow +36 -34
  31. package/src/DeltaBundler.js.flow +2 -2
  32. package/src/HmrServer.js +34 -29
  33. package/src/HmrServer.js.flow +17 -12
  34. package/src/IncrementalBundler.js +29 -21
  35. package/src/IncrementalBundler.js.flow +13 -9
  36. package/src/ModuleGraph/worker/JsFileWrapping.js +25 -21
  37. package/src/ModuleGraph/worker/JsFileWrapping.js.flow +10 -5
  38. package/src/ModuleGraph/worker/collectDependencies.js +25 -21
  39. package/src/ModuleGraph/worker/collectDependencies.js.flow +27 -21
  40. package/src/ModuleGraph/worker/generateImportNames.js.flow +4 -2
  41. package/src/ModuleGraph/worker/importLocationsPlugin.js.flow +7 -3
  42. package/src/Server/MultipartResponse.js.flow +1 -1
  43. package/src/Server/symbolicate.js.flow +4 -4
  44. package/src/Server.js +139 -39
  45. package/src/Server.js.flow +158 -47
  46. package/src/cli/parseKeyValueParamArray.js.flow +1 -1
  47. package/src/cli-utils.js.flow +2 -2
  48. package/src/commands/build.js.flow +11 -10
  49. package/src/commands/dependencies.js.flow +8 -4
  50. package/src/commands/serve.js +2 -0
  51. package/src/commands/serve.js.flow +14 -9
  52. package/src/index.flow.js +30 -26
  53. package/src/index.flow.js.flow +25 -20
  54. package/src/integration_tests/basic_bundle/AssetRegistry.js.flow +1 -1
  55. package/src/integration_tests/basic_bundle/ErrorBundle.js.flow +1 -1
  56. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-import.js.flow +1 -1
  57. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-multi-line-import-with-escapes.js.flow +1 -1
  58. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-multi-line-import.js.flow +1 -1
  59. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-require-with-embedded-comment.js.flow +1 -1
  60. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-require.js.flow +1 -1
  61. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-specifier-with-escapes.js.flow +1 -1
  62. package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-import.js.flow +1 -1
  63. package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-require.js.flow +1 -1
  64. package/src/integration_tests/basic_bundle/import-export/index.js +25 -21
  65. package/src/integration_tests/basic_bundle/import-export/index.js.flow +3 -3
  66. package/src/integration_tests/basic_bundle/import-export/utils.js.flow +2 -2
  67. package/src/integration_tests/basic_bundle/loadBundleAsyncForTest.js.flow +1 -1
  68. package/src/integration_tests/basic_bundle/optional-dependencies/index.js.flow +1 -1
  69. package/src/integration_tests/basic_bundle/require-context/conflict.js.flow +1 -1
  70. package/src/integration_tests/basic_bundle/require-context/empty.js.flow +1 -1
  71. package/src/integration_tests/basic_bundle/require-context/matching.js.flow +1 -1
  72. package/src/integration_tests/basic_bundle/require-context/mode-eager.js.flow +1 -1
  73. package/src/integration_tests/basic_bundle/require-context/mode-lazy-once.js.flow +1 -1
  74. package/src/integration_tests/basic_bundle/require-context/mode-lazy.js.flow +1 -1
  75. package/src/integration_tests/basic_bundle/require-context/mode-sync.js.flow +2 -2
  76. package/src/integration_tests/basic_bundle/require-context/utils.js.flow +1 -1
  77. package/src/integration_tests/basic_bundle/require-resolveWeak/import-and-resolveWeak.js.flow +1 -1
  78. package/src/integration_tests/basic_bundle/require-resolveWeak/multiple.js.flow +1 -1
  79. package/src/integration_tests/basic_bundle/require-resolveWeak/never-required.js.flow +1 -1
  80. package/src/integration_tests/basic_bundle/require-resolveWeak/require-and-resolveWeak.js.flow +1 -1
  81. package/src/integration_tests/execBundle.js.flow +1 -1
  82. package/src/lib/BatchProcessor.js +5 -2
  83. package/src/lib/BatchProcessor.js.flow +10 -7
  84. package/src/lib/CountingSet.js.flow +4 -4
  85. package/src/lib/JsonReporter.js +5 -3
  86. package/src/lib/JsonReporter.js.flow +19 -17
  87. package/src/lib/RamBundleParser.js.flow +1 -1
  88. package/src/lib/TerminalReporter.js +31 -27
  89. package/src/lib/TerminalReporter.js.flow +15 -15
  90. package/src/lib/contextModule.js.flow +1 -1
  91. package/src/lib/contextModuleTemplates.js +25 -21
  92. package/src/lib/countLines.js +4 -3
  93. package/src/lib/countLines.js.flow +3 -4
  94. package/src/lib/createWebsocketServer.js +9 -2
  95. package/src/lib/createWebsocketServer.js.flow +16 -9
  96. package/src/lib/debounceAsyncQueue.js.flow +1 -1
  97. package/src/lib/formatBundlingError.js.flow +1 -1
  98. package/src/lib/getAppendScripts.js.flow +4 -4
  99. package/src/lib/getGraphId.js.flow +1 -1
  100. package/src/lib/getPreludeCode.js +4 -0
  101. package/src/lib/getPreludeCode.js.flow +10 -3
  102. package/src/lib/getPrependedScripts.js +36 -22
  103. package/src/lib/getPrependedScripts.js.flow +10 -3
  104. package/src/lib/logToConsole.js.flow +2 -2
  105. package/src/lib/parseBundleOptionsFromBundleRequestUrl.js +25 -21
  106. package/src/lib/parseCustomResolverOptions.js.flow +2 -2
  107. package/src/lib/parseCustomTransformOptions.js.flow +1 -1
  108. package/src/lib/parseJsonBody.js.flow +11 -1
  109. package/src/lib/pathUtils.js +25 -21
  110. package/src/lib/pathUtils.js.flow +1 -1
  111. package/src/lib/reporting.js.flow +4 -4
  112. package/src/lib/transformHelpers.js +11 -9
  113. package/src/lib/transformHelpers.js.flow +17 -15
  114. package/src/node-haste/DependencyGraph/ModuleResolution.js +48 -42
  115. package/src/node-haste/DependencyGraph/ModuleResolution.js.flow +35 -32
  116. package/src/node-haste/DependencyGraph/createFileMap.js +56 -38
  117. package/src/node-haste/DependencyGraph/createFileMap.js.flow +44 -18
  118. package/src/node-haste/DependencyGraph.js +40 -31
  119. package/src/node-haste/DependencyGraph.js.flow +35 -37
  120. package/src/node-haste/lib/AssetPaths.js +2 -2
  121. package/src/node-haste/lib/AssetPaths.js.flow +4 -4
  122. package/src/node-haste/lib/parsePlatformFilePath.js +6 -6
  123. package/src/node-haste/lib/parsePlatformFilePath.js.flow +4 -4
  124. package/src/shared/output/RamBundle/as-assets.js.flow +6 -6
  125. package/src/shared/output/RamBundle/as-indexed-file.js.flow +5 -5
  126. package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js.flow +5 -5
  127. package/src/shared/output/RamBundle/util.js.flow +5 -5
  128. package/src/shared/output/RamBundle/write-sourcemap.js.flow +1 -1
  129. package/src/shared/output/RamBundle.js.flow +1 -1
  130. package/src/shared/output/bundle.flow.js.flow +3 -3
  131. package/src/shared/output/meta.js +2 -2
  132. package/src/shared/output/meta.js.flow +1 -1
  133. package/src/shared/output/writeFile.js +8 -3
  134. package/src/shared/output/writeFile.js.flow +8 -2
  135. package/src/shared/types.js.flow +20 -5
  136. package/src/Asset.d.ts +0 -25
  137. package/src/Bundler.d.ts +0 -39
  138. package/src/DeltaBundler/Graph.d.ts +0 -40
  139. package/src/DeltaBundler/Serializers/getExplodedSourceMap.d.ts +0 -26
  140. package/src/DeltaBundler/Serializers/getRamBundleInfo.d.ts +0 -18
  141. package/src/DeltaBundler/Worker.d.ts +0 -45
  142. package/src/DeltaBundler/types.d.ts +0 -166
  143. package/src/DeltaBundler.d.ts +0 -58
  144. package/src/IncrementalBundler.d.ts +0 -98
  145. package/src/ModuleGraph/test-helpers.js +0 -75
  146. package/src/ModuleGraph/worker/collectDependencies.d.ts +0 -27
  147. package/src/Server/MultipartResponse.d.ts +0 -31
  148. package/src/Server/symbolicate.d.ts +0 -31
  149. package/src/Server.d.ts +0 -118
  150. package/src/index.d.ts +0 -193
  151. package/src/lib/CountingSet.d.ts +0 -48
  152. package/src/lib/TerminalReporter.d.ts +0 -27
  153. package/src/lib/contextModule.d.ts +0 -22
  154. package/src/lib/getGraphId.d.ts +0 -11
  155. package/src/lib/reporting.d.ts +0 -144
  156. package/src/node-haste/DependencyGraph.d.ts +0 -62
  157. package/src/shared/output/bundle.d.ts +0 -35
  158. package/src/shared/types.d.ts +0 -130
@@ -13,28 +13,32 @@ var _createDefaultContext = _interopRequireDefault(
13
13
  );
14
14
  var _path = _interopRequireDefault(require("path"));
15
15
  var _util = _interopRequireDefault(require("util"));
16
- function _getRequireWildcardCache(e) {
17
- if ("function" != typeof WeakMap) return null;
18
- var r = new WeakMap(),
19
- t = new WeakMap();
20
- return (_getRequireWildcardCache = function (e) {
21
- return e ? t : r;
22
- })(e);
23
- }
24
- function _interopRequireWildcard(e, r) {
25
- if (!r && e && e.__esModule) return e;
26
- if (null === e || ("object" != typeof e && "function" != typeof e))
27
- return { default: e };
28
- var t = _getRequireWildcardCache(r);
29
- if (t && t.has(e)) return t.get(e);
30
- var n = { __proto__: null },
31
- a = Object.defineProperty && Object.getOwnPropertyDescriptor;
32
- for (var u in e)
33
- if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
34
- var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
35
- i && (i.get || i.set) ? Object.defineProperty(n, u, i) : (n[u] = e[u]);
16
+ function _interopRequireWildcard(e, t) {
17
+ if ("function" == typeof WeakMap)
18
+ var r = new WeakMap(),
19
+ n = new WeakMap();
20
+ return (_interopRequireWildcard = function (e, t) {
21
+ if (!t && e && e.__esModule) return e;
22
+ var o,
23
+ i,
24
+ f = { __proto__: null, default: e };
25
+ if (null === e || ("object" != typeof e && "function" != typeof e))
26
+ return f;
27
+ if ((o = t ? n : r)) {
28
+ if (o.has(e)) return o.get(e);
29
+ o.set(e, f);
36
30
  }
37
- return ((n.default = e), t && t.set(e, n), n);
31
+ for (const t in e)
32
+ "default" !== t &&
33
+ {}.hasOwnProperty.call(e, t) &&
34
+ ((i =
35
+ (o = Object.defineProperty) &&
36
+ Object.getOwnPropertyDescriptor(e, t)) &&
37
+ (i.get || i.set)
38
+ ? o(f, t, i)
39
+ : (f[t] = e[t]));
40
+ return f;
41
+ })(e, t);
38
42
  }
39
43
  function _interopRequireDefault(e) {
40
44
  return e && e.__esModule ? e : { default: e };
@@ -51,13 +55,13 @@ class ModuleResolver {
51
55
  emptyModule = this.resolveDependency(
52
56
  this._projectRootFakeModulePath,
53
57
  {
54
- name: this._options.emptyModulePath,
55
58
  data: {
56
- key: this._options.emptyModulePath,
57
59
  asyncType: null,
58
60
  isESMImport: false,
61
+ key: this._options.emptyModulePath,
59
62
  locs: [],
60
63
  },
64
+ name: this._options.emptyModulePath,
61
65
  },
62
66
  false,
63
67
  null,
@@ -91,6 +95,7 @@ class ModuleResolver {
91
95
  unstable_conditionNames,
92
96
  unstable_conditionsByPlatform,
93
97
  unstable_enablePackageExports,
98
+ unstable_incrementalResolution,
94
99
  } = this._options;
95
100
  try {
96
101
  const result = Resolver.resolve(
@@ -98,31 +103,32 @@ class ModuleResolver {
98
103
  {
99
104
  allowHaste,
100
105
  assetExts,
106
+ customResolverOptions: resolverOptions.customResolverOptions ?? {},
101
107
  dev: resolverOptions.dev,
102
108
  disableHierarchicalLookup,
103
109
  doesFileExist,
104
110
  extraNodeModules,
105
111
  fileSystemLookup,
112
+ getPackage: this._getPackage,
113
+ getPackageForModule: (absoluteModulePath) =>
114
+ this._getPackageForModule(absoluteModulePath),
106
115
  isESMImport: dependency.data.isESMImport,
107
116
  mainFields,
108
117
  nodeModulesPaths,
118
+ originModulePath,
109
119
  preferNativePlatform,
110
120
  resolveAsset,
121
+ resolveHasteModule: (name) =>
122
+ this._options.getHasteModulePath(name, platform),
123
+ resolveHastePackage: (name) =>
124
+ this._options.getHastePackagePath(name, platform),
111
125
  resolveRequest,
112
126
  sourceExts,
113
127
  unstable_conditionNames,
114
128
  unstable_conditionsByPlatform,
115
129
  unstable_enablePackageExports,
130
+ unstable_incrementalResolution,
116
131
  unstable_logWarning: this._logWarning,
117
- customResolverOptions: resolverOptions.customResolverOptions ?? {},
118
- originModulePath,
119
- resolveHasteModule: (name) =>
120
- this._options.getHasteModulePath(name, platform),
121
- resolveHastePackage: (name) =>
122
- this._options.getHastePackagePath(name, platform),
123
- getPackage: this._getPackage,
124
- getPackageForModule: (absoluteModulePath) =>
125
- this._getPackageForModule(absoluteModulePath),
126
132
  },
127
133
  dependency,
128
134
  ),
@@ -198,9 +204,9 @@ class ModuleResolver {
198
204
  } catch (e) {}
199
205
  return result != null
200
206
  ? {
201
- rootPath: _path.default.dirname(result.pkg.path),
202
207
  packageJson: result.pkg.read(),
203
208
  packageRelativePath: result.packageRelativePath,
209
+ rootPath: _path.default.dirname(result.pkg.path),
204
210
  }
205
211
  : null;
206
212
  };
@@ -212,8 +218,8 @@ class ModuleResolver {
212
218
  const arbitrary = getArrayLowestItem(resolution.filePaths);
213
219
  (0, _invariant.default)(arbitrary != null, "invalid asset resolution");
214
220
  return {
215
- type: "sourceFile",
216
221
  filePath: arbitrary,
222
+ type: "sourceFile",
217
223
  };
218
224
  case "empty":
219
225
  return this._getEmptyModule();
@@ -224,8 +230,8 @@ class ModuleResolver {
224
230
  }
225
231
  _logWarning = (message) => {
226
232
  this._options.reporter.update({
227
- type: "resolver_warning",
228
233
  message,
234
+ type: "resolver_warning",
229
235
  });
230
236
  };
231
237
  _removeRoot(candidates) {
@@ -313,8 +319,8 @@ function refineDependencyLocation(loc, fileContents, targetSpecifier) {
313
319
  if (isQuote(maybeQuoteBefore) && maybeQuoteBefore === maybeQuoteAfter) {
314
320
  return {
315
321
  start: {
316
- line: line + 1,
317
322
  column: minColumn + offset + 1,
323
+ line: line + 1,
318
324
  },
319
325
  };
320
326
  }
@@ -322,20 +328,20 @@ function refineDependencyLocation(loc, fileContents, targetSpecifier) {
322
328
  }
323
329
  if (loc.start.line === loc.end.line) {
324
330
  return {
325
- start: {
326
- line: loc.start.line,
327
- column: loc.start.column + 1,
328
- },
329
331
  end: {
330
- line: loc.end.line,
331
332
  column: loc.end.column + 1,
333
+ line: loc.end.line,
334
+ },
335
+ start: {
336
+ column: loc.start.column + 1,
337
+ line: loc.start.line,
332
338
  },
333
339
  };
334
340
  }
335
341
  return {
336
342
  start: {
337
- line: loc.start.line,
338
343
  column: loc.start.column + 1,
344
+ line: loc.start.line,
339
345
  },
340
346
  };
341
347
  }
@@ -56,8 +56,8 @@ export type PackageishCache<TPackage> = interface {
56
56
  },
57
57
  };
58
58
 
59
- type Options<TPackage> = $ReadOnly<{
60
- assetExts: $ReadOnlySet<string>,
59
+ type Options<TPackage> = Readonly<{
60
+ assetExts: ReadonlySet<string>,
61
61
  dirExists: DirExistsFn,
62
62
  disableHierarchicalLookup: boolean,
63
63
  doesFileExist: DoesFileExist,
@@ -66,20 +66,21 @@ type Options<TPackage> = $ReadOnly<{
66
66
  fileSystemLookup: FileSystemLookup,
67
67
  getHasteModulePath: (name: string, platform: ?string) => ?string,
68
68
  getHastePackagePath: (name: string, platform: ?string) => ?string,
69
- mainFields: $ReadOnlyArray<string>,
69
+ mainFields: ReadonlyArray<string>,
70
70
  packageCache: PackageishCache<TPackage>,
71
- nodeModulesPaths: $ReadOnlyArray<string>,
71
+ nodeModulesPaths: ReadonlyArray<string>,
72
72
  preferNativePlatform: boolean,
73
73
  projectRoot: string,
74
74
  reporter: Reporter,
75
75
  resolveAsset: ResolveAsset,
76
76
  resolveRequest: ?CustomResolver,
77
- sourceExts: $ReadOnlyArray<string>,
78
- unstable_conditionNames: $ReadOnlyArray<string>,
79
- unstable_conditionsByPlatform: $ReadOnly<{
80
- [platform: string]: $ReadOnlyArray<string>,
77
+ sourceExts: ReadonlyArray<string>,
78
+ unstable_conditionNames: ReadonlyArray<string>,
79
+ unstable_conditionsByPlatform: Readonly<{
80
+ [platform: string]: ReadonlyArray<string>,
81
81
  }>,
82
82
  unstable_enablePackageExports: boolean,
83
+ unstable_incrementalResolution: boolean,
83
84
  }>;
84
85
 
85
86
  export class ModuleResolver<TPackage: Packageish> {
@@ -101,13 +102,13 @@ export class ModuleResolver<TPackage: Packageish> {
101
102
  emptyModule = this.resolveDependency(
102
103
  this._projectRootFakeModulePath,
103
104
  {
104
- name: this._options.emptyModulePath,
105
105
  data: {
106
- key: this._options.emptyModulePath,
107
106
  asyncType: null,
108
107
  isESMImport: false,
108
+ key: this._options.emptyModulePath,
109
109
  locs: [],
110
110
  },
111
+ name: this._options.emptyModulePath,
111
112
  },
112
113
  false,
113
114
  null,
@@ -140,6 +141,7 @@ export class ModuleResolver<TPackage: Packageish> {
140
141
  unstable_conditionNames,
141
142
  unstable_conditionsByPlatform,
142
143
  unstable_enablePackageExports,
144
+ unstable_incrementalResolution,
143
145
  } = this._options;
144
146
 
145
147
  try {
@@ -148,31 +150,32 @@ export class ModuleResolver<TPackage: Packageish> {
148
150
  {
149
151
  allowHaste,
150
152
  assetExts,
153
+ customResolverOptions: resolverOptions.customResolverOptions ?? {},
151
154
  dev: resolverOptions.dev,
152
155
  disableHierarchicalLookup,
153
156
  doesFileExist,
154
157
  extraNodeModules,
155
158
  fileSystemLookup,
159
+ getPackage: this._getPackage,
160
+ getPackageForModule: (absoluteModulePath: string) =>
161
+ this._getPackageForModule(absoluteModulePath),
156
162
  isESMImport: dependency.data.isESMImport,
157
163
  mainFields,
158
164
  nodeModulesPaths,
165
+ originModulePath,
159
166
  preferNativePlatform,
160
167
  resolveAsset,
168
+ resolveHasteModule: (name: string) =>
169
+ this._options.getHasteModulePath(name, platform),
170
+ resolveHastePackage: (name: string) =>
171
+ this._options.getHastePackagePath(name, platform),
161
172
  resolveRequest,
162
173
  sourceExts,
163
174
  unstable_conditionNames,
164
175
  unstable_conditionsByPlatform,
165
176
  unstable_enablePackageExports,
177
+ unstable_incrementalResolution,
166
178
  unstable_logWarning: this._logWarning,
167
- customResolverOptions: resolverOptions.customResolverOptions ?? {},
168
- originModulePath,
169
- resolveHasteModule: (name: string) =>
170
- this._options.getHasteModulePath(name, platform),
171
- resolveHastePackage: (name: string) =>
172
- this._options.getHastePackagePath(name, platform),
173
- getPackage: this._getPackage,
174
- getPackageForModule: (absoluteModulePath: string) =>
175
- this._getPackageForModule(absoluteModulePath),
176
179
  },
177
180
  dependency,
178
181
  ),
@@ -260,9 +263,9 @@ export class ModuleResolver<TPackage: Packageish> {
260
263
 
261
264
  return result != null
262
265
  ? {
263
- rootPath: path.dirname(result.pkg.path),
264
266
  packageJson: result.pkg.read(),
265
267
  packageRelativePath: result.packageRelativePath,
268
+ rootPath: path.dirname(result.pkg.path),
266
269
  }
267
270
  : null;
268
271
  };
@@ -279,19 +282,19 @@ export class ModuleResolver<TPackage: Packageish> {
279
282
  // not just an arbitrary item!
280
283
  const arbitrary = getArrayLowestItem(resolution.filePaths);
281
284
  invariant(arbitrary != null, 'invalid asset resolution');
282
- return {type: 'sourceFile', filePath: arbitrary};
285
+ return {filePath: arbitrary, type: 'sourceFile'};
283
286
  case 'empty':
284
287
  return this._getEmptyModule();
285
288
  default:
286
- (resolution.type: empty);
289
+ resolution.type as empty;
287
290
  throw new Error('invalid type');
288
291
  }
289
292
  }
290
293
 
291
294
  _logWarning = (message: string): void => {
292
295
  this._options.reporter.update({
293
- type: 'resolver_warning',
294
296
  message,
297
+ type: 'resolver_warning',
295
298
  });
296
299
  };
297
300
 
@@ -306,7 +309,7 @@ export class ModuleResolver<TPackage: Packageish> {
306
309
  }
307
310
  }
308
311
 
309
- function getArrayLowestItem(a: $ReadOnlyArray<string>): string | void {
312
+ function getArrayLowestItem(a: ReadonlyArray<string>): string | void {
310
313
  if (a.length === 0) {
311
314
  return undefined;
312
315
  }
@@ -343,7 +346,7 @@ export class UnableToResolveError extends Error {
343
346
  originModulePath: string,
344
347
  targetModuleName: string,
345
348
  message: string,
346
- options?: $ReadOnly<{
349
+ options?: Readonly<{
347
350
  dependency?: ?TransformResultDependency,
348
351
  cause?: Error,
349
352
  }>,
@@ -429,8 +432,8 @@ function refineDependencyLocation(
429
432
  if (isQuote(maybeQuoteBefore) && maybeQuoteBefore === maybeQuoteAfter) {
430
433
  return {
431
434
  start: {
432
- line: line + 1,
433
435
  column: minColumn + offset + 1,
436
+ line: line + 1,
434
437
  },
435
438
  };
436
439
  }
@@ -439,13 +442,13 @@ function refineDependencyLocation(
439
442
  // Otherwise, if this is a single-line loc, return it exactly, as a range.
440
443
  if (loc.start.line === loc.end.line) {
441
444
  return {
442
- start: {
443
- line: loc.start.line,
444
- column: loc.start.column + 1,
445
- },
446
445
  end: {
447
- line: loc.end.line,
448
446
  column: loc.end.column + 1,
447
+ line: loc.end.line,
448
+ },
449
+ start: {
450
+ column: loc.start.column + 1,
451
+ line: loc.start.line,
449
452
  },
450
453
  };
451
454
  }
@@ -453,8 +456,8 @@ function refineDependencyLocation(
453
456
  // much unnecessary context.
454
457
  return {
455
458
  start: {
456
- line: loc.start.line,
457
459
  column: loc.start.column + 1,
460
+ line: loc.start.line,
458
461
  },
459
462
  };
460
463
  }
@@ -6,28 +6,32 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = createFileMap;
7
7
  var _ciInfo = _interopRequireDefault(require("ci-info"));
8
8
  var _metroFileMap = _interopRequireWildcard(require("metro-file-map"));
9
- function _getRequireWildcardCache(e) {
10
- if ("function" != typeof WeakMap) return null;
11
- var r = new WeakMap(),
12
- t = new WeakMap();
13
- return (_getRequireWildcardCache = function (e) {
14
- return e ? t : r;
15
- })(e);
16
- }
17
- function _interopRequireWildcard(e, r) {
18
- if (!r && e && e.__esModule) return e;
19
- if (null === e || ("object" != typeof e && "function" != typeof e))
20
- return { default: e };
21
- var t = _getRequireWildcardCache(r);
22
- if (t && t.has(e)) return t.get(e);
23
- var n = { __proto__: null },
24
- a = Object.defineProperty && Object.getOwnPropertyDescriptor;
25
- for (var u in e)
26
- if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
27
- var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
28
- i && (i.get || i.set) ? Object.defineProperty(n, u, i) : (n[u] = e[u]);
9
+ function _interopRequireWildcard(e, t) {
10
+ if ("function" == typeof WeakMap)
11
+ var r = new WeakMap(),
12
+ n = new WeakMap();
13
+ return (_interopRequireWildcard = function (e, t) {
14
+ if (!t && e && e.__esModule) return e;
15
+ var o,
16
+ i,
17
+ f = { __proto__: null, default: e };
18
+ if (null === e || ("object" != typeof e && "function" != typeof e))
19
+ return f;
20
+ if ((o = t ? n : r)) {
21
+ if (o.has(e)) return o.get(e);
22
+ o.set(e, f);
29
23
  }
30
- return ((n.default = e), t && t.set(e, n), n);
24
+ for (const t in e)
25
+ "default" !== t &&
26
+ {}.hasOwnProperty.call(e, t) &&
27
+ ((i =
28
+ (o = Object.defineProperty) &&
29
+ Object.getOwnPropertyDescriptor(e, t)) &&
30
+ (i.get || i.set)
31
+ ? o(f, t, i)
32
+ : (f[t] = e[t]));
33
+ return f;
34
+ })(e, t);
31
35
  }
32
36
  function _interopRequireDefault(e) {
33
37
  return e && e.__esModule ? e : { default: e };
@@ -63,16 +67,35 @@ function getIgnorePattern(config) {
63
67
  return ignorePattern;
64
68
  }
65
69
  function createFileMap(config, options) {
66
- const dependencyExtractor =
67
- options?.extractDependencies === false
68
- ? null
69
- : config.resolver.dependencyExtractor;
70
- const computeDependencies = dependencyExtractor != null;
71
70
  const watch = options?.watch == null ? !_ciInfo.default.isCI : options.watch;
72
71
  const { enabled: autoSaveEnabled, ...autoSaveOpts } =
73
72
  config.watcher.unstable_autoSaveCache ?? {};
74
73
  const autoSave = watch && autoSaveEnabled ? autoSaveOpts : false;
75
- return _metroFileMap.default.create({
74
+ const plugins = [];
75
+ let dependencyPlugin = null;
76
+ if (
77
+ config.resolver.dependencyExtractor != null &&
78
+ options?.extractDependencies !== false
79
+ ) {
80
+ dependencyPlugin = new _metroFileMap.DependencyPlugin({
81
+ dependencyExtractor: config.resolver.dependencyExtractor,
82
+ computeDependencies: true,
83
+ rootDir: config.projectRoot,
84
+ });
85
+ plugins.push(dependencyPlugin);
86
+ }
87
+ const hasteMap = new _metroFileMap.HastePlugin({
88
+ platforms: new Set([
89
+ ...config.resolver.platforms,
90
+ _metroFileMap.default.H.NATIVE_PLATFORM,
91
+ ]),
92
+ hasteImplModulePath: config.resolver.hasteImplModulePath,
93
+ enableHastePackages: config.resolver.enableGlobalPackages,
94
+ rootDir: config.projectRoot,
95
+ failValidationOnConflicts: options?.throwOnModuleCollision ?? true,
96
+ });
97
+ plugins.push(hasteMap);
98
+ const fileMap = new _metroFileMap.default({
76
99
  cacheManagerFactory:
77
100
  config?.unstable_fileMapCacheManagerFactory ??
78
101
  ((factoryParams) =>
@@ -83,12 +106,8 @@ function createFileMap(config, options) {
83
106
  autoSave,
84
107
  })),
85
108
  perfLoggerFactory: config.unstable_perfLoggerFactory,
86
- computeDependencies,
87
109
  computeSha1: !config.watcher.unstable_lazySha1,
88
- dependencyExtractor: config.resolver.dependencyExtractor,
89
- enableHastePackages: config?.resolver.enableGlobalPackages,
90
110
  enableSymlinks: true,
91
- enableWorkerThreads: config.watcher.unstable_workerThreads,
92
111
  extensions: Array.from(
93
112
  new Set([
94
113
  ...config.resolver.sourceExts,
@@ -97,22 +116,21 @@ function createFileMap(config, options) {
97
116
  ]),
98
117
  ),
99
118
  forceNodeFilesystemAPI: !config.resolver.useWatchman,
100
- hasteImplModulePath: config.resolver.hasteImplModulePath,
101
119
  healthCheck: config.watcher.healthCheck,
102
120
  ignorePattern: getIgnorePattern(config),
103
121
  maxWorkers: config.maxWorkers,
104
- mocksPattern: "",
105
- platforms: [
106
- ...config.resolver.platforms,
107
- _metroFileMap.default.H.NATIVE_PLATFORM,
108
- ],
122
+ plugins,
109
123
  retainAllFiles: true,
110
124
  resetCache: config.resetCache,
111
125
  rootDir: config.projectRoot,
112
126
  roots: config.watchFolders,
113
- throwOnModuleCollision: options?.throwOnModuleCollision ?? true,
114
127
  useWatchman: config.resolver.useWatchman,
115
128
  watch,
116
129
  watchmanDeferStates: config.watcher.watchman.deferStates,
117
130
  });
131
+ return {
132
+ fileMap,
133
+ hasteMap,
134
+ dependencyPlugin,
135
+ };
118
136
  }
@@ -10,9 +10,14 @@
10
10
  */
11
11
 
12
12
  import type {ConfigT} from 'metro-config';
13
+ import type {HasteMap} from 'metro-file-map';
13
14
 
14
15
  import ci from 'ci-info';
15
- import MetroFileMap, {DiskCacheManager} from 'metro-file-map';
16
+ import MetroFileMap, {
17
+ DependencyPlugin,
18
+ DiskCacheManager,
19
+ HastePlugin,
20
+ } from 'metro-file-map';
16
21
 
17
22
  function getIgnorePattern(config: ConfigT): RegExp {
18
23
  // For now we support both options
@@ -54,25 +59,52 @@ function getIgnorePattern(config: ConfigT): RegExp {
54
59
 
55
60
  export default function createFileMap(
56
61
  config: ConfigT,
57
- options?: $ReadOnly<{
62
+ options?: Readonly<{
58
63
  extractDependencies?: boolean,
59
64
  watch?: boolean,
60
65
  throwOnModuleCollision?: boolean,
61
66
  cacheFilePrefix?: string,
62
67
  }>,
63
- ): MetroFileMap {
64
- const dependencyExtractor =
65
- options?.extractDependencies === false
66
- ? null
67
- : config.resolver.dependencyExtractor;
68
- const computeDependencies = dependencyExtractor != null;
69
-
68
+ ): {
69
+ fileMap: MetroFileMap,
70
+ hasteMap: HasteMap,
71
+ dependencyPlugin: ?DependencyPlugin,
72
+ } {
70
73
  const watch = options?.watch == null ? !ci.isCI : options.watch;
71
74
  const {enabled: autoSaveEnabled, ...autoSaveOpts} =
72
75
  config.watcher.unstable_autoSaveCache ?? {};
73
76
  const autoSave = watch && autoSaveEnabled ? autoSaveOpts : false;
74
77
 
75
- return MetroFileMap.create({
78
+ const plugins: Array<DependencyPlugin | HastePlugin> = [];
79
+
80
+ let dependencyPlugin = null;
81
+ // Add DependencyPlugin if dependencies should be extracted
82
+ if (
83
+ config.resolver.dependencyExtractor != null &&
84
+ options?.extractDependencies !== false
85
+ ) {
86
+ dependencyPlugin = new DependencyPlugin({
87
+ dependencyExtractor: config.resolver.dependencyExtractor,
88
+ computeDependencies: true,
89
+ rootDir: config.projectRoot,
90
+ });
91
+ plugins.push(dependencyPlugin);
92
+ }
93
+
94
+ const hasteMap = new HastePlugin({
95
+ platforms: new Set([
96
+ ...config.resolver.platforms,
97
+ MetroFileMap.H.NATIVE_PLATFORM,
98
+ ]),
99
+ hasteImplModulePath: config.resolver.hasteImplModulePath,
100
+ enableHastePackages: config.resolver.enableGlobalPackages,
101
+ rootDir: config.projectRoot,
102
+ failValidationOnConflicts: options?.throwOnModuleCollision ?? true,
103
+ });
104
+
105
+ plugins.push(hasteMap);
106
+
107
+ const fileMap = new MetroFileMap({
76
108
  cacheManagerFactory:
77
109
  config?.unstable_fileMapCacheManagerFactory ??
78
110
  (factoryParams =>
@@ -83,12 +115,8 @@ export default function createFileMap(
83
115
  autoSave,
84
116
  })),
85
117
  perfLoggerFactory: config.unstable_perfLoggerFactory,
86
- computeDependencies,
87
118
  computeSha1: !config.watcher.unstable_lazySha1,
88
- dependencyExtractor: config.resolver.dependencyExtractor,
89
- enableHastePackages: config?.resolver.enableGlobalPackages,
90
119
  enableSymlinks: true,
91
- enableWorkerThreads: config.watcher.unstable_workerThreads,
92
120
  extensions: Array.from(
93
121
  new Set([
94
122
  ...config.resolver.sourceExts,
@@ -97,19 +125,17 @@ export default function createFileMap(
97
125
  ]),
98
126
  ),
99
127
  forceNodeFilesystemAPI: !config.resolver.useWatchman,
100
- hasteImplModulePath: config.resolver.hasteImplModulePath,
101
128
  healthCheck: config.watcher.healthCheck,
102
129
  ignorePattern: getIgnorePattern(config),
103
130
  maxWorkers: config.maxWorkers,
104
- mocksPattern: '',
105
- platforms: [...config.resolver.platforms, MetroFileMap.H.NATIVE_PLATFORM],
131
+ plugins,
106
132
  retainAllFiles: true,
107
133
  resetCache: config.resetCache,
108
134
  rootDir: config.projectRoot,
109
135
  roots: config.watchFolders,
110
- throwOnModuleCollision: options?.throwOnModuleCollision ?? true,
111
136
  useWatchman: config.resolver.useWatchman,
112
137
  watch,
113
138
  watchmanDeferStates: config.watcher.watchman.deferStates,
114
139
  });
140
+ return {fileMap, hasteMap, dependencyPlugin};
115
141
  }