first commit
This commit is contained in:
19
app_vue/node_modules/ignore/CHANGELOG.md
generated
vendored
Normal file
19
app_vue/node_modules/ignore/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
# `node-ignore` 4 ChangeLog
|
||||
|
||||
# 4.x
|
||||
|
||||
## 2018-06-22, Version 4.0.0
|
||||
|
||||
- **SEMVER-MAJOR**: Drop support for node < 6 by default.
|
||||
- **FEATURE**: supports the missing character ranges and sets, such as `*.[a-z]` and `*.[jJ][pP][gG]`
|
||||
- **FEATURE**: new option: `ignorecase` to make `ignore` case sensitive.
|
||||
- **FEATURE**: supports question mark which matches a single character.
|
||||
- **PATCH**: fixes typescript declaration.
|
||||
|
||||
## ~ 2018-08-09, Version 4.0.1 - 4.0.5
|
||||
|
||||
- **PATCH**: updates README.md about frequent asked quesions from github issues.
|
||||
|
||||
## 2018-08-12, Version 4.0.6
|
||||
|
||||
- **PATCH**: `Object.prototype` methods will not ruin the result any more.
|
21
app_vue/node_modules/ignore/LICENSE-MIT
generated
vendored
Normal file
21
app_vue/node_modules/ignore/LICENSE-MIT
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
Copyright (c) 2013 Kael Zhang <i@kael.me>, contributors
|
||||
http://kael.me/
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
307
app_vue/node_modules/ignore/README.md
generated
vendored
Normal file
307
app_vue/node_modules/ignore/README.md
generated
vendored
Normal file
@ -0,0 +1,307 @@
|
||||
<table><thead>
|
||||
<tr>
|
||||
<th>Linux</th>
|
||||
<th>OS X</th>
|
||||
<th>Windows</th>
|
||||
<th>Coverage</th>
|
||||
<th>Downloads</th>
|
||||
</tr>
|
||||
</thead><tbody><tr>
|
||||
<td colspan="2" align="center">
|
||||
<a href="https://travis-ci.org/kaelzhang/node-ignore">
|
||||
<img
|
||||
src="https://travis-ci.org/kaelzhang/node-ignore.svg?branch=master"
|
||||
alt="Build Status" /></a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href="https://ci.appveyor.com/project/kaelzhang/node-ignore">
|
||||
<img
|
||||
src="https://ci.appveyor.com/api/projects/status/github/kaelzhang/node-ignore?branch=master&svg=true"
|
||||
alt="Windows Build Status" /></a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href="https://codecov.io/gh/kaelzhang/node-ignore">
|
||||
<img
|
||||
src="https://codecov.io/gh/kaelzhang/node-ignore/branch/master/graph/badge.svg"
|
||||
alt="Coverage Status" /></a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href="https://www.npmjs.org/package/ignore">
|
||||
<img
|
||||
src="http://img.shields.io/npm/dm/ignore.svg"
|
||||
alt="npm module downloads per month" /></a>
|
||||
</td>
|
||||
</tr></tbody></table>
|
||||
|
||||
# ignore
|
||||
|
||||
`ignore` is a manager, filter and parser which implemented in pure JavaScript according to the .gitignore [spec](http://git-scm.com/docs/gitignore).
|
||||
|
||||
Pay attention that [`minimatch`](https://www.npmjs.org/package/minimatch) does not work in the gitignore way. To filter filenames according to .gitignore file, I recommend this module.
|
||||
|
||||
##### Tested on
|
||||
|
||||
- Linux + Node: `0.8` - `7.x`
|
||||
- Windows + Node: `0.10` - `7.x`, node < `0.10` is not tested due to the lack of support of appveyor.
|
||||
|
||||
Actually, `ignore` does not rely on any versions of node specially.
|
||||
|
||||
Since `4.0.0`, ignore will no longer support `node < 6` by default, to use in node < 6, `require('ignore/legacy')`. For details, see [CHANGELOG](https://github.com/kaelzhang/node-ignore/blob/master/CHANGELOG.md).
|
||||
|
||||
## Table Of Main Contents
|
||||
|
||||
- [Usage](#usage)
|
||||
- [`Pathname` Conventions](#pathname-conventions)
|
||||
- [Guide for 2.x -> 3.x](#upgrade-2x---3x)
|
||||
- [Guide for 3.x -> 4.x](#upgrade-3x---4x)
|
||||
- See Also:
|
||||
- [`glob-gitignore`](https://www.npmjs.com/package/glob-gitignore) matches files using patterns and filters them according to gitignore rules.
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
import ignore from 'ignore'
|
||||
const ig = ignore().add(['.abc/*', '!.abc/d/'])
|
||||
```
|
||||
|
||||
### Filter the given paths
|
||||
|
||||
```js
|
||||
const paths = [
|
||||
'.abc/a.js', // filtered out
|
||||
'.abc/d/e.js' // included
|
||||
]
|
||||
|
||||
ig.filter(paths) // ['.abc/d/e.js']
|
||||
ig.ignores('.abc/a.js') // true
|
||||
```
|
||||
|
||||
### As the filter function
|
||||
|
||||
```js
|
||||
paths.filter(ig.createFilter()); // ['.abc/d/e.js']
|
||||
```
|
||||
|
||||
### Win32 paths will be handled
|
||||
|
||||
```js
|
||||
ig.filter(['.abc\\a.js', '.abc\\d\\e.js'])
|
||||
// if the code above runs on windows, the result will be
|
||||
// ['.abc\\d\\e.js']
|
||||
```
|
||||
|
||||
## Why another ignore?
|
||||
|
||||
- `ignore` is a standalone module, and is much simpler so that it could easy work with other programs, unlike [isaacs](https://npmjs.org/~isaacs)'s [fstream-ignore](https://npmjs.org/package/fstream-ignore) which must work with the modules of the fstream family.
|
||||
|
||||
- `ignore` only contains utility methods to filter paths according to the specified ignore rules, so
|
||||
- `ignore` never try to find out ignore rules by traversing directories or fetching from git configurations.
|
||||
- `ignore` don't cares about sub-modules of git projects.
|
||||
|
||||
- Exactly according to [gitignore man page](http://git-scm.com/docs/gitignore), fixes some known matching issues of fstream-ignore, such as:
|
||||
- '`/*.js`' should only match '`a.js`', but not '`abc/a.js`'.
|
||||
- '`**/foo`' should match '`foo`' anywhere.
|
||||
- Prevent re-including a file if a parent directory of that file is excluded.
|
||||
- Handle trailing whitespaces:
|
||||
- `'a '`(one space) should not match `'a '`(two spaces).
|
||||
- `'a \ '` matches `'a '`
|
||||
- All test cases are verified with the result of `git check-ignore`.
|
||||
|
||||
# Methods
|
||||
|
||||
## .add(pattern: string | Ignore): this
|
||||
## .add(patterns: Array<string | Ignore>): this
|
||||
|
||||
- **pattern** `String | Ignore` An ignore pattern string, or the `Ignore` instance
|
||||
- **patterns** `Array<String | Ignore>` Array of ignore patterns.
|
||||
|
||||
Adds a rule or several rules to the current manager.
|
||||
|
||||
Returns `this`
|
||||
|
||||
Notice that a line starting with `'#'`(hash) is treated as a comment. Put a backslash (`'\'`) in front of the first hash for patterns that begin with a hash, if you want to ignore a file with a hash at the beginning of the filename.
|
||||
|
||||
```js
|
||||
ignore().add('#abc').ignores('#abc') // false
|
||||
ignore().add('\#abc').ignores('#abc') // true
|
||||
```
|
||||
|
||||
`pattern` could either be a line of ignore pattern or a string of multiple ignore patterns, which means we could just `ignore().add()` the content of a ignore file:
|
||||
|
||||
```js
|
||||
ignore()
|
||||
.add(fs.readFileSync(filenameOfGitignore).toString())
|
||||
.filter(filenames)
|
||||
```
|
||||
|
||||
`pattern` could also be an `ignore` instance, so that we could easily inherit the rules of another `Ignore` instance.
|
||||
|
||||
## <strike>.addIgnoreFile(path)</strike>
|
||||
|
||||
REMOVED in `3.x` for now.
|
||||
|
||||
To upgrade `ignore@2.x` up to `3.x`, use
|
||||
|
||||
```js
|
||||
import fs from 'fs'
|
||||
|
||||
if (fs.existsSync(filename)) {
|
||||
ignore().add(fs.readFileSync(filename).toString())
|
||||
}
|
||||
```
|
||||
|
||||
instead.
|
||||
|
||||
## .filter(paths: Array<Pathname>): Array<Pathname>
|
||||
|
||||
```ts
|
||||
type Pathname = string
|
||||
```
|
||||
|
||||
Filters the given array of pathnames, and returns the filtered array.
|
||||
|
||||
- **paths** `Array.<Pathname>` The array of `pathname`s to be filtered.
|
||||
|
||||
### `Pathname` Conventions:
|
||||
|
||||
#### 1. `Pathname` should be a `path.relative()`d pathname
|
||||
|
||||
`Pathname` should be a string that have been `path.join()`ed, or the return value of `path.relative()` to the current directory.
|
||||
|
||||
```js
|
||||
// WRONG
|
||||
ig.ignores('./abc')
|
||||
|
||||
// WRONG, for it will never happen.
|
||||
// If the gitignore rule locates at the root directory,
|
||||
// `'/abc'` should be changed to `'abc'`.
|
||||
// ```
|
||||
// path.relative('/', '/abc') -> 'abc'
|
||||
// ```
|
||||
ig.ignores('/abc')
|
||||
|
||||
// Right
|
||||
ig.ignores('abc')
|
||||
|
||||
// Right
|
||||
ig.ignores(path.join('./abc')) // path.join('./abc') -> 'abc'
|
||||
```
|
||||
|
||||
In other words, each `Pathname` here should be a relative path to the directory of the gitignore rules.
|
||||
|
||||
Suppose the dir structure is:
|
||||
|
||||
```
|
||||
/path/to/your/repo
|
||||
|-- a
|
||||
| |-- a.js
|
||||
|
|
||||
|-- .b
|
||||
|
|
||||
|-- .c
|
||||
|-- .DS_store
|
||||
```
|
||||
|
||||
Then the `paths` might be like this:
|
||||
|
||||
```js
|
||||
[
|
||||
'a/a.js'
|
||||
'.b',
|
||||
'.c/.DS_store'
|
||||
]
|
||||
```
|
||||
|
||||
Usually, you could use [`glob`](http://npmjs.org/package/glob) with `option.mark = true` to fetch the structure of the current directory:
|
||||
|
||||
```js
|
||||
import glob from 'glob'
|
||||
|
||||
glob('**', {
|
||||
// Adds a / character to directory matches.
|
||||
mark: true
|
||||
}, (err, files) => {
|
||||
if (err) {
|
||||
return console.error(err)
|
||||
}
|
||||
|
||||
let filtered = ignore().add(patterns).filter(files)
|
||||
console.log(filtered)
|
||||
})
|
||||
```
|
||||
|
||||
#### 2. filenames and dirnames
|
||||
|
||||
`node-ignore` does NO `fs.stat` during path matching, so for the example below:
|
||||
|
||||
```js
|
||||
ig.add('config/')
|
||||
|
||||
// `ig` does NOT know if 'config' is a normal file, directory or something
|
||||
ig.ignores('config') // And it returns `false`
|
||||
|
||||
ig.ignores('config/') // returns `true`
|
||||
```
|
||||
|
||||
Specially for people who develop some library based on `node-ignore`, it is important to understand that.
|
||||
|
||||
## .ignores(pathname: Pathname): boolean
|
||||
|
||||
> new in 3.2.0
|
||||
|
||||
Returns `Boolean` whether `pathname` should be ignored.
|
||||
|
||||
```js
|
||||
ig.ignores('.abc/a.js') // true
|
||||
```
|
||||
|
||||
## .createFilter()
|
||||
|
||||
Creates a filter function which could filter an array of paths with `Array.prototype.filter`.
|
||||
|
||||
Returns `function(path)` the filter function.
|
||||
|
||||
## `options.ignorecase` since 4.0.0
|
||||
|
||||
Similar as the `core.ignorecase` option of [git-config](https://git-scm.com/docs/git-config), `node-ignore` will be case insensitive if `options.ignorecase` is set to `true` (default value), otherwise case sensitive.
|
||||
|
||||
```js
|
||||
const ig = ignore({
|
||||
ignorecase: false
|
||||
})
|
||||
|
||||
ig.add('*.png')
|
||||
|
||||
ig.ignores('*.PNG') // false
|
||||
```
|
||||
|
||||
****
|
||||
|
||||
# Upgrade Guide
|
||||
|
||||
## Upgrade 2.x -> 3.x
|
||||
|
||||
- All `options` of 2.x are unnecessary and removed, so just remove them.
|
||||
- `ignore()` instance is no longer an [`EventEmitter`](nodejs.org/api/events.html), and all events are unnecessary and removed.
|
||||
- `.addIgnoreFile()` is removed, see the [.addIgnoreFile](#addignorefilepath) section for details.
|
||||
|
||||
## Upgrade 3.x -> 4.x
|
||||
|
||||
Since `4.0.0`, `ignore` will no longer support node < 6, to use `ignore` in node < 6:
|
||||
|
||||
```js
|
||||
var ignore = require('ignore/legacy')
|
||||
```
|
||||
|
||||
****
|
||||
|
||||
# Collaborators
|
||||
|
||||
- [@whitecolor](https://github.com/whitecolor) *Alex*
|
||||
- [@SamyPesse](https://github.com/SamyPesse) *Samy Pessé*
|
||||
- [@azproduction](https://github.com/azproduction) *Mikhail Davydov*
|
||||
- [@TrySound](https://github.com/TrySound) *Bogdan Chadkin*
|
||||
- [@JanMattner](https://github.com/JanMattner) *Jan Mattner*
|
||||
- [@ntwb](https://github.com/ntwb) *Stephen Edgar*
|
||||
- [@kasperisager](https://github.com/kasperisager) *Kasper Isager*
|
||||
- [@sandersn](https://github.com/sandersn) *Nathan Shively-Sanders*
|
45
app_vue/node_modules/ignore/index.d.ts
generated
vendored
Normal file
45
app_vue/node_modules/ignore/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
interface Ignore {
|
||||
/**
|
||||
* Adds a rule rules to the current manager.
|
||||
* @param {string | Ignore} pattern
|
||||
* @returns IgnoreBase
|
||||
*/
|
||||
add(pattern: string | Ignore): Ignore
|
||||
/**
|
||||
* Adds several rules to the current manager.
|
||||
* @param {string[]} patterns
|
||||
* @returns IgnoreBase
|
||||
*/
|
||||
add(patterns: (string | Ignore)[]): Ignore
|
||||
|
||||
/**
|
||||
* Filters the given array of pathnames, and returns the filtered array.
|
||||
* NOTICE that each path here should be a relative path to the root of your repository.
|
||||
* @param paths the array of paths to be filtered.
|
||||
* @returns The filtered array of paths
|
||||
*/
|
||||
filter(paths: string[]): string[]
|
||||
/**
|
||||
* Creates a filter function which could filter
|
||||
* an array of paths with Array.prototype.filter.
|
||||
*/
|
||||
createFilter(): (path: string) => boolean
|
||||
|
||||
/**
|
||||
* Returns Boolean whether pathname should be ignored.
|
||||
* @param {string} pathname a path to check
|
||||
* @returns boolean
|
||||
*/
|
||||
ignores(pathname: string): boolean
|
||||
}
|
||||
|
||||
interface Options {
|
||||
ignorecase?: boolean
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates new ignore manager.
|
||||
*/
|
||||
declare function ignore(options?: Options): Ignore
|
||||
|
||||
export default ignore
|
463
app_vue/node_modules/ignore/index.js
generated
vendored
Normal file
463
app_vue/node_modules/ignore/index.js
generated
vendored
Normal file
@ -0,0 +1,463 @@
|
||||
// A simple implementation of make-array
|
||||
function make_array (subject) {
|
||||
return Array.isArray(subject)
|
||||
? subject
|
||||
: [subject]
|
||||
}
|
||||
|
||||
const REGEX_BLANK_LINE = /^\s+$/
|
||||
const REGEX_LEADING_EXCAPED_EXCLAMATION = /^\\!/
|
||||
const REGEX_LEADING_EXCAPED_HASH = /^\\#/
|
||||
const SLASH = '/'
|
||||
const KEY_IGNORE = typeof Symbol !== 'undefined'
|
||||
? Symbol.for('node-ignore')
|
||||
/* istanbul ignore next */
|
||||
: 'node-ignore'
|
||||
|
||||
const define = (object, key, value) =>
|
||||
Object.defineProperty(object, key, {value})
|
||||
|
||||
const REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g
|
||||
|
||||
// Sanitize the range of a regular expression
|
||||
// The cases are complicated, see test cases for details
|
||||
const sanitizeRange = range => range.replace(
|
||||
REGEX_REGEXP_RANGE,
|
||||
(match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0)
|
||||
? match
|
||||
// Invalid range (out of order) which is ok for gitignore rules but
|
||||
// fatal for JavaScript regular expression, so eliminate it.
|
||||
: ''
|
||||
)
|
||||
|
||||
// > If the pattern ends with a slash,
|
||||
// > it is removed for the purpose of the following description,
|
||||
// > but it would only find a match with a directory.
|
||||
// > In other words, foo/ will match a directory foo and paths underneath it,
|
||||
// > but will not match a regular file or a symbolic link foo
|
||||
// > (this is consistent with the way how pathspec works in general in Git).
|
||||
// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'
|
||||
// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call
|
||||
// you could use option `mark: true` with `glob`
|
||||
|
||||
// '`foo/`' should not continue with the '`..`'
|
||||
const DEFAULT_REPLACER_PREFIX = [
|
||||
|
||||
// > Trailing spaces are ignored unless they are quoted with backslash ("\")
|
||||
[
|
||||
// (a\ ) -> (a )
|
||||
// (a ) -> (a)
|
||||
// (a \ ) -> (a )
|
||||
/\\?\s+$/,
|
||||
match => match.indexOf('\\') === 0
|
||||
? ' '
|
||||
: ''
|
||||
],
|
||||
|
||||
// replace (\ ) with ' '
|
||||
[
|
||||
/\\\s/g,
|
||||
() => ' '
|
||||
],
|
||||
|
||||
// Escape metacharacters
|
||||
// which is written down by users but means special for regular expressions.
|
||||
|
||||
// > There are 12 characters with special meanings:
|
||||
// > - the backslash \,
|
||||
// > - the caret ^,
|
||||
// > - the dollar sign $,
|
||||
// > - the period or dot .,
|
||||
// > - the vertical bar or pipe symbol |,
|
||||
// > - the question mark ?,
|
||||
// > - the asterisk or star *,
|
||||
// > - the plus sign +,
|
||||
// > - the opening parenthesis (,
|
||||
// > - the closing parenthesis ),
|
||||
// > - and the opening square bracket [,
|
||||
// > - the opening curly brace {,
|
||||
// > These special characters are often called "metacharacters".
|
||||
[
|
||||
/[\\^$.|*+(){]/g,
|
||||
match => `\\${match}`
|
||||
],
|
||||
|
||||
[
|
||||
// > [abc] matches any character inside the brackets
|
||||
// > (in this case a, b, or c);
|
||||
/\[([^\]/]*)($|\])/g,
|
||||
(match, p1, p2) => p2 === ']'
|
||||
? `[${sanitizeRange(p1)}]`
|
||||
: `\\${match}`
|
||||
],
|
||||
|
||||
[
|
||||
// > a question mark (?) matches a single character
|
||||
/(?!\\)\?/g,
|
||||
() => '[^/]'
|
||||
],
|
||||
|
||||
// leading slash
|
||||
[
|
||||
|
||||
// > A leading slash matches the beginning of the pathname.
|
||||
// > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
|
||||
// A leading slash matches the beginning of the pathname
|
||||
/^\//,
|
||||
() => '^'
|
||||
],
|
||||
|
||||
// replace special metacharacter slash after the leading slash
|
||||
[
|
||||
/\//g,
|
||||
() => '\\/'
|
||||
],
|
||||
|
||||
[
|
||||
// > A leading "**" followed by a slash means match in all directories.
|
||||
// > For example, "**/foo" matches file or directory "foo" anywhere,
|
||||
// > the same as pattern "foo".
|
||||
// > "**/foo/bar" matches file or directory "bar" anywhere that is directly
|
||||
// > under directory "foo".
|
||||
// Notice that the '*'s have been replaced as '\\*'
|
||||
/^\^*\\\*\\\*\\\//,
|
||||
|
||||
// '**/foo' <-> 'foo'
|
||||
() => '^(?:.*\\/)?'
|
||||
]
|
||||
]
|
||||
|
||||
const DEFAULT_REPLACER_SUFFIX = [
|
||||
// starting
|
||||
[
|
||||
// there will be no leading '/'
|
||||
// (which has been replaced by section "leading slash")
|
||||
// If starts with '**', adding a '^' to the regular expression also works
|
||||
/^(?=[^^])/,
|
||||
function startingReplacer () {
|
||||
return !/\/(?!$)/.test(this)
|
||||
// > If the pattern does not contain a slash /,
|
||||
// > Git treats it as a shell glob pattern
|
||||
// Actually, if there is only a trailing slash,
|
||||
// git also treats it as a shell glob pattern
|
||||
? '(?:^|\\/)'
|
||||
|
||||
// > Otherwise, Git treats the pattern as a shell glob suitable for
|
||||
// > consumption by fnmatch(3)
|
||||
: '^'
|
||||
}
|
||||
],
|
||||
|
||||
// two globstars
|
||||
[
|
||||
// Use lookahead assertions so that we could match more than one `'/**'`
|
||||
/\\\/\\\*\\\*(?=\\\/|$)/g,
|
||||
|
||||
// Zero, one or several directories
|
||||
// should not use '*', or it will be replaced by the next replacer
|
||||
|
||||
// Check if it is not the last `'/**'`
|
||||
(match, index, str) => index + 6 < str.length
|
||||
|
||||
// case: /**/
|
||||
// > A slash followed by two consecutive asterisks then a slash matches
|
||||
// > zero or more directories.
|
||||
// > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on.
|
||||
// '/**/'
|
||||
? '(?:\\/[^\\/]+)*'
|
||||
|
||||
// case: /**
|
||||
// > A trailing `"/**"` matches everything inside.
|
||||
|
||||
// #21: everything inside but it should not include the current folder
|
||||
: '\\/.+'
|
||||
],
|
||||
|
||||
// intermediate wildcards
|
||||
[
|
||||
// Never replace escaped '*'
|
||||
// ignore rule '\*' will match the path '*'
|
||||
|
||||
// 'abc.*/' -> go
|
||||
// 'abc.*' -> skip this rule
|
||||
/(^|[^\\]+)\\\*(?=.+)/g,
|
||||
|
||||
// '*.js' matches '.js'
|
||||
// '*.js' doesn't match 'abc'
|
||||
(match, p1) => `${p1}[^\\/]*`
|
||||
],
|
||||
|
||||
// trailing wildcard
|
||||
[
|
||||
/(\^|\\\/)?\\\*$/,
|
||||
(match, p1) => {
|
||||
const prefix = p1
|
||||
// '\^':
|
||||
// '/*' does not match ''
|
||||
// '/*' does not match everything
|
||||
|
||||
// '\\\/':
|
||||
// 'abc/*' does not match 'abc/'
|
||||
? `${p1}[^/]+`
|
||||
|
||||
// 'a*' matches 'a'
|
||||
// 'a*' matches 'aa'
|
||||
: '[^/]*'
|
||||
|
||||
return `${prefix}(?=$|\\/$)`
|
||||
}
|
||||
],
|
||||
|
||||
[
|
||||
// unescape
|
||||
/\\\\\\/g,
|
||||
() => '\\'
|
||||
]
|
||||
]
|
||||
|
||||
const POSITIVE_REPLACERS = [
|
||||
...DEFAULT_REPLACER_PREFIX,
|
||||
|
||||
// 'f'
|
||||
// matches
|
||||
// - /f(end)
|
||||
// - /f/
|
||||
// - (start)f(end)
|
||||
// - (start)f/
|
||||
// doesn't match
|
||||
// - oof
|
||||
// - foo
|
||||
// pseudo:
|
||||
// -> (^|/)f(/|$)
|
||||
|
||||
// ending
|
||||
[
|
||||
// 'js' will not match 'js.'
|
||||
// 'ab' will not match 'abc'
|
||||
/(?:[^*/])$/,
|
||||
|
||||
// 'js*' will not match 'a.js'
|
||||
// 'js/' will not match 'a.js'
|
||||
// 'js' will match 'a.js' and 'a.js/'
|
||||
match => `${match}(?=$|\\/)`
|
||||
],
|
||||
|
||||
...DEFAULT_REPLACER_SUFFIX
|
||||
]
|
||||
|
||||
const NEGATIVE_REPLACERS = [
|
||||
...DEFAULT_REPLACER_PREFIX,
|
||||
|
||||
// #24, #38
|
||||
// The MISSING rule of [gitignore docs](https://git-scm.com/docs/gitignore)
|
||||
// A negative pattern without a trailing wildcard should not
|
||||
// re-include the things inside that directory.
|
||||
|
||||
// eg:
|
||||
// ['node_modules/*', '!node_modules']
|
||||
// should ignore `node_modules/a.js`
|
||||
[
|
||||
/(?:[^*])$/,
|
||||
match => `${match}(?=$|\\/$)`
|
||||
],
|
||||
|
||||
...DEFAULT_REPLACER_SUFFIX
|
||||
]
|
||||
|
||||
// A simple cache, because an ignore rule only has only one certain meaning
|
||||
const cache = Object.create(null)
|
||||
|
||||
// @param {pattern}
|
||||
const make_regex = (pattern, negative, ignorecase) => {
|
||||
const r = cache[pattern]
|
||||
if (r) {
|
||||
return r
|
||||
}
|
||||
|
||||
const replacers = negative
|
||||
? NEGATIVE_REPLACERS
|
||||
: POSITIVE_REPLACERS
|
||||
|
||||
const source = replacers.reduce(
|
||||
(prev, current) => prev.replace(current[0], current[1].bind(pattern)),
|
||||
pattern
|
||||
)
|
||||
|
||||
return cache[pattern] = ignorecase
|
||||
? new RegExp(source, 'i')
|
||||
: new RegExp(source)
|
||||
}
|
||||
|
||||
// > A blank line matches no files, so it can serve as a separator for readability.
|
||||
const checkPattern = pattern => pattern
|
||||
&& typeof pattern === 'string'
|
||||
&& !REGEX_BLANK_LINE.test(pattern)
|
||||
|
||||
// > A line starting with # serves as a comment.
|
||||
&& pattern.indexOf('#') !== 0
|
||||
|
||||
const createRule = (pattern, ignorecase) => {
|
||||
const origin = pattern
|
||||
let negative = false
|
||||
|
||||
// > An optional prefix "!" which negates the pattern;
|
||||
if (pattern.indexOf('!') === 0) {
|
||||
negative = true
|
||||
pattern = pattern.substr(1)
|
||||
}
|
||||
|
||||
pattern = pattern
|
||||
// > Put a backslash ("\") in front of the first "!" for patterns that
|
||||
// > begin with a literal "!", for example, `"\!important!.txt"`.
|
||||
.replace(REGEX_LEADING_EXCAPED_EXCLAMATION, '!')
|
||||
// > Put a backslash ("\") in front of the first hash for patterns that
|
||||
// > begin with a hash.
|
||||
.replace(REGEX_LEADING_EXCAPED_HASH, '#')
|
||||
|
||||
const regex = make_regex(pattern, negative, ignorecase)
|
||||
|
||||
return {
|
||||
origin,
|
||||
pattern,
|
||||
negative,
|
||||
regex
|
||||
}
|
||||
}
|
||||
|
||||
class IgnoreBase {
|
||||
constructor ({
|
||||
ignorecase = true
|
||||
} = {}) {
|
||||
this._rules = []
|
||||
this._ignorecase = ignorecase
|
||||
define(this, KEY_IGNORE, true)
|
||||
this._initCache()
|
||||
}
|
||||
|
||||
_initCache () {
|
||||
this._cache = Object.create(null)
|
||||
}
|
||||
|
||||
// @param {Array.<string>|string|Ignore} pattern
|
||||
add (pattern) {
|
||||
this._added = false
|
||||
|
||||
if (typeof pattern === 'string') {
|
||||
pattern = pattern.split(/\r?\n/g)
|
||||
}
|
||||
|
||||
make_array(pattern).forEach(this._addPattern, this)
|
||||
|
||||
// Some rules have just added to the ignore,
|
||||
// making the behavior changed.
|
||||
if (this._added) {
|
||||
this._initCache()
|
||||
}
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
// legacy
|
||||
addPattern (pattern) {
|
||||
return this.add(pattern)
|
||||
}
|
||||
|
||||
_addPattern (pattern) {
|
||||
// #32
|
||||
if (pattern && pattern[KEY_IGNORE]) {
|
||||
this._rules = this._rules.concat(pattern._rules)
|
||||
this._added = true
|
||||
return
|
||||
}
|
||||
|
||||
if (checkPattern(pattern)) {
|
||||
const rule = createRule(pattern, this._ignorecase)
|
||||
this._added = true
|
||||
this._rules.push(rule)
|
||||
}
|
||||
}
|
||||
|
||||
filter (paths) {
|
||||
return make_array(paths).filter(path => this._filter(path))
|
||||
}
|
||||
|
||||
createFilter () {
|
||||
return path => this._filter(path)
|
||||
}
|
||||
|
||||
ignores (path) {
|
||||
return !this._filter(path)
|
||||
}
|
||||
|
||||
// @returns `Boolean` true if the `path` is NOT ignored
|
||||
_filter (path, slices) {
|
||||
if (!path) {
|
||||
return false
|
||||
}
|
||||
|
||||
if (path in this._cache) {
|
||||
return this._cache[path]
|
||||
}
|
||||
|
||||
if (!slices) {
|
||||
// path/to/a.js
|
||||
// ['path', 'to', 'a.js']
|
||||
slices = path.split(SLASH)
|
||||
}
|
||||
|
||||
slices.pop()
|
||||
|
||||
return this._cache[path] = slices.length
|
||||
// > It is not possible to re-include a file if a parent directory of
|
||||
// > that file is excluded.
|
||||
// If the path contains a parent directory, check the parent first
|
||||
? this._filter(slices.join(SLASH) + SLASH, slices)
|
||||
&& this._test(path)
|
||||
|
||||
// Or only test the path
|
||||
: this._test(path)
|
||||
}
|
||||
|
||||
// @returns {Boolean} true if a file is NOT ignored
|
||||
_test (path) {
|
||||
// Explicitly define variable type by setting matched to `0`
|
||||
let matched = 0
|
||||
|
||||
this._rules.forEach(rule => {
|
||||
// if matched = true, then we only test negative rules
|
||||
// if matched = false, then we test non-negative rules
|
||||
if (!(matched ^ rule.negative)) {
|
||||
matched = rule.negative ^ rule.regex.test(path)
|
||||
}
|
||||
})
|
||||
|
||||
return !matched
|
||||
}
|
||||
}
|
||||
|
||||
// Windows
|
||||
// --------------------------------------------------------------
|
||||
/* istanbul ignore if */
|
||||
if (
|
||||
// Detect `process` so that it can run in browsers.
|
||||
typeof process !== 'undefined'
|
||||
&& (
|
||||
process.env && process.env.IGNORE_TEST_WIN32
|
||||
|| process.platform === 'win32'
|
||||
)
|
||||
) {
|
||||
const filter = IgnoreBase.prototype._filter
|
||||
|
||||
/* eslint no-control-regex: "off" */
|
||||
const make_posix = str => /^\\\\\?\\/.test(str)
|
||||
|| /[^\x00-\x80]+/.test(str)
|
||||
? str
|
||||
: str.replace(/\\/g, '/')
|
||||
|
||||
IgnoreBase.prototype._filter = function filterWin32 (path, slices) {
|
||||
path = make_posix(path)
|
||||
return filter.call(this, path, slices)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = options => new IgnoreBase(options)
|
466
app_vue/node_modules/ignore/legacy.js
generated
vendored
Normal file
466
app_vue/node_modules/ignore/legacy.js
generated
vendored
Normal file
@ -0,0 +1,466 @@
|
||||
'use strict';
|
||||
|
||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
// A simple implementation of make-array
|
||||
function make_array(subject) {
|
||||
return Array.isArray(subject) ? subject : [subject];
|
||||
}
|
||||
|
||||
var REGEX_BLANK_LINE = /^\s+$/;
|
||||
var REGEX_LEADING_EXCAPED_EXCLAMATION = /^\\!/;
|
||||
var REGEX_LEADING_EXCAPED_HASH = /^\\#/;
|
||||
var SLASH = '/';
|
||||
var KEY_IGNORE = typeof Symbol !== 'undefined' ? Symbol.for('node-ignore')
|
||||
/* istanbul ignore next */
|
||||
: 'node-ignore';
|
||||
|
||||
var define = function define(object, key, value) {
|
||||
return Object.defineProperty(object, key, { value });
|
||||
};
|
||||
|
||||
var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g;
|
||||
|
||||
// Sanitize the range of a regular expression
|
||||
// The cases are complicated, see test cases for details
|
||||
var sanitizeRange = function sanitizeRange(range) {
|
||||
return range.replace(REGEX_REGEXP_RANGE, function (match, from, to) {
|
||||
return from.charCodeAt(0) <= to.charCodeAt(0) ? match
|
||||
// Invalid range (out of order) which is ok for gitignore rules but
|
||||
// fatal for JavaScript regular expression, so eliminate it.
|
||||
: '';
|
||||
});
|
||||
};
|
||||
|
||||
// > If the pattern ends with a slash,
|
||||
// > it is removed for the purpose of the following description,
|
||||
// > but it would only find a match with a directory.
|
||||
// > In other words, foo/ will match a directory foo and paths underneath it,
|
||||
// > but will not match a regular file or a symbolic link foo
|
||||
// > (this is consistent with the way how pathspec works in general in Git).
|
||||
// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'
|
||||
// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call
|
||||
// you could use option `mark: true` with `glob`
|
||||
|
||||
// '`foo/`' should not continue with the '`..`'
|
||||
var DEFAULT_REPLACER_PREFIX = [
|
||||
|
||||
// > Trailing spaces are ignored unless they are quoted with backslash ("\")
|
||||
[
|
||||
// (a\ ) -> (a )
|
||||
// (a ) -> (a)
|
||||
// (a \ ) -> (a )
|
||||
/\\?\s+$/, function (match) {
|
||||
return match.indexOf('\\') === 0 ? ' ' : '';
|
||||
}],
|
||||
|
||||
// replace (\ ) with ' '
|
||||
[/\\\s/g, function () {
|
||||
return ' ';
|
||||
}],
|
||||
|
||||
// Escape metacharacters
|
||||
// which is written down by users but means special for regular expressions.
|
||||
|
||||
// > There are 12 characters with special meanings:
|
||||
// > - the backslash \,
|
||||
// > - the caret ^,
|
||||
// > - the dollar sign $,
|
||||
// > - the period or dot .,
|
||||
// > - the vertical bar or pipe symbol |,
|
||||
// > - the question mark ?,
|
||||
// > - the asterisk or star *,
|
||||
// > - the plus sign +,
|
||||
// > - the opening parenthesis (,
|
||||
// > - the closing parenthesis ),
|
||||
// > - and the opening square bracket [,
|
||||
// > - the opening curly brace {,
|
||||
// > These special characters are often called "metacharacters".
|
||||
[/[\\^$.|*+(){]/g, function (match) {
|
||||
return `\\${match}`;
|
||||
}], [
|
||||
// > [abc] matches any character inside the brackets
|
||||
// > (in this case a, b, or c);
|
||||
/\[([^\]/]*)($|\])/g, function (match, p1, p2) {
|
||||
return p2 === ']' ? `[${sanitizeRange(p1)}]` : `\\${match}`;
|
||||
}], [
|
||||
// > a question mark (?) matches a single character
|
||||
/(?!\\)\?/g, function () {
|
||||
return '[^/]';
|
||||
}],
|
||||
|
||||
// leading slash
|
||||
[
|
||||
|
||||
// > A leading slash matches the beginning of the pathname.
|
||||
// > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
|
||||
// A leading slash matches the beginning of the pathname
|
||||
/^\//, function () {
|
||||
return '^';
|
||||
}],
|
||||
|
||||
// replace special metacharacter slash after the leading slash
|
||||
[/\//g, function () {
|
||||
return '\\/';
|
||||
}], [
|
||||
// > A leading "**" followed by a slash means match in all directories.
|
||||
// > For example, "**/foo" matches file or directory "foo" anywhere,
|
||||
// > the same as pattern "foo".
|
||||
// > "**/foo/bar" matches file or directory "bar" anywhere that is directly
|
||||
// > under directory "foo".
|
||||
// Notice that the '*'s have been replaced as '\\*'
|
||||
/^\^*\\\*\\\*\\\//,
|
||||
|
||||
// '**/foo' <-> 'foo'
|
||||
function () {
|
||||
return '^(?:.*\\/)?';
|
||||
}]];
|
||||
|
||||
var DEFAULT_REPLACER_SUFFIX = [
|
||||
// starting
|
||||
[
|
||||
// there will be no leading '/'
|
||||
// (which has been replaced by section "leading slash")
|
||||
// If starts with '**', adding a '^' to the regular expression also works
|
||||
/^(?=[^^])/, function startingReplacer() {
|
||||
return !/\/(?!$)/.test(this)
|
||||
// > If the pattern does not contain a slash /,
|
||||
// > Git treats it as a shell glob pattern
|
||||
// Actually, if there is only a trailing slash,
|
||||
// git also treats it as a shell glob pattern
|
||||
? '(?:^|\\/)'
|
||||
|
||||
// > Otherwise, Git treats the pattern as a shell glob suitable for
|
||||
// > consumption by fnmatch(3)
|
||||
: '^';
|
||||
}],
|
||||
|
||||
// two globstars
|
||||
[
|
||||
// Use lookahead assertions so that we could match more than one `'/**'`
|
||||
/\\\/\\\*\\\*(?=\\\/|$)/g,
|
||||
|
||||
// Zero, one or several directories
|
||||
// should not use '*', or it will be replaced by the next replacer
|
||||
|
||||
// Check if it is not the last `'/**'`
|
||||
function (match, index, str) {
|
||||
return index + 6 < str.length
|
||||
|
||||
// case: /**/
|
||||
// > A slash followed by two consecutive asterisks then a slash matches
|
||||
// > zero or more directories.
|
||||
// > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on.
|
||||
// '/**/'
|
||||
? '(?:\\/[^\\/]+)*'
|
||||
|
||||
// case: /**
|
||||
// > A trailing `"/**"` matches everything inside.
|
||||
|
||||
// #21: everything inside but it should not include the current folder
|
||||
: '\\/.+';
|
||||
}],
|
||||
|
||||
// intermediate wildcards
|
||||
[
|
||||
// Never replace escaped '*'
|
||||
// ignore rule '\*' will match the path '*'
|
||||
|
||||
// 'abc.*/' -> go
|
||||
// 'abc.*' -> skip this rule
|
||||
/(^|[^\\]+)\\\*(?=.+)/g,
|
||||
|
||||
// '*.js' matches '.js'
|
||||
// '*.js' doesn't match 'abc'
|
||||
function (match, p1) {
|
||||
return `${p1}[^\\/]*`;
|
||||
}],
|
||||
|
||||
// trailing wildcard
|
||||
[/(\^|\\\/)?\\\*$/, function (match, p1) {
|
||||
var prefix = p1
|
||||
// '\^':
|
||||
// '/*' does not match ''
|
||||
// '/*' does not match everything
|
||||
|
||||
// '\\\/':
|
||||
// 'abc/*' does not match 'abc/'
|
||||
? `${p1}[^/]+`
|
||||
|
||||
// 'a*' matches 'a'
|
||||
// 'a*' matches 'aa'
|
||||
: '[^/]*';
|
||||
|
||||
return `${prefix}(?=$|\\/$)`;
|
||||
}], [
|
||||
// unescape
|
||||
/\\\\\\/g, function () {
|
||||
return '\\';
|
||||
}]];
|
||||
|
||||
var POSITIVE_REPLACERS = [].concat(DEFAULT_REPLACER_PREFIX, [
|
||||
|
||||
// 'f'
|
||||
// matches
|
||||
// - /f(end)
|
||||
// - /f/
|
||||
// - (start)f(end)
|
||||
// - (start)f/
|
||||
// doesn't match
|
||||
// - oof
|
||||
// - foo
|
||||
// pseudo:
|
||||
// -> (^|/)f(/|$)
|
||||
|
||||
// ending
|
||||
[
|
||||
// 'js' will not match 'js.'
|
||||
// 'ab' will not match 'abc'
|
||||
/(?:[^*/])$/,
|
||||
|
||||
// 'js*' will not match 'a.js'
|
||||
// 'js/' will not match 'a.js'
|
||||
// 'js' will match 'a.js' and 'a.js/'
|
||||
function (match) {
|
||||
return `${match}(?=$|\\/)`;
|
||||
}]], DEFAULT_REPLACER_SUFFIX);
|
||||
|
||||
var NEGATIVE_REPLACERS = [].concat(DEFAULT_REPLACER_PREFIX, [
|
||||
|
||||
// #24, #38
|
||||
// The MISSING rule of [gitignore docs](https://git-scm.com/docs/gitignore)
|
||||
// A negative pattern without a trailing wildcard should not
|
||||
// re-include the things inside that directory.
|
||||
|
||||
// eg:
|
||||
// ['node_modules/*', '!node_modules']
|
||||
// should ignore `node_modules/a.js`
|
||||
[/(?:[^*])$/, function (match) {
|
||||
return `${match}(?=$|\\/$)`;
|
||||
}]], DEFAULT_REPLACER_SUFFIX);
|
||||
|
||||
// A simple cache, because an ignore rule only has only one certain meaning
|
||||
var cache = Object.create(null);
|
||||
|
||||
// @param {pattern}
|
||||
var make_regex = function make_regex(pattern, negative, ignorecase) {
|
||||
var r = cache[pattern];
|
||||
if (r) {
|
||||
return r;
|
||||
}
|
||||
|
||||
var replacers = negative ? NEGATIVE_REPLACERS : POSITIVE_REPLACERS;
|
||||
|
||||
var source = replacers.reduce(function (prev, current) {
|
||||
return prev.replace(current[0], current[1].bind(pattern));
|
||||
}, pattern);
|
||||
|
||||
return cache[pattern] = ignorecase ? new RegExp(source, 'i') : new RegExp(source);
|
||||
};
|
||||
|
||||
// > A blank line matches no files, so it can serve as a separator for readability.
|
||||
var checkPattern = function checkPattern(pattern) {
|
||||
return pattern && typeof pattern === 'string' && !REGEX_BLANK_LINE.test(pattern)
|
||||
|
||||
// > A line starting with # serves as a comment.
|
||||
&& pattern.indexOf('#') !== 0;
|
||||
};
|
||||
|
||||
var createRule = function createRule(pattern, ignorecase) {
|
||||
var origin = pattern;
|
||||
var negative = false;
|
||||
|
||||
// > An optional prefix "!" which negates the pattern;
|
||||
if (pattern.indexOf('!') === 0) {
|
||||
negative = true;
|
||||
pattern = pattern.substr(1);
|
||||
}
|
||||
|
||||
pattern = pattern
|
||||
// > Put a backslash ("\") in front of the first "!" for patterns that
|
||||
// > begin with a literal "!", for example, `"\!important!.txt"`.
|
||||
.replace(REGEX_LEADING_EXCAPED_EXCLAMATION, '!')
|
||||
// > Put a backslash ("\") in front of the first hash for patterns that
|
||||
// > begin with a hash.
|
||||
.replace(REGEX_LEADING_EXCAPED_HASH, '#');
|
||||
|
||||
var regex = make_regex(pattern, negative, ignorecase);
|
||||
|
||||
return {
|
||||
origin,
|
||||
pattern,
|
||||
negative,
|
||||
regex
|
||||
};
|
||||
};
|
||||
|
||||
var IgnoreBase = function () {
|
||||
function IgnoreBase() {
|
||||
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
||||
_ref$ignorecase = _ref.ignorecase,
|
||||
ignorecase = _ref$ignorecase === undefined ? true : _ref$ignorecase;
|
||||
|
||||
_classCallCheck(this, IgnoreBase);
|
||||
|
||||
this._rules = [];
|
||||
this._ignorecase = ignorecase;
|
||||
define(this, KEY_IGNORE, true);
|
||||
this._initCache();
|
||||
}
|
||||
|
||||
_createClass(IgnoreBase, [{
|
||||
key: '_initCache',
|
||||
value: function _initCache() {
|
||||
this._cache = Object.create(null);
|
||||
}
|
||||
|
||||
// @param {Array.<string>|string|Ignore} pattern
|
||||
|
||||
}, {
|
||||
key: 'add',
|
||||
value: function add(pattern) {
|
||||
this._added = false;
|
||||
|
||||
if (typeof pattern === 'string') {
|
||||
pattern = pattern.split(/\r?\n/g);
|
||||
}
|
||||
|
||||
make_array(pattern).forEach(this._addPattern, this);
|
||||
|
||||
// Some rules have just added to the ignore,
|
||||
// making the behavior changed.
|
||||
if (this._added) {
|
||||
this._initCache();
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
// legacy
|
||||
|
||||
}, {
|
||||
key: 'addPattern',
|
||||
value: function addPattern(pattern) {
|
||||
return this.add(pattern);
|
||||
}
|
||||
}, {
|
||||
key: '_addPattern',
|
||||
value: function _addPattern(pattern) {
|
||||
// #32
|
||||
if (pattern && pattern[KEY_IGNORE]) {
|
||||
this._rules = this._rules.concat(pattern._rules);
|
||||
this._added = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (checkPattern(pattern)) {
|
||||
var rule = createRule(pattern, this._ignorecase);
|
||||
this._added = true;
|
||||
this._rules.push(rule);
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: 'filter',
|
||||
value: function filter(paths) {
|
||||
var _this = this;
|
||||
|
||||
return make_array(paths).filter(function (path) {
|
||||
return _this._filter(path);
|
||||
});
|
||||
}
|
||||
}, {
|
||||
key: 'createFilter',
|
||||
value: function createFilter() {
|
||||
var _this2 = this;
|
||||
|
||||
return function (path) {
|
||||
return _this2._filter(path);
|
||||
};
|
||||
}
|
||||
}, {
|
||||
key: 'ignores',
|
||||
value: function ignores(path) {
|
||||
return !this._filter(path);
|
||||
}
|
||||
|
||||
// @returns `Boolean` true if the `path` is NOT ignored
|
||||
|
||||
}, {
|
||||
key: '_filter',
|
||||
value: function _filter(path, slices) {
|
||||
if (!path) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (path in this._cache) {
|
||||
return this._cache[path];
|
||||
}
|
||||
|
||||
if (!slices) {
|
||||
// path/to/a.js
|
||||
// ['path', 'to', 'a.js']
|
||||
slices = path.split(SLASH);
|
||||
}
|
||||
|
||||
slices.pop();
|
||||
|
||||
return this._cache[path] = slices.length
|
||||
// > It is not possible to re-include a file if a parent directory of
|
||||
// > that file is excluded.
|
||||
// If the path contains a parent directory, check the parent first
|
||||
? this._filter(slices.join(SLASH) + SLASH, slices) && this._test(path)
|
||||
|
||||
// Or only test the path
|
||||
: this._test(path);
|
||||
}
|
||||
|
||||
// @returns {Boolean} true if a file is NOT ignored
|
||||
|
||||
}, {
|
||||
key: '_test',
|
||||
value: function _test(path) {
|
||||
// Explicitly define variable type by setting matched to `0`
|
||||
var matched = 0;
|
||||
|
||||
this._rules.forEach(function (rule) {
|
||||
// if matched = true, then we only test negative rules
|
||||
// if matched = false, then we test non-negative rules
|
||||
if (!(matched ^ rule.negative)) {
|
||||
matched = rule.negative ^ rule.regex.test(path);
|
||||
}
|
||||
});
|
||||
|
||||
return !matched;
|
||||
}
|
||||
}]);
|
||||
|
||||
return IgnoreBase;
|
||||
}();
|
||||
|
||||
// Windows
|
||||
// --------------------------------------------------------------
|
||||
/* istanbul ignore if */
|
||||
|
||||
|
||||
if (
|
||||
// Detect `process` so that it can run in browsers.
|
||||
typeof process !== 'undefined' && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === 'win32')) {
|
||||
var filter = IgnoreBase.prototype._filter;
|
||||
|
||||
/* eslint no-control-regex: "off" */
|
||||
var make_posix = function make_posix(str) {
|
||||
return (/^\\\\\?\\/.test(str) || /[^\x00-\x80]+/.test(str) ? str : str.replace(/\\/g, '/')
|
||||
);
|
||||
};
|
||||
|
||||
IgnoreBase.prototype._filter = function filterWin32(path, slices) {
|
||||
path = make_posix(path);
|
||||
return filter.call(this, path, slices);
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = function (options) {
|
||||
return new IgnoreBase(options);
|
||||
};
|
64
app_vue/node_modules/ignore/package.json
generated
vendored
Normal file
64
app_vue/node_modules/ignore/package.json
generated
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
{
|
||||
"name": "ignore",
|
||||
"version": "4.0.6",
|
||||
"description": "Ignore is a manager and filter for .gitignore rules.",
|
||||
"files": [
|
||||
"legacy.js",
|
||||
"index.js",
|
||||
"index.d.ts",
|
||||
"LICENSE-MIT"
|
||||
],
|
||||
"scripts": {
|
||||
"prepublish": "npm run build",
|
||||
"build": "babel -o legacy.js index.js",
|
||||
"test:lint": "eslint .",
|
||||
"test:tsc": "tsc ./test/ts/simple.ts",
|
||||
"test:git": "tap test/git-check-ignore.js",
|
||||
"test:ignore": "tap test/ignore.js --coverage",
|
||||
"test-no-cov": "npm run test:lint && npm run test:tsc && tap test/*.js --coverage",
|
||||
"test": "npm run test-no-cov",
|
||||
"posttest": "tap --coverage-report=html && codecov"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git@github.com:kaelzhang/node-ignore.git"
|
||||
},
|
||||
"keywords": [
|
||||
"ignore",
|
||||
".gitignore",
|
||||
"gitignore",
|
||||
"npmignore",
|
||||
"rules",
|
||||
"manager",
|
||||
"filter",
|
||||
"regexp",
|
||||
"regex",
|
||||
"fnmatch",
|
||||
"glob",
|
||||
"asterisks",
|
||||
"regular-expression"
|
||||
],
|
||||
"author": "kael",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/kaelzhang/node-ignore/issues"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-cli": "^6.26.0",
|
||||
"babel-preset-env": "^1.7.0",
|
||||
"codecov": "^3.0.4",
|
||||
"eslint": "^5.3.0",
|
||||
"eslint-config-ostai": "^1.3.2",
|
||||
"eslint-plugin-import": "^2.13.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"pre-suf": "^1.1.0",
|
||||
"rimraf": "^2.6.2",
|
||||
"spawn-sync": "^2.0.0",
|
||||
"tap": "^12.0.1",
|
||||
"tmp": "0.0.33",
|
||||
"typescript": "^3.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 4"
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user