react-native-expo-moengage
Version:
MoEngage Expo plugin for integrating MoEngage React-Native SDK
81 lines (80 loc) • 3.81 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.addServiceToManifestIfNotExist = addServiceToManifestIfNotExist;
exports.isServiceExistInManifest = isServiceExistInManifest;
exports.addServiceToManifest = addServiceToManifest;
exports.copyFile = copyFile;
exports.addDependencyToGradle = addDependencyToGradle;
const node_fs_1 = __importDefault(require("node:fs"));
const node_path_1 = __importDefault(require("node:path"));
/**
* Add serviceEntry to the main application manifest if does not already exist.
*/
function addServiceToManifestIfNotExist(mainApplication, serviceEntry, serviceName) {
console.log('Checking if service exists:', serviceName);
if (!isServiceExistInManifest(mainApplication, serviceName)) {
console.log('Adding service to manifest:', serviceName);
addServiceToManifest(mainApplication, serviceEntry);
}
return mainApplication;
}
/**
* Return true if given serviceName already exists in the main application manifest, else false.
*/
function isServiceExistInManifest(mainApplication, serviceName) {
const isServiceExist = (mainApplication.service || []).find((service) => service.$ && service.$['android:name'] === serviceName);
console.log('Service exists:', serviceName, isServiceExist !== undefined);
return isServiceExist !== undefined;
}
/**
* Add serviceEntry to the main application manifest.
*/
function addServiceToManifest(mainApplication, serviceEntry) {
console.log('Adding service entry:', serviceEntry);
if (!mainApplication.service) {
mainApplication.service = [];
}
mainApplication.service.push(serviceEntry);
}
/**
* Copy file from src to dest after creating dest directory if not exist
*/
function copyFile(src, dest) {
return __awaiter(this, void 0, void 0, function* () {
let destPath = dest;
if (node_fs_1.default.existsSync(dest) && node_fs_1.default.statSync(dest).isDirectory()) {
destPath = node_path_1.default.join(dest, node_path_1.default.basename(src));
}
const destDir = node_path_1.default.dirname(destPath);
if (!node_fs_1.default.existsSync(destDir)) {
node_fs_1.default.mkdirSync(destDir, { recursive: true });
}
console.log('Copying file from', src, 'to', destPath);
node_fs_1.default.copyFileSync(src, destPath);
});
}
/**
* Add a dependency to the dependencies block in app/build.gradle if not already present.
*/
function addDependencyToGradle(contents, group, module, version) {
const dependency = `implementation("${group}:${module}:${version}")`;
console.log('Checking for dependency:', group, module, version);
if (!contents.includes(`${group}:${module}`)) {
console.log('Adding dependency:', dependency);
return contents.replace(/dependencies\s*\{/, match => `${match}\n ${dependency}`);
}
console.log('Dependency already present:', dependency);
return contents;
}