@expo/cli 0.14.0 → 0.16.0
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.
- package/build/bin/cli +13 -5
- package/build/bin/cli.map +1 -1
- package/build/src/api/getVersions.js.map +1 -1
- package/build/src/api/rest/cache/response.js.map +1 -1
- package/build/src/api/rest/client.js +2 -2
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/user/actions.js +1 -1
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/customize/typescript.js +3 -1
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/export/createMetadataJson.js +5 -3
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +92 -18
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +3 -3
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +97 -0
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -0
- package/build/src/export/exportApp.js +106 -130
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +93 -38
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js +1 -1
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportHermes.js +0 -90
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +165 -101
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +13 -5
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/fork-bundleAsync.js +84 -57
- package/build/src/export/fork-bundleAsync.js.map +1 -1
- package/build/src/export/index.js +9 -7
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +101 -0
- package/build/src/export/metroAssetLocalPath.js.map +1 -0
- package/build/src/export/persistMetroAssets.js +115 -31
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +7 -0
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +1 -1
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +168 -43
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js +1 -1
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/writeContents.js +8 -106
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/install/applyPlugins.js +52 -0
- package/build/src/install/applyPlugins.js.map +1 -0
- package/build/src/install/checkPackages.js +2 -2
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js +84 -0
- package/build/src/install/fixPackages.js.map +1 -0
- package/build/src/install/installAsync.js +50 -60
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js +79 -0
- package/build/src/install/installExpoPackage.js.map +1 -0
- package/build/src/prebuild/clearNativeFolder.js +1 -1
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js +3 -3
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +21 -30
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +45 -16
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +2 -2
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +6 -6
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +49 -36
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js +2 -2
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/run/hints.js +4 -0
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js +101 -0
- package/build/src/run/index.js.map +1 -0
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +2 -2
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +22 -7
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/resolvePackages.js +66 -0
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -0
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +22 -33
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +54 -19
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +14 -10
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +6 -1
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +63 -0
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -0
- package/build/src/start/server/getStaticRenderFunctions.js +25 -23
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +76 -69
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +6 -2
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +18 -1
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/bundleApiRoutes.js +5 -3
- package/build/src/start/server/metro/bundleApiRoutes.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +80 -46
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +152 -0
- package/build/src/start/server/metro/createJResolver.js.map +1 -0
- package/build/src/start/server/metro/createServerRouteMiddleware.js +15 -2
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/{inspector-proxy/device.js → debugging/InspectorDevice.js} +10 -38
- package/build/src/start/server/metro/debugging/InspectorDevice.js.map +1 -0
- package/build/src/start/server/metro/debugging/InspectorProxy.js +116 -0
- package/build/src/start/server/metro/debugging/InspectorProxy.js.map +1 -0
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +45 -0
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -0
- package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/NetworkResponse.js +3 -4
- package/build/src/start/server/metro/debugging/inspectorHandlers/NetworkResponse.js.map +1 -0
- package/build/src/start/server/metro/debugging/inspectorHandlers/PageReload.js.map +1 -0
- package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeDebuggerGetPossibleBreakpoints.js +5 -6
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -0
- package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeDebuggerScriptParsed.js +3 -2
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js.map +1 -0
- package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeDebuggerSetBreakpointByUrl.js +3 -2
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -0
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js +24 -0
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
- package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeRuntimeGetProperties.js +5 -4
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeGetProperties.js.map +1 -0
- package/build/src/start/server/metro/debugging/inspectorHandlers/types.js.map +1 -0
- package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js +20 -0
- package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js.map +1 -0
- package/build/src/start/server/metro/externals.js +25 -3
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +40 -15
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +3 -2
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/router.js +5 -6
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +17 -27
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +59 -0
- package/build/src/start/server/metro/serializeHtml.js.map +1 -0
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +1 -2
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +237 -214
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +114 -40
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +61 -0
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ExpoMiddleware.js +2 -2
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +22 -66
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +23 -2
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js +30 -26
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js +7 -7
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +5 -2
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +3 -2
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +8 -7
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +176 -0
- package/build/src/start/server/middleware/metroOptions.js.map +1 -0
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +1 -1
- package/build/src/start/server/type-generation/__typetests__/route.test.js +11 -3
- package/build/src/start/server/type-generation/__typetests__/route.test.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +6 -4
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/utils/analytics/getMetroDebugProperties.js +1 -2
- package/build/src/utils/analytics/getMetroDebugProperties.js.map +1 -1
- package/build/src/utils/analytics/getMetroProperties.js +1 -2
- package/build/src/utils/analytics/getMetroProperties.js.map +1 -1
- package/build/src/utils/analytics/rudderstackClient.js +2 -2
- package/build/src/utils/args.js +4 -2
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/cocoapods.js +1 -1
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +11 -1
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/dir.js +18 -8
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/env.js +10 -1
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +2 -4
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/prompts.js +1 -28
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +3 -11
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +22 -12
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
- package/package.json +19 -18
- package/static/shims/react-native-web/dist/cjs/exports/AppRegistry/AppContainer.js +13 -0
- package/static/shims/react-native-web/dist/exports/AppRegistry/AppContainer.js +12 -0
- package/static/template/index.html +14 -95
- package/build/src/export/printBundleSizes.js +0 -101
- package/build/src/export/printBundleSizes.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/device.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/NetworkResponse.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/PageReload.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerGetPossibleBreakpoints.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerScriptParsed.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerSetBreakpointByUrl.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeGetProperties.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/types.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/index.js +0 -27
- package/build/src/start/server/metro/inspector-proxy/index.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/proxy.js +0 -169
- package/build/src/start/server/metro/inspector-proxy/proxy.js.map +0 -1
- package/build/src/start/server/metro/resolveFromProject.js +0 -90
- package/build/src/start/server/metro/resolveFromProject.js.map +0 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +0 -64
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +0 -1
- /package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/PageReload.js +0 -0
- /package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/types.js +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
+
var _utils = require("./utils");
|
|
5
6
|
/** Android's stock emulator and other emulators such as genymotion use a standard localhost alias. */ const EMULATOR_LOCALHOST_ADDRESSES = [
|
|
6
7
|
"10.0.2.2",
|
|
7
8
|
"10.0.3.2"
|
|
@@ -12,7 +13,7 @@ class VscodeDebuggerScriptParsedHandler {
|
|
|
12
13
|
this.device = device;
|
|
13
14
|
}
|
|
14
15
|
onDeviceMessage(message, debuggerInfo) {
|
|
15
|
-
if (debuggerInfo.
|
|
16
|
+
if ((0, _utils).getDebuggerType(debuggerInfo.userAgent) !== "vscode" || message.method !== "Debugger.scriptParsed") {
|
|
16
17
|
return false;
|
|
17
18
|
}
|
|
18
19
|
// See: https://github.com/facebook/metro/blob/f43caa371a813b257cb0b42028079645a1e85e0e/packages/metro-inspector-proxy/src/Device.js#L401-L410
|
|
@@ -46,7 +47,7 @@ class VscodeDebuggerScriptParsedHandler {
|
|
|
46
47
|
this.device._scriptIdToSourcePathMapping.set(message.params.scriptId, message.params.url);
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
|
-
// Block
|
|
50
|
+
// Block `@react-native/dev-middleware`'s default source map inlining
|
|
50
51
|
return true;
|
|
51
52
|
}
|
|
52
53
|
}
|
package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.ts"],"sourcesContent":["import { unstable_Device as MetroDevice } from '@react-native/dev-middleware';\nimport Protocol from 'devtools-protocol';\n\nimport { CdpMessage, DebuggerMetadata, DeviceRequest, InspectorHandler } from './types';\nimport { getDebuggerType } from './utils';\n\n/** Android's stock emulator and other emulators such as genymotion use a standard localhost alias. */\nconst EMULATOR_LOCALHOST_ADDRESSES: Readonly<string[]> = ['10.0.2.2', '10.0.3.2'];\n/** Prefix for script URLs that are alphanumeric IDs. */\nconst FILE_PREFIX = 'file://';\n\n/**\n * Some debug clients does not support fetching source maps by URL.\n * By default, the `@react-native/dev-middleware` inlines the source map as base64 string.\n * Unfortunately, that causes a multi-second delay in VS Code (±5s).\n * This handler disables inlining the source maps for VS Code only.\n */\nexport class VscodeDebuggerScriptParsedHandler implements InspectorHandler {\n constructor(private readonly device: MetroDevice) {}\n\n onDeviceMessage(message: DeviceRequest<DebuggerScriptParsed>, debuggerInfo: DebuggerMetadata) {\n if (\n getDebuggerType(debuggerInfo.userAgent) !== 'vscode' ||\n message.method !== 'Debugger.scriptParsed'\n ) {\n return false;\n }\n\n // See: https://github.com/facebook/metro/blob/f43caa371a813b257cb0b42028079645a1e85e0e/packages/metro-inspector-proxy/src/Device.js#L401-L410\n if (message.params.sourceMapURL) {\n for (let i = 0; i < EMULATOR_LOCALHOST_ADDRESSES.length; ++i) {\n const address = EMULATOR_LOCALHOST_ADDRESSES[i];\n if (message.params.sourceMapURL.indexOf(address) >= 0) {\n message.params.sourceMapURL = message.params.sourceMapURL.replace(address, 'localhost');\n debuggerInfo.originalSourceURLAddress = address;\n }\n }\n }\n\n // See: https://github.com/facebook/metro/blob/f43caa371a813b257cb0b42028079645a1e85e0e/packages/metro-inspector-proxy/src/Device.js#L431-L453\n if (message.params.url) {\n for (let i = 0; i < EMULATOR_LOCALHOST_ADDRESSES.length; ++i) {\n const address = EMULATOR_LOCALHOST_ADDRESSES[i];\n if (message.params.url.indexOf(address) >= 0) {\n message.params.url = message.params.url.replace(address, 'localhost');\n debuggerInfo.originalSourceURLAddress = address;\n }\n }\n\n // Chrome doesn't download source maps if URL param is not a valid\n // URL. Some frameworks pass alphanumeric script ID instead of URL which causes\n // Chrome to not download source maps. In this case we want to prepend script ID\n // with 'file://' prefix.\n if (message.params.url.match(/^[0-9a-z]+$/)) {\n message.params.url = FILE_PREFIX + message.params.url;\n debuggerInfo.prependedFilePrefix = true;\n }\n\n if (message.params.scriptId != null) {\n this.device._scriptIdToSourcePathMapping.set(message.params.scriptId, message.params.url);\n }\n }\n\n // Block `@react-native/dev-middleware`'s default source map inlining\n return true;\n }\n}\n\n/** @see https://chromedevtools.github.io/devtools-protocol/v8/Debugger/#event-scriptParsed */\nexport type DebuggerScriptParsed = CdpMessage<\n 'Debugger.scriptParsed',\n Protocol.Debugger.ScriptParsedEvent,\n never\n>;\n"],"names":["EMULATOR_LOCALHOST_ADDRESSES","FILE_PREFIX","VscodeDebuggerScriptParsedHandler","constructor","device","onDeviceMessage","message","debuggerInfo","getDebuggerType","userAgent","method","params","sourceMapURL","i","length","address","indexOf","replace","originalSourceURLAddress","url","match","prependedFilePrefix","scriptId","_scriptIdToSourcePathMapping","set"],"mappings":"AAAA;;;;AAIgC,IAAA,MAAS,WAAT,SAAS,CAAA;AAEzC,sGAAsG,CACtG,MAAMA,4BAA4B,GAAuB;IAAC,UAAU;IAAE,UAAU;CAAC,AAAC;AAClF,wDAAwD,CACxD,MAAMC,WAAW,GAAG,SAAS,AAAC;AAQvB,MAAMC,iCAAiC;IAC5CC,YAA6BC,MAAmB,CAAE;aAArBA,MAAmB,GAAnBA,MAAmB;KAAI;IAEpDC,eAAe,CAACC,OAA4C,EAAEC,YAA8B,EAAE;QAC5F,IACEC,CAAAA,GAAAA,MAAe,AAAwB,CAAA,gBAAxB,CAACD,YAAY,CAACE,SAAS,CAAC,KAAK,QAAQ,IACpDH,OAAO,CAACI,MAAM,KAAK,uBAAuB,EAC1C;YACA,OAAO,KAAK,CAAC;SACd;QAED,8IAA8I;QAC9I,IAAIJ,OAAO,CAACK,MAAM,CAACC,YAAY,EAAE;YAC/B,IAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGb,4BAA4B,CAACc,MAAM,EAAE,EAAED,CAAC,CAAE;gBAC5D,MAAME,OAAO,GAAGf,4BAA4B,CAACa,CAAC,CAAC,AAAC;gBAChD,IAAIP,OAAO,CAACK,MAAM,CAACC,YAAY,CAACI,OAAO,CAACD,OAAO,CAAC,IAAI,CAAC,EAAE;oBACrDT,OAAO,CAACK,MAAM,CAACC,YAAY,GAAGN,OAAO,CAACK,MAAM,CAACC,YAAY,CAACK,OAAO,CAACF,OAAO,EAAE,WAAW,CAAC,CAAC;oBACxFR,YAAY,CAACW,wBAAwB,GAAGH,OAAO,CAAC;iBACjD;aACF;SACF;QAED,8IAA8I;QAC9I,IAAIT,OAAO,CAACK,MAAM,CAACQ,GAAG,EAAE;YACtB,IAAK,IAAIN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGb,4BAA4B,CAACc,MAAM,EAAE,EAAED,CAAC,CAAE;gBAC5D,MAAME,OAAO,GAAGf,4BAA4B,CAACa,CAAC,CAAC,AAAC;gBAChD,IAAIP,OAAO,CAACK,MAAM,CAACQ,GAAG,CAACH,OAAO,CAACD,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC5CT,OAAO,CAACK,MAAM,CAACQ,GAAG,GAAGb,OAAO,CAACK,MAAM,CAACQ,GAAG,CAACF,OAAO,CAACF,OAAO,EAAE,WAAW,CAAC,CAAC;oBACtER,YAAY,CAACW,wBAAwB,GAAGH,OAAO,CAAC;iBACjD;aACF;YAED,kEAAkE;YAClE,+EAA+E;YAC/E,gFAAgF;YAChF,yBAAyB;YACzB,IAAIT,OAAO,CAACK,MAAM,CAACQ,GAAG,CAACC,KAAK,eAAe,EAAE;gBAC3Cd,OAAO,CAACK,MAAM,CAACQ,GAAG,GAAGlB,WAAW,GAAGK,OAAO,CAACK,MAAM,CAACQ,GAAG,CAAC;gBACtDZ,YAAY,CAACc,mBAAmB,GAAG,IAAI,CAAC;aACzC;YAED,IAAIf,OAAO,CAACK,MAAM,CAACW,QAAQ,IAAI,IAAI,EAAE;gBACnC,IAAI,CAAClB,MAAM,CAACmB,4BAA4B,CAACC,GAAG,CAAClB,OAAO,CAACK,MAAM,CAACW,QAAQ,EAAEhB,OAAO,CAACK,MAAM,CAACQ,GAAG,CAAC,CAAC;aAC3F;SACF;QAED,qEAAqE;QACrE,OAAO,IAAI,CAAC;KACb;CACF;QAjDYjB,iCAAiC,GAAjCA,iCAAiC"}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
+
var _utils = require("./utils");
|
|
5
6
|
class VscodeDebuggerSetBreakpointByUrlHandler {
|
|
6
|
-
onDebuggerMessage(message, {
|
|
7
|
-
if (
|
|
7
|
+
onDebuggerMessage(message, { userAgent }) {
|
|
8
|
+
if ((0, _utils).getDebuggerType(userAgent) === "vscode" && message.method === "Debugger.setBreakpointByUrl" && message.params.urlRegex) {
|
|
8
9
|
// Explicitly force the breakpoint to be unbounded
|
|
9
10
|
message.params.url = "file://__invalid_url__";
|
|
10
11
|
delete message.params.urlRegex;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.ts"],"sourcesContent":["import Protocol from 'devtools-protocol';\n\nimport { CdpMessage, DebuggerMetadata, DebuggerRequest, InspectorHandler } from './types';\nimport { getDebuggerType } from './utils';\n\n/**\n * Hermes and vscode have trouble setting breakpoints by `urlRegex` through `Debugger.setBreakpointByUrl`.\n * Vscode adds `file://` to a URL containing `http://`, which confuses Hermes and sets it to the wrong location.\n * Hermes needs to create the breakpoint to get the proper ID, but it must be unbounded.\n * Once the sourcemap is loaded, vscode will rebind the unbounded breakpoint to the correct location (using `Debugger.setBreakpoint`).\n */\nexport class VscodeDebuggerSetBreakpointByUrlHandler implements InspectorHandler {\n onDebuggerMessage(\n message: DebuggerRequest<DebuggerSetBreakpointByUrl>,\n { userAgent }: DebuggerMetadata\n ): boolean {\n if (\n getDebuggerType(userAgent) === 'vscode' &&\n message.method === 'Debugger.setBreakpointByUrl' &&\n message.params.urlRegex\n ) {\n // Explicitly force the breakpoint to be unbounded\n message.params.url = 'file://__invalid_url__';\n delete message.params.urlRegex;\n }\n\n return false;\n }\n}\n\n/** @see https://chromedevtools.github.io/devtools-protocol/v8/Debugger/#method-setBreakpointByUrl */\nexport type DebuggerSetBreakpointByUrl = CdpMessage<\n 'Debugger.setBreakpointByUrl',\n Protocol.Debugger.SetBreakpointByUrlRequest,\n Protocol.Debugger.SetBreakpointByUrlResponse\n>;\n"],"names":["VscodeDebuggerSetBreakpointByUrlHandler","onDebuggerMessage","message","userAgent","getDebuggerType","method","params","urlRegex","url"],"mappings":"AAAA;;;;AAGgC,IAAA,MAAS,WAAT,SAAS,CAAA;AAQlC,MAAMA,uCAAuC;IAClDC,iBAAiB,CACfC,OAAoD,EACpD,EAAEC,SAAS,CAAA,EAAoB,EACtB;QACT,IACEC,CAAAA,GAAAA,MAAe,AAAW,CAAA,gBAAX,CAACD,SAAS,CAAC,KAAK,QAAQ,IACvCD,OAAO,CAACG,MAAM,KAAK,6BAA6B,IAChDH,OAAO,CAACI,MAAM,CAACC,QAAQ,EACvB;YACA,kDAAkD;YAClDL,OAAO,CAACI,MAAM,CAACE,GAAG,GAAG,wBAAwB,CAAC;YAC9C,OAAON,OAAO,CAACI,MAAM,CAACC,QAAQ,CAAC;SAChC;QAED,OAAO,KAAK,CAAC;KACd;CACF;QAjBYP,uCAAuC,GAAvCA,uCAAuC"}
|
package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var _utils = require("./utils");
|
|
6
|
+
class VscodeRuntimeCallFunctionOnHandler {
|
|
7
|
+
onDebuggerMessage(message, { socket , userAgent }) {
|
|
8
|
+
if ((0, _utils).getDebuggerType(userAgent) === "vscode" && message.method === "Runtime.callFunctionOn") {
|
|
9
|
+
return (0, _utils).respond(socket, {
|
|
10
|
+
id: message.id,
|
|
11
|
+
result: {
|
|
12
|
+
// We don't know the `type` and vscode allows `type: undefined`
|
|
13
|
+
result: {
|
|
14
|
+
objectId: message.params.objectId
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.VscodeRuntimeCallFunctionOnHandler = VscodeRuntimeCallFunctionOnHandler;
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=VscodeRuntimeCallFunctionOn.js.map
|
package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.ts"],"sourcesContent":["import Protocol from 'devtools-protocol';\n\nimport {\n CdpMessage,\n DebuggerMetadata,\n DebuggerRequest,\n DeviceResponse,\n InspectorHandler,\n} from './types';\nimport { getDebuggerType, respond } from './utils';\n\n/**\n * Vscode is trying to inject a script to fetch information about \"Stringy\" variables.\n * Unfortunately, this script causes a Hermes exception and crashes the app.\n *\n * @see https://github.com/expo/vscode-expo/issues/231\n * @see https://github.com/microsoft/vscode-js-debug/blob/dcccaf3972d675cc1e5c776450bb4c3dc8c178c1/src/adapter/stackTrace.ts#L319-L324\n */\nexport class VscodeRuntimeCallFunctionOnHandler implements InspectorHandler {\n onDebuggerMessage(\n message: DebuggerRequest<RuntimeCallFunctionOn>,\n { socket, userAgent }: DebuggerMetadata\n ): boolean {\n if (getDebuggerType(userAgent) === 'vscode' && message.method === 'Runtime.callFunctionOn') {\n return respond<DeviceResponse<RuntimeCallFunctionOn>>(socket, {\n id: message.id,\n result: {\n // We don't know the `type` and vscode allows `type: undefined`\n result: { objectId: message.params.objectId } as any,\n },\n });\n }\n\n return false;\n }\n}\n\n/** @see https://chromedevtools.github.io/devtools-protocol/v8/Runtime/#method-callFunctionOn */\nexport type RuntimeCallFunctionOn = CdpMessage<\n 'Runtime.callFunctionOn',\n Protocol.Runtime.CallFunctionOnRequest,\n Protocol.Runtime.CallFunctionOnResponse\n>;\n"],"names":["VscodeRuntimeCallFunctionOnHandler","onDebuggerMessage","message","socket","userAgent","getDebuggerType","method","respond","id","result","objectId","params"],"mappings":"AAAA;;;;AASyC,IAAA,MAAS,WAAT,SAAS,CAAA;AAS3C,MAAMA,kCAAkC;IAC7CC,iBAAiB,CACfC,OAA+C,EAC/C,EAAEC,MAAM,CAAA,EAAEC,SAAS,CAAA,EAAoB,EAC9B;QACT,IAAIC,CAAAA,GAAAA,MAAe,AAAW,CAAA,gBAAX,CAACD,SAAS,CAAC,KAAK,QAAQ,IAAIF,OAAO,CAACI,MAAM,KAAK,wBAAwB,EAAE;YAC1F,OAAOC,CAAAA,GAAAA,MAAO,AAMZ,CAAA,QANY,CAAwCJ,MAAM,EAAE;gBAC5DK,EAAE,EAAEN,OAAO,CAACM,EAAE;gBACdC,MAAM,EAAE;oBACN,+DAA+D;oBAC/DA,MAAM,EAAE;wBAAEC,QAAQ,EAAER,OAAO,CAACS,MAAM,CAACD,QAAQ;qBAAE;iBAC9C;aACF,CAAC,CAAC;SACJ;QAED,OAAO,KAAK,CAAC;KACd;CACF;QAjBYV,kCAAkC,GAAlCA,kCAAkC"}
|
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
+
var _utils = require("./utils");
|
|
5
6
|
class VscodeRuntimeGetPropertiesHandler {
|
|
6
7
|
/** Keep track of `Runtime.getProperties` responses to intercept, by request id */ interceptGetProperties = new Set();
|
|
7
|
-
onDebuggerMessage(message, {
|
|
8
|
-
if (
|
|
8
|
+
onDebuggerMessage(message, { userAgent }) {
|
|
9
|
+
if ((0, _utils).getDebuggerType(userAgent) === "vscode" && message.method === "Runtime.getProperties") {
|
|
9
10
|
this.interceptGetProperties.add(message.id);
|
|
10
11
|
}
|
|
11
12
|
// Do not block propagation of this message
|
|
12
13
|
return false;
|
|
13
14
|
}
|
|
14
|
-
onDeviceMessage(message, {
|
|
15
|
-
if (
|
|
15
|
+
onDeviceMessage(message, { userAgent }) {
|
|
16
|
+
if ((0, _utils).getDebuggerType(userAgent) === "vscode" && "id" in message && this.interceptGetProperties.has(message.id)) {
|
|
16
17
|
this.interceptGetProperties.delete(message.id);
|
|
17
18
|
var _result;
|
|
18
19
|
for (const item of (_result = message.result.result) != null ? _result : []){
|
package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeGetProperties.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeGetProperties.ts"],"sourcesContent":["import Protocol from 'devtools-protocol';\n\nimport {\n CdpMessage,\n DebuggerMetadata,\n DebuggerRequest,\n DeviceResponse,\n InspectorHandler,\n} from './types';\nimport { getDebuggerType } from './utils';\n\n/**\n * Vscode doesn't seem to work nicely with missing `description` fields on `RemoteObject` instances.\n * It also tries to invoke `Runtime.callFunctionOn` on `Symbol` types, which crashes Hermes.\n * This handler tries to compensate for these two separate issues.\n *\n * @see https://github.com/facebook/hermes/issues/114\n * @see https://github.com/microsoft/vscode-js-debug/issues/1583\n */\nexport class VscodeRuntimeGetPropertiesHandler implements InspectorHandler {\n /** Keep track of `Runtime.getProperties` responses to intercept, by request id */\n interceptGetProperties = new Set<number>();\n\n onDebuggerMessage(\n message: DebuggerRequest<RuntimeGetProperties>,\n { userAgent }: DebuggerMetadata\n ): boolean {\n if (getDebuggerType(userAgent) === 'vscode' && message.method === 'Runtime.getProperties') {\n this.interceptGetProperties.add(message.id);\n }\n\n // Do not block propagation of this message\n return false;\n }\n\n onDeviceMessage(message: DeviceResponse<RuntimeGetProperties>, { userAgent }: DebuggerMetadata) {\n if (\n getDebuggerType(userAgent) === 'vscode' &&\n 'id' in message &&\n this.interceptGetProperties.has(message.id)\n ) {\n this.interceptGetProperties.delete(message.id);\n\n for (const item of message.result.result ?? []) {\n // Force-fully format the properties description to be an empty string\n if (item.value) {\n item.value.description = item.value.description ?? '';\n }\n\n // Avoid passing the `objectId` for symbol types.\n // When collapsing in vscode, it will fetch information about the symbol using the `objectId`.\n // The `Runtime.getProperties` request of the symbol hard-crashes Hermes.\n if (item.value?.type === 'symbol' && item.value.objectId) {\n delete item.value.objectId;\n }\n }\n }\n\n // Do not block propagation of this message\n return false;\n }\n}\n\n/** @see https://chromedevtools.github.io/devtools-protocol/v8/Runtime/#method-getProperties */\nexport type RuntimeGetProperties = CdpMessage<\n 'Runtime.getProperties',\n Protocol.Runtime.GetPropertiesRequest,\n Protocol.Runtime.GetPropertiesResponse\n>;\n"],"names":["VscodeRuntimeGetPropertiesHandler","interceptGetProperties","Set","onDebuggerMessage","message","userAgent","getDebuggerType","method","add","id","onDeviceMessage","has","delete","item","result","value","description","type","objectId"],"mappings":"AAAA;;;;AASgC,IAAA,MAAS,WAAT,SAAS,CAAA;AAUlC,MAAMA,iCAAiC;IAC5C,kFAAkF,CAClFC,sBAAsB,GAAG,IAAIC,GAAG,EAAU,CAAC;IAE3CC,iBAAiB,CACfC,OAA8C,EAC9C,EAAEC,SAAS,CAAA,EAAoB,EACtB;QACT,IAAIC,CAAAA,GAAAA,MAAe,AAAW,CAAA,gBAAX,CAACD,SAAS,CAAC,KAAK,QAAQ,IAAID,OAAO,CAACG,MAAM,KAAK,uBAAuB,EAAE;YACzF,IAAI,CAACN,sBAAsB,CAACO,GAAG,CAACJ,OAAO,CAACK,EAAE,CAAC,CAAC;SAC7C;QAED,2CAA2C;QAC3C,OAAO,KAAK,CAAC;KACd;IAEDC,eAAe,CAACN,OAA6C,EAAE,EAAEC,SAAS,CAAA,EAAoB,EAAE;QAC9F,IACEC,CAAAA,GAAAA,MAAe,AAAW,CAAA,gBAAX,CAACD,SAAS,CAAC,KAAK,QAAQ,IACvC,IAAI,IAAID,OAAO,IACf,IAAI,CAACH,sBAAsB,CAACU,GAAG,CAACP,OAAO,CAACK,EAAE,CAAC,EAC3C;YACA,IAAI,CAACR,sBAAsB,CAACW,MAAM,CAACR,OAAO,CAACK,EAAE,CAAC,CAAC;gBAE5BL,OAAqB;YAAxC,KAAK,MAAMS,IAAI,IAAIT,CAAAA,OAAqB,GAArBA,OAAO,CAACU,MAAM,CAACA,MAAM,YAArBV,OAAqB,GAAI,EAAE,CAAE;oBAS1CS,GAAU;gBARd,sEAAsE;gBACtE,IAAIA,IAAI,CAACE,KAAK,EAAE;wBACWF,YAAsB;oBAA/CA,IAAI,CAACE,KAAK,CAACC,WAAW,GAAGH,CAAAA,YAAsB,GAAtBA,IAAI,CAACE,KAAK,CAACC,WAAW,YAAtBH,YAAsB,GAAI,EAAE,CAAC;iBACvD;gBAED,iDAAiD;gBACjD,8FAA8F;gBAC9F,yEAAyE;gBACzE,IAAIA,CAAAA,CAAAA,GAAU,GAAVA,IAAI,CAACE,KAAK,SAAM,GAAhBF,KAAAA,CAAgB,GAAhBA,GAAU,CAAEI,IAAI,CAAA,KAAK,QAAQ,IAAIJ,IAAI,CAACE,KAAK,CAACG,QAAQ,EAAE;oBACxD,OAAOL,IAAI,CAACE,KAAK,CAACG,QAAQ,CAAC;iBAC5B;aACF;SACF;QAED,2CAA2C;QAC3C,OAAO,KAAK,CAAC;KACd;CACF;QA1CYlB,iCAAiC,GAAjCA,iCAAiC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/start/server/metro/debugging/inspectorHandlers/types.ts"],"sourcesContent":["import type { unstable_Device } from '@react-native/dev-middleware';\n\nexport type DebuggerMetadata = NonNullable<unstable_Device['_debuggerConnection']>;\n\nexport interface InspectorHandler {\n /**\n * Intercept a message coming from the device, modify or respond to it through `this._sendMessageToDevice`.\n * Return `true` if the message was handled, this will stop the message propagation.\n */\n onDeviceMessage?(message: DeviceRequest | DeviceResponse, info: DebuggerMetadata): boolean;\n\n /**\n * Intercept a message coming from the debugger, modify or respond to it through `socket.send`.\n * Return `true` if the message was handled, this will stop the message propagation.\n */\n onDebuggerMessage?(message: DebuggerRequest, info: DebuggerMetadata): boolean;\n}\n\n/**\n * The outline of a basic Chrome DevTools Protocol request, either from device or debugger.\n * Both the request and response parameters could be optional, use `never` to enforce these fields.\n */\nexport type CdpMessage<\n Method extends string = string,\n Request extends object = object,\n Response extends object = object,\n> = {\n id: number;\n method: Method;\n params: Request;\n result: Response;\n};\n\nexport type DeviceRequest<M extends CdpMessage = CdpMessage> = Pick<M, 'method' | 'params'>;\nexport type DeviceResponse<M extends CdpMessage = CdpMessage> = Pick<M, 'id' | 'result'>;\n\nexport type DebuggerRequest<M extends CdpMessage = CdpMessage> = Pick<\n M,\n 'id' | 'method' | 'params'\n>;\nexport type DebuggerResponse<M extends CdpMessage = CdpMessage> = Pick<M, 'result'>;\n"],"names":[],"mappings":"AAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.respond = respond;
|
|
6
|
+
exports.getDebuggerType = getDebuggerType;
|
|
7
|
+
function respond(socket, message) {
|
|
8
|
+
socket.send(JSON.stringify(message));
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
// Patterns to test against user agents
|
|
12
|
+
const CHROME_USER_AGENT = /chrome/i;
|
|
13
|
+
const VSCODE_USER_AGENT = /vscode/i;
|
|
14
|
+
function getDebuggerType(userAgent) {
|
|
15
|
+
if (userAgent && CHROME_USER_AGENT.test(userAgent)) return "chrome";
|
|
16
|
+
if (userAgent && VSCODE_USER_AGENT.test(userAgent)) return "vscode";
|
|
17
|
+
return "unknown";
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/start/server/metro/debugging/inspectorHandlers/utils.ts"],"sourcesContent":["import type WS from 'ws';\n\nimport { DebuggerResponse, DeviceResponse } from './types';\n\n/**\n * Helper function to respond to a message from the debugger or device.\n * The return value is used to stop the message propagation, \"canceling\" further handling.\n *\n * @example ```\n * return respond<DeviceResponse<CDP>>(socket, { id: message.id, result: {} });\n * ```\n */\nexport function respond<T = DeviceResponse | DebuggerResponse>(socket: WS, message: T) {\n socket.send(JSON.stringify(message));\n return true;\n}\n\n/** Known compatible debuggers that require specific workarounds */\nexport type DebuggerType = 'chrome' | 'vscode' | 'unknown';\n\n// Patterns to test against user agents\nconst CHROME_USER_AGENT = /chrome/i;\nconst VSCODE_USER_AGENT = /vscode/i;\n\n/**\n * Determine the debugger type based on the known user agent.\n */\nexport function getDebuggerType(userAgent?: string | null): DebuggerType {\n if (userAgent && CHROME_USER_AGENT.test(userAgent)) return 'chrome';\n if (userAgent && VSCODE_USER_AGENT.test(userAgent)) return 'vscode';\n return 'unknown';\n}\n"],"names":["respond","getDebuggerType","socket","message","send","JSON","stringify","CHROME_USER_AGENT","VSCODE_USER_AGENT","userAgent","test"],"mappings":"AAAA;;;;QAYgBA,OAAO,GAAPA,OAAO;QAePC,eAAe,GAAfA,eAAe;AAfxB,SAASD,OAAO,CAAwCE,MAAU,EAAEC,OAAU,EAAE;IACrFD,MAAM,CAACE,IAAI,CAACC,IAAI,CAACC,SAAS,CAACH,OAAO,CAAC,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC;CACb;AAKD,uCAAuC;AACvC,MAAMI,iBAAiB,YAAY,AAAC;AACpC,MAAMC,iBAAiB,YAAY,AAAC;AAK7B,SAASP,eAAe,CAACQ,SAAyB,EAAgB;IACvE,IAAIA,SAAS,IAAIF,iBAAiB,CAACG,IAAI,CAACD,SAAS,CAAC,EAAE,OAAO,QAAQ,CAAC;IACpE,IAAIA,SAAS,IAAID,iBAAiB,CAACE,IAAI,CAACD,SAAS,CAAC,EAAE,OAAO,QAAQ,CAAC;IACpE,OAAO,SAAS,CAAC;CAClB"}
|
|
@@ -3,12 +3,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
5
|
exports.getNodeExternalModuleId = getNodeExternalModuleId;
|
|
6
|
+
exports.setupShimFiles = setupShimFiles;
|
|
6
7
|
exports.setupNodeExternals = setupNodeExternals;
|
|
7
8
|
exports.isNodeExternal = isNodeExternal;
|
|
8
|
-
exports.METRO_EXTERNALS_FOLDER = exports.EXTERNAL_REQUIRE_NATIVE_POLYFILL = exports.EXTERNAL_REQUIRE_POLYFILL = exports.NODE_STDLIB_MODULES = void 0;
|
|
9
|
+
exports.METRO_SHIMS_FOLDER = exports.METRO_EXTERNALS_FOLDER = exports.EXTERNAL_REQUIRE_NATIVE_POLYFILL = exports.EXTERNAL_REQUIRE_POLYFILL = exports.NODE_STDLIB_MODULES = void 0;
|
|
9
10
|
var _fs = _interopRequireDefault(require("fs"));
|
|
10
11
|
var _module = require("module");
|
|
11
12
|
var _path = _interopRequireDefault(require("path"));
|
|
13
|
+
var _dir = require("../../../utils/dir");
|
|
12
14
|
function _interopRequireDefault(obj) {
|
|
13
15
|
return obj && obj.__esModule ? obj : {
|
|
14
16
|
default: obj
|
|
@@ -29,9 +31,22 @@ const EXTERNAL_REQUIRE_NATIVE_POLYFILL = ".expo/metro/polyfill.native.js";
|
|
|
29
31
|
exports.EXTERNAL_REQUIRE_NATIVE_POLYFILL = EXTERNAL_REQUIRE_NATIVE_POLYFILL;
|
|
30
32
|
const METRO_EXTERNALS_FOLDER = ".expo/metro/externals";
|
|
31
33
|
exports.METRO_EXTERNALS_FOLDER = METRO_EXTERNALS_FOLDER;
|
|
34
|
+
const METRO_SHIMS_FOLDER = ".expo/metro/shims";
|
|
35
|
+
exports.METRO_SHIMS_FOLDER = METRO_SHIMS_FOLDER;
|
|
32
36
|
function getNodeExternalModuleId(fromModule, moduleId) {
|
|
33
37
|
return _path.default.relative(_path.default.dirname(fromModule), _path.default.join(METRO_EXTERNALS_FOLDER, moduleId, "index.js"));
|
|
34
38
|
}
|
|
39
|
+
async function setupShimFiles(projectRoot) {
|
|
40
|
+
await _fs.default.promises.mkdir(_path.default.join(projectRoot, METRO_SHIMS_FOLDER), {
|
|
41
|
+
recursive: true
|
|
42
|
+
});
|
|
43
|
+
// Copy the shims to the project folder in case we're running in a monorepo.
|
|
44
|
+
const shimsFolder = _path.default.join(require.resolve("@expo/cli/package.json"), "../static/shims");
|
|
45
|
+
await (0, _dir).copyAsync(shimsFolder, _path.default.join(projectRoot, METRO_SHIMS_FOLDER), {
|
|
46
|
+
overwrite: false,
|
|
47
|
+
recursive: true
|
|
48
|
+
});
|
|
49
|
+
}
|
|
35
50
|
async function setupNodeExternals(projectRoot) {
|
|
36
51
|
await tapExternalRequirePolyfill(projectRoot);
|
|
37
52
|
await tapNodeShims(projectRoot);
|
|
@@ -40,8 +55,15 @@ async function tapExternalRequirePolyfill(projectRoot) {
|
|
|
40
55
|
await _fs.default.promises.mkdir(_path.default.join(projectRoot, _path.default.dirname(EXTERNAL_REQUIRE_POLYFILL)), {
|
|
41
56
|
recursive: true
|
|
42
57
|
});
|
|
43
|
-
await
|
|
44
|
-
await
|
|
58
|
+
await writeIfDifferentAsync(_path.default.join(projectRoot, EXTERNAL_REQUIRE_POLYFILL), 'global.$$require_external = typeof window === "undefined" ? require : () => null;');
|
|
59
|
+
await writeIfDifferentAsync(_path.default.join(projectRoot, EXTERNAL_REQUIRE_NATIVE_POLYFILL), "global.$$require_external = (moduleId) => {throw new Error(`Node.js standard library module ${moduleId} is not available in this JavaScript environment`);}");
|
|
60
|
+
}
|
|
61
|
+
async function writeIfDifferentAsync(filePath, contents) {
|
|
62
|
+
if (_fs.default.existsSync(filePath)) {
|
|
63
|
+
const current = await _fs.default.promises.readFile(filePath, "utf8");
|
|
64
|
+
if (current === contents) return;
|
|
65
|
+
}
|
|
66
|
+
await _fs.default.promises.writeFile(filePath, contents);
|
|
45
67
|
}
|
|
46
68
|
function isNodeExternal(moduleName) {
|
|
47
69
|
const moduleId = moduleName.replace(/^node:/, "");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/metro/externals.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport fs from 'fs';\nimport { builtinModules } from 'module';\nimport path from 'path';\n\n// A list of the Node.js standard library modules that are currently\n// available,\nexport const NODE_STDLIB_MODULES: string[] = [\n 'fs/promises',\n ...(\n builtinModules ||\n // @ts-expect-error\n (process.binding ? Object.keys(process.binding('natives')) : []) ||\n []\n ).filter((x) => !/^_|^(internal|v8|node-inspect)\\/|\\//.test(x) && !['sys'].includes(x)),\n].sort();\n\nexport const EXTERNAL_REQUIRE_POLYFILL = '.expo/metro/polyfill.js';\nexport const EXTERNAL_REQUIRE_NATIVE_POLYFILL = '.expo/metro/polyfill.native.js';\nexport const METRO_EXTERNALS_FOLDER = '.expo/metro/externals';\n\nexport function getNodeExternalModuleId(fromModule: string, moduleId: string) {\n return path.relative(\n path.dirname(fromModule),\n path.join(METRO_EXTERNALS_FOLDER, moduleId, 'index.js')\n );\n}\n\nexport async function setupNodeExternals(projectRoot: string) {\n await tapExternalRequirePolyfill(projectRoot);\n await tapNodeShims(projectRoot);\n}\n\nasync function tapExternalRequirePolyfill(projectRoot: string) {\n await fs.promises.mkdir(path.join(projectRoot, path.dirname(EXTERNAL_REQUIRE_POLYFILL)), {\n recursive: true,\n });\n await
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/metro/externals.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport fs from 'fs';\nimport { builtinModules } from 'module';\nimport path from 'path';\n\nimport { copyAsync } from '../../../utils/dir';\n\n// A list of the Node.js standard library modules that are currently\n// available,\nexport const NODE_STDLIB_MODULES: string[] = [\n 'fs/promises',\n ...(\n builtinModules ||\n // @ts-expect-error\n (process.binding ? Object.keys(process.binding('natives')) : []) ||\n []\n ).filter((x) => !/^_|^(internal|v8|node-inspect)\\/|\\//.test(x) && !['sys'].includes(x)),\n].sort();\n\nexport const EXTERNAL_REQUIRE_POLYFILL = '.expo/metro/polyfill.js';\nexport const EXTERNAL_REQUIRE_NATIVE_POLYFILL = '.expo/metro/polyfill.native.js';\nexport const METRO_EXTERNALS_FOLDER = '.expo/metro/externals';\nexport const METRO_SHIMS_FOLDER = '.expo/metro/shims';\n\nexport function getNodeExternalModuleId(fromModule: string, moduleId: string) {\n return path.relative(\n path.dirname(fromModule),\n path.join(METRO_EXTERNALS_FOLDER, moduleId, 'index.js')\n );\n}\n\nexport async function setupShimFiles(projectRoot: string) {\n await fs.promises.mkdir(path.join(projectRoot, METRO_SHIMS_FOLDER), { recursive: true });\n // Copy the shims to the project folder in case we're running in a monorepo.\n const shimsFolder = path.join(require.resolve('@expo/cli/package.json'), '../static/shims');\n\n await copyAsync(shimsFolder, path.join(projectRoot, METRO_SHIMS_FOLDER), {\n overwrite: false,\n recursive: true,\n });\n}\n\nexport async function setupNodeExternals(projectRoot: string) {\n await tapExternalRequirePolyfill(projectRoot);\n await tapNodeShims(projectRoot);\n}\n\nasync function tapExternalRequirePolyfill(projectRoot: string) {\n await fs.promises.mkdir(path.join(projectRoot, path.dirname(EXTERNAL_REQUIRE_POLYFILL)), {\n recursive: true,\n });\n await writeIfDifferentAsync(\n path.join(projectRoot, EXTERNAL_REQUIRE_POLYFILL),\n 'global.$$require_external = typeof window === \"undefined\" ? require : () => null;'\n );\n await writeIfDifferentAsync(\n path.join(projectRoot, EXTERNAL_REQUIRE_NATIVE_POLYFILL),\n 'global.$$require_external = (moduleId) => {throw new Error(`Node.js standard library module ${moduleId} is not available in this JavaScript environment`);}'\n );\n}\n\nasync function writeIfDifferentAsync(filePath: string, contents: string): Promise<void> {\n if (fs.existsSync(filePath)) {\n const current = await fs.promises.readFile(filePath, 'utf8');\n if (current === contents) return;\n }\n\n await fs.promises.writeFile(filePath, contents);\n}\n\nexport function isNodeExternal(moduleName: string): string | null {\n const moduleId = moduleName.replace(/^node:/, '');\n if (NODE_STDLIB_MODULES.includes(moduleId)) {\n return moduleId;\n }\n return null;\n}\n\nfunction tapNodeShimContents(moduleId: string): string {\n return `module.exports = $$require_external('node:${moduleId}');`;\n}\n\n// Ensure Node.js shims which require using `$$require_external` are available inside the project.\nasync function tapNodeShims(projectRoot: string) {\n const externals: Record<string, string> = {};\n for (const moduleId of NODE_STDLIB_MODULES) {\n const shimDir = path.join(projectRoot, METRO_EXTERNALS_FOLDER, moduleId);\n const shimPath = path.join(shimDir, 'index.js');\n externals[moduleId] = shimPath;\n\n if (!fs.existsSync(shimPath)) {\n await fs.promises.mkdir(shimDir, { recursive: true });\n await fs.promises.writeFile(shimPath, tapNodeShimContents(moduleId));\n }\n }\n}\n"],"names":["getNodeExternalModuleId","setupShimFiles","setupNodeExternals","isNodeExternal","NODE_STDLIB_MODULES","builtinModules","process","binding","Object","keys","filter","x","test","includes","sort","EXTERNAL_REQUIRE_POLYFILL","EXTERNAL_REQUIRE_NATIVE_POLYFILL","METRO_EXTERNALS_FOLDER","METRO_SHIMS_FOLDER","fromModule","moduleId","path","relative","dirname","join","projectRoot","fs","promises","mkdir","recursive","shimsFolder","require","resolve","copyAsync","overwrite","tapExternalRequirePolyfill","tapNodeShims","writeIfDifferentAsync","filePath","contents","existsSync","current","readFile","writeFile","moduleName","replace","tapNodeShimContents","externals","shimDir","shimPath"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/metro/getCssModulesFromBundler.ts"],"sourcesContent":["import { MetroConfig } from '@expo/metro-config';\nimport crypto from 'crypto';\nimport type { Module } from 'metro';\nimport { getJsOutput, isJsModule } from 'metro/src/DeltaBundler/Serializers/helpers/js';\nimport type { ReadOnlyDependencies } from 'metro/src/DeltaBundler/types';\nimport type IncrementalBundler from 'metro/src/IncrementalBundler';\nimport splitBundleOptions from 'metro/src/lib/splitBundleOptions';\nimport path from 'path';\n\
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/metro/getCssModulesFromBundler.ts"],"sourcesContent":["import { MetroConfig } from '@expo/metro-config';\nimport crypto from 'crypto';\nimport type { Module } from 'metro';\nimport { getJsOutput, isJsModule } from 'metro/src/DeltaBundler/Serializers/helpers/js';\nimport type { ReadOnlyDependencies } from 'metro/src/DeltaBundler/types';\nimport type IncrementalBundler from 'metro/src/IncrementalBundler';\nimport splitBundleOptions from 'metro/src/lib/splitBundleOptions';\nimport path from 'path';\n\ntype Options = {\n processModuleFilter: (modules: Module) => boolean;\n assetPlugins: readonly string[];\n platform?: string | null;\n projectRoot: string;\n publicPath: string;\n};\n\ntype MetroModuleCSSMetadata = {\n code: string;\n lineCount: number;\n map: any[];\n};\n\nexport type CSSAsset = {\n // 'styles.css'\n originFilename: string;\n // '_expo/static/css/bc6aa0a69dcebf8e8cac1faa76705756.css'\n filename: string;\n // '\\ndiv {\\n background: cyan;\\n}\\n\\n'\n source: string;\n};\n\n// s = static\nconst STATIC_EXPORT_DIRECTORY = '_expo/static/css';\n\n/** @returns the static CSS assets used in a given bundle. CSS assets are only enabled if the `@expo/metro-config` `transformerPath` is used. */\nexport async function getCssModulesFromBundler(\n config: MetroConfig,\n incrementalBundler: IncrementalBundler,\n options: any\n): Promise<CSSAsset[]> {\n // Static CSS is a web-only feature.\n if (options.platform !== 'web') {\n return [];\n }\n\n const { entryFile, onProgress, resolverOptions, transformOptions } = splitBundleOptions(options);\n\n const dependencies = await incrementalBundler.getDependencies(\n [entryFile],\n transformOptions,\n resolverOptions,\n { onProgress, shallow: false }\n );\n\n return getCssModules(dependencies, {\n processModuleFilter: config.serializer.processModuleFilter,\n assetPlugins: config.transformer.assetPlugins,\n platform: transformOptions.platform,\n projectRoot: config.server.unstable_serverRoot ?? config.projectRoot,\n publicPath: config.transformer.publicPath,\n });\n}\n\nfunction hashString(str: string) {\n return crypto.createHash('md5').update(str).digest('hex');\n}\n\nfunction getCssModules(\n dependencies: ReadOnlyDependencies,\n { processModuleFilter, projectRoot }: Options\n) {\n const promises = [];\n\n for (const module of dependencies.values()) {\n if (\n isJsModule(module) &&\n processModuleFilter(module) &&\n getJsOutput(module).type === 'js/module' &&\n path.relative(projectRoot, module.path) !== 'package.json'\n ) {\n const cssMetadata = getCssMetadata(module);\n if (cssMetadata) {\n const contents = cssMetadata.code;\n const filename = path.join(\n // Consistent location\n STATIC_EXPORT_DIRECTORY,\n // Hashed file contents + name for caching\n getFileName(module.path) + '-' + hashString(module.path + contents) + '.css'\n );\n promises.push({\n originFilename: path.relative(projectRoot, module.path),\n filename,\n source: contents,\n });\n }\n }\n }\n\n return promises;\n}\n\nfunction getCssMetadata(module: Module): MetroModuleCSSMetadata | null {\n const data = module.output[0]?.data;\n if (data && typeof data === 'object' && 'css' in data) {\n if (typeof data.css !== 'object' || !('code' in (data as any).css)) {\n throw new Error(\n `Unexpected CSS metadata in Metro module (${module.path}): ${JSON.stringify(data.css)}`\n );\n }\n return data.css as MetroModuleCSSMetadata;\n }\n return null;\n}\n\nexport function getFileName(module: string) {\n return path.basename(module).replace(/\\.[^.]+$/, '');\n}\n"],"names":["getCssModulesFromBundler","getFileName","STATIC_EXPORT_DIRECTORY","config","incrementalBundler","options","platform","entryFile","onProgress","resolverOptions","transformOptions","splitBundleOptions","dependencies","getDependencies","shallow","getCssModules","processModuleFilter","serializer","assetPlugins","transformer","projectRoot","server","unstable_serverRoot","publicPath","hashString","str","crypto","createHash","update","digest","promises","module","values","isJsModule","getJsOutput","type","path","relative","cssMetadata","getCssMetadata","contents","code","filename","join","push","originFilename","source","data","output","css","Error","JSON","stringify","basename","replace"],"mappings":"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"}
|
|
@@ -6,13 +6,13 @@ exports.loadMetroConfigAsync = loadMetroConfigAsync;
|
|
|
6
6
|
exports.instantiateMetroAsync = instantiateMetroAsync;
|
|
7
7
|
exports.isWatchEnabled = isWatchEnabled;
|
|
8
8
|
var _config = require("@expo/config");
|
|
9
|
+
var ExpoMetroConfig = _interopRequireWildcard(require("@expo/metro-config"));
|
|
9
10
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
10
11
|
var _metroCore = require("metro-core");
|
|
11
12
|
var _semver = _interopRequireDefault(require("semver"));
|
|
12
13
|
var _url = require("url");
|
|
13
14
|
var _metroTerminalReporter = require("./MetroTerminalReporter");
|
|
14
|
-
var
|
|
15
|
-
var _router = require("./router");
|
|
15
|
+
var _createDebugMiddleware = require("./debugging/createDebugMiddleware");
|
|
16
16
|
var _runServerFork = require("./runServer-fork");
|
|
17
17
|
var _withMetroMultiPlatform = require("./withMetroMultiPlatform");
|
|
18
18
|
var _log = require("../../../log");
|
|
@@ -21,7 +21,6 @@ var _metroDebuggerMiddleware = require("../../../utils/analytics/metroDebuggerMi
|
|
|
21
21
|
var _rudderstackClient = require("../../../utils/analytics/rudderstackClient");
|
|
22
22
|
var _env = require("../../../utils/env");
|
|
23
23
|
var _manifestMiddleware = require("../middleware/ManifestMiddleware");
|
|
24
|
-
var _createJsInspectorMiddleware = _interopRequireDefault(require("../middleware/inspector/createJsInspectorMiddleware"));
|
|
25
24
|
var _mutations = require("../middleware/mutations");
|
|
26
25
|
var _remoteDevtoolsCorsMiddleware = require("../middleware/remoteDevtoolsCorsMiddleware");
|
|
27
26
|
var _remoteDevtoolsSecurityHeadersMiddleware = require("../middleware/remoteDevtoolsSecurityHeadersMiddleware");
|
|
@@ -32,6 +31,27 @@ function _interopRequireDefault(obj) {
|
|
|
32
31
|
default: obj
|
|
33
32
|
};
|
|
34
33
|
}
|
|
34
|
+
function _interopRequireWildcard(obj) {
|
|
35
|
+
if (obj && obj.__esModule) {
|
|
36
|
+
return obj;
|
|
37
|
+
} else {
|
|
38
|
+
var newObj = {};
|
|
39
|
+
if (obj != null) {
|
|
40
|
+
for(var key in obj){
|
|
41
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
42
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
43
|
+
if (desc.get || desc.set) {
|
|
44
|
+
Object.defineProperty(newObj, key, desc);
|
|
45
|
+
} else {
|
|
46
|
+
newObj[key] = obj[key];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
newObj.default = obj;
|
|
52
|
+
return newObj;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
35
55
|
function gteSdkVersion(exp, sdkVersion) {
|
|
36
56
|
if (!exp.sdkVersion) {
|
|
37
57
|
return false;
|
|
@@ -61,7 +81,6 @@ async function loadMetroConfigAsync(projectRoot, options, { exp =(0, _config).ge
|
|
|
61
81
|
}
|
|
62
82
|
}
|
|
63
83
|
};
|
|
64
|
-
const ExpoMetroConfig = (0, _resolveFromProject).importExpoMetroConfig(projectRoot);
|
|
65
84
|
let config = await ExpoMetroConfig.loadAsync(projectRoot, {
|
|
66
85
|
reporter,
|
|
67
86
|
...options
|
|
@@ -73,31 +92,33 @@ async function loadMetroConfigAsync(projectRoot, options, { exp =(0, _config).ge
|
|
|
73
92
|
var ref3;
|
|
74
93
|
// This token will be used in the asset plugin to ensure the path is correct for writing locally.
|
|
75
94
|
// @ts-expect-error: typed as readonly.
|
|
76
|
-
config.transformer.publicPath = `/assets?export_path=${((ref3 = (ref2 = exp.experiments) == null ? void 0 : ref2.
|
|
95
|
+
config.transformer.publicPath = `/assets?export_path=${((ref3 = (ref2 = exp.experiments) == null ? void 0 : ref2.baseUrl) != null ? ref3 : "") + "/assets"}`;
|
|
77
96
|
} else {
|
|
78
97
|
// @ts-expect-error: typed as readonly
|
|
79
98
|
config.transformer.publicPath = "/assets/?unstable_path=.";
|
|
80
99
|
}
|
|
81
100
|
} else {
|
|
82
101
|
var ref4;
|
|
83
|
-
if (isExporting && ((ref4 = exp.experiments) == null ? void 0 : ref4.
|
|
102
|
+
if (isExporting && ((ref4 = exp.experiments) == null ? void 0 : ref4.baseUrl)) {
|
|
84
103
|
var ref5;
|
|
85
104
|
// This token will be used in the asset plugin to ensure the path is correct for writing locally.
|
|
86
105
|
// @ts-expect-error: typed as readonly.
|
|
87
|
-
config.transformer.publicPath = (ref5 = exp.experiments) == null ? void 0 : ref5.
|
|
106
|
+
config.transformer.publicPath = (ref5 = exp.experiments) == null ? void 0 : ref5.baseUrl;
|
|
88
107
|
}
|
|
89
108
|
}
|
|
90
109
|
const platformBundlers = (0, _platformBundlers).getPlatformBundlers(exp);
|
|
91
110
|
var ref6, ref7;
|
|
92
111
|
config = await (0, _withMetroMultiPlatform).withMetroMultiPlatformAsync(projectRoot, {
|
|
93
|
-
routerDirectory: (0, _router).getRouterDirectoryModuleIdWithManifest(projectRoot, exp),
|
|
94
112
|
config,
|
|
95
113
|
platformBundlers,
|
|
96
114
|
isTsconfigPathsEnabled: (ref6 = (ref = exp.experiments) == null ? void 0 : ref.tsconfigPaths) != null ? ref6 : true,
|
|
97
115
|
webOutput: (ref7 = (ref1 = exp.web) == null ? void 0 : ref1.output) != null ? ref7 : "single",
|
|
98
|
-
isFastResolverEnabled: _env.env.EXPO_USE_FAST_RESOLVER
|
|
116
|
+
isFastResolverEnabled: _env.env.EXPO_USE_FAST_RESOLVER,
|
|
117
|
+
isExporting
|
|
99
118
|
});
|
|
100
|
-
(
|
|
119
|
+
if (process.env.NODE_ENV !== "test") {
|
|
120
|
+
(0, _rudderstackClient).logEventAsync("metro config", (0, _getMetroProperties).getMetroProperties(projectRoot, exp, config));
|
|
121
|
+
}
|
|
101
122
|
return {
|
|
102
123
|
config,
|
|
103
124
|
setEventReporter: (logger)=>reportEvent = logger
|
|
@@ -115,7 +136,7 @@ async function instantiateMetroAsync(metroBundler, options, { isExporting }) {
|
|
|
115
136
|
exp,
|
|
116
137
|
isExporting
|
|
117
138
|
});
|
|
118
|
-
const { createDevServerMiddleware , securityHeadersMiddleware } = (
|
|
139
|
+
const { createDevServerMiddleware , securityHeadersMiddleware } = require("@react-native-community/cli-server-api");
|
|
119
140
|
const { middleware , messageSocketEndpoint , eventsSocketEndpoint , websocketEndpoints } = createDevServerMiddleware({
|
|
120
141
|
port: metroConfig.server.port,
|
|
121
142
|
watchFolders: metroConfig.watchFolders
|
|
@@ -125,7 +146,6 @@ async function instantiateMetroAsync(metroBundler, options, { isExporting }) {
|
|
|
125
146
|
(0, _mutations).replaceMiddlewareWith(middleware, securityHeadersMiddleware, _remoteDevtoolsSecurityHeadersMiddleware.remoteDevtoolsSecurityHeadersMiddleware);
|
|
126
147
|
middleware.use(_remoteDevtoolsCorsMiddleware.remoteDevtoolsCorsMiddleware);
|
|
127
148
|
(0, _mutations).prependMiddleware(middleware, _suppressErrorMiddleware.suppressRemoteDebuggingErrorMiddleware);
|
|
128
|
-
middleware.use("/inspector", (0, _createJsInspectorMiddleware).default());
|
|
129
149
|
// TODO: We can probably drop this now.
|
|
130
150
|
const customEnhanceMiddleware = metroConfig.server.enhanceMiddleware;
|
|
131
151
|
// @ts-expect-error: can't mutate readonly config
|
|
@@ -136,11 +156,16 @@ async function instantiateMetroAsync(metroBundler, options, { isExporting }) {
|
|
|
136
156
|
return middleware.use(metroMiddleware);
|
|
137
157
|
};
|
|
138
158
|
middleware.use((0, _metroDebuggerMiddleware).createDebuggerTelemetryMiddleware(projectRoot, exp));
|
|
159
|
+
// Initialize all React Native debug features
|
|
160
|
+
const { debugMiddleware , debugWebsocketEndpoints } = (0, _createDebugMiddleware).createDebugMiddleware(metroBundler);
|
|
161
|
+
(0, _mutations).prependMiddleware(middleware, debugMiddleware);
|
|
139
162
|
const { server: server1 , metro } = await (0, _runServerFork).runServer(metroBundler, metroConfig, {
|
|
140
|
-
hmrEnabled: true,
|
|
141
163
|
// @ts-expect-error: Inconsistent `websocketEndpoints` type between metro and @react-native-community/cli-server-api
|
|
142
|
-
websocketEndpoints
|
|
143
|
-
|
|
164
|
+
websocketEndpoints: {
|
|
165
|
+
...websocketEndpoints,
|
|
166
|
+
...debugWebsocketEndpoints
|
|
167
|
+
},
|
|
168
|
+
watch: !isExporting && isWatchEnabled()
|
|
144
169
|
});
|
|
145
170
|
(0, _mutations).prependMiddleware(middleware, (req, res, next)=>{
|
|
146
171
|
// If the URL is a Metro asset request, then we need to skip all other middleware to prevent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/metro/instantiateMetro.ts"],"sourcesContent":["import { ExpoConfig, getConfig } from '@expo/config';\nimport type { LoadOptions } from '@expo/metro-config';\nimport chalk from 'chalk';\nimport { Server as ConnectServer } from 'connect';\nimport http from 'http';\nimport type Metro from 'metro';\nimport { Terminal } from 'metro-core';\nimport semver from 'semver';\nimport { URL } from 'url';\n\nimport { MetroBundlerDevServer } from './MetroBundlerDevServer';\nimport { MetroTerminalReporter } from './MetroTerminalReporter';\nimport { importCliServerApiFromProject, importExpoMetroConfig } from './resolveFromProject';\nimport { getRouterDirectoryModuleIdWithManifest } from './router';\nimport { runServer } from './runServer-fork';\nimport { withMetroMultiPlatformAsync } from './withMetroMultiPlatform';\nimport { MetroDevServerOptions } from '../../../export/fork-bundleAsync';\nimport { Log } from '../../../log';\nimport { getMetroProperties } from '../../../utils/analytics/getMetroProperties';\nimport { createDebuggerTelemetryMiddleware } from '../../../utils/analytics/metroDebuggerMiddleware';\nimport { logEventAsync } from '../../../utils/analytics/rudderstackClient';\nimport { env } from '../../../utils/env';\nimport { getMetroServerRoot } from '../middleware/ManifestMiddleware';\nimport createJsInspectorMiddleware from '../middleware/inspector/createJsInspectorMiddleware';\nimport { prependMiddleware, replaceMiddlewareWith } from '../middleware/mutations';\nimport { remoteDevtoolsCorsMiddleware } from '../middleware/remoteDevtoolsCorsMiddleware';\nimport { remoteDevtoolsSecurityHeadersMiddleware } from '../middleware/remoteDevtoolsSecurityHeadersMiddleware';\nimport { ServerNext, ServerRequest, ServerResponse } from '../middleware/server.types';\nimport { suppressRemoteDebuggingErrorMiddleware } from '../middleware/suppressErrorMiddleware';\nimport { getPlatformBundlers } from '../platformBundlers';\n\n// From expo/dev-server but with ability to use custom logger.\ntype MessageSocket = {\n broadcast: (method: string, params?: Record<string, any> | undefined) => void;\n};\n\nfunction gteSdkVersion(exp: Pick<ExpoConfig, 'sdkVersion'>, sdkVersion: string): boolean {\n if (!exp.sdkVersion) {\n return false;\n }\n\n if (exp.sdkVersion === 'UNVERSIONED') {\n return true;\n }\n\n try {\n return semver.gte(exp.sdkVersion, sdkVersion);\n } catch {\n throw new Error(`${exp.sdkVersion} is not a valid version. Must be in the form of x.y.z`);\n }\n}\n\nexport async function loadMetroConfigAsync(\n projectRoot: string,\n options: LoadOptions,\n {\n exp = getConfig(projectRoot, { skipSDKVersionRequirement: true }).exp,\n isExporting,\n }: { exp?: ExpoConfig; isExporting: boolean }\n) {\n let reportEvent: ((event: any) => void) | undefined;\n const serverRoot = getMetroServerRoot(projectRoot);\n\n const terminal = new Terminal(process.stdout);\n const terminalReporter = new MetroTerminalReporter(serverRoot, terminal);\n\n const reporter = {\n update(event: any) {\n terminalReporter.update(event);\n if (reportEvent) {\n reportEvent(event);\n }\n },\n };\n\n const ExpoMetroConfig = importExpoMetroConfig(projectRoot);\n let config = await ExpoMetroConfig.loadAsync(projectRoot, { reporter, ...options });\n\n if (\n // Requires SDK 50 for expo-assets hashAssetPlugin change.\n !exp.sdkVersion ||\n gteSdkVersion(exp, '50.0.0')\n ) {\n if (isExporting) {\n // This token will be used in the asset plugin to ensure the path is correct for writing locally.\n // @ts-expect-error: typed as readonly.\n config.transformer.publicPath = `/assets?export_path=${\n (exp.experiments?.basePath ?? '') + '/assets'\n }`;\n } else {\n // @ts-expect-error: typed as readonly\n config.transformer.publicPath = '/assets/?unstable_path=.';\n }\n } else {\n if (isExporting && exp.experiments?.basePath) {\n // This token will be used in the asset plugin to ensure the path is correct for writing locally.\n // @ts-expect-error: typed as readonly.\n config.transformer.publicPath = exp.experiments?.basePath;\n }\n }\n\n const platformBundlers = getPlatformBundlers(exp);\n\n config = await withMetroMultiPlatformAsync(projectRoot, {\n routerDirectory: getRouterDirectoryModuleIdWithManifest(projectRoot, exp),\n config,\n platformBundlers,\n isTsconfigPathsEnabled: exp.experiments?.tsconfigPaths ?? true,\n webOutput: exp.web?.output ?? 'single',\n isFastResolverEnabled: env.EXPO_USE_FAST_RESOLVER,\n });\n\n logEventAsync('metro config', getMetroProperties(projectRoot, exp, config));\n\n return {\n config,\n setEventReporter: (logger: (event: any) => void) => (reportEvent = logger),\n reporter: terminalReporter,\n };\n}\n\n/** The most generic possible setup for Metro bundler. */\nexport async function instantiateMetroAsync(\n metroBundler: MetroBundlerDevServer,\n options: Omit<MetroDevServerOptions, 'logger'>,\n { isExporting }: { isExporting: boolean }\n): Promise<{\n metro: Metro.Server;\n server: http.Server;\n middleware: any;\n messageSocket: MessageSocket;\n}> {\n const projectRoot = metroBundler.projectRoot;\n\n // TODO: When we bring expo/metro-config into the expo/expo repo, then we can upstream this.\n const { exp } = getConfig(projectRoot, {\n skipSDKVersionRequirement: true,\n });\n\n const { config: metroConfig, setEventReporter } = await loadMetroConfigAsync(\n projectRoot,\n options,\n { exp, isExporting }\n );\n\n const { createDevServerMiddleware, securityHeadersMiddleware } =\n importCliServerApiFromProject(projectRoot);\n\n const { middleware, messageSocketEndpoint, eventsSocketEndpoint, websocketEndpoints } =\n createDevServerMiddleware({\n port: metroConfig.server.port,\n watchFolders: metroConfig.watchFolders,\n });\n\n // securityHeadersMiddleware does not support cross-origin requests for remote devtools to get the sourcemap.\n // We replace with the enhanced version.\n replaceMiddlewareWith(\n middleware as ConnectServer,\n securityHeadersMiddleware,\n remoteDevtoolsSecurityHeadersMiddleware\n );\n\n middleware.use(remoteDevtoolsCorsMiddleware);\n\n prependMiddleware(middleware, suppressRemoteDebuggingErrorMiddleware);\n\n middleware.use('/inspector', createJsInspectorMiddleware());\n\n // TODO: We can probably drop this now.\n const customEnhanceMiddleware = metroConfig.server.enhanceMiddleware;\n // @ts-expect-error: can't mutate readonly config\n metroConfig.server.enhanceMiddleware = (metroMiddleware: any, server: Metro.Server) => {\n if (customEnhanceMiddleware) {\n metroMiddleware = customEnhanceMiddleware(metroMiddleware, server);\n }\n return middleware.use(metroMiddleware);\n };\n\n middleware.use(createDebuggerTelemetryMiddleware(projectRoot, exp));\n\n const { server, metro } = await runServer(metroBundler, metroConfig, {\n hmrEnabled: true,\n // @ts-expect-error: Inconsistent `websocketEndpoints` type between metro and @react-native-community/cli-server-api\n websocketEndpoints,\n watch: isWatchEnabled(),\n });\n\n prependMiddleware(middleware, (req: ServerRequest, res: ServerResponse, next: ServerNext) => {\n // If the URL is a Metro asset request, then we need to skip all other middleware to prevent\n // the community CLI's serve-static from hosting `/assets/index.html` in place of all assets if it exists.\n // /assets/?unstable_path=.\n if (req.url) {\n const url = new URL(req.url!, 'http://localhost:8000');\n if (url.pathname.match(/^\\/assets\\/?/) && url.searchParams.get('unstable_path') != null) {\n return metro.processRequest(req, res, next);\n }\n }\n return next();\n });\n\n setEventReporter(eventsSocketEndpoint.reportEvent);\n\n return {\n metro,\n server,\n middleware,\n messageSocket: messageSocketEndpoint,\n };\n}\n\n/**\n * Simplify and communicate if Metro is running without watching file updates,.\n * Exposed for testing.\n */\nexport function isWatchEnabled() {\n if (env.CI) {\n Log.log(\n chalk`Metro is running in CI mode, reloads are disabled. Remove {bold CI=true} to enable watch mode.`\n );\n }\n\n return !env.CI;\n}\n"],"names":["loadMetroConfigAsync","instantiateMetroAsync","isWatchEnabled","gteSdkVersion","exp","sdkVersion","semver","gte","Error","projectRoot","options","getConfig","skipSDKVersionRequirement","isExporting","reportEvent","serverRoot","getMetroServerRoot","terminal","Terminal","process","stdout","terminalReporter","MetroTerminalReporter","reporter","update","event","ExpoMetroConfig","importExpoMetroConfig","config","loadAsync","transformer","publicPath","experiments","basePath","platformBundlers","getPlatformBundlers","withMetroMultiPlatformAsync","routerDirectory","getRouterDirectoryModuleIdWithManifest","isTsconfigPathsEnabled","tsconfigPaths","webOutput","web","output","isFastResolverEnabled","env","EXPO_USE_FAST_RESOLVER","logEventAsync","getMetroProperties","setEventReporter","logger","metroBundler","metroConfig","createDevServerMiddleware","securityHeadersMiddleware","importCliServerApiFromProject","middleware","messageSocketEndpoint","eventsSocketEndpoint","websocketEndpoints","port","server","watchFolders","replaceMiddlewareWith","remoteDevtoolsSecurityHeadersMiddleware","use","remoteDevtoolsCorsMiddleware","prependMiddleware","suppressRemoteDebuggingErrorMiddleware","createJsInspectorMiddleware","customEnhanceMiddleware","enhanceMiddleware","metroMiddleware","createDebuggerTelemetryMiddleware","metro","runServer","hmrEnabled","watch","req","res","next","url","URL","pathname","match","searchParams","get","processRequest","messageSocket","CI","Log","log","chalk"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/metro/instantiateMetro.ts"],"sourcesContent":["import { ExpoConfig, getConfig } from '@expo/config';\nimport * as ExpoMetroConfig from '@expo/metro-config';\nimport type { LoadOptions } from '@expo/metro-config';\nimport chalk from 'chalk';\nimport { Server as ConnectServer } from 'connect';\nimport http from 'http';\nimport type Metro from 'metro';\nimport { Terminal } from 'metro-core';\nimport semver from 'semver';\nimport { URL } from 'url';\n\nimport { MetroBundlerDevServer } from './MetroBundlerDevServer';\nimport { MetroTerminalReporter } from './MetroTerminalReporter';\nimport { createDebugMiddleware } from './debugging/createDebugMiddleware';\nimport { runServer } from './runServer-fork';\nimport { withMetroMultiPlatformAsync } from './withMetroMultiPlatform';\nimport { MetroDevServerOptions } from '../../../export/fork-bundleAsync';\nimport { Log } from '../../../log';\nimport { getMetroProperties } from '../../../utils/analytics/getMetroProperties';\nimport { createDebuggerTelemetryMiddleware } from '../../../utils/analytics/metroDebuggerMiddleware';\nimport { logEventAsync } from '../../../utils/analytics/rudderstackClient';\nimport { env } from '../../../utils/env';\nimport { getMetroServerRoot } from '../middleware/ManifestMiddleware';\nimport { prependMiddleware, replaceMiddlewareWith } from '../middleware/mutations';\nimport { remoteDevtoolsCorsMiddleware } from '../middleware/remoteDevtoolsCorsMiddleware';\nimport { remoteDevtoolsSecurityHeadersMiddleware } from '../middleware/remoteDevtoolsSecurityHeadersMiddleware';\nimport { ServerNext, ServerRequest, ServerResponse } from '../middleware/server.types';\nimport { suppressRemoteDebuggingErrorMiddleware } from '../middleware/suppressErrorMiddleware';\nimport { getPlatformBundlers } from '../platformBundlers';\n\n// From expo/dev-server but with ability to use custom logger.\ntype MessageSocket = {\n broadcast: (method: string, params?: Record<string, any> | undefined) => void;\n};\n\nfunction gteSdkVersion(exp: Pick<ExpoConfig, 'sdkVersion'>, sdkVersion: string): boolean {\n if (!exp.sdkVersion) {\n return false;\n }\n\n if (exp.sdkVersion === 'UNVERSIONED') {\n return true;\n }\n\n try {\n return semver.gte(exp.sdkVersion, sdkVersion);\n } catch {\n throw new Error(`${exp.sdkVersion} is not a valid version. Must be in the form of x.y.z`);\n }\n}\n\nexport async function loadMetroConfigAsync(\n projectRoot: string,\n options: LoadOptions,\n {\n exp = getConfig(projectRoot, { skipSDKVersionRequirement: true }).exp,\n isExporting,\n }: { exp?: ExpoConfig; isExporting: boolean }\n) {\n let reportEvent: ((event: any) => void) | undefined;\n const serverRoot = getMetroServerRoot(projectRoot);\n\n const terminal = new Terminal(process.stdout);\n const terminalReporter = new MetroTerminalReporter(serverRoot, terminal);\n\n const reporter = {\n update(event: any) {\n terminalReporter.update(event);\n if (reportEvent) {\n reportEvent(event);\n }\n },\n };\n\n let config = await ExpoMetroConfig.loadAsync(projectRoot, { reporter, ...options });\n\n if (\n // Requires SDK 50 for expo-assets hashAssetPlugin change.\n !exp.sdkVersion ||\n gteSdkVersion(exp, '50.0.0')\n ) {\n if (isExporting) {\n // This token will be used in the asset plugin to ensure the path is correct for writing locally.\n // @ts-expect-error: typed as readonly.\n config.transformer.publicPath = `/assets?export_path=${\n (exp.experiments?.baseUrl ?? '') + '/assets'\n }`;\n } else {\n // @ts-expect-error: typed as readonly\n config.transformer.publicPath = '/assets/?unstable_path=.';\n }\n } else {\n if (isExporting && exp.experiments?.baseUrl) {\n // This token will be used in the asset plugin to ensure the path is correct for writing locally.\n // @ts-expect-error: typed as readonly.\n config.transformer.publicPath = exp.experiments?.baseUrl;\n }\n }\n\n const platformBundlers = getPlatformBundlers(exp);\n\n config = await withMetroMultiPlatformAsync(projectRoot, {\n config,\n platformBundlers,\n isTsconfigPathsEnabled: exp.experiments?.tsconfigPaths ?? true,\n webOutput: exp.web?.output ?? 'single',\n isFastResolverEnabled: env.EXPO_USE_FAST_RESOLVER,\n isExporting,\n });\n\n if (process.env.NODE_ENV !== 'test') {\n logEventAsync('metro config', getMetroProperties(projectRoot, exp, config));\n }\n\n return {\n config,\n setEventReporter: (logger: (event: any) => void) => (reportEvent = logger),\n reporter: terminalReporter,\n };\n}\n\n/** The most generic possible setup for Metro bundler. */\nexport async function instantiateMetroAsync(\n metroBundler: MetroBundlerDevServer,\n options: Omit<MetroDevServerOptions, 'logger'>,\n { isExporting }: { isExporting: boolean }\n): Promise<{\n metro: Metro.Server;\n server: http.Server;\n middleware: any;\n messageSocket: MessageSocket;\n}> {\n const projectRoot = metroBundler.projectRoot;\n\n // TODO: When we bring expo/metro-config into the expo/expo repo, then we can upstream this.\n const { exp } = getConfig(projectRoot, {\n skipSDKVersionRequirement: true,\n });\n\n const { config: metroConfig, setEventReporter } = await loadMetroConfigAsync(\n projectRoot,\n options,\n { exp, isExporting }\n );\n\n const { createDevServerMiddleware, securityHeadersMiddleware } =\n require('@react-native-community/cli-server-api') as typeof import('@react-native-community/cli-server-api');\n\n const { middleware, messageSocketEndpoint, eventsSocketEndpoint, websocketEndpoints } =\n createDevServerMiddleware({\n port: metroConfig.server.port,\n watchFolders: metroConfig.watchFolders,\n });\n\n // securityHeadersMiddleware does not support cross-origin requests for remote devtools to get the sourcemap.\n // We replace with the enhanced version.\n replaceMiddlewareWith(\n middleware as ConnectServer,\n securityHeadersMiddleware,\n remoteDevtoolsSecurityHeadersMiddleware\n );\n\n middleware.use(remoteDevtoolsCorsMiddleware);\n\n prependMiddleware(middleware, suppressRemoteDebuggingErrorMiddleware);\n\n // TODO: We can probably drop this now.\n const customEnhanceMiddleware = metroConfig.server.enhanceMiddleware;\n // @ts-expect-error: can't mutate readonly config\n metroConfig.server.enhanceMiddleware = (metroMiddleware: any, server: Metro.Server) => {\n if (customEnhanceMiddleware) {\n metroMiddleware = customEnhanceMiddleware(metroMiddleware, server);\n }\n return middleware.use(metroMiddleware);\n };\n\n middleware.use(createDebuggerTelemetryMiddleware(projectRoot, exp));\n\n // Initialize all React Native debug features\n const { debugMiddleware, debugWebsocketEndpoints } = createDebugMiddleware(metroBundler);\n prependMiddleware(middleware, debugMiddleware);\n\n const { server, metro } = await runServer(metroBundler, metroConfig, {\n // @ts-expect-error: Inconsistent `websocketEndpoints` type between metro and @react-native-community/cli-server-api\n websocketEndpoints: {\n ...websocketEndpoints,\n ...debugWebsocketEndpoints,\n },\n watch: !isExporting && isWatchEnabled(),\n });\n\n prependMiddleware(middleware, (req: ServerRequest, res: ServerResponse, next: ServerNext) => {\n // If the URL is a Metro asset request, then we need to skip all other middleware to prevent\n // the community CLI's serve-static from hosting `/assets/index.html` in place of all assets if it exists.\n // /assets/?unstable_path=.\n if (req.url) {\n const url = new URL(req.url!, 'http://localhost:8000');\n if (url.pathname.match(/^\\/assets\\/?/) && url.searchParams.get('unstable_path') != null) {\n return metro.processRequest(req, res, next);\n }\n }\n return next();\n });\n\n setEventReporter(eventsSocketEndpoint.reportEvent);\n\n return {\n metro,\n server,\n middleware,\n messageSocket: messageSocketEndpoint,\n };\n}\n\n/**\n * Simplify and communicate if Metro is running without watching file updates,.\n * Exposed for testing.\n */\nexport function isWatchEnabled() {\n if (env.CI) {\n Log.log(\n chalk`Metro is running in CI mode, reloads are disabled. Remove {bold CI=true} to enable watch mode.`\n );\n }\n\n return !env.CI;\n}\n"],"names":["loadMetroConfigAsync","instantiateMetroAsync","isWatchEnabled","ExpoMetroConfig","gteSdkVersion","exp","sdkVersion","semver","gte","Error","projectRoot","options","getConfig","skipSDKVersionRequirement","isExporting","reportEvent","serverRoot","getMetroServerRoot","terminal","Terminal","process","stdout","terminalReporter","MetroTerminalReporter","reporter","update","event","config","loadAsync","transformer","publicPath","experiments","baseUrl","platformBundlers","getPlatformBundlers","withMetroMultiPlatformAsync","isTsconfigPathsEnabled","tsconfigPaths","webOutput","web","output","isFastResolverEnabled","env","EXPO_USE_FAST_RESOLVER","NODE_ENV","logEventAsync","getMetroProperties","setEventReporter","logger","metroBundler","metroConfig","createDevServerMiddleware","securityHeadersMiddleware","require","middleware","messageSocketEndpoint","eventsSocketEndpoint","websocketEndpoints","port","server","watchFolders","replaceMiddlewareWith","remoteDevtoolsSecurityHeadersMiddleware","use","remoteDevtoolsCorsMiddleware","prependMiddleware","suppressRemoteDebuggingErrorMiddleware","customEnhanceMiddleware","enhanceMiddleware","metroMiddleware","createDebuggerTelemetryMiddleware","debugMiddleware","debugWebsocketEndpoints","createDebugMiddleware","metro","runServer","watch","req","res","next","url","URL","pathname","match","searchParams","get","processRequest","messageSocket","CI","Log","log","chalk"],"mappings":"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"}
|
|
@@ -162,7 +162,7 @@ async function logMetroErrorAsync({ error , projectRoot }) {
|
|
|
162
162
|
error
|
|
163
163
|
});
|
|
164
164
|
}
|
|
165
|
-
async function getErrorOverlayHtmlAsync({ error , projectRoot }) {
|
|
165
|
+
async function getErrorOverlayHtmlAsync({ error , projectRoot , routerRoot }) {
|
|
166
166
|
var ref, ref9;
|
|
167
167
|
const log = logFromError({
|
|
168
168
|
projectRoot,
|
|
@@ -189,7 +189,8 @@ async function getErrorOverlayHtmlAsync({ error , projectRoot }) {
|
|
|
189
189
|
dev: true,
|
|
190
190
|
platform: "web",
|
|
191
191
|
minify: false,
|
|
192
|
-
|
|
192
|
+
baseUrl: "",
|
|
193
|
+
routerRoot
|
|
193
194
|
});
|
|
194
195
|
const htmlWithJs = html.replace("</body>", `<script src=${errorOverlayEntry}></script></body>`);
|
|
195
196
|
return htmlWithJs;
|