xdl
Version:
The Expo Development Library
1 lines • 19.7 kB
Source Map (JSON)
{"version":3,"file":"publishAsync.js","names":["_config","data","require","_formData","_interopRequireDefault","_fsExtra","_path","_internal","obj","__esModule","default","publishAsync","projectRoot","options","_options$target","_bundles$android$herm","_bundles$android","_bundles$android2","_bundles$ios$hermesBy","_bundles$ios","_bundles$ios2","_ref","_bundles$android$herm2","_bundles$android3","_bundles$android4","_ref2","_bundles$ios$hermesSo","_bundles$ios3","_bundles$ios4","_exp$ios","_exp$android","_options$releaseChann","target","getDefaultTarget","user","UserManager","ensureLoggedInAsync","Env","isDebug","console","log","Analytics","logEvent","developerTool","Config","validationStatus","Doctor","validateWithNetworkAsync","ERROR","FATAL","XDLError","exp","pkg","hooks","getPublishExpConfigAsync","validPostPublishHooks","prepareHooks","bundles","createBundlesAsync","platforms","useDevServer","shouldUseDevServer","printBundleSizes","ProjectAssets","publishAssetsAsync","androidBundle","android","hermesBytecodeBundle","code","iosBundle","ios","hasHooks","length","androidSourceMap","hermesSourcemap","map","iosSourceMap","response","_uploadArtifactsAsync","e","serverError","Error","androidManifest","iosManifest","fullManifestUrl","url","replace","publishManifestPath","EmbeddedAssets","shouldEmbedAssetsForExpoUpdates","sdkOrRuntimeVersion","runtimeVersion","sdkVersion","Promise","all","ExponentTools","getManifestAsync","releaseChannel","Accept","hookOptions","iosManifestUrl","androidManifestUrl","msg","logger","global","info","quiet","hook","file","runHook","warn","stack","configureAsync","isKernel","_handleKernelPublishedAsync","projectPageUrl","createProjectPageURL","formData","FormData","append","JSON","stringify","api","ApiV2","clientForUser","uploadFormDataAsync","_exp$kernel","_exp$kernel2","owner","kind","username","kernelBundleUrl","scheme","host","port","slug","kernel","androidManifestPath","manifest","bundleUrl","fs","writeFile","path","resolve","iosManifestPath","formattedProjectUrl"],"sources":["../../src/project/publishAsync.ts"],"sourcesContent":["import {\n ExpoAppManifest,\n ExpoConfig,\n getDefaultTarget,\n HookArguments,\n PackageJSONConfig,\n} from '@expo/config';\nimport FormData from 'form-data';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nimport { RobotUser } from '../User';\nimport {\n Analytics,\n ApiV2,\n Config,\n createBundlesAsync,\n Doctor,\n EmbeddedAssets,\n Env,\n ExponentTools,\n getPublishExpConfigAsync,\n LoadedHook,\n Logger as logger,\n prepareHooks,\n printBundleSizes,\n ProjectAssets,\n PublishOptions,\n runHook,\n User,\n UserManager,\n XDLError,\n} from '../internal';\n\nexport interface PublishedProjectResult {\n /**\n * Project manifest URL\n */\n url: string;\n /**\n * Project page URL\n */\n projectPageUrl: string;\n /**\n * TODO: What is this?\n */\n ids: string[];\n /**\n * TODO: What is this? Where does it come from?\n */\n err?: string;\n}\n\nexport async function publishAsync(\n projectRoot: string,\n options: PublishOptions = {}\n): Promise<PublishedProjectResult> {\n options.target = options.target ?? getDefaultTarget(projectRoot);\n const target = options.target;\n const user = await UserManager.ensureLoggedInAsync();\n\n if (Env.isDebug()) {\n console.log();\n console.log('Publish Assets:');\n console.log(`- Asset target: ${target}`);\n console.log();\n }\n\n Analytics.logEvent('Publish', {\n developerTool: Config.developerTool,\n });\n\n const validationStatus = await Doctor.validateWithNetworkAsync(projectRoot);\n if (validationStatus === Doctor.ERROR || validationStatus === Doctor.FATAL) {\n throw new XDLError(\n 'PUBLISH_VALIDATION_ERROR',\n \"Couldn't publish because errors were found. (See logs above.) Please fix the errors and try again.\"\n );\n }\n\n // Get project config\n const { exp, pkg, hooks } = await getPublishExpConfigAsync(projectRoot, options);\n\n // TODO: refactor this out to a function, throw error if length doesn't match\n const validPostPublishHooks: LoadedHook[] = prepareHooks(hooks, 'postPublish', projectRoot);\n const bundles = await createBundlesAsync(projectRoot, options, {\n platforms: ['ios', 'android'],\n useDevServer: Env.shouldUseDevServer(exp),\n });\n\n printBundleSizes(bundles);\n\n await ProjectAssets.publishAssetsAsync({ projectRoot, exp, bundles });\n\n const androidBundle = bundles.android?.hermesBytecodeBundle ?? bundles.android?.code!;\n const iosBundle = bundles.ios?.hermesBytecodeBundle ?? bundles.ios?.code!;\n\n const hasHooks = validPostPublishHooks.length > 0;\n\n const androidSourceMap = hasHooks\n ? bundles.android?.hermesSourcemap ?? bundles.android?.map ?? null\n : null;\n const iosSourceMap = hasHooks ? bundles.ios?.hermesSourcemap ?? bundles.ios?.map ?? null : null;\n\n let response;\n try {\n response = await _uploadArtifactsAsync({\n pkg,\n exp,\n iosBundle,\n androidBundle,\n options,\n });\n } catch (e: any) {\n if (e.serverError === 'SCHEMA_VALIDATION_ERROR') {\n throw new Error(\n `There was an error validating your project schema. Check for any warnings about the contents of your app.json or app.config.js.`\n );\n }\n throw e;\n }\n\n let androidManifest = {};\n let iosManifest = {};\n const fullManifestUrl = response.url.replace('exp://', 'https://');\n\n if (\n validPostPublishHooks.length ||\n exp.ios?.publishManifestPath ||\n exp.android?.publishManifestPath ||\n EmbeddedAssets.shouldEmbedAssetsForExpoUpdates(projectRoot, exp, pkg, target)\n ) {\n const sdkOrRuntimeVersion = exp.runtimeVersion\n ? {\n 'expo-runtime-version': exp.runtimeVersion,\n }\n : { 'expo-sdk-version': exp.sdkVersion };\n\n [androidManifest, iosManifest] = await Promise.all([\n ExponentTools.getManifestAsync(response.url, {\n ...sdkOrRuntimeVersion,\n 'Exponent-Platform': 'android',\n 'Expo-Release-Channel': options.releaseChannel,\n Accept: 'application/expo+json,application/json',\n }),\n ExponentTools.getManifestAsync(response.url, {\n ...sdkOrRuntimeVersion,\n 'Exponent-Platform': 'ios',\n 'Expo-Release-Channel': options.releaseChannel,\n Accept: 'application/expo+json,application/json',\n }),\n ]);\n\n const hookOptions: Omit<HookArguments, 'config'> = {\n url: response.url,\n exp,\n iosBundle,\n iosSourceMap,\n iosManifest,\n iosManifestUrl: fullManifestUrl,\n androidBundle,\n androidSourceMap,\n androidManifest,\n androidManifestUrl: fullManifestUrl,\n projectRoot,\n log: (msg: any) => {\n logger.global.info({ quiet: true }, msg);\n },\n };\n\n for (const hook of validPostPublishHooks) {\n logger.global.info(`Running postPublish hook: ${hook.file}`);\n try {\n runHook(hook, hookOptions);\n } catch (e: any) {\n logger.global.warn(`Warning: postPublish hook '${hook.file}' failed: ${e.stack}`);\n }\n }\n }\n\n await EmbeddedAssets.configureAsync({\n projectRoot,\n pkg,\n exp,\n releaseChannel: options.releaseChannel ?? 'default',\n iosManifestUrl: fullManifestUrl,\n iosManifest,\n iosBundle,\n androidManifestUrl: fullManifestUrl,\n androidManifest,\n androidBundle,\n target,\n });\n\n // TODO: move to postPublish hook\n if (exp.isKernel) {\n await _handleKernelPublishedAsync({\n user,\n exp,\n projectRoot,\n url: response.url,\n });\n }\n\n // Create project manifest URL\n const url =\n options.releaseChannel && options.releaseChannel !== 'default'\n ? `${response.url}?release-channel=${options.releaseChannel}`\n : response.url;\n\n const projectPageUrl = createProjectPageURL({\n projectPageUrl: response.projectPageUrl,\n releaseChannel: options.releaseChannel,\n });\n\n return {\n ...response,\n url,\n projectPageUrl,\n };\n}\n\nasync function _uploadArtifactsAsync({\n exp,\n iosBundle,\n androidBundle,\n options,\n pkg,\n}: {\n exp: ExpoConfig;\n iosBundle: string | Uint8Array;\n androidBundle: string | Uint8Array;\n options: PublishOptions;\n pkg: PackageJSONConfig;\n}) {\n logger.global.info('');\n logger.global.info('Uploading JavaScript bundles');\n const formData = new FormData();\n\n formData.append('expJson', JSON.stringify(exp));\n formData.append('packageJson', JSON.stringify(pkg));\n formData.append('iosBundle', iosBundle, 'iosBundle');\n formData.append('androidBundle', androidBundle, 'androidBundle');\n formData.append('options', JSON.stringify(options));\n\n const user = await UserManager.ensureLoggedInAsync();\n const api = ApiV2.clientForUser(user);\n\n return await api.uploadFormDataAsync('publish/new', formData);\n}\n\nasync function _handleKernelPublishedAsync({\n projectRoot,\n user,\n exp,\n url,\n}: {\n projectRoot: string;\n user: User | RobotUser;\n exp: ExpoAppManifest;\n url: string;\n}) {\n let owner = exp.owner;\n if (!owner) {\n if (user.kind !== 'user') {\n throw new XDLError(\n 'ROBOT_ACCOUNT_ERROR',\n 'Kernel builds are not available for robot users when owner app.json field is not supplied'\n );\n }\n owner = user.username;\n }\n\n let kernelBundleUrl = `${Config.api.scheme}://${Config.api.host}`;\n if (Config.api.port) {\n kernelBundleUrl = `${kernelBundleUrl}:${Config.api.port}`;\n }\n kernelBundleUrl = `${kernelBundleUrl}/@${owner}/${exp.slug}/bundle`;\n const sdkOrRuntimeVersion = exp.runtimeVersion\n ? {\n 'expo-runtime-version': exp.runtimeVersion,\n }\n : { 'expo-sdk-version': exp.sdkVersion };\n\n if (exp.kernel?.androidManifestPath) {\n const manifest = await ExponentTools.getManifestAsync(url, {\n ...sdkOrRuntimeVersion,\n 'Exponent-Platform': 'android',\n Accept: 'application/expo+json,application/json',\n });\n manifest.bundleUrl = kernelBundleUrl;\n manifest.sdkVersion = 'UNVERSIONED';\n await fs.writeFile(\n path.resolve(projectRoot, exp.kernel.androidManifestPath),\n JSON.stringify(manifest)\n );\n }\n\n if (exp.kernel?.iosManifestPath) {\n const manifest = await ExponentTools.getManifestAsync(url, {\n ...sdkOrRuntimeVersion,\n 'Exponent-Platform': 'ios',\n Accept: 'application/expo+json,application/json',\n });\n manifest.bundleUrl = kernelBundleUrl;\n manifest.sdkVersion = 'UNVERSIONED';\n await fs.writeFile(\n path.resolve(projectRoot, exp.kernel.iosManifestPath),\n JSON.stringify(manifest)\n );\n }\n}\n\nfunction createProjectPageURL({\n projectPageUrl,\n releaseChannel,\n}: {\n projectPageUrl: string;\n releaseChannel?: string;\n}): string | null {\n if (!projectPageUrl) {\n return null;\n }\n\n const formattedProjectUrl = `${projectPageUrl}?serviceType=classic&distribution=expo-go`;\n if (releaseChannel && releaseChannel !== 'default') {\n return `${formattedProjectUrl}&release-channel=${releaseChannel}`;\n } else {\n return formattedProjectUrl;\n }\n}\n"],"mappings":"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"}