aboutsummaryrefslogtreecommitdiff
path: root/sandbox/testAppNevena/Front/node_modules/ignore-walk
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/ignore-walk')
-rw-r--r--sandbox/testAppNevena/Front/node_modules/ignore-walk/LICENSE15
-rw-r--r--sandbox/testAppNevena/Front/node_modules/ignore-walk/README.md60
-rw-r--r--sandbox/testAppNevena/Front/node_modules/ignore-walk/index.js292
-rw-r--r--sandbox/testAppNevena/Front/node_modules/ignore-walk/package.json54
4 files changed, 421 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/ignore-walk/LICENSE b/sandbox/testAppNevena/Front/node_modules/ignore-walk/LICENSE
new file mode 100644
index 00000000..19129e31
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/ignore-walk/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/sandbox/testAppNevena/Front/node_modules/ignore-walk/README.md b/sandbox/testAppNevena/Front/node_modules/ignore-walk/README.md
new file mode 100644
index 00000000..278f6101
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/ignore-walk/README.md
@@ -0,0 +1,60 @@
+# ignore-walk
+
+[![Build
+Status](https://travis-ci.org/npm/ignore-walk.svg?branch=master)](https://travis-ci.org/npm/ignore-walk)
+
+Nested/recursive `.gitignore`/`.npmignore` parsing and filtering.
+
+Walk a directory creating a list of entries, parsing any `.ignore`
+files met along the way to exclude files.
+
+## USAGE
+
+```javascript
+const walk = require('ignore-walk')
+
+// All options are optional, defaults provided.
+
+// this function returns a promise, but you can also pass a cb
+// if you like that approach better.
+walk({
+ path: '...', // root dir to start in. defaults to process.cwd()
+ ignoreFiles: [ '.gitignore' ], // list of filenames. defaults to ['.ignore']
+ includeEmpty: true|false, // true to include empty dirs, default false
+ follow: true|false // true to follow symlink dirs, default false
+}, callback)
+
+// to walk synchronously, do it this way:
+const result = walk.sync({ path: '/wow/such/filepath' })
+```
+
+If you want to get at the underlying classes, they're at `walk.Walker`
+and `walk.WalkerSync`.
+
+## OPTIONS
+
+* `path` The path to start in. Defaults to `process.cwd()`
+
+* `ignoreFiles` Filenames to treat as ignore files. The default is
+ `['.ignore']`. (This is where you'd put `.gitignore` or
+ `.npmignore` or whatever.) If multiple ignore files are in a
+ directory, then rules from each are applied in the order that the
+ files are listed.
+
+* `includeEmpty` Set to `true` to include empty directories, assuming
+ they are not excluded by any of the ignore rules. If not set, then
+ this follows the standard `git` behavior of not including
+ directories that are empty.
+
+ Note: this will cause an empty directory to be included if it
+ would contain an included entry, even if it would have otherwise
+ been excluded itself.
+
+ For example, given the rules `*` (ignore everything) and `!/a/b/c`
+ (re-include the entry at `/a/b/c`), the directory `/a/b` will be
+ included if it is empty.
+
+* `follow` Set to `true` to treat symbolically linked directories as
+ directories, recursing into them. There is no handling for nested
+ symlinks, so `ELOOP` errors can occur in some cases when using this
+ option. Defaults to `false`.
diff --git a/sandbox/testAppNevena/Front/node_modules/ignore-walk/index.js b/sandbox/testAppNevena/Front/node_modules/ignore-walk/index.js
new file mode 100644
index 00000000..13fc954c
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/ignore-walk/index.js
@@ -0,0 +1,292 @@
+'use strict'
+
+const fs = require('fs')
+const path = require('path')
+const EE = require('events').EventEmitter
+const Minimatch = require('minimatch').Minimatch
+
+class Walker extends EE {
+ constructor (opts) {
+ opts = opts || {}
+ super(opts)
+ // set to true if this.path is a symlink, whether follow is true or not
+ this.isSymbolicLink = opts.isSymbolicLink
+ this.path = opts.path || process.cwd()
+ this.basename = path.basename(this.path)
+ this.ignoreFiles = opts.ignoreFiles || ['.ignore']
+ this.ignoreRules = {}
+ this.parent = opts.parent || null
+ this.includeEmpty = !!opts.includeEmpty
+ this.root = this.parent ? this.parent.root : this.path
+ this.follow = !!opts.follow
+ this.result = this.parent ? this.parent.result : new Set()
+ this.entries = null
+ this.sawError = false
+ }
+
+ sort (a, b) {
+ return a.localeCompare(b, 'en')
+ }
+
+ emit (ev, data) {
+ let ret = false
+ if (!(this.sawError && ev === 'error')) {
+ if (ev === 'error') {
+ this.sawError = true
+ } else if (ev === 'done' && !this.parent) {
+ data = Array.from(data)
+ .map(e => /^@/.test(e) ? `./${e}` : e).sort(this.sort)
+ this.result = data
+ }
+
+ if (ev === 'error' && this.parent) {
+ ret = this.parent.emit('error', data)
+ } else {
+ ret = super.emit(ev, data)
+ }
+ }
+ return ret
+ }
+
+ start () {
+ fs.readdir(this.path, (er, entries) =>
+ er ? this.emit('error', er) : this.onReaddir(entries))
+ return this
+ }
+
+ isIgnoreFile (e) {
+ return e !== '.' &&
+ e !== '..' &&
+ this.ignoreFiles.indexOf(e) !== -1
+ }
+
+ onReaddir (entries) {
+ this.entries = entries
+ if (entries.length === 0) {
+ if (this.includeEmpty) {
+ this.result.add(this.path.substr(this.root.length + 1))
+ }
+ this.emit('done', this.result)
+ } else {
+ const hasIg = this.entries.some(e =>
+ this.isIgnoreFile(e))
+
+ if (hasIg) {
+ this.addIgnoreFiles()
+ } else {
+ this.filterEntries()
+ }
+ }
+ }
+
+ addIgnoreFiles () {
+ const newIg = this.entries
+ .filter(e => this.isIgnoreFile(e))
+
+ let igCount = newIg.length
+ const then = _ => {
+ if (--igCount === 0) {
+ this.filterEntries()
+ }
+ }
+
+ newIg.forEach(e => this.addIgnoreFile(e, then))
+ }
+
+ addIgnoreFile (file, then) {
+ const ig = path.resolve(this.path, file)
+ fs.readFile(ig, 'utf8', (er, data) =>
+ er ? this.emit('error', er) : this.onReadIgnoreFile(file, data, then))
+ }
+
+ onReadIgnoreFile (file, data, then) {
+ const mmopt = {
+ matchBase: true,
+ dot: true,
+ flipNegate: true,
+ nocase: true,
+ }
+ const rules = data.split(/\r?\n/)
+ .filter(line => !/^#|^$/.test(line.trim()))
+ .map(r => new Minimatch(r, mmopt))
+
+ this.ignoreRules[file] = rules
+
+ then()
+ }
+
+ filterEntries () {
+ // at this point we either have ignore rules, or just inheriting
+ // this exclusion is at the point where we know the list of
+ // entries in the dir, but don't know what they are. since
+ // some of them *might* be directories, we have to run the
+ // match in dir-mode as well, so that we'll pick up partials
+ // of files that will be included later. Anything included
+ // at this point will be checked again later once we know
+ // what it is.
+ const filtered = this.entries.map(entry => {
+ // at this point, we don't know if it's a dir or not.
+ const passFile = this.filterEntry(entry)
+ const passDir = this.filterEntry(entry, true)
+ return (passFile || passDir) ? [entry, passFile, passDir] : false
+ }).filter(e => e)
+
+ // now we stat them all
+ // if it's a dir, and passes as a dir, then recurse
+ // if it's not a dir, but passes as a file, add to set
+ let entryCount = filtered.length
+ if (entryCount === 0) {
+ this.emit('done', this.result)
+ } else {
+ const then = _ => {
+ if (--entryCount === 0) {
+ this.emit('done', this.result)
+ }
+ }
+ filtered.forEach(filt => {
+ const entry = filt[0]
+ const file = filt[1]
+ const dir = filt[2]
+ this.stat({ entry, file, dir }, then)
+ })
+ }
+ }
+
+ onstat ({ st, entry, file, dir, isSymbolicLink }, then) {
+ const abs = this.path + '/' + entry
+ if (!st.isDirectory()) {
+ if (file) {
+ this.result.add(abs.substr(this.root.length + 1))
+ }
+ then()
+ } else {
+ // is a directory
+ if (dir) {
+ this.walker(entry, { isSymbolicLink }, then)
+ } else {
+ then()
+ }
+ }
+ }
+
+ stat ({ entry, file, dir }, then) {
+ const abs = this.path + '/' + entry
+ fs.lstat(abs, (er, st) => {
+ if (er) {
+ this.emit('error', er)
+ } else {
+ const isSymbolicLink = st.isSymbolicLink()
+ if (this.follow && isSymbolicLink) {
+ fs.stat(abs, (er, st) => {
+ if (er) {
+ this.emit('error', er)
+ } else {
+ this.onstat({ st, entry, file, dir, isSymbolicLink }, then)
+ }
+ })
+ } else {
+ this.onstat({ st, entry, file, dir, isSymbolicLink }, then)
+ }
+ }
+ })
+ }
+
+ walkerOpt (entry, opts) {
+ return {
+ path: this.path + '/' + entry,
+ parent: this,
+ ignoreFiles: this.ignoreFiles,
+ follow: this.follow,
+ includeEmpty: this.includeEmpty,
+ ...opts,
+ }
+ }
+
+ walker (entry, opts, then) {
+ new Walker(this.walkerOpt(entry, opts)).on('done', then).start()
+ }
+
+ filterEntry (entry, partial) {
+ let included = true
+
+ // this = /a/b/c
+ // entry = d
+ // parent /a/b sees c/d
+ if (this.parent && this.parent.filterEntry) {
+ var pt = this.basename + '/' + entry
+ included = this.parent.filterEntry(pt, partial)
+ }
+
+ this.ignoreFiles.forEach(f => {
+ if (this.ignoreRules[f]) {
+ this.ignoreRules[f].forEach(rule => {
+ // negation means inclusion
+ // so if it's negated, and already included, no need to check
+ // likewise if it's neither negated nor included
+ if (rule.negate !== included) {
+ // first, match against /foo/bar
+ // then, against foo/bar
+ // then, in the case of partials, match with a /
+ const match = rule.match('/' + entry) ||
+ rule.match(entry) ||
+ (!!partial && (
+ rule.match('/' + entry + '/') ||
+ rule.match(entry + '/'))) ||
+ (!!partial && rule.negate && (
+ rule.match('/' + entry, true) ||
+ rule.match(entry, true)))
+
+ if (match) {
+ included = rule.negate
+ }
+ }
+ })
+ }
+ })
+
+ return included
+ }
+}
+
+class WalkerSync extends Walker {
+ start () {
+ this.onReaddir(fs.readdirSync(this.path))
+ return this
+ }
+
+ addIgnoreFile (file, then) {
+ const ig = path.resolve(this.path, file)
+ this.onReadIgnoreFile(file, fs.readFileSync(ig, 'utf8'), then)
+ }
+
+ stat ({ entry, file, dir }, then) {
+ const abs = this.path + '/' + entry
+ let st = fs.lstatSync(abs)
+ const isSymbolicLink = st.isSymbolicLink()
+ if (this.follow && isSymbolicLink) {
+ st = fs.statSync(abs)
+ }
+
+ // console.error('STAT SYNC', {st, entry, file, dir, isSymbolicLink, then})
+ this.onstat({ st, entry, file, dir, isSymbolicLink }, then)
+ }
+
+ walker (entry, opts, then) {
+ new WalkerSync(this.walkerOpt(entry, opts)).start()
+ then()
+ }
+}
+
+const walk = (opts, callback) => {
+ const p = new Promise((resolve, reject) => {
+ new Walker(opts).on('done', resolve).on('error', reject).start()
+ })
+ return callback ? p.then(res => callback(null, res), callback) : p
+}
+
+const walkSync = opts => new WalkerSync(opts).start().result
+
+module.exports = walk
+walk.sync = walkSync
+walk.Walker = Walker
+walk.WalkerSync = WalkerSync
diff --git a/sandbox/testAppNevena/Front/node_modules/ignore-walk/package.json b/sandbox/testAppNevena/Front/node_modules/ignore-walk/package.json
new file mode 100644
index 00000000..ec6923d1
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/ignore-walk/package.json
@@ -0,0 +1,54 @@
+{
+ "name": "ignore-walk",
+ "version": "4.0.1",
+ "description": "Nested/recursive `.gitignore`/`.npmignore` parsing and filtering.",
+ "main": "index.js",
+ "devDependencies": {
+ "@npmcli/lint": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "mutate-fs": "^1.1.0",
+ "rimraf": "^2.6.1",
+ "tap": "^15.0.6"
+ },
+ "scripts": {
+ "test": "tap",
+ "posttest": "npm run lint --",
+ "lint": "npm run npmclilint -- \"*.*js\" \"test/**/*.*js\"",
+ "eslint": "eslint",
+ "lintfix": "npm run lint -- --fix",
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "postpublish": "git push origin --follow-tags",
+ "npmclilint": "npmcli-lint",
+ "postsnap": "npm run lintfix --"
+ },
+ "keywords": [
+ "ignorefile",
+ "ignore",
+ "file",
+ ".gitignore",
+ ".npmignore",
+ "glob"
+ ],
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
+ "license": "ISC",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/isaacs/ignore-walk.git"
+ },
+ "files": [
+ "index.js"
+ ],
+ "dependencies": {
+ "minimatch": "^3.0.4"
+ },
+ "tap": {
+ "test-env": "LC_ALL=sk",
+ "before": "test/00-setup.js",
+ "after": "test/zz-cleanup.js",
+ "jobs": 1
+ },
+ "engines": {
+ "node": ">=10"
+ }
+}