@lerna/publish
Version:
Publish packages in the current project
67 lines (66 loc) • 2.75 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var import_core = require("@lerna/core");
var import_libnpmaccess = __toESM(require("libnpmaccess"));
const { getFetchConfig } = require("./fetch-config");
module.exports.verifyNpmPackageAccess = verifyNpmPackageAccess;
function verifyNpmPackageAccess(packages, username, options) {
const opts = getFetchConfig(options, {
// don't wait forever for third-party failures to be dealt with
fetchRetries: 0
});
opts.log.silly("verifyNpmPackageAccess");
return (0, import_core.pulseTillDone)(import_libnpmaccess.default.lsPackages(username, opts)).then(success, failure);
function success(result) {
if (result === null) {
opts.log.warn(
"",
"The logged-in user does not have any previously-published packages, skipping permission checks..."
);
} else {
for (const pkg of packages) {
if (pkg.name in result && result[pkg.name] !== "read-write") {
throw new import_core.ValidationError(
"EACCESS",
`You do not have write permission required to publish "${pkg.name}"`
);
}
}
}
}
function failure(err) {
if (err.code === "E500" || err.code === "E404") {
opts.log.warn(
"EREGISTRY",
"Registry %j does not support `npm access ls-packages`, skipping permission checks...",
// registry
opts.registry
);
return;
}
opts.log.pause();
console.error(err.message);
opts.log.resume();
throw new import_core.ValidationError("EWHOAMI", "Authentication error. Use `npm whoami` to troubleshoot.");
}
}