PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/depcheck/dist/special

Просмотр файла: gatsby.js

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = parseGatsbyConfig;
var _path = _interopRequireDefault(require("path"));
var _lodash = _interopRequireDefault(require("lodash"));
var _es = require("../parser/es7");
var _parser = _interopRequireDefault(require("../utils/parser"));
var _file = require("../utils/file");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function findStringPlugins(pluginElementsArray) {
  return pluginElementsArray.filter(e => e.type === 'StringLiteral' || e.type === 'TemplateLiteral').map(e => {
    if (e.type === 'TemplateLiteral') return e.quasis[0].value.cooked;
    return e.value;
  });
}
function findResolvePlugins(pluginElementsArray) {
  return pluginElementsArray.filter(e => e.type === 'ObjectExpression').map(e => e.properties).reduce((acc, props) => acc.concat(props), []).filter(resolvePropCandidate => (resolvePropCandidate.key.name === 'resolve' || resolvePropCandidate.key.value === 'resolve') && resolvePropCandidate.value && (resolvePropCandidate.value.type === 'StringLiteral' || resolvePropCandidate.value.type === 'TemplateLiteral')).map(resolveProp => {
    if (resolveProp.value.type === 'TemplateLiteral') return resolveProp.value.quasis[0].value.cooked;
    return resolveProp.value.value;
  });
}
function findNestedPlugins(pluginElementsArray) {
  return pluginElementsArray.filter(e => e.type === 'ObjectExpression').map(e => e.properties).reduce((acc, props) => acc.concat(props), []).filter(optionsPropCandidate => optionsPropCandidate && optionsPropCandidate.key && (optionsPropCandidate.key.name === 'options' || optionsPropCandidate.key.value === 'options') && optionsPropCandidate.value && optionsPropCandidate.value.type === 'ObjectExpression')
  // eslint-disable-next-line no-use-before-define
  .map(optionsNode => findPluginsInObjectExpression(optionsNode.value)).reduce((deps, dep) => deps.concat(dep), []);
}
function findPluginsInObjectExpression(node) {
  const dependencies = [];
  node.properties.forEach(prop => {
    if (prop.value.type === 'ArrayExpression' && (prop.key.name === 'plugins' || prop.key.value === 'plugins')) {
      const vals = [];
      vals.push(...findResolvePlugins(prop.value.elements));
      vals.push(...findStringPlugins(prop.value.elements));
      vals.push(...findNestedPlugins(prop.value.elements));
      dependencies.push(...vals);
    }
  });
  return dependencies;
}

/**
 *
 *
 * @param {Object} node Root node of the gatsby.config.js file
 *
 */
function parseConfigModuleExports(node) {
  // node.left must be assigning to module.exports
  if (node && node.type === 'AssignmentExpression' && node.left.type === 'MemberExpression' && node.left.object && node.left.object.type === 'Identifier' && node.left.object.name === 'module' && node.left.property && node.left.property.type === 'Identifier' && node.left.property.name === 'exports') {
    const plugins = findPluginsInObjectExpression(node.right);
    return {
      plugins
    };
  }
  return null;
}
async function parseConfig(content) {
  const ast = (0, _es.parseES7Content)(content);
  return (0, _lodash.default)((0, _parser.default)(ast)).map(node => parseConfigModuleExports(node)).flatten().filter(val => val != null).uniq().first();
}
async function parseGatsbyConfig(filename) {
  const basename = _path.default.basename(filename);
  const GatbyConfig = 'gatsby-config.js';
  if (GatbyConfig === basename) {
    const content = await (0, _file.getContent)(filename);
    const config = await parseConfig(content);
    return config.plugins || [];
  }
  return [];
}
module.exports = exports.default;

Выполнить команду


Для локальной разработки. Не используйте в интернете!