UNPKG

@rnv/engine-core

Version:
107 lines 4.77 kB
"use strict"; 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