metro 0.83.3 → 0.83.5

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 (229) hide show
  1. package/package.json +28 -24
  2. package/src/Assets.d.ts +83 -0
  3. package/src/Assets.js +42 -29
  4. package/src/Assets.js.flow +26 -15
  5. package/src/Bundler/util.d.ts +27 -0
  6. package/src/Bundler/util.js +25 -21
  7. package/src/Bundler/util.js.flow +2 -2
  8. package/src/Bundler.d.ts +14 -15
  9. package/src/Bundler.js.flow +1 -1
  10. package/src/DeltaBundler/DeltaCalculator.d.ts +71 -0
  11. package/src/DeltaBundler/DeltaCalculator.js +4 -4
  12. package/src/DeltaBundler/DeltaCalculator.js.flow +8 -8
  13. package/src/DeltaBundler/Graph.d.ts +135 -8
  14. package/src/DeltaBundler/Graph.js +16 -16
  15. package/src/DeltaBundler/Graph.js.flow +30 -30
  16. package/src/DeltaBundler/Serializers/baseJSBundle.d.ts +20 -0
  17. package/src/DeltaBundler/Serializers/baseJSBundle.js.flow +1 -1
  18. package/src/DeltaBundler/Serializers/getAllFiles.d.ts +22 -0
  19. package/src/DeltaBundler/Serializers/getAllFiles.js.flow +2 -2
  20. package/src/DeltaBundler/Serializers/getAssets.d.ts +25 -0
  21. package/src/DeltaBundler/Serializers/getAssets.js.flow +2 -2
  22. package/src/DeltaBundler/Serializers/getExplodedSourceMap.js.flow +2 -2
  23. package/src/DeltaBundler/Serializers/getRamBundleInfo.d.ts +36 -6
  24. package/src/DeltaBundler/Serializers/getRamBundleInfo.js.flow +8 -8
  25. package/src/DeltaBundler/Serializers/helpers/getInlineSourceMappingURL.d.ts +12 -0
  26. package/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.d.ts +33 -0
  27. package/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies.d.ts +17 -0
  28. package/src/DeltaBundler/Serializers/helpers/js.d.ts +30 -0
  29. package/src/DeltaBundler/Serializers/helpers/js.js +25 -21
  30. package/src/DeltaBundler/Serializers/helpers/js.js.flow +6 -6
  31. package/src/DeltaBundler/Serializers/helpers/processModules.d.ts +25 -0
  32. package/src/DeltaBundler/Serializers/helpers/processModules.js.flow +3 -3
  33. package/src/DeltaBundler/Serializers/hmrJSBundle.d.ts +30 -0
  34. package/src/DeltaBundler/Serializers/hmrJSBundle.js +25 -21
  35. package/src/DeltaBundler/Serializers/hmrJSBundle.js.flow +5 -5
  36. package/src/DeltaBundler/Serializers/sourceMapGenerator.d.ts +29 -0
  37. package/src/DeltaBundler/Serializers/sourceMapGenerator.js.flow +6 -6
  38. package/src/DeltaBundler/Serializers/sourceMapObject.d.ts +23 -0
  39. package/src/DeltaBundler/Serializers/sourceMapObject.js.flow +2 -2
  40. package/src/DeltaBundler/Serializers/sourceMapString.d.ts +22 -0
  41. package/src/DeltaBundler/Serializers/sourceMapString.js.flow +2 -2
  42. package/src/DeltaBundler/Transformer.d.ts +38 -0
  43. package/src/DeltaBundler/Transformer.js.flow +3 -3
  44. package/src/DeltaBundler/Worker.d.ts +19 -27
  45. package/src/DeltaBundler/Worker.flow.js.flow +1 -1
  46. package/src/DeltaBundler/WorkerFarm.d.ts +70 -0
  47. package/src/DeltaBundler/WorkerFarm.js +1 -1
  48. package/src/DeltaBundler/WorkerFarm.js.flow +26 -13
  49. package/src/DeltaBundler/buildSubgraph.d.ts +30 -0
  50. package/src/DeltaBundler/buildSubgraph.js +4 -4
  51. package/src/DeltaBundler/buildSubgraph.js.flow +8 -8
  52. package/src/DeltaBundler/getTransformCacheKey.d.ts +18 -0
  53. package/src/DeltaBundler/mergeDeltas.d.ts +17 -0
  54. package/src/DeltaBundler/types.d.ts +97 -100
  55. package/src/DeltaBundler/types.js.flow +36 -34
  56. package/src/DeltaBundler.d.ts +14 -12
  57. package/src/DeltaBundler.js.flow +2 -2
  58. package/src/HmrServer.d.ts +79 -0
  59. package/src/HmrServer.js +34 -29
  60. package/src/HmrServer.js.flow +17 -12
  61. package/src/IncrementalBundler/GraphNotFoundError.d.ts +17 -0
  62. package/src/IncrementalBundler/ResourceNotFoundError.d.ts +15 -0
  63. package/src/IncrementalBundler/RevisionNotFoundError.d.ts +17 -0
  64. package/src/IncrementalBundler.d.ts +43 -45
  65. package/src/IncrementalBundler.js +29 -21
  66. package/src/IncrementalBundler.js.flow +13 -9
  67. package/src/ModuleGraph/worker/JsFileWrapping.d.ts +29 -0
  68. package/src/ModuleGraph/worker/JsFileWrapping.js +25 -21
  69. package/src/ModuleGraph/worker/JsFileWrapping.js.flow +10 -5
  70. package/src/ModuleGraph/worker/collectDependencies.d.ts +118 -14
  71. package/src/ModuleGraph/worker/collectDependencies.js +25 -21
  72. package/src/ModuleGraph/worker/collectDependencies.js.flow +27 -21
  73. package/src/ModuleGraph/worker/generateImportNames.d.ts +19 -0
  74. package/src/ModuleGraph/worker/generateImportNames.js.flow +4 -2
  75. package/src/ModuleGraph/worker/importLocationsPlugin.d.ts +26 -0
  76. package/src/ModuleGraph/worker/importLocationsPlugin.js.flow +7 -3
  77. package/src/Server/MultipartResponse.d.ts +5 -6
  78. package/src/Server/MultipartResponse.js.flow +1 -1
  79. package/src/Server/symbolicate.js.flow +4 -4
  80. package/src/Server.d.ts +220 -67
  81. package/src/Server.js +149 -45
  82. package/src/Server.js.flow +167 -57
  83. package/src/cli/parseKeyValueParamArray.d.ts +14 -0
  84. package/src/cli/parseKeyValueParamArray.js.flow +1 -1
  85. package/src/cli-utils.d.ts +19 -0
  86. package/src/cli-utils.js.flow +2 -2
  87. package/src/commands/build.d.ts +16 -0
  88. package/src/commands/build.js.flow +11 -10
  89. package/src/commands/dependencies.d.ts +16 -0
  90. package/src/commands/dependencies.js.flow +8 -4
  91. package/src/commands/serve.d.ts +16 -0
  92. package/src/commands/serve.js +2 -0
  93. package/src/commands/serve.js.flow +14 -9
  94. package/src/index.d.ts +97 -110
  95. package/src/index.flow.js +53 -35
  96. package/src/index.flow.js.flow +49 -29
  97. package/src/integration_tests/basic_bundle/AssetRegistry.js.flow +1 -1
  98. package/src/integration_tests/basic_bundle/ErrorBundle.js.flow +1 -1
  99. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-import.js.flow +1 -1
  100. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-multi-line-import-with-escapes.js.flow +1 -1
  101. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-multi-line-import.js.flow +1 -1
  102. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-require-with-embedded-comment.js.flow +1 -1
  103. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-require.js.flow +1 -1
  104. package/src/integration_tests/basic_bundle/build-errors/cannot-resolve-specifier-with-escapes.js.flow +1 -1
  105. package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-import.js.flow +1 -1
  106. package/src/integration_tests/basic_bundle/build-errors/inline-requires-cannot-resolve-require.js.flow +1 -1
  107. package/src/integration_tests/basic_bundle/import-export/index.js +25 -21
  108. package/src/integration_tests/basic_bundle/import-export/index.js.flow +3 -3
  109. package/src/integration_tests/basic_bundle/import-export/utils.js.flow +2 -2
  110. package/src/integration_tests/basic_bundle/loadBundleAsyncForTest.js.flow +1 -1
  111. package/src/integration_tests/basic_bundle/optional-dependencies/index.js.flow +1 -1
  112. package/src/integration_tests/basic_bundle/require-context/conflict.js.flow +1 -1
  113. package/src/integration_tests/basic_bundle/require-context/empty.js.flow +1 -1
  114. package/src/integration_tests/basic_bundle/require-context/matching.js.flow +1 -1
  115. package/src/integration_tests/basic_bundle/require-context/mode-eager.js.flow +1 -1
  116. package/src/integration_tests/basic_bundle/require-context/mode-lazy-once.js.flow +1 -1
  117. package/src/integration_tests/basic_bundle/require-context/mode-lazy.js.flow +1 -1
  118. package/src/integration_tests/basic_bundle/require-context/mode-sync.js.flow +2 -2
  119. package/src/integration_tests/basic_bundle/require-context/utils.js.flow +1 -1
  120. package/src/integration_tests/basic_bundle/require-resolveWeak/import-and-resolveWeak.js.flow +1 -1
  121. package/src/integration_tests/basic_bundle/require-resolveWeak/multiple.js.flow +1 -1
  122. package/src/integration_tests/basic_bundle/require-resolveWeak/never-required.js.flow +1 -1
  123. package/src/integration_tests/basic_bundle/require-resolveWeak/require-and-resolveWeak.js.flow +1 -1
  124. package/src/integration_tests/execBundle.js.flow +1 -1
  125. package/src/lib/BatchProcessor.d.ts +54 -0
  126. package/src/lib/BatchProcessor.js +5 -2
  127. package/src/lib/BatchProcessor.js.flow +10 -7
  128. package/src/lib/CountingSet.d.ts +10 -10
  129. package/src/lib/CountingSet.js.flow +4 -4
  130. package/src/lib/JsonReporter.d.ts +37 -0
  131. package/src/lib/JsonReporter.js +5 -3
  132. package/src/lib/JsonReporter.js.flow +19 -17
  133. package/src/lib/RamBundleParser.d.ts +29 -0
  134. package/src/lib/RamBundleParser.js.flow +1 -1
  135. package/src/lib/TerminalReporter.d.ts +97 -6
  136. package/src/lib/TerminalReporter.js +37 -34
  137. package/src/lib/TerminalReporter.js.flow +21 -30
  138. package/src/lib/bundleProgressUtils.d.ts +26 -0
  139. package/src/lib/bundleProgressUtils.js +19 -0
  140. package/src/lib/bundleProgressUtils.js.flow +35 -0
  141. package/src/lib/bundleToString.d.ts +19 -0
  142. package/src/lib/contextModule.d.ts +20 -9
  143. package/src/lib/contextModule.js.flow +1 -1
  144. package/src/lib/contextModuleTemplates.d.ts +25 -0
  145. package/src/lib/contextModuleTemplates.js +25 -21
  146. package/src/lib/countLines.d.ts +12 -0
  147. package/src/lib/countLines.js +4 -3
  148. package/src/lib/countLines.js.flow +3 -4
  149. package/src/lib/createWebsocketServer.d.ts +43 -0
  150. package/src/lib/createWebsocketServer.js +9 -2
  151. package/src/lib/createWebsocketServer.js.flow +16 -9
  152. package/src/lib/debounceAsyncQueue.d.ts +15 -0
  153. package/src/lib/debounceAsyncQueue.js.flow +1 -1
  154. package/src/lib/formatBundlingError.d.ts +23 -0
  155. package/src/lib/formatBundlingError.js.flow +1 -1
  156. package/src/lib/getAppendScripts.d.ts +31 -0
  157. package/src/lib/getAppendScripts.js.flow +4 -4
  158. package/src/lib/getGraphId.d.ts +15 -1
  159. package/src/lib/getGraphId.js.flow +1 -1
  160. package/src/lib/getPreludeCode.d.ts +18 -0
  161. package/src/lib/getPreludeCode.js +4 -0
  162. package/src/lib/getPreludeCode.js.flow +10 -3
  163. package/src/lib/getPrependedScripts.d.ts +24 -0
  164. package/src/lib/getPrependedScripts.js +36 -22
  165. package/src/lib/getPrependedScripts.js.flow +10 -3
  166. package/src/lib/isResolvedDependency.d.ts +15 -0
  167. package/src/lib/logToConsole.d.ts +19 -0
  168. package/src/lib/logToConsole.js.flow +2 -2
  169. package/src/lib/parseBundleOptionsFromBundleRequestUrl.d.ts +17 -0
  170. package/src/lib/parseBundleOptionsFromBundleRequestUrl.js +25 -21
  171. package/src/lib/parseCustomResolverOptions.d.ts +16 -0
  172. package/src/lib/parseCustomResolverOptions.js.flow +2 -2
  173. package/src/lib/parseCustomTransformOptions.d.ts +16 -0
  174. package/src/lib/parseCustomTransformOptions.js.flow +1 -1
  175. package/src/lib/parseJsonBody.d.ts +27 -0
  176. package/src/lib/parseJsonBody.js.flow +11 -1
  177. package/src/lib/pathUtils.d.ts +14 -0
  178. package/src/lib/pathUtils.js +25 -21
  179. package/src/lib/pathUtils.js.flow +1 -1
  180. package/src/lib/relativizeSourceMap.d.ts +17 -0
  181. package/src/lib/reporting.d.ts +65 -81
  182. package/src/lib/reporting.js.flow +4 -4
  183. package/src/lib/splitBundleOptions.d.ts +16 -0
  184. package/src/lib/transformHelpers.d.ts +35 -0
  185. package/src/lib/transformHelpers.js +11 -9
  186. package/src/lib/transformHelpers.js.flow +17 -15
  187. package/src/node-haste/DependencyGraph/ModuleResolution.d.ts +126 -0
  188. package/src/node-haste/DependencyGraph/ModuleResolution.js +48 -42
  189. package/src/node-haste/DependencyGraph/ModuleResolution.js.flow +35 -32
  190. package/src/node-haste/DependencyGraph/createFileMap.d.ts +29 -0
  191. package/src/node-haste/DependencyGraph/createFileMap.js +56 -38
  192. package/src/node-haste/DependencyGraph/createFileMap.js.flow +44 -18
  193. package/src/node-haste/DependencyGraph.d.ts +57 -33
  194. package/src/node-haste/DependencyGraph.js +40 -31
  195. package/src/node-haste/DependencyGraph.js.flow +35 -37
  196. package/src/node-haste/Package.d.ts +21 -0
  197. package/src/node-haste/PackageCache.d.ts +34 -0
  198. package/src/node-haste/lib/AssetPaths.d.ts +29 -0
  199. package/src/node-haste/lib/AssetPaths.js +2 -2
  200. package/src/node-haste/lib/AssetPaths.js.flow +4 -4
  201. package/src/node-haste/lib/parsePlatformFilePath.d.ts +25 -0
  202. package/src/node-haste/lib/parsePlatformFilePath.js +6 -6
  203. package/src/node-haste/lib/parsePlatformFilePath.js.flow +4 -4
  204. package/src/shared/output/RamBundle/as-assets.d.ts +25 -0
  205. package/src/shared/output/RamBundle/as-assets.js.flow +6 -6
  206. package/src/shared/output/RamBundle/as-indexed-file.d.ts +38 -0
  207. package/src/shared/output/RamBundle/as-indexed-file.js.flow +5 -5
  208. package/src/shared/output/RamBundle/buildSourcemapWithMetadata.d.ts +23 -0
  209. package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js.flow +5 -5
  210. package/src/shared/output/RamBundle/magic-number.d.ts +14 -0
  211. package/src/shared/output/RamBundle/util.d.ts +41 -0
  212. package/src/shared/output/RamBundle/util.js.flow +5 -5
  213. package/src/shared/output/RamBundle/write-sourcemap.d.ts +16 -0
  214. package/src/shared/output/RamBundle/write-sourcemap.js.flow +1 -1
  215. package/src/shared/output/RamBundle.d.ts +26 -0
  216. package/src/shared/output/RamBundle.js.flow +1 -1
  217. package/src/shared/output/bundle.d.ts +9 -17
  218. package/src/shared/output/bundle.flow.js.flow +3 -3
  219. package/src/shared/output/meta.d.ts +15 -0
  220. package/src/shared/output/meta.js +2 -2
  221. package/src/shared/output/meta.js.flow +1 -1
  222. package/src/shared/output/unbundle.d.ts +11 -0
  223. package/src/shared/output/writeFile.d.ts +16 -0
  224. package/src/shared/output/writeFile.js +8 -3
  225. package/src/shared/output/writeFile.js.flow +8 -2
  226. package/src/shared/types.d.ts +81 -66
  227. package/src/shared/types.js.flow +20 -5
  228. package/src/Asset.d.ts +0 -25
  229. package/src/ModuleGraph/test-helpers.js +0 -75
@@ -4,13 +4,13 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  * @oncall react_native
10
10
  */
11
11
 
12
12
  import type {ConfigT} from 'metro-config';
13
- import type {ModuleObject} from 'yargs';
13
+ import type {CommandModule} from 'yargs';
14
14
  import typeof Yargs from 'yargs';
15
15
 
16
16
  import {makeAsyncCommand} from '../cli-utils';
@@ -20,7 +20,9 @@ import {loadConfig} from 'metro-config';
20
20
  import path from 'path';
21
21
  import {promisify} from 'util';
22
22
 
23
- type Args = $ReadOnly<{
23
+ type Args = Readonly<{
24
+ _: unknown,
25
+ $0: unknown,
24
26
  entryFile: string,
25
27
  output?: string,
26
28
  platform?: string,
@@ -28,6 +30,7 @@ type Args = $ReadOnly<{
28
30
  maxWorkers?: number,
29
31
  dev: boolean,
30
32
  verbose: boolean,
33
+ ...
31
34
  }>;
32
35
 
33
36
  async function dependencies(args: Args, config: ConfigT) {
@@ -82,7 +85,7 @@ async function dependencies(args: Args, config: ConfigT) {
82
85
  : Promise.resolve();
83
86
  }
84
87
 
85
- export default (): {...ModuleObject, handler: Function} => ({
88
+ export default (): CommandModule => ({
86
89
  command: 'get-dependencies [entryFile]',
87
90
  desc: 'List all dependencies that will be bundled for a given entry point',
88
91
  builder: (yargs: Yargs) => {
@@ -123,6 +126,7 @@ export default (): {...ModuleObject, handler: Function} => ({
123
126
  });
124
127
  },
125
128
  handler: makeAsyncCommand(async (argv: Args) => {
129
+ // $FlowFixMe[incompatible-type] argv has extra props.
126
130
  const config = await loadConfig(argv);
127
131
  await dependencies(argv, config);
128
132
  }),
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @format
8
+ * @oncall react_native
9
+ */
10
+
11
+ import type {CommandModule} from 'yargs';
12
+
13
+ declare const $$EXPORT_DEFAULT_DECLARATION$$: () => CommandModule;
14
+ declare type $$EXPORT_DEFAULT_DECLARATION$$ =
15
+ typeof $$EXPORT_DEFAULT_DECLARATION$$;
16
+ export default $$EXPORT_DEFAULT_DECLARATION$$;
@@ -80,6 +80,8 @@ var _default = () => ({
80
80
  const config = await (0, _metroConfig.loadConfig)(argv);
81
81
  const MetroApi = require("../index");
82
82
  const {
83
+ _,
84
+ $0: _0,
83
85
  config: _config,
84
86
  hmrEnabled: _hmrEnabled,
85
87
  maxWorkers: _maxWorkers,
@@ -4,36 +4,37 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  * @oncall react_native
10
10
  */
11
11
 
12
- import type {ModuleObject} from 'yargs';
12
+ import type {ServerOptions as HttpsServerOptions} from 'https';
13
+ import type {CommandModule} from 'yargs';
13
14
  import typeof Yargs from 'yargs';
14
15
 
15
16
  import {makeAsyncCommand, watchFile} from '../cli-utils';
16
17
  import {loadConfig, resolveConfig} from 'metro-config';
17
18
  import {promisify} from 'util';
18
19
 
19
- type Args = $ReadOnly<{
20
- projectRoots?: $ReadOnlyArray<string>,
20
+ type Args = Readonly<{
21
+ _: unknown,
22
+ $0: unknown,
23
+ projectRoots?: ReadonlyArray<string>,
21
24
  host: string,
22
25
  port: number,
23
26
  maxWorkers?: number,
24
27
  secure?: boolean,
25
28
  secureKey?: string,
26
29
  secureCert?: string,
27
- secureServerOptions?: string,
30
+ secureServerOptions?: HttpsServerOptions,
28
31
  hmrEnabled?: boolean,
29
32
  config?: string,
30
33
  resetCache?: boolean,
34
+ ...
31
35
  }>;
32
36
 
33
- export default (): {
34
- ...ModuleObject,
35
- handler: Function,
36
- } => ({
37
+ export default (): CommandModule => ({
37
38
  command: 'serve',
38
39
  aliases: ['start'],
39
40
  desc: 'Starts Metro on the given port, building bundles on the fly',
@@ -91,6 +92,7 @@ export default (): {
91
92
  await promisify(server.close).call(server);
92
93
  }
93
94
 
95
+ // $FlowFixMe[incompatible-type] argv has extra props.
94
96
  const config = await loadConfig(argv);
95
97
 
96
98
  // Inline require() to avoid circular dependency with ../index
@@ -98,6 +100,8 @@ export default (): {
98
100
  const MetroApi = require('../index');
99
101
 
100
102
  const {
103
+ _,
104
+ $0: _0,
101
105
  config: _config,
102
106
  hmrEnabled: _hmrEnabled,
103
107
  maxWorkers: _maxWorkers,
@@ -108,6 +112,7 @@ export default (): {
108
112
  } = argv;
109
113
  ({httpServer: server} = await MetroApi.runServer(
110
114
  config,
115
+ // $FlowFixMe[incompatible-exact] argv has extra props.
111
116
  runServerOptions,
112
117
  ));
113
118
 
package/src/index.d.ts CHANGED
@@ -8,168 +8,154 @@
8
8
  * @oncall react_native
9
9
  */
10
10
 
11
- export * from './Asset';
12
- export * from './DeltaBundler/types';
13
- export * from './ModuleGraph/worker/collectDependencies';
14
- export * from './Server';
15
- export * from './lib/reporting';
16
-
17
- import type {AssetData} from './Asset';
18
- import type {ReadOnlyGraph} from './DeltaBundler/types';
19
- import type {ServerOptions, default as MetroServer} from './Server';
11
+ import type {AssetData} from './Assets';
12
+ import type {ReadOnlyGraph} from './DeltaBundler';
13
+ import type {ServerOptions} from './Server';
20
14
  import type {BuildOptions, OutputOptions, RequestOptions} from './shared/types';
21
15
  import type {HandleFunction} from 'connect';
22
- import type {EventEmitter} from 'events';
23
- import type {IncomingMessage, Server as HttpServer} from 'http';
24
- import type {Server as HttpsServer} from 'https';
25
- import type {CustomTransformOptions} from 'metro-babel-transformer';
16
+ import type {Server as HttpServer} from 'http';
17
+ import type {
18
+ Server as HttpsServer,
19
+ ServerOptions as HttpsServerOptions,
20
+ } from 'https';
21
+ import type {TransformProfile} from 'metro-babel-transformer';
26
22
  import type {
27
23
  ConfigT,
28
24
  InputConfigT,
29
25
  MetroConfig,
30
26
  Middleware,
31
27
  } from 'metro-config';
32
- import type {Duplex} from 'stream';
33
- import type Yargs from 'yargs';
34
-
35
- import {TerminalReporter} from './lib/TerminalReporter';
28
+ import type {CustomResolverOptions} from 'metro-resolver';
29
+ import type {CustomTransformOptions} from 'metro-transform-worker';
30
+ import type {Server as WebSocketServer} from 'ws';
31
+ import type $$IMPORT_TYPEOF_1$$ from 'yargs';
32
+
33
+ import JsonReporter from './lib/JsonReporter';
34
+ import TerminalReporter from './lib/TerminalReporter';
35
+ import MetroServer from './Server';
36
36
  import {loadConfig, mergeConfig, resolveConfig} from 'metro-config';
37
37
  import {Terminal} from 'metro-core';
38
38
 
39
- export {HttpServer, HttpsServer};
40
- export {loadConfig, mergeConfig, resolveConfig, Terminal, TerminalReporter};
41
-
42
- interface MetroMiddleWare {
39
+ type Yargs = typeof $$IMPORT_TYPEOF_1$$;
40
+ type MetroMiddleWare = {
43
41
  attachHmrServer: (httpServer: HttpServer | HttpsServer) => void;
44
- end: () => void;
42
+ end: () => Promise<void>;
45
43
  metroServer: MetroServer;
46
44
  middleware: Middleware;
47
- }
48
-
49
- export interface RunMetroOptions extends ServerOptions {
50
- waitForBundler?: boolean;
51
- }
52
-
53
- interface WebsocketServer extends EventEmitter {
54
- handleUpgrade<T = WebsocketServer>(
55
- request: IncomingMessage,
56
- socket: Duplex,
57
- upgradeHead: Buffer,
58
- callback: (client: T, request: IncomingMessage) => void,
59
- ): void;
60
- }
61
-
62
- export interface RunServerOptions {
45
+ };
46
+ export type RunMetroOptions = Omit<
47
+ ServerOptions,
48
+ keyof {waitForBundler?: boolean}
49
+ > & {waitForBundler?: boolean};
50
+ export type RunServerOptions = Readonly<{
63
51
  hasReducedPerformance?: boolean;
64
52
  host?: string;
65
- onError?: (error: Error & {code?: string}) => void;
53
+ onError?: ($$PARAM_0$$: Error & {code?: string}) => void;
66
54
  onReady?: (server: HttpServer | HttpsServer) => void;
67
- secureServerOptions?: Record<string, unknown>;
68
-
69
- /** @deprecated since version 0.61 */
55
+ onClose?: () => void;
56
+ secureServerOptions?: HttpsServerOptions;
70
57
  secure?: boolean;
71
-
72
- /** @deprecated since version 0.61 */
73
58
  secureCert?: string;
74
-
75
- /** @deprecated since version 0.61 */
76
59
  secureKey?: string;
77
-
78
60
  unstable_extraMiddleware?: ReadonlyArray<HandleFunction>;
79
61
  waitForBundler?: boolean;
80
62
  watch?: boolean;
81
- websocketEndpoints?: {
82
- [path: string]: WebsocketServer;
83
- };
84
- }
85
-
86
- export interface RunServerResult {
87
- httpServer: HttpServer | HttpsServer;
88
- }
89
-
90
- export interface RunBuildOptions {
63
+ websocketEndpoints?: Readonly<{[path: string]: WebSocketServer}>;
64
+ }>;
65
+ export type RunServerResult = {httpServer: HttpServer | HttpsServer};
66
+ type BuildGraphOptions = {
67
+ entries: ReadonlyArray<string>;
68
+ customTransformOptions?: CustomTransformOptions;
69
+ dev?: boolean;
70
+ minify?: boolean;
71
+ onProgress?: (transformedFileCount: number, totalFileCount: number) => void;
72
+ platform?: string;
73
+ type?: 'module' | 'script';
74
+ };
75
+ export type RunBuildOptions = {
91
76
  entry: string;
77
+ assets?: boolean;
92
78
  dev?: boolean;
93
79
  out?: string;
80
+ bundleOut?: string;
81
+ sourceMapOut?: string;
94
82
  onBegin?: () => void;
95
83
  onComplete?: () => void;
96
84
  onProgress?: (transformedFileCount: number, totalFileCount: number) => void;
97
85
  minify?: boolean;
98
- output?: {
86
+ output?: Readonly<{
99
87
  build: (
100
- server: MetroServer,
101
- requestOptions: RequestOptions,
102
- buildOptions?: BuildOptions,
88
+ $$PARAM_0$$: MetroServer,
89
+ $$PARAM_1$$: RequestOptions,
90
+ $$PARAM_2$$: void | BuildOptions,
103
91
  ) => Promise<{
104
92
  code: string;
105
93
  map: string;
106
94
  assets?: ReadonlyArray<AssetData>;
107
95
  }>;
108
96
  save: (
109
- entry: {
110
- code: string;
111
- map: string;
112
- },
113
- options: OutputOptions,
114
- postSave: (...args: string[]) => void,
97
+ $$PARAM_0$$: {code: string; map: string},
98
+ $$PARAM_1$$: OutputOptions,
99
+ $$PARAM_2$$: (logMessage: string) => void,
115
100
  ) => Promise<unknown>;
116
- };
101
+ }>;
117
102
  platform?: string;
118
103
  sourceMap?: boolean;
119
104
  sourceMapUrl?: string;
120
- }
121
-
122
- interface BuildGraphOptions {
123
- entries: ReadonlyArray<string>;
105
+ customResolverOptions?: CustomResolverOptions;
124
106
  customTransformOptions?: CustomTransformOptions;
125
- dev?: boolean;
126
- minify?: boolean;
127
- onProgress?: (transformedFileCount: number, totalFileCount: number) => void;
128
- platform?: string;
129
- type?: 'module' | 'script';
130
- }
131
-
132
- export {MetroConfig};
133
-
134
- export function runMetro(
107
+ unstable_transformProfile?: TransformProfile;
108
+ };
109
+ export type RunBuildResult = {
110
+ code: string;
111
+ map: string;
112
+ assets?: ReadonlyArray<AssetData>;
113
+ };
114
+ type BuildCommandOptions = Readonly<{[$$Key$$: string]: unknown}> | null;
115
+ type ServeCommandOptions = Readonly<{[$$Key$$: string]: unknown}> | null;
116
+ type DependenciesCommandOptions = Readonly<{
117
+ [$$Key$$: string]: unknown;
118
+ }> | null;
119
+ export {Terminal, JsonReporter, TerminalReporter};
120
+ export type {AssetData} from './Assets';
121
+ export type {Reporter, ReportableEvent} from './lib/reporting';
122
+ export type {TerminalReportableEvent} from './lib/TerminalReporter';
123
+ export type {MetroConfig};
124
+ export declare function runMetro(
135
125
  config: InputConfigT,
136
126
  options?: RunMetroOptions,
137
127
  ): Promise<MetroServer>;
138
-
139
- export function createConnectMiddleware(
128
+ export {loadConfig, mergeConfig, resolveConfig};
129
+ export declare const createConnectMiddleware: (
140
130
  config: ConfigT,
141
131
  options?: RunMetroOptions,
142
- ): Promise<MetroMiddleWare>;
143
-
144
- export function runServer(
145
- config: ConfigT,
146
- options: RunServerOptions,
147
- ): Promise<RunServerResult>;
148
-
149
- export function runBuild(
132
+ ) => Promise<MetroMiddleWare>;
133
+ export declare type createConnectMiddleware = typeof createConnectMiddleware;
134
+ export declare const runServer: (
150
135
  config: ConfigT,
151
- options: RunBuildOptions,
152
- ): Promise<void>;
153
-
154
- export function buildGraph(
136
+ $$PARAM_1$$?: RunServerOptions,
137
+ ) => Promise<RunServerResult>;
138
+ export declare type runServer = typeof runServer;
139
+ export declare const runBuild: (
155
140
  config: ConfigT,
156
- options: BuildGraphOptions,
157
- ): Promise<ReadOnlyGraph<void>>;
158
-
159
- type BuildCommandOptions = Record<string, unknown> | null;
160
- type ServeCommandOptions = Record<string, unknown> | null;
161
-
162
- interface AttachMetroCLIOptions {
141
+ $$PARAM_1$$: RunBuildOptions,
142
+ ) => Promise<RunBuildResult>;
143
+ export declare type runBuild = typeof runBuild;
144
+ export declare const buildGraph: (
145
+ config: InputConfigT,
146
+ $$PARAM_1$$: BuildGraphOptions,
147
+ ) => Promise<ReadOnlyGraph>;
148
+ export declare type buildGraph = typeof buildGraph;
149
+ type AttachMetroCLIOptions = {
163
150
  build?: BuildCommandOptions;
164
151
  serve?: ServeCommandOptions;
165
- dependencies?: unknown;
166
- }
167
-
168
- export function attachMetroCli(
169
- yargs: Yargs.Argv,
152
+ dependencies?: DependenciesCommandOptions;
153
+ };
154
+ export declare const attachMetroCli: (
155
+ yargs: Yargs,
170
156
  options?: AttachMetroCLIOptions,
171
- ): Yargs.Argv;
172
-
157
+ ) => Yargs;
158
+ export declare type attachMetroCli = typeof attachMetroCli;
173
159
  /**
174
160
  * Backwards-compatibility with CommonJS consumers using interopRequireDefault.
175
161
  * Do not add to this list.
@@ -180,6 +166,7 @@ declare const $$EXPORT_DEFAULT_DECLARATION$$: {
180
166
  attachMetroCli: typeof attachMetroCli;
181
167
  runServer: typeof runServer;
182
168
  Terminal: typeof Terminal;
169
+ JsonReporter: typeof JsonReporter;
183
170
  TerminalReporter: typeof TerminalReporter;
184
171
  loadConfig: typeof loadConfig;
185
172
  mergeConfig: typeof mergeConfig;
package/src/index.flow.js CHANGED
@@ -71,28 +71,32 @@ var _metroConfig = require("metro-config");
71
71
  var _metroCore = require("metro-core");
72
72
  var _net = _interopRequireDefault(require("net"));
73
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]);
74
+ function _interopRequireWildcard(e, t) {
75
+ if ("function" == typeof WeakMap)
76
+ var r = new WeakMap(),
77
+ n = new WeakMap();
78
+ return (_interopRequireWildcard = function (e, t) {
79
+ if (!t && e && e.__esModule) return e;
80
+ var o,
81
+ i,
82
+ f = { __proto__: null, default: e };
83
+ if (null === e || ("object" != typeof e && "function" != typeof e))
84
+ return f;
85
+ if ((o = t ? n : r)) {
86
+ if (o.has(e)) return o.get(e);
87
+ o.set(e, f);
94
88
  }
95
- return ((n.default = e), t && t.set(e, n), n);
89
+ for (const t in e)
90
+ "default" !== t &&
91
+ {}.hasOwnProperty.call(e, t) &&
92
+ ((i =
93
+ (o = Object.defineProperty) &&
94
+ Object.getOwnPropertyDescriptor(e, t)) &&
95
+ (i.get || i.set)
96
+ ? o(f, t, i)
97
+ : (f[t] = e[t]));
98
+ return f;
99
+ })(e, t);
96
100
  }
97
101
  function _interopRequireDefault(e) {
98
102
  return e && e.__esModule ? e : { default: e };
@@ -190,7 +194,7 @@ const runServer = async (
190
194
  secureKey,
191
195
  unstable_extraMiddleware,
192
196
  waitForBundler = false,
193
- websocketEndpoints = {},
197
+ websocketEndpoints: userWebsocketEndpoints = {},
194
198
  watch,
195
199
  } = {},
196
200
  ) => {
@@ -200,7 +204,7 @@ const runServer = async (
200
204
  _chalk.default.inverse.yellow.bold(" DEPRECATED "),
201
205
  "The `secure`, `secureCert`, and `secureKey` options are now deprecated. " +
202
206
  "Please use the `secureServerOptions` object instead to pass options to " +
203
- "Metro's https development server.",
207
+ "Metro's https development server, or `config.server.tls` in Metro's configuration",
204
208
  );
205
209
  }
206
210
  const connect = require("connect");
@@ -219,15 +223,29 @@ const runServer = async (
219
223
  }
220
224
  serverApp.use(middleware);
221
225
  let httpServer;
222
- if (secure || secureServerOptions != null) {
223
- let options = secureServerOptions;
224
- if (typeof secureKey === "string" && typeof secureCert === "string") {
225
- options = {
226
- key: _fs.default.readFileSync(secureKey),
227
- cert: _fs.default.readFileSync(secureCert),
228
- ...secureServerOptions,
229
- };
230
- }
226
+ const { tls } = config.server;
227
+ if (
228
+ secure === true ||
229
+ secureServerOptions != null ||
230
+ typeof tls === "object"
231
+ ) {
232
+ const options = {
233
+ key:
234
+ typeof tls === "object"
235
+ ? tls.key
236
+ : typeof secureKey === "string"
237
+ ? _fs.default.readFileSync(secureKey)
238
+ : undefined,
239
+ cert:
240
+ typeof tls === "object"
241
+ ? tls.cert
242
+ : typeof secureCert === "string"
243
+ ? _fs.default.readFileSync(secureCert)
244
+ : undefined,
245
+ ca: typeof tls === "object" ? tls.ca : undefined,
246
+ requestCert: typeof tls === "object" ? tls.requestCert : undefined,
247
+ ...(secureServerOptions ?? {}),
248
+ };
231
249
  httpServer = _https.default.createServer(options, serverApp);
232
250
  } else {
233
251
  httpServer = _http.default.createServer(serverApp);
@@ -247,8 +265,8 @@ const runServer = async (
247
265
  port,
248
266
  family,
249
267
  });
250
- websocketEndpoints = {
251
- ...websocketEndpoints,
268
+ const websocketEndpoints = {
269
+ ...userWebsocketEndpoints,
252
270
  "/hot": (0, _createWebsocketServer.default)({
253
271
  websocketServer: new _HmrServer.default(
254
272
  metroServer.getBundler(),
@@ -349,7 +367,7 @@ const runBuild = async (
349
367
  if (onComplete) {
350
368
  onComplete();
351
369
  }
352
- if (out || bundleOut) {
370
+ if (out != null || bundleOut != null) {
353
371
  const bundleOutput =
354
372
  bundleOut ?? (0, _nullthrows.default)(out).replace(/(\.js)?$/, ".js");
355
373
  const sourcemapOutput =