@dynatrace/react-native-plugin
Version:
This plugin gives you the ability to use the Dynatrace Mobile agent in your react native application.
167 lines (166 loc) • 4.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const path = require("path");
const checkIfFileExists = (_file) => new Promise((resolve, reject) => {
fs.stat(_file, (err) => {
if (err) {
reject(`${err} - File doesn't exist: ${path.resolve(_file)}`);
}
resolve(_file);
});
});
const checkIfFileExistsSync = (_file) => {
fs.statSync(_file);
return _file;
};
const readTextFromFileSync = (_file) => fs.readFileSync(_file, 'utf8');
const readTextFromFile = (_file) => new Promise((resolve, reject) => {
fs.readFile(_file, 'utf8', (err, data) => {
if (err) {
reject(err + 'Could not read the file: ' + path.resolve(_file));
}
resolve(data);
});
});
const writeTextToFile = (_file, _text) => new Promise((resolve, reject) => {
fs.writeFile(_file, _text, (err) => {
if (err) {
reject(err + ' Could not write to file: ' + path.resolve(_file));
}
resolve(_file);
});
});
const writeTextToFileSync = (_file, _text) => {
try {
fs.writeFileSync(_file, _text);
return _file;
}
catch (err) {
throw new Error(err + ' Could not write to file: ' + path.resolve(_file));
}
};
const createDirectorySync = (directory) => {
try {
mkdirSyncRecursive(directory);
return true;
}
catch (e) {
return false;
}
};
const mkdirSyncRecursive = (directory) => {
const pathParts = directory.split(path.sep);
for (let i = 1; i <= pathParts.length; i++) {
const segment = pathParts.slice(0, i).join(path.sep);
if (segment.length > 0) {
if (!fs.existsSync(segment)) {
fs.mkdirSync(segment);
}
}
}
};
const deleteDirectory = (dir) => new Promise((resolve, reject) => {
fs.access(dir, (err) => {
if (err) {
return reject(err);
}
fs.readdir(dir, (err, files) => {
if (err) {
return reject(err);
}
Promise.all(files.map((file) => deleteFile(path.join(dir, file)))).then(() => {
fs.rmdir(dir, (err) => {
if (err) {
return reject(err);
}
resolve();
});
}).catch(reject);
});
});
});
const deleteDirectorySync = (dir) => {
fs.accessSync(dir);
const files = fs.readdirSync(dir);
files.map((file) => deleteFileSync(path.join(dir, file)));
fs.rmdirSync(dir);
};
const deleteFile = (filePath) => new Promise((resolve, reject) => {
fs.lstat(filePath, (err, stats) => {
if (err) {
return reject(err);
}
if (stats.isDirectory()) {
resolve(deleteDirectory(filePath));
}
else {
fs.unlink(filePath, (err) => {
if (err) {
return reject(err);
}
resolve();
});
}
});
});
const deleteFileSync = (filePath) => {
const stats = fs.lstatSync(filePath);
if (stats.isDirectory()) {
deleteDirectorySync(filePath);
}
else {
fs.unlinkSync(filePath);
}
};
const renameFile = (fileOld, fileNew) => new Promise((resolve, reject) => {
fs.rename(fileOld, fileNew, (err) => {
if (err) {
reject(err);
}
resolve();
});
});
const renameFileSync = (fileOld, fileNew) => {
fs.renameSync(fileOld, fileNew);
};
const copyFile = (filePath, destPath) => new Promise((resolve, reject) => {
fs.copyFile(filePath, destPath, (err) => {
if (err) {
reject(err);
}
resolve();
});
});
const copyFileSync = (filePath, destPath) => {
fs.copyFileSync(filePath, destPath);
};
const copyDirectory = (from, to) => {
fs.mkdirSync(to);
fs.readdirSync(from).forEach((element) => {
if (fs.lstatSync(path.join(from, element)).isFile()) {
fs.copyFileSync(path.join(from, element), path.join(to, element));
}
else {
copyDirectory(path.join(from, element), path.join(to, element));
}
});
};
exports.default = {
checkIfFileExists,
checkIfFileExistsSync,
readTextFromFile,
readTextFromFileSync,
writeTextToFile,
writeTextToFileSync,
deleteDirectory,
deleteFile,
deleteFileSync,
createDirectorySync,
renameFile,
renameFileSync,
copyFile,
copyFileSync,
copyDirectory,
};