@pnpm/core
Version:
Fast, disk space efficient installation engine
63 lines • 2.58 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseWantedDependencies = parseWantedDependencies;
const parse_wanted_dependency_1 = require("@pnpm/parse-wanted-dependency");
const which_version_is_pinned_1 = require("@pnpm/which-version-is-pinned");
function parseWantedDependencies(rawWantedDependencies, opts) {
return rawWantedDependencies
.map((rawWantedDependency) => {
const parsed = (0, parse_wanted_dependency_1.parseWantedDependency)(rawWantedDependency);
const alias = parsed['alias'];
let pref = parsed['pref'];
let pinnedVersion;
if (!opts.allowNew && (!alias || !opts.currentPrefs[alias])) {
return null;
}
if (alias && opts.defaultCatalog?.[alias] && ((!opts.currentPrefs[alias] && pref === undefined) ||
opts.defaultCatalog[alias] === pref ||
opts.defaultCatalog[alias] === opts.currentPrefs[alias])) {
pref = 'catalog:';
}
if (alias && opts.currentPrefs[alias]) {
if (!pref) {
pref = (opts.currentPrefs[alias].startsWith('workspace:') && opts.updateWorkspaceDependencies === true)
? 'workspace:*'
: opts.currentPrefs[alias];
}
pinnedVersion = (0, which_version_is_pinned_1.whichVersionIsPinned)(opts.currentPrefs[alias]);
}
const result = {
alias,
dev: Boolean(opts.dev || alias && !!opts.devDependencies[alias]),
optional: Boolean(opts.optional || alias && !!opts.optionalDependencies[alias]),
pinnedVersion,
raw: alias && opts.currentPrefs?.[alias]?.startsWith('workspace:') ? `${alias}@${opts.currentPrefs[alias]}` : rawWantedDependency,
};
if (pref) {
return {
...result,
pref,
};
}
if (alias && opts.preferredSpecs?.[alias]) {
return {
...result,
pref: opts.preferredSpecs[alias],
raw: `${rawWantedDependency}@${opts.preferredSpecs[alias]}`,
};
}
if (alias && opts.overrides?.[alias]) {
return {
...result,
pref: opts.overrides[alias],
raw: `${alias}@${opts.overrides[alias]}`,
};
}
return {
...result,
pref: opts.defaultTag,
};
})
.filter((wd) => wd !== null);
}
//# sourceMappingURL=parseWantedDependencies.js.map
;