Repository URL to install this package:
|
Version:
5.0.0-rc.11 ▾
|
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var path = _interopDefault(require('path'));
var fs = _interopDefault(require('fs'));
var index$1 = require('../fast-glob/index.js');
var index = require('../ignore/index.js');
var index$2 = require('./node_modules/pify/index.js');
var index$3 = require('./node_modules/slash/index.js');
const DEFAULT_IGNORE = [
'**/node_modules/**',
'**/bower_components/**',
'**/flow-typed/**',
'**/coverage/**',
'**/.git'
];
const readFileP = index$2.default(fs.readFile);
const mapGitIgnorePatternTo = base => ignore => {
if (ignore.startsWith('!')) {
return '!' + path.posix.join(base, ignore.slice(1));
}
return path.posix.join(base, ignore);
};
const parseGitIgnore = (content, options) => {
const base = index$3.default(path.relative(options.cwd, path.dirname(options.fileName)));
return content
.split(/\r?\n/)
.filter(Boolean)
.filter(line => line.charAt(0) !== '#')
.map(mapGitIgnorePatternTo(base));
};
const reduceIgnore = files => {
return files.reduce((ignores, file) => {
ignores.add(parseGitIgnore(file.content, {
cwd: file.cwd,
fileName: file.filePath
}));
return ignores;
}, index.default());
};
const getIsIgnoredPredecate = (ignores, cwd) => {
return p => ignores.ignores(index$3.default(path.relative(cwd, p)));
};
const getFile = (file, cwd) => {
const filePath = path.join(cwd, file);
return readFileP(filePath, 'utf8')
.then(content => ({
content,
cwd,
filePath
}));
};
const getFileSync = (file, cwd) => {
const filePath = path.join(cwd, file);
const content = fs.readFileSync(filePath, 'utf8');
return {
content,
cwd,
filePath
};
};
const normalizeOptions = (options = {}) => {
const ignore = options.ignore || [];
const cwd = options.cwd || process.cwd();
return {ignore, cwd};
};
var gitignore = options => {
options = normalizeOptions(options);
return index$1.default('**/.gitignore', {
ignore: DEFAULT_IGNORE.concat(options.ignore),
cwd: options.cwd
})
.then(paths => Promise.all(paths.map(file => getFile(file, options.cwd))))
.then(files => reduceIgnore(files))
.then(ignores => getIsIgnoredPredecate(ignores, options.cwd));
};
var sync = options => {
options = normalizeOptions(options);
const paths = index$1.default.sync('**/.gitignore', {
ignore: DEFAULT_IGNORE.concat(options.ignore),
cwd: options.cwd
});
const files = paths.map(file => getFileSync(file, options.cwd));
const ignores = reduceIgnore(files);
return getIsIgnoredPredecate(ignores, options.cwd);
};
gitignore.sync = sync;
exports.__moduleExports = gitignore;
exports.default = gitignore;
exports.sync = sync;
//# sourceMappingURL=gitignore.js.map