metro 0.70.2 → 0.71.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 (79) hide show
  1. package/package.json +22 -21
  2. package/src/Assets.js.flow +4 -4
  3. package/src/Bundler/util.js +1 -1
  4. package/src/Bundler/util.js.flow +2 -2
  5. package/src/Bundler.js +17 -10
  6. package/src/Bundler.js.flow +19 -14
  7. package/src/DeltaBundler/DeltaCalculator.js +13 -17
  8. package/src/DeltaBundler/DeltaCalculator.js.flow +15 -20
  9. package/src/DeltaBundler/Serializers/getAllFiles.js.flow +2 -2
  10. package/src/DeltaBundler/Serializers/getAssets.js.flow +2 -2
  11. package/src/DeltaBundler/Serializers/getExplodedSourceMap.js.flow +4 -4
  12. package/src/DeltaBundler/Serializers/getRamBundleInfo.js.flow +6 -6
  13. package/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js.flow +4 -4
  14. package/src/DeltaBundler/Serializers/helpers/processBytecodeModules.js.flow +2 -2
  15. package/src/DeltaBundler/Serializers/helpers/processModules.js.flow +2 -2
  16. package/src/DeltaBundler/Serializers/hmrJSBundle.js.flow +2 -2
  17. package/src/DeltaBundler/Serializers/sourceMapGenerator.js.flow +6 -6
  18. package/src/DeltaBundler/Serializers/sourceMapObject.js.flow +4 -4
  19. package/src/DeltaBundler/Serializers/sourceMapString.js.flow +2 -2
  20. package/src/DeltaBundler/Worker.flow.js +78 -0
  21. package/src/DeltaBundler/Worker.flow.js.flow +121 -0
  22. package/src/DeltaBundler/Worker.js +8 -66
  23. package/src/DeltaBundler/Worker.js.flow +8 -107
  24. package/src/DeltaBundler/WorkerFarm.js.flow +4 -4
  25. package/src/DeltaBundler/__fixtures__/hasteImpl.js +4 -0
  26. package/src/DeltaBundler/getTransformCacheKey.js.flow +2 -2
  27. package/src/DeltaBundler/graphOperations.js +634 -0
  28. package/src/DeltaBundler/graphOperations.js.flow +749 -0
  29. package/src/DeltaBundler/types.flow.js.flow +36 -30
  30. package/src/DeltaBundler.js +14 -6
  31. package/src/DeltaBundler.js.flow +14 -10
  32. package/src/HmrServer.js.flow +6 -6
  33. package/src/IncrementalBundler.js +1 -1
  34. package/src/IncrementalBundler.js.flow +8 -8
  35. package/src/ModuleGraph/node-haste/ModuleCache.js +1 -1
  36. package/src/ModuleGraph/node-haste/ModuleCache.js.flow +1 -1
  37. package/src/ModuleGraph/node-haste/node-haste.flow.js.flow +2 -2
  38. package/src/ModuleGraph/node-haste/node-haste.js +4 -4
  39. package/src/ModuleGraph/node-haste/node-haste.js.flow +13 -7
  40. package/src/ModuleGraph/output/indexed-ram-bundle.js.flow +2 -2
  41. package/src/ModuleGraph/output/plain-bundle.js.flow +2 -2
  42. package/src/ModuleGraph/output/reverse-dependency-map-references.js.flow +8 -8
  43. package/src/ModuleGraph/output/util.js.flow +2 -2
  44. package/src/ModuleGraph/types.flow.js.flow +37 -37
  45. package/src/ModuleGraph/worker/collectDependencies.js.flow +2 -2
  46. package/src/Server/symbolicate.js.flow +1 -1
  47. package/src/Server.js.flow +18 -18
  48. package/src/cli.js +5 -0
  49. package/src/cli.js.flow +5 -0
  50. package/src/commands/build.js +4 -3
  51. package/src/commands/build.js.flow +5 -3
  52. package/src/commands/serve.js +3 -3
  53. package/src/commands/serve.js.flow +5 -3
  54. package/src/index.flow.js +392 -0
  55. package/src/index.flow.js.flow +480 -0
  56. package/src/index.js +8 -366
  57. package/src/index.js.flow +8 -456
  58. package/src/lib/bundleToBytecode.js.flow +2 -2
  59. package/src/lib/bundleToString.js.flow +2 -2
  60. package/src/lib/getPreludeCode.js.flow +2 -2
  61. package/src/lib/transformHelpers.js.flow +2 -2
  62. package/src/node-haste/DependencyGraph/ModuleResolution.js +17 -4
  63. package/src/node-haste/DependencyGraph/ModuleResolution.js.flow +20 -12
  64. package/src/node-haste/DependencyGraph/createHasteMap.js +79 -19
  65. package/src/node-haste/DependencyGraph/createHasteMap.js.flow +15 -14
  66. package/src/node-haste/DependencyGraph.js +31 -27
  67. package/src/node-haste/DependencyGraph.js.flow +43 -37
  68. package/src/node-haste/ModuleCache.js.flow +1 -1
  69. package/src/node-haste/lib/AssetPaths.js.flow +2 -2
  70. package/src/node-haste/lib/parsePlatformFilePath.js.flow +2 -2
  71. package/src/shared/output/RamBundle/as-indexed-file.js.flow +1 -1
  72. package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js.flow +2 -2
  73. package/src/shared/types.flow.js.flow +14 -14
  74. package/src/DeltaBundler/computeDelta.js +0 -42
  75. package/src/DeltaBundler/computeDelta.js.flow +0 -47
  76. package/src/DeltaBundler/traverseDependencies.js +0 -470
  77. package/src/DeltaBundler/traverseDependencies.js.flow +0 -565
  78. package/src/node-haste/DependencyGraph/types.js +0 -10
  79. package/src/node-haste/DependencyGraph/types.js.flow +0 -88
package/src/index.js CHANGED
@@ -8,371 +8,13 @@
8
8
  * @format
9
9
  */
10
10
  "use strict";
11
+ /*::
12
+ export type * from './index.flow';
13
+ */
11
14
 
12
- const makeBuildCommand = require("./commands/build");
15
+ try {
16
+ // $FlowFixMe[untyped-import]
17
+ require("metro-babel-register").unstable_registerForMetroMonorepo();
18
+ } catch {}
13
19
 
14
- const makeDependenciesCommand = require("./commands/dependencies");
15
-
16
- const makeServeCommand = require("./commands/serve");
17
-
18
- const MetroHmrServer = require("./HmrServer");
19
-
20
- const IncrementalBundler = require("./IncrementalBundler");
21
-
22
- const createWebsocketServer = require("./lib/createWebsocketServer");
23
-
24
- const MetroServer = require("./Server");
25
-
26
- const outputBundle = require("./shared/output/bundle");
27
-
28
- const chalk = require("chalk");
29
-
30
- const fs = require("fs");
31
-
32
- const http = require("http");
33
-
34
- const https = require("https");
35
-
36
- const { getDefaultConfig, loadConfig, mergeConfig } = require("metro-config");
37
-
38
- const { InspectorProxy } = require("metro-inspector-proxy");
39
-
40
- const { parse } = require("url");
41
-
42
- const ws = require("ws");
43
-
44
- async function getConfig(config) {
45
- const defaultConfig = await getDefaultConfig(config.projectRoot);
46
- return mergeConfig(defaultConfig, config);
47
- }
48
-
49
- async function runMetro(config, options) {
50
- const mergedConfig = await getConfig(config);
51
- const {
52
- reporter,
53
- server: { port },
54
- } = mergedConfig;
55
- reporter.update({
56
- hasReducedPerformance: options
57
- ? Boolean(options.hasReducedPerformance)
58
- : false,
59
- port,
60
- type: "initialize_started",
61
- });
62
- const { waitForBundler = false, ...serverOptions } =
63
- options !== null && options !== void 0 ? options : {};
64
- const server = new MetroServer(mergedConfig, serverOptions);
65
- const readyPromise = server
66
- .ready()
67
- .then(() => {
68
- reporter.update({
69
- type: "initialize_done",
70
- port,
71
- });
72
- })
73
- .catch((error) => {
74
- reporter.update({
75
- type: "initialize_failed",
76
- port,
77
- error,
78
- });
79
- });
80
-
81
- if (waitForBundler) {
82
- await readyPromise;
83
- }
84
-
85
- return server;
86
- }
87
-
88
- exports.runMetro = runMetro;
89
- exports.loadConfig = loadConfig;
90
-
91
- const createConnectMiddleware = async function (config, options) {
92
- const metroServer = await runMetro(config, options);
93
- let enhancedMiddleware = metroServer.processRequest; // Enhance the resulting middleware using the config options
94
-
95
- if (config.server.enhanceMiddleware) {
96
- enhancedMiddleware = config.server.enhanceMiddleware(
97
- enhancedMiddleware,
98
- metroServer
99
- );
100
- }
101
-
102
- return {
103
- attachHmrServer(httpServer) {
104
- const wss = createWebsocketServer({
105
- websocketServer: new MetroHmrServer(
106
- metroServer.getBundler(),
107
- metroServer.getCreateModuleId(),
108
- config
109
- ),
110
- });
111
- httpServer.on("upgrade", (request, socket, head) => {
112
- const { pathname } = parse(request.url);
113
-
114
- if (pathname === "/hot") {
115
- wss.handleUpgrade(request, socket, head, (ws) => {
116
- wss.emit("connection", ws, request);
117
- });
118
- } else {
119
- socket.destroy();
120
- }
121
- });
122
- },
123
-
124
- metroServer,
125
- middleware: enhancedMiddleware,
126
-
127
- end() {
128
- metroServer.end();
129
- },
130
- };
131
- };
132
-
133
- exports.createConnectMiddleware = createConnectMiddleware;
134
-
135
- exports.runServer = async (
136
- config,
137
- {
138
- hasReducedPerformance = false,
139
- host,
140
- onError,
141
- onReady,
142
- secureServerOptions,
143
- secure,
144
- //deprecated
145
- secureCert,
146
- // deprecated
147
- secureKey,
148
- // deprecated
149
- waitForBundler = false,
150
- websocketEndpoints = {},
151
- }
152
- ) => {
153
- if (secure != null || secureCert != null || secureKey != null) {
154
- // eslint-disable-next-line no-console
155
- console.warn(
156
- chalk.inverse.yellow.bold(" DEPRECATED "),
157
- "The `secure`, `secureCert`, and `secureKey` options are now deprecated. " +
158
- "Please use the `secureServerOptions` object instead to pass options to " +
159
- "Metro's https development server."
160
- );
161
- } // Lazy require
162
-
163
- const connect = require("connect");
164
-
165
- const serverApp = connect();
166
- const { middleware, end, metroServer } = await createConnectMiddleware(
167
- config,
168
- {
169
- hasReducedPerformance,
170
- waitForBundler,
171
- }
172
- );
173
- serverApp.use(middleware);
174
- let inspectorProxy = null;
175
-
176
- if (config.server.runInspectorProxy) {
177
- inspectorProxy = new InspectorProxy(config.projectRoot);
178
- }
179
-
180
- let httpServer;
181
-
182
- if (secure || secureServerOptions != null) {
183
- let options = secureServerOptions;
184
-
185
- if (typeof secureKey === "string" && typeof secureCert === "string") {
186
- options = Object.assign(
187
- {
188
- key: fs.readFileSync(secureKey),
189
- cert: fs.readFileSync(secureCert),
190
- },
191
- secureServerOptions
192
- );
193
- }
194
-
195
- httpServer = https.createServer(options, serverApp);
196
- } else {
197
- httpServer = http.createServer(serverApp);
198
- }
199
-
200
- httpServer.on("error", (error) => {
201
- if (onError) {
202
- onError(error);
203
- }
204
-
205
- end();
206
- });
207
- return new Promise((resolve, reject) => {
208
- httpServer.listen(config.server.port, host, () => {
209
- if (onReady) {
210
- onReady(httpServer);
211
- }
212
-
213
- Object.assign(websocketEndpoints, {
214
- ...(inspectorProxy
215
- ? { ...inspectorProxy.createWebSocketListeners(httpServer) }
216
- : {}),
217
- "/hot": createWebsocketServer({
218
- websocketServer: new MetroHmrServer(
219
- metroServer.getBundler(),
220
- metroServer.getCreateModuleId(),
221
- config
222
- ),
223
- }),
224
- });
225
- httpServer.on("upgrade", (request, socket, head) => {
226
- const { pathname } = parse(request.url);
227
-
228
- if (pathname != null && websocketEndpoints[pathname]) {
229
- websocketEndpoints[pathname].handleUpgrade(
230
- request,
231
- socket,
232
- head,
233
- (ws) => {
234
- websocketEndpoints[pathname].emit("connection", ws, request);
235
- }
236
- );
237
- } else {
238
- socket.destroy();
239
- }
240
- });
241
-
242
- if (inspectorProxy) {
243
- // TODO(hypuk): Refactor inspectorProxy.processRequest into separate request handlers
244
- // so that we could provide routes (/json/list and /json/version) here.
245
- // Currently this causes Metro to give warning about T31407894.
246
- // $FlowFixMe[method-unbinding] added when improving typing for this parameters
247
- serverApp.use(inspectorProxy.processRequest.bind(inspectorProxy));
248
- }
249
-
250
- resolve(httpServer);
251
- }); // Disable any kind of automatic timeout behavior for incoming
252
- // requests in case it takes the packager more than the default
253
- // timeout of 120 seconds to respond to a request.
254
-
255
- httpServer.timeout = 0;
256
- httpServer.on("error", (error) => {
257
- end();
258
- reject(error);
259
- });
260
- httpServer.on("close", () => {
261
- end();
262
- });
263
- });
264
- };
265
-
266
- exports.runBuild = async (
267
- config,
268
- {
269
- dev = false,
270
- entry,
271
- onBegin,
272
- onComplete,
273
- onProgress,
274
- minify = true,
275
- output = outputBundle,
276
- out,
277
- platform = "web",
278
- sourceMap = false,
279
- sourceMapUrl,
280
- }
281
- ) => {
282
- const metroServer = await runMetro(config, {
283
- watch: false,
284
- });
285
-
286
- try {
287
- const requestOptions = {
288
- dev,
289
- entryFile: entry,
290
- inlineSourceMap: sourceMap && !sourceMapUrl,
291
- minify,
292
- platform,
293
- sourceMapUrl: sourceMap === false ? undefined : sourceMapUrl,
294
- createModuleIdFactory: config.serializer.createModuleIdFactory,
295
- onProgress,
296
- };
297
-
298
- if (onBegin) {
299
- onBegin();
300
- }
301
-
302
- const metroBundle = await output.build(metroServer, requestOptions);
303
-
304
- if (onComplete) {
305
- onComplete();
306
- }
307
-
308
- if (out) {
309
- const bundleOutput = out.replace(/(\.js)?$/, ".js");
310
- const sourcemapOutput =
311
- sourceMap === false ? undefined : out.replace(/(\.js)?$/, ".map");
312
- const outputOptions = {
313
- bundleOutput,
314
- sourcemapOutput,
315
- dev,
316
- platform,
317
- }; // eslint-disable-next-line no-console
318
-
319
- await output.save(metroBundle, outputOptions, console.log);
320
- }
321
-
322
- return metroBundle;
323
- } finally {
324
- await metroServer.end();
325
- }
326
- };
327
-
328
- exports.buildGraph = async function (
329
- config,
330
- {
331
- customTransformOptions = Object.create(null),
332
- dev = false,
333
- entries,
334
- minify = false,
335
- onProgress,
336
- platform = "web",
337
- type = "module",
338
- }
339
- ) {
340
- const mergedConfig = await getConfig(config);
341
- const bundler = new IncrementalBundler(mergedConfig);
342
-
343
- try {
344
- return await bundler.buildGraphForEntries(entries, {
345
- ...MetroServer.DEFAULT_GRAPH_OPTIONS,
346
- customTransformOptions,
347
- dev,
348
- minify,
349
- platform,
350
- type,
351
- });
352
- } finally {
353
- bundler.end();
354
- }
355
- };
356
-
357
- exports.attachMetroCli = function (
358
- yargs,
359
- { build = {}, serve = {}, dependencies = {} } = {}
360
- ) {
361
- if (build) {
362
- const { command, description, builder, handler } = makeBuildCommand();
363
- yargs.command(command, description, builder, handler);
364
- }
365
-
366
- if (serve) {
367
- const { command, description, builder, handler } = makeServeCommand();
368
- yargs.command(command, description, builder, handler);
369
- }
370
-
371
- if (dependencies) {
372
- const { command, description, builder, handler } =
373
- makeDependenciesCommand();
374
- yargs.command(command, description, builder, handler);
375
- }
376
-
377
- return yargs;
378
- };
20
+ module.exports = require("./index.flow");