UNPKG

waka-pm

Version:

a pnpm supplement for enforcing consistent versions across all workspaces

82 lines 3.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.applyFn = void 0; const ext_config_1 = require("../ext-config"); const package_1 = require("../package"); const schema_1 = require("../schema"); // eslint-disable-next-line @typescript-eslint/no-explicit-any function isEmptyDeps(deps) { return !deps || Object.keys(deps).length === 0; } async function applyToPackage(wakaRoot, fullPackagePath, wakaPackage) { const packageJsonContents = await (0, package_1.getNPMPackageJsonContents)(fullPackagePath); for (const depType of schema_1.npmDepTypes) { const wakaDeps = wakaPackage[depType]; const npmDeps = packageJsonContents[depType]; if (isEmptyDeps(wakaDeps) && isEmptyDeps(npmDeps)) { continue; } else if (isEmptyDeps(wakaDeps) && !isEmptyDeps(npmDeps)) { delete packageJsonContents[depType]; } else { packageJsonContents[depType] = Object.entries(wakaDeps) .map(([name, wakaDep]) => { if (wakaDep === schema_1.ROOT_REGISTRY_VERSION) { const rootRegVersion = wakaRoot.rootDepRegistry[name]; if (!rootRegVersion) { throw new Error(`Root registry version for ${name} does not exist.`); } return [name, rootRegVersion]; } return [name, wakaDep]; }) .reduce((acc, next) => { const [name, version] = next; acc[name] = version; return acc; }, {}); } } return packageJsonContents; } async function writeApplication(packageDir, packageJsonContents) { const packageJsonFile = await (0, package_1.getNPMPackageFile)(packageDir); await (0, package_1.writePackageJson)(packageJsonFile, packageJsonContents); } async function applyFn(repoRootDir, opts) { const skipIfCI = !opts?.noSkipCI; if (skipIfCI && ['true', '1'].includes(process.env.CI?.toLowerCase() ?? '')) { console.log('Skipping apply on CI.'); return; } const extConfig = await (0, ext_config_1.getExternalConfig)(repoRootDir, opts); const wakaRoot = await (0, package_1.getWakaRoot)(repoRootDir); const wakaPackages = await (0, package_1.getWakaPackages)(repoRootDir); await extConfig?.applyPreEvaluate({ wakaRoot, wakaPackages, }); const rootPackageJson = await applyToPackage(wakaRoot, repoRootDir, wakaRoot); const packageDirToJsonContents = await Promise.all(Object.entries(wakaPackages).map(async ([packageName, wakaPackage]) => { const packageDir = await (0, package_1.getNPMPackageDir)(packageName, repoRootDir); const content = await applyToPackage(wakaRoot, packageDir, wakaPackage); return Promise.all([packageDir, content]); })); await extConfig?.applyPreWrite({ wakaRoot, wakaPackages, packageDirToJsonContents, }); await Promise.all(packageDirToJsonContents.map(async ([packageDir, packageJsonContents]) => { await writeApplication(packageDir, packageJsonContents); })); await writeApplication(repoRootDir, rootPackageJson); await extConfig?.applyPostWrite({ wakaRoot, wakaPackages, packageDirToJsonContents, }); } exports.applyFn = applyFn; //# sourceMappingURL=apply.js.map