metro 0.83.4 → 0.84.1

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 (69) hide show
  1. package/package.json +18 -16
  2. package/src/Assets.js +2 -9
  3. package/src/Bundler/util.js +2 -9
  4. package/src/Bundler.js +1 -5
  5. package/src/DeltaBundler/DeltaCalculator.js +1 -5
  6. package/src/DeltaBundler/Graph.js +1 -5
  7. package/src/DeltaBundler/Serializers/baseJSBundle.js +1 -5
  8. package/src/DeltaBundler/Serializers/getAssets.js +1 -5
  9. package/src/DeltaBundler/Serializers/getRamBundleInfo.js +1 -5
  10. package/src/DeltaBundler/Serializers/helpers/js.js +2 -9
  11. package/src/DeltaBundler/Serializers/hmrJSBundle.js +2 -9
  12. package/src/DeltaBundler/Serializers/sourceMapGenerator.js +1 -5
  13. package/src/DeltaBundler/Transformer.js +1 -5
  14. package/src/DeltaBundler/Worker.flow.js +1 -5
  15. package/src/DeltaBundler/buildSubgraph.js +1 -5
  16. package/src/DeltaBundler/getTransformCacheKey.js +1 -5
  17. package/src/DeltaBundler/types.js +1 -5
  18. package/src/DeltaBundler.js +1 -5
  19. package/src/HmrServer.js +2 -9
  20. package/src/IncrementalBundler.js +2 -9
  21. package/src/ModuleGraph/worker/JsFileWrapping.js +2 -9
  22. package/src/ModuleGraph/worker/collectDependencies.js +2 -9
  23. package/src/ModuleGraph/worker/generateImportNames.js +1 -5
  24. package/src/Server/MultipartResponse.js +1 -5
  25. package/src/Server.js +47 -15
  26. package/src/Server.js.flow +57 -10
  27. package/src/cli-utils.js +1 -5
  28. package/src/commands/build.js +1 -5
  29. package/src/commands/dependencies.js +1 -5
  30. package/src/index.flow.js +26 -19
  31. package/src/index.flow.js.flow +25 -10
  32. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-import.js +1 -5
  33. package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-import.js +1 -5
  34. package/src/integration_tests/basic_bundle/import-export/index.js +2 -9
  35. package/src/integration_tests/execBundle.js +1 -5
  36. package/src/lib/BatchProcessor.js +1 -5
  37. package/src/lib/RamBundleParser.js +1 -5
  38. package/src/lib/TerminalReporter.js +8 -16
  39. package/src/lib/TerminalReporter.js.flow +6 -15
  40. package/src/lib/bundleProgressUtils.js +19 -0
  41. package/src/lib/bundleProgressUtils.js.flow +35 -0
  42. package/src/lib/contextModule.js +1 -5
  43. package/src/lib/contextModuleTemplates.js +1 -4
  44. package/src/lib/createWebsocketServer.js +1 -5
  45. package/src/lib/formatBundlingError.js +1 -5
  46. package/src/lib/getAppendScripts.js +1 -5
  47. package/src/lib/getGraphId.js +1 -5
  48. package/src/lib/getPrependedScripts.js +2 -9
  49. package/src/lib/logToConsole.js +1 -5
  50. package/src/lib/parseBundleOptionsFromBundleRequestUrl.js +2 -9
  51. package/src/lib/pathUtils.js +1 -4
  52. package/src/lib/relativizeSourceMap.js +1 -5
  53. package/src/lib/reporting.js +1 -5
  54. package/src/lib/transformHelpers.js +1 -5
  55. package/src/node-haste/DependencyGraph/ModuleResolution.js +2 -9
  56. package/src/node-haste/DependencyGraph/createFileMap.js +2 -9
  57. package/src/node-haste/DependencyGraph.js +1 -5
  58. package/src/node-haste/Package.js +1 -5
  59. package/src/node-haste/PackageCache.js +1 -5
  60. package/src/node-haste/lib/AssetPaths.js +1 -5
  61. package/src/node-haste/lib/parsePlatformFilePath.js +1 -5
  62. package/src/shared/output/RamBundle/as-assets.js +1 -5
  63. package/src/shared/output/RamBundle/as-indexed-file.js +1 -5
  64. package/src/shared/output/RamBundle/util.js +1 -5
  65. package/src/shared/output/RamBundle/write-sourcemap.js +1 -5
  66. package/src/shared/output/RamBundle.js +1 -5
  67. package/src/shared/output/bundle.flow.js +1 -5
  68. package/src/shared/output/meta.js +1 -5
  69. package/src/shared/output/writeFile.js +1 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "metro",
3
- "version": "0.83.4",
3
+ "version": "0.84.1",
4
4
  "description": "🚇 The JavaScript bundler for React Native.",
5
5
  "main": "src/index.js",
6
6
  "bin": "src/cli.js",
@@ -11,7 +11,8 @@
11
11
  },
12
12
  "repository": {
13
13
  "type": "git",
14
- "url": "git@github.com:facebook/metro.git"
14
+ "url": "git+https://github.com/facebook/metro.git",
15
+ "directory": "packages/metro"
15
16
  },
16
17
  "scripts": {
17
18
  "prepare-release": "test -d build && rm -rf src.real && mv src src.real && mv build src",
@@ -39,18 +40,18 @@
39
40
  "jest-worker": "^29.7.0",
40
41
  "jsc-safe-url": "^0.2.2",
41
42
  "lodash.throttle": "^4.1.1",
42
- "metro-babel-transformer": "0.83.4",
43
- "metro-cache": "0.83.4",
44
- "metro-cache-key": "0.83.4",
45
- "metro-config": "0.83.4",
46
- "metro-core": "0.83.4",
47
- "metro-file-map": "0.83.4",
48
- "metro-resolver": "0.83.4",
49
- "metro-runtime": "0.83.4",
50
- "metro-source-map": "0.83.4",
51
- "metro-symbolicate": "0.83.4",
52
- "metro-transform-plugins": "0.83.4",
53
- "metro-transform-worker": "0.83.4",
43
+ "metro-babel-transformer": "0.84.1",
44
+ "metro-cache": "0.84.1",
45
+ "metro-cache-key": "0.84.1",
46
+ "metro-config": "0.84.1",
47
+ "metro-core": "0.84.1",
48
+ "metro-file-map": "0.84.1",
49
+ "metro-resolver": "0.84.1",
50
+ "metro-runtime": "0.84.1",
51
+ "metro-source-map": "0.84.1",
52
+ "metro-symbolicate": "0.84.1",
53
+ "metro-transform-plugins": "0.84.1",
54
+ "metro-transform-worker": "0.84.1",
54
55
  "mime-types": "^3.0.1",
55
56
  "nullthrows": "^1.1.1",
56
57
  "serialize-error": "^2.1.0",
@@ -71,14 +72,15 @@
71
72
  "dedent": "^0.7.0",
72
73
  "jest-snapshot": "^29.7.0",
73
74
  "jest-snapshot-serializer-raw": "^1.2.0",
74
- "metro-babel-register": "0.83.4",
75
+ "metro-babel-register": "0.84.1",
75
76
  "metro-memory-fs": "*",
76
77
  "mock-req": "^0.2.0",
77
78
  "mock-res": "^0.6.0",
79
+ "selfsigned": "^5.5.0",
78
80
  "stack-trace": "^0.0.10"
79
81
  },
80
82
  "license": "MIT",
81
83
  "engines": {
82
- "node": ">=20.19.4"
84
+ "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
83
85
  }
84
86
  }
package/src/Assets.js CHANGED
@@ -17,11 +17,7 @@ var _fs = _interopRequireDefault(require("fs"));
17
17
  var _imageSize = _interopRequireDefault(require("image-size"));
18
18
  var _path = _interopRequireDefault(require("path"));
19
19
  function _interopRequireDefault(e) {
20
- return e && e.__esModule
21
- ? e
22
- : {
23
- default: e,
24
- };
20
+ return e && e.__esModule ? e : { default: e };
25
21
  }
26
22
  function _interopRequireWildcard(e, t) {
27
23
  if ("function" == typeof WeakMap)
@@ -31,10 +27,7 @@ function _interopRequireWildcard(e, t) {
31
27
  if (!t && e && e.__esModule) return e;
32
28
  var o,
33
29
  i,
34
- f = {
35
- __proto__: null,
36
- default: e,
37
- };
30
+ f = { __proto__: null, default: e };
38
31
  if (null === e || ("object" != typeof e && "function" != typeof e))
39
32
  return f;
40
33
  if ((o = t ? n : r)) {
@@ -9,11 +9,7 @@ var babylon = _interopRequireWildcard(require("@babel/parser"));
9
9
  var _template = _interopRequireDefault(require("@babel/template"));
10
10
  var babelTypes = _interopRequireWildcard(require("@babel/types"));
11
11
  function _interopRequireDefault(e) {
12
- return e && e.__esModule
13
- ? e
14
- : {
15
- default: e,
16
- };
12
+ return e && e.__esModule ? e : { default: e };
17
13
  }
18
14
  function _interopRequireWildcard(e, t) {
19
15
  if ("function" == typeof WeakMap)
@@ -23,10 +19,7 @@ function _interopRequireWildcard(e, t) {
23
19
  if (!t && e && e.__esModule) return e;
24
20
  var o,
25
21
  i,
26
- f = {
27
- __proto__: null,
28
- default: e,
29
- };
22
+ f = { __proto__: null, default: e };
30
23
  if (null === e || ("object" != typeof e && "function" != typeof e))
31
24
  return f;
32
25
  if ((o = t ? n : r)) {
package/src/Bundler.js CHANGED
@@ -11,11 +11,7 @@ var _DependencyGraph = _interopRequireDefault(
11
11
  require("./node-haste/DependencyGraph"),
12
12
  );
13
13
  function _interopRequireDefault(e) {
14
- return e && e.__esModule
15
- ? e
16
- : {
17
- default: e,
18
- };
14
+ return e && e.__esModule ? e : { default: e };
19
15
  }
20
16
  class Bundler {
21
17
  constructor(config, options) {
@@ -8,11 +8,7 @@ var _Graph = require("./Graph");
8
8
  var _events = _interopRequireDefault(require("events"));
9
9
  var _path = _interopRequireDefault(require("path"));
10
10
  function _interopRequireDefault(e) {
11
- return e && e.__esModule
12
- ? e
13
- : {
14
- default: e,
15
- };
11
+ return e && e.__esModule ? e : { default: e };
16
12
  }
17
13
  const debug = require("debug")("Metro:DeltaCalculator");
18
14
  class DeltaCalculator extends _events.default {
@@ -11,11 +11,7 @@ var _buildSubgraph = require("./buildSubgraph");
11
11
  var _invariant = _interopRequireDefault(require("invariant"));
12
12
  var _nullthrows = _interopRequireDefault(require("nullthrows"));
13
13
  function _interopRequireDefault(e) {
14
- return e && e.__esModule
15
- ? e
16
- : {
17
- default: e,
18
- };
14
+ return e && e.__esModule ? e : { default: e };
19
15
  }
20
16
  function getInternalOptions({ transform, resolve, onProgress, lazy, shallow }) {
21
17
  let numProcessed = 0;
@@ -11,11 +11,7 @@ var _processModules = _interopRequireDefault(
11
11
  require("./helpers/processModules"),
12
12
  );
13
13
  function _interopRequireDefault(e) {
14
- return e && e.__esModule
15
- ? e
16
- : {
17
- default: e,
18
- };
14
+ return e && e.__esModule ? e : { default: e };
19
15
  }
20
16
  function baseJSBundle(entryPoint, preModules, graph, options) {
21
17
  for (const module of graph.dependencies.values()) {
@@ -8,11 +8,7 @@ var _Assets = require("../../Assets");
8
8
  var _js = require("./helpers/js");
9
9
  var _path = _interopRequireDefault(require("path"));
10
10
  function _interopRequireDefault(e) {
11
- return e && e.__esModule
12
- ? e
13
- : {
14
- default: e,
15
- };
11
+ return e && e.__esModule ? e : { default: e };
16
12
  }
17
13
  async function getAssets(dependencies, options) {
18
14
  const promises = [];
@@ -16,11 +16,7 @@ var _sourceMapObject = require("./sourceMapObject");
16
16
  var _nullthrows = _interopRequireDefault(require("nullthrows"));
17
17
  var _path = _interopRequireDefault(require("path"));
18
18
  function _interopRequireDefault(e) {
19
- return e && e.__esModule
20
- ? e
21
- : {
22
- default: e,
23
- };
19
+ return e && e.__esModule ? e : { default: e };
24
20
  }
25
21
  async function getRamBundleInfo(entryPoint, pre, graph, options) {
26
22
  let modules = [...pre, ...graph.dependencies.values()];
@@ -21,10 +21,7 @@ function _interopRequireWildcard(e, t) {
21
21
  if (!t && e && e.__esModule) return e;
22
22
  var o,
23
23
  i,
24
- f = {
25
- __proto__: null,
26
- default: e,
27
- };
24
+ f = { __proto__: null, default: e };
28
25
  if (null === e || ("object" != typeof e && "function" != typeof e))
29
26
  return f;
30
27
  if ((o = t ? n : r)) {
@@ -44,11 +41,7 @@ function _interopRequireWildcard(e, t) {
44
41
  })(e, t);
45
42
  }
46
43
  function _interopRequireDefault(e) {
47
- return e && e.__esModule
48
- ? e
49
- : {
50
- default: e,
51
- };
44
+ return e && e.__esModule ? e : { default: e };
52
45
  }
53
46
  function wrapModule(module, options) {
54
47
  const output = getJsOutput(module);
@@ -9,11 +9,7 @@ var jscSafeUrl = _interopRequireWildcard(require("jsc-safe-url"));
9
9
  var _metroTransformPlugins = require("metro-transform-plugins");
10
10
  var _path = _interopRequireDefault(require("path"));
11
11
  function _interopRequireDefault(e) {
12
- return e && e.__esModule
13
- ? e
14
- : {
15
- default: e,
16
- };
12
+ return e && e.__esModule ? e : { default: e };
17
13
  }
18
14
  function _interopRequireWildcard(e, t) {
19
15
  if ("function" == typeof WeakMap)
@@ -23,10 +19,7 @@ function _interopRequireWildcard(e, t) {
23
19
  if (!t && e && e.__esModule) return e;
24
20
  var o,
25
21
  i,
26
- f = {
27
- __proto__: null,
28
- default: e,
29
- };
22
+ f = { __proto__: null, default: e };
30
23
  if (null === e || ("object" != typeof e && "function" != typeof e))
31
24
  return f;
32
25
  if ((o = t ? n : r)) {
@@ -11,11 +11,7 @@ var _getSourceMapInfo = _interopRequireDefault(
11
11
  var _js = require("./helpers/js");
12
12
  var _metroSourceMap = require("metro-source-map");
13
13
  function _interopRequireDefault(e) {
14
- return e && e.__esModule
15
- ? e
16
- : {
17
- default: e,
18
- };
14
+ return e && e.__esModule ? e : { default: e };
19
15
  }
20
16
  function getSourceMapInfosImpl(isBlocking, onDone, modules, options) {
21
17
  const sourceMapInfos = [];
@@ -15,11 +15,7 @@ var _fs = _interopRequireDefault(require("fs"));
15
15
  var _metroCache = require("metro-cache");
16
16
  var _path = _interopRequireDefault(require("path"));
17
17
  function _interopRequireDefault(e) {
18
- return e && e.__esModule
19
- ? e
20
- : {
21
- default: e,
22
- };
18
+ return e && e.__esModule ? e : { default: e };
23
19
  }
24
20
  const debug = require("debug")("Metro:Transformer");
25
21
  class Transformer {
@@ -9,11 +9,7 @@ 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
13
- ? e
14
- : {
15
- default: e,
16
- };
12
+ return e && e.__esModule ? e : { default: e };
17
13
  }
18
14
  function asDeserializedBuffer(value) {
19
15
  if (Buffer.isBuffer(value)) {
@@ -8,11 +8,7 @@ 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
12
- ? e
13
- : {
14
- default: e,
15
- };
11
+ return e && e.__esModule ? e : { default: e };
16
12
  }
17
13
  function resolveDependencies(parentPath, dependencies, resolve) {
18
14
  const maybeResolvedDeps = new Map();
@@ -7,11 +7,7 @@ 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
11
- ? e
12
- : {
13
- default: e,
14
- };
10
+ return e && e.__esModule ? e : { default: e };
15
11
  }
16
12
  const VERSION = require("../../package.json").version;
17
13
  function getTransformCacheKey(opts) {
@@ -2,9 +2,5 @@
2
2
 
3
3
  var _CountingSet = _interopRequireDefault(require("../lib/CountingSet"));
4
4
  function _interopRequireDefault(e) {
5
- return e && e.__esModule
6
- ? e
7
- : {
8
- default: e,
9
- };
5
+ return e && e.__esModule ? e : { default: e };
10
6
  }
@@ -8,11 +8,7 @@ var _DeltaCalculator = _interopRequireDefault(
8
8
  require("./DeltaBundler/DeltaCalculator"),
9
9
  );
10
10
  function _interopRequireDefault(e) {
11
- return e && e.__esModule
12
- ? e
13
- : {
14
- default: e,
15
- };
11
+ return e && e.__esModule ? e : { default: e };
16
12
  }
17
13
  class DeltaBundler {
18
14
  _deltaCalculators = new Map();
package/src/HmrServer.js CHANGED
@@ -39,10 +39,7 @@ function _interopRequireWildcard(e, t) {
39
39
  if (!t && e && e.__esModule) return e;
40
40
  var o,
41
41
  i,
42
- f = {
43
- __proto__: null,
44
- default: e,
45
- };
42
+ f = { __proto__: null, default: e };
46
43
  if (null === e || ("object" != typeof e && "function" != typeof e))
47
44
  return f;
48
45
  if ((o = t ? n : r)) {
@@ -62,11 +59,7 @@ function _interopRequireWildcard(e, t) {
62
59
  })(e, t);
63
60
  }
64
61
  function _interopRequireDefault(e) {
65
- return e && e.__esModule
66
- ? e
67
- : {
68
- default: e,
69
- };
62
+ return e && e.__esModule ? e : { default: e };
70
63
  }
71
64
  const debug = require("debug")("Metro:HMR");
72
65
  const { createActionStartEntry, createActionEndEntry, log } = _metroCore.Logger;
@@ -27,10 +27,7 @@ function _interopRequireWildcard(e, t) {
27
27
  if (!t && e && e.__esModule) return e;
28
28
  var o,
29
29
  i,
30
- f = {
31
- __proto__: null,
32
- default: e,
33
- };
30
+ f = { __proto__: null, default: e };
34
31
  if (null === e || ("object" != typeof e && "function" != typeof e))
35
32
  return f;
36
33
  if ((o = t ? n : r)) {
@@ -50,11 +47,7 @@ function _interopRequireWildcard(e, t) {
50
47
  })(e, t);
51
48
  }
52
49
  function _interopRequireDefault(e) {
53
- return e && e.__esModule
54
- ? e
55
- : {
56
- default: e,
57
- };
50
+ return e && e.__esModule ? e : { default: e };
58
51
  }
59
52
  function createRevisionId() {
60
53
  return _crypto.default.randomBytes(8).toString("hex");
@@ -20,10 +20,7 @@ function _interopRequireWildcard(e, t) {
20
20
  if (!t && e && e.__esModule) return e;
21
21
  var o,
22
22
  i,
23
- f = {
24
- __proto__: null,
25
- default: e,
26
- };
23
+ f = { __proto__: null, default: e };
27
24
  if (null === e || ("object" != typeof e && "function" != typeof e))
28
25
  return f;
29
26
  if ((o = t ? n : r)) {
@@ -43,11 +40,7 @@ function _interopRequireWildcard(e, t) {
43
40
  })(e, t);
44
41
  }
45
42
  function _interopRequireDefault(e) {
46
- return e && e.__esModule
47
- ? e
48
- : {
49
- default: e,
50
- };
43
+ return e && e.__esModule ? e : { default: e };
51
44
  }
52
45
  const WRAP_NAME = (exports.WRAP_NAME = "$$_REQUIRE");
53
46
  const IIFE_PARAM = _template.default.expression(
@@ -20,10 +20,7 @@ function _interopRequireWildcard(e, t) {
20
20
  if (!t && e && e.__esModule) return e;
21
21
  var o,
22
22
  i,
23
- f = {
24
- __proto__: null,
25
- default: e,
26
- };
23
+ f = { __proto__: null, default: e };
27
24
  if (null === e || ("object" != typeof e && "function" != typeof e))
28
25
  return f;
29
26
  if ((o = t ? n : r)) {
@@ -43,11 +40,7 @@ function _interopRequireWildcard(e, t) {
43
40
  })(e, t);
44
41
  }
45
42
  function _interopRequireDefault(e) {
46
- return e && e.__esModule
47
- ? e
48
- : {
49
- default: e,
50
- };
43
+ return e && e.__esModule ? e : { default: e };
51
44
  }
52
45
  function collectDependencies(ast, options) {
53
46
  const visited = new WeakSet();
@@ -7,11 +7,7 @@ exports.default = generateImportNames;
7
7
  var _traverse = _interopRequireDefault(require("@babel/traverse"));
8
8
  var _nullthrows = _interopRequireDefault(require("nullthrows"));
9
9
  function _interopRequireDefault(e) {
10
- return e && e.__esModule
11
- ? e
12
- : {
13
- default: e,
14
- };
10
+ return e && e.__esModule ? e : { default: e };
15
11
  }
16
12
  function generateImportNames(ast) {
17
13
  let importDefault;
@@ -6,11 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _accepts = _interopRequireDefault(require("accepts"));
8
8
  function _interopRequireDefault(e) {
9
- return e && e.__esModule
10
- ? e
11
- : {
12
- default: e,
13
- };
9
+ return e && e.__esModule ? e : { default: e };
14
10
  }
15
11
  const CRLF = "\r\n";
16
12
  const BOUNDARY = "3beqjf3apnqeu3h5jqorms4i";
package/src/Server.js CHANGED
@@ -25,6 +25,7 @@ var _IncrementalBundler = _interopRequireDefault(
25
25
  var _ResourceNotFoundError = _interopRequireDefault(
26
26
  require("./IncrementalBundler/ResourceNotFoundError"),
27
27
  );
28
+ var _bundleProgressUtils = require("./lib/bundleProgressUtils");
28
29
  var _bundleToString = _interopRequireDefault(require("./lib/bundleToString"));
29
30
  var _formatBundlingError = _interopRequireDefault(
30
31
  require("./lib/formatBundlingError"),
@@ -66,10 +67,7 @@ function _interopRequireWildcard(e, t) {
66
67
  if (!t && e && e.__esModule) return e;
67
68
  var o,
68
69
  i,
69
- f = {
70
- __proto__: null,
71
- default: e,
72
- };
70
+ f = { __proto__: null, default: e };
73
71
  if (null === e || ("object" != typeof e && "function" != typeof e))
74
72
  return f;
75
73
  if ((o = t ? n : r)) {
@@ -89,11 +87,7 @@ function _interopRequireWildcard(e, t) {
89
87
  })(e, t);
90
88
  }
91
89
  function _interopRequireDefault(e) {
92
- return e && e.__esModule
93
- ? e
94
- : {
95
- default: e,
96
- };
90
+ return e && e.__esModule ? e : { default: e };
97
91
  }
98
92
  const debug = require("debug")("Metro:Server");
99
93
  const { createActionStartEntry, createActionEndEntry, log } = _metroCore.Logger;
@@ -136,6 +130,8 @@ class Server {
136
130
  ]),
137
131
  ];
138
132
  this._isEnded = false;
133
+ this._fetchTimings = [];
134
+ this._activeFetchCount = 0;
139
135
  this._createModuleId = config.serializer.createModuleIdFactory();
140
136
  this._bundler = new _IncrementalBundler.default(config, {
141
137
  hasReducedPerformance: options && options.hasReducedPerformance,
@@ -684,14 +680,16 @@ class Server {
684
680
  }
685
681
  const mres = _MultipartResponse.default.wrapIfSupported(req, res);
686
682
  let onProgress = null;
687
- let lastProgress = -1;
683
+ let lastRatio = -1;
688
684
  if (this._config.reporter) {
689
685
  onProgress = (transformedFileCount, totalFileCount) => {
690
- const currentProgress = parseInt(
691
- (transformedFileCount / totalFileCount) * 100,
692
- 10,
686
+ const newRatio = (0,
687
+ _bundleProgressUtils.calculateBundleProgressRatio)(
688
+ transformedFileCount,
689
+ totalFileCount,
690
+ lastRatio,
693
691
  );
694
- if (currentProgress > lastProgress || totalFileCount < 10) {
692
+ if (newRatio > lastRatio) {
695
693
  if (mres instanceof _MultipartResponse.default) {
696
694
  mres.writeChunk(
697
695
  {
@@ -700,13 +698,14 @@ class Server {
700
698
  JSON.stringify({
701
699
  done: transformedFileCount,
702
700
  total: totalFileCount,
701
+ percent: Math.floor(newRatio * 100),
703
702
  }),
704
703
  );
705
704
  }
706
705
  if (res.socket != null && res.socket.uncork != null) {
707
706
  res.socket.uncork();
708
707
  }
709
- lastProgress = currentProgress;
708
+ lastRatio = newRatio;
710
709
  }
711
710
  this._reporter.update({
712
711
  buildID: getBuildID(buildNumber),
@@ -748,8 +747,16 @@ class Server {
748
747
  const logEntry = log(
749
748
  createActionStartEntry(createStartEntry(startContext)),
750
749
  );
750
+ const fetchTiming = {
751
+ graphId,
752
+ startTime: requestStartTimestamp,
753
+ endTime: null,
754
+ isPrefetch: req.method === "HEAD",
755
+ };
751
756
  let result;
752
757
  try {
758
+ this._fetchTimings.push(fetchTiming);
759
+ this._activeFetchCount++;
753
760
  result = await build(startContext);
754
761
  } catch (error) {
755
762
  const formattedError = (0, _formatBundlingError.default)(error);
@@ -779,6 +786,31 @@ class Server {
779
786
  debug("Bundling error", error);
780
787
  buildContext.bundlePerfLogger.end("FAIL");
781
788
  return;
789
+ } finally {
790
+ fetchTiming.endTime =
791
+ _perf_hooks.performance.timeOrigin + _perf_hooks.performance.now();
792
+ if (!fetchTiming.isPrefetch) {
793
+ buildContext.bundlePerfLogger.annotate({
794
+ bool: {
795
+ had_competing_prefetch: this._fetchTimings
796
+ .filter((t) => t.isPrefetch && t.graphId !== graphId)
797
+ .some((prefetch) => {
798
+ const prefetchEndTime =
799
+ prefetch.endTime ?? Number.MAX_SAFE_INTEGER;
800
+ const fetchEndTime =
801
+ fetchTiming.endTime ?? Number.MAX_SAFE_INTEGER;
802
+ return (
803
+ prefetch.startTime < fetchEndTime &&
804
+ prefetchEndTime > fetchTiming.startTime
805
+ );
806
+ }),
807
+ },
808
+ });
809
+ }
810
+ this._activeFetchCount--;
811
+ if (this._activeFetchCount === 0) {
812
+ this._fetchTimings = [];
813
+ }
782
814
  }
783
815
  const endContext = {
784
816
  ...startContext,