@expo/cli 0.15.0 → 0.16.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 (148) hide show
  1. package/build/bin/cli +10 -3
  2. package/build/bin/cli.map +1 -1
  3. package/build/src/api/user/actions.js +1 -1
  4. package/build/src/api/user/actions.js.map +1 -1
  5. package/build/src/export/createMetadataJson.js +2 -1
  6. package/build/src/export/createMetadataJson.js.map +1 -1
  7. package/build/src/export/embed/exportEmbedAsync.js +50 -3
  8. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  9. package/build/src/export/embed/xcodeCompilerLogger.js +97 -0
  10. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -0
  11. package/build/src/export/exportApp.js +90 -103
  12. package/build/src/export/exportApp.js.map +1 -1
  13. package/build/src/export/exportAssets.js +18 -23
  14. package/build/src/export/exportAssets.js.map +1 -1
  15. package/build/src/export/exportAsync.js +1 -1
  16. package/build/src/export/exportAsync.js.map +1 -1
  17. package/build/src/export/exportHermes.js +0 -90
  18. package/build/src/export/exportHermes.js.map +1 -1
  19. package/build/src/export/exportStaticAsync.js +137 -108
  20. package/build/src/export/exportStaticAsync.js.map +1 -1
  21. package/build/src/export/favicon.js +12 -4
  22. package/build/src/export/favicon.js.map +1 -1
  23. package/build/src/export/fork-bundleAsync.js +74 -49
  24. package/build/src/export/fork-bundleAsync.js.map +1 -1
  25. package/build/src/export/metroAssetLocalPath.js +1 -1
  26. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  27. package/build/src/export/persistMetroAssets.js +28 -17
  28. package/build/src/export/persistMetroAssets.js.map +1 -1
  29. package/build/src/export/publicFolder.js +7 -0
  30. package/build/src/export/publicFolder.js.map +1 -1
  31. package/build/src/export/saveAssets.js +176 -12
  32. package/build/src/export/saveAssets.js.map +1 -1
  33. package/build/src/export/writeContents.js +8 -107
  34. package/build/src/export/writeContents.js.map +1 -1
  35. package/build/src/install/installAsync.js +29 -10
  36. package/build/src/install/installAsync.js.map +1 -1
  37. package/build/src/prebuild/prebuildAsync.js +9 -2
  38. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  39. package/build/src/run/hints.js +4 -0
  40. package/build/src/run/hints.js.map +1 -1
  41. package/build/src/run/index.js +101 -0
  42. package/build/src/run/index.js.map +1 -0
  43. package/build/src/start/doctor/dependencies/bundledNativeModules.js +2 -2
  44. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  45. package/build/src/start/doctor/dependencies/getVersionedPackages.js +10 -3
  46. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  47. package/build/src/start/doctor/dependencies/resolvePackages.js +66 -0
  48. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -0
  49. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +2 -30
  50. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  51. package/build/src/start/interface/interactiveActions.js +24 -8
  52. package/build/src/start/interface/interactiveActions.js.map +1 -1
  53. package/build/src/start/server/getStaticRenderFunctions.js +8 -4
  54. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  55. package/build/src/start/server/metro/MetroBundlerDevServer.js +39 -16
  56. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  57. package/build/src/start/server/metro/MetroTerminalReporter.js +6 -2
  58. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  59. package/build/src/start/server/metro/TerminalReporter.js +18 -1
  60. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  61. package/build/src/start/server/metro/bundleApiRoutes.js +3 -2
  62. package/build/src/start/server/metro/bundleApiRoutes.js.map +1 -1
  63. package/build/src/start/server/metro/createExpoMetroResolver.js +22 -5
  64. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
  65. package/build/src/start/server/metro/createJResolver.js +5 -2
  66. package/build/src/start/server/metro/createJResolver.js.map +1 -1
  67. package/build/src/start/server/metro/createServerRouteMiddleware.js +2 -1
  68. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  69. package/build/src/start/server/metro/{inspector-proxy/device.js → debugging/InspectorDevice.js} +8 -38
  70. package/build/src/start/server/metro/debugging/InspectorDevice.js.map +1 -0
  71. package/build/src/start/server/metro/debugging/InspectorProxy.js +116 -0
  72. package/build/src/start/server/metro/debugging/InspectorProxy.js.map +1 -0
  73. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +45 -0
  74. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -0
  75. package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/NetworkResponse.js +3 -4
  76. package/build/src/start/server/metro/debugging/inspectorHandlers/NetworkResponse.js.map +1 -0
  77. package/build/src/start/server/metro/debugging/inspectorHandlers/PageReload.js.map +1 -0
  78. package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeDebuggerGetPossibleBreakpoints.js +2 -2
  79. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -0
  80. package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeDebuggerScriptParsed.js +3 -2
  81. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js.map +1 -0
  82. package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeDebuggerSetBreakpointByUrl.js +3 -2
  83. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -0
  84. package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeRuntimeCallFunctionOn.js +2 -2
  85. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
  86. package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeRuntimeGetProperties.js +5 -4
  87. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeGetProperties.js.map +1 -0
  88. package/build/src/start/server/metro/debugging/inspectorHandlers/types.js.map +1 -0
  89. package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js +20 -0
  90. package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js.map +1 -0
  91. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  92. package/build/src/start/server/metro/instantiateMetro.js +10 -5
  93. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  94. package/build/src/start/server/metro/metroErrorInterface.js +3 -2
  95. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  96. package/build/src/start/server/metro/router.js +1 -5
  97. package/build/src/start/server/metro/router.js.map +1 -1
  98. package/build/src/start/server/metro/runServer-fork.js +0 -19
  99. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  100. package/build/src/start/server/metro/serializeHtml.js +20 -4
  101. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  102. package/build/src/start/server/metro/withMetroMultiPlatform.js +48 -85
  103. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  104. package/build/src/start/server/middleware/ManifestMiddleware.js +12 -5
  105. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  106. package/build/src/start/server/middleware/inspector/JsInspector.js +22 -1
  107. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  108. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +12 -12
  109. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  110. package/build/src/start/server/middleware/metroOptions.js +62 -9
  111. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  112. package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +1 -1
  113. package/build/src/start/server/type-generation/__typetests__/route.test.js +11 -3
  114. package/build/src/start/server/type-generation/__typetests__/route.test.js.map +1 -1
  115. package/build/src/start/server/type-generation/routes.js +6 -4
  116. package/build/src/start/server/type-generation/routes.js.map +1 -1
  117. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +1 -1
  118. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  119. package/build/src/utils/analytics/rudderstackClient.js +2 -2
  120. package/build/src/utils/codesigning.js +11 -1
  121. package/build/src/utils/codesigning.js.map +1 -1
  122. package/build/src/utils/env.js +7 -1
  123. package/build/src/utils/env.js.map +1 -1
  124. package/build/src/utils/tsconfig/loadTsConfigPaths.js +3 -11
  125. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  126. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +22 -12
  127. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
  128. package/package.json +10 -10
  129. package/static/template/index.html +14 -95
  130. package/build/src/export/printBundleSizes.js +0 -101
  131. package/build/src/export/printBundleSizes.js.map +0 -1
  132. package/build/src/start/server/metro/inspector-proxy/device.js.map +0 -1
  133. package/build/src/start/server/metro/inspector-proxy/handlers/NetworkResponse.js.map +0 -1
  134. package/build/src/start/server/metro/inspector-proxy/handlers/PageReload.js.map +0 -1
  135. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerGetPossibleBreakpoints.js.map +0 -1
  136. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerScriptParsed.js.map +0 -1
  137. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerSetBreakpointByUrl.js.map +0 -1
  138. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeCallFunctionOn.js.map +0 -1
  139. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeGetProperties.js.map +0 -1
  140. package/build/src/start/server/metro/inspector-proxy/handlers/types.js.map +0 -1
  141. package/build/src/start/server/metro/inspector-proxy/handlers/utils.js +0 -11
  142. package/build/src/start/server/metro/inspector-proxy/handlers/utils.js.map +0 -1
  143. package/build/src/start/server/metro/inspector-proxy/index.js +0 -30
  144. package/build/src/start/server/metro/inspector-proxy/index.js.map +0 -1
  145. package/build/src/start/server/metro/inspector-proxy/proxy.js +0 -169
  146. package/build/src/start/server/metro/inspector-proxy/proxy.js.map +0 -1
  147. /package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/PageReload.js +0 -0
  148. /package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/types.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../src/start/server/metro/inspector-proxy/proxy.ts"],"sourcesContent":["import type { Server as HttpServer, IncomingMessage, ServerResponse } from 'http';\nimport type { Server as HttpsServer } from 'https';\nimport type { InspectorProxy as MetroProxy, Device as MetroDevice } from 'metro-inspector-proxy';\nimport { parse } from 'url';\nimport WS, { Server as WSServer } from 'ws';\n\nimport { Log } from '../../../../log';\n\nconst WS_DEVICE_URL = '/inspector/device';\nconst WS_DEBUGGER_URL = '/inspector/debug';\nconst WS_GENERIC_ERROR_STATUS = 1011;\n\nconst debug = require('debug')('expo:metro:inspector-proxy:proxy') as typeof console.log;\n\n// This is a workaround for `ConstructorType` not working on dynamically generated classes\ntype Instantiatable<Instance> = new (...args: any) => Instance;\n\nexport class ExpoInspectorProxy<D extends MetroDevice = MetroDevice> {\n constructor(\n public readonly metroProxy: MetroProxy,\n private DeviceClass: Instantiatable<D>,\n public readonly devices: Map<string, D> = new Map()\n ) {\n // monkey-patch the device list to expose it within the metro inspector\n // See https://github.com/facebook/metro/pull/991\n // @ts-expect-error - Device ID is changing from `number` to `string`\n this.metroProxy._devices = this.devices;\n\n // force httpEndpointMiddleware to be bound to this proxy instance\n this.processRequest = this.processRequest.bind(this);\n }\n\n /**\n * Normalize the server address for clients to connect to.\n * @param addressInfo the server address returned by `HttpServer.address()` or `HttpsServer.address()`.\n * @returns \"address:port\"\n */\n public static normalizeServerAddress(addressInfo: ReturnType<HttpServer['address']>): string {\n if (typeof addressInfo === 'string') {\n throw new Error(`Inspector proxy could not resolve the server address, got \"${addressInfo}\"`);\n } else if (addressInfo === null) {\n throw new Error(`Inspector proxy could not resolve the server address, got \"null\"`);\n }\n\n let address = addressInfo.address;\n if (addressInfo.family === 'IPv6') {\n address = address === '::' ? `[::1]` : `[${address}]`;\n } else {\n address = address === '0.0.0.0' ? 'localhost' : address;\n }\n return `${address}:${addressInfo.port}`;\n }\n\n /** @see https://chromedevtools.github.io/devtools-protocol/#endpoints */\n public processRequest(req: IncomingMessage, res: ServerResponse, next: (error?: Error) => any) {\n this.metroProxy.processRequest(req, res, next);\n }\n\n public createWebSocketListeners(server: HttpServer | HttpsServer): Record<string, WSServer> {\n // Initialize the server address from the metro server.\n // This is required to properly reference sourcemaps for the debugger.\n this.metroProxy._serverAddressWithPort = ExpoInspectorProxy.normalizeServerAddress(\n server.address()\n );\n\n return {\n [WS_DEVICE_URL]: this.createDeviceWebSocketServer(),\n [WS_DEBUGGER_URL]: this.createDebuggerWebSocketServer(),\n };\n }\n\n private createDeviceWebSocketServer() {\n const wss = new WS.Server({\n noServer: true,\n perMessageDeflate: false,\n });\n\n // See: https://github.com/facebook/metro/blob/eeb211fdcfdcb9e7f8a51721bd0f48bc7d0d211f/packages/metro-inspector-proxy/src/InspectorProxy.js#L157\n wss.on('connection', (socket, request) => {\n try {\n const fallbackDeviceId = String(this.metroProxy._deviceCounter++);\n const { deviceId: newDeviceId, deviceName, appName } = getDeviceInfo(request.url);\n\n const deviceId = newDeviceId ?? fallbackDeviceId;\n\n const oldDevice = this.devices.get(deviceId);\n const newDevice = new this.DeviceClass(\n deviceId,\n deviceName,\n appName,\n socket,\n this.metroProxy._projectRoot\n );\n\n if (oldDevice) {\n debug('Device reconnected: device=%s, app=%s, id=%s', deviceName, appName, deviceId);\n // See: https://github.com/facebook/metro/pull/991\n // @ts-expect-error - Newly introduced method coming to metro-inspector-proxy soon\n oldDevice.handleDuplicateDeviceConnection(newDevice);\n } else {\n debug('New device connected: device=%s, app=%s, id=%s', deviceName, appName, deviceId);\n }\n\n this.devices.set(deviceId, newDevice);\n\n socket.on('close', () => {\n if (this.devices.get(deviceId) === newDevice) {\n this.devices.delete(deviceId);\n debug('Device disconnected: device=%s, app=%s, id=%s', deviceName, appName, deviceId);\n }\n });\n } catch (error: unknown) {\n let message = '';\n\n debug('Could not establish a connection to on-device debugger:', error);\n\n if (error instanceof Error) {\n message = error.toString();\n Log.error('Failed to create a socket connection to on-device debugger (Hermes engine).');\n Log.exception(error);\n } else {\n Log.error(\n 'Failed to create a socket connection to on-device debugger (Hermes engine), unknown error.'\n );\n }\n\n socket.close(WS_GENERIC_ERROR_STATUS, message || 'Unknown error');\n }\n });\n\n return wss;\n }\n\n private createDebuggerWebSocketServer() {\n const wss = new WS.Server({\n noServer: true,\n perMessageDeflate: false,\n });\n\n // See: https://github.com/facebook/metro/blob/eeb211fdcfdcb9e7f8a51721bd0f48bc7d0d211f/packages/metro-inspector-proxy/src/InspectorProxy.js#L193\n wss.on('connection', (socket, request) => {\n try {\n const { deviceId, pageId, debuggerType } = getDebuggerInfo(request.url);\n if (!deviceId || !pageId) {\n // TODO(cedric): change these errors to proper error types\n throw new Error(`Missing \"device\" and/or \"page\" IDs in query parameters`);\n }\n\n const device = this.devices.get(deviceId);\n if (!device) {\n // TODO(cedric): change these errors to proper error types\n throw new Error(`Device with ID \"${deviceId}\" not found.`);\n }\n\n debug('New debugger connected: device=%s, app=%s', device._name, device._app);\n\n // @ts-expect-error The `handleDebuggerConnectionWithType` is part of our device implementation, not Metro's device\n if (debuggerType && typeof device.handleDebuggerConnectionWithType === 'function') {\n // @ts-expect-error The `handleDebuggerConnectionWithType` is part of our device implementation, not Metro's device\n device.handleDebuggerConnectionWithType(socket, pageId, debuggerType);\n } else {\n device.handleDebuggerConnection(socket, pageId);\n }\n\n socket.on('close', () => {\n debug('Debugger disconnected: device=%s, app=%s', device._name, device._app);\n });\n } catch (error: unknown) {\n let message = '';\n\n debug('Could not establish a connection to debugger:', error);\n\n if (error instanceof Error) {\n message = error.toString();\n Log.error('Failed to create a socket connection to the debugger.');\n Log.exception(error);\n } else {\n Log.error('Failed to create a socket connection to the debugger, unkown error.');\n }\n\n socket.close(WS_GENERIC_ERROR_STATUS, message || 'Unknown error');\n }\n });\n\n return wss;\n }\n}\n\nfunction asString(value: string | string[] = ''): string {\n return Array.isArray(value) ? value.join() : value;\n}\n\nfunction getDeviceInfo(url: IncomingMessage['url']) {\n const { query } = parse(url ?? '', true);\n return {\n deviceId: asString(query.device) || undefined,\n deviceName: asString(query.name) || 'Unknown device name',\n appName: asString(query.app) || 'Unknown app name',\n };\n}\n\nfunction getDebuggerInfo(url: IncomingMessage['url']) {\n const { query } = parse(url ?? '', true);\n return {\n deviceId: asString(query.device),\n pageId: asString(query.page),\n debuggerType: asString(query.type) ?? undefined,\n };\n}\n"],"names":["WS_DEVICE_URL","WS_DEBUGGER_URL","WS_GENERIC_ERROR_STATUS","debug","require","ExpoInspectorProxy","constructor","metroProxy","DeviceClass","devices","Map","_devices","processRequest","bind","normalizeServerAddress","addressInfo","Error","address","family","port","req","res","next","createWebSocketListeners","server","_serverAddressWithPort","createDeviceWebSocketServer","createDebuggerWebSocketServer","wss","WS","Server","noServer","perMessageDeflate","on","socket","request","fallbackDeviceId","String","_deviceCounter","deviceId","newDeviceId","deviceName","appName","getDeviceInfo","url","oldDevice","get","newDevice","_projectRoot","handleDuplicateDeviceConnection","set","delete","error","message","toString","Log","exception","close","pageId","debuggerType","getDebuggerInfo","device","_name","_app","handleDebuggerConnectionWithType","handleDebuggerConnection","asString","value","Array","isArray","join","query","parse","undefined","name","app","page","type"],"mappings":"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"}