59 lines
2.0 KiB
JavaScript
59 lines
2.0 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const fs_1 = __importDefault(require("fs"));
|
|
const path_1 = require("path");
|
|
exports.root = path_1.resolve(__dirname, "../../../");
|
|
function resolve(...args) {
|
|
args.unshift(exports.root);
|
|
return path_1.resolve.apply(null, args);
|
|
}
|
|
exports.resolve = resolve;
|
|
const pathRootPackageJsonPath = resolve("package.json");
|
|
const pathPackages = resolve("packages");
|
|
exports.dirs = Object.freeze({
|
|
rootPackageJsonPath: pathRootPackageJsonPath,
|
|
packages: pathPackages,
|
|
root: exports.root,
|
|
});
|
|
exports.dirnames = Object.freeze(fs_1.default.readdirSync(exports.dirs.packages).filter((dirname) => {
|
|
return (dirname[0] !== ".");
|
|
}));
|
|
const packageLookup = exports.dirnames.reduce((accum, dirname) => {
|
|
const packagePath = path_1.resolve(exports.dirs.packages, dirname);
|
|
const packageJsonPath = path_1.resolve(packagePath, "package.json");
|
|
const info = JSON.parse(fs_1.default.readFileSync(packageJsonPath).toString());
|
|
const packageName = info.name;
|
|
const version = info.version;
|
|
accum[packageName] = accum[dirname] = {
|
|
dirname, packageName, packagePath, packageJsonPath, version
|
|
};
|
|
return accum;
|
|
}, {});
|
|
exports.packages = Object.freeze(exports.dirnames.map((dirname) => packageLookup[dirname].packageName));
|
|
function getPackageInfo(name) {
|
|
const value = packageLookup[name];
|
|
if (!value) {
|
|
throw new Error(`unknown package: ${name}`);
|
|
}
|
|
return value;
|
|
}
|
|
function getPackagePath(name) {
|
|
return getPackageInfo(name).packagePath;
|
|
}
|
|
exports.getPackagePath = getPackagePath;
|
|
function getDirname(name) {
|
|
return getPackageInfo(name).dirname;
|
|
}
|
|
exports.getDirname = getDirname;
|
|
function getPackageJsonPath(name) {
|
|
return getPackageInfo(name).packageJsonPath;
|
|
}
|
|
exports.getPackageJsonPath = getPackageJsonPath;
|
|
function isEthers(name) {
|
|
return !!packageLookup[name];
|
|
}
|
|
exports.isEthers = isEthers;
|