@rnv/engine-core
Version:
ReNative Engine Core
107 lines • 4.77 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.traverseSourceProject = exports.getSourceDir = exports.traverseTargetProject = void 0;
var tslib_1 = require("tslib");
var core_1 = require("@rnv/core");
var path_1 = tslib_1.__importDefault(require("path"));
var captureLinkablePackages = function (baseDir, sourcePackages, linkablePackages) {
sourcePackages.forEach(function (pkg) {
var rnvDepPath = path_1.default.join(baseDir, pkg.name);
var isSymLink = false;
var nmPathExists = (0, core_1.fsExistsSync)(rnvDepPath);
try {
isSymLink = (0, core_1.fsLstatSync)(rnvDepPath).isSymbolicLink();
if (!nmPathExists) {
// Broken link
}
}
catch (e) {
//Catch error
}
var cacheDir = path_1.default.join(baseDir, '.rnv/unlinked_cache');
var unlinkedPath = path_1.default.join(cacheDir, pkg.name);
var unlinkedPathExists = (0, core_1.fsExistsSync)(unlinkedPath);
if (nmPathExists || isSymLink || unlinkedPathExists) {
linkablePackages.push({
name: pkg.name,
nmPath: rnvDepPath,
sourcePath: pkg.path,
sourcePathRelative: path_1.default.relative(rnvDepPath.replace("/".concat(pkg.name), ''), pkg.path),
unlinkedPath: unlinkedPath,
cacheDir: cacheDir,
skipLinking: pkg.skipLinking || false,
isLinked: isSymLink,
isBrokenLink: isSymLink && !nmPathExists,
nmPathExists: nmPathExists,
unlinkedPathExists: unlinkedPathExists,
});
}
});
};
var traverseTargetProject = function (sourceDir) {
var c = (0, core_1.getContext)();
var linkablePackages = [];
var sourcePackages = (0, exports.traverseSourceProject)(sourceDir);
captureLinkablePackages(c.paths.project.nodeModulesDir, sourcePackages, linkablePackages);
var monoPackages = path_1.default.join(c.paths.project.dir, 'packages');
// If monorepo, we need to link all packages
if ((0, core_1.fsExistsSync)(monoPackages)) {
(0, core_1.fsReaddirSync)(monoPackages).forEach(function (pkgName) {
var pkgPath = path_1.default.join(monoPackages, pkgName);
captureLinkablePackages(path_1.default.join(pkgPath, 'node_modules'), sourcePackages, linkablePackages);
});
}
return linkablePackages;
};
exports.traverseTargetProject = traverseTargetProject;
var getSourceDir = function () {
var ctx = (0, core_1.getContext)();
var dirOption = ctx.program.opts().dir;
if (dirOption) {
(0, core_1.logInfo)("Using custom source directory: ".concat((0, core_1.chalk)().bold.white(dirOption)));
}
// As default we'll use the development source directory which is a monorepo
var sourceDir = ctx.program.opts().dir || path_1.default.join(ctx.paths.rnvCore.dir, '../../');
if (!(0, core_1.fsExistsSync)(sourceDir)) {
throw new Error("Source directory ".concat(sourceDir, " does not exist!"));
}
return sourceDir;
};
exports.getSourceDir = getSourceDir;
var captureSourcePackage = function (baseDir, sourcePackages) {
var pkgPath = path_1.default.join(baseDir, core_1.RnvFileName.package);
if ((0, core_1.fsExistsSync)(pkgPath)) {
var pkgFile = (0, core_1.readObjectSync)(pkgPath);
if (pkgFile === null || pkgFile === void 0 ? void 0 : pkgFile.name) {
sourcePackages.push({
name: pkgFile.name,
path: baseDir,
skipLinking: false,
});
}
}
};
var traverseSourceProject = function (sourceDir) {
var sourcePackages = [];
captureSourcePackage(sourceDir, sourcePackages);
var monoPackages = path_1.default.join(sourceDir, 'packages');
// If monorepo, we need to link all packages
if ((0, core_1.fsExistsSync)(monoPackages)) {
(0, core_1.fsReaddirSync)(monoPackages).forEach(function (pkgName) {
if (pkgName.startsWith('@')) {
var monoPackageGroup_1 = path_1.default.join(monoPackages, pkgName);
(0, core_1.fsReaddirSync)(monoPackages).forEach(function (pkgName) {
var pkgPath = path_1.default.join(monoPackageGroup_1, pkgName);
captureSourcePackage(pkgPath, sourcePackages);
});
}
else {
var pkgPath = path_1.default.join(monoPackages, pkgName);
captureSourcePackage(pkgPath, sourcePackages);
}
});
}
return sourcePackages;
};
exports.traverseSourceProject = traverseSourceProject;
//# sourceMappingURL=linker.js.map
;