UNPKG

@embrace-io/react-native

Version:
124 lines (123 loc) 4.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.embraceJSONContents = exports.mainApplicationPatchable = exports.getMainApplicationPatchable = exports.embraceJSON = exports.buildAppGradlePatchable = exports.buildGradlePatchable = exports.getBuildGradlePatchable = void 0; const common_1 = require("../setup/patches/common"); const file_1 = require("./file"); const path = require("path"); const fs = require("fs"); const getBuildGradlePatchable = (paths = []) => { const gradlePath = path.join(...paths); if (!fs.existsSync(gradlePath)) { throw new Error(`cannot find build.gradle file at ${gradlePath}`); } return (0, file_1.getFileContents)(gradlePath); }; exports.getBuildGradlePatchable = getBuildGradlePatchable; const buildGradlePatchable = () => { return new Promise((resolve, reject) => { try { return resolve((0, exports.getBuildGradlePatchable)(["android", "build.gradle"])); } catch (e) { if (e instanceof Error) { return reject(e.message); } return reject(e); } }); }; exports.buildGradlePatchable = buildGradlePatchable; const buildAppGradlePatchable = () => { return new Promise((resolve, reject) => { try { return resolve((0, exports.getBuildGradlePatchable)(["android", "app", "build.gradle"])); } catch (e) { if (e instanceof Error) { return reject(e.message); } return reject(e); } }); }; exports.buildAppGradlePatchable = buildAppGradlePatchable; const embraceJSON = () => { return new Promise((resolve, reject) => { const p = path.join("android", "app", "src", "main", "embrace-config.json"); if (!fs.existsSync(p)) { return reject(`cannot find embrace-config.json file at ${p}`); } return resolve((0, file_1.getFileContents)(p)); }); }; exports.embraceJSON = embraceJSON; const getMainApplicationPatchable = (platform) => { const p = path.join("android", "app", "src", "main", "java"); const mainApp = common_1.MAIN_CLASS_BY_LANGUAGE[platform]; if (!fs.existsSync(p)) { return; } const foldersInJava = fs .readdirSync(p, { withFileTypes: true }) .filter((dirent) => dirent.isDirectory()); if (foldersInJava.length === 0) { return undefined; } let mainApplicationPath; let hasFoldersToLook = true; let foldersToLook = foldersInJava; while (!mainApplicationPath && hasFoldersToLook) { const foldersToLookTmp = []; foldersToLook.forEach(dir => { if (fs.existsSync(`${p}/${dir.name}/${mainApp}`)) { mainApplicationPath = `${p}/${dir.name}/${mainApp}`; hasFoldersToLook = false; return; } if (mainApplicationPath) { return; } const foldersInside = fs .readdirSync(`${p}/${dir.name}`, { withFileTypes: true }) .filter((dirent) => dirent.isDirectory()) || []; if (foldersInside.length > 0) { foldersToLookTmp.push(...foldersInside.map((d) => { return Object.assign(Object.assign({}, d), { name: `${dir.name}/${d.name}` }); })); } }); if (!mainApplicationPath) { if (foldersToLookTmp.length === 0) { hasFoldersToLook = false; } else { foldersToLook = [...foldersToLookTmp]; } } } if (!mainApplicationPath) { return undefined; } return (0, file_1.getFileContents)(mainApplicationPath); }; exports.getMainApplicationPatchable = getMainApplicationPatchable; const mainApplicationPatchable = (platform) => { return new Promise((resolve, reject) => { const file = (0, exports.getMainApplicationPatchable)(platform); if (!file) { return reject(`cannot find ${common_1.MAIN_CLASS_BY_LANGUAGE[platform]} file in any folder at "android/.../com/*". Please refer to the docs at https://embrace.io/docs/react-native/integration/add-embrace-sdk/?rn-platform=android to update it manually.`); } return resolve(file); }); }; exports.mainApplicationPatchable = mainApplicationPatchable; const embraceJSONContents = (params) => { return `{ "app_id": "${params.appID}", "api_token": "${params.apiToken}", "sdk_config": { "app_framework": "react_native" } }`; }; exports.embraceJSONContents = embraceJSONContents;