erp-web/node-jiti/globby-ignore.js.9e7ed82c.js

94 lines
3.8 KiB
JavaScript

"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.isIgnoredByIgnoreFilesSync = exports.isIgnoredByIgnoreFiles = exports.isGitIgnoredSync = exports.isGitIgnored = exports.GITIGNORE_FILES_PATTERN = void 0;var _nodeProcess = _interopRequireDefault(require("node:process"));
var _nodeFs = _interopRequireDefault(require("node:fs"));
var _nodePath = _interopRequireDefault(require("node:path"));
var _fastGlob = _interopRequireDefault(require("fast-glob"));
var _ignore = _interopRequireDefault(require("ignore"));
var _slash = _interopRequireDefault(require("slash"));
var _utilities = require("./utilities.js");function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
const ignoreFilesGlobOptions = {
ignore: [
'**/node_modules',
'**/flow-typed',
'**/coverage',
'**/.git'],
absolute: true,
dot: true
};
const GITIGNORE_FILES_PATTERN = '**/.gitignore';exports.GITIGNORE_FILES_PATTERN = GITIGNORE_FILES_PATTERN;
const applyBaseToPattern = (pattern, base) => (0, _utilities.isNegativePattern)(pattern) ?
'!' + _nodePath.default.posix.join(base, pattern.slice(1)) :
_nodePath.default.posix.join(base, pattern);
const parseIgnoreFile = (file, cwd) => {
const base = (0, _slash.default)(_nodePath.default.relative(cwd, _nodePath.default.dirname(file.filePath)));
return file.content.
split(/\r?\n/).
filter((line) => line && !line.startsWith('#')).
map((pattern) => applyBaseToPattern(pattern, base));
};
const toRelativePath = (fileOrDirectory, cwd) => {
cwd = (0, _slash.default)(cwd);
if (_nodePath.default.isAbsolute(fileOrDirectory)) {
if ((0, _slash.default)(fileOrDirectory).startsWith(cwd)) {
return _nodePath.default.relative(cwd, fileOrDirectory);
}
throw new Error(`Path ${fileOrDirectory} is not in cwd ${cwd}`);
}
return fileOrDirectory;
};
const getIsIgnoredPredicate = (files, cwd) => {
const patterns = files.flatMap((file) => parseIgnoreFile(file, cwd));
const ignores = (0, _ignore.default)().add(patterns);
return (fileOrDirectory) => {
fileOrDirectory = (0, _utilities.toPath)(fileOrDirectory);
fileOrDirectory = toRelativePath(fileOrDirectory, cwd);
return fileOrDirectory ? ignores.ignores((0, _slash.default)(fileOrDirectory)) : false;
};
};
const normalizeOptions = (options = {}) => ({
cwd: (0, _utilities.toPath)(options.cwd) || _nodeProcess.default.cwd(),
suppressErrors: Boolean(options.suppressErrors),
deep: typeof options.deep === 'number' ? options.deep : Number.POSITIVE_INFINITY
});
const isIgnoredByIgnoreFiles = async (patterns, options) => {
const { cwd, suppressErrors, deep } = normalizeOptions(options);
const paths = await (0, _fastGlob.default)(patterns, { cwd, suppressErrors, deep, ...ignoreFilesGlobOptions });
const files = await Promise.all(
paths.map(async (filePath) => ({
filePath,
content: await _nodeFs.default.promises.readFile(filePath, 'utf8')
}))
);
return getIsIgnoredPredicate(files, cwd);
};exports.isIgnoredByIgnoreFiles = isIgnoredByIgnoreFiles;
const isIgnoredByIgnoreFilesSync = (patterns, options) => {
const { cwd, suppressErrors, deep } = normalizeOptions(options);
const paths = _fastGlob.default.sync(patterns, { cwd, suppressErrors, deep, ...ignoreFilesGlobOptions });
const files = paths.map((filePath) => ({
filePath,
content: _nodeFs.default.readFileSync(filePath, 'utf8')
}));
return getIsIgnoredPredicate(files, cwd);
};exports.isIgnoredByIgnoreFilesSync = isIgnoredByIgnoreFilesSync;
const isGitIgnored = (options) => isIgnoredByIgnoreFiles(GITIGNORE_FILES_PATTERN, options);exports.isGitIgnored = isGitIgnored;
const isGitIgnoredSync = (options) => isIgnoredByIgnoreFilesSync(GITIGNORE_FILES_PATTERN, options);exports.isGitIgnoredSync = isGitIgnoredSync; /* v7-0eff28242bf3ace2 */