1 line
16 KiB
Plaintext
1 line
16 KiB
Plaintext
{"version":3,"sources":["Api.js"],"names":["async","url","method","requestBody","requestOptions","clientId","await","Session","clientIdAsync","user","UserManager","getCurrentUserAsync","idToken","accessToken","skipValidationToken","process","env","let","headers","options","data","formData","isNode","convertedFormData","_convertFormDataToBuffer","getHeaders","response","axios","request","Error","responseBody","responseObj","_","isString","JSON","parse","e","ErrorCode","INVALID_JSON","err","ApiError","code","serverError","_callMethodAsync","Promise","resolve","pipe","concat","encoding","outputPath","progressFunction","retryFunction","promptShown","currentProgress","warningTimer","setTimeout","TIMER_DURATION","config","timeout","TIMEOUT","responseType","onDownloadProgress","progressEvent","roundedProgress","Math","floor","loaded","total","clearTimeout","fs","writeFile","Buffer","from","tmpPath","totalDownloadSize","downloadProgress","on","chunk","length","createWriteStream","rename","_downloadAsync","message","_isApiError","ROOT_BASE_URL","Config","api","scheme","host","port","API_BASE_URL","ApiClient","static","callMethodAsync","methodName","args","encodeURIComponent","stringify","callPathAsync","path","versionsAsync","_versionCache","getAsync","xdlSchemaAsync","sdkVersion","_schemaCaches","hasOwnProperty","join","__dirname","sdkVersionsAsync","versions","sdkVersions","downloadAsync","extract","dotExpoHomeDirectory","UserSettings","Extract","extractAsync","rimraf","sync"],"mappings":"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","file":"../Api.js","sourcesContent":["/**\n * @flow\n */\n\nimport _ from 'lodash';\nimport fs from 'fs-extra';\nimport rimraf from 'rimraf';\nimport path from 'path';\nimport axios from 'axios';\nimport concat from 'concat-stream';\n\nimport { Cacher } from './tools/FsCache';\nimport Config from './Config';\nimport { isNode } from './tools/EnvironmentHelper';\nimport ErrorCode from './ErrorCode';\nimport * as Extract from './Extract';\nimport * as Session from './Session';\nimport UserManager from './User';\nimport UserSettings from './UserSettings';\nimport XDLError from './XDLError';\n\nconst TIMER_DURATION = 30000;\nconst TIMEOUT = 3600000;\n\nfunction ApiError(code, message) {\n let err = new Error(message);\n // $FlowFixMe error has no property code\n err.code = code;\n // $FlowFixMe error has no property _isApiError\n err._isApiError = true;\n return err;\n}\n\nlet ROOT_BASE_URL = `${Config.api.scheme}://${Config.api.host}`;\nif (Config.api.port) {\n ROOT_BASE_URL += ':' + Config.api.port;\n}\nlet API_BASE_URL = ROOT_BASE_URL + '/--/api/';\n\nasync function _callMethodAsync(url, method, requestBody, requestOptions): Promise<any> {\n const clientId = await Session.clientIdAsync();\n const user = (await UserManager.getCurrentUserAsync()) || {};\n\n const { idToken, accessToken } = user;\n const skipValidationToken = process.env['EXPO_SKIP_MANIFEST_VALIDATION_TOKEN'];\n\n let headers: any = {\n 'Exp-ClientId': clientId,\n };\n\n if (skipValidationToken) {\n headers['Exp-Skip-Manifest-Validation-Token'] = skipValidationToken;\n }\n\n if (idToken) {\n headers['Authorization'] = `Bearer ${idToken}`;\n }\n\n if (accessToken) {\n headers['Exp-Access-Token'] = accessToken;\n }\n\n let options = {\n url,\n method: method || 'get',\n headers,\n };\n\n if (requestBody) {\n options = {\n ...options,\n data: requestBody,\n };\n }\n\n if (requestOptions) {\n if (requestOptions.formData) {\n let data = requestOptions.formData;\n if (isNode()) {\n let convertedFormData = await _convertFormDataToBuffer(requestOptions.formData);\n data = convertedFormData.data;\n options.headers = {\n ...options.headers,\n ...requestOptions.formData.getHeaders(),\n };\n }\n options = { ...options, data };\n } else {\n options = { ...options, ...requestOptions };\n }\n }\n let response = await axios.request(options);\n if (!response) {\n throw new Error('Unexpected error: Request failed.');\n }\n let responseBody = response.data;\n var responseObj;\n if (_.isString(responseBody)) {\n try {\n responseObj = JSON.parse(responseBody);\n } catch (e) {\n throw new XDLError(\n ErrorCode.INVALID_JSON,\n 'Invalid JSON returned from API: ' + e + '. Response body: ' + responseBody\n );\n }\n } else {\n responseObj = responseBody;\n }\n if (responseObj.err) {\n let err = ApiError(responseObj.code || 'API_ERROR', 'API Response Error: ' + responseObj.err);\n // $FlowFixMe can't add arbitrary properties to error\n err.serverError = responseObj.err;\n throw err;\n } else {\n return responseObj;\n }\n}\n\nasync function _convertFormDataToBuffer(formData) {\n return new Promise(resolve => {\n formData.pipe(concat({ encoding: 'buffer' }, data => resolve({ data })));\n });\n}\n\nasync function _downloadAsync(url, outputPath, progressFunction, retryFunction) {\n let promptShown = false;\n let currentProgress = 0;\n\n let warningTimer = setTimeout(() => {\n if (retryFunction) {\n retryFunction();\n }\n promptShown = true;\n }, TIMER_DURATION);\n\n let config;\n // Checks if the call is being made in XDE or exp. (If XDE = XHR, if exp = HTTP);\n if (!isNode()) {\n config = {\n timeout: TIMEOUT,\n responseType: 'arraybuffer',\n onDownloadProgress: progressEvent => {\n const roundedProgress = Math.floor(progressEvent.loaded / progressEvent.total * 100);\n if (currentProgress !== roundedProgress) {\n currentProgress = roundedProgress;\n clearTimeout(warningTimer);\n if (!promptShown) {\n warningTimer = setTimeout(() => {\n if (retryFunction) {\n retryFunction();\n }\n promptShown = true;\n }, TIMER_DURATION);\n }\n }\n if (progressFunction) {\n progressFunction(roundedProgress);\n }\n },\n };\n let response = await axios(url, config);\n await fs.writeFile(outputPath, Buffer.from(response.data));\n clearTimeout(warningTimer);\n } else {\n const tmpPath = `${outputPath}.download`;\n config = {\n timeout: TIMEOUT,\n responseType: 'stream',\n };\n let response = await axios(url, config);\n await new Promise(resolve => {\n let totalDownloadSize = response.data.headers['content-length'];\n let downloadProgress = 0;\n response.data\n .on('data', chunk => {\n downloadProgress += chunk.length;\n const roundedProgress = Math.floor(downloadProgress / totalDownloadSize * 100);\n if (currentProgress !== roundedProgress) {\n currentProgress = roundedProgress;\n clearTimeout(warningTimer);\n if (!promptShown) {\n warningTimer = setTimeout(() => {\n if (retryFunction) {\n retryFunction();\n }\n promptShown = true;\n }, TIMER_DURATION);\n }\n if (progressFunction) {\n progressFunction(roundedProgress);\n }\n }\n })\n .on('end', () => {\n clearTimeout(warningTimer);\n if (progressFunction && currentProgress !== 100) {\n progressFunction(100);\n }\n resolve();\n })\n .pipe(fs.createWriteStream(tmpPath));\n });\n await fs.rename(tmpPath, outputPath);\n }\n}\n\nexport default class ApiClient {\n static host: string = Config.api.host;\n static port: number = Config.api.port || 80;\n\n static _versionCache = new Cacher(\n async () => {\n return await ApiClient.callPathAsync('/--/versions');\n },\n 'versions.json',\n 0,\n path.join(__dirname, '../caches/versions.json')\n );\n\n static _schemaCaches = {};\n\n static async callMethodAsync(\n methodName: string,\n args: Array<*>,\n method: string,\n requestBody: ?Object,\n requestOptions: ?Object = {}\n ): Promise<any> {\n let url =\n API_BASE_URL +\n encodeURIComponent(methodName) +\n '/' +\n encodeURIComponent(JSON.stringify(args));\n return _callMethodAsync(url, method, requestBody, requestOptions);\n }\n\n static async callPathAsync(\n path: string,\n method: string,\n requestBody: ?Object,\n requestOptions: ?Object = {}\n ) {\n let url = ROOT_BASE_URL + path;\n return _callMethodAsync(url, method, requestBody, requestOptions);\n }\n\n static async versionsAsync() {\n return await ApiClient._versionCache.getAsync();\n }\n\n static async xdlSchemaAsync(sdkVersion) {\n if (!ApiClient._schemaCaches.hasOwnProperty(sdkVersion)) {\n ApiClient._schemaCaches[sdkVersion] = new Cacher(\n async () => {\n return await ApiClient.callPathAsync(`/--/xdl-schema/${sdkVersion}`);\n },\n `schema-${sdkVersion}.json`,\n 0,\n path.join(__dirname, `../caches/schema-${sdkVersion}.json`)\n );\n }\n\n return await ApiClient._schemaCaches[sdkVersion].getAsync();\n }\n\n static async sdkVersionsAsync() {\n let versions = await ApiClient.versionsAsync();\n return versions.sdkVersions;\n }\n\n static async downloadAsync(url, outputPath, options = {}, progressFunction, retryFunction) {\n if (options.extract) {\n let dotExpoHomeDirectory = UserSettings.dotExpoHomeDirectory();\n let tmpPath = path.join(dotExpoHomeDirectory, 'tmp-download-file');\n await _downloadAsync(url, tmpPath);\n await Extract.extractAsync(tmpPath, outputPath);\n rimraf.sync(tmpPath);\n } else {\n await _downloadAsync(url, outputPath, progressFunction, retryFunction);\n }\n }\n}\n"],"sourceRoot":"/xdl/src"} |