iobroker.js-controller
Version:
Updated by reinstall.js on 2018-06-11T15:19:56.688Z
149 lines (148 loc) • 5.42 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_node_path = __toESM(require("node:path"), 1);
var import_node_child_process = __toESM(require("node:child_process"), 1);
const RECOMMENDED_NPM_VERSION = 8;
const EXEC_TIMEOUT = 1e4;
const EXIT_CODE_CANNOT_INSTALL_NPM_PACKET = 25;
const VERSION_COMMAND = "npm -v";
const UNSUPPORTED_NPM_VERSION_RANGES = [{ start: "5.0.0", end: "5.7.1" }];
function checkNpmVersion() {
return new Promise((resolve, reject) => {
try {
const newEnv = { ...process.env };
newEnv.PATH = (newEnv.PATH || newEnv.Path || newEnv.path).split(import_node_path.default.delimiter).filter((dir) => {
dir = dir.toLowerCase();
return !(dir.includes("iobroker") && dir.includes(import_node_path.default.join("node_modules", ".bin")));
}).join(import_node_path.default.delimiter);
let timer = setTimeout(() => {
timer = null;
reject(new Error("Timeout"));
}, EXEC_TIMEOUT);
import_node_child_process.default.exec(VERSION_COMMAND, { encoding: "utf8", env: newEnv, windowsHide: true }, (error, stdout, _stderr) => {
if (timer) {
const npmVersion = stdout.trim();
clearTimeout(timer);
timer = null;
if (!npmVersion) {
reject(new Error(`Could not determine npm version via "${VERSION_COMMAND}"`));
}
console.log(`NPM version: ${npmVersion}`);
for (const unsupportedVersion of UNSUPPORTED_NPM_VERSION_RANGES) {
if (gte(npmVersion, unsupportedVersion.start) && lt(npmVersion, unsupportedVersion.end)) {
console.warn("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
console.warn("WARNING:");
console.warn("You are using an unsupported npm version!");
console.warn("This can lead to problems when installing further packages");
console.warn();
console.warn(`Please use "npm install -g npm@${RECOMMENDED_NPM_VERSION}" to upgrade npm to ${RECOMMENDED_NPM_VERSION}.x or `);
console.warn('use "npm install -g npm@latest" to install a supported version of npm!');
console.warn("You need to make sure to repeat this step after installing an update to NodeJS and/or npm.");
console.warn("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
process.exit(EXIT_CODE_CANNOT_INSTALL_NPM_PACKET);
}
}
resolve(npmVersion);
}
});
} catch (e) {
reject(e);
}
});
}
checkNpmVersion().catch((err) => {
console.error(`Could not check npm version: ${err.message}`);
console.error("Assuming that correct version is installed.");
}).then(() => {
process.exit(0);
});
function parseVersion(version) {
const versionRegExp = /^v?(\d+)\.(\d+)\.(\d+).*?/;
const parsed = versionRegExp.exec(version);
if (!parsed) {
throw new Error(`Could not parse version "${version}"`);
}
return {
major: parseInt(parsed[1]),
minor: parseInt(parsed[2]),
build: parseInt(parsed[3])
};
}
function gt(v1, v2) {
if (typeof v1 === "string") {
v1 = parseVersion(v1);
}
if (typeof v2 === "string") {
v2 = parseVersion(v2);
}
if (v1.major > v2.major) {
return true;
} else if (v1.major < v2.major) {
return false;
}
if (v1.minor > v2.minor) {
return true;
} else if (v1.minor < v2.minor) {
return false;
}
return v1.build > v2.build;
}
function lt(v1, v2) {
if (typeof v1 === "string") {
v1 = parseVersion(v1);
}
if (typeof v2 === "string") {
v2 = parseVersion(v2);
}
if (v1.major < v2.major) {
return true;
} else if (v1.major > v2.major) {
return false;
}
if (v1.minor < v2.minor) {
return true;
} else if (v1.minor > v2.minor) {
return false;
}
return v1.build < v2.build;
}
function eq(v1, v2) {
if (typeof v1 === "string") {
v1 = parseVersion(v1);
}
if (typeof v2 === "string") {
v2 = parseVersion(v2);
}
if (v1.major !== v2.major) {
return false;
}
if (v1.minor !== v2.minor) {
return false;
}
return v1.build === v2.build;
}
function gte(v1, v2) {
return gt(v1, v2) || eq(v1, v2);
}
//# sourceMappingURL=preinstallCheck.js.map
;