metro 0.83.0 → 0.83.2

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 (208) hide show
  1. package/package.json +16 -16
  2. package/src/Assets.js +68 -42
  3. package/src/Assets.js.flow +13 -24
  4. package/src/Bundler/util.js +40 -17
  5. package/src/Bundler/util.js.flow +6 -13
  6. package/src/Bundler.js +17 -6
  7. package/src/Bundler.js.flow +3 -7
  8. package/src/DeltaBundler/DeltaCalculator.js +15 -15
  9. package/src/DeltaBundler/DeltaCalculator.js.flow +4 -7
  10. package/src/DeltaBundler/Graph.js +45 -40
  11. package/src/DeltaBundler/Graph.js.flow +3 -4
  12. package/src/DeltaBundler/Serializers/baseJSBundle.js +24 -10
  13. package/src/DeltaBundler/Serializers/baseJSBundle.js.flow +6 -9
  14. package/src/DeltaBundler/Serializers/getAllFiles.js +9 -6
  15. package/src/DeltaBundler/Serializers/getAllFiles.js.flow +4 -8
  16. package/src/DeltaBundler/Serializers/getAssets.js +18 -11
  17. package/src/DeltaBundler/Serializers/getAssets.js.flow +5 -9
  18. package/src/DeltaBundler/Serializers/getExplodedSourceMap.d.ts +26 -0
  19. package/src/DeltaBundler/Serializers/getExplodedSourceMap.js +7 -6
  20. package/src/DeltaBundler/Serializers/getExplodedSourceMap.js.flow +3 -9
  21. package/src/DeltaBundler/Serializers/getRamBundleInfo.js +40 -23
  22. package/src/DeltaBundler/Serializers/getRamBundleInfo.js.flow +11 -18
  23. package/src/DeltaBundler/Serializers/helpers/getInlineSourceMappingURL.js +4 -1
  24. package/src/DeltaBundler/Serializers/helpers/getInlineSourceMappingURL.js.flow +1 -5
  25. package/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js +7 -4
  26. package/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js.flow +3 -7
  27. package/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies.js +4 -1
  28. package/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies.js.flow +2 -6
  29. package/src/DeltaBundler/Serializers/helpers/js.js +65 -31
  30. package/src/DeltaBundler/Serializers/helpers/js.js.flow +21 -21
  31. package/src/DeltaBundler/Serializers/helpers/processModules.js +8 -5
  32. package/src/DeltaBundler/Serializers/helpers/processModules.js.flow +3 -7
  33. package/src/DeltaBundler/Serializers/hmrJSBundle.js +70 -25
  34. package/src/DeltaBundler/Serializers/hmrJSBundle.js.flow +43 -33
  35. package/src/DeltaBundler/Serializers/sourceMapGenerator.js +19 -16
  36. package/src/DeltaBundler/Serializers/sourceMapGenerator.js.flow +6 -14
  37. package/src/DeltaBundler/Serializers/sourceMapObject.js +12 -10
  38. package/src/DeltaBundler/Serializers/sourceMapObject.js.flow +4 -9
  39. package/src/DeltaBundler/Serializers/sourceMapString.js +14 -12
  40. package/src/DeltaBundler/Serializers/sourceMapString.js.flow +4 -9
  41. package/src/DeltaBundler/Transformer.js +32 -27
  42. package/src/DeltaBundler/Transformer.js.flow +10 -17
  43. package/src/DeltaBundler/Worker.flow.js +25 -18
  44. package/src/DeltaBundler/Worker.flow.js.flow +12 -18
  45. package/src/DeltaBundler/Worker.js.flow +2 -0
  46. package/src/DeltaBundler/WorkerFarm.js +13 -11
  47. package/src/DeltaBundler/WorkerFarm.js.flow +7 -9
  48. package/src/DeltaBundler/buildSubgraph.js +13 -17
  49. package/src/DeltaBundler/buildSubgraph.js.flow +1 -1
  50. package/src/DeltaBundler/getTransformCacheKey.js +12 -6
  51. package/src/DeltaBundler/getTransformCacheKey.js.flow +5 -7
  52. package/src/DeltaBundler/mergeDeltas.js +4 -1
  53. package/src/DeltaBundler/mergeDeltas.js.flow +5 -6
  54. package/src/DeltaBundler/types.d.ts +4 -1
  55. package/src/DeltaBundler/{types.flow.js → types.js} +1 -5
  56. package/src/DeltaBundler/{types.flow.js.flow → types.js.flow} +5 -3
  57. package/src/DeltaBundler.js +15 -6
  58. package/src/DeltaBundler.js.flow +4 -8
  59. package/src/HmrServer.js +116 -68
  60. package/src/HmrServer.js.flow +41 -52
  61. package/src/IncrementalBundler/GraphNotFoundError.js +5 -1
  62. package/src/IncrementalBundler/GraphNotFoundError.js.flow +1 -5
  63. package/src/IncrementalBundler/ResourceNotFoundError.js +5 -1
  64. package/src/IncrementalBundler/ResourceNotFoundError.js.flow +1 -5
  65. package/src/IncrementalBundler/RevisionNotFoundError.js +5 -1
  66. package/src/IncrementalBundler/RevisionNotFoundError.js.flow +1 -5
  67. package/src/IncrementalBundler.js +71 -35
  68. package/src/IncrementalBundler.js.flow +12 -16
  69. package/src/ModuleGraph/test-helpers.js +19 -14
  70. package/src/ModuleGraph/worker/JsFileWrapping.js +22 -29
  71. package/src/ModuleGraph/worker/JsFileWrapping.js.flow +1 -10
  72. package/src/ModuleGraph/worker/collectDependencies.js +81 -52
  73. package/src/ModuleGraph/worker/collectDependencies.js.flow +15 -22
  74. package/src/ModuleGraph/worker/generateImportNames.js +12 -6
  75. package/src/ModuleGraph/worker/generateImportNames.js.flow +3 -7
  76. package/src/ModuleGraph/worker/importLocationsPlugin.js +5 -4
  77. package/src/ModuleGraph/worker/importLocationsPlugin.js.flow +2 -4
  78. package/src/Server/MultipartResponse.js +11 -4
  79. package/src/Server/MultipartResponse.js.flow +2 -5
  80. package/src/Server/symbolicate.d.ts +31 -0
  81. package/src/Server/symbolicate.js +15 -16
  82. package/src/Server/symbolicate.js.flow +6 -16
  83. package/src/Server.d.ts +0 -1
  84. package/src/Server.js +298 -191
  85. package/src/Server.js.flow +136 -99
  86. package/src/cli-utils.js +13 -4
  87. package/src/cli-utils.js.flow +3 -5
  88. package/src/cli.js.flow +2 -0
  89. package/src/commands/build.js +18 -15
  90. package/src/commands/build.js.flow +6 -6
  91. package/src/commands/dependencies.js +26 -16
  92. package/src/commands/dependencies.js.flow +7 -9
  93. package/src/commands/serve.js +16 -11
  94. package/src/commands/serve.js.flow +5 -6
  95. package/src/index.d.ts +26 -3
  96. package/src/index.flow.js +162 -72
  97. package/src/index.flow.js.flow +60 -47
  98. package/src/index.js.flow +2 -0
  99. package/src/integration_tests/basic_bundle/TestBundle.js.flow +2 -1
  100. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-import.js +1 -5
  101. package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-import.js +1 -5
  102. package/src/integration_tests/basic_bundle/import-export/index.js +5 -13
  103. package/src/integration_tests/basic_bundle/require-context/mode-eager.js +2 -2
  104. package/src/integration_tests/basic_bundle/require-context/mode-lazy-once.js +2 -2
  105. package/src/integration_tests/basic_bundle/require-context/mode-lazy.js +2 -2
  106. package/src/integration_tests/basic_bundle/require-context/mode-sync.js +1 -1
  107. package/src/integration_tests/basic_bundle/require-context/utils.js +1 -1
  108. package/src/integration_tests/execBundle.js +7 -4
  109. package/src/integration_tests/execBundle.js.flow +1 -3
  110. package/src/integration_tests/metro.config.js +3 -3
  111. package/src/lib/BatchProcessor.js +15 -5
  112. package/src/lib/BatchProcessor.js.flow +2 -6
  113. package/src/lib/CountingSet.js.flow +2 -2
  114. package/src/lib/JsonReporter.js +6 -2
  115. package/src/lib/JsonReporter.js.flow +1 -5
  116. package/src/lib/RamBundleParser.js +12 -3
  117. package/src/lib/RamBundleParser.js.flow +2 -6
  118. package/src/lib/TerminalReporter.js +95 -56
  119. package/src/lib/TerminalReporter.js.flow +9 -12
  120. package/src/lib/bundleToString.js +4 -1
  121. package/src/lib/bundleToString.js.flow +2 -9
  122. package/src/lib/contextModule.js +3 -7
  123. package/src/lib/contextModuleTemplates.js +9 -19
  124. package/src/lib/countLines.js +5 -1
  125. package/src/lib/countLines.js.flow +1 -3
  126. package/src/lib/createWebsocketServer.js +7 -7
  127. package/src/lib/createWebsocketServer.js.flow +4 -4
  128. package/src/lib/debounceAsyncQueue.js +4 -1
  129. package/src/lib/debounceAsyncQueue.js.flow +1 -5
  130. package/src/lib/formatBundlingError.js +32 -22
  131. package/src/lib/formatBundlingError.js.flow +18 -20
  132. package/src/lib/getAppendScripts.js +20 -20
  133. package/src/lib/getAppendScripts.js.flow +9 -13
  134. package/src/lib/getGraphId.js +12 -6
  135. package/src/lib/getGraphId.js.flow +4 -10
  136. package/src/lib/getPreludeCode.js +7 -10
  137. package/src/lib/getPreludeCode.js.flow +2 -6
  138. package/src/lib/getPrependedScripts.js +40 -16
  139. package/src/lib/getPrependedScripts.js.flow +8 -13
  140. package/src/lib/isResolvedDependency.js.flow +1 -1
  141. package/src/lib/logToConsole.js +18 -12
  142. package/src/lib/logToConsole.js.flow +5 -14
  143. package/src/lib/parseBundleOptionsFromBundleRequestUrl.js +144 -0
  144. package/src/lib/parseBundleOptionsFromBundleRequestUrl.js.flow +146 -0
  145. package/src/lib/parseCustomResolverOptions.js +8 -6
  146. package/src/lib/parseCustomResolverOptions.js.flow +6 -12
  147. package/src/lib/parseCustomTransformOptions.js +8 -6
  148. package/src/lib/parseCustomTransformOptions.js.flow +11 -14
  149. package/src/lib/parseJsonBody.js +4 -1
  150. package/src/lib/parseJsonBody.js.flow +1 -3
  151. package/src/lib/pathUtils.js +34 -0
  152. package/src/lib/pathUtils.js.flow +16 -0
  153. package/src/lib/relativizeSourceMap.js +12 -3
  154. package/src/lib/relativizeSourceMap.js.flow +2 -6
  155. package/src/lib/reporting.js +25 -19
  156. package/src/lib/reporting.js.flow +6 -16
  157. package/src/lib/splitBundleOptions.js +4 -2
  158. package/src/lib/splitBundleOptions.js.flow +4 -7
  159. package/src/lib/transformHelpers.js +19 -25
  160. package/src/lib/transformHelpers.js.flow +5 -15
  161. package/src/node-haste/DependencyGraph/ModuleResolution.js +75 -57
  162. package/src/node-haste/DependencyGraph/ModuleResolution.js.flow +28 -44
  163. package/src/node-haste/DependencyGraph/createFileMap.js +15 -13
  164. package/src/node-haste/DependencyGraph/createFileMap.js.flow +2 -5
  165. package/src/node-haste/DependencyGraph.js +61 -45
  166. package/src/node-haste/DependencyGraph.js.flow +34 -31
  167. package/src/node-haste/Package.js +13 -6
  168. package/src/node-haste/Package.js.flow +3 -7
  169. package/src/node-haste/{ModuleCache.js → PackageCache.js} +11 -19
  170. package/src/node-haste/{ModuleCache.js.flow → PackageCache.js.flow} +2 -30
  171. package/src/node-haste/lib/AssetPaths.js +14 -8
  172. package/src/node-haste/lib/AssetPaths.js.flow +7 -8
  173. package/src/node-haste/lib/parsePlatformFilePath.js +10 -4
  174. package/src/node-haste/lib/parsePlatformFilePath.js.flow +2 -6
  175. package/src/shared/output/RamBundle/as-assets.js +42 -22
  176. package/src/shared/output/RamBundle/as-assets.js.flow +12 -15
  177. package/src/shared/output/RamBundle/as-indexed-file.js +33 -23
  178. package/src/shared/output/RamBundle/as-indexed-file.js.flow +10 -16
  179. package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js +11 -10
  180. package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js.flow +4 -6
  181. package/src/shared/output/RamBundle/magic-number.js +5 -1
  182. package/src/shared/output/RamBundle/magic-number.js.flow +1 -3
  183. package/src/shared/output/RamBundle/util.js +21 -18
  184. package/src/shared/output/RamBundle/util.js.flow +4 -6
  185. package/src/shared/output/RamBundle/write-sourcemap.js +9 -3
  186. package/src/shared/output/RamBundle/write-sourcemap.js.flow +2 -6
  187. package/src/shared/output/RamBundle.js +16 -9
  188. package/src/shared/output/RamBundle.js.flow +8 -12
  189. package/src/shared/output/bundle.flow.js +37 -13
  190. package/src/shared/output/bundle.flow.js.flow +24 -12
  191. package/src/shared/output/bundle.js.flow +2 -0
  192. package/src/shared/output/meta.js +16 -9
  193. package/src/shared/output/meta.js.flow +3 -5
  194. package/src/shared/output/unbundle.js +14 -1
  195. package/src/shared/output/unbundle.js.flow +1 -3
  196. package/src/shared/output/writeFile.js +11 -4
  197. package/src/shared/output/writeFile.js.flow +3 -5
  198. package/src/shared/types.d.ts +0 -1
  199. package/src/shared/{types.flow.js.flow → types.js.flow} +16 -17
  200. package/src/lib/createModuleIdFactory.js +0 -15
  201. package/src/lib/createModuleIdFactory.js.flow +0 -27
  202. package/src/lib/getMaxWorkers.js +0 -9
  203. package/src/lib/getMaxWorkers.js.flow +0 -22
  204. package/src/lib/parseOptionsFromUrl.js +0 -62
  205. package/src/lib/parseOptionsFromUrl.js.flow +0 -97
  206. package/src/node-haste/Module.js +0 -24
  207. package/src/node-haste/Module.js.flow +0 -41
  208. /package/src/shared/{types.flow.js → types.js} +0 -0
@@ -1,22 +1,29 @@
1
1
  "use strict";
2
2
 
3
- const { makeAsyncCommand } = require("../cli-utils");
4
- const Server = require("../Server");
5
- const fs = require("fs");
6
- const { loadConfig } = require("metro-config");
7
- const path = require("path");
8
- const { promisify } = require("util");
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true,
5
+ });
6
+ exports.default = void 0;
7
+ var _cliUtils = require("../cli-utils");
8
+ var _Server = _interopRequireDefault(require("../Server"));
9
+ var _fs = _interopRequireDefault(require("fs"));
10
+ var _metroConfig = require("metro-config");
11
+ var _path = _interopRequireDefault(require("path"));
12
+ var _util = require("util");
13
+ function _interopRequireDefault(e) {
14
+ return e && e.__esModule ? e : { default: e };
15
+ }
9
16
  async function dependencies(args, config) {
10
17
  const rootModuleAbsolutePath = args.entryFile;
11
- if (!fs.existsSync(rootModuleAbsolutePath)) {
18
+ if (!_fs.default.existsSync(rootModuleAbsolutePath)) {
12
19
  return Promise.reject(
13
- new Error(`File ${rootModuleAbsolutePath} does not exist`)
20
+ new Error(`File ${rootModuleAbsolutePath} does not exist`),
14
21
  );
15
22
  }
16
23
  config.cacheStores = [];
17
- const relativePath = path.relative(
24
+ const relativePath = _path.default.relative(
18
25
  config.server.unstable_serverRoot ?? config.projectRoot,
19
- rootModuleAbsolutePath
26
+ rootModuleAbsolutePath,
20
27
  );
21
28
  const options = {
22
29
  platform: args.platform,
@@ -26,8 +33,10 @@ async function dependencies(args, config) {
26
33
  generateSourceMaps: !args.dev,
27
34
  };
28
35
  const outStream =
29
- args.output != null ? fs.createWriteStream(args.output) : process.stdout;
30
- const server = new Server(config);
36
+ args.output != null
37
+ ? _fs.default.createWriteStream(args.output)
38
+ : process.stdout;
39
+ const server = new _Server.default(config);
31
40
  try {
32
41
  const deps = await server.getOrderedDependencyPaths(options);
33
42
  deps.forEach((modulePath) => {
@@ -42,10 +51,10 @@ async function dependencies(args, config) {
42
51
  await server.end();
43
52
  }
44
53
  return args.output != null
45
- ? promisify(outStream.end).bind(outStream)()
54
+ ? (0, _util.promisify)(outStream.end).bind(outStream)()
46
55
  : Promise.resolve();
47
56
  }
48
- module.exports = () => ({
57
+ var _default = () => ({
49
58
  command: "get-dependencies [entryFile]",
50
59
  desc: "List all dependencies that will be bundled for a given entry point",
51
60
  builder: (yargs) => {
@@ -85,8 +94,9 @@ module.exports = () => ({
85
94
  description: "Enables logging",
86
95
  });
87
96
  },
88
- handler: makeAsyncCommand(async (argv) => {
89
- const config = await loadConfig(argv);
97
+ handler: (0, _cliUtils.makeAsyncCommand)(async (argv) => {
98
+ const config = await (0, _metroConfig.loadConfig)(argv);
90
99
  await dependencies(argv, config);
91
100
  }),
92
101
  });
102
+ exports.default = _default;
@@ -9,18 +9,16 @@
9
9
  * @oncall react_native
10
10
  */
11
11
 
12
- 'use strict';
13
-
14
12
  import type {ConfigT} from 'metro-config';
15
13
  import type {ModuleObject} from 'yargs';
16
14
  import typeof Yargs from 'yargs';
17
15
 
18
- const {makeAsyncCommand} = require('../cli-utils');
19
- const Server = require('../Server');
20
- const fs = require('fs');
21
- const {loadConfig} = require('metro-config');
22
- const path = require('path');
23
- const {promisify} = require('util');
16
+ import {makeAsyncCommand} from '../cli-utils';
17
+ import Server from '../Server';
18
+ import fs from 'fs';
19
+ import {loadConfig} from 'metro-config';
20
+ import path from 'path';
21
+ import {promisify} from 'util';
24
22
 
25
23
  type Args = $ReadOnly<{
26
24
  entryFile: string,
@@ -84,7 +82,7 @@ async function dependencies(args: Args, config: ConfigT) {
84
82
  : Promise.resolve();
85
83
  }
86
84
 
87
- module.exports = (): {...ModuleObject, handler: Function} => ({
85
+ export default (): {...ModuleObject, handler: Function} => ({
88
86
  command: 'get-dependencies [entryFile]',
89
87
  desc: 'List all dependencies that will be bundled for a given entry point',
90
88
  builder: (yargs: Yargs) => {
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
2
 
3
- const { makeAsyncCommand, watchFile } = require("../cli-utils");
4
- const { loadConfig, resolveConfig } = require("metro-config");
5
- const { promisify } = require("util");
6
- module.exports = () => ({
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true,
5
+ });
6
+ exports.default = void 0;
7
+ var _cliUtils = require("../cli-utils");
8
+ var _metroConfig = require("metro-config");
9
+ var _util = require("util");
10
+ var _default = () => ({
7
11
  command: "serve",
8
12
  aliases: ["start"],
9
13
  desc: "Starts Metro on the given port, building bundles on the fly",
@@ -57,10 +61,10 @@ module.exports = () => ({
57
61
  });
58
62
  yargs.example(
59
63
  "secure-server-options",
60
- '-s.cert="$(cat path/to/cert)" -s.key="$(cat path/to/key")'
64
+ '-s.cert="$(cat path/to/cert)" -s.key="$(cat path/to/key")',
61
65
  );
62
66
  },
63
- handler: makeAsyncCommand(async (argv) => {
67
+ handler: (0, _cliUtils.makeAsyncCommand)(async (argv) => {
64
68
  let server = null;
65
69
  let restarting = false;
66
70
  async function restart() {
@@ -71,9 +75,9 @@ module.exports = () => ({
71
75
  }
72
76
  if (server) {
73
77
  console.log("Configuration changed. Restarting the server...");
74
- await promisify(server.close).call(server);
78
+ await (0, _util.promisify)(server.close).call(server);
75
79
  }
76
- const config = await loadConfig(argv);
80
+ const config = await (0, _metroConfig.loadConfig)(argv);
77
81
  const MetroApi = require("../index");
78
82
  const {
79
83
  config: _config,
@@ -86,15 +90,16 @@ module.exports = () => ({
86
90
  } = argv;
87
91
  ({ httpServer: server } = await MetroApi.runServer(
88
92
  config,
89
- runServerOptions
93
+ runServerOptions,
90
94
  ));
91
95
  restarting = false;
92
96
  }
93
- const foundConfig = await resolveConfig(argv.config);
97
+ const foundConfig = await (0, _metroConfig.resolveConfig)(argv.config);
94
98
  if (foundConfig) {
95
- await watchFile(foundConfig.filepath, restart);
99
+ await (0, _cliUtils.watchFile)(foundConfig.filepath, restart);
96
100
  } else {
97
101
  await restart();
98
102
  }
99
103
  }),
100
104
  });
105
+ exports.default = _default;
@@ -9,14 +9,12 @@
9
9
  * @oncall react_native
10
10
  */
11
11
 
12
- 'use strict';
13
-
14
12
  import type {ModuleObject} from 'yargs';
15
13
  import typeof Yargs from 'yargs';
16
14
 
17
- const {makeAsyncCommand, watchFile} = require('../cli-utils');
18
- const {loadConfig, resolveConfig} = require('metro-config');
19
- const {promisify} = require('util');
15
+ import {makeAsyncCommand, watchFile} from '../cli-utils';
16
+ import {loadConfig, resolveConfig} from 'metro-config';
17
+ import {promisify} from 'util';
20
18
 
21
19
  type Args = $ReadOnly<{
22
20
  projectRoots?: $ReadOnlyArray<string>,
@@ -32,7 +30,7 @@ type Args = $ReadOnly<{
32
30
  resetCache?: boolean,
33
31
  }>;
34
32
 
35
- module.exports = (): {
33
+ export default (): {
36
34
  ...ModuleObject,
37
35
  handler: Function,
38
36
  } => ({
@@ -96,6 +94,7 @@ module.exports = (): {
96
94
  const config = await loadConfig(argv);
97
95
 
98
96
  // Inline require() to avoid circular dependency with ../index
97
+ // eslint-disable-next-line import/no-commonjs
99
98
  const MetroApi = require('../index');
100
99
 
101
100
  const {
package/src/index.d.ts CHANGED
@@ -32,11 +32,12 @@ import type {
32
32
  import type {Duplex} from 'stream';
33
33
  import type Yargs from 'yargs';
34
34
 
35
- export {loadConfig, mergeConfig, resolveConfig} from 'metro-config';
36
- export {Terminal} from 'metro-core';
37
- export {TerminalReporter} from './lib/TerminalReporter';
35
+ import {TerminalReporter} from './lib/TerminalReporter';
36
+ import {loadConfig, mergeConfig, resolveConfig} from 'metro-config';
37
+ import {Terminal} from 'metro-core';
38
38
 
39
39
  export {HttpServer, HttpsServer};
40
+ export {loadConfig, mergeConfig, resolveConfig, Terminal, TerminalReporter};
40
41
 
41
42
  interface MetroMiddleWare {
42
43
  attachHmrServer: (httpServer: HttpServer | HttpsServer) => void;
@@ -168,3 +169,25 @@ export function attachMetroCli(
168
169
  yargs: Yargs.Argv,
169
170
  options?: AttachMetroCLIOptions,
170
171
  ): Yargs.Argv;
172
+
173
+ /**
174
+ * Backwards-compatibility with CommonJS consumers using interopRequireDefault.
175
+ * Do not add to this list.
176
+ *
177
+ * @deprecated Default import from 'metro' is deprecated, use named exports.
178
+ */
179
+ declare const $$EXPORT_DEFAULT_DECLARATION$$: {
180
+ attachMetroCli: typeof attachMetroCli;
181
+ runServer: typeof runServer;
182
+ Terminal: typeof Terminal;
183
+ TerminalReporter: typeof TerminalReporter;
184
+ loadConfig: typeof loadConfig;
185
+ mergeConfig: typeof mergeConfig;
186
+ resolveConfig: typeof resolveConfig;
187
+ createConnectMiddleware: typeof createConnectMiddleware;
188
+ runBuild: typeof runBuild;
189
+ buildGraph: typeof buildGraph;
190
+ };
191
+ declare type $$EXPORT_DEFAULT_DECLARATION$$ =
192
+ typeof $$EXPORT_DEFAULT_DECLARATION$$;
193
+ export default $$EXPORT_DEFAULT_DECLARATION$$;
package/src/index.flow.js CHANGED
@@ -1,35 +1,108 @@
1
1
  "use strict";
2
2
 
3
- const makeBuildCommand = require("./commands/build");
4
- const makeDependenciesCommand = require("./commands/dependencies");
5
- const makeServeCommand = require("./commands/serve");
6
- const MetroHmrServer = require("./HmrServer");
7
- const IncrementalBundler = require("./IncrementalBundler");
8
- const createWebsocketServer = require("./lib/createWebsocketServer");
9
- const JsonReporter = require("./lib/JsonReporter");
10
- const TerminalReporter = require("./lib/TerminalReporter");
11
- const MetroServer = require("./Server");
12
- const outputBundle = require("./shared/output/bundle");
13
- const chalk = require("chalk");
14
- const fs = require("fs");
15
- const http = require("http");
16
- const https = require("https");
17
- const {
18
- getDefaultConfig,
19
- loadConfig,
20
- mergeConfig,
21
- resolveConfig,
22
- } = require("metro-config");
23
- const { Terminal } = require("metro-core");
24
- const net = require("net");
25
- const nullthrows = require("nullthrows");
26
- const { parse } = require("url");
27
- exports.Terminal = Terminal;
28
- exports.JsonReporter = JsonReporter;
29
- exports.TerminalReporter = TerminalReporter;
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true,
5
+ });
6
+ Object.defineProperty(exports, "JsonReporter", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _JsonReporter.default;
10
+ },
11
+ });
12
+ Object.defineProperty(exports, "Terminal", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _metroCore.Terminal;
16
+ },
17
+ });
18
+ Object.defineProperty(exports, "TerminalReporter", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _TerminalReporter.default;
22
+ },
23
+ });
24
+ exports.default =
25
+ exports.createConnectMiddleware =
26
+ exports.buildGraph =
27
+ exports.attachMetroCli =
28
+ void 0;
29
+ Object.defineProperty(exports, "loadConfig", {
30
+ enumerable: true,
31
+ get: function () {
32
+ return _metroConfig.loadConfig;
33
+ },
34
+ });
35
+ Object.defineProperty(exports, "mergeConfig", {
36
+ enumerable: true,
37
+ get: function () {
38
+ return _metroConfig.mergeConfig;
39
+ },
40
+ });
41
+ Object.defineProperty(exports, "resolveConfig", {
42
+ enumerable: true,
43
+ get: function () {
44
+ return _metroConfig.resolveConfig;
45
+ },
46
+ });
47
+ exports.runBuild = void 0;
48
+ exports.runMetro = runMetro;
49
+ exports.runServer = void 0;
50
+ var _build = _interopRequireDefault(require("./commands/build"));
51
+ var _dependencies = _interopRequireDefault(require("./commands/dependencies"));
52
+ var _serve = _interopRequireDefault(require("./commands/serve"));
53
+ var _HmrServer = _interopRequireDefault(require("./HmrServer"));
54
+ var _IncrementalBundler = _interopRequireDefault(
55
+ require("./IncrementalBundler"),
56
+ );
57
+ var _createWebsocketServer = _interopRequireDefault(
58
+ require("./lib/createWebsocketServer"),
59
+ );
60
+ var _JsonReporter = _interopRequireDefault(require("./lib/JsonReporter"));
61
+ var _TerminalReporter = _interopRequireDefault(
62
+ require("./lib/TerminalReporter"),
63
+ );
64
+ var _Server = _interopRequireDefault(require("./Server"));
65
+ var outputBundle = _interopRequireWildcard(require("./shared/output/bundle"));
66
+ var _chalk = _interopRequireDefault(require("chalk"));
67
+ var _fs = _interopRequireDefault(require("fs"));
68
+ var _http = _interopRequireDefault(require("http"));
69
+ var _https = _interopRequireDefault(require("https"));
70
+ var _metroConfig = require("metro-config");
71
+ var _metroCore = require("metro-core");
72
+ var _net = _interopRequireDefault(require("net"));
73
+ var _nullthrows = _interopRequireDefault(require("nullthrows"));
74
+ function _getRequireWildcardCache(e) {
75
+ if ("function" != typeof WeakMap) return null;
76
+ var r = new WeakMap(),
77
+ t = new WeakMap();
78
+ return (_getRequireWildcardCache = function (e) {
79
+ return e ? t : r;
80
+ })(e);
81
+ }
82
+ function _interopRequireWildcard(e, r) {
83
+ if (!r && e && e.__esModule) return e;
84
+ if (null === e || ("object" != typeof e && "function" != typeof e))
85
+ return { default: e };
86
+ var t = _getRequireWildcardCache(r);
87
+ if (t && t.has(e)) return t.get(e);
88
+ var n = { __proto__: null },
89
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
90
+ for (var u in e)
91
+ if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
92
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
93
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : (n[u] = e[u]);
94
+ }
95
+ return ((n.default = e), t && t.set(e, n), n);
96
+ }
97
+ function _interopRequireDefault(e) {
98
+ return e && e.__esModule ? e : { default: e };
99
+ }
100
+ const DEFAULTS = _Server.default.DEFAULT_BUNDLE_OPTIONS;
30
101
  async function getConfig(config) {
31
- const defaultConfig = await getDefaultConfig(config.projectRoot);
32
- return mergeConfig(defaultConfig, config);
102
+ const defaultConfig = await (0, _metroConfig.getDefaultConfig)(
103
+ config.projectRoot,
104
+ );
105
+ return (0, _metroConfig.mergeConfig)(defaultConfig, config);
33
106
  }
34
107
  async function runMetro(config, options) {
35
108
  const mergedConfig = await getConfig(config);
@@ -45,7 +118,7 @@ async function runMetro(config, options) {
45
118
  type: "initialize_started",
46
119
  });
47
120
  const { waitForBundler = false, ...serverOptions } = options ?? {};
48
- const server = new MetroServer(mergedConfig, serverOptions);
121
+ const server = new _Server.default(mergedConfig, serverOptions);
49
122
  const readyPromise = server
50
123
  .ready()
51
124
  .then(() => {
@@ -66,30 +139,26 @@ async function runMetro(config, options) {
66
139
  }
67
140
  return server;
68
141
  }
69
- exports.runMetro = runMetro;
70
- exports.loadConfig = loadConfig;
71
- exports.mergeConfig = mergeConfig;
72
- exports.resolveConfig = resolveConfig;
73
142
  const createConnectMiddleware = async function (config, options) {
74
143
  const metroServer = await runMetro(config, options);
75
144
  let enhancedMiddleware = metroServer.processRequest;
76
145
  if (config.server.enhanceMiddleware) {
77
146
  enhancedMiddleware = config.server.enhanceMiddleware(
78
147
  enhancedMiddleware,
79
- metroServer
148
+ metroServer,
80
149
  );
81
150
  }
82
151
  return {
83
152
  attachHmrServer(httpServer) {
84
- const wss = createWebsocketServer({
85
- websocketServer: new MetroHmrServer(
153
+ const wss = (0, _createWebsocketServer.default)({
154
+ websocketServer: new _HmrServer.default(
86
155
  metroServer.getBundler(),
87
156
  metroServer.getCreateModuleId(),
88
- config
157
+ config,
89
158
  ),
90
159
  });
91
160
  httpServer.on("upgrade", (request, socket, head) => {
92
- const { pathname } = parse(request.url);
161
+ const { pathname } = new URL(request.url, "resolve://");
93
162
  if (pathname === "/hot") {
94
163
  wss.handleUpgrade(request, socket, head, (ws) => {
95
164
  wss.emit("connection", ws, request);
@@ -107,7 +176,7 @@ const createConnectMiddleware = async function (config, options) {
107
176
  };
108
177
  };
109
178
  exports.createConnectMiddleware = createConnectMiddleware;
110
- exports.runServer = async (
179
+ const runServer = async (
111
180
  config,
112
181
  {
113
182
  hasReducedPerformance = false,
@@ -123,15 +192,15 @@ exports.runServer = async (
123
192
  waitForBundler = false,
124
193
  websocketEndpoints = {},
125
194
  watch,
126
- } = {}
195
+ } = {},
127
196
  ) => {
128
197
  await earlyPortCheck(host, config.server.port);
129
198
  if (secure != null || secureCert != null || secureKey != null) {
130
199
  console.warn(
131
- chalk.inverse.yellow.bold(" DEPRECATED "),
200
+ _chalk.default.inverse.yellow.bold(" DEPRECATED "),
132
201
  "The `secure`, `secureCert`, and `secureKey` options are now deprecated. " +
133
202
  "Please use the `secureServerOptions` object instead to pass options to " +
134
- "Metro's https development server."
203
+ "Metro's https development server.",
135
204
  );
136
205
  }
137
206
  const connect = require("connect");
@@ -154,14 +223,14 @@ exports.runServer = async (
154
223
  let options = secureServerOptions;
155
224
  if (typeof secureKey === "string" && typeof secureCert === "string") {
156
225
  options = {
157
- key: fs.readFileSync(secureKey),
158
- cert: fs.readFileSync(secureCert),
226
+ key: _fs.default.readFileSync(secureKey),
227
+ cert: _fs.default.readFileSync(secureCert),
159
228
  ...secureServerOptions,
160
229
  };
161
230
  }
162
- httpServer = https.createServer(options, serverApp);
231
+ httpServer = _https.default.createServer(options, serverApp);
163
232
  } else {
164
- httpServer = http.createServer(serverApp);
233
+ httpServer = _http.default.createServer(serverApp);
165
234
  }
166
235
  return new Promise((resolve, reject) => {
167
236
  httpServer.on("error", (error) => {
@@ -180,16 +249,16 @@ exports.runServer = async (
180
249
  });
181
250
  websocketEndpoints = {
182
251
  ...websocketEndpoints,
183
- "/hot": createWebsocketServer({
184
- websocketServer: new MetroHmrServer(
252
+ "/hot": (0, _createWebsocketServer.default)({
253
+ websocketServer: new _HmrServer.default(
185
254
  metroServer.getBundler(),
186
255
  metroServer.getCreateModuleId(),
187
- config
256
+ config,
188
257
  ),
189
258
  }),
190
259
  };
191
260
  httpServer.on("upgrade", (request, socket, head) => {
192
- const { pathname } = parse(request.url);
261
+ const { pathname } = new URL(request.url, "resolve://");
193
262
  if (pathname != null && websocketEndpoints[pathname]) {
194
263
  websocketEndpoints[pathname].handleUpgrade(
195
264
  request,
@@ -197,7 +266,7 @@ exports.runServer = async (
197
266
  head,
198
267
  (ws) => {
199
268
  websocketEndpoints[pathname].emit("connection", ws, request);
200
- }
269
+ },
201
270
  );
202
271
  } else {
203
272
  socket.destroy();
@@ -218,12 +287,13 @@ exports.runServer = async (
218
287
  });
219
288
  });
220
289
  };
221
- exports.runBuild = async (
290
+ exports.runServer = runServer;
291
+ const runBuild = async (
222
292
  config,
223
293
  {
224
294
  assets = false,
225
- customResolverOptions,
226
- customTransformOptions,
295
+ customResolverOptions = DEFAULTS.customResolverOptions,
296
+ customTransformOptions = DEFAULTS.customTransformOptions,
227
297
  dev = false,
228
298
  entry,
229
299
  onBegin,
@@ -237,8 +307,8 @@ exports.runBuild = async (
237
307
  platform = "web",
238
308
  sourceMap = false,
239
309
  sourceMapUrl,
240
- unstable_transformProfile,
241
- }
310
+ unstable_transformProfile = DEFAULTS.unstable_transformProfile,
311
+ },
242
312
  ) => {
243
313
  const metroServer = await runMetro(config, {
244
314
  watch: false,
@@ -250,7 +320,11 @@ exports.runBuild = async (
250
320
  inlineSourceMap: sourceMap && !sourceMapUrl,
251
321
  minify,
252
322
  platform,
253
- sourceMapUrl: sourceMap === false ? undefined : sourceMapUrl,
323
+ ...(sourceMap === false
324
+ ? {}
325
+ : {
326
+ sourceMapUrl,
327
+ }),
254
328
  createModuleIdFactory: config.serializer.createModuleIdFactory,
255
329
  onProgress,
256
330
  customResolverOptions,
@@ -268,7 +342,7 @@ exports.runBuild = async (
268
342
  };
269
343
  if (assets && result.assets == null) {
270
344
  result.assets = await metroServer.getAssets({
271
- ...MetroServer.DEFAULT_BUNDLE_OPTIONS,
345
+ ..._Server.default.DEFAULT_BUNDLE_OPTIONS,
272
346
  ...requestOptions,
273
347
  });
274
348
  }
@@ -277,11 +351,11 @@ exports.runBuild = async (
277
351
  }
278
352
  if (out || bundleOut) {
279
353
  const bundleOutput =
280
- bundleOut ?? nullthrows(out).replace(/(\.js)?$/, ".js");
354
+ bundleOut ?? (0, _nullthrows.default)(out).replace(/(\.js)?$/, ".js");
281
355
  const sourcemapOutput =
282
356
  sourceMap === false
283
357
  ? undefined
284
- : sourceMapOut ?? out?.replace(/(\.js)?$/, ".map");
358
+ : (sourceMapOut ?? out?.replace(/(\.js)?$/, ".map"));
285
359
  const outputOptions = {
286
360
  bundleOutput,
287
361
  sourcemapOutput,
@@ -292,7 +366,7 @@ exports.runBuild = async (
292
366
  config.reporter.update({
293
367
  type: "bundle_save_log",
294
368
  message,
295
- })
369
+ }),
296
370
  );
297
371
  }
298
372
  return result;
@@ -300,7 +374,8 @@ exports.runBuild = async (
300
374
  await metroServer.end();
301
375
  }
302
376
  };
303
- exports.buildGraph = async function (
377
+ exports.runBuild = runBuild;
378
+ const buildGraph = async function (
304
379
  config,
305
380
  {
306
381
  customTransformOptions = Object.create(null),
@@ -310,13 +385,13 @@ exports.buildGraph = async function (
310
385
  onProgress,
311
386
  platform = "web",
312
387
  type = "module",
313
- }
388
+ },
314
389
  ) {
315
390
  const mergedConfig = await getConfig(config);
316
- const bundler = new IncrementalBundler(mergedConfig);
391
+ const bundler = new _IncrementalBundler.default(mergedConfig);
317
392
  try {
318
393
  const { customResolverOptions, ...defaultTransformInputOptions } =
319
- MetroServer.DEFAULT_GRAPH_OPTIONS;
394
+ _Server.default.DEFAULT_GRAPH_OPTIONS;
320
395
  return await bundler.buildGraphForEntries(
321
396
  entries,
322
397
  {
@@ -330,28 +405,30 @@ exports.buildGraph = async function (
330
405
  {
331
406
  customResolverOptions,
332
407
  dev,
333
- }
408
+ },
334
409
  );
335
410
  } finally {
336
411
  await bundler.end();
337
412
  }
338
413
  };
339
- exports.attachMetroCli = function (yargs, options = {}) {
414
+ exports.buildGraph = buildGraph;
415
+ const attachMetroCli = function (yargs, options = {}) {
340
416
  const { build = {}, serve = {}, dependencies = {} } = options;
341
417
  yargs.strict();
342
418
  if (build) {
343
- yargs.command(makeBuildCommand());
419
+ yargs.command((0, _build.default)());
344
420
  }
345
421
  if (serve) {
346
- yargs.command(makeServeCommand());
422
+ yargs.command((0, _serve.default)());
347
423
  }
348
424
  if (dependencies) {
349
- yargs.command(makeDependenciesCommand());
425
+ yargs.command((0, _dependencies.default)());
350
426
  }
351
427
  return yargs;
352
428
  };
429
+ exports.attachMetroCli = attachMetroCli;
353
430
  async function earlyPortCheck(host, port) {
354
- const server = net.createServer((c) => c.end());
431
+ const server = _net.default.createServer((c) => c.end());
355
432
  try {
356
433
  await new Promise((resolve, reject) => {
357
434
  server.on("error", (err) => {
@@ -363,3 +440,16 @@ async function earlyPortCheck(host, port) {
363
440
  await new Promise((resolve) => server.close(() => resolve()));
364
441
  }
365
442
  }
443
+ var _default = (exports.default = {
444
+ attachMetroCli,
445
+ runServer,
446
+ Terminal: _metroCore.Terminal,
447
+ JsonReporter: _JsonReporter.default,
448
+ TerminalReporter: _TerminalReporter.default,
449
+ loadConfig: _metroConfig.loadConfig,
450
+ mergeConfig: _metroConfig.mergeConfig,
451
+ resolveConfig: _metroConfig.resolveConfig,
452
+ createConnectMiddleware,
453
+ runBuild,
454
+ buildGraph,
455
+ });