PHP WebShell

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

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

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = parseSASS;
var _fs = _interopRequireDefault(require("fs"));
var _lodash = _interopRequireDefault(require("lodash"));
var _path = _interopRequireDefault(require("path"));
var _requirePackageName = _interopRequireDefault(require("require-package-name"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const importModuleRegex = /@(?:use|import|forward)\s+['"]([^'"]+)['"]/gm;
// Paths prefixed with "~" or "node_modules/" are both considered paths to external deps in node_modules
const nodeModulePrefixRegex = /^~|^(?:\.[\\/])?node_modules[\\/]/;

/**
 * Sass allows omitting different parts of file path when importing files from relative paths:
 * - relative path prefix can be omitted "./" (Sass tries to import from current file directory first)
 * - underscore "_" prefix of partials can be omitted (https://sass-lang.com/guide/#partials)
 * - sass/scss file extension can be omitted
 * Reference: https://sass-lang.com/documentation/at-rules/import/#finding-the-file
 * This filter checks for existence of a file on every possible relative path and then filters those out.
 */
function isModuleOnRelativePath(filename, importPath) {
  if (importPath.startsWith('./') || importPath.startsWith('../')) {
    return true;
  }
  const basePath = _path.default.dirname(filename);
  const extension = _path.default.extname(filename);
  const pathWithExtension = _path.default.extname(importPath) !== '' ? importPath : importPath + extension;
  const pathWithUnderscorePrefix = _path.default.join(_path.default.dirname(pathWithExtension), `_${_path.default.basename(pathWithExtension)}`);
  const possiblePaths = [_path.default.join(basePath, pathWithExtension), _path.default.join(basePath, pathWithUnderscorePrefix)];
  return possiblePaths.some(modulePath => _fs.default.existsSync(modulePath));
}
async function parseSASS(filename) {
  const sassString = _fs.default.readFileSync(filename).toString();

  // https://sass-lang.com/documentation/at-rules/import/#load-paths
  const deps = Array.from(sassString.matchAll(importModuleRegex))
  // Pick the matched group
  .map(([, match]) => match.startsWith('sass:') ? 'sass' // Add 'sass' dependency for built-in modules
  : match.replace(nodeModulePrefixRegex, '')).filter(importPath => !isModuleOnRelativePath(filename, importPath)).map(_requirePackageName.default);
  return _lodash.default.uniq(deps);
}
module.exports = exports.default;

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


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