@expo/cli 0.13.2 → 0.15.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 +30 -27
- 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/config/configAsync.js +1 -1
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/config/index.js +2 -2
- package/build/src/config/index.js.map +1 -1
- package/build/src/customize/generate.js +1 -1
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/typescript.js +6 -4
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/export/createMetadataJson.js +3 -2
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +44 -17
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/index.js +4 -4
- package/build/src/export/embed/index.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/exportApp.js +74 -83
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +81 -21
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportHermes.js +24 -14
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +109 -58
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +2 -2
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/fork-bundleAsync.js +56 -23
- package/build/src/export/fork-bundleAsync.js.map +1 -1
- package/build/src/export/index.js +11 -9
- 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 +94 -21
- package/build/src/export/persistMetroAssets.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 +9 -48
- 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/web/index.js +2 -2
- package/build/src/export/web/index.js.map +1 -1
- package/build/src/export/writeContents.js +6 -3
- 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 +32 -61
- 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/login/index.js +1 -1
- package/build/src/login/index.js.map +1 -1
- package/build/src/logout/index.js +1 -1
- package/build/src/logout/index.js.map +1 -1
- 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/index.js +3 -3
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +39 -17
- 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/register/index.js +1 -1
- package/build/src/register/index.js.map +1 -1
- package/build/src/run/android/index.js +2 -2
- package/build/src/run/android/index.js.map +1 -1
- package/build/src/run/ios/appleDevice/AppleDevice.js +35 -2
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/index.js +2 -2
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +12 -4
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +20 -3
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/index.js +3 -3
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +30 -11
- 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 +21 -20
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +67 -64
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/bundleApiRoutes.js +4 -19
- package/build/src/start/server/metro/bundleApiRoutes.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +187 -0
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -0
- package/build/src/start/server/metro/createJResolver.js +149 -0
- package/build/src/start/server/metro/createJResolver.js.map +1 -0
- package/build/src/start/server/metro/createServerRouteMiddleware.js +13 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- 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/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/formatFileCandidates.js +72 -0
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/device.js +3 -1
- package/build/src/start/server/metro/inspector-proxy/device.js.map +1 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerGetPossibleBreakpoints.js +3 -4
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeCallFunctionOn.js +24 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/utils.js +11 -0
- package/build/src/start/server/metro/inspector-proxy/handlers/utils.js.map +1 -0
- package/build/src/start/server/metro/inspector-proxy/index.js +10 -7
- package/build/src/start/server/metro/inspector-proxy/index.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +37 -16
- 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 +6 -3
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +19 -10
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +43 -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 +268 -191
- 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 +45 -68
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +1 -1
- 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 +123 -0
- package/build/src/start/server/middleware/metroOptions.js.map +1 -0
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +1 -1
- package/build/src/start/server/type-generation/expo-env.js +1 -1
- package/build/src/start/server/type-generation/expo-env.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +1 -0
- package/build/src/start/server/type-generation/routes.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 +2 -1
- package/build/src/utils/cocoapods.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 +6 -0
- 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/whoami/index.js +1 -1
- package/build/src/whoami/index.js.map +1 -1
- package/package.json +16 -16
- package/static/shims/react-native-web/dist/cjs/exports/AppRegistry/AppContainer.js +13 -0
- package/static/shims/react-native-web/dist/cjs/exports/BackHandler/index.js +10 -0
- package/static/shims/react-native-web/dist/exports/AppRegistry/AppContainer.js +12 -0
- package/static/shims/react-native-web/dist/exports/BackHandler/index.js +7 -0
- package/build/src/export/createBundles.js +0 -37
- package/build/src/export/createBundles.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/resolveEntryPoint.js +0 -42
- package/build/src/start/server/middleware/resolveEntryPoint.js.map +0 -1
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
exports.unstable_exportStaticAsync = unstable_exportStaticAsync;
|
|
6
6
|
exports.getFilesToExportFromServerAsync = getFilesToExportFromServerAsync;
|
|
7
7
|
exports.exportFromServerAsync = exportFromServerAsync;
|
|
8
|
+
exports.getFilesFromSerialAssets = getFilesFromSerialAssets;
|
|
9
|
+
exports.persistMetroFilesAsync = persistMetroFilesAsync;
|
|
8
10
|
exports.modifyBundlesWithSourceMaps = modifyBundlesWithSourceMaps;
|
|
9
11
|
exports.getHtmlFiles = getHtmlFiles;
|
|
10
12
|
exports.getPathVariations = getPathVariations;
|
|
@@ -16,12 +18,15 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
16
18
|
var _prettyBytes = _interopRequireDefault(require("pretty-bytes"));
|
|
17
19
|
var _util = require("util");
|
|
18
20
|
var _favicon = require("./favicon");
|
|
21
|
+
var _persistMetroAssets = require("./persistMetroAssets");
|
|
19
22
|
var _log = require("../log");
|
|
20
23
|
var _devServerManager = require("../start/server/DevServerManager");
|
|
21
24
|
var _metroBundlerDevServer = require("../start/server/metro/MetroBundlerDevServer");
|
|
22
25
|
var _metroErrorInterface = require("../start/server/metro/metroErrorInterface");
|
|
23
26
|
var _router = require("../start/server/metro/router");
|
|
27
|
+
var _serializeHtml = require("../start/server/metro/serializeHtml");
|
|
24
28
|
var _link = require("../utils/link");
|
|
29
|
+
var _port = require("../utils/port");
|
|
25
30
|
function _interopRequireDefault(obj) {
|
|
26
31
|
return obj && obj.__esModule ? obj : {
|
|
27
32
|
default: obj
|
|
@@ -30,18 +35,24 @@ function _interopRequireDefault(obj) {
|
|
|
30
35
|
const debug = require("debug")("expo:export:generateStaticRoutes");
|
|
31
36
|
async function unstable_exportStaticAsync(projectRoot, options) {
|
|
32
37
|
_log.Log.warn(`Experimental static rendering is enabled. ` + (0, _link).learnMore("https://docs.expo.dev/router/reference/static-rendering/"));
|
|
38
|
+
// Useful for running parallel e2e tests in CI.
|
|
39
|
+
const port = await (0, _port).getFreePortAsync(8082);
|
|
33
40
|
// TODO: Prevent starting the watcher.
|
|
34
41
|
const devServerManager = new _devServerManager.DevServerManager(projectRoot, {
|
|
35
42
|
minify: options.minify,
|
|
36
43
|
mode: "production",
|
|
37
|
-
|
|
44
|
+
port,
|
|
45
|
+
location: {},
|
|
46
|
+
resetDevServer: options.clear
|
|
38
47
|
});
|
|
39
48
|
await devServerManager.startAsync([
|
|
40
49
|
{
|
|
41
50
|
type: "metro",
|
|
42
51
|
options: {
|
|
52
|
+
port,
|
|
43
53
|
location: {},
|
|
44
|
-
isExporting: true
|
|
54
|
+
isExporting: true,
|
|
55
|
+
resetDevServer: options.clear
|
|
45
56
|
}
|
|
46
57
|
},
|
|
47
58
|
]);
|
|
@@ -55,11 +66,12 @@ async function unstable_exportStaticAsync(projectRoot, options) {
|
|
|
55
66
|
var ref;
|
|
56
67
|
return (ref = name.match(/^\(([^/]+?)\)$/)) == null ? void 0 : ref[1];
|
|
57
68
|
}
|
|
58
|
-
async function getFilesToExportFromServerAsync(projectRoot, { manifest , renderAsync }) {
|
|
69
|
+
async function getFilesToExportFromServerAsync(projectRoot, { manifest , renderAsync , includeGroupVariations }) {
|
|
59
70
|
// name : contents
|
|
60
71
|
const files = new Map();
|
|
61
72
|
await Promise.all(getHtmlFiles({
|
|
62
|
-
manifest
|
|
73
|
+
manifest,
|
|
74
|
+
includeGroupVariations
|
|
63
75
|
}).map(async (outputPath)=>{
|
|
64
76
|
const pathname = outputPath.replace(/(?:index)?\.html$/, "");
|
|
65
77
|
try {
|
|
@@ -76,26 +88,28 @@ async function getFilesToExportFromServerAsync(projectRoot, { manifest , renderA
|
|
|
76
88
|
}));
|
|
77
89
|
return files;
|
|
78
90
|
}
|
|
79
|
-
async function exportFromServerAsync(projectRoot, devServerManager, { outputDir ,
|
|
91
|
+
async function exportFromServerAsync(projectRoot, devServerManager, { outputDir , baseUrl , exportServer , minify , includeMaps }) {
|
|
80
92
|
const { exp } = (0, _config).getConfig(projectRoot, {
|
|
81
93
|
skipSDKVersionRequirement: true
|
|
82
94
|
});
|
|
83
95
|
const appDir = (0, _router).getRouterDirectoryWithManifest(projectRoot, exp);
|
|
84
96
|
const injectFaviconTag = await (0, _favicon).getVirtualFaviconAssetsAsync(projectRoot, {
|
|
85
97
|
outputDir,
|
|
86
|
-
|
|
98
|
+
baseUrl
|
|
87
99
|
});
|
|
88
100
|
const devServer = devServerManager.getDefaultDevServer();
|
|
89
101
|
(0, _assert).default(devServer instanceof _metroBundlerDevServer.MetroBundlerDevServer);
|
|
90
|
-
const [resources, { manifest , renderAsync }] = await Promise.all([
|
|
102
|
+
const [resources, { manifest , serverManifest , renderAsync }] = await Promise.all([
|
|
91
103
|
devServer.getStaticResourcesAsync({
|
|
92
104
|
mode: "production",
|
|
93
105
|
minify,
|
|
94
|
-
includeMaps
|
|
106
|
+
includeMaps,
|
|
107
|
+
baseUrl
|
|
95
108
|
}),
|
|
96
109
|
devServer.getStaticRenderFunctionAsync({
|
|
97
110
|
mode: "production",
|
|
98
|
-
minify
|
|
111
|
+
minify,
|
|
112
|
+
baseUrl
|
|
99
113
|
}),
|
|
100
114
|
]);
|
|
101
115
|
debug("Routes:\n", (0, _util).inspect(manifest, {
|
|
@@ -104,13 +118,17 @@ async function exportFromServerAsync(projectRoot, devServerManager, { outputDir
|
|
|
104
118
|
}));
|
|
105
119
|
const files = await getFilesToExportFromServerAsync(projectRoot, {
|
|
106
120
|
manifest,
|
|
121
|
+
// Servers can handle group routes automatically and therefore
|
|
122
|
+
// don't require the build-time generation of every possible group
|
|
123
|
+
// variation.
|
|
124
|
+
includeGroupVariations: !exportServer,
|
|
107
125
|
async renderAsync (pathname) {
|
|
108
126
|
const template = await renderAsync(pathname);
|
|
109
|
-
let html = await
|
|
127
|
+
let html = await (0, _serializeHtml).serializeHtmlWithAssets({
|
|
110
128
|
mode: "production",
|
|
111
|
-
resources,
|
|
129
|
+
resources: resources.artifacts,
|
|
112
130
|
template,
|
|
113
|
-
|
|
131
|
+
baseUrl
|
|
114
132
|
});
|
|
115
133
|
if (injectFaviconTag) {
|
|
116
134
|
html = injectFaviconTag(html);
|
|
@@ -118,14 +136,24 @@ async function exportFromServerAsync(projectRoot, devServerManager, { outputDir
|
|
|
118
136
|
return html;
|
|
119
137
|
}
|
|
120
138
|
});
|
|
121
|
-
resources.
|
|
122
|
-
|
|
139
|
+
getFilesFromSerialAssets(resources.artifacts, {
|
|
140
|
+
includeMaps,
|
|
141
|
+
files
|
|
123
142
|
});
|
|
143
|
+
if (resources.assets) {
|
|
144
|
+
await (0, _persistMetroAssets).persistMetroAssetsAsync(resources.assets, {
|
|
145
|
+
platform: "web",
|
|
146
|
+
outputDirectory: outputDir,
|
|
147
|
+
baseUrl
|
|
148
|
+
});
|
|
149
|
+
}
|
|
124
150
|
if (exportServer) {
|
|
125
151
|
const apiRoutes = await exportApiRoutesAsync({
|
|
126
152
|
outputDir,
|
|
127
153
|
server: devServer,
|
|
128
|
-
appDir
|
|
154
|
+
appDir,
|
|
155
|
+
manifest: serverManifest,
|
|
156
|
+
baseUrl
|
|
129
157
|
});
|
|
130
158
|
// Add the api routes to the files to export.
|
|
131
159
|
for (const [route, contents] of apiRoutes){
|
|
@@ -134,6 +162,15 @@ async function exportFromServerAsync(projectRoot, devServerManager, { outputDir
|
|
|
134
162
|
} else {
|
|
135
163
|
warnPossibleInvalidExportType(appDir);
|
|
136
164
|
}
|
|
165
|
+
await persistMetroFilesAsync(files, outputDir);
|
|
166
|
+
}
|
|
167
|
+
function getFilesFromSerialAssets(resources, { includeMaps , files =new Map() }) {
|
|
168
|
+
resources.forEach((resource)=>{
|
|
169
|
+
files.set(resource.filename, modifyBundlesWithSourceMaps(resource.filename, resource.source, includeMaps));
|
|
170
|
+
});
|
|
171
|
+
return files;
|
|
172
|
+
}
|
|
173
|
+
async function persistMetroFilesAsync(files, outputDir) {
|
|
137
174
|
_fs.default.mkdirSync(_path.default.join(outputDir), {
|
|
138
175
|
recursive: true
|
|
139
176
|
});
|
|
@@ -156,8 +193,9 @@ async function exportFromServerAsync(projectRoot, devServerManager, { outputDir
|
|
|
156
193
|
function modifyBundlesWithSourceMaps(filename, source, includeMaps) {
|
|
157
194
|
if (filename.endsWith(".js")) {
|
|
158
195
|
// If the bundle ends with source map URLs then update them to point to the correct location.
|
|
159
|
-
// TODO:
|
|
196
|
+
// TODO: baseUrl support
|
|
160
197
|
const normalizedFilename = "/" + filename.replace(/^\/+/, "");
|
|
198
|
+
// Ref: https://developer.chrome.com/blog/sourcemaps/#sourceurl-and-displayname-in-action-eval-and-anonymous-functions
|
|
161
199
|
//# sourceMappingURL=//localhost:8085/index.map?platform=web&dev=false&hot=false&lazy=true&minify=true&resolver.environment=client&transform.environment=client&serializer.output=static
|
|
162
200
|
//# sourceURL=http://localhost:8085/index.bundle//&platform=web&dev=false&hot=false&lazy=true&minify=true&resolver.environment=client&transform.environment=client&serializer.output=static
|
|
163
201
|
return source.replace(/^\/\/# (sourceMappingURL|sourceURL)=.*$/gm, (...props)=>{
|
|
@@ -174,19 +212,23 @@ function modifyBundlesWithSourceMaps(filename, source, includeMaps) {
|
|
|
174
212
|
}
|
|
175
213
|
return source;
|
|
176
214
|
}
|
|
177
|
-
function getHtmlFiles({ manifest }) {
|
|
215
|
+
function getHtmlFiles({ manifest , includeGroupVariations }) {
|
|
178
216
|
const htmlFiles = new Set();
|
|
179
|
-
function traverseScreens(screens,
|
|
217
|
+
function traverseScreens(screens, baseUrl = "") {
|
|
180
218
|
for (const value of Object.values(screens)){
|
|
181
219
|
if (typeof value === "string") {
|
|
182
|
-
let filePath =
|
|
220
|
+
let filePath = baseUrl + value;
|
|
183
221
|
if (value === "") {
|
|
184
|
-
filePath =
|
|
222
|
+
filePath = baseUrl === "" ? "index" : baseUrl.endsWith("/") ? baseUrl + "index" : baseUrl.slice(0, -1);
|
|
223
|
+
}
|
|
224
|
+
if (includeGroupVariations) {
|
|
225
|
+
// TODO: Dedupe requests for alias routes.
|
|
226
|
+
addOptionalGroups(filePath);
|
|
227
|
+
} else {
|
|
228
|
+
htmlFiles.add(filePath);
|
|
185
229
|
}
|
|
186
|
-
// TODO: Dedupe requests for alias routes.
|
|
187
|
-
addOptionalGroups(filePath);
|
|
188
230
|
} else if (typeof value === "object" && (value == null ? void 0 : value.screens)) {
|
|
189
|
-
const newPath =
|
|
231
|
+
const newPath = baseUrl + value.path + "/";
|
|
190
232
|
traverseScreens(value.screens, newPath);
|
|
191
233
|
}
|
|
192
234
|
}
|
|
@@ -202,7 +244,9 @@ function getHtmlFiles({ manifest }) {
|
|
|
202
244
|
const parts = value.split("/");
|
|
203
245
|
// Replace `:foo` with `[foo]` and `*foo` with `[...foo]`
|
|
204
246
|
const partsWithGroups = parts.map((part)=>{
|
|
205
|
-
if (part
|
|
247
|
+
if (part === "*not-found") {
|
|
248
|
+
return `+not-found`;
|
|
249
|
+
} else if (part.startsWith(":")) {
|
|
206
250
|
return `[${part.slice(1)}]`;
|
|
207
251
|
} else if (part.startsWith("*")) {
|
|
208
252
|
return `[...${part.slice(1)}]`;
|
|
@@ -213,50 +257,57 @@ function getHtmlFiles({ manifest }) {
|
|
|
213
257
|
});
|
|
214
258
|
}
|
|
215
259
|
function getPathVariations(routePath) {
|
|
216
|
-
const variations = new Set(
|
|
217
|
-
routePath
|
|
218
|
-
]);
|
|
260
|
+
const variations = new Set();
|
|
219
261
|
const segments1 = routePath.split("/");
|
|
220
|
-
function generateVariations(segments,
|
|
221
|
-
if (
|
|
262
|
+
function generateVariations(segments, current = "") {
|
|
263
|
+
if (segments.length === 0) {
|
|
264
|
+
if (current) variations.add(current);
|
|
222
265
|
return;
|
|
223
266
|
}
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
267
|
+
const [head, ...rest] = segments;
|
|
268
|
+
if (head.startsWith("(foo,foo")) {}
|
|
269
|
+
if (matchGroupName(head)) {
|
|
270
|
+
const groups = head.slice(1, -1).split(",");
|
|
271
|
+
if (groups.length > 1) {
|
|
272
|
+
for (const group of groups){
|
|
273
|
+
// If there are multiple groups, recurse on each group.
|
|
274
|
+
generateVariations([
|
|
275
|
+
`(${group.trim()})`,
|
|
276
|
+
...rest
|
|
277
|
+
], current);
|
|
278
|
+
}
|
|
279
|
+
return;
|
|
280
|
+
} else {
|
|
281
|
+
// Start a fork where this group is included
|
|
282
|
+
generateVariations(rest, current ? `${current}/(${groups[0]})` : `(${groups[0]})`);
|
|
283
|
+
// This code will continue and add paths without this group included`
|
|
284
|
+
}
|
|
285
|
+
} else if (current) {
|
|
286
|
+
current = `${current}/${head}`;
|
|
287
|
+
} else {
|
|
288
|
+
current = head;
|
|
231
289
|
}
|
|
232
|
-
generateVariations(
|
|
290
|
+
generateVariations(rest, current);
|
|
233
291
|
}
|
|
234
|
-
generateVariations(segments1
|
|
292
|
+
generateVariations(segments1);
|
|
235
293
|
return Array.from(variations);
|
|
236
294
|
}
|
|
237
|
-
async function exportApiRoutesAsync({ outputDir , server , appDir
|
|
238
|
-
const
|
|
295
|
+
async function exportApiRoutesAsync({ outputDir , server , appDir , baseUrl , ...props }) {
|
|
296
|
+
const functionsDir = "_expo/functions";
|
|
297
|
+
const funcDir = _path.default.join(outputDir, functionsDir);
|
|
239
298
|
_fs.default.mkdirSync(_path.default.join(funcDir), {
|
|
240
299
|
recursive: true
|
|
241
300
|
});
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
files.set(_path.default.join("_expo/functions", route), contents);
|
|
253
|
-
}
|
|
254
|
-
return files;
|
|
255
|
-
}),
|
|
256
|
-
]);
|
|
257
|
-
_log.Log.log(_chalk.default.bold`Exporting ${files1.size} API Routes.`);
|
|
258
|
-
files1.set("_expo/routes.json", JSON.stringify(manifest, null, 2));
|
|
259
|
-
return files1;
|
|
301
|
+
const { manifest , files } = await server.exportExpoRouterApiRoutesAsync({
|
|
302
|
+
mode: "production",
|
|
303
|
+
appDir,
|
|
304
|
+
outputDir: functionsDir,
|
|
305
|
+
prerenderManifest: props.manifest,
|
|
306
|
+
baseUrl
|
|
307
|
+
});
|
|
308
|
+
_log.Log.log(_chalk.default.bold`Exporting ${files.size} API Routes.`);
|
|
309
|
+
files.set("_expo/routes.json", JSON.stringify(manifest, null, 2));
|
|
310
|
+
return files;
|
|
260
311
|
}
|
|
261
312
|
function warnPossibleInvalidExportType(appDir) {
|
|
262
313
|
const apiRoutes = (0, _router).getApiRoutesForDirectory(appDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/export/exportStaticAsync.ts"],"sourcesContent":["/**\n * Copyright © 2022 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 { getConfig } from '@expo/config';\nimport assert from 'assert';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\nimport prettyBytes from 'pretty-bytes';\nimport { inspect } from 'util';\n\nimport { getVirtualFaviconAssetsAsync } from './favicon';\nimport { Log } from '../log';\nimport { DevServerManager } from '../start/server/DevServerManager';\nimport { MetroBundlerDevServer } from '../start/server/metro/MetroBundlerDevServer';\nimport { logMetroErrorAsync } from '../start/server/metro/metroErrorInterface';\nimport {\n getApiRoutesForDirectory,\n getRouterDirectoryWithManifest,\n} from '../start/server/metro/router';\nimport { learnMore } from '../utils/link';\n\nconst debug = require('debug')('expo:export:generateStaticRoutes') as typeof console.log;\n\ntype Options = {\n outputDir: string;\n minify: boolean;\n exportServer: boolean;\n basePath: string;\n includeMaps: boolean;\n};\n\n/** @private */\nexport async function unstable_exportStaticAsync(projectRoot: string, options: Options) {\n Log.warn(\n `Experimental static rendering is enabled. ` +\n learnMore('https://docs.expo.dev/router/reference/static-rendering/')\n );\n\n // TODO: Prevent starting the watcher.\n const devServerManager = new DevServerManager(projectRoot, {\n minify: options.minify,\n mode: 'production',\n location: {},\n });\n await devServerManager.startAsync([\n {\n type: 'metro',\n options: {\n location: {},\n isExporting: true,\n },\n },\n ]);\n\n try {\n await exportFromServerAsync(projectRoot, devServerManager, options);\n } finally {\n await devServerManager.stopAsync();\n }\n}\n\n/** Match `(page)` -> `page` */\nfunction matchGroupName(name: string): string | undefined {\n return name.match(/^\\(([^/]+?)\\)$/)?.[1];\n}\n\nexport async function getFilesToExportFromServerAsync(\n projectRoot: string,\n {\n manifest,\n renderAsync,\n }: {\n manifest: any;\n renderAsync: (pathname: string) => Promise<string>;\n }\n): Promise<Map<string, string>> {\n // name : contents\n const files = new Map<string, string>();\n\n await Promise.all(\n getHtmlFiles({ manifest }).map(async (outputPath) => {\n const pathname = outputPath.replace(/(?:index)?\\.html$/, '');\n try {\n files.set(outputPath, '');\n const data = await renderAsync(pathname);\n files.set(outputPath, data);\n } catch (e: any) {\n await logMetroErrorAsync({ error: e, projectRoot });\n throw new Error('Failed to statically export route: ' + pathname);\n }\n })\n );\n\n return files;\n}\n\n/** Perform all fs commits */\nexport async function exportFromServerAsync(\n projectRoot: string,\n devServerManager: DevServerManager,\n { outputDir, basePath, exportServer, minify, includeMaps }: Options\n): Promise<void> {\n const { exp } = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n const appDir = getRouterDirectoryWithManifest(projectRoot, exp);\n\n const injectFaviconTag = await getVirtualFaviconAssetsAsync(projectRoot, { outputDir, basePath });\n\n const devServer = devServerManager.getDefaultDevServer();\n assert(devServer instanceof MetroBundlerDevServer);\n\n const [resources, { manifest, renderAsync }] = await Promise.all([\n devServer.getStaticResourcesAsync({ mode: 'production', minify, includeMaps }),\n devServer.getStaticRenderFunctionAsync({\n mode: 'production',\n minify,\n }),\n ]);\n\n debug('Routes:\\n', inspect(manifest, { colors: true, depth: null }));\n\n const files = await getFilesToExportFromServerAsync(projectRoot, {\n manifest,\n async renderAsync(pathname: string) {\n const template = await renderAsync(pathname);\n let html = await devServer.composeResourcesWithHtml({\n mode: 'production',\n resources,\n template,\n basePath,\n });\n\n if (injectFaviconTag) {\n html = injectFaviconTag(html);\n }\n\n return html;\n },\n });\n\n resources.forEach((resource) => {\n files.set(\n resource.filename,\n modifyBundlesWithSourceMaps(resource.filename, resource.source, includeMaps)\n );\n });\n\n if (exportServer) {\n const apiRoutes = await exportApiRoutesAsync({ outputDir, server: devServer, appDir });\n\n // Add the api routes to the files to export.\n for (const [route, contents] of apiRoutes) {\n files.set(route, contents);\n }\n } else {\n warnPossibleInvalidExportType(appDir);\n }\n\n fs.mkdirSync(path.join(outputDir), { recursive: true });\n\n Log.log('');\n Log.log(chalk.bold`Exporting ${files.size} files:`);\n await Promise.all(\n [...files.entries()]\n .sort(([a], [b]) => a.localeCompare(b))\n .map(async ([file, contents]) => {\n const length = Buffer.byteLength(contents, 'utf8');\n Log.log(file, chalk.gray`(${prettyBytes(length)})`);\n const outputPath = path.join(outputDir, file);\n await fs.promises.mkdir(path.dirname(outputPath), { recursive: true });\n await fs.promises.writeFile(outputPath, contents);\n })\n );\n Log.log('');\n}\n\nexport function modifyBundlesWithSourceMaps(\n filename: string,\n source: string,\n includeMaps: boolean\n): string {\n if (filename.endsWith('.js')) {\n // If the bundle ends with source map URLs then update them to point to the correct location.\n\n // TODO: basePath support\n const normalizedFilename = '/' + filename.replace(/^\\/+/, '');\n //# sourceMappingURL=//localhost:8085/index.map?platform=web&dev=false&hot=false&lazy=true&minify=true&resolver.environment=client&transform.environment=client&serializer.output=static\n //# sourceURL=http://localhost:8085/index.bundle//&platform=web&dev=false&hot=false&lazy=true&minify=true&resolver.environment=client&transform.environment=client&serializer.output=static\n return source.replace(/^\\/\\/# (sourceMappingURL|sourceURL)=.*$/gm, (...props) => {\n if (includeMaps) {\n if (props[1] === 'sourceURL') {\n return `//# ${props[1]}=` + normalizedFilename;\n } else if (props[1] === 'sourceMappingURL') {\n const mapName = normalizedFilename + '.map';\n return `//# ${props[1]}=` + mapName;\n }\n }\n return '';\n });\n }\n return source;\n}\n\nexport function getHtmlFiles({ manifest }: { manifest: any }): string[] {\n const htmlFiles = new Set<string>();\n\n function traverseScreens(screens: string | { screens: any; path: string }, basePath = '') {\n for (const value of Object.values(screens)) {\n if (typeof value === 'string') {\n let filePath = basePath + value;\n if (value === '') {\n filePath =\n basePath === ''\n ? 'index'\n : basePath.endsWith('/')\n ? basePath + 'index'\n : basePath.slice(0, -1);\n }\n // TODO: Dedupe requests for alias routes.\n addOptionalGroups(filePath);\n } else if (typeof value === 'object' && value?.screens) {\n const newPath = basePath + value.path + '/';\n traverseScreens(value.screens, newPath);\n }\n }\n }\n\n function addOptionalGroups(path: string) {\n const variations = getPathVariations(path);\n for (const variation of variations) {\n htmlFiles.add(variation);\n }\n }\n\n traverseScreens(manifest.screens);\n\n return Array.from(htmlFiles).map((value) => {\n const parts = value.split('/');\n // Replace `:foo` with `[foo]` and `*foo` with `[...foo]`\n const partsWithGroups = parts.map((part) => {\n if (part.startsWith(':')) {\n return `[${part.slice(1)}]`;\n } else if (part.startsWith('*')) {\n return `[...${part.slice(1)}]`;\n }\n return part;\n });\n return partsWithGroups.join('/') + '.html';\n });\n}\n\n// Given a route like `(foo)/bar/(baz)`, return all possible variations of the route.\n// e.g. `(foo)/bar/(baz)`, `(foo)/bar/baz`, `foo/bar/(baz)`, `foo/bar/baz`,\nexport function getPathVariations(routePath: string): string[] {\n const variations = new Set<string>([routePath]);\n const segments = routePath.split('/');\n\n function generateVariations(segments: string[], index: number): void {\n if (index >= segments.length) {\n return;\n }\n\n const newSegments = [...segments];\n while (\n index < newSegments.length &&\n matchGroupName(newSegments[index]) &&\n newSegments.length > 1\n ) {\n newSegments.splice(index, 1);\n variations.add(newSegments.join('/'));\n generateVariations(newSegments, index + 1);\n }\n\n generateVariations(segments, index + 1);\n }\n\n generateVariations(segments, 0);\n\n return Array.from(variations);\n}\n\nasync function exportApiRoutesAsync({\n outputDir,\n server,\n appDir,\n}: {\n outputDir: string;\n server: MetroBundlerDevServer;\n appDir: string;\n}): Promise<Map<string, string>> {\n const funcDir = path.join(outputDir, '_expo/functions');\n fs.mkdirSync(path.join(funcDir), { recursive: true });\n\n const [manifest, files] = await Promise.all([\n server.getExpoRouterRoutesManifestAsync({\n appDir,\n }),\n server\n .exportExpoRouterApiRoutesAsync({\n mode: 'production',\n appDir,\n })\n .then((routes) => {\n const files = new Map<string, string>();\n for (const [route, contents] of routes) {\n files.set(path.join('_expo/functions', route), contents);\n }\n return files;\n }),\n ]);\n\n Log.log(chalk.bold`Exporting ${files.size} API Routes.`);\n\n files.set('_expo/routes.json', JSON.stringify(manifest, null, 2));\n\n return files;\n}\n\nfunction warnPossibleInvalidExportType(appDir: string) {\n const apiRoutes = getApiRoutesForDirectory(appDir);\n if (apiRoutes.length) {\n // TODO: Allow API Routes for native-only.\n Log.warn(\n chalk.yellow`Skipping export for API routes because \\`web.output\\` is not \"server\". You may want to remove the routes: ${apiRoutes\n .map((v) => path.relative(appDir, v))\n .join(', ')}`\n );\n }\n}\n"],"names":["unstable_exportStaticAsync","getFilesToExportFromServerAsync","exportFromServerAsync","modifyBundlesWithSourceMaps","getHtmlFiles","getPathVariations","debug","require","projectRoot","options","Log","warn","learnMore","devServerManager","DevServerManager","minify","mode","location","startAsync","type","isExporting","stopAsync","matchGroupName","name","match","manifest","renderAsync","files","Map","Promise","all","map","outputPath","pathname","replace","set","data","e","logMetroErrorAsync","error","Error","outputDir","basePath","exportServer","includeMaps","exp","getConfig","skipSDKVersionRequirement","appDir","getRouterDirectoryWithManifest","injectFaviconTag","getVirtualFaviconAssetsAsync","devServer","getDefaultDevServer","assert","MetroBundlerDevServer","resources","getStaticResourcesAsync","getStaticRenderFunctionAsync","inspect","colors","depth","template","html","composeResourcesWithHtml","forEach","resource","filename","source","apiRoutes","exportApiRoutesAsync","server","route","contents","warnPossibleInvalidExportType","fs","mkdirSync","path","join","recursive","log","chalk","bold","size","entries","sort","a","b","localeCompare","file","length","Buffer","byteLength","gray","prettyBytes","promises","mkdir","dirname","writeFile","endsWith","normalizedFilename","props","mapName","htmlFiles","Set","traverseScreens","screens","value","Object","values","filePath","slice","addOptionalGroups","newPath","variations","variation","add","Array","from","parts","split","partsWithGroups","part","startsWith","routePath","segments","generateVariations","index","newSegments","splice","funcDir","getExpoRouterRoutesManifestAsync","exportExpoRouterApiRoutesAsync","then","routes","JSON","stringify","getApiRoutesForDirectory","yellow","v","relative"],"mappings":"AAMA;;;;QA8BsBA,0BAA0B,GAA1BA,0BAA0B;QAkC1BC,+BAA+B,GAA/BA,+BAA+B;QA+B/BC,qBAAqB,GAArBA,qBAAqB;QA8E3BC,2BAA2B,GAA3BA,2BAA2B;QA2B3BC,YAAY,GAAZA,YAAY;QAkDZC,iBAAiB,GAAjBA,iBAAiB;AA1PP,IAAA,OAAc,WAAd,cAAc,CAAA;AACrB,IAAA,OAAQ,kCAAR,QAAQ,EAAA;AACT,IAAA,MAAO,kCAAP,OAAO,EAAA;AACV,IAAA,GAAI,kCAAJ,IAAI,EAAA;AACF,IAAA,KAAM,kCAAN,MAAM,EAAA;AACC,IAAA,YAAc,kCAAd,cAAc,EAAA;AACd,IAAA,KAAM,WAAN,MAAM,CAAA;AAEe,IAAA,QAAW,WAAX,WAAW,CAAA;AACpC,IAAA,IAAQ,WAAR,QAAQ,CAAA;AACK,IAAA,iBAAkC,WAAlC,kCAAkC,CAAA;AAC7B,IAAA,sBAA6C,WAA7C,6CAA6C,CAAA;AAChD,IAAA,oBAA2C,WAA3C,2CAA2C,CAAA;AAIvE,IAAA,OAA8B,WAA9B,8BAA8B,CAAA;AACX,IAAA,KAAe,WAAf,eAAe,CAAA;;;;;;AAEzC,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,kCAAkC,CAAC,AAAsB,AAAC;AAWlF,eAAeP,0BAA0B,CAACQ,WAAmB,EAAEC,OAAgB,EAAE;IACtFC,IAAG,IAAA,CAACC,IAAI,CACN,CAAC,0CAA0C,CAAC,GAC1CC,CAAAA,GAAAA,KAAS,AAA4D,CAAA,UAA5D,CAAC,0DAA0D,CAAC,CACxE,CAAC;IAEF,sCAAsC;IACtC,MAAMC,gBAAgB,GAAG,IAAIC,iBAAgB,iBAAA,CAACN,WAAW,EAAE;QACzDO,MAAM,EAAEN,OAAO,CAACM,MAAM;QACtBC,IAAI,EAAE,YAAY;QAClBC,QAAQ,EAAE,EAAE;KACb,CAAC,AAAC;IACH,MAAMJ,gBAAgB,CAACK,UAAU,CAAC;QAChC;YACEC,IAAI,EAAE,OAAO;YACbV,OAAO,EAAE;gBACPQ,QAAQ,EAAE,EAAE;gBACZG,WAAW,EAAE,IAAI;aAClB;SACF;KACF,CAAC,CAAC;IAEH,IAAI;QACF,MAAMlB,qBAAqB,CAACM,WAAW,EAAEK,gBAAgB,EAAEJ,OAAO,CAAC,CAAC;KACrE,QAAS;QACR,MAAMI,gBAAgB,CAACQ,SAAS,EAAE,CAAC;KACpC;CACF;AAED,+BAA+B,CAC/B,SAASC,cAAc,CAACC,IAAY,EAAsB;QACjDA,GAA4B;IAAnC,OAAOA,CAAAA,GAA4B,GAA5BA,IAAI,CAACC,KAAK,kBAAkB,SAAK,GAAjCD,KAAAA,CAAiC,GAAjCA,GAA4B,AAAE,CAAC,CAAC,CAAC,CAAC;CAC1C;AAEM,eAAetB,+BAA+B,CACnDO,WAAmB,EACnB,EACEiB,QAAQ,CAAA,EACRC,WAAW,CAAA,EAIZ,EAC6B;IAC9B,kBAAkB;IAClB,MAAMC,KAAK,GAAG,IAAIC,GAAG,EAAkB,AAAC;IAExC,MAAMC,OAAO,CAACC,GAAG,CACf1B,YAAY,CAAC;QAAEqB,QAAQ;KAAE,CAAC,CAACM,GAAG,CAAC,OAAOC,UAAU,GAAK;QACnD,MAAMC,QAAQ,GAAGD,UAAU,CAACE,OAAO,sBAAsB,EAAE,CAAC,AAAC;QAC7D,IAAI;YACFP,KAAK,CAACQ,GAAG,CAACH,UAAU,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAMI,IAAI,GAAG,MAAMV,WAAW,CAACO,QAAQ,CAAC,AAAC;YACzCN,KAAK,CAACQ,GAAG,CAACH,UAAU,EAAEI,IAAI,CAAC,CAAC;SAC7B,CAAC,OAAOC,CAAC,EAAO;YACf,MAAMC,CAAAA,GAAAA,oBAAkB,AAA2B,CAAA,mBAA3B,CAAC;gBAAEC,KAAK,EAAEF,CAAC;gBAAE7B,WAAW;aAAE,CAAC,CAAC;YACpD,MAAM,IAAIgC,KAAK,CAAC,qCAAqC,GAAGP,QAAQ,CAAC,CAAC;SACnE;KACF,CAAC,CACH,CAAC;IAEF,OAAON,KAAK,CAAC;CACd;AAGM,eAAezB,qBAAqB,CACzCM,WAAmB,EACnBK,gBAAkC,EAClC,EAAE4B,SAAS,CAAA,EAAEC,QAAQ,CAAA,EAAEC,YAAY,CAAA,EAAE5B,MAAM,CAAA,EAAE6B,WAAW,CAAA,EAAW,EACpD;IACf,MAAM,EAAEC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAAkD,CAAA,UAAlD,CAACtC,WAAW,EAAE;QAAEuC,yBAAyB,EAAE,IAAI;KAAE,CAAC,AAAC;IAC5E,MAAMC,MAAM,GAAGC,CAAAA,GAAAA,OAA8B,AAAkB,CAAA,+BAAlB,CAACzC,WAAW,EAAEqC,GAAG,CAAC,AAAC;IAEhE,MAAMK,gBAAgB,GAAG,MAAMC,CAAAA,GAAAA,QAA4B,AAAsC,CAAA,6BAAtC,CAAC3C,WAAW,EAAE;QAAEiC,SAAS;QAAEC,QAAQ;KAAE,CAAC,AAAC;IAElG,MAAMU,SAAS,GAAGvC,gBAAgB,CAACwC,mBAAmB,EAAE,AAAC;IACzDC,CAAAA,GAAAA,OAAM,AAA4C,CAAA,QAA5C,CAACF,SAAS,YAAYG,sBAAqB,sBAAA,CAAC,CAAC;IAEnD,MAAM,CAACC,SAAS,EAAE,EAAE/B,QAAQ,CAAA,EAAEC,WAAW,CAAA,EAAE,CAAC,GAAG,MAAMG,OAAO,CAACC,GAAG,CAAC;QAC/DsB,SAAS,CAACK,uBAAuB,CAAC;YAAEzC,IAAI,EAAE,YAAY;YAAED,MAAM;YAAE6B,WAAW;SAAE,CAAC;QAC9EQ,SAAS,CAACM,4BAA4B,CAAC;YACrC1C,IAAI,EAAE,YAAY;YAClBD,MAAM;SACP,CAAC;KACH,CAAC,AAAC;IAEHT,KAAK,CAAC,WAAW,EAAEqD,CAAAA,GAAAA,KAAO,AAAyC,CAAA,QAAzC,CAAClC,QAAQ,EAAE;QAAEmC,MAAM,EAAE,IAAI;QAAEC,KAAK,EAAE,IAAI;KAAE,CAAC,CAAC,CAAC;IAErE,MAAMlC,KAAK,GAAG,MAAM1B,+BAA+B,CAACO,WAAW,EAAE;QAC/DiB,QAAQ;QACR,MAAMC,WAAW,EAACO,QAAgB,EAAE;YAClC,MAAM6B,QAAQ,GAAG,MAAMpC,WAAW,CAACO,QAAQ,CAAC,AAAC;YAC7C,IAAI8B,IAAI,GAAG,MAAMX,SAAS,CAACY,wBAAwB,CAAC;gBAClDhD,IAAI,EAAE,YAAY;gBAClBwC,SAAS;gBACTM,QAAQ;gBACRpB,QAAQ;aACT,CAAC,AAAC;YAEH,IAAIQ,gBAAgB,EAAE;gBACpBa,IAAI,GAAGb,gBAAgB,CAACa,IAAI,CAAC,CAAC;aAC/B;YAED,OAAOA,IAAI,CAAC;SACb;KACF,CAAC,AAAC;IAEHP,SAAS,CAACS,OAAO,CAAC,CAACC,QAAQ,GAAK;QAC9BvC,KAAK,CAACQ,GAAG,CACP+B,QAAQ,CAACC,QAAQ,EACjBhE,2BAA2B,CAAC+D,QAAQ,CAACC,QAAQ,EAAED,QAAQ,CAACE,MAAM,EAAExB,WAAW,CAAC,CAC7E,CAAC;KACH,CAAC,CAAC;IAEH,IAAID,YAAY,EAAE;QAChB,MAAM0B,SAAS,GAAG,MAAMC,oBAAoB,CAAC;YAAE7B,SAAS;YAAE8B,MAAM,EAAEnB,SAAS;YAAEJ,MAAM;SAAE,CAAC,AAAC;QAEvF,6CAA6C;QAC7C,KAAK,MAAM,CAACwB,KAAK,EAAEC,QAAQ,CAAC,IAAIJ,SAAS,CAAE;YACzC1C,KAAK,CAACQ,GAAG,CAACqC,KAAK,EAAEC,QAAQ,CAAC,CAAC;SAC5B;KACF,MAAM;QACLC,6BAA6B,CAAC1B,MAAM,CAAC,CAAC;KACvC;IAED2B,GAAE,QAAA,CAACC,SAAS,CAACC,KAAI,QAAA,CAACC,IAAI,CAACrC,SAAS,CAAC,EAAE;QAAEsC,SAAS,EAAE,IAAI;KAAE,CAAC,CAAC;IAExDrE,IAAG,IAAA,CAACsE,GAAG,CAAC,EAAE,CAAC,CAAC;IACZtE,IAAG,IAAA,CAACsE,GAAG,CAACC,MAAK,QAAA,CAACC,IAAI,CAAC,UAAU,EAAEvD,KAAK,CAACwD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,MAAMtD,OAAO,CAACC,GAAG,CACf;WAAIH,KAAK,CAACyD,OAAO,EAAE;KAAC,CACjBC,IAAI,CAAC,CAAC,CAACC,CAAC,CAAC,EAAE,CAACC,CAAC,CAAC,GAAKD,CAAC,CAACE,aAAa,CAACD,CAAC,CAAC;IAAA,CAAC,CACtCxD,GAAG,CAAC,OAAO,CAAC0D,IAAI,EAAEhB,QAAQ,CAAC,GAAK;QAC/B,MAAMiB,MAAM,GAAGC,MAAM,CAACC,UAAU,CAACnB,QAAQ,EAAE,MAAM,CAAC,AAAC;QACnD/D,IAAG,IAAA,CAACsE,GAAG,CAACS,IAAI,EAAER,MAAK,QAAA,CAACY,IAAI,CAAC,CAAC,EAAEC,CAAAA,GAAAA,YAAW,AAAQ,CAAA,QAAR,CAACJ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM1D,UAAU,GAAG6C,KAAI,QAAA,CAACC,IAAI,CAACrC,SAAS,EAAEgD,IAAI,CAAC,AAAC;QAC9C,MAAMd,GAAE,QAAA,CAACoB,QAAQ,CAACC,KAAK,CAACnB,KAAI,QAAA,CAACoB,OAAO,CAACjE,UAAU,CAAC,EAAE;YAAE+C,SAAS,EAAE,IAAI;SAAE,CAAC,CAAC;QACvE,MAAMJ,GAAE,QAAA,CAACoB,QAAQ,CAACG,SAAS,CAAClE,UAAU,EAAEyC,QAAQ,CAAC,CAAC;KACnD,CAAC,CACL,CAAC;IACF/D,IAAG,IAAA,CAACsE,GAAG,CAAC,EAAE,CAAC,CAAC;CACb;AAEM,SAAS7E,2BAA2B,CACzCgE,QAAgB,EAChBC,MAAc,EACdxB,WAAoB,EACZ;IACR,IAAIuB,QAAQ,CAACgC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC5B,6FAA6F;QAE7F,yBAAyB;QACzB,MAAMC,kBAAkB,GAAG,GAAG,GAAGjC,QAAQ,CAACjC,OAAO,SAAS,EAAE,CAAC,AAAC;QAC9D,wLAAwL;QACxL,2LAA2L;QAC3L,OAAOkC,MAAM,CAAClC,OAAO,8CAA8C,CAAImE,GAAAA,KAAK,GAAK;YAC/E,IAAIzD,WAAW,EAAE;gBACf,IAAIyD,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;oBAC5B,OAAO,CAAC,IAAI,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGD,kBAAkB,CAAC;iBAChD,MAAM,IAAIC,KAAK,CAAC,CAAC,CAAC,KAAK,kBAAkB,EAAE;oBAC1C,MAAMC,OAAO,GAAGF,kBAAkB,GAAG,MAAM,AAAC;oBAC5C,OAAO,CAAC,IAAI,EAAEC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,OAAO,CAAC;iBACrC;aACF;YACD,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;KACJ;IACD,OAAOlC,MAAM,CAAC;CACf;AAEM,SAAShE,YAAY,CAAC,EAAEqB,QAAQ,CAAA,EAAqB,EAAY;IACtE,MAAM8E,SAAS,GAAG,IAAIC,GAAG,EAAU,AAAC;IAEpC,SAASC,eAAe,CAACC,OAAgD,EAAEhE,QAAQ,GAAG,EAAE,EAAE;QACxF,KAAK,MAAMiE,KAAK,IAAIC,MAAM,CAACC,MAAM,CAACH,OAAO,CAAC,CAAE;YAC1C,IAAI,OAAOC,KAAK,KAAK,QAAQ,EAAE;gBAC7B,IAAIG,QAAQ,GAAGpE,QAAQ,GAAGiE,KAAK,AAAC;gBAChC,IAAIA,KAAK,KAAK,EAAE,EAAE;oBAChBG,QAAQ,GACNpE,QAAQ,KAAK,EAAE,GACX,OAAO,GACPA,QAAQ,CAACyD,QAAQ,CAAC,GAAG,CAAC,GACtBzD,QAAQ,GAAG,OAAO,GAClBA,QAAQ,CAACqE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBAC7B;gBACD,0CAA0C;gBAC1CC,iBAAiB,CAACF,QAAQ,CAAC,CAAC;aAC7B,MAAM,IAAI,OAAOH,KAAK,KAAK,QAAQ,IAAIA,CAAAA,KAAK,QAAS,GAAdA,KAAAA,CAAc,GAAdA,KAAK,CAAED,OAAO,CAAA,EAAE;gBACtD,MAAMO,OAAO,GAAGvE,QAAQ,GAAGiE,KAAK,CAAC9B,IAAI,GAAG,GAAG,AAAC;gBAC5C4B,eAAe,CAACE,KAAK,CAACD,OAAO,EAAEO,OAAO,CAAC,CAAC;aACzC;SACF;KACF;IAED,SAASD,iBAAiB,CAACnC,IAAY,EAAE;QACvC,MAAMqC,UAAU,GAAG7G,iBAAiB,CAACwE,IAAI,CAAC,AAAC;QAC3C,KAAK,MAAMsC,SAAS,IAAID,UAAU,CAAE;YAClCX,SAAS,CAACa,GAAG,CAACD,SAAS,CAAC,CAAC;SAC1B;KACF;IAEDV,eAAe,CAAChF,QAAQ,CAACiF,OAAO,CAAC,CAAC;IAElC,OAAOW,KAAK,CAACC,IAAI,CAACf,SAAS,CAAC,CAACxE,GAAG,CAAC,CAAC4E,KAAK,GAAK;QAC1C,MAAMY,KAAK,GAAGZ,KAAK,CAACa,KAAK,CAAC,GAAG,CAAC,AAAC;QAC/B,yDAAyD;QACzD,MAAMC,eAAe,GAAGF,KAAK,CAACxF,GAAG,CAAC,CAAC2F,IAAI,GAAK;YAC1C,IAAIA,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC,EAAE;gBACxB,OAAO,CAAC,CAAC,EAAED,IAAI,CAACX,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7B,MAAM,IAAIW,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC/B,OAAO,CAAC,IAAI,EAAED,IAAI,CAACX,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAChC;YACD,OAAOW,IAAI,CAAC;SACb,CAAC,AAAC;QACH,OAAOD,eAAe,CAAC3C,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;KAC5C,CAAC,CAAC;CACJ;AAIM,SAASzE,iBAAiB,CAACuH,SAAiB,EAAY;IAC7D,MAAMV,UAAU,GAAG,IAAIV,GAAG,CAAS;QAACoB,SAAS;KAAC,CAAC,AAAC;IAChD,MAAMC,SAAQ,GAAGD,SAAS,CAACJ,KAAK,CAAC,GAAG,CAAC,AAAC;IAEtC,SAASM,kBAAkB,CAACD,QAAkB,EAAEE,KAAa,EAAQ;QACnE,IAAIA,KAAK,IAAIF,QAAQ,CAACnC,MAAM,EAAE;YAC5B,OAAO;SACR;QAED,MAAMsC,WAAW,GAAG;eAAIH,QAAQ;SAAC,AAAC;QAClC,MACEE,KAAK,GAAGC,WAAW,CAACtC,MAAM,IAC1BpE,cAAc,CAAC0G,WAAW,CAACD,KAAK,CAAC,CAAC,IAClCC,WAAW,CAACtC,MAAM,GAAG,CAAC,CACtB;YACAsC,WAAW,CAACC,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7Bb,UAAU,CAACE,GAAG,CAACY,WAAW,CAAClD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACtCgD,kBAAkB,CAACE,WAAW,EAAED,KAAK,GAAG,CAAC,CAAC,CAAC;SAC5C;QAEDD,kBAAkB,CAACD,QAAQ,EAAEE,KAAK,GAAG,CAAC,CAAC,CAAC;KACzC;IAEDD,kBAAkB,CAACD,SAAQ,EAAE,CAAC,CAAC,CAAC;IAEhC,OAAOR,KAAK,CAACC,IAAI,CAACJ,UAAU,CAAC,CAAC;CAC/B;AAED,eAAe5C,oBAAoB,CAAC,EAClC7B,SAAS,CAAA,EACT8B,MAAM,CAAA,EACNvB,MAAM,CAAA,EAKP,EAAgC;IAC/B,MAAMkF,OAAO,GAAGrD,KAAI,QAAA,CAACC,IAAI,CAACrC,SAAS,EAAE,iBAAiB,CAAC,AAAC;IACxDkC,GAAE,QAAA,CAACC,SAAS,CAACC,KAAI,QAAA,CAACC,IAAI,CAACoD,OAAO,CAAC,EAAE;QAAEnD,SAAS,EAAE,IAAI;KAAE,CAAC,CAAC;IAEtD,MAAM,CAACtD,QAAQ,EAAEE,MAAK,CAAC,GAAG,MAAME,OAAO,CAACC,GAAG,CAAC;QAC1CyC,MAAM,CAAC4D,gCAAgC,CAAC;YACtCnF,MAAM;SACP,CAAC;QACFuB,MAAM,CACH6D,8BAA8B,CAAC;YAC9BpH,IAAI,EAAE,YAAY;YAClBgC,MAAM;SACP,CAAC,CACDqF,IAAI,CAAC,CAACC,MAAM,GAAK;YAChB,MAAM3G,KAAK,GAAG,IAAIC,GAAG,EAAkB,AAAC;YACxC,KAAK,MAAM,CAAC4C,KAAK,EAAEC,QAAQ,CAAC,IAAI6D,MAAM,CAAE;gBACtC3G,KAAK,CAACQ,GAAG,CAAC0C,KAAI,QAAA,CAACC,IAAI,CAAC,iBAAiB,EAAEN,KAAK,CAAC,EAAEC,QAAQ,CAAC,CAAC;aAC1D;YACD,OAAO9C,KAAK,CAAC;SACd,CAAC;KACL,CAAC,AAAC;IAEHjB,IAAG,IAAA,CAACsE,GAAG,CAACC,MAAK,QAAA,CAACC,IAAI,CAAC,UAAU,EAAEvD,MAAK,CAACwD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAEzDxD,MAAK,CAACQ,GAAG,CAAC,mBAAmB,EAAEoG,IAAI,CAACC,SAAS,CAAC/G,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAElE,OAAOE,MAAK,CAAC;CACd;AAED,SAAS+C,6BAA6B,CAAC1B,MAAc,EAAE;IACrD,MAAMqB,SAAS,GAAGoE,CAAAA,GAAAA,OAAwB,AAAQ,CAAA,yBAAR,CAACzF,MAAM,CAAC,AAAC;IACnD,IAAIqB,SAAS,CAACqB,MAAM,EAAE;QACpB,0CAA0C;QAC1ChF,IAAG,IAAA,CAACC,IAAI,CACNsE,MAAK,QAAA,CAACyD,MAAM,CAAC,0GAA0G,EAAErE,SAAS,CAC/HtC,GAAG,CAAC,CAAC4G,CAAC,GAAK9D,KAAI,QAAA,CAAC+D,QAAQ,CAAC5F,MAAM,EAAE2F,CAAC,CAAC;QAAA,CAAC,CACpC7D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAChB,CAAC;KACH;CACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/export/exportStaticAsync.ts"],"sourcesContent":["/**\n * Copyright © 2022 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 { getConfig } from '@expo/config';\nimport { SerialAsset } from '@expo/metro-config/build/serializer/serializerAssets';\nimport assert from 'assert';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\nimport prettyBytes from 'pretty-bytes';\nimport { inspect } from 'util';\n\nimport { getVirtualFaviconAssetsAsync } from './favicon';\nimport { persistMetroAssetsAsync } from './persistMetroAssets';\nimport { Log } from '../log';\nimport { DevServerManager } from '../start/server/DevServerManager';\nimport { MetroBundlerDevServer } from '../start/server/metro/MetroBundlerDevServer';\nimport { ExpoRouterServerManifestV1 } from '../start/server/metro/fetchRouterManifest';\nimport { logMetroErrorAsync } from '../start/server/metro/metroErrorInterface';\nimport {\n getApiRoutesForDirectory,\n getRouterDirectoryWithManifest,\n} from '../start/server/metro/router';\nimport { serializeHtmlWithAssets } from '../start/server/metro/serializeHtml';\nimport { learnMore } from '../utils/link';\nimport { getFreePortAsync } from '../utils/port';\n\nconst debug = require('debug')('expo:export:generateStaticRoutes') as typeof console.log;\n\ntype Options = {\n outputDir: string;\n minify: boolean;\n exportServer: boolean;\n baseUrl: string;\n includeMaps: boolean;\n entryPoint?: string;\n clear: boolean;\n};\n\n/** @private */\nexport async function unstable_exportStaticAsync(projectRoot: string, options: Options) {\n Log.warn(\n `Experimental static rendering is enabled. ` +\n learnMore('https://docs.expo.dev/router/reference/static-rendering/')\n );\n\n // Useful for running parallel e2e tests in CI.\n const port = await getFreePortAsync(8082);\n\n // TODO: Prevent starting the watcher.\n const devServerManager = new DevServerManager(projectRoot, {\n minify: options.minify,\n mode: 'production',\n port,\n location: {},\n resetDevServer: options.clear,\n });\n await devServerManager.startAsync([\n {\n type: 'metro',\n options: {\n port,\n location: {},\n isExporting: true,\n resetDevServer: options.clear,\n },\n },\n ]);\n\n try {\n await exportFromServerAsync(projectRoot, devServerManager, options);\n } finally {\n await devServerManager.stopAsync();\n }\n}\n\n/** Match `(page)` -> `page` */\nfunction matchGroupName(name: string): string | undefined {\n return name.match(/^\\(([^/]+?)\\)$/)?.[1];\n}\n\nexport async function getFilesToExportFromServerAsync(\n projectRoot: string,\n {\n manifest,\n renderAsync,\n includeGroupVariations,\n }: {\n manifest: any;\n renderAsync: (pathname: string) => Promise<string>;\n includeGroupVariations?: boolean;\n }\n): Promise<Map<string, string>> {\n // name : contents\n const files = new Map<string, string>();\n\n await Promise.all(\n getHtmlFiles({ manifest, includeGroupVariations }).map(async (outputPath) => {\n const pathname = outputPath.replace(/(?:index)?\\.html$/, '');\n try {\n files.set(outputPath, '');\n const data = await renderAsync(pathname);\n files.set(outputPath, data);\n } catch (e: any) {\n await logMetroErrorAsync({ error: e, projectRoot });\n throw new Error('Failed to statically export route: ' + pathname);\n }\n })\n );\n\n return files;\n}\n\n/** Perform all fs commits */\nexport async function exportFromServerAsync(\n projectRoot: string,\n devServerManager: DevServerManager,\n { outputDir, baseUrl, exportServer, minify, includeMaps }: Options\n): Promise<void> {\n const { exp } = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n const appDir = getRouterDirectoryWithManifest(projectRoot, exp);\n\n const injectFaviconTag = await getVirtualFaviconAssetsAsync(projectRoot, { outputDir, baseUrl });\n\n const devServer = devServerManager.getDefaultDevServer();\n assert(devServer instanceof MetroBundlerDevServer);\n\n const [resources, { manifest, serverManifest, renderAsync }] = await Promise.all([\n devServer.getStaticResourcesAsync({ mode: 'production', minify, includeMaps, baseUrl }),\n devServer.getStaticRenderFunctionAsync({\n mode: 'production',\n minify,\n baseUrl,\n }),\n ]);\n\n debug('Routes:\\n', inspect(manifest, { colors: true, depth: null }));\n\n const files = await getFilesToExportFromServerAsync(projectRoot, {\n manifest,\n // Servers can handle group routes automatically and therefore\n // don't require the build-time generation of every possible group\n // variation.\n includeGroupVariations: !exportServer,\n async renderAsync(pathname: string) {\n const template = await renderAsync(pathname);\n let html = await serializeHtmlWithAssets({\n mode: 'production',\n resources: resources.artifacts,\n template,\n baseUrl,\n });\n\n if (injectFaviconTag) {\n html = injectFaviconTag(html);\n }\n\n return html;\n },\n });\n\n getFilesFromSerialAssets(resources.artifacts, {\n includeMaps,\n files,\n });\n\n if (resources.assets) {\n await persistMetroAssetsAsync(resources.assets, {\n platform: 'web',\n outputDirectory: outputDir,\n baseUrl,\n });\n }\n\n if (exportServer) {\n const apiRoutes = await exportApiRoutesAsync({\n outputDir,\n server: devServer,\n appDir,\n manifest: serverManifest,\n baseUrl,\n });\n\n // Add the api routes to the files to export.\n for (const [route, contents] of apiRoutes) {\n files.set(route, contents);\n }\n } else {\n warnPossibleInvalidExportType(appDir);\n }\n\n await persistMetroFilesAsync(files, outputDir);\n}\n\n// TODO: Move source map modification to the serializer\nexport function getFilesFromSerialAssets(\n resources: SerialAsset[],\n {\n includeMaps,\n files = new Map<string, string>(),\n }: {\n includeMaps: boolean;\n files?: Map<string, string>;\n }\n) {\n resources.forEach((resource) => {\n files.set(\n resource.filename,\n modifyBundlesWithSourceMaps(resource.filename, resource.source, includeMaps)\n );\n });\n\n return files;\n}\n\nexport async function persistMetroFilesAsync(files: Map<string, string>, outputDir: string) {\n fs.mkdirSync(path.join(outputDir), { recursive: true });\n\n Log.log('');\n\n Log.log(chalk.bold`Exporting ${files.size} files:`);\n await Promise.all(\n [...files.entries()]\n .sort(([a], [b]) => a.localeCompare(b))\n .map(async ([file, contents]) => {\n const length = Buffer.byteLength(contents, 'utf8');\n Log.log(file, chalk.gray`(${prettyBytes(length)})`);\n const outputPath = path.join(outputDir, file);\n await fs.promises.mkdir(path.dirname(outputPath), { recursive: true });\n await fs.promises.writeFile(outputPath, contents);\n })\n );\n Log.log('');\n}\n\nexport function modifyBundlesWithSourceMaps(\n filename: string,\n source: string,\n includeMaps: boolean\n): string {\n if (filename.endsWith('.js')) {\n // If the bundle ends with source map URLs then update them to point to the correct location.\n\n // TODO: baseUrl support\n const normalizedFilename = '/' + filename.replace(/^\\/+/, '');\n // Ref: https://developer.chrome.com/blog/sourcemaps/#sourceurl-and-displayname-in-action-eval-and-anonymous-functions\n //# sourceMappingURL=//localhost:8085/index.map?platform=web&dev=false&hot=false&lazy=true&minify=true&resolver.environment=client&transform.environment=client&serializer.output=static\n //# sourceURL=http://localhost:8085/index.bundle//&platform=web&dev=false&hot=false&lazy=true&minify=true&resolver.environment=client&transform.environment=client&serializer.output=static\n return source.replace(/^\\/\\/# (sourceMappingURL|sourceURL)=.*$/gm, (...props) => {\n if (includeMaps) {\n if (props[1] === 'sourceURL') {\n return `//# ${props[1]}=` + normalizedFilename;\n } else if (props[1] === 'sourceMappingURL') {\n const mapName = normalizedFilename + '.map';\n return `//# ${props[1]}=` + mapName;\n }\n }\n return '';\n });\n }\n return source;\n}\n\nexport function getHtmlFiles({\n manifest,\n includeGroupVariations,\n}: {\n manifest: any;\n includeGroupVariations?: boolean;\n}): string[] {\n const htmlFiles = new Set<string>();\n\n function traverseScreens(screens: string | { screens: any; path: string }, baseUrl = '') {\n for (const value of Object.values(screens)) {\n if (typeof value === 'string') {\n let filePath = baseUrl + value;\n if (value === '') {\n filePath =\n baseUrl === ''\n ? 'index'\n : baseUrl.endsWith('/')\n ? baseUrl + 'index'\n : baseUrl.slice(0, -1);\n }\n if (includeGroupVariations) {\n // TODO: Dedupe requests for alias routes.\n addOptionalGroups(filePath);\n } else {\n htmlFiles.add(filePath);\n }\n } else if (typeof value === 'object' && value?.screens) {\n const newPath = baseUrl + value.path + '/';\n traverseScreens(value.screens, newPath);\n }\n }\n }\n\n function addOptionalGroups(path: string) {\n const variations = getPathVariations(path);\n for (const variation of variations) {\n htmlFiles.add(variation);\n }\n }\n\n traverseScreens(manifest.screens);\n\n return Array.from(htmlFiles).map((value) => {\n const parts = value.split('/');\n // Replace `:foo` with `[foo]` and `*foo` with `[...foo]`\n const partsWithGroups = parts.map((part) => {\n if (part === '*not-found') {\n return `+not-found`;\n } else if (part.startsWith(':')) {\n return `[${part.slice(1)}]`;\n } else if (part.startsWith('*')) {\n return `[...${part.slice(1)}]`;\n }\n return part;\n });\n return partsWithGroups.join('/') + '.html';\n });\n}\n\n// Given a route like `(foo)/bar/(baz)`, return all possible variations of the route.\n// e.g. `(foo)/bar/(baz)`, `(foo)/bar/baz`, `foo/bar/(baz)`, `foo/bar/baz`,\nexport function getPathVariations(routePath: string): string[] {\n const variations = new Set<string>();\n const segments = routePath.split('/');\n\n function generateVariations(segments: string[], current = ''): void {\n if (segments.length === 0) {\n if (current) variations.add(current);\n return;\n }\n\n const [head, ...rest] = segments;\n\n if (head.startsWith('(foo,foo')) {\n }\n\n if (matchGroupName(head)) {\n const groups = head.slice(1, -1).split(',');\n\n if (groups.length > 1) {\n for (const group of groups) {\n // If there are multiple groups, recurse on each group.\n generateVariations([`(${group.trim()})`, ...rest], current);\n }\n return;\n } else {\n // Start a fork where this group is included\n generateVariations(rest, current ? `${current}/(${groups[0]})` : `(${groups[0]})`);\n // This code will continue and add paths without this group included`\n }\n } else if (current) {\n current = `${current}/${head}`;\n } else {\n current = head;\n }\n\n generateVariations(rest, current);\n }\n\n generateVariations(segments);\n\n return Array.from(variations);\n}\n\nasync function exportApiRoutesAsync({\n outputDir,\n server,\n appDir,\n baseUrl,\n ...props\n}: {\n outputDir: string;\n server: MetroBundlerDevServer;\n appDir: string;\n manifest: ExpoRouterServerManifestV1;\n baseUrl: string;\n}): Promise<Map<string, string>> {\n const functionsDir = '_expo/functions';\n const funcDir = path.join(outputDir, functionsDir);\n fs.mkdirSync(path.join(funcDir), { recursive: true });\n\n const { manifest, files } = await server.exportExpoRouterApiRoutesAsync({\n mode: 'production',\n appDir,\n outputDir: functionsDir,\n prerenderManifest: props.manifest,\n baseUrl,\n });\n\n Log.log(chalk.bold`Exporting ${files.size} API Routes.`);\n\n files.set('_expo/routes.json', JSON.stringify(manifest, null, 2));\n\n return files;\n}\n\nfunction warnPossibleInvalidExportType(appDir: string) {\n const apiRoutes = getApiRoutesForDirectory(appDir);\n if (apiRoutes.length) {\n // TODO: Allow API Routes for native-only.\n Log.warn(\n chalk.yellow`Skipping export for API routes because \\`web.output\\` is not \"server\". You may want to remove the routes: ${apiRoutes\n .map((v) => path.relative(appDir, v))\n .join(', ')}`\n );\n }\n}\n"],"names":["unstable_exportStaticAsync","getFilesToExportFromServerAsync","exportFromServerAsync","getFilesFromSerialAssets","persistMetroFilesAsync","modifyBundlesWithSourceMaps","getHtmlFiles","getPathVariations","debug","require","projectRoot","options","Log","warn","learnMore","port","getFreePortAsync","devServerManager","DevServerManager","minify","mode","location","resetDevServer","clear","startAsync","type","isExporting","stopAsync","matchGroupName","name","match","manifest","renderAsync","includeGroupVariations","files","Map","Promise","all","map","outputPath","pathname","replace","set","data","e","logMetroErrorAsync","error","Error","outputDir","baseUrl","exportServer","includeMaps","exp","getConfig","skipSDKVersionRequirement","appDir","getRouterDirectoryWithManifest","injectFaviconTag","getVirtualFaviconAssetsAsync","devServer","getDefaultDevServer","assert","MetroBundlerDevServer","resources","serverManifest","getStaticResourcesAsync","getStaticRenderFunctionAsync","inspect","colors","depth","template","html","serializeHtmlWithAssets","artifacts","assets","persistMetroAssetsAsync","platform","outputDirectory","apiRoutes","exportApiRoutesAsync","server","route","contents","warnPossibleInvalidExportType","forEach","resource","filename","source","fs","mkdirSync","path","join","recursive","log","chalk","bold","size","entries","sort","a","b","localeCompare","file","length","Buffer","byteLength","gray","prettyBytes","promises","mkdir","dirname","writeFile","endsWith","normalizedFilename","props","mapName","htmlFiles","Set","traverseScreens","screens","value","Object","values","filePath","slice","addOptionalGroups","add","newPath","variations","variation","Array","from","parts","split","partsWithGroups","part","startsWith","routePath","segments","generateVariations","current","head","rest","groups","group","trim","functionsDir","funcDir","exportExpoRouterApiRoutesAsync","prerenderManifest","JSON","stringify","getApiRoutesForDirectory","yellow","v","relative"],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ function getUserDefinedFaviconFile(projectRoot) {
|
|
|
21
21
|
"./favicon.ico"
|
|
22
22
|
]);
|
|
23
23
|
}
|
|
24
|
-
async function getVirtualFaviconAssetsAsync(projectRoot, {
|
|
24
|
+
async function getVirtualFaviconAssetsAsync(projectRoot, { baseUrl , outputDir }) {
|
|
25
25
|
const existing = getUserDefinedFaviconFile(projectRoot);
|
|
26
26
|
if (existing) {
|
|
27
27
|
debug("Using user-defined favicon.ico file.");
|
|
@@ -42,7 +42,7 @@ async function getVirtualFaviconAssetsAsync(projectRoot, { basePath , outputDir
|
|
|
42
42
|
if (!html.includes("</head>")) {
|
|
43
43
|
return html;
|
|
44
44
|
}
|
|
45
|
-
return html.replace("</head>", `<link rel="shortcut icon" href="${
|
|
45
|
+
return html.replace("</head>", `<link rel="shortcut icon" href="${baseUrl}/favicon.ico" /></head>`);
|
|
46
46
|
}
|
|
47
47
|
return injectFaviconTag;
|
|
48
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/export/favicon.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport { generateFaviconAsync, generateImageAsync } from '@expo/image-utils';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { getUserDefinedFile } from './publicFolder';\n\nconst debug = require('debug')('expo:favicon') as typeof console.log;\n\n/** @returns the file system path for a user-defined favicon.ico file in the public folder. */\nexport function getUserDefinedFaviconFile(projectRoot: string): string | null {\n return getUserDefinedFile(projectRoot, ['./favicon.ico']);\n}\n\nexport async function getVirtualFaviconAssetsAsync(\n projectRoot: string,\n {
|
|
1
|
+
{"version":3,"sources":["../../../src/export/favicon.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport { generateFaviconAsync, generateImageAsync } from '@expo/image-utils';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { getUserDefinedFile } from './publicFolder';\n\nconst debug = require('debug')('expo:favicon') as typeof console.log;\n\n/** @returns the file system path for a user-defined favicon.ico file in the public folder. */\nexport function getUserDefinedFaviconFile(projectRoot: string): string | null {\n return getUserDefinedFile(projectRoot, ['./favicon.ico']);\n}\n\nexport async function getVirtualFaviconAssetsAsync(\n projectRoot: string,\n { baseUrl, outputDir }: { outputDir: string; baseUrl: string }\n): Promise<((html: string) => string) | null> {\n const existing = getUserDefinedFaviconFile(projectRoot);\n if (existing) {\n debug('Using user-defined favicon.ico file.');\n return null;\n }\n\n const data = await getFaviconFromExpoConfigAsync(projectRoot);\n\n if (!data) {\n return null;\n }\n\n await Promise.all(\n [data].map((asset) => {\n const assetPath = path.join(outputDir, asset.path);\n debug('Writing asset to disk: ' + assetPath);\n return fs.promises.writeFile(assetPath, asset.source);\n })\n );\n\n function injectFaviconTag(html: string): string {\n if (!html.includes('</head>')) {\n return html;\n }\n return html.replace(\n '</head>',\n `<link rel=\"shortcut icon\" href=\"${baseUrl}/favicon.ico\" /></head>`\n );\n }\n\n return injectFaviconTag;\n}\n\nexport async function getFaviconFromExpoConfigAsync(projectRoot: string) {\n const { exp } = getConfig(projectRoot);\n\n const src = exp.web?.favicon ?? null;\n if (!src) {\n return null;\n }\n\n const dims = [16, 32, 48];\n const cacheType = 'favicon';\n\n const size = dims[dims.length - 1];\n const { source } = await generateImageAsync(\n { projectRoot, cacheType },\n {\n resizeMode: 'contain',\n src,\n backgroundColor: 'transparent',\n width: size,\n height: size,\n name: `favicon-${size}.png`,\n }\n );\n\n const faviconBuffer = await generateFaviconAsync(source, dims);\n\n return { source: faviconBuffer, path: 'favicon.ico' };\n}\n"],"names":["getUserDefinedFaviconFile","getVirtualFaviconAssetsAsync","getFaviconFromExpoConfigAsync","debug","require","projectRoot","getUserDefinedFile","baseUrl","outputDir","existing","data","Promise","all","map","asset","assetPath","path","join","fs","promises","writeFile","source","injectFaviconTag","html","includes","replace","exp","getConfig","src","web","favicon","dims","cacheType","size","length","generateImageAsync","resizeMode","backgroundColor","width","height","name","faviconBuffer","generateFaviconAsync"],"mappings":"AAAA;;;;QAUgBA,yBAAyB,GAAzBA,yBAAyB;QAInBC,4BAA4B,GAA5BA,4BAA4B;QAqC5BC,6BAA6B,GAA7BA,6BAA6B;AAnDzB,IAAA,OAAc,WAAd,cAAc,CAAA;AACiB,IAAA,WAAmB,WAAnB,mBAAmB,CAAA;AAC7D,IAAA,GAAI,kCAAJ,IAAI,EAAA;AACF,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEY,IAAA,aAAgB,WAAhB,gBAAgB,CAAA;;;;;;AAEnD,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,AAAsB,AAAC;AAG9D,SAASJ,yBAAyB,CAACK,WAAmB,EAAiB;IAC5E,OAAOC,CAAAA,GAAAA,aAAkB,AAAgC,CAAA,mBAAhC,CAACD,WAAW,EAAE;QAAC,eAAe;KAAC,CAAC,CAAC;CAC3D;AAEM,eAAeJ,4BAA4B,CAChDI,WAAmB,EACnB,EAAEE,OAAO,CAAA,EAAEC,SAAS,CAAA,EAA0C,EAClB;IAC5C,MAAMC,QAAQ,GAAGT,yBAAyB,CAACK,WAAW,CAAC,AAAC;IACxD,IAAII,QAAQ,EAAE;QACZN,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;KACb;IAED,MAAMO,IAAI,GAAG,MAAMR,6BAA6B,CAACG,WAAW,CAAC,AAAC;IAE9D,IAAI,CAACK,IAAI,EAAE;QACT,OAAO,IAAI,CAAC;KACb;IAED,MAAMC,OAAO,CAACC,GAAG,CACf;QAACF,IAAI;KAAC,CAACG,GAAG,CAAC,CAACC,KAAK,GAAK;QACpB,MAAMC,SAAS,GAAGC,KAAI,QAAA,CAACC,IAAI,CAACT,SAAS,EAAEM,KAAK,CAACE,IAAI,CAAC,AAAC;QACnDb,KAAK,CAAC,yBAAyB,GAAGY,SAAS,CAAC,CAAC;QAC7C,OAAOG,GAAE,QAAA,CAACC,QAAQ,CAACC,SAAS,CAACL,SAAS,EAAED,KAAK,CAACO,MAAM,CAAC,CAAC;KACvD,CAAC,CACH,CAAC;IAEF,SAASC,gBAAgB,CAACC,IAAY,EAAU;QAC9C,IAAI,CAACA,IAAI,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC7B,OAAOD,IAAI,CAAC;SACb;QACD,OAAOA,IAAI,CAACE,OAAO,CACjB,SAAS,EACT,CAAC,gCAAgC,EAAElB,OAAO,CAAC,uBAAuB,CAAC,CACpE,CAAC;KACH;IAED,OAAOe,gBAAgB,CAAC;CACzB;AAEM,eAAepB,6BAA6B,CAACG,WAAmB,EAAE;QAG3DqB,GAAO;IAFnB,MAAM,EAAEA,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAAa,CAAA,UAAb,CAACtB,WAAW,CAAC,AAAC;QAE3BqB,IAAgB;IAA5B,MAAME,GAAG,GAAGF,CAAAA,IAAgB,GAAhBA,CAAAA,GAAO,GAAPA,GAAG,CAACG,GAAG,SAAS,GAAhBH,KAAAA,CAAgB,GAAhBA,GAAO,CAAEI,OAAO,YAAhBJ,IAAgB,GAAI,IAAI,AAAC;IACrC,IAAI,CAACE,GAAG,EAAE;QACR,OAAO,IAAI,CAAC;KACb;IAED,MAAMG,IAAI,GAAG;AAAC,UAAE;AAAE,UAAE;AAAE,UAAE;KAAC,AAAC;IAC1B,MAAMC,SAAS,GAAG,SAAS,AAAC;IAE5B,MAAMC,IAAI,GAAGF,IAAI,CAACA,IAAI,CAACG,MAAM,GAAG,CAAC,CAAC,AAAC;IACnC,MAAM,EAAEb,MAAM,CAAA,EAAE,GAAG,MAAMc,CAAAA,GAAAA,WAAkB,AAU1C,CAAA,mBAV0C,CACzC;QAAE9B,WAAW;QAAE2B,SAAS;KAAE,EAC1B;QACEI,UAAU,EAAE,SAAS;QACrBR,GAAG;QACHS,eAAe,EAAE,aAAa;QAC9BC,KAAK,EAAEL,IAAI;QACXM,MAAM,EAAEN,IAAI;QACZO,IAAI,EAAE,CAAC,QAAQ,EAAEP,IAAI,CAAC,IAAI,CAAC;KAC5B,CACF,AAAC;IAEF,MAAMQ,aAAa,GAAG,MAAMC,CAAAA,GAAAA,WAAoB,AAAc,CAAA,qBAAd,CAACrB,MAAM,EAAEU,IAAI,CAAC,AAAC;IAE/D,OAAO;QAAEV,MAAM,EAAEoB,aAAa;QAAEzB,IAAI,EAAE,aAAa;KAAE,CAAC;CACvD"}
|
|
@@ -2,16 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports.
|
|
5
|
+
exports.createBundlesAsync = createBundlesAsync;
|
|
6
6
|
exports.getAssets = getAssets;
|
|
7
7
|
var _config = require("@expo/config");
|
|
8
8
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
|
+
var _metro = _interopRequireDefault(require("metro"));
|
|
9
10
|
var _getAssets = _interopRequireDefault(require("metro/src/DeltaBundler/Serializers/getAssets"));
|
|
11
|
+
var _server = _interopRequireDefault(require("metro/src/Server"));
|
|
10
12
|
var _splitBundleOptions = _interopRequireDefault(require("metro/src/lib/splitBundleOptions"));
|
|
11
13
|
var _exportHermes = require("./exportHermes");
|
|
12
14
|
var _getCssModulesFromBundler = require("../start/server/metro/getCssModulesFromBundler");
|
|
13
15
|
var _instantiateMetro = require("../start/server/metro/instantiateMetro");
|
|
14
|
-
var
|
|
16
|
+
var _manifestMiddleware = require("../start/server/middleware/ManifestMiddleware");
|
|
17
|
+
var _metroOptions = require("../start/server/middleware/metroOptions");
|
|
15
18
|
function _interopRequireDefault(obj) {
|
|
16
19
|
return obj && obj.__esModule ? obj : {
|
|
17
20
|
default: obj
|
|
@@ -25,43 +28,68 @@ async function assertEngineMismatchAsync(projectRoot, exp, platform) {
|
|
|
25
28
|
const configFilePath = (ref = (_dynamicConfigPath = paths.dynamicConfigPath) != null ? _dynamicConfigPath : paths.staticConfigPath) != null ? ref : "app.json";
|
|
26
29
|
await (0, _exportHermes).maybeThrowFromInconsistentEngineAsync(projectRoot, configFilePath, platform, isHermesManaged);
|
|
27
30
|
}
|
|
28
|
-
async function
|
|
31
|
+
async function createBundlesAsync(projectRoot, projectConfig, bundleOptions) {
|
|
32
|
+
if (!bundleOptions.platforms.length) {
|
|
33
|
+
return {};
|
|
34
|
+
}
|
|
35
|
+
const { exp , pkg } = projectConfig;
|
|
36
|
+
const bundles = await bundleProductionMetroClientAsync(projectRoot, exp, {
|
|
37
|
+
// If not legacy, ignore the target option to prevent warnings from being thrown.
|
|
38
|
+
resetCache: bundleOptions.clear,
|
|
39
|
+
maxWorkers: bundleOptions.maxWorkers
|
|
40
|
+
}, bundleOptions.platforms.map((platform)=>({
|
|
41
|
+
platform,
|
|
42
|
+
entryPoint: (0, _manifestMiddleware).getEntryWithServerRoot(projectRoot, {
|
|
43
|
+
platform,
|
|
44
|
+
pkg
|
|
45
|
+
}),
|
|
46
|
+
sourcemaps: bundleOptions.sourcemaps,
|
|
47
|
+
minify: bundleOptions.minify,
|
|
48
|
+
dev: bundleOptions.dev
|
|
49
|
+
})
|
|
50
|
+
));
|
|
51
|
+
// { ios: bundle, android: bundle }
|
|
52
|
+
return bundleOptions.platforms.reduce((prev, platform, index)=>({
|
|
53
|
+
...prev,
|
|
54
|
+
[platform]: bundles[index]
|
|
55
|
+
})
|
|
56
|
+
, {});
|
|
57
|
+
}
|
|
58
|
+
async function bundleProductionMetroClientAsync(projectRoot, expoConfig, metroOptions, bundles) {
|
|
29
59
|
// Assert early so the user doesn't have to wait until bundling is complete to find out that
|
|
30
60
|
// Hermes won't be available.
|
|
31
61
|
await Promise.all(bundles.map(({ platform })=>assertEngineMismatchAsync(projectRoot, expoConfig, platform)
|
|
32
62
|
));
|
|
33
|
-
const
|
|
34
|
-
const Server = (0, _resolveFromProject).importMetroServerFromProject(projectRoot);
|
|
35
|
-
const { config , reporter } = await (0, _instantiateMetro).loadMetroConfigAsync(projectRoot, options, {
|
|
63
|
+
const { config , reporter } = await (0, _instantiateMetro).loadMetroConfigAsync(projectRoot, metroOptions, {
|
|
36
64
|
exp: expoConfig,
|
|
37
65
|
isExporting: true
|
|
38
66
|
});
|
|
39
|
-
const metroServer = await
|
|
67
|
+
const metroServer = await _metro.default.runMetro(config, {
|
|
40
68
|
watch: false
|
|
41
69
|
});
|
|
42
70
|
const buildAsync = async (bundle)=>{
|
|
43
71
|
const buildID = `bundle_${nextBuildID++}_${bundle.platform}`;
|
|
44
72
|
const isHermes = (0, _exportHermes).isEnableHermesManaged(expoConfig, bundle.platform);
|
|
45
|
-
var _dev, _minify;
|
|
46
73
|
const bundleOptions = {
|
|
47
|
-
...
|
|
74
|
+
..._server.default.DEFAULT_BUNDLE_OPTIONS,
|
|
75
|
+
...(0, _metroOptions).getMetroDirectBundleOptions({
|
|
76
|
+
mainModuleName: bundle.entryPoint,
|
|
77
|
+
platform: bundle.platform,
|
|
78
|
+
mode: bundle.dev ? "development" : "production",
|
|
79
|
+
engine: isHermes ? "hermes" : undefined,
|
|
80
|
+
baseUrl: (0, _metroOptions).getBaseUrlFromExpoConfig(expoConfig)
|
|
81
|
+
}),
|
|
48
82
|
bundleType: "bundle",
|
|
49
|
-
platform: bundle.platform,
|
|
50
|
-
entryFile: bundle.entryPoint,
|
|
51
|
-
dev: (_dev = bundle.dev) != null ? _dev : false,
|
|
52
|
-
minify: !isHermes && ((_minify = bundle.minify) != null ? _minify : !bundle.dev),
|
|
53
83
|
inlineSourceMap: false,
|
|
54
84
|
sourceMapUrl: bundle.sourceMapUrl,
|
|
55
85
|
createModuleIdFactory: config.serializer.createModuleIdFactory,
|
|
56
86
|
onProgress: (transformedFileCount, totalFileCount)=>{
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
});
|
|
64
|
-
}
|
|
87
|
+
reporter.update({
|
|
88
|
+
buildID,
|
|
89
|
+
type: "bundle_transform_progressed",
|
|
90
|
+
transformedFileCount,
|
|
91
|
+
totalFileCount
|
|
92
|
+
});
|
|
65
93
|
}
|
|
66
94
|
};
|
|
67
95
|
const bundleDetails = {
|
|
@@ -108,9 +136,14 @@ async function bundleAsync(projectRoot, expoConfig, options, bundles) {
|
|
|
108
136
|
}[platform] || platform);
|
|
109
137
|
reporter.terminal.log(`${platformTag} Building Hermes bytecode for the bundle`);
|
|
110
138
|
var _minify;
|
|
111
|
-
const hermesBundleOutput = await (0, _exportHermes).buildHermesBundleAsync(projectRoot,
|
|
139
|
+
const hermesBundleOutput = await (0, _exportHermes).buildHermesBundleAsync(projectRoot, {
|
|
140
|
+
code: bundleOutput.code,
|
|
141
|
+
map: bundle.sourcemaps ? bundleOutput.map : null,
|
|
142
|
+
minify: (_minify = bundle.minify) != null ? _minify : !bundle.dev
|
|
143
|
+
});
|
|
112
144
|
bundleOutput.hermesBytecodeBundle = hermesBundleOutput.hbc;
|
|
113
|
-
|
|
145
|
+
var _sourcemap;
|
|
146
|
+
bundleOutput.hermesSourcemap = (_sourcemap = hermesBundleOutput.sourcemap) != null ? _sourcemap : undefined;
|
|
114
147
|
}
|
|
115
148
|
return bundleOutput;
|
|
116
149
|
};
|