PHP WebShell
Текущая директория: /opt/BitGoJS/node_modules/@lerna/npm-conf/lib
Просмотр файла: parse-field.js
"use strict";
const path = require("path");
const envReplace = require("./env-replace");
const types = require("./types");
module.exports = parseField;
// https://github.com/npm/npm/blob/latest/lib/config/core.js#L362-L407
function parseField(input, key) {
if (typeof input !== "string") {
return input;
}
const typeList = [].concat(types[key]);
const isPath = typeList.indexOf(path) !== -1;
const isBool = typeList.indexOf(Boolean) !== -1;
const isString = typeList.indexOf(String) !== -1;
const isNumber = typeList.indexOf(Number) !== -1;
let field = `${input}`.trim();
if (/^".*"$/.test(field)) {
try {
field = JSON.parse(field);
} catch (err) {
throw new Error(`Failed parsing JSON config key ${key}: ${field}`);
}
}
if (isBool && !isString && field === "") {
return true;
}
switch (field) {
case "true": {
return true;
}
case "false": {
return false;
}
case "null": {
return null;
}
case "undefined": {
return undefined;
}
// no default
}
field = envReplace(field);
if (isPath) {
const regex = process.platform === "win32" ? /^~(\/|\\)/ : /^~\//;
if (regex.test(field) && process.env.HOME) {
field = path.resolve(process.env.HOME, field.substr(2));
}
field = path.resolve(field);
}
// eslint-disable-next-line no-restricted-globals
if (isNumber && !isNaN(field)) {
field = Number(field);
}
return field;
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!