PHP WebShell
Текущая директория: /opt/BitGoJS/node_modules/@lerna/project/lib
Просмотр файла: deprecate-config.js
"use strict";
const dotProp = require("dot-prop");
const log = require("npmlog");
const path = require("path");
/** @type {(config: { [key: string]: unknown }, filepath: string) => void} */
module.exports.deprecateConfig = compose(
// add new predicates HERE
remap("command.add.includeFilteredDependencies", "command.add.includeDependencies", { alsoRoot: true }),
remap("command.add.includeFilteredDependents", "command.add.includeDependents", { alsoRoot: true }),
remap("command.bootstrap.includeFilteredDependencies", "command.bootstrap.includeDependencies"),
remap("command.bootstrap.includeFilteredDependents", "command.bootstrap.includeDependents"),
remap("command.clean.includeFilteredDependencies", "command.clean.includeDependencies"),
remap("command.clean.includeFilteredDependents", "command.clean.includeDependents"),
remap("command.exec.includeFilteredDependencies", "command.exec.includeDependencies"),
remap("command.exec.includeFilteredDependents", "command.exec.includeDependents"),
remap("command.list.includeFilteredDependencies", "command.list.includeDependencies"),
remap("command.list.includeFilteredDependents", "command.list.includeDependents"),
remap("command.run.includeFilteredDependencies", "command.run.includeDependencies"),
remap("command.run.includeFilteredDependents", "command.run.includeDependents"),
remap("command.version.githubRelease", "command.version.createRelease", {
toValue: (value) => value && "github",
}),
remap("command.publish.githubRelease", "command.version.createRelease", {
alsoRoot: true,
toValue: (value) => value && "github",
}),
remap("command.publish.npmTag", "command.publish.distTag", { alsoRoot: true }),
remap("command.publish.cdVersion", "command.publish.bump", { alsoRoot: true }),
remap("command.publish.ignore", "command.publish.ignoreChanges"),
remap("commands", "command"),
(config, filepath) => ({ config, filepath })
);
/**
* Remap deprecated config properties, if they exist.
* The returned predicate mutates the `config` parameter.
*
* @param {String} search Path to deprecated option
* @param {String} target Path of renamed option
* @param {Object} opts Optional configuration object
* @param {Boolean} opts.alsoRoot Whether to check root config as well
* @param {Function} opts.toValue Return the new config value given the current value
* @return {Function} predicate accepting (config, filepath)
*/
function remap(search, target, { alsoRoot, toValue } = {}) {
const pathsToSearch = [search];
if (alsoRoot) {
// root config is overwritten by "more specific" nested config
pathsToSearch.unshift(search.split(".").pop());
}
return (obj) => {
for (const searchPath of pathsToSearch) {
if (dotProp.has(obj.config, searchPath)) {
const fromVal = dotProp.get(obj.config, searchPath);
const toVal = toValue ? toValue(fromVal) : fromVal;
log.warn("project", deprecationMessage(obj, target, searchPath, fromVal, toVal));
dotProp.set(obj.config, target, toVal);
dotProp.delete(obj.config, searchPath);
}
}
return obj;
};
}
/**
* Builds a deprecation message string that specifies
* a deprecated config option and suggests a correction.
*
* @param {Object} obj A config object
* @param {String} target Path of renamed option
* @param {String} searchSearch Path to deprecated option
* @param {Any} fromVal Current value of deprecated option
* @param {Any} toVal Corrected value of deprecated option
* @return {String} deprecation message
*/
function deprecationMessage(obj, target, searchPath, fromVal, toVal) {
const localPath = path.relative(".", obj.filepath);
let from;
let to;
if (toVal === fromVal) {
from = `"${searchPath}"`;
to = `"${target}"`;
} else {
from = stringify({ [searchPath]: fromVal });
to = stringify({ [target]: toVal });
}
return `Deprecated key "${searchPath}" found in ${localPath}\nPlease update ${from} => ${to}`;
}
function stringify(obj) {
return JSON.stringify(obj).slice(1, -1);
}
function compose(...funcs) {
return funcs.reduce((a, b) => (...args) => a(b(...args)));
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!