@embrace-io/react-native
Version:
A React Native wrapper for the Embrace SDK
124 lines (123 loc) • 4.66 kB
JavaScript
;
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;