Fixes to NPM...
modified: node_modules/.package-lock.json deleted: node_modules/array-union/index.d.ts deleted: node_modules/array-union/index.js deleted: node_modules/array-union/license deleted: node_modules/array-union/package.json deleted: node_modules/array-union/readme.md modified: node_modules/cliui/CHANGELOG.md modified: node_modules/cliui/package.json modified: node_modules/fast-glob/out/index.d.ts modified: node_modules/fast-glob/out/index.js modified: node_modules/fast-glob/out/managers/patterns.d.ts modified: node_modules/fast-glob/out/managers/patterns.js modified: node_modules/fast-glob/out/managers/tasks.d.ts modified: node_modules/fast-glob/out/managers/tasks.js modified: node_modules/fast-glob/out/providers/async.d.ts modified: node_modules/fast-glob/out/providers/async.js modified: node_modules/fast-glob/out/providers/filters/deep.d.ts modified: node_modules/fast-glob/out/providers/filters/deep.js modified: node_modules/fast-glob/out/providers/filters/entry.d.ts modified: node_modules/fast-glob/out/providers/filters/entry.js modified: node_modules/fast-glob/out/providers/filters/error.d.ts modified: node_modules/fast-glob/out/providers/filters/error.js modified: node_modules/fast-glob/out/providers/matchers/matcher.d.ts modified: node_modules/fast-glob/out/providers/matchers/matcher.js modified: node_modules/fast-glob/out/providers/matchers/partial.d.ts modified: node_modules/fast-glob/out/providers/matchers/partial.js modified: node_modules/fast-glob/out/providers/provider.d.ts modified: node_modules/fast-glob/out/providers/provider.js modified: node_modules/fast-glob/out/providers/stream.d.ts modified: node_modules/fast-glob/out/providers/stream.js modified: node_modules/fast-glob/out/providers/sync.d.ts modified: node_modules/fast-glob/out/providers/sync.js modified: node_modules/fast-glob/out/providers/transformers/entry.d.ts modified: node_modules/fast-glob/out/providers/transformers/entry.js modified: node_modules/fast-glob/out/readers/reader.d.ts modified: node_modules/fast-glob/out/readers/reader.js modified: node_modules/fast-glob/out/readers/stream.d.ts modified: node_modules/fast-glob/out/readers/stream.js modified: node_modules/fast-glob/out/readers/sync.d.ts modified: node_modules/fast-glob/out/readers/sync.js modified: node_modules/fast-glob/out/settings.d.ts modified: node_modules/fast-glob/out/settings.js modified: node_modules/fast-glob/out/types/index.d.ts modified: node_modules/fast-glob/out/types/index.js modified: node_modules/fast-glob/out/utils/array.d.ts modified: node_modules/fast-glob/out/utils/array.js modified: node_modules/fast-glob/out/utils/errno.d.ts modified: node_modules/fast-glob/out/utils/errno.js modified: node_modules/fast-glob/out/utils/fs.d.ts modified: node_modules/fast-glob/out/utils/fs.js modified: node_modules/fast-glob/out/utils/index.d.ts modified: node_modules/fast-glob/out/utils/index.js modified: node_modules/fast-glob/out/utils/path.d.ts modified: node_modules/fast-glob/out/utils/path.js modified: node_modules/fast-glob/out/utils/pattern.d.ts modified: node_modules/fast-glob/out/utils/pattern.js modified: node_modules/fast-glob/out/utils/stream.d.ts modified: node_modules/fast-glob/out/utils/stream.js modified: node_modules/fast-glob/out/utils/string.d.ts modified: node_modules/fast-glob/out/utils/string.js modified: node_modules/fast-glob/package.json modified: node_modules/fastq/README.md modified: node_modules/fastq/index.d.ts modified: node_modules/fastq/package.json modified: node_modules/fastq/queue.js modified: node_modules/fastq/test/promise.js deleted: node_modules/fs-extra/CHANGELOG.md modified: node_modules/fs-extra/README.md deleted: node_modules/fs-extra/lib/copy-sync/copy-sync.js deleted: node_modules/fs-extra/lib/copy-sync/index.js modified: node_modules/fs-extra/lib/copy/copy.js modified: node_modules/fs-extra/lib/copy/index.js modified: node_modules/fs-extra/lib/ensure/index.js modified: node_modules/fs-extra/lib/fs/index.js modified: node_modules/fs-extra/lib/index.js modified: node_modules/fs-extra/lib/json/output-json-sync.js modified: node_modules/fs-extra/lib/json/output-json.js deleted: node_modules/fs-extra/lib/move-sync/index.js deleted: node_modules/fs-extra/lib/move-sync/move-sync.js modified: node_modules/fs-extra/lib/move/index.js modified: node_modules/fs-extra/lib/move/move.js deleted: node_modules/fs-extra/lib/output/index.js modified: node_modules/fs-extra/lib/remove/index.js deleted: node_modules/fs-extra/lib/remove/rimraf.js modified: node_modules/fs-extra/package.json deleted: node_modules/globby/gitignore.js modified: node_modules/globby/index.d.ts modified: node_modules/globby/index.js modified: node_modules/globby/package.json modified: node_modules/globby/readme.md deleted: node_modules/globby/stream-utils.js deleted: node_modules/globby/to-path.js modified: node_modules/graceful-fs/LICENSE modified: node_modules/graceful-fs/graceful-fs.js modified: node_modules/graceful-fs/package.json modified: node_modules/graceful-fs/polyfills.js modified: node_modules/ignore/README.md modified: node_modules/ignore/index.js modified: node_modules/ignore/legacy.js modified: node_modules/ignore/package.json modified: node_modules/lilconfig/dist/index.js modified: node_modules/lilconfig/package.json modified: node_modules/lilconfig/readme.md deleted: node_modules/micromatch/CHANGELOG.md modified: node_modules/micromatch/README.md modified: node_modules/micromatch/index.js modified: node_modules/micromatch/package.json modified: node_modules/nanoid/bin/nanoid.cjs modified: node_modules/nanoid/index.browser.cjs modified: node_modules/nanoid/index.browser.js deleted: node_modules/nanoid/index.dev.js deleted: node_modules/nanoid/index.prod.js modified: node_modules/nanoid/nanoid.js modified: node_modules/nanoid/package.json modified: node_modules/postcss-cli/index.js modified: node_modules/postcss-cli/package.json modified: node_modules/postcss-load-config/README.md modified: node_modules/postcss-load-config/package.json modified: node_modules/postcss-load-config/src/index.d.ts modified: node_modules/postcss-load-config/src/index.js modified: node_modules/postcss-load-config/src/req.js modified: node_modules/postcss/README.md modified: node_modules/postcss/lib/at-rule.d.ts modified: node_modules/postcss/lib/comment.d.ts modified: node_modules/postcss/lib/container.d.ts modified: node_modules/postcss/lib/container.js modified: node_modules/postcss/lib/css-syntax-error.d.ts modified: node_modules/postcss/lib/declaration.d.ts modified: node_modules/postcss/lib/document.d.ts modified: node_modules/postcss/lib/fromJSON.d.ts modified: node_modules/postcss/lib/input.d.ts modified: node_modules/postcss/lib/input.js modified: node_modules/postcss/lib/lazy-result.d.ts modified: node_modules/postcss/lib/list.d.ts modified: node_modules/postcss/lib/list.js modified: node_modules/postcss/lib/map-generator.js modified: node_modules/postcss/lib/no-work-result.d.ts modified: node_modules/postcss/lib/node.d.ts modified: node_modules/postcss/lib/parse.d.ts modified: node_modules/postcss/lib/parser.js modified: node_modules/postcss/lib/postcss.d.ts modified: node_modules/postcss/lib/postcss.js modified: node_modules/postcss/lib/previous-map.d.ts modified: node_modules/postcss/lib/processor.d.ts modified: node_modules/postcss/lib/processor.js modified: node_modules/postcss/lib/result.d.ts modified: node_modules/postcss/lib/root.d.ts modified: node_modules/postcss/lib/root.js modified: node_modules/postcss/lib/rule.d.ts modified: node_modules/postcss/lib/stringifier.d.ts modified: node_modules/postcss/lib/stringify.d.ts modified: node_modules/postcss/lib/warning.d.ts modified: node_modules/postcss/package.json modified: node_modules/slash/index.d.ts modified: node_modules/slash/index.js modified: node_modules/slash/package.json modified: node_modules/slash/readme.md modified: node_modules/yaml/LICENSE modified: node_modules/yaml/README.md deleted: node_modules/yaml/browser/dist/PlainValue-b8036b75.js deleted: node_modules/yaml/browser/dist/Schema-e94716c8.js modified: node_modules/yaml/browser/dist/index.js deleted: node_modules/yaml/browser/dist/legacy-exports.js deleted: node_modules/yaml/browser/dist/package.json deleted: node_modules/yaml/browser/dist/parse-cst.js deleted: node_modules/yaml/browser/dist/resolveSeq-492ab440.js deleted: node_modules/yaml/browser/dist/types.js modified: node_modules/yaml/browser/dist/util.js deleted: node_modules/yaml/browser/dist/warnings-df54cb69.js modified: node_modules/yaml/browser/index.js deleted: node_modules/yaml/browser/map.js deleted: node_modules/yaml/browser/pair.js deleted: node_modules/yaml/browser/parse-cst.js deleted: node_modules/yaml/browser/scalar.js deleted: node_modules/yaml/browser/schema.js deleted: node_modules/yaml/browser/seq.js deleted: node_modules/yaml/browser/types.js deleted: node_modules/yaml/browser/types/binary.js deleted: node_modules/yaml/browser/types/omap.js deleted: node_modules/yaml/browser/types/pairs.js deleted: node_modules/yaml/browser/types/set.js deleted: node_modules/yaml/browser/types/timestamp.js deleted: node_modules/yaml/browser/util.js deleted: node_modules/yaml/dist/Document-9b4560a1.js deleted: node_modules/yaml/dist/PlainValue-ec8e588e.js deleted: node_modules/yaml/dist/Schema-88e323a7.js modified: node_modules/yaml/dist/index.js deleted: node_modules/yaml/dist/legacy-exports.js deleted: node_modules/yaml/dist/parse-cst.js deleted: node_modules/yaml/dist/resolveSeq-d03cb037.js modified: node_modules/yaml/dist/test-events.js deleted: node_modules/yaml/dist/types.js modified: node_modules/yaml/dist/util.js deleted: node_modules/yaml/dist/warnings-1000a372.js deleted: node_modules/yaml/index.d.ts deleted: node_modules/yaml/index.js deleted: node_modules/yaml/map.js modified: node_modules/yaml/package.json deleted: node_modules/yaml/pair.js deleted: node_modules/yaml/parse-cst.d.ts deleted: node_modules/yaml/parse-cst.js deleted: node_modules/yaml/scalar.js deleted: node_modules/yaml/schema.js deleted: node_modules/yaml/seq.js deleted: node_modules/yaml/types.d.ts deleted: node_modules/yaml/types.js deleted: node_modules/yaml/types.mjs deleted: node_modules/yaml/types/binary.js deleted: node_modules/yaml/types/omap.js deleted: node_modules/yaml/types/pairs.js deleted: node_modules/yaml/types/set.js deleted: node_modules/yaml/types/timestamp.js modified: node_modules/yaml/util.d.ts modified: node_modules/yaml/util.js deleted: node_modules/yaml/util.mjs modified: node_modules/yargs-parser/CHANGELOG.md modified: node_modules/yargs-parser/build/index.cjs modified: node_modules/yargs-parser/build/lib/index.js modified: node_modules/yargs-parser/build/lib/yargs-parser.js modified: node_modules/yargs-parser/package.json modified: node_modules/yargs/build/index.cjs modified: node_modules/yargs/build/lib/command.js modified: node_modules/yargs/build/lib/completion-templates.js modified: node_modules/yargs/build/lib/completion.js modified: node_modules/yargs/build/lib/usage.js modified: node_modules/yargs/build/lib/validation.js modified: node_modules/yargs/build/lib/yargs-factory.js modified: node_modules/yargs/build/lib/yerror.js modified: node_modules/yargs/lib/platform-shims/esm.mjs modified: node_modules/yargs/locales/en.json modified: node_modules/yargs/locales/fi.json modified: node_modules/yargs/locales/ru.json modified: node_modules/yargs/package.json modified: package-lock.json modified: package.json modified: public/about/index.html modified: public/access/index.html modified: public/blog/index.html modified: public/categories/index.html modified: public/index.html modified: public/manifesto/index.html modified: public/posts/apple-breaks-privacy/index.html modified: public/posts/index.html modified: public/posts/main_street_against_big_tech/index.html modified: public/posts/what_is_done_with_personal_data/index.html modified: public/projects/index.html modified: public/tags/index.html .hugo_build.lock go.mod go.sum node_modules/.bin/autoprefixer node_modules/.bin/browserslist node_modules/.bin/update-browserslist-db node_modules/autoprefixer/ node_modules/browserslist/ node_modules/caniuse-lite/ node_modules/cliui/build/index.d.cts node_modules/electron-to-chromium/ node_modules/fast-glob/out/readers/async.d.ts node_modules/fast-glob/out/readers/async.js node_modules/fraction.js/ node_modules/fs-extra/lib/copy/copy-sync.js node_modules/fs-extra/lib/esm.mjs node_modules/fs-extra/lib/move/move-sync.js node_modules/fs-extra/lib/output-file/ node_modules/globby/ignore.js node_modules/globby/node_modules/ node_modules/globby/utilities.js node_modules/lilconfig/LICENSE node_modules/node-releases/ node_modules/normalize-range/ node_modules/postcss-value-parser/ node_modules/postcss/lib/postcss.d.mts node_modules/update-browserslist-db/ node_modules/yaml/browser/dist/compose/ node_modules/yaml/browser/dist/doc/ node_modules/yaml/browser/dist/errors.js node_modules/yaml/browser/dist/log.js node_modules/yaml/browser/dist/node_modules/ node_modules/yaml/browser/dist/nodes/ node_modules/yaml/browser/dist/parse/ node_modules/yaml/browser/dist/public-api.js node_modules/yaml/browser/dist/schema/ node_modules/yaml/browser/dist/stringify/ node_modules/yaml/browser/dist/visit.js node_modules/yaml/browser/package.json node_modules/yaml/dist/compose/ node_modules/yaml/dist/doc/ node_modules/yaml/dist/errors.d.ts node_modules/yaml/dist/errors.js node_modules/yaml/dist/index.d.ts node_modules/yaml/dist/log.d.ts node_modules/yaml/dist/log.js node_modules/yaml/dist/nodes/ node_modules/yaml/dist/options.d.ts node_modules/yaml/dist/parse/ node_modules/yaml/dist/public-api.d.ts node_modules/yaml/dist/public-api.js node_modules/yaml/dist/schema/ node_modules/yaml/dist/stringify/ node_modules/yaml/dist/test-events.d.ts node_modules/yaml/dist/util.d.ts node_modules/yaml/dist/visit.d.ts node_modules/yaml/dist/visit.js node_modules/yargs/browser.d.ts node_modules/yargs/locales/cs.json node_modules/yargs/yargs.mjs public/css/main.min.c5514d3530979d291f3497facc20da1cec870028dbc2a3630b64bab8721bbe49.css resources/_gen/assets/sass/sass/style.sass_4d6f00452a35742ddbb489cb3703195e.content resources/_gen/assets/sass/sass/style.sass_4d6f00452a35742ddbb489cb3703195e.json resources/_gen/assets/sass/sass/style.sass_c87a2fc9dae9a546a3e3f1548c147175.content resources/_gen/assets/sass/sass/style.sass_c87a2fc9dae9a546a3e3f1548c147175.json
This commit is contained in:
parent
07b93bfcab
commit
d975cc371d
421
node_modules/.package-lock.json
generated
vendored
421
node_modules/.package-lock.json
generated
vendored
@ -1,12 +1,13 @@
|
|||||||
{
|
{
|
||||||
"name": "federated",
|
"name": "www.federated.computer",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"node_modules/@nodelib/fs.scandir": {
|
"node_modules/@nodelib/fs.scandir": {
|
||||||
"version": "2.1.5",
|
"version": "2.1.5",
|
||||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||||
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
|
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nodelib/fs.stat": "2.0.5",
|
"@nodelib/fs.stat": "2.0.5",
|
||||||
"run-parallel": "^1.1.9"
|
"run-parallel": "^1.1.9"
|
||||||
@ -19,6 +20,7 @@
|
|||||||
"version": "2.0.5",
|
"version": "2.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
|
||||||
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
|
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
}
|
}
|
||||||
@ -27,6 +29,7 @@
|
|||||||
"version": "1.2.8",
|
"version": "1.2.8",
|
||||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
|
||||||
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
|
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nodelib/fs.scandir": "2.1.5",
|
"@nodelib/fs.scandir": "2.1.5",
|
||||||
"fastq": "^1.6.0"
|
"fastq": "^1.6.0"
|
||||||
@ -39,6 +42,7 @@
|
|||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
@ -47,6 +51,7 @@
|
|||||||
"version": "4.3.0",
|
"version": "4.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"color-convert": "^2.0.1"
|
"color-convert": "^2.0.1"
|
||||||
},
|
},
|
||||||
@ -61,6 +66,7 @@
|
|||||||
"version": "3.1.2",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
|
||||||
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
|
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"normalize-path": "^3.0.0",
|
"normalize-path": "^3.0.0",
|
||||||
"picomatch": "^2.0.4"
|
"picomatch": "^2.0.4"
|
||||||
@ -69,21 +75,44 @@
|
|||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/array-union": {
|
"node_modules/autoprefixer": {
|
||||||
"version": "3.0.1",
|
"version": "10.4.14",
|
||||||
"resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
|
||||||
"integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==",
|
"integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
|
||||||
"engines": {
|
"dev": true,
|
||||||
"node": ">=12"
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/postcss/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"browserslist": "^4.21.5",
|
||||||
|
"caniuse-lite": "^1.0.30001464",
|
||||||
|
"fraction.js": "^4.2.0",
|
||||||
|
"normalize-range": "^0.1.2",
|
||||||
|
"picocolors": "^1.0.0",
|
||||||
|
"postcss-value-parser": "^4.2.0"
|
||||||
},
|
},
|
||||||
"funding": {
|
"bin": {
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"autoprefixer": "bin/autoprefixer"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || >=14"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"postcss": "^8.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/binary-extensions": {
|
"node_modules/binary-extensions": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||||
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
|
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
@ -92,6 +121,7 @@
|
|||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fill-range": "^7.0.1"
|
"fill-range": "^7.0.1"
|
||||||
},
|
},
|
||||||
@ -99,10 +129,59 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/browserslist": {
|
||||||
|
"version": "4.21.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
|
||||||
|
"integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/browserslist"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/browserslist"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"caniuse-lite": "^1.0.30001449",
|
||||||
|
"electron-to-chromium": "^1.4.284",
|
||||||
|
"node-releases": "^2.0.8",
|
||||||
|
"update-browserslist-db": "^1.0.10"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"browserslist": "cli.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/caniuse-lite": {
|
||||||
|
"version": "1.0.30001481",
|
||||||
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz",
|
||||||
|
"integrity": "sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/browserslist"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"node_modules/chokidar": {
|
"node_modules/chokidar": {
|
||||||
"version": "3.5.3",
|
"version": "3.5.3",
|
||||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
|
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
|
||||||
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
|
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
|
||||||
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "individual",
|
"type": "individual",
|
||||||
@ -126,19 +205,24 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cliui": {
|
"node_modules/cliui": {
|
||||||
"version": "7.0.4",
|
"version": "8.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
|
||||||
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
|
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"string-width": "^4.2.0",
|
"string-width": "^4.2.0",
|
||||||
"strip-ansi": "^6.0.0",
|
"strip-ansi": "^6.0.1",
|
||||||
"wrap-ansi": "^7.0.0"
|
"wrap-ansi": "^7.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/color-convert": {
|
"node_modules/color-convert": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"color-name": "~1.1.4"
|
"color-name": "~1.1.4"
|
||||||
},
|
},
|
||||||
@ -149,12 +233,14 @@
|
|||||||
"node_modules/color-name": {
|
"node_modules/color-name": {
|
||||||
"version": "1.1.4",
|
"version": "1.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/dependency-graph": {
|
"node_modules/dependency-graph": {
|
||||||
"version": "0.11.0",
|
"version": "0.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
|
||||||
"integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
|
"integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6.0"
|
"node": ">= 0.6.0"
|
||||||
}
|
}
|
||||||
@ -163,6 +249,7 @@
|
|||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
|
||||||
"integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
|
"integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"path-type": "^4.0.0"
|
"path-type": "^4.0.0"
|
||||||
},
|
},
|
||||||
@ -170,23 +257,32 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/electron-to-chromium": {
|
||||||
|
"version": "1.4.368",
|
||||||
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.368.tgz",
|
||||||
|
"integrity": "sha512-e2aeCAixCj9M7nJxdB/wDjO6mbYX+lJJxSJCXDzlr5YPGYVofuJwGN9nKg2o6wWInjX6XmxRinn3AeJMK81ltw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/emoji-regex": {
|
"node_modules/emoji-regex": {
|
||||||
"version": "8.0.0",
|
"version": "8.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/escalade": {
|
"node_modules/escalade": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
|
||||||
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
|
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fast-glob": {
|
"node_modules/fast-glob": {
|
||||||
"version": "3.2.11",
|
"version": "3.2.12",
|
||||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
|
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
|
||||||
"integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
|
"integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nodelib/fs.stat": "^2.0.2",
|
"@nodelib/fs.stat": "^2.0.2",
|
||||||
"@nodelib/fs.walk": "^1.2.3",
|
"@nodelib/fs.walk": "^1.2.3",
|
||||||
@ -199,9 +295,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fastq": {
|
"node_modules/fastq": {
|
||||||
"version": "1.13.0",
|
"version": "1.15.0",
|
||||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
|
||||||
"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
|
"integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"reusify": "^1.0.4"
|
"reusify": "^1.0.4"
|
||||||
}
|
}
|
||||||
@ -210,6 +307,7 @@
|
|||||||
"version": "7.0.1",
|
"version": "7.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"to-regex-range": "^5.0.1"
|
"to-regex-range": "^5.0.1"
|
||||||
},
|
},
|
||||||
@ -217,23 +315,38 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/fraction.js": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "patreon",
|
||||||
|
"url": "https://www.patreon.com/infusion"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/fs-extra": {
|
"node_modules/fs-extra": {
|
||||||
"version": "10.0.0",
|
"version": "11.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
|
||||||
"integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
|
"integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"graceful-fs": "^4.2.0",
|
"graceful-fs": "^4.2.0",
|
||||||
"jsonfile": "^6.0.1",
|
"jsonfile": "^6.0.1",
|
||||||
"universalify": "^2.0.0"
|
"universalify": "^2.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=14.14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/get-caller-file": {
|
"node_modules/get-caller-file": {
|
||||||
"version": "2.0.5",
|
"version": "2.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
||||||
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "6.* || 8.* || >= 10.*"
|
"node": "6.* || 8.* || >= 10.*"
|
||||||
}
|
}
|
||||||
@ -242,6 +355,7 @@
|
|||||||
"version": "9.0.0",
|
"version": "9.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz",
|
||||||
"integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==",
|
"integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
},
|
},
|
||||||
@ -253,6 +367,7 @@
|
|||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-glob": "^4.0.1"
|
"is-glob": "^4.0.1"
|
||||||
},
|
},
|
||||||
@ -261,14 +376,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/globby": {
|
"node_modules/globby": {
|
||||||
"version": "12.2.0",
|
"version": "13.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz",
|
||||||
"integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==",
|
"integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"array-union": "^3.0.1",
|
|
||||||
"dir-glob": "^3.0.1",
|
"dir-glob": "^3.0.1",
|
||||||
"fast-glob": "^3.2.7",
|
"fast-glob": "^3.2.11",
|
||||||
"ignore": "^5.1.9",
|
"ignore": "^5.2.0",
|
||||||
"merge2": "^1.4.1",
|
"merge2": "^1.4.1",
|
||||||
"slash": "^4.0.0"
|
"slash": "^4.0.0"
|
||||||
},
|
},
|
||||||
@ -279,15 +394,29 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/globby/node_modules/slash": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/graceful-fs": {
|
"node_modules/graceful-fs": {
|
||||||
"version": "4.2.9",
|
"version": "4.2.11",
|
||||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
|
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
||||||
"integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ=="
|
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/ignore": {
|
"node_modules/ignore": {
|
||||||
"version": "5.2.0",
|
"version": "5.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
|
||||||
"integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
|
"integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 4"
|
"node": ">= 4"
|
||||||
}
|
}
|
||||||
@ -296,6 +425,7 @@
|
|||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
||||||
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
|
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"binary-extensions": "^2.0.0"
|
"binary-extensions": "^2.0.0"
|
||||||
},
|
},
|
||||||
@ -307,6 +437,7 @@
|
|||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||||
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
|
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
@ -315,6 +446,7 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
@ -323,6 +455,7 @@
|
|||||||
"version": "4.0.3",
|
"version": "4.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-extglob": "^2.1.1"
|
"is-extglob": "^2.1.1"
|
||||||
},
|
},
|
||||||
@ -334,6 +467,7 @@
|
|||||||
"version": "7.0.0",
|
"version": "7.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.12.0"
|
"node": ">=0.12.0"
|
||||||
}
|
}
|
||||||
@ -342,6 +476,7 @@
|
|||||||
"version": "6.1.0",
|
"version": "6.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||||
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"universalify": "^2.0.0"
|
"universalify": "^2.0.0"
|
||||||
},
|
},
|
||||||
@ -350,9 +485,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lilconfig": {
|
"node_modules/lilconfig": {
|
||||||
"version": "2.0.4",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
|
||||||
"integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==",
|
"integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
@ -361,27 +497,35 @@
|
|||||||
"version": "1.4.1",
|
"version": "1.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
||||||
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
|
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/micromatch": {
|
"node_modules/micromatch": {
|
||||||
"version": "4.0.4",
|
"version": "4.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
|
||||||
"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
|
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"braces": "^3.0.1",
|
"braces": "^3.0.2",
|
||||||
"picomatch": "^2.2.3"
|
"picomatch": "^2.3.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8.6"
|
"node": ">=8.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/nanoid": {
|
"node_modules/nanoid": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.6",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
|
||||||
"integrity": "sha512-JzxqqT5u/x+/KOFSd7JP15DOo9nOoHpx6DYatqIHUW2+flybkm+mdcraotSQR5WcnZr+qhGVh8Ted0KdfSMxlg==",
|
"integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
|
||||||
"peer": true,
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
"bin": {
|
"bin": {
|
||||||
"nanoid": "bin/nanoid.cjs"
|
"nanoid": "bin/nanoid.cjs"
|
||||||
},
|
},
|
||||||
@ -389,10 +533,26 @@
|
|||||||
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/node-releases": {
|
||||||
|
"version": "2.0.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
|
||||||
|
"integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/normalize-path": {
|
"node_modules/normalize-path": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/normalize-range": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
|
||||||
|
"integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
@ -401,6 +561,7 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
||||||
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
|
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
@ -408,12 +569,14 @@
|
|||||||
"node_modules/picocolors": {
|
"node_modules/picocolors": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
|
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/picomatch": {
|
"node_modules/picomatch": {
|
||||||
"version": "2.3.1",
|
"version": "2.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
||||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8.6"
|
"node": ">=8.6"
|
||||||
},
|
},
|
||||||
@ -425,75 +588,92 @@
|
|||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
|
||||||
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
|
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss": {
|
"node_modules/postcss": {
|
||||||
"version": "8.4.6",
|
"version": "8.4.23",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz",
|
||||||
"integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==",
|
"integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
|
||||||
"peer": true,
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/postcss/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nanoid": "^3.2.0",
|
"nanoid": "^3.3.6",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"source-map-js": "^1.0.2"
|
"source-map-js": "^1.0.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^10 || ^12 || >=14"
|
"node": "^10 || ^12 || >=14"
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"type": "opencollective",
|
|
||||||
"url": "https://opencollective.com/postcss/"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss-cli": {
|
"node_modules/postcss-cli": {
|
||||||
"version": "9.1.0",
|
"version": "10.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-9.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz",
|
||||||
"integrity": "sha512-zvDN2ADbWfza42sAnj+O2uUWyL0eRL1V+6giM2vi4SqTR3gTYy8XzcpfwccayF2szcUif0HMmXiEaDv9iEhcpw==",
|
"integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chokidar": "^3.3.0",
|
"chokidar": "^3.3.0",
|
||||||
"dependency-graph": "^0.11.0",
|
"dependency-graph": "^0.11.0",
|
||||||
"fs-extra": "^10.0.0",
|
"fs-extra": "^11.0.0",
|
||||||
"get-stdin": "^9.0.0",
|
"get-stdin": "^9.0.0",
|
||||||
"globby": "^12.0.0",
|
"globby": "^13.0.0",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"postcss-load-config": "^3.0.0",
|
"postcss-load-config": "^4.0.0",
|
||||||
"postcss-reporter": "^7.0.0",
|
"postcss-reporter": "^7.0.0",
|
||||||
"pretty-hrtime": "^1.0.3",
|
"pretty-hrtime": "^1.0.3",
|
||||||
"read-cache": "^1.0.0",
|
"read-cache": "^1.0.0",
|
||||||
"slash": "^4.0.0",
|
"slash": "^5.0.0",
|
||||||
"yargs": "^17.0.0"
|
"yargs": "^17.0.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"postcss": "index.js"
|
"postcss": "index.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=14"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"postcss": "^8.0.0"
|
"postcss": "^8.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss-load-config": {
|
"node_modules/postcss-load-config": {
|
||||||
"version": "3.1.3",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz",
|
||||||
"integrity": "sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==",
|
"integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lilconfig": "^2.0.4",
|
"lilconfig": "^2.0.5",
|
||||||
"yaml": "^1.10.2"
|
"yaml": "^2.1.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 10"
|
"node": ">= 14"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
"url": "https://opencollective.com/postcss/"
|
"url": "https://opencollective.com/postcss/"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
"postcss": ">=8.0.9",
|
||||||
"ts-node": ">=9.0.0"
|
"ts-node": ">=9.0.0"
|
||||||
},
|
},
|
||||||
"peerDependenciesMeta": {
|
"peerDependenciesMeta": {
|
||||||
|
"postcss": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
"ts-node": {
|
"ts-node": {
|
||||||
"optional": true
|
"optional": true
|
||||||
}
|
}
|
||||||
@ -503,6 +683,7 @@
|
|||||||
"version": "7.0.5",
|
"version": "7.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz",
|
||||||
"integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==",
|
"integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"thenby": "^1.3.4"
|
"thenby": "^1.3.4"
|
||||||
@ -518,10 +699,17 @@
|
|||||||
"postcss": "^8.1.0"
|
"postcss": "^8.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/postcss-value-parser": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/pretty-hrtime": {
|
"node_modules/pretty-hrtime": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
|
||||||
"integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
|
"integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
}
|
}
|
||||||
@ -530,6 +718,7 @@
|
|||||||
"version": "1.2.3",
|
"version": "1.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||||
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
||||||
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@ -549,6 +738,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
|
||||||
"integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
|
"integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"pify": "^2.3.0"
|
"pify": "^2.3.0"
|
||||||
}
|
}
|
||||||
@ -557,6 +747,7 @@
|
|||||||
"version": "3.6.0",
|
"version": "3.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||||
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
|
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"picomatch": "^2.2.1"
|
"picomatch": "^2.2.1"
|
||||||
},
|
},
|
||||||
@ -567,7 +758,8 @@
|
|||||||
"node_modules/require-directory": {
|
"node_modules/require-directory": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||||
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
|
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
@ -576,6 +768,7 @@
|
|||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
|
||||||
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
|
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"iojs": ">=1.0.0",
|
"iojs": ">=1.0.0",
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
@ -585,6 +778,7 @@
|
|||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||||
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
||||||
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@ -604,11 +798,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/slash": {
|
"node_modules/slash": {
|
||||||
"version": "4.0.0",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/slash/-/slash-5.0.0.tgz",
|
||||||
"integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
|
"integrity": "sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=14.16"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
@ -618,7 +813,7 @@
|
|||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||||
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
||||||
"peer": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
@ -627,6 +822,7 @@
|
|||||||
"version": "4.2.3",
|
"version": "4.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"emoji-regex": "^8.0.0",
|
"emoji-regex": "^8.0.0",
|
||||||
"is-fullwidth-code-point": "^3.0.0",
|
"is-fullwidth-code-point": "^3.0.0",
|
||||||
@ -640,6 +836,7 @@
|
|||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ansi-regex": "^5.0.1"
|
"ansi-regex": "^5.0.1"
|
||||||
},
|
},
|
||||||
@ -650,12 +847,14 @@
|
|||||||
"node_modules/thenby": {
|
"node_modules/thenby": {
|
||||||
"version": "1.3.4",
|
"version": "1.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz",
|
||||||
"integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ=="
|
"integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/to-regex-range": {
|
"node_modules/to-regex-range": {
|
||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-number": "^7.0.0"
|
"is-number": "^7.0.0"
|
||||||
},
|
},
|
||||||
@ -667,14 +866,46 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
||||||
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
|
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 10.0.0"
|
"node": ">= 10.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/update-browserslist-db": {
|
||||||
|
"version": "1.0.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
|
||||||
|
"integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/browserslist"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/browserslist"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"escalade": "^3.1.1",
|
||||||
|
"picocolors": "^1.0.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"update-browserslist-db": "cli.js"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"browserslist": ">= 4.21.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/wrap-ansi": {
|
"node_modules/wrap-ansi": {
|
||||||
"version": "7.0.0",
|
"version": "7.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
||||||
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ansi-styles": "^4.0.0",
|
"ansi-styles": "^4.0.0",
|
||||||
"string-width": "^4.1.0",
|
"string-width": "^4.1.0",
|
||||||
@ -691,39 +922,43 @@
|
|||||||
"version": "5.0.8",
|
"version": "5.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
|
||||||
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
|
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/yaml": {
|
"node_modules/yaml": {
|
||||||
"version": "1.10.2",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz",
|
||||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
|
"integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 6"
|
"node": ">= 14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/yargs": {
|
"node_modules/yargs": {
|
||||||
"version": "17.3.1",
|
"version": "17.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
|
||||||
"integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
|
"integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cliui": "^7.0.2",
|
"cliui": "^8.0.1",
|
||||||
"escalade": "^3.1.1",
|
"escalade": "^3.1.1",
|
||||||
"get-caller-file": "^2.0.5",
|
"get-caller-file": "^2.0.5",
|
||||||
"require-directory": "^2.1.1",
|
"require-directory": "^2.1.1",
|
||||||
"string-width": "^4.2.3",
|
"string-width": "^4.2.3",
|
||||||
"y18n": "^5.0.5",
|
"y18n": "^5.0.5",
|
||||||
"yargs-parser": "^21.0.0"
|
"yargs-parser": "^21.1.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/yargs-parser": {
|
"node_modules/yargs-parser": {
|
||||||
"version": "21.0.0",
|
"version": "21.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
|
||||||
"integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==",
|
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
|
25
node_modules/array-union/index.d.ts
generated
vendored
25
node_modules/array-union/index.d.ts
generated
vendored
@ -1,25 +0,0 @@
|
|||||||
/**
|
|
||||||
Create an array of unique values, in order, from the input arrays.
|
|
||||||
|
|
||||||
@example
|
|
||||||
```
|
|
||||||
import arrayUnion = require('array-union');
|
|
||||||
|
|
||||||
arrayUnion([1, 1, 2, 3], [2, 3]);
|
|
||||||
//=> [1, 2, 3]
|
|
||||||
|
|
||||||
arrayUnion(['foo', 'foo', 'bar']);
|
|
||||||
//=> ['foo', 'bar']
|
|
||||||
|
|
||||||
arrayUnion(['🐱', '🦄', '🐻'], ['🦄', '🌈']);
|
|
||||||
//=> ['🐱', '🦄', '🐻', '🌈']
|
|
||||||
|
|
||||||
arrayUnion(['🐱', '🦄'], ['🐻', '🦄'], ['🐶', '🌈', '🌈']);
|
|
||||||
//=> ['🐱', '🦄', '🐻', '🐶', '🌈']
|
|
||||||
```
|
|
||||||
*/
|
|
||||||
declare function arrayUnion<ArgumentsType extends readonly unknown[]>(
|
|
||||||
...arguments: readonly ArgumentsType[]
|
|
||||||
): ArgumentsType;
|
|
||||||
|
|
||||||
export = arrayUnion;
|
|
3
node_modules/array-union/index.js
generated
vendored
3
node_modules/array-union/index.js
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
const arrayUnion = (...arguments_) => [...new Set(arguments_.flat())];
|
|
||||||
|
|
||||||
export default arrayUnion;
|
|
9
node_modules/array-union/license
generated
vendored
9
node_modules/array-union/license
generated
vendored
@ -1,9 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
||||||
|
|
||||||
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.
|
|
46
node_modules/array-union/package.json
generated
vendored
46
node_modules/array-union/package.json
generated
vendored
@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "array-union",
|
|
||||||
"version": "3.0.1",
|
|
||||||
"description": "Create an array of unique values, in order, from the input arrays",
|
|
||||||
"license": "MIT",
|
|
||||||
"repository": "sindresorhus/array-union",
|
|
||||||
"funding": "https://github.com/sponsors/sindresorhus",
|
|
||||||
"author": {
|
|
||||||
"name": "Sindre Sorhus",
|
|
||||||
"email": "sindresorhus@gmail.com",
|
|
||||||
"url": "https://sindresorhus.com"
|
|
||||||
},
|
|
||||||
"type": "module",
|
|
||||||
"exports": "./index.js",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"test": "xo && ava && tsd"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"index.js",
|
|
||||||
"index.d.ts"
|
|
||||||
],
|
|
||||||
"keywords": [
|
|
||||||
"array",
|
|
||||||
"set",
|
|
||||||
"uniq",
|
|
||||||
"unique",
|
|
||||||
"duplicate",
|
|
||||||
"remove",
|
|
||||||
"union",
|
|
||||||
"combine",
|
|
||||||
"merge"
|
|
||||||
],
|
|
||||||
"devDependencies": {
|
|
||||||
"ava": "^3.15.0",
|
|
||||||
"tsd": "^0.14.0",
|
|
||||||
"xo": "^0.38.2"
|
|
||||||
},
|
|
||||||
"tsd": {
|
|
||||||
"compilerOptions": {
|
|
||||||
"esModuleInterop": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
39
node_modules/array-union/readme.md
generated
vendored
39
node_modules/array-union/readme.md
generated
vendored
@ -1,39 +0,0 @@
|
|||||||
# array-union
|
|
||||||
|
|
||||||
> Create an array of unique values, in order, from the input arrays
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
```
|
|
||||||
$ npm install array-union
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```js
|
|
||||||
import arrayUnion from 'array-union';
|
|
||||||
|
|
||||||
arrayUnion([1, 1, 2, 3], [2, 3]);
|
|
||||||
//=> [1, 2, 3]
|
|
||||||
|
|
||||||
arrayUnion(['foo', 'foo', 'bar']);
|
|
||||||
//=> ['foo', 'bar']
|
|
||||||
|
|
||||||
arrayUnion(['🐱', '🦄', '🐻'], ['🦄', '🌈']);
|
|
||||||
//=> ['🐱', '🦄', '🐻', '🌈']
|
|
||||||
|
|
||||||
arrayUnion(['🐱', '🦄'], ['🐻', '🦄'], ['🐶', '🌈', '🌈']);
|
|
||||||
//=> ['🐱', '🦄', '🐻', '🐶', '🌈']
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<div align="center">
|
|
||||||
<b>
|
|
||||||
<a href="https://tidelift.com/subscription/pkg/npm-array-union?utm_source=npm-array-union&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
|
|
||||||
</b>
|
|
||||||
<br>
|
|
||||||
<sub>
|
|
||||||
Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
|
|
||||||
</sub>
|
|
||||||
</div>
|
|
18
node_modules/cliui/CHANGELOG.md
generated
vendored
18
node_modules/cliui/CHANGELOG.md
generated
vendored
@ -2,6 +2,24 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||||
|
|
||||||
|
## [8.0.1](https://github.com/yargs/cliui/compare/v8.0.0...v8.0.1) (2022-10-01)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **deps:** move rollup-plugin-ts to dev deps ([#124](https://github.com/yargs/cliui/issues/124)) ([7c8bd6b](https://github.com/yargs/cliui/commit/7c8bd6ba024d61e4eeae310c7959ab8ab6829081))
|
||||||
|
|
||||||
|
## [8.0.0](https://github.com/yargs/cliui/compare/v7.0.4...v8.0.0) (2022-09-30)
|
||||||
|
|
||||||
|
|
||||||
|
### ⚠ BREAKING CHANGES
|
||||||
|
|
||||||
|
* **deps:** drop Node 10 to release CVE-2021-3807 patch (#122)
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **deps:** drop Node 10 to release CVE-2021-3807 patch ([#122](https://github.com/yargs/cliui/issues/122)) ([f156571](https://github.com/yargs/cliui/commit/f156571ce4f2ebf313335e3a53ad905589da5a30))
|
||||||
|
|
||||||
### [7.0.4](https://www.github.com/yargs/cliui/compare/v7.0.3...v7.0.4) (2020-11-08)
|
### [7.0.4](https://www.github.com/yargs/cliui/compare/v7.0.3...v7.0.4) (2020-11-08)
|
||||||
|
|
||||||
|
|
||||||
|
12
node_modules/cliui/package.json
generated
vendored
12
node_modules/cliui/package.json
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "cliui",
|
"name": "cliui",
|
||||||
"version": "7.0.4",
|
"version": "8.0.1",
|
||||||
"description": "easily create complex multi-column command-line-interfaces",
|
"description": "easily create complex multi-column command-line-interfaces",
|
||||||
"main": "build/index.cjs",
|
"main": "build/index.cjs",
|
||||||
"exports": {
|
"exports": {
|
||||||
@ -50,14 +50,13 @@
|
|||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"string-width": "^4.2.0",
|
"string-width": "^4.2.0",
|
||||||
"strip-ansi": "^6.0.0",
|
"strip-ansi": "^6.0.1",
|
||||||
"wrap-ansi": "^7.0.0"
|
"wrap-ansi": "^7.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^14.0.27",
|
"@types/node": "^14.0.27",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.0.0",
|
"@typescript-eslint/eslint-plugin": "^4.0.0",
|
||||||
"@typescript-eslint/parser": "^4.0.0",
|
"@typescript-eslint/parser": "^4.0.0",
|
||||||
"@wessberg/rollup-plugin-ts": "^1.3.2",
|
|
||||||
"c8": "^7.3.0",
|
"c8": "^7.3.0",
|
||||||
"chai": "^4.2.0",
|
"chai": "^4.2.0",
|
||||||
"chalk": "^4.1.0",
|
"chalk": "^4.1.0",
|
||||||
@ -66,9 +65,10 @@
|
|||||||
"eslint-plugin-import": "^2.22.0",
|
"eslint-plugin-import": "^2.22.0",
|
||||||
"eslint-plugin-node": "^11.1.0",
|
"eslint-plugin-node": "^11.1.0",
|
||||||
"gts": "^3.0.0",
|
"gts": "^3.0.0",
|
||||||
"mocha": "^8.1.1",
|
"mocha": "^10.0.0",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"rollup": "^2.23.1",
|
"rollup": "^2.23.1",
|
||||||
|
"rollup-plugin-ts": "^3.0.2",
|
||||||
"standardx": "^7.0.0",
|
"standardx": "^7.0.0",
|
||||||
"typescript": "^4.0.0"
|
"typescript": "^4.0.0"
|
||||||
},
|
},
|
||||||
@ -77,7 +77,7 @@
|
|||||||
"index.mjs",
|
"index.mjs",
|
||||||
"!*.d.ts"
|
"!*.d.ts"
|
||||||
],
|
],
|
||||||
"engine": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
54
node_modules/fast-glob/out/index.d.ts
generated
vendored
54
node_modules/fast-glob/out/index.d.ts
generated
vendored
@ -1,27 +1,27 @@
|
|||||||
/// <reference types="node" />
|
/// <reference types="node" />
|
||||||
import * as taskManager from './managers/tasks';
|
import * as taskManager from './managers/tasks';
|
||||||
import { Options as OptionsInternal } from './settings';
|
import { Options as OptionsInternal } from './settings';
|
||||||
import { Entry as EntryInternal, FileSystemAdapter as FileSystemAdapterInternal, Pattern as PatternInternal } from './types';
|
import { Entry as EntryInternal, FileSystemAdapter as FileSystemAdapterInternal, Pattern as PatternInternal } from './types';
|
||||||
declare type EntryObjectModePredicate = {
|
declare type EntryObjectModePredicate = {
|
||||||
[TKey in keyof Pick<OptionsInternal, 'objectMode'>]-?: true;
|
[TKey in keyof Pick<OptionsInternal, 'objectMode'>]-?: true;
|
||||||
};
|
};
|
||||||
declare type EntryStatsPredicate = {
|
declare type EntryStatsPredicate = {
|
||||||
[TKey in keyof Pick<OptionsInternal, 'stats'>]-?: true;
|
[TKey in keyof Pick<OptionsInternal, 'stats'>]-?: true;
|
||||||
};
|
};
|
||||||
declare type EntryObjectPredicate = EntryObjectModePredicate | EntryStatsPredicate;
|
declare type EntryObjectPredicate = EntryObjectModePredicate | EntryStatsPredicate;
|
||||||
declare function FastGlob(source: PatternInternal | PatternInternal[], options: OptionsInternal & EntryObjectPredicate): Promise<EntryInternal[]>;
|
declare function FastGlob(source: PatternInternal | PatternInternal[], options: OptionsInternal & EntryObjectPredicate): Promise<EntryInternal[]>;
|
||||||
declare function FastGlob(source: PatternInternal | PatternInternal[], options?: OptionsInternal): Promise<string[]>;
|
declare function FastGlob(source: PatternInternal | PatternInternal[], options?: OptionsInternal): Promise<string[]>;
|
||||||
declare namespace FastGlob {
|
declare namespace FastGlob {
|
||||||
type Options = OptionsInternal;
|
type Options = OptionsInternal;
|
||||||
type Entry = EntryInternal;
|
type Entry = EntryInternal;
|
||||||
type Task = taskManager.Task;
|
type Task = taskManager.Task;
|
||||||
type Pattern = PatternInternal;
|
type Pattern = PatternInternal;
|
||||||
type FileSystemAdapter = FileSystemAdapterInternal;
|
type FileSystemAdapter = FileSystemAdapterInternal;
|
||||||
function sync(source: PatternInternal | PatternInternal[], options: OptionsInternal & EntryObjectPredicate): EntryInternal[];
|
function sync(source: PatternInternal | PatternInternal[], options: OptionsInternal & EntryObjectPredicate): EntryInternal[];
|
||||||
function sync(source: PatternInternal | PatternInternal[], options?: OptionsInternal): string[];
|
function sync(source: PatternInternal | PatternInternal[], options?: OptionsInternal): string[];
|
||||||
function stream(source: PatternInternal | PatternInternal[], options?: OptionsInternal): NodeJS.ReadableStream;
|
function stream(source: PatternInternal | PatternInternal[], options?: OptionsInternal): NodeJS.ReadableStream;
|
||||||
function generateTasks(source: PatternInternal | PatternInternal[], options?: OptionsInternal): Task[];
|
function generateTasks(source: PatternInternal | PatternInternal[], options?: OptionsInternal): Task[];
|
||||||
function isDynamicPattern(source: PatternInternal, options?: OptionsInternal): boolean;
|
function isDynamicPattern(source: PatternInternal, options?: OptionsInternal): boolean;
|
||||||
function escapePath(source: PatternInternal): PatternInternal;
|
function escapePath(source: PatternInternal): PatternInternal;
|
||||||
}
|
}
|
||||||
export = FastGlob;
|
export = FastGlob;
|
||||||
|
136
node_modules/fast-glob/out/index.js
generated
vendored
136
node_modules/fast-glob/out/index.js
generated
vendored
@ -1,68 +1,68 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
const taskManager = require("./managers/tasks");
|
const taskManager = require("./managers/tasks");
|
||||||
const patternManager = require("./managers/patterns");
|
const patternManager = require("./managers/patterns");
|
||||||
const async_1 = require("./providers/async");
|
const async_1 = require("./providers/async");
|
||||||
const stream_1 = require("./providers/stream");
|
const stream_1 = require("./providers/stream");
|
||||||
const sync_1 = require("./providers/sync");
|
const sync_1 = require("./providers/sync");
|
||||||
const settings_1 = require("./settings");
|
const settings_1 = require("./settings");
|
||||||
const utils = require("./utils");
|
const utils = require("./utils");
|
||||||
async function FastGlob(source, options) {
|
async function FastGlob(source, options) {
|
||||||
assertPatternsInput(source);
|
assertPatternsInput(source);
|
||||||
const works = getWorks(source, async_1.default, options);
|
const works = getWorks(source, async_1.default, options);
|
||||||
const result = await Promise.all(works);
|
const result = await Promise.all(works);
|
||||||
return utils.array.flatten(result);
|
return utils.array.flatten(result);
|
||||||
}
|
}
|
||||||
// https://github.com/typescript-eslint/typescript-eslint/issues/60
|
// https://github.com/typescript-eslint/typescript-eslint/issues/60
|
||||||
// eslint-disable-next-line no-redeclare
|
// eslint-disable-next-line no-redeclare
|
||||||
(function (FastGlob) {
|
(function (FastGlob) {
|
||||||
function sync(source, options) {
|
function sync(source, options) {
|
||||||
assertPatternsInput(source);
|
assertPatternsInput(source);
|
||||||
const works = getWorks(source, sync_1.default, options);
|
const works = getWorks(source, sync_1.default, options);
|
||||||
return utils.array.flatten(works);
|
return utils.array.flatten(works);
|
||||||
}
|
}
|
||||||
FastGlob.sync = sync;
|
FastGlob.sync = sync;
|
||||||
function stream(source, options) {
|
function stream(source, options) {
|
||||||
assertPatternsInput(source);
|
assertPatternsInput(source);
|
||||||
const works = getWorks(source, stream_1.default, options);
|
const works = getWorks(source, stream_1.default, options);
|
||||||
/**
|
/**
|
||||||
* The stream returned by the provider cannot work with an asynchronous iterator.
|
* The stream returned by the provider cannot work with an asynchronous iterator.
|
||||||
* To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams.
|
* To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams.
|
||||||
* This affects performance (+25%). I don't see best solution right now.
|
* This affects performance (+25%). I don't see best solution right now.
|
||||||
*/
|
*/
|
||||||
return utils.stream.merge(works);
|
return utils.stream.merge(works);
|
||||||
}
|
}
|
||||||
FastGlob.stream = stream;
|
FastGlob.stream = stream;
|
||||||
function generateTasks(source, options) {
|
function generateTasks(source, options) {
|
||||||
assertPatternsInput(source);
|
assertPatternsInput(source);
|
||||||
const patterns = patternManager.transform([].concat(source));
|
const patterns = patternManager.transform([].concat(source));
|
||||||
const settings = new settings_1.default(options);
|
const settings = new settings_1.default(options);
|
||||||
return taskManager.generate(patterns, settings);
|
return taskManager.generate(patterns, settings);
|
||||||
}
|
}
|
||||||
FastGlob.generateTasks = generateTasks;
|
FastGlob.generateTasks = generateTasks;
|
||||||
function isDynamicPattern(source, options) {
|
function isDynamicPattern(source, options) {
|
||||||
assertPatternsInput(source);
|
assertPatternsInput(source);
|
||||||
const settings = new settings_1.default(options);
|
const settings = new settings_1.default(options);
|
||||||
return utils.pattern.isDynamicPattern(source, settings);
|
return utils.pattern.isDynamicPattern(source, settings);
|
||||||
}
|
}
|
||||||
FastGlob.isDynamicPattern = isDynamicPattern;
|
FastGlob.isDynamicPattern = isDynamicPattern;
|
||||||
function escapePath(source) {
|
function escapePath(source) {
|
||||||
assertPatternsInput(source);
|
assertPatternsInput(source);
|
||||||
return utils.path.escape(source);
|
return utils.path.escape(source);
|
||||||
}
|
}
|
||||||
FastGlob.escapePath = escapePath;
|
FastGlob.escapePath = escapePath;
|
||||||
})(FastGlob || (FastGlob = {}));
|
})(FastGlob || (FastGlob = {}));
|
||||||
function getWorks(source, _Provider, options) {
|
function getWorks(source, _Provider, options) {
|
||||||
const patterns = patternManager.transform([].concat(source));
|
const patterns = patternManager.transform([].concat(source));
|
||||||
const settings = new settings_1.default(options);
|
const settings = new settings_1.default(options);
|
||||||
const tasks = taskManager.generate(patterns, settings);
|
const tasks = taskManager.generate(patterns, settings);
|
||||||
const provider = new _Provider(settings);
|
const provider = new _Provider(settings);
|
||||||
return tasks.map(provider.read, provider);
|
return tasks.map(provider.read, provider);
|
||||||
}
|
}
|
||||||
function assertPatternsInput(input) {
|
function assertPatternsInput(input) {
|
||||||
const source = [].concat(input);
|
const source = [].concat(input);
|
||||||
const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item));
|
const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item));
|
||||||
if (!isValidSource) {
|
if (!isValidSource) {
|
||||||
throw new TypeError('Patterns must be a string (non empty) or an array of strings');
|
throw new TypeError('Patterns must be a string (non empty) or an array of strings');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
module.exports = FastGlob;
|
module.exports = FastGlob;
|
||||||
|
12
node_modules/fast-glob/out/managers/patterns.d.ts
generated
vendored
12
node_modules/fast-glob/out/managers/patterns.d.ts
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
export declare function transform(patterns: string[]): string[];
|
export declare function transform(patterns: string[]): string[];
|
||||||
/**
|
/**
|
||||||
* This package only works with forward slashes as a path separator.
|
* This package only works with forward slashes as a path separator.
|
||||||
* Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes.
|
* Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes.
|
||||||
*/
|
*/
|
||||||
export declare function removeDuplicateSlashes(pattern: string): string;
|
export declare function removeDuplicateSlashes(pattern: string): string;
|
||||||
|
42
node_modules/fast-glob/out/managers/patterns.js
generated
vendored
42
node_modules/fast-glob/out/managers/patterns.js
generated
vendored
@ -1,21 +1,21 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.removeDuplicateSlashes = exports.transform = void 0;
|
exports.removeDuplicateSlashes = exports.transform = void 0;
|
||||||
/**
|
/**
|
||||||
* Matches a sequence of two or more consecutive slashes, excluding the first two slashes at the beginning of the string.
|
* Matches a sequence of two or more consecutive slashes, excluding the first two slashes at the beginning of the string.
|
||||||
* The latter is due to the presence of the device path at the beginning of the UNC path.
|
* The latter is due to the presence of the device path at the beginning of the UNC path.
|
||||||
* @todo rewrite to negative lookbehind with the next major release.
|
* @todo rewrite to negative lookbehind with the next major release.
|
||||||
*/
|
*/
|
||||||
const DOUBLE_SLASH_RE = /(?!^)\/{2,}/g;
|
const DOUBLE_SLASH_RE = /(?!^)\/{2,}/g;
|
||||||
function transform(patterns) {
|
function transform(patterns) {
|
||||||
return patterns.map((pattern) => removeDuplicateSlashes(pattern));
|
return patterns.map((pattern) => removeDuplicateSlashes(pattern));
|
||||||
}
|
}
|
||||||
exports.transform = transform;
|
exports.transform = transform;
|
||||||
/**
|
/**
|
||||||
* This package only works with forward slashes as a path separator.
|
* This package only works with forward slashes as a path separator.
|
||||||
* Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes.
|
* Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes.
|
||||||
*/
|
*/
|
||||||
function removeDuplicateSlashes(pattern) {
|
function removeDuplicateSlashes(pattern) {
|
||||||
return pattern.replace(DOUBLE_SLASH_RE, '/');
|
return pattern.replace(DOUBLE_SLASH_RE, '/');
|
||||||
}
|
}
|
||||||
exports.removeDuplicateSlashes = removeDuplicateSlashes;
|
exports.removeDuplicateSlashes = removeDuplicateSlashes;
|
||||||
|
44
node_modules/fast-glob/out/managers/tasks.d.ts
generated
vendored
44
node_modules/fast-glob/out/managers/tasks.d.ts
generated
vendored
@ -1,22 +1,22 @@
|
|||||||
import Settings from '../settings';
|
import Settings from '../settings';
|
||||||
import { Pattern, PatternsGroup } from '../types';
|
import { Pattern, PatternsGroup } from '../types';
|
||||||
export declare type Task = {
|
export declare type Task = {
|
||||||
base: string;
|
base: string;
|
||||||
dynamic: boolean;
|
dynamic: boolean;
|
||||||
patterns: Pattern[];
|
patterns: Pattern[];
|
||||||
positive: Pattern[];
|
positive: Pattern[];
|
||||||
negative: Pattern[];
|
negative: Pattern[];
|
||||||
};
|
};
|
||||||
export declare function generate(patterns: Pattern[], settings: Settings): Task[];
|
export declare function generate(patterns: Pattern[], settings: Settings): Task[];
|
||||||
/**
|
/**
|
||||||
* Returns tasks grouped by basic pattern directories.
|
* Returns tasks grouped by basic pattern directories.
|
||||||
*
|
*
|
||||||
* Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately.
|
* Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately.
|
||||||
* This is necessary because directory traversal starts at the base directory and goes deeper.
|
* This is necessary because directory traversal starts at the base directory and goes deeper.
|
||||||
*/
|
*/
|
||||||
export declare function convertPatternsToTasks(positive: Pattern[], negative: Pattern[], dynamic: boolean): Task[];
|
export declare function convertPatternsToTasks(positive: Pattern[], negative: Pattern[], dynamic: boolean): Task[];
|
||||||
export declare function getPositivePatterns(patterns: Pattern[]): Pattern[];
|
export declare function getPositivePatterns(patterns: Pattern[]): Pattern[];
|
||||||
export declare function getNegativePatternsAsPositive(patterns: Pattern[], ignore: Pattern[]): Pattern[];
|
export declare function getNegativePatternsAsPositive(patterns: Pattern[], ignore: Pattern[]): Pattern[];
|
||||||
export declare function groupPatternsByBaseDirectory(patterns: Pattern[]): PatternsGroup;
|
export declare function groupPatternsByBaseDirectory(patterns: Pattern[]): PatternsGroup;
|
||||||
export declare function convertPatternGroupsToTasks(positive: PatternsGroup, negative: Pattern[], dynamic: boolean): Task[];
|
export declare function convertPatternGroupsToTasks(positive: PatternsGroup, negative: Pattern[], dynamic: boolean): Task[];
|
||||||
export declare function convertPatternGroupToTask(base: string, positive: Pattern[], negative: Pattern[], dynamic: boolean): Task;
|
export declare function convertPatternGroupToTask(base: string, positive: Pattern[], negative: Pattern[], dynamic: boolean): Task;
|
||||||
|
160
node_modules/fast-glob/out/managers/tasks.js
generated
vendored
160
node_modules/fast-glob/out/managers/tasks.js
generated
vendored
@ -1,80 +1,80 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0;
|
exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0;
|
||||||
const utils = require("../utils");
|
const utils = require("../utils");
|
||||||
function generate(patterns, settings) {
|
function generate(patterns, settings) {
|
||||||
const positivePatterns = getPositivePatterns(patterns);
|
const positivePatterns = getPositivePatterns(patterns);
|
||||||
const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore);
|
const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore);
|
||||||
const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings));
|
const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings));
|
||||||
const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings));
|
const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings));
|
||||||
const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false);
|
const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false);
|
||||||
const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true);
|
const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true);
|
||||||
return staticTasks.concat(dynamicTasks);
|
return staticTasks.concat(dynamicTasks);
|
||||||
}
|
}
|
||||||
exports.generate = generate;
|
exports.generate = generate;
|
||||||
/**
|
/**
|
||||||
* Returns tasks grouped by basic pattern directories.
|
* Returns tasks grouped by basic pattern directories.
|
||||||
*
|
*
|
||||||
* Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately.
|
* Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately.
|
||||||
* This is necessary because directory traversal starts at the base directory and goes deeper.
|
* This is necessary because directory traversal starts at the base directory and goes deeper.
|
||||||
*/
|
*/
|
||||||
function convertPatternsToTasks(positive, negative, dynamic) {
|
function convertPatternsToTasks(positive, negative, dynamic) {
|
||||||
const tasks = [];
|
const tasks = [];
|
||||||
const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive);
|
const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive);
|
||||||
const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive);
|
const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive);
|
||||||
const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory);
|
const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory);
|
||||||
const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory);
|
const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory);
|
||||||
tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic));
|
tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic));
|
||||||
/*
|
/*
|
||||||
* For the sake of reducing future accesses to the file system, we merge all tasks within the current directory
|
* For the sake of reducing future accesses to the file system, we merge all tasks within the current directory
|
||||||
* into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest.
|
* into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest.
|
||||||
*/
|
*/
|
||||||
if ('.' in insideCurrentDirectoryGroup) {
|
if ('.' in insideCurrentDirectoryGroup) {
|
||||||
tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic));
|
tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic));
|
tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic));
|
||||||
}
|
}
|
||||||
return tasks;
|
return tasks;
|
||||||
}
|
}
|
||||||
exports.convertPatternsToTasks = convertPatternsToTasks;
|
exports.convertPatternsToTasks = convertPatternsToTasks;
|
||||||
function getPositivePatterns(patterns) {
|
function getPositivePatterns(patterns) {
|
||||||
return utils.pattern.getPositivePatterns(patterns);
|
return utils.pattern.getPositivePatterns(patterns);
|
||||||
}
|
}
|
||||||
exports.getPositivePatterns = getPositivePatterns;
|
exports.getPositivePatterns = getPositivePatterns;
|
||||||
function getNegativePatternsAsPositive(patterns, ignore) {
|
function getNegativePatternsAsPositive(patterns, ignore) {
|
||||||
const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore);
|
const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore);
|
||||||
const positive = negative.map(utils.pattern.convertToPositivePattern);
|
const positive = negative.map(utils.pattern.convertToPositivePattern);
|
||||||
return positive;
|
return positive;
|
||||||
}
|
}
|
||||||
exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive;
|
exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive;
|
||||||
function groupPatternsByBaseDirectory(patterns) {
|
function groupPatternsByBaseDirectory(patterns) {
|
||||||
const group = {};
|
const group = {};
|
||||||
return patterns.reduce((collection, pattern) => {
|
return patterns.reduce((collection, pattern) => {
|
||||||
const base = utils.pattern.getBaseDirectory(pattern);
|
const base = utils.pattern.getBaseDirectory(pattern);
|
||||||
if (base in collection) {
|
if (base in collection) {
|
||||||
collection[base].push(pattern);
|
collection[base].push(pattern);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
collection[base] = [pattern];
|
collection[base] = [pattern];
|
||||||
}
|
}
|
||||||
return collection;
|
return collection;
|
||||||
}, group);
|
}, group);
|
||||||
}
|
}
|
||||||
exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory;
|
exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory;
|
||||||
function convertPatternGroupsToTasks(positive, negative, dynamic) {
|
function convertPatternGroupsToTasks(positive, negative, dynamic) {
|
||||||
return Object.keys(positive).map((base) => {
|
return Object.keys(positive).map((base) => {
|
||||||
return convertPatternGroupToTask(base, positive[base], negative, dynamic);
|
return convertPatternGroupToTask(base, positive[base], negative, dynamic);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks;
|
exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks;
|
||||||
function convertPatternGroupToTask(base, positive, negative, dynamic) {
|
function convertPatternGroupToTask(base, positive, negative, dynamic) {
|
||||||
return {
|
return {
|
||||||
dynamic,
|
dynamic,
|
||||||
positive,
|
positive,
|
||||||
negative,
|
negative,
|
||||||
base,
|
base,
|
||||||
patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern))
|
patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern))
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
exports.convertPatternGroupToTask = convertPatternGroupToTask;
|
exports.convertPatternGroupToTask = convertPatternGroupToTask;
|
||||||
|
20
node_modules/fast-glob/out/providers/async.d.ts
generated
vendored
20
node_modules/fast-glob/out/providers/async.d.ts
generated
vendored
@ -1,11 +1,9 @@
|
|||||||
/// <reference types="node" />
|
import { Task } from '../managers/tasks';
|
||||||
import { Readable } from 'stream';
|
import { Entry, EntryItem, ReaderOptions } from '../types';
|
||||||
import { Task } from '../managers/tasks';
|
import ReaderAsync from '../readers/async';
|
||||||
import ReaderStream from '../readers/stream';
|
import Provider from './provider';
|
||||||
import { EntryItem, ReaderOptions } from '../types';
|
export default class ProviderAsync extends Provider<Promise<EntryItem[]>> {
|
||||||
import Provider from './provider';
|
protected _reader: ReaderAsync;
|
||||||
export default class ProviderAsync extends Provider<Promise<EntryItem[]>> {
|
read(task: Task): Promise<EntryItem[]>;
|
||||||
protected _reader: ReaderStream;
|
api(root: string, task: Task, options: ReaderOptions): Promise<Entry[]>;
|
||||||
read(task: Task): Promise<EntryItem[]>;
|
}
|
||||||
api(root: string, task: Task, options: ReaderOptions): Readable;
|
|
||||||
}
|
|
||||||
|
51
node_modules/fast-glob/out/providers/async.js
generated
vendored
51
node_modules/fast-glob/out/providers/async.js
generated
vendored
@ -1,28 +1,23 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const stream_1 = require("../readers/stream");
|
const async_1 = require("../readers/async");
|
||||||
const provider_1 = require("./provider");
|
const provider_1 = require("./provider");
|
||||||
class ProviderAsync extends provider_1.default {
|
class ProviderAsync extends provider_1.default {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(...arguments);
|
super(...arguments);
|
||||||
this._reader = new stream_1.default(this._settings);
|
this._reader = new async_1.default(this._settings);
|
||||||
}
|
}
|
||||||
read(task) {
|
async read(task) {
|
||||||
const root = this._getRootDirectory(task);
|
const root = this._getRootDirectory(task);
|
||||||
const options = this._getReaderOptions(task);
|
const options = this._getReaderOptions(task);
|
||||||
const entries = [];
|
const entries = await this.api(root, task, options);
|
||||||
return new Promise((resolve, reject) => {
|
return entries.map((entry) => options.transform(entry));
|
||||||
const stream = this.api(root, task, options);
|
}
|
||||||
stream.once('error', reject);
|
api(root, task, options) {
|
||||||
stream.on('data', (entry) => entries.push(options.transform(entry)));
|
if (task.dynamic) {
|
||||||
stream.once('end', () => resolve(entries));
|
return this._reader.dynamic(root, options);
|
||||||
});
|
}
|
||||||
}
|
return this._reader.static(task.patterns, options);
|
||||||
api(root, task, options) {
|
}
|
||||||
if (task.dynamic) {
|
}
|
||||||
return this._reader.dynamic(root, options);
|
exports.default = ProviderAsync;
|
||||||
}
|
|
||||||
return this._reader.static(task.patterns, options);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.default = ProviderAsync;
|
|
||||||
|
32
node_modules/fast-glob/out/providers/filters/deep.d.ts
generated
vendored
32
node_modules/fast-glob/out/providers/filters/deep.d.ts
generated
vendored
@ -1,16 +1,16 @@
|
|||||||
import { MicromatchOptions, EntryFilterFunction, Pattern } from '../../types';
|
import { MicromatchOptions, EntryFilterFunction, Pattern } from '../../types';
|
||||||
import Settings from '../../settings';
|
import Settings from '../../settings';
|
||||||
export default class DeepFilter {
|
export default class DeepFilter {
|
||||||
private readonly _settings;
|
private readonly _settings;
|
||||||
private readonly _micromatchOptions;
|
private readonly _micromatchOptions;
|
||||||
constructor(_settings: Settings, _micromatchOptions: MicromatchOptions);
|
constructor(_settings: Settings, _micromatchOptions: MicromatchOptions);
|
||||||
getFilter(basePath: string, positive: Pattern[], negative: Pattern[]): EntryFilterFunction;
|
getFilter(basePath: string, positive: Pattern[], negative: Pattern[]): EntryFilterFunction;
|
||||||
private _getMatcher;
|
private _getMatcher;
|
||||||
private _getNegativePatternsRe;
|
private _getNegativePatternsRe;
|
||||||
private _filter;
|
private _filter;
|
||||||
private _isSkippedByDeep;
|
private _isSkippedByDeep;
|
||||||
private _getEntryLevel;
|
private _getEntryLevel;
|
||||||
private _isSkippedSymbolicLink;
|
private _isSkippedSymbolicLink;
|
||||||
private _isSkippedByPositivePatterns;
|
private _isSkippedByPositivePatterns;
|
||||||
private _isSkippedByNegativePatterns;
|
private _isSkippedByNegativePatterns;
|
||||||
}
|
}
|
||||||
|
124
node_modules/fast-glob/out/providers/filters/deep.js
generated
vendored
124
node_modules/fast-glob/out/providers/filters/deep.js
generated
vendored
@ -1,62 +1,62 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const utils = require("../../utils");
|
const utils = require("../../utils");
|
||||||
const partial_1 = require("../matchers/partial");
|
const partial_1 = require("../matchers/partial");
|
||||||
class DeepFilter {
|
class DeepFilter {
|
||||||
constructor(_settings, _micromatchOptions) {
|
constructor(_settings, _micromatchOptions) {
|
||||||
this._settings = _settings;
|
this._settings = _settings;
|
||||||
this._micromatchOptions = _micromatchOptions;
|
this._micromatchOptions = _micromatchOptions;
|
||||||
}
|
}
|
||||||
getFilter(basePath, positive, negative) {
|
getFilter(basePath, positive, negative) {
|
||||||
const matcher = this._getMatcher(positive);
|
const matcher = this._getMatcher(positive);
|
||||||
const negativeRe = this._getNegativePatternsRe(negative);
|
const negativeRe = this._getNegativePatternsRe(negative);
|
||||||
return (entry) => this._filter(basePath, entry, matcher, negativeRe);
|
return (entry) => this._filter(basePath, entry, matcher, negativeRe);
|
||||||
}
|
}
|
||||||
_getMatcher(patterns) {
|
_getMatcher(patterns) {
|
||||||
return new partial_1.default(patterns, this._settings, this._micromatchOptions);
|
return new partial_1.default(patterns, this._settings, this._micromatchOptions);
|
||||||
}
|
}
|
||||||
_getNegativePatternsRe(patterns) {
|
_getNegativePatternsRe(patterns) {
|
||||||
const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern);
|
const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern);
|
||||||
return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions);
|
return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions);
|
||||||
}
|
}
|
||||||
_filter(basePath, entry, matcher, negativeRe) {
|
_filter(basePath, entry, matcher, negativeRe) {
|
||||||
if (this._isSkippedByDeep(basePath, entry.path)) {
|
if (this._isSkippedByDeep(basePath, entry.path)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (this._isSkippedSymbolicLink(entry)) {
|
if (this._isSkippedSymbolicLink(entry)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const filepath = utils.path.removeLeadingDotSegment(entry.path);
|
const filepath = utils.path.removeLeadingDotSegment(entry.path);
|
||||||
if (this._isSkippedByPositivePatterns(filepath, matcher)) {
|
if (this._isSkippedByPositivePatterns(filepath, matcher)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return this._isSkippedByNegativePatterns(filepath, negativeRe);
|
return this._isSkippedByNegativePatterns(filepath, negativeRe);
|
||||||
}
|
}
|
||||||
_isSkippedByDeep(basePath, entryPath) {
|
_isSkippedByDeep(basePath, entryPath) {
|
||||||
/**
|
/**
|
||||||
* Avoid unnecessary depth calculations when it doesn't matter.
|
* Avoid unnecessary depth calculations when it doesn't matter.
|
||||||
*/
|
*/
|
||||||
if (this._settings.deep === Infinity) {
|
if (this._settings.deep === Infinity) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return this._getEntryLevel(basePath, entryPath) >= this._settings.deep;
|
return this._getEntryLevel(basePath, entryPath) >= this._settings.deep;
|
||||||
}
|
}
|
||||||
_getEntryLevel(basePath, entryPath) {
|
_getEntryLevel(basePath, entryPath) {
|
||||||
const entryPathDepth = entryPath.split('/').length;
|
const entryPathDepth = entryPath.split('/').length;
|
||||||
if (basePath === '') {
|
if (basePath === '') {
|
||||||
return entryPathDepth;
|
return entryPathDepth;
|
||||||
}
|
}
|
||||||
const basePathDepth = basePath.split('/').length;
|
const basePathDepth = basePath.split('/').length;
|
||||||
return entryPathDepth - basePathDepth;
|
return entryPathDepth - basePathDepth;
|
||||||
}
|
}
|
||||||
_isSkippedSymbolicLink(entry) {
|
_isSkippedSymbolicLink(entry) {
|
||||||
return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink();
|
return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink();
|
||||||
}
|
}
|
||||||
_isSkippedByPositivePatterns(entryPath, matcher) {
|
_isSkippedByPositivePatterns(entryPath, matcher) {
|
||||||
return !this._settings.baseNameMatch && !matcher.match(entryPath);
|
return !this._settings.baseNameMatch && !matcher.match(entryPath);
|
||||||
}
|
}
|
||||||
_isSkippedByNegativePatterns(entryPath, patternsRe) {
|
_isSkippedByNegativePatterns(entryPath, patternsRe) {
|
||||||
return !utils.pattern.matchAny(entryPath, patternsRe);
|
return !utils.pattern.matchAny(entryPath, patternsRe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = DeepFilter;
|
exports.default = DeepFilter;
|
||||||
|
36
node_modules/fast-glob/out/providers/filters/entry.d.ts
generated
vendored
36
node_modules/fast-glob/out/providers/filters/entry.d.ts
generated
vendored
@ -1,20 +1,16 @@
|
|||||||
import Settings from '../../settings';
|
import Settings from '../../settings';
|
||||||
import { EntryFilterFunction, MicromatchOptions, Pattern } from '../../types';
|
import { EntryFilterFunction, MicromatchOptions, Pattern } from '../../types';
|
||||||
export default class EntryFilter {
|
export default class EntryFilter {
|
||||||
private readonly _settings;
|
private readonly _settings;
|
||||||
private readonly _micromatchOptions;
|
private readonly _micromatchOptions;
|
||||||
readonly index: Map<string, undefined>;
|
readonly index: Map<string, undefined>;
|
||||||
constructor(_settings: Settings, _micromatchOptions: MicromatchOptions);
|
constructor(_settings: Settings, _micromatchOptions: MicromatchOptions);
|
||||||
getFilter(positive: Pattern[], negative: Pattern[]): EntryFilterFunction;
|
getFilter(positive: Pattern[], negative: Pattern[]): EntryFilterFunction;
|
||||||
private _filter;
|
private _filter;
|
||||||
private _isDuplicateEntry;
|
private _isDuplicateEntry;
|
||||||
private _createIndexRecord;
|
private _createIndexRecord;
|
||||||
private _onlyFileFilter;
|
private _onlyFileFilter;
|
||||||
private _onlyDirectoryFilter;
|
private _onlyDirectoryFilter;
|
||||||
private _isSkippedByAbsoluteNegativePatterns;
|
private _isSkippedByAbsoluteNegativePatterns;
|
||||||
/**
|
private _isMatchToPatterns;
|
||||||
* First, just trying to apply patterns to the path.
|
}
|
||||||
* Second, trying to apply patterns to the path with final slash.
|
|
||||||
*/
|
|
||||||
private _isMatchToPatterns;
|
|
||||||
}
|
|
||||||
|
124
node_modules/fast-glob/out/providers/filters/entry.js
generated
vendored
124
node_modules/fast-glob/out/providers/filters/entry.js
generated
vendored
@ -1,60 +1,64 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const utils = require("../../utils");
|
const utils = require("../../utils");
|
||||||
class EntryFilter {
|
class EntryFilter {
|
||||||
constructor(_settings, _micromatchOptions) {
|
constructor(_settings, _micromatchOptions) {
|
||||||
this._settings = _settings;
|
this._settings = _settings;
|
||||||
this._micromatchOptions = _micromatchOptions;
|
this._micromatchOptions = _micromatchOptions;
|
||||||
this.index = new Map();
|
this.index = new Map();
|
||||||
}
|
}
|
||||||
getFilter(positive, negative) {
|
getFilter(positive, negative) {
|
||||||
const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions);
|
const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions);
|
||||||
const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions);
|
const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions);
|
||||||
return (entry) => this._filter(entry, positiveRe, negativeRe);
|
return (entry) => this._filter(entry, positiveRe, negativeRe);
|
||||||
}
|
}
|
||||||
_filter(entry, positiveRe, negativeRe) {
|
_filter(entry, positiveRe, negativeRe) {
|
||||||
if (this._settings.unique && this._isDuplicateEntry(entry)) {
|
if (this._settings.unique && this._isDuplicateEntry(entry)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {
|
if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) {
|
if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const filepath = this._settings.baseNameMatch ? entry.name : entry.path;
|
const filepath = this._settings.baseNameMatch ? entry.name : entry.path;
|
||||||
const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe);
|
const isDirectory = entry.dirent.isDirectory();
|
||||||
if (this._settings.unique && isMatched) {
|
const isMatched = this._isMatchToPatterns(filepath, positiveRe, isDirectory) && !this._isMatchToPatterns(entry.path, negativeRe, isDirectory);
|
||||||
this._createIndexRecord(entry);
|
if (this._settings.unique && isMatched) {
|
||||||
}
|
this._createIndexRecord(entry);
|
||||||
return isMatched;
|
}
|
||||||
}
|
return isMatched;
|
||||||
_isDuplicateEntry(entry) {
|
}
|
||||||
return this.index.has(entry.path);
|
_isDuplicateEntry(entry) {
|
||||||
}
|
return this.index.has(entry.path);
|
||||||
_createIndexRecord(entry) {
|
}
|
||||||
this.index.set(entry.path, undefined);
|
_createIndexRecord(entry) {
|
||||||
}
|
this.index.set(entry.path, undefined);
|
||||||
_onlyFileFilter(entry) {
|
}
|
||||||
return this._settings.onlyFiles && !entry.dirent.isFile();
|
_onlyFileFilter(entry) {
|
||||||
}
|
return this._settings.onlyFiles && !entry.dirent.isFile();
|
||||||
_onlyDirectoryFilter(entry) {
|
}
|
||||||
return this._settings.onlyDirectories && !entry.dirent.isDirectory();
|
_onlyDirectoryFilter(entry) {
|
||||||
}
|
return this._settings.onlyDirectories && !entry.dirent.isDirectory();
|
||||||
_isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) {
|
}
|
||||||
if (!this._settings.absolute) {
|
_isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) {
|
||||||
return false;
|
if (!this._settings.absolute) {
|
||||||
}
|
return false;
|
||||||
const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath);
|
}
|
||||||
return utils.pattern.matchAny(fullpath, patternsRe);
|
const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath);
|
||||||
}
|
return utils.pattern.matchAny(fullpath, patternsRe);
|
||||||
/**
|
}
|
||||||
* First, just trying to apply patterns to the path.
|
_isMatchToPatterns(entryPath, patternsRe, isDirectory) {
|
||||||
* Second, trying to apply patterns to the path with final slash.
|
const filepath = utils.path.removeLeadingDotSegment(entryPath);
|
||||||
*/
|
// Trying to match files and directories by patterns.
|
||||||
_isMatchToPatterns(entryPath, patternsRe) {
|
const isMatched = utils.pattern.matchAny(filepath, patternsRe);
|
||||||
const filepath = utils.path.removeLeadingDotSegment(entryPath);
|
// A pattern with a trailling slash can be used for directory matching.
|
||||||
return utils.pattern.matchAny(filepath, patternsRe) || utils.pattern.matchAny(filepath + '/', patternsRe);
|
// To apply such pattern, we need to add a tralling slash to the path.
|
||||||
}
|
if (!isMatched && isDirectory) {
|
||||||
}
|
return utils.pattern.matchAny(filepath + '/', patternsRe);
|
||||||
exports.default = EntryFilter;
|
}
|
||||||
|
return isMatched;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.default = EntryFilter;
|
||||||
|
16
node_modules/fast-glob/out/providers/filters/error.d.ts
generated
vendored
16
node_modules/fast-glob/out/providers/filters/error.d.ts
generated
vendored
@ -1,8 +1,8 @@
|
|||||||
import Settings from '../../settings';
|
import Settings from '../../settings';
|
||||||
import { ErrorFilterFunction } from '../../types';
|
import { ErrorFilterFunction } from '../../types';
|
||||||
export default class ErrorFilter {
|
export default class ErrorFilter {
|
||||||
private readonly _settings;
|
private readonly _settings;
|
||||||
constructor(_settings: Settings);
|
constructor(_settings: Settings);
|
||||||
getFilter(): ErrorFilterFunction;
|
getFilter(): ErrorFilterFunction;
|
||||||
private _isNonFatalError;
|
private _isNonFatalError;
|
||||||
}
|
}
|
||||||
|
30
node_modules/fast-glob/out/providers/filters/error.js
generated
vendored
30
node_modules/fast-glob/out/providers/filters/error.js
generated
vendored
@ -1,15 +1,15 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const utils = require("../../utils");
|
const utils = require("../../utils");
|
||||||
class ErrorFilter {
|
class ErrorFilter {
|
||||||
constructor(_settings) {
|
constructor(_settings) {
|
||||||
this._settings = _settings;
|
this._settings = _settings;
|
||||||
}
|
}
|
||||||
getFilter() {
|
getFilter() {
|
||||||
return (error) => this._isNonFatalError(error);
|
return (error) => this._isNonFatalError(error);
|
||||||
}
|
}
|
||||||
_isNonFatalError(error) {
|
_isNonFatalError(error) {
|
||||||
return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors;
|
return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = ErrorFilter;
|
exports.default = ErrorFilter;
|
||||||
|
66
node_modules/fast-glob/out/providers/matchers/matcher.d.ts
generated
vendored
66
node_modules/fast-glob/out/providers/matchers/matcher.d.ts
generated
vendored
@ -1,33 +1,33 @@
|
|||||||
import { Pattern, MicromatchOptions, PatternRe } from '../../types';
|
import { Pattern, MicromatchOptions, PatternRe } from '../../types';
|
||||||
import Settings from '../../settings';
|
import Settings from '../../settings';
|
||||||
export declare type PatternSegment = StaticPatternSegment | DynamicPatternSegment;
|
export declare type PatternSegment = StaticPatternSegment | DynamicPatternSegment;
|
||||||
declare type StaticPatternSegment = {
|
declare type StaticPatternSegment = {
|
||||||
dynamic: false;
|
dynamic: false;
|
||||||
pattern: Pattern;
|
pattern: Pattern;
|
||||||
};
|
};
|
||||||
declare type DynamicPatternSegment = {
|
declare type DynamicPatternSegment = {
|
||||||
dynamic: true;
|
dynamic: true;
|
||||||
pattern: Pattern;
|
pattern: Pattern;
|
||||||
patternRe: PatternRe;
|
patternRe: PatternRe;
|
||||||
};
|
};
|
||||||
export declare type PatternSection = PatternSegment[];
|
export declare type PatternSection = PatternSegment[];
|
||||||
export declare type PatternInfo = {
|
export declare type PatternInfo = {
|
||||||
/**
|
/**
|
||||||
* Indicates that the pattern has a globstar (more than a single section).
|
* Indicates that the pattern has a globstar (more than a single section).
|
||||||
*/
|
*/
|
||||||
complete: boolean;
|
complete: boolean;
|
||||||
pattern: Pattern;
|
pattern: Pattern;
|
||||||
segments: PatternSegment[];
|
segments: PatternSegment[];
|
||||||
sections: PatternSection[];
|
sections: PatternSection[];
|
||||||
};
|
};
|
||||||
export default abstract class Matcher {
|
export default abstract class Matcher {
|
||||||
private readonly _patterns;
|
private readonly _patterns;
|
||||||
private readonly _settings;
|
private readonly _settings;
|
||||||
private readonly _micromatchOptions;
|
private readonly _micromatchOptions;
|
||||||
protected readonly _storage: PatternInfo[];
|
protected readonly _storage: PatternInfo[];
|
||||||
constructor(_patterns: Pattern[], _settings: Settings, _micromatchOptions: MicromatchOptions);
|
constructor(_patterns: Pattern[], _settings: Settings, _micromatchOptions: MicromatchOptions);
|
||||||
private _fillStorage;
|
private _fillStorage;
|
||||||
private _getPatternSegments;
|
private _getPatternSegments;
|
||||||
private _splitSegmentsIntoSections;
|
private _splitSegmentsIntoSections;
|
||||||
}
|
}
|
||||||
export {};
|
export {};
|
||||||
|
100
node_modules/fast-glob/out/providers/matchers/matcher.js
generated
vendored
100
node_modules/fast-glob/out/providers/matchers/matcher.js
generated
vendored
@ -1,50 +1,50 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const utils = require("../../utils");
|
const utils = require("../../utils");
|
||||||
class Matcher {
|
class Matcher {
|
||||||
constructor(_patterns, _settings, _micromatchOptions) {
|
constructor(_patterns, _settings, _micromatchOptions) {
|
||||||
this._patterns = _patterns;
|
this._patterns = _patterns;
|
||||||
this._settings = _settings;
|
this._settings = _settings;
|
||||||
this._micromatchOptions = _micromatchOptions;
|
this._micromatchOptions = _micromatchOptions;
|
||||||
this._storage = [];
|
this._storage = [];
|
||||||
this._fillStorage();
|
this._fillStorage();
|
||||||
}
|
}
|
||||||
_fillStorage() {
|
_fillStorage() {
|
||||||
/**
|
/**
|
||||||
* The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level).
|
* The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level).
|
||||||
* So, before expand patterns with brace expansion into separated patterns.
|
* So, before expand patterns with brace expansion into separated patterns.
|
||||||
*/
|
*/
|
||||||
const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns);
|
const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns);
|
||||||
for (const pattern of patterns) {
|
for (const pattern of patterns) {
|
||||||
const segments = this._getPatternSegments(pattern);
|
const segments = this._getPatternSegments(pattern);
|
||||||
const sections = this._splitSegmentsIntoSections(segments);
|
const sections = this._splitSegmentsIntoSections(segments);
|
||||||
this._storage.push({
|
this._storage.push({
|
||||||
complete: sections.length <= 1,
|
complete: sections.length <= 1,
|
||||||
pattern,
|
pattern,
|
||||||
segments,
|
segments,
|
||||||
sections
|
sections
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_getPatternSegments(pattern) {
|
_getPatternSegments(pattern) {
|
||||||
const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions);
|
const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions);
|
||||||
return parts.map((part) => {
|
return parts.map((part) => {
|
||||||
const dynamic = utils.pattern.isDynamicPattern(part, this._settings);
|
const dynamic = utils.pattern.isDynamicPattern(part, this._settings);
|
||||||
if (!dynamic) {
|
if (!dynamic) {
|
||||||
return {
|
return {
|
||||||
dynamic: false,
|
dynamic: false,
|
||||||
pattern: part
|
pattern: part
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
dynamic: true,
|
dynamic: true,
|
||||||
pattern: part,
|
pattern: part,
|
||||||
patternRe: utils.pattern.makeRe(part, this._micromatchOptions)
|
patternRe: utils.pattern.makeRe(part, this._micromatchOptions)
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
_splitSegmentsIntoSections(segments) {
|
_splitSegmentsIntoSections(segments) {
|
||||||
return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern));
|
return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = Matcher;
|
exports.default = Matcher;
|
||||||
|
8
node_modules/fast-glob/out/providers/matchers/partial.d.ts
generated
vendored
8
node_modules/fast-glob/out/providers/matchers/partial.d.ts
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
import Matcher from './matcher';
|
import Matcher from './matcher';
|
||||||
export default class PartialMatcher extends Matcher {
|
export default class PartialMatcher extends Matcher {
|
||||||
match(filepath: string): boolean;
|
match(filepath: string): boolean;
|
||||||
}
|
}
|
||||||
|
76
node_modules/fast-glob/out/providers/matchers/partial.js
generated
vendored
76
node_modules/fast-glob/out/providers/matchers/partial.js
generated
vendored
@ -1,38 +1,38 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const matcher_1 = require("./matcher");
|
const matcher_1 = require("./matcher");
|
||||||
class PartialMatcher extends matcher_1.default {
|
class PartialMatcher extends matcher_1.default {
|
||||||
match(filepath) {
|
match(filepath) {
|
||||||
const parts = filepath.split('/');
|
const parts = filepath.split('/');
|
||||||
const levels = parts.length;
|
const levels = parts.length;
|
||||||
const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels);
|
const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels);
|
||||||
for (const pattern of patterns) {
|
for (const pattern of patterns) {
|
||||||
const section = pattern.sections[0];
|
const section = pattern.sections[0];
|
||||||
/**
|
/**
|
||||||
* In this case, the pattern has a globstar and we must read all directories unconditionally,
|
* In this case, the pattern has a globstar and we must read all directories unconditionally,
|
||||||
* but only if the level has reached the end of the first group.
|
* but only if the level has reached the end of the first group.
|
||||||
*
|
*
|
||||||
* fixtures/{a,b}/**
|
* fixtures/{a,b}/**
|
||||||
* ^ true/false ^ always true
|
* ^ true/false ^ always true
|
||||||
*/
|
*/
|
||||||
if (!pattern.complete && levels > section.length) {
|
if (!pattern.complete && levels > section.length) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
const match = parts.every((part, index) => {
|
const match = parts.every((part, index) => {
|
||||||
const segment = pattern.segments[index];
|
const segment = pattern.segments[index];
|
||||||
if (segment.dynamic && segment.patternRe.test(part)) {
|
if (segment.dynamic && segment.patternRe.test(part)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!segment.dynamic && segment.pattern === part) {
|
if (!segment.dynamic && segment.pattern === part) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
if (match) {
|
if (match) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = PartialMatcher;
|
exports.default = PartialMatcher;
|
||||||
|
38
node_modules/fast-glob/out/providers/provider.d.ts
generated
vendored
38
node_modules/fast-glob/out/providers/provider.d.ts
generated
vendored
@ -1,19 +1,19 @@
|
|||||||
import { Task } from '../managers/tasks';
|
import { Task } from '../managers/tasks';
|
||||||
import Settings from '../settings';
|
import Settings from '../settings';
|
||||||
import { MicromatchOptions, ReaderOptions } from '../types';
|
import { MicromatchOptions, ReaderOptions } from '../types';
|
||||||
import DeepFilter from './filters/deep';
|
import DeepFilter from './filters/deep';
|
||||||
import EntryFilter from './filters/entry';
|
import EntryFilter from './filters/entry';
|
||||||
import ErrorFilter from './filters/error';
|
import ErrorFilter from './filters/error';
|
||||||
import EntryTransformer from './transformers/entry';
|
import EntryTransformer from './transformers/entry';
|
||||||
export default abstract class Provider<T> {
|
export default abstract class Provider<T> {
|
||||||
protected readonly _settings: Settings;
|
protected readonly _settings: Settings;
|
||||||
readonly errorFilter: ErrorFilter;
|
readonly errorFilter: ErrorFilter;
|
||||||
readonly entryFilter: EntryFilter;
|
readonly entryFilter: EntryFilter;
|
||||||
readonly deepFilter: DeepFilter;
|
readonly deepFilter: DeepFilter;
|
||||||
readonly entryTransformer: EntryTransformer;
|
readonly entryTransformer: EntryTransformer;
|
||||||
constructor(_settings: Settings);
|
constructor(_settings: Settings);
|
||||||
abstract read(_task: Task): T;
|
abstract read(_task: Task): T;
|
||||||
protected _getRootDirectory(task: Task): string;
|
protected _getRootDirectory(task: Task): string;
|
||||||
protected _getReaderOptions(task: Task): ReaderOptions;
|
protected _getReaderOptions(task: Task): ReaderOptions;
|
||||||
protected _getMicromatchOptions(): MicromatchOptions;
|
protected _getMicromatchOptions(): MicromatchOptions;
|
||||||
}
|
}
|
||||||
|
96
node_modules/fast-glob/out/providers/provider.js
generated
vendored
96
node_modules/fast-glob/out/providers/provider.js
generated
vendored
@ -1,48 +1,48 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const deep_1 = require("./filters/deep");
|
const deep_1 = require("./filters/deep");
|
||||||
const entry_1 = require("./filters/entry");
|
const entry_1 = require("./filters/entry");
|
||||||
const error_1 = require("./filters/error");
|
const error_1 = require("./filters/error");
|
||||||
const entry_2 = require("./transformers/entry");
|
const entry_2 = require("./transformers/entry");
|
||||||
class Provider {
|
class Provider {
|
||||||
constructor(_settings) {
|
constructor(_settings) {
|
||||||
this._settings = _settings;
|
this._settings = _settings;
|
||||||
this.errorFilter = new error_1.default(this._settings);
|
this.errorFilter = new error_1.default(this._settings);
|
||||||
this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());
|
this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());
|
||||||
this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());
|
this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());
|
||||||
this.entryTransformer = new entry_2.default(this._settings);
|
this.entryTransformer = new entry_2.default(this._settings);
|
||||||
}
|
}
|
||||||
_getRootDirectory(task) {
|
_getRootDirectory(task) {
|
||||||
return path.resolve(this._settings.cwd, task.base);
|
return path.resolve(this._settings.cwd, task.base);
|
||||||
}
|
}
|
||||||
_getReaderOptions(task) {
|
_getReaderOptions(task) {
|
||||||
const basePath = task.base === '.' ? '' : task.base;
|
const basePath = task.base === '.' ? '' : task.base;
|
||||||
return {
|
return {
|
||||||
basePath,
|
basePath,
|
||||||
pathSegmentSeparator: '/',
|
pathSegmentSeparator: '/',
|
||||||
concurrency: this._settings.concurrency,
|
concurrency: this._settings.concurrency,
|
||||||
deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),
|
deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),
|
||||||
entryFilter: this.entryFilter.getFilter(task.positive, task.negative),
|
entryFilter: this.entryFilter.getFilter(task.positive, task.negative),
|
||||||
errorFilter: this.errorFilter.getFilter(),
|
errorFilter: this.errorFilter.getFilter(),
|
||||||
followSymbolicLinks: this._settings.followSymbolicLinks,
|
followSymbolicLinks: this._settings.followSymbolicLinks,
|
||||||
fs: this._settings.fs,
|
fs: this._settings.fs,
|
||||||
stats: this._settings.stats,
|
stats: this._settings.stats,
|
||||||
throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,
|
throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,
|
||||||
transform: this.entryTransformer.getTransformer()
|
transform: this.entryTransformer.getTransformer()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
_getMicromatchOptions() {
|
_getMicromatchOptions() {
|
||||||
return {
|
return {
|
||||||
dot: this._settings.dot,
|
dot: this._settings.dot,
|
||||||
matchBase: this._settings.baseNameMatch,
|
matchBase: this._settings.baseNameMatch,
|
||||||
nobrace: !this._settings.braceExpansion,
|
nobrace: !this._settings.braceExpansion,
|
||||||
nocase: !this._settings.caseSensitiveMatch,
|
nocase: !this._settings.caseSensitiveMatch,
|
||||||
noext: !this._settings.extglob,
|
noext: !this._settings.extglob,
|
||||||
noglobstar: !this._settings.globstar,
|
noglobstar: !this._settings.globstar,
|
||||||
posix: true,
|
posix: true,
|
||||||
strictSlashes: false
|
strictSlashes: false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = Provider;
|
exports.default = Provider;
|
||||||
|
22
node_modules/fast-glob/out/providers/stream.d.ts
generated
vendored
22
node_modules/fast-glob/out/providers/stream.d.ts
generated
vendored
@ -1,11 +1,11 @@
|
|||||||
/// <reference types="node" />
|
/// <reference types="node" />
|
||||||
import { Readable } from 'stream';
|
import { Readable } from 'stream';
|
||||||
import { Task } from '../managers/tasks';
|
import { Task } from '../managers/tasks';
|
||||||
import ReaderStream from '../readers/stream';
|
import ReaderStream from '../readers/stream';
|
||||||
import { ReaderOptions } from '../types';
|
import { ReaderOptions } from '../types';
|
||||||
import Provider from './provider';
|
import Provider from './provider';
|
||||||
export default class ProviderStream extends Provider<Readable> {
|
export default class ProviderStream extends Provider<Readable> {
|
||||||
protected _reader: ReaderStream;
|
protected _reader: ReaderStream;
|
||||||
read(task: Task): Readable;
|
read(task: Task): Readable;
|
||||||
api(root: string, task: Task, options: ReaderOptions): Readable;
|
api(root: string, task: Task, options: ReaderOptions): Readable;
|
||||||
}
|
}
|
||||||
|
62
node_modules/fast-glob/out/providers/stream.js
generated
vendored
62
node_modules/fast-glob/out/providers/stream.js
generated
vendored
@ -1,31 +1,31 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const stream_1 = require("stream");
|
const stream_1 = require("stream");
|
||||||
const stream_2 = require("../readers/stream");
|
const stream_2 = require("../readers/stream");
|
||||||
const provider_1 = require("./provider");
|
const provider_1 = require("./provider");
|
||||||
class ProviderStream extends provider_1.default {
|
class ProviderStream extends provider_1.default {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(...arguments);
|
super(...arguments);
|
||||||
this._reader = new stream_2.default(this._settings);
|
this._reader = new stream_2.default(this._settings);
|
||||||
}
|
}
|
||||||
read(task) {
|
read(task) {
|
||||||
const root = this._getRootDirectory(task);
|
const root = this._getRootDirectory(task);
|
||||||
const options = this._getReaderOptions(task);
|
const options = this._getReaderOptions(task);
|
||||||
const source = this.api(root, task, options);
|
const source = this.api(root, task, options);
|
||||||
const destination = new stream_1.Readable({ objectMode: true, read: () => { } });
|
const destination = new stream_1.Readable({ objectMode: true, read: () => { } });
|
||||||
source
|
source
|
||||||
.once('error', (error) => destination.emit('error', error))
|
.once('error', (error) => destination.emit('error', error))
|
||||||
.on('data', (entry) => destination.emit('data', options.transform(entry)))
|
.on('data', (entry) => destination.emit('data', options.transform(entry)))
|
||||||
.once('end', () => destination.emit('end'));
|
.once('end', () => destination.emit('end'));
|
||||||
destination
|
destination
|
||||||
.once('close', () => source.destroy());
|
.once('close', () => source.destroy());
|
||||||
return destination;
|
return destination;
|
||||||
}
|
}
|
||||||
api(root, task, options) {
|
api(root, task, options) {
|
||||||
if (task.dynamic) {
|
if (task.dynamic) {
|
||||||
return this._reader.dynamic(root, options);
|
return this._reader.dynamic(root, options);
|
||||||
}
|
}
|
||||||
return this._reader.static(task.patterns, options);
|
return this._reader.static(task.patterns, options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = ProviderStream;
|
exports.default = ProviderStream;
|
||||||
|
18
node_modules/fast-glob/out/providers/sync.d.ts
generated
vendored
18
node_modules/fast-glob/out/providers/sync.d.ts
generated
vendored
@ -1,9 +1,9 @@
|
|||||||
import { Task } from '../managers/tasks';
|
import { Task } from '../managers/tasks';
|
||||||
import ReaderSync from '../readers/sync';
|
import ReaderSync from '../readers/sync';
|
||||||
import { Entry, EntryItem, ReaderOptions } from '../types';
|
import { Entry, EntryItem, ReaderOptions } from '../types';
|
||||||
import Provider from './provider';
|
import Provider from './provider';
|
||||||
export default class ProviderSync extends Provider<EntryItem[]> {
|
export default class ProviderSync extends Provider<EntryItem[]> {
|
||||||
protected _reader: ReaderSync;
|
protected _reader: ReaderSync;
|
||||||
read(task: Task): EntryItem[];
|
read(task: Task): EntryItem[];
|
||||||
api(root: string, task: Task, options: ReaderOptions): Entry[];
|
api(root: string, task: Task, options: ReaderOptions): Entry[];
|
||||||
}
|
}
|
||||||
|
46
node_modules/fast-glob/out/providers/sync.js
generated
vendored
46
node_modules/fast-glob/out/providers/sync.js
generated
vendored
@ -1,23 +1,23 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const sync_1 = require("../readers/sync");
|
const sync_1 = require("../readers/sync");
|
||||||
const provider_1 = require("./provider");
|
const provider_1 = require("./provider");
|
||||||
class ProviderSync extends provider_1.default {
|
class ProviderSync extends provider_1.default {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(...arguments);
|
super(...arguments);
|
||||||
this._reader = new sync_1.default(this._settings);
|
this._reader = new sync_1.default(this._settings);
|
||||||
}
|
}
|
||||||
read(task) {
|
read(task) {
|
||||||
const root = this._getRootDirectory(task);
|
const root = this._getRootDirectory(task);
|
||||||
const options = this._getReaderOptions(task);
|
const options = this._getReaderOptions(task);
|
||||||
const entries = this.api(root, task, options);
|
const entries = this.api(root, task, options);
|
||||||
return entries.map(options.transform);
|
return entries.map(options.transform);
|
||||||
}
|
}
|
||||||
api(root, task, options) {
|
api(root, task, options) {
|
||||||
if (task.dynamic) {
|
if (task.dynamic) {
|
||||||
return this._reader.dynamic(root, options);
|
return this._reader.dynamic(root, options);
|
||||||
}
|
}
|
||||||
return this._reader.static(task.patterns, options);
|
return this._reader.static(task.patterns, options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = ProviderSync;
|
exports.default = ProviderSync;
|
||||||
|
16
node_modules/fast-glob/out/providers/transformers/entry.d.ts
generated
vendored
16
node_modules/fast-glob/out/providers/transformers/entry.d.ts
generated
vendored
@ -1,8 +1,8 @@
|
|||||||
import Settings from '../../settings';
|
import Settings from '../../settings';
|
||||||
import { EntryTransformerFunction } from '../../types';
|
import { EntryTransformerFunction } from '../../types';
|
||||||
export default class EntryTransformer {
|
export default class EntryTransformer {
|
||||||
private readonly _settings;
|
private readonly _settings;
|
||||||
constructor(_settings: Settings);
|
constructor(_settings: Settings);
|
||||||
getTransformer(): EntryTransformerFunction;
|
getTransformer(): EntryTransformerFunction;
|
||||||
private _transform;
|
private _transform;
|
||||||
}
|
}
|
||||||
|
52
node_modules/fast-glob/out/providers/transformers/entry.js
generated
vendored
52
node_modules/fast-glob/out/providers/transformers/entry.js
generated
vendored
@ -1,26 +1,26 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const utils = require("../../utils");
|
const utils = require("../../utils");
|
||||||
class EntryTransformer {
|
class EntryTransformer {
|
||||||
constructor(_settings) {
|
constructor(_settings) {
|
||||||
this._settings = _settings;
|
this._settings = _settings;
|
||||||
}
|
}
|
||||||
getTransformer() {
|
getTransformer() {
|
||||||
return (entry) => this._transform(entry);
|
return (entry) => this._transform(entry);
|
||||||
}
|
}
|
||||||
_transform(entry) {
|
_transform(entry) {
|
||||||
let filepath = entry.path;
|
let filepath = entry.path;
|
||||||
if (this._settings.absolute) {
|
if (this._settings.absolute) {
|
||||||
filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);
|
filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);
|
||||||
filepath = utils.path.unixify(filepath);
|
filepath = utils.path.unixify(filepath);
|
||||||
}
|
}
|
||||||
if (this._settings.markDirectories && entry.dirent.isDirectory()) {
|
if (this._settings.markDirectories && entry.dirent.isDirectory()) {
|
||||||
filepath += '/';
|
filepath += '/';
|
||||||
}
|
}
|
||||||
if (!this._settings.objectMode) {
|
if (!this._settings.objectMode) {
|
||||||
return filepath;
|
return filepath;
|
||||||
}
|
}
|
||||||
return Object.assign(Object.assign({}, entry), { path: filepath });
|
return Object.assign(Object.assign({}, entry), { path: filepath });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = EntryTransformer;
|
exports.default = EntryTransformer;
|
||||||
|
30
node_modules/fast-glob/out/readers/reader.d.ts
generated
vendored
30
node_modules/fast-glob/out/readers/reader.d.ts
generated
vendored
@ -1,15 +1,15 @@
|
|||||||
/// <reference types="node" />
|
/// <reference types="node" />
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as fsStat from '@nodelib/fs.stat';
|
import * as fsStat from '@nodelib/fs.stat';
|
||||||
import Settings from '../settings';
|
import Settings from '../settings';
|
||||||
import { Entry, ErrnoException, Pattern, ReaderOptions } from '../types';
|
import { Entry, ErrnoException, Pattern, ReaderOptions } from '../types';
|
||||||
export default abstract class Reader<T> {
|
export default abstract class Reader<T> {
|
||||||
protected readonly _settings: Settings;
|
protected readonly _settings: Settings;
|
||||||
protected readonly _fsStatSettings: fsStat.Settings;
|
protected readonly _fsStatSettings: fsStat.Settings;
|
||||||
constructor(_settings: Settings);
|
constructor(_settings: Settings);
|
||||||
abstract dynamic(root: string, options: ReaderOptions): T;
|
abstract dynamic(root: string, options: ReaderOptions): T;
|
||||||
abstract static(patterns: Pattern[], options: ReaderOptions): T;
|
abstract static(patterns: Pattern[], options: ReaderOptions): T;
|
||||||
protected _getFullEntryPath(filepath: string): string;
|
protected _getFullEntryPath(filepath: string): string;
|
||||||
protected _makeEntry(stats: fs.Stats, pattern: Pattern): Entry;
|
protected _makeEntry(stats: fs.Stats, pattern: Pattern): Entry;
|
||||||
protected _isFatalError(error: ErrnoException): boolean;
|
protected _isFatalError(error: ErrnoException): boolean;
|
||||||
}
|
}
|
||||||
|
66
node_modules/fast-glob/out/readers/reader.js
generated
vendored
66
node_modules/fast-glob/out/readers/reader.js
generated
vendored
@ -1,33 +1,33 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const fsStat = require("@nodelib/fs.stat");
|
const fsStat = require("@nodelib/fs.stat");
|
||||||
const utils = require("../utils");
|
const utils = require("../utils");
|
||||||
class Reader {
|
class Reader {
|
||||||
constructor(_settings) {
|
constructor(_settings) {
|
||||||
this._settings = _settings;
|
this._settings = _settings;
|
||||||
this._fsStatSettings = new fsStat.Settings({
|
this._fsStatSettings = new fsStat.Settings({
|
||||||
followSymbolicLink: this._settings.followSymbolicLinks,
|
followSymbolicLink: this._settings.followSymbolicLinks,
|
||||||
fs: this._settings.fs,
|
fs: this._settings.fs,
|
||||||
throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks
|
throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
_getFullEntryPath(filepath) {
|
_getFullEntryPath(filepath) {
|
||||||
return path.resolve(this._settings.cwd, filepath);
|
return path.resolve(this._settings.cwd, filepath);
|
||||||
}
|
}
|
||||||
_makeEntry(stats, pattern) {
|
_makeEntry(stats, pattern) {
|
||||||
const entry = {
|
const entry = {
|
||||||
name: pattern,
|
name: pattern,
|
||||||
path: pattern,
|
path: pattern,
|
||||||
dirent: utils.fs.createDirentFromStats(pattern, stats)
|
dirent: utils.fs.createDirentFromStats(pattern, stats)
|
||||||
};
|
};
|
||||||
if (this._settings.stats) {
|
if (this._settings.stats) {
|
||||||
entry.stats = stats;
|
entry.stats = stats;
|
||||||
}
|
}
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
_isFatalError(error) {
|
_isFatalError(error) {
|
||||||
return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;
|
return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = Reader;
|
exports.default = Reader;
|
||||||
|
28
node_modules/fast-glob/out/readers/stream.d.ts
generated
vendored
28
node_modules/fast-glob/out/readers/stream.d.ts
generated
vendored
@ -1,14 +1,14 @@
|
|||||||
/// <reference types="node" />
|
/// <reference types="node" />
|
||||||
import { Readable } from 'stream';
|
import { Readable } from 'stream';
|
||||||
import * as fsStat from '@nodelib/fs.stat';
|
import * as fsStat from '@nodelib/fs.stat';
|
||||||
import * as fsWalk from '@nodelib/fs.walk';
|
import * as fsWalk from '@nodelib/fs.walk';
|
||||||
import { Pattern, ReaderOptions } from '../types';
|
import { Pattern, ReaderOptions } from '../types';
|
||||||
import Reader from './reader';
|
import Reader from './reader';
|
||||||
export default class ReaderStream extends Reader<Readable> {
|
export default class ReaderStream extends Reader<Readable> {
|
||||||
protected _walkStream: typeof fsWalk.walkStream;
|
protected _walkStream: typeof fsWalk.walkStream;
|
||||||
protected _stat: typeof fsStat.stat;
|
protected _stat: typeof fsStat.stat;
|
||||||
dynamic(root: string, options: ReaderOptions): Readable;
|
dynamic(root: string, options: ReaderOptions): Readable;
|
||||||
static(patterns: Pattern[], options: ReaderOptions): Readable;
|
static(patterns: Pattern[], options: ReaderOptions): Readable;
|
||||||
private _getEntry;
|
private _getEntry;
|
||||||
private _getStat;
|
private _getStat;
|
||||||
}
|
}
|
||||||
|
110
node_modules/fast-glob/out/readers/stream.js
generated
vendored
110
node_modules/fast-glob/out/readers/stream.js
generated
vendored
@ -1,55 +1,55 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const stream_1 = require("stream");
|
const stream_1 = require("stream");
|
||||||
const fsStat = require("@nodelib/fs.stat");
|
const fsStat = require("@nodelib/fs.stat");
|
||||||
const fsWalk = require("@nodelib/fs.walk");
|
const fsWalk = require("@nodelib/fs.walk");
|
||||||
const reader_1 = require("./reader");
|
const reader_1 = require("./reader");
|
||||||
class ReaderStream extends reader_1.default {
|
class ReaderStream extends reader_1.default {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(...arguments);
|
super(...arguments);
|
||||||
this._walkStream = fsWalk.walkStream;
|
this._walkStream = fsWalk.walkStream;
|
||||||
this._stat = fsStat.stat;
|
this._stat = fsStat.stat;
|
||||||
}
|
}
|
||||||
dynamic(root, options) {
|
dynamic(root, options) {
|
||||||
return this._walkStream(root, options);
|
return this._walkStream(root, options);
|
||||||
}
|
}
|
||||||
static(patterns, options) {
|
static(patterns, options) {
|
||||||
const filepaths = patterns.map(this._getFullEntryPath, this);
|
const filepaths = patterns.map(this._getFullEntryPath, this);
|
||||||
const stream = new stream_1.PassThrough({ objectMode: true });
|
const stream = new stream_1.PassThrough({ objectMode: true });
|
||||||
stream._write = (index, _enc, done) => {
|
stream._write = (index, _enc, done) => {
|
||||||
return this._getEntry(filepaths[index], patterns[index], options)
|
return this._getEntry(filepaths[index], patterns[index], options)
|
||||||
.then((entry) => {
|
.then((entry) => {
|
||||||
if (entry !== null && options.entryFilter(entry)) {
|
if (entry !== null && options.entryFilter(entry)) {
|
||||||
stream.push(entry);
|
stream.push(entry);
|
||||||
}
|
}
|
||||||
if (index === filepaths.length - 1) {
|
if (index === filepaths.length - 1) {
|
||||||
stream.end();
|
stream.end();
|
||||||
}
|
}
|
||||||
done();
|
done();
|
||||||
})
|
})
|
||||||
.catch(done);
|
.catch(done);
|
||||||
};
|
};
|
||||||
for (let i = 0; i < filepaths.length; i++) {
|
for (let i = 0; i < filepaths.length; i++) {
|
||||||
stream.write(i);
|
stream.write(i);
|
||||||
}
|
}
|
||||||
return stream;
|
return stream;
|
||||||
}
|
}
|
||||||
_getEntry(filepath, pattern, options) {
|
_getEntry(filepath, pattern, options) {
|
||||||
return this._getStat(filepath)
|
return this._getStat(filepath)
|
||||||
.then((stats) => this._makeEntry(stats, pattern))
|
.then((stats) => this._makeEntry(stats, pattern))
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
if (options.errorFilter(error)) {
|
if (options.errorFilter(error)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
throw error;
|
throw error;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
_getStat(filepath) {
|
_getStat(filepath) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this._stat(filepath, this._fsStatSettings, (error, stats) => {
|
this._stat(filepath, this._fsStatSettings, (error, stats) => {
|
||||||
return error === null ? resolve(stats) : reject(error);
|
return error === null ? resolve(stats) : reject(error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = ReaderStream;
|
exports.default = ReaderStream;
|
||||||
|
24
node_modules/fast-glob/out/readers/sync.d.ts
generated
vendored
24
node_modules/fast-glob/out/readers/sync.d.ts
generated
vendored
@ -1,12 +1,12 @@
|
|||||||
import * as fsStat from '@nodelib/fs.stat';
|
import * as fsStat from '@nodelib/fs.stat';
|
||||||
import * as fsWalk from '@nodelib/fs.walk';
|
import * as fsWalk from '@nodelib/fs.walk';
|
||||||
import { Entry, Pattern, ReaderOptions } from '../types';
|
import { Entry, Pattern, ReaderOptions } from '../types';
|
||||||
import Reader from './reader';
|
import Reader from './reader';
|
||||||
export default class ReaderSync extends Reader<Entry[]> {
|
export default class ReaderSync extends Reader<Entry[]> {
|
||||||
protected _walkSync: typeof fsWalk.walkSync;
|
protected _walkSync: typeof fsWalk.walkSync;
|
||||||
protected _statSync: typeof fsStat.statSync;
|
protected _statSync: typeof fsStat.statSync;
|
||||||
dynamic(root: string, options: ReaderOptions): Entry[];
|
dynamic(root: string, options: ReaderOptions): Entry[];
|
||||||
static(patterns: Pattern[], options: ReaderOptions): Entry[];
|
static(patterns: Pattern[], options: ReaderOptions): Entry[];
|
||||||
private _getEntry;
|
private _getEntry;
|
||||||
private _getStat;
|
private _getStat;
|
||||||
}
|
}
|
||||||
|
86
node_modules/fast-glob/out/readers/sync.js
generated
vendored
86
node_modules/fast-glob/out/readers/sync.js
generated
vendored
@ -1,43 +1,43 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const fsStat = require("@nodelib/fs.stat");
|
const fsStat = require("@nodelib/fs.stat");
|
||||||
const fsWalk = require("@nodelib/fs.walk");
|
const fsWalk = require("@nodelib/fs.walk");
|
||||||
const reader_1 = require("./reader");
|
const reader_1 = require("./reader");
|
||||||
class ReaderSync extends reader_1.default {
|
class ReaderSync extends reader_1.default {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(...arguments);
|
super(...arguments);
|
||||||
this._walkSync = fsWalk.walkSync;
|
this._walkSync = fsWalk.walkSync;
|
||||||
this._statSync = fsStat.statSync;
|
this._statSync = fsStat.statSync;
|
||||||
}
|
}
|
||||||
dynamic(root, options) {
|
dynamic(root, options) {
|
||||||
return this._walkSync(root, options);
|
return this._walkSync(root, options);
|
||||||
}
|
}
|
||||||
static(patterns, options) {
|
static(patterns, options) {
|
||||||
const entries = [];
|
const entries = [];
|
||||||
for (const pattern of patterns) {
|
for (const pattern of patterns) {
|
||||||
const filepath = this._getFullEntryPath(pattern);
|
const filepath = this._getFullEntryPath(pattern);
|
||||||
const entry = this._getEntry(filepath, pattern, options);
|
const entry = this._getEntry(filepath, pattern, options);
|
||||||
if (entry === null || !options.entryFilter(entry)) {
|
if (entry === null || !options.entryFilter(entry)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
entries.push(entry);
|
entries.push(entry);
|
||||||
}
|
}
|
||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
_getEntry(filepath, pattern, options) {
|
_getEntry(filepath, pattern, options) {
|
||||||
try {
|
try {
|
||||||
const stats = this._getStat(filepath);
|
const stats = this._getStat(filepath);
|
||||||
return this._makeEntry(stats, pattern);
|
return this._makeEntry(stats, pattern);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
if (options.errorFilter(error)) {
|
if (options.errorFilter(error)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_getStat(filepath) {
|
_getStat(filepath) {
|
||||||
return this._statSync(filepath, this._fsStatSettings);
|
return this._statSync(filepath, this._fsStatSettings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = ReaderSync;
|
exports.default = ReaderSync;
|
||||||
|
328
node_modules/fast-glob/out/settings.d.ts
generated
vendored
328
node_modules/fast-glob/out/settings.d.ts
generated
vendored
@ -1,164 +1,164 @@
|
|||||||
import { FileSystemAdapter, Pattern } from './types';
|
import { FileSystemAdapter, Pattern } from './types';
|
||||||
export declare const DEFAULT_FILE_SYSTEM_ADAPTER: FileSystemAdapter;
|
export declare const DEFAULT_FILE_SYSTEM_ADAPTER: FileSystemAdapter;
|
||||||
export declare type Options = {
|
export declare type Options = {
|
||||||
/**
|
/**
|
||||||
* Return the absolute path for entries.
|
* Return the absolute path for entries.
|
||||||
*
|
*
|
||||||
* @default false
|
* @default false
|
||||||
*/
|
*/
|
||||||
absolute?: boolean;
|
absolute?: boolean;
|
||||||
/**
|
/**
|
||||||
* If set to `true`, then patterns without slashes will be matched against
|
* If set to `true`, then patterns without slashes will be matched against
|
||||||
* the basename of the path if it contains slashes.
|
* the basename of the path if it contains slashes.
|
||||||
*
|
*
|
||||||
* @default false
|
* @default false
|
||||||
*/
|
*/
|
||||||
baseNameMatch?: boolean;
|
baseNameMatch?: boolean;
|
||||||
/**
|
/**
|
||||||
* Enables Bash-like brace expansion.
|
* Enables Bash-like brace expansion.
|
||||||
*
|
*
|
||||||
* @default true
|
* @default true
|
||||||
*/
|
*/
|
||||||
braceExpansion?: boolean;
|
braceExpansion?: boolean;
|
||||||
/**
|
/**
|
||||||
* Enables a case-sensitive mode for matching files.
|
* Enables a case-sensitive mode for matching files.
|
||||||
*
|
*
|
||||||
* @default true
|
* @default true
|
||||||
*/
|
*/
|
||||||
caseSensitiveMatch?: boolean;
|
caseSensitiveMatch?: boolean;
|
||||||
/**
|
/**
|
||||||
* Specifies the maximum number of concurrent requests from a reader to read
|
* Specifies the maximum number of concurrent requests from a reader to read
|
||||||
* directories.
|
* directories.
|
||||||
*
|
*
|
||||||
* @default os.cpus().length
|
* @default os.cpus().length
|
||||||
*/
|
*/
|
||||||
concurrency?: number;
|
concurrency?: number;
|
||||||
/**
|
/**
|
||||||
* The current working directory in which to search.
|
* The current working directory in which to search.
|
||||||
*
|
*
|
||||||
* @default process.cwd()
|
* @default process.cwd()
|
||||||
*/
|
*/
|
||||||
cwd?: string;
|
cwd?: string;
|
||||||
/**
|
/**
|
||||||
* Specifies the maximum depth of a read directory relative to the start
|
* Specifies the maximum depth of a read directory relative to the start
|
||||||
* directory.
|
* directory.
|
||||||
*
|
*
|
||||||
* @default Infinity
|
* @default Infinity
|
||||||
*/
|
*/
|
||||||
deep?: number;
|
deep?: number;
|
||||||
/**
|
/**
|
||||||
* Allow patterns to match entries that begin with a period (`.`).
|
* Allow patterns to match entries that begin with a period (`.`).
|
||||||
*
|
*
|
||||||
* @default false
|
* @default false
|
||||||
*/
|
*/
|
||||||
dot?: boolean;
|
dot?: boolean;
|
||||||
/**
|
/**
|
||||||
* Enables Bash-like `extglob` functionality.
|
* Enables Bash-like `extglob` functionality.
|
||||||
*
|
*
|
||||||
* @default true
|
* @default true
|
||||||
*/
|
*/
|
||||||
extglob?: boolean;
|
extglob?: boolean;
|
||||||
/**
|
/**
|
||||||
* Indicates whether to traverse descendants of symbolic link directories.
|
* Indicates whether to traverse descendants of symbolic link directories.
|
||||||
*
|
*
|
||||||
* @default true
|
* @default true
|
||||||
*/
|
*/
|
||||||
followSymbolicLinks?: boolean;
|
followSymbolicLinks?: boolean;
|
||||||
/**
|
/**
|
||||||
* Custom implementation of methods for working with the file system.
|
* Custom implementation of methods for working with the file system.
|
||||||
*
|
*
|
||||||
* @default fs.*
|
* @default fs.*
|
||||||
*/
|
*/
|
||||||
fs?: Partial<FileSystemAdapter>;
|
fs?: Partial<FileSystemAdapter>;
|
||||||
/**
|
/**
|
||||||
* Enables recursively repeats a pattern containing `**`.
|
* Enables recursively repeats a pattern containing `**`.
|
||||||
* If `false`, `**` behaves exactly like `*`.
|
* If `false`, `**` behaves exactly like `*`.
|
||||||
*
|
*
|
||||||
* @default true
|
* @default true
|
||||||
*/
|
*/
|
||||||
globstar?: boolean;
|
globstar?: boolean;
|
||||||
/**
|
/**
|
||||||
* An array of glob patterns to exclude matches.
|
* An array of glob patterns to exclude matches.
|
||||||
* This is an alternative way to use negative patterns.
|
* This is an alternative way to use negative patterns.
|
||||||
*
|
*
|
||||||
* @default []
|
* @default []
|
||||||
*/
|
*/
|
||||||
ignore?: Pattern[];
|
ignore?: Pattern[];
|
||||||
/**
|
/**
|
||||||
* Mark the directory path with the final slash.
|
* Mark the directory path with the final slash.
|
||||||
*
|
*
|
||||||
* @default false
|
* @default false
|
||||||
*/
|
*/
|
||||||
markDirectories?: boolean;
|
markDirectories?: boolean;
|
||||||
/**
|
/**
|
||||||
* Returns objects (instead of strings) describing entries.
|
* Returns objects (instead of strings) describing entries.
|
||||||
*
|
*
|
||||||
* @default false
|
* @default false
|
||||||
*/
|
*/
|
||||||
objectMode?: boolean;
|
objectMode?: boolean;
|
||||||
/**
|
/**
|
||||||
* Return only directories.
|
* Return only directories.
|
||||||
*
|
*
|
||||||
* @default false
|
* @default false
|
||||||
*/
|
*/
|
||||||
onlyDirectories?: boolean;
|
onlyDirectories?: boolean;
|
||||||
/**
|
/**
|
||||||
* Return only files.
|
* Return only files.
|
||||||
*
|
*
|
||||||
* @default true
|
* @default true
|
||||||
*/
|
*/
|
||||||
onlyFiles?: boolean;
|
onlyFiles?: boolean;
|
||||||
/**
|
/**
|
||||||
* Enables an object mode (`objectMode`) with an additional `stats` field.
|
* Enables an object mode (`objectMode`) with an additional `stats` field.
|
||||||
*
|
*
|
||||||
* @default false
|
* @default false
|
||||||
*/
|
*/
|
||||||
stats?: boolean;
|
stats?: boolean;
|
||||||
/**
|
/**
|
||||||
* By default this package suppress only `ENOENT` errors.
|
* By default this package suppress only `ENOENT` errors.
|
||||||
* Set to `true` to suppress any error.
|
* Set to `true` to suppress any error.
|
||||||
*
|
*
|
||||||
* @default false
|
* @default false
|
||||||
*/
|
*/
|
||||||
suppressErrors?: boolean;
|
suppressErrors?: boolean;
|
||||||
/**
|
/**
|
||||||
* Throw an error when symbolic link is broken if `true` or safely
|
* Throw an error when symbolic link is broken if `true` or safely
|
||||||
* return `lstat` call if `false`.
|
* return `lstat` call if `false`.
|
||||||
*
|
*
|
||||||
* @default false
|
* @default false
|
||||||
*/
|
*/
|
||||||
throwErrorOnBrokenSymbolicLink?: boolean;
|
throwErrorOnBrokenSymbolicLink?: boolean;
|
||||||
/**
|
/**
|
||||||
* Ensures that the returned entries are unique.
|
* Ensures that the returned entries are unique.
|
||||||
*
|
*
|
||||||
* @default true
|
* @default true
|
||||||
*/
|
*/
|
||||||
unique?: boolean;
|
unique?: boolean;
|
||||||
};
|
};
|
||||||
export default class Settings {
|
export default class Settings {
|
||||||
private readonly _options;
|
private readonly _options;
|
||||||
readonly absolute: boolean;
|
readonly absolute: boolean;
|
||||||
readonly baseNameMatch: boolean;
|
readonly baseNameMatch: boolean;
|
||||||
readonly braceExpansion: boolean;
|
readonly braceExpansion: boolean;
|
||||||
readonly caseSensitiveMatch: boolean;
|
readonly caseSensitiveMatch: boolean;
|
||||||
readonly concurrency: number;
|
readonly concurrency: number;
|
||||||
readonly cwd: string;
|
readonly cwd: string;
|
||||||
readonly deep: number;
|
readonly deep: number;
|
||||||
readonly dot: boolean;
|
readonly dot: boolean;
|
||||||
readonly extglob: boolean;
|
readonly extglob: boolean;
|
||||||
readonly followSymbolicLinks: boolean;
|
readonly followSymbolicLinks: boolean;
|
||||||
readonly fs: FileSystemAdapter;
|
readonly fs: FileSystemAdapter;
|
||||||
readonly globstar: boolean;
|
readonly globstar: boolean;
|
||||||
readonly ignore: Pattern[];
|
readonly ignore: Pattern[];
|
||||||
readonly markDirectories: boolean;
|
readonly markDirectories: boolean;
|
||||||
readonly objectMode: boolean;
|
readonly objectMode: boolean;
|
||||||
readonly onlyDirectories: boolean;
|
readonly onlyDirectories: boolean;
|
||||||
readonly onlyFiles: boolean;
|
readonly onlyFiles: boolean;
|
||||||
readonly stats: boolean;
|
readonly stats: boolean;
|
||||||
readonly suppressErrors: boolean;
|
readonly suppressErrors: boolean;
|
||||||
readonly throwErrorOnBrokenSymbolicLink: boolean;
|
readonly throwErrorOnBrokenSymbolicLink: boolean;
|
||||||
readonly unique: boolean;
|
readonly unique: boolean;
|
||||||
constructor(_options?: Options);
|
constructor(_options?: Options);
|
||||||
private _getValue;
|
private _getValue;
|
||||||
private _getFileSystemMethods;
|
private _getFileSystemMethods;
|
||||||
}
|
}
|
||||||
|
114
node_modules/fast-glob/out/settings.js
generated
vendored
114
node_modules/fast-glob/out/settings.js
generated
vendored
@ -1,57 +1,57 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
|
exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const os = require("os");
|
const os = require("os");
|
||||||
/**
|
/**
|
||||||
* The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.
|
* The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.
|
||||||
* https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107
|
* https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107
|
||||||
*/
|
*/
|
||||||
const CPU_COUNT = Math.max(os.cpus().length, 1);
|
const CPU_COUNT = Math.max(os.cpus().length, 1);
|
||||||
exports.DEFAULT_FILE_SYSTEM_ADAPTER = {
|
exports.DEFAULT_FILE_SYSTEM_ADAPTER = {
|
||||||
lstat: fs.lstat,
|
lstat: fs.lstat,
|
||||||
lstatSync: fs.lstatSync,
|
lstatSync: fs.lstatSync,
|
||||||
stat: fs.stat,
|
stat: fs.stat,
|
||||||
statSync: fs.statSync,
|
statSync: fs.statSync,
|
||||||
readdir: fs.readdir,
|
readdir: fs.readdir,
|
||||||
readdirSync: fs.readdirSync
|
readdirSync: fs.readdirSync
|
||||||
};
|
};
|
||||||
class Settings {
|
class Settings {
|
||||||
constructor(_options = {}) {
|
constructor(_options = {}) {
|
||||||
this._options = _options;
|
this._options = _options;
|
||||||
this.absolute = this._getValue(this._options.absolute, false);
|
this.absolute = this._getValue(this._options.absolute, false);
|
||||||
this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);
|
this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);
|
||||||
this.braceExpansion = this._getValue(this._options.braceExpansion, true);
|
this.braceExpansion = this._getValue(this._options.braceExpansion, true);
|
||||||
this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);
|
this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);
|
||||||
this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);
|
this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);
|
||||||
this.cwd = this._getValue(this._options.cwd, process.cwd());
|
this.cwd = this._getValue(this._options.cwd, process.cwd());
|
||||||
this.deep = this._getValue(this._options.deep, Infinity);
|
this.deep = this._getValue(this._options.deep, Infinity);
|
||||||
this.dot = this._getValue(this._options.dot, false);
|
this.dot = this._getValue(this._options.dot, false);
|
||||||
this.extglob = this._getValue(this._options.extglob, true);
|
this.extglob = this._getValue(this._options.extglob, true);
|
||||||
this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);
|
this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);
|
||||||
this.fs = this._getFileSystemMethods(this._options.fs);
|
this.fs = this._getFileSystemMethods(this._options.fs);
|
||||||
this.globstar = this._getValue(this._options.globstar, true);
|
this.globstar = this._getValue(this._options.globstar, true);
|
||||||
this.ignore = this._getValue(this._options.ignore, []);
|
this.ignore = this._getValue(this._options.ignore, []);
|
||||||
this.markDirectories = this._getValue(this._options.markDirectories, false);
|
this.markDirectories = this._getValue(this._options.markDirectories, false);
|
||||||
this.objectMode = this._getValue(this._options.objectMode, false);
|
this.objectMode = this._getValue(this._options.objectMode, false);
|
||||||
this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);
|
this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);
|
||||||
this.onlyFiles = this._getValue(this._options.onlyFiles, true);
|
this.onlyFiles = this._getValue(this._options.onlyFiles, true);
|
||||||
this.stats = this._getValue(this._options.stats, false);
|
this.stats = this._getValue(this._options.stats, false);
|
||||||
this.suppressErrors = this._getValue(this._options.suppressErrors, false);
|
this.suppressErrors = this._getValue(this._options.suppressErrors, false);
|
||||||
this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);
|
this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);
|
||||||
this.unique = this._getValue(this._options.unique, true);
|
this.unique = this._getValue(this._options.unique, true);
|
||||||
if (this.onlyDirectories) {
|
if (this.onlyDirectories) {
|
||||||
this.onlyFiles = false;
|
this.onlyFiles = false;
|
||||||
}
|
}
|
||||||
if (this.stats) {
|
if (this.stats) {
|
||||||
this.objectMode = true;
|
this.objectMode = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_getValue(option, value) {
|
_getValue(option, value) {
|
||||||
return option === undefined ? value : option;
|
return option === undefined ? value : option;
|
||||||
}
|
}
|
||||||
_getFileSystemMethods(methods = {}) {
|
_getFileSystemMethods(methods = {}) {
|
||||||
return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);
|
return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = Settings;
|
exports.default = Settings;
|
||||||
|
62
node_modules/fast-glob/out/types/index.d.ts
generated
vendored
62
node_modules/fast-glob/out/types/index.d.ts
generated
vendored
@ -1,31 +1,31 @@
|
|||||||
/// <reference types="node" />
|
/// <reference types="node" />
|
||||||
import * as fsWalk from '@nodelib/fs.walk';
|
import * as fsWalk from '@nodelib/fs.walk';
|
||||||
export declare type ErrnoException = NodeJS.ErrnoException;
|
export declare type ErrnoException = NodeJS.ErrnoException;
|
||||||
export declare type Entry = fsWalk.Entry;
|
export declare type Entry = fsWalk.Entry;
|
||||||
export declare type EntryItem = string | Entry;
|
export declare type EntryItem = string | Entry;
|
||||||
export declare type Pattern = string;
|
export declare type Pattern = string;
|
||||||
export declare type PatternRe = RegExp;
|
export declare type PatternRe = RegExp;
|
||||||
export declare type PatternsGroup = Record<string, Pattern[]>;
|
export declare type PatternsGroup = Record<string, Pattern[]>;
|
||||||
export declare type ReaderOptions = fsWalk.Options & {
|
export declare type ReaderOptions = fsWalk.Options & {
|
||||||
transform(entry: Entry): EntryItem;
|
transform(entry: Entry): EntryItem;
|
||||||
deepFilter: DeepFilterFunction;
|
deepFilter: DeepFilterFunction;
|
||||||
entryFilter: EntryFilterFunction;
|
entryFilter: EntryFilterFunction;
|
||||||
errorFilter: ErrorFilterFunction;
|
errorFilter: ErrorFilterFunction;
|
||||||
fs: FileSystemAdapter;
|
fs: FileSystemAdapter;
|
||||||
stats: boolean;
|
stats: boolean;
|
||||||
};
|
};
|
||||||
export declare type ErrorFilterFunction = fsWalk.ErrorFilterFunction;
|
export declare type ErrorFilterFunction = fsWalk.ErrorFilterFunction;
|
||||||
export declare type EntryFilterFunction = fsWalk.EntryFilterFunction;
|
export declare type EntryFilterFunction = fsWalk.EntryFilterFunction;
|
||||||
export declare type DeepFilterFunction = fsWalk.DeepFilterFunction;
|
export declare type DeepFilterFunction = fsWalk.DeepFilterFunction;
|
||||||
export declare type EntryTransformerFunction = (entry: Entry) => EntryItem;
|
export declare type EntryTransformerFunction = (entry: Entry) => EntryItem;
|
||||||
export declare type MicromatchOptions = {
|
export declare type MicromatchOptions = {
|
||||||
dot?: boolean;
|
dot?: boolean;
|
||||||
matchBase?: boolean;
|
matchBase?: boolean;
|
||||||
nobrace?: boolean;
|
nobrace?: boolean;
|
||||||
nocase?: boolean;
|
nocase?: boolean;
|
||||||
noext?: boolean;
|
noext?: boolean;
|
||||||
noglobstar?: boolean;
|
noglobstar?: boolean;
|
||||||
posix?: boolean;
|
posix?: boolean;
|
||||||
strictSlashes?: boolean;
|
strictSlashes?: boolean;
|
||||||
};
|
};
|
||||||
export declare type FileSystemAdapter = fsWalk.FileSystemAdapter;
|
export declare type FileSystemAdapter = fsWalk.FileSystemAdapter;
|
||||||
|
4
node_modules/fast-glob/out/types/index.js
generated
vendored
4
node_modules/fast-glob/out/types/index.js
generated
vendored
@ -1,2 +1,2 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
4
node_modules/fast-glob/out/utils/array.d.ts
generated
vendored
4
node_modules/fast-glob/out/utils/array.d.ts
generated
vendored
@ -1,2 +1,2 @@
|
|||||||
export declare function flatten<T>(items: T[][]): T[];
|
export declare function flatten<T>(items: T[][]): T[];
|
||||||
export declare function splitWhen<T>(items: T[], predicate: (item: T) => boolean): T[][];
|
export declare function splitWhen<T>(items: T[], predicate: (item: T) => boolean): T[][];
|
||||||
|
44
node_modules/fast-glob/out/utils/array.js
generated
vendored
44
node_modules/fast-glob/out/utils/array.js
generated
vendored
@ -1,22 +1,22 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.splitWhen = exports.flatten = void 0;
|
exports.splitWhen = exports.flatten = void 0;
|
||||||
function flatten(items) {
|
function flatten(items) {
|
||||||
return items.reduce((collection, item) => [].concat(collection, item), []);
|
return items.reduce((collection, item) => [].concat(collection, item), []);
|
||||||
}
|
}
|
||||||
exports.flatten = flatten;
|
exports.flatten = flatten;
|
||||||
function splitWhen(items, predicate) {
|
function splitWhen(items, predicate) {
|
||||||
const result = [[]];
|
const result = [[]];
|
||||||
let groupIndex = 0;
|
let groupIndex = 0;
|
||||||
for (const item of items) {
|
for (const item of items) {
|
||||||
if (predicate(item)) {
|
if (predicate(item)) {
|
||||||
groupIndex++;
|
groupIndex++;
|
||||||
result[groupIndex] = [];
|
result[groupIndex] = [];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
result[groupIndex].push(item);
|
result[groupIndex].push(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
exports.splitWhen = splitWhen;
|
exports.splitWhen = splitWhen;
|
||||||
|
4
node_modules/fast-glob/out/utils/errno.d.ts
generated
vendored
4
node_modules/fast-glob/out/utils/errno.d.ts
generated
vendored
@ -1,2 +1,2 @@
|
|||||||
import { ErrnoException } from '../types';
|
import { ErrnoException } from '../types';
|
||||||
export declare function isEnoentCodeError(error: ErrnoException): boolean;
|
export declare function isEnoentCodeError(error: ErrnoException): boolean;
|
||||||
|
14
node_modules/fast-glob/out/utils/errno.js
generated
vendored
14
node_modules/fast-glob/out/utils/errno.js
generated
vendored
@ -1,7 +1,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.isEnoentCodeError = void 0;
|
exports.isEnoentCodeError = void 0;
|
||||||
function isEnoentCodeError(error) {
|
function isEnoentCodeError(error) {
|
||||||
return error.code === 'ENOENT';
|
return error.code === 'ENOENT';
|
||||||
}
|
}
|
||||||
exports.isEnoentCodeError = isEnoentCodeError;
|
exports.isEnoentCodeError = isEnoentCodeError;
|
||||||
|
8
node_modules/fast-glob/out/utils/fs.d.ts
generated
vendored
8
node_modules/fast-glob/out/utils/fs.d.ts
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
/// <reference types="node" />
|
/// <reference types="node" />
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import { Dirent } from '@nodelib/fs.walk';
|
import { Dirent } from '@nodelib/fs.walk';
|
||||||
export declare function createDirentFromStats(name: string, stats: fs.Stats): Dirent;
|
export declare function createDirentFromStats(name: string, stats: fs.Stats): Dirent;
|
||||||
|
38
node_modules/fast-glob/out/utils/fs.js
generated
vendored
38
node_modules/fast-glob/out/utils/fs.js
generated
vendored
@ -1,19 +1,19 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.createDirentFromStats = void 0;
|
exports.createDirentFromStats = void 0;
|
||||||
class DirentFromStats {
|
class DirentFromStats {
|
||||||
constructor(name, stats) {
|
constructor(name, stats) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.isBlockDevice = stats.isBlockDevice.bind(stats);
|
this.isBlockDevice = stats.isBlockDevice.bind(stats);
|
||||||
this.isCharacterDevice = stats.isCharacterDevice.bind(stats);
|
this.isCharacterDevice = stats.isCharacterDevice.bind(stats);
|
||||||
this.isDirectory = stats.isDirectory.bind(stats);
|
this.isDirectory = stats.isDirectory.bind(stats);
|
||||||
this.isFIFO = stats.isFIFO.bind(stats);
|
this.isFIFO = stats.isFIFO.bind(stats);
|
||||||
this.isFile = stats.isFile.bind(stats);
|
this.isFile = stats.isFile.bind(stats);
|
||||||
this.isSocket = stats.isSocket.bind(stats);
|
this.isSocket = stats.isSocket.bind(stats);
|
||||||
this.isSymbolicLink = stats.isSymbolicLink.bind(stats);
|
this.isSymbolicLink = stats.isSymbolicLink.bind(stats);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function createDirentFromStats(name, stats) {
|
function createDirentFromStats(name, stats) {
|
||||||
return new DirentFromStats(name, stats);
|
return new DirentFromStats(name, stats);
|
||||||
}
|
}
|
||||||
exports.createDirentFromStats = createDirentFromStats;
|
exports.createDirentFromStats = createDirentFromStats;
|
||||||
|
16
node_modules/fast-glob/out/utils/index.d.ts
generated
vendored
16
node_modules/fast-glob/out/utils/index.d.ts
generated
vendored
@ -1,8 +1,8 @@
|
|||||||
import * as array from './array';
|
import * as array from './array';
|
||||||
import * as errno from './errno';
|
import * as errno from './errno';
|
||||||
import * as fs from './fs';
|
import * as fs from './fs';
|
||||||
import * as path from './path';
|
import * as path from './path';
|
||||||
import * as pattern from './pattern';
|
import * as pattern from './pattern';
|
||||||
import * as stream from './stream';
|
import * as stream from './stream';
|
||||||
import * as string from './string';
|
import * as string from './string';
|
||||||
export { array, errno, fs, path, pattern, stream, string };
|
export { array, errno, fs, path, pattern, stream, string };
|
||||||
|
34
node_modules/fast-glob/out/utils/index.js
generated
vendored
34
node_modules/fast-glob/out/utils/index.js
generated
vendored
@ -1,17 +1,17 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0;
|
exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0;
|
||||||
const array = require("./array");
|
const array = require("./array");
|
||||||
exports.array = array;
|
exports.array = array;
|
||||||
const errno = require("./errno");
|
const errno = require("./errno");
|
||||||
exports.errno = errno;
|
exports.errno = errno;
|
||||||
const fs = require("./fs");
|
const fs = require("./fs");
|
||||||
exports.fs = fs;
|
exports.fs = fs;
|
||||||
const path = require("./path");
|
const path = require("./path");
|
||||||
exports.path = path;
|
exports.path = path;
|
||||||
const pattern = require("./pattern");
|
const pattern = require("./pattern");
|
||||||
exports.pattern = pattern;
|
exports.pattern = pattern;
|
||||||
const stream = require("./stream");
|
const stream = require("./stream");
|
||||||
exports.stream = stream;
|
exports.stream = stream;
|
||||||
const string = require("./string");
|
const string = require("./string");
|
||||||
exports.string = string;
|
exports.string = string;
|
||||||
|
16
node_modules/fast-glob/out/utils/path.d.ts
generated
vendored
16
node_modules/fast-glob/out/utils/path.d.ts
generated
vendored
@ -1,8 +1,8 @@
|
|||||||
import { Pattern } from '../types';
|
import { Pattern } from '../types';
|
||||||
/**
|
/**
|
||||||
* Designed to work only with simple paths: `dir\\file`.
|
* Designed to work only with simple paths: `dir\\file`.
|
||||||
*/
|
*/
|
||||||
export declare function unixify(filepath: string): string;
|
export declare function unixify(filepath: string): string;
|
||||||
export declare function makeAbsolute(cwd: string, filepath: string): string;
|
export declare function makeAbsolute(cwd: string, filepath: string): string;
|
||||||
export declare function escape(pattern: Pattern): Pattern;
|
export declare function escape(pattern: Pattern): Pattern;
|
||||||
export declare function removeLeadingDotSegment(entry: string): string;
|
export declare function removeLeadingDotSegment(entry: string): string;
|
||||||
|
66
node_modules/fast-glob/out/utils/path.js
generated
vendored
66
node_modules/fast-glob/out/utils/path.js
generated
vendored
@ -1,33 +1,33 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0;
|
exports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0;
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\
|
const LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\
|
||||||
const UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;
|
const UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;
|
||||||
/**
|
/**
|
||||||
* Designed to work only with simple paths: `dir\\file`.
|
* Designed to work only with simple paths: `dir\\file`.
|
||||||
*/
|
*/
|
||||||
function unixify(filepath) {
|
function unixify(filepath) {
|
||||||
return filepath.replace(/\\/g, '/');
|
return filepath.replace(/\\/g, '/');
|
||||||
}
|
}
|
||||||
exports.unixify = unixify;
|
exports.unixify = unixify;
|
||||||
function makeAbsolute(cwd, filepath) {
|
function makeAbsolute(cwd, filepath) {
|
||||||
return path.resolve(cwd, filepath);
|
return path.resolve(cwd, filepath);
|
||||||
}
|
}
|
||||||
exports.makeAbsolute = makeAbsolute;
|
exports.makeAbsolute = makeAbsolute;
|
||||||
function escape(pattern) {
|
function escape(pattern) {
|
||||||
return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\$2');
|
return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\$2');
|
||||||
}
|
}
|
||||||
exports.escape = escape;
|
exports.escape = escape;
|
||||||
function removeLeadingDotSegment(entry) {
|
function removeLeadingDotSegment(entry) {
|
||||||
// We do not use `startsWith` because this is 10x slower than current implementation for some cases.
|
// We do not use `startsWith` because this is 10x slower than current implementation for some cases.
|
||||||
// eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with
|
// eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with
|
||||||
if (entry.charAt(0) === '.') {
|
if (entry.charAt(0) === '.') {
|
||||||
const secondCharactery = entry.charAt(1);
|
const secondCharactery = entry.charAt(1);
|
||||||
if (secondCharactery === '/' || secondCharactery === '\\') {
|
if (secondCharactery === '/' || secondCharactery === '\\') {
|
||||||
return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT);
|
return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
exports.removeLeadingDotSegment = removeLeadingDotSegment;
|
exports.removeLeadingDotSegment = removeLeadingDotSegment;
|
||||||
|
84
node_modules/fast-glob/out/utils/pattern.d.ts
generated
vendored
84
node_modules/fast-glob/out/utils/pattern.d.ts
generated
vendored
@ -1,42 +1,42 @@
|
|||||||
import { MicromatchOptions, Pattern, PatternRe } from '../types';
|
import { MicromatchOptions, Pattern, PatternRe } from '../types';
|
||||||
declare type PatternTypeOptions = {
|
declare type PatternTypeOptions = {
|
||||||
braceExpansion?: boolean;
|
braceExpansion?: boolean;
|
||||||
caseSensitiveMatch?: boolean;
|
caseSensitiveMatch?: boolean;
|
||||||
extglob?: boolean;
|
extglob?: boolean;
|
||||||
};
|
};
|
||||||
export declare function isStaticPattern(pattern: Pattern, options?: PatternTypeOptions): boolean;
|
export declare function isStaticPattern(pattern: Pattern, options?: PatternTypeOptions): boolean;
|
||||||
export declare function isDynamicPattern(pattern: Pattern, options?: PatternTypeOptions): boolean;
|
export declare function isDynamicPattern(pattern: Pattern, options?: PatternTypeOptions): boolean;
|
||||||
export declare function convertToPositivePattern(pattern: Pattern): Pattern;
|
export declare function convertToPositivePattern(pattern: Pattern): Pattern;
|
||||||
export declare function convertToNegativePattern(pattern: Pattern): Pattern;
|
export declare function convertToNegativePattern(pattern: Pattern): Pattern;
|
||||||
export declare function isNegativePattern(pattern: Pattern): boolean;
|
export declare function isNegativePattern(pattern: Pattern): boolean;
|
||||||
export declare function isPositivePattern(pattern: Pattern): boolean;
|
export declare function isPositivePattern(pattern: Pattern): boolean;
|
||||||
export declare function getNegativePatterns(patterns: Pattern[]): Pattern[];
|
export declare function getNegativePatterns(patterns: Pattern[]): Pattern[];
|
||||||
export declare function getPositivePatterns(patterns: Pattern[]): Pattern[];
|
export declare function getPositivePatterns(patterns: Pattern[]): Pattern[];
|
||||||
/**
|
/**
|
||||||
* Returns patterns that can be applied inside the current directory.
|
* Returns patterns that can be applied inside the current directory.
|
||||||
*
|
*
|
||||||
* @example
|
* @example
|
||||||
* // ['./*', '*', 'a/*']
|
* // ['./*', '*', 'a/*']
|
||||||
* getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])
|
* getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])
|
||||||
*/
|
*/
|
||||||
export declare function getPatternsInsideCurrentDirectory(patterns: Pattern[]): Pattern[];
|
export declare function getPatternsInsideCurrentDirectory(patterns: Pattern[]): Pattern[];
|
||||||
/**
|
/**
|
||||||
* Returns patterns to be expanded relative to (outside) the current directory.
|
* Returns patterns to be expanded relative to (outside) the current directory.
|
||||||
*
|
*
|
||||||
* @example
|
* @example
|
||||||
* // ['../*', './../*']
|
* // ['../*', './../*']
|
||||||
* getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])
|
* getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])
|
||||||
*/
|
*/
|
||||||
export declare function getPatternsOutsideCurrentDirectory(patterns: Pattern[]): Pattern[];
|
export declare function getPatternsOutsideCurrentDirectory(patterns: Pattern[]): Pattern[];
|
||||||
export declare function isPatternRelatedToParentDirectory(pattern: Pattern): boolean;
|
export declare function isPatternRelatedToParentDirectory(pattern: Pattern): boolean;
|
||||||
export declare function getBaseDirectory(pattern: Pattern): string;
|
export declare function getBaseDirectory(pattern: Pattern): string;
|
||||||
export declare function hasGlobStar(pattern: Pattern): boolean;
|
export declare function hasGlobStar(pattern: Pattern): boolean;
|
||||||
export declare function endsWithSlashGlobStar(pattern: Pattern): boolean;
|
export declare function endsWithSlashGlobStar(pattern: Pattern): boolean;
|
||||||
export declare function isAffectDepthOfReadingPattern(pattern: Pattern): boolean;
|
export declare function isAffectDepthOfReadingPattern(pattern: Pattern): boolean;
|
||||||
export declare function expandPatternsWithBraceExpansion(patterns: Pattern[]): Pattern[];
|
export declare function expandPatternsWithBraceExpansion(patterns: Pattern[]): Pattern[];
|
||||||
export declare function expandBraceExpansion(pattern: Pattern): Pattern[];
|
export declare function expandBraceExpansion(pattern: Pattern): Pattern[];
|
||||||
export declare function getPatternParts(pattern: Pattern, options: MicromatchOptions): Pattern[];
|
export declare function getPatternParts(pattern: Pattern, options: MicromatchOptions): Pattern[];
|
||||||
export declare function makeRe(pattern: Pattern, options: MicromatchOptions): PatternRe;
|
export declare function makeRe(pattern: Pattern, options: MicromatchOptions): PatternRe;
|
||||||
export declare function convertPatternsToRe(patterns: Pattern[], options: MicromatchOptions): PatternRe[];
|
export declare function convertPatternsToRe(patterns: Pattern[], options: MicromatchOptions): PatternRe[];
|
||||||
export declare function matchAny(entry: string, patternsRe: PatternRe[]): boolean;
|
export declare function matchAny(entry: string, patternsRe: PatternRe[]): boolean;
|
||||||
export {};
|
export {};
|
||||||
|
338
node_modules/fast-glob/out/utils/pattern.js
generated
vendored
338
node_modules/fast-glob/out/utils/pattern.js
generated
vendored
@ -1,169 +1,169 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;
|
exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const globParent = require("glob-parent");
|
const globParent = require("glob-parent");
|
||||||
const micromatch = require("micromatch");
|
const micromatch = require("micromatch");
|
||||||
const GLOBSTAR = '**';
|
const GLOBSTAR = '**';
|
||||||
const ESCAPE_SYMBOL = '\\';
|
const ESCAPE_SYMBOL = '\\';
|
||||||
const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;
|
const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;
|
||||||
const REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[[^[]*]/;
|
const REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[[^[]*]/;
|
||||||
const REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\([^(]*\|[^|]*\)/;
|
const REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\([^(]*\|[^|]*\)/;
|
||||||
const GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\([^(]*\)/;
|
const GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\([^(]*\)/;
|
||||||
const BRACE_EXPANSION_SEPARATORS_RE = /,|\.\./;
|
const BRACE_EXPANSION_SEPARATORS_RE = /,|\.\./;
|
||||||
function isStaticPattern(pattern, options = {}) {
|
function isStaticPattern(pattern, options = {}) {
|
||||||
return !isDynamicPattern(pattern, options);
|
return !isDynamicPattern(pattern, options);
|
||||||
}
|
}
|
||||||
exports.isStaticPattern = isStaticPattern;
|
exports.isStaticPattern = isStaticPattern;
|
||||||
function isDynamicPattern(pattern, options = {}) {
|
function isDynamicPattern(pattern, options = {}) {
|
||||||
/**
|
/**
|
||||||
* A special case with an empty string is necessary for matching patterns that start with a forward slash.
|
* A special case with an empty string is necessary for matching patterns that start with a forward slash.
|
||||||
* An empty string cannot be a dynamic pattern.
|
* An empty string cannot be a dynamic pattern.
|
||||||
* For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'.
|
* For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'.
|
||||||
*/
|
*/
|
||||||
if (pattern === '') {
|
if (pattern === '') {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check
|
* When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check
|
||||||
* filepath directly (without read directory).
|
* filepath directly (without read directory).
|
||||||
*/
|
*/
|
||||||
if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) {
|
if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) {
|
if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) {
|
if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (options.braceExpansion !== false && hasBraceExpansion(pattern)) {
|
if (options.braceExpansion !== false && hasBraceExpansion(pattern)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
exports.isDynamicPattern = isDynamicPattern;
|
exports.isDynamicPattern = isDynamicPattern;
|
||||||
function hasBraceExpansion(pattern) {
|
function hasBraceExpansion(pattern) {
|
||||||
const openingBraceIndex = pattern.indexOf('{');
|
const openingBraceIndex = pattern.indexOf('{');
|
||||||
if (openingBraceIndex === -1) {
|
if (openingBraceIndex === -1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const closingBraceIndex = pattern.indexOf('}', openingBraceIndex + 1);
|
const closingBraceIndex = pattern.indexOf('}', openingBraceIndex + 1);
|
||||||
if (closingBraceIndex === -1) {
|
if (closingBraceIndex === -1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex);
|
const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex);
|
||||||
return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent);
|
return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent);
|
||||||
}
|
}
|
||||||
function convertToPositivePattern(pattern) {
|
function convertToPositivePattern(pattern) {
|
||||||
return isNegativePattern(pattern) ? pattern.slice(1) : pattern;
|
return isNegativePattern(pattern) ? pattern.slice(1) : pattern;
|
||||||
}
|
}
|
||||||
exports.convertToPositivePattern = convertToPositivePattern;
|
exports.convertToPositivePattern = convertToPositivePattern;
|
||||||
function convertToNegativePattern(pattern) {
|
function convertToNegativePattern(pattern) {
|
||||||
return '!' + pattern;
|
return '!' + pattern;
|
||||||
}
|
}
|
||||||
exports.convertToNegativePattern = convertToNegativePattern;
|
exports.convertToNegativePattern = convertToNegativePattern;
|
||||||
function isNegativePattern(pattern) {
|
function isNegativePattern(pattern) {
|
||||||
return pattern.startsWith('!') && pattern[1] !== '(';
|
return pattern.startsWith('!') && pattern[1] !== '(';
|
||||||
}
|
}
|
||||||
exports.isNegativePattern = isNegativePattern;
|
exports.isNegativePattern = isNegativePattern;
|
||||||
function isPositivePattern(pattern) {
|
function isPositivePattern(pattern) {
|
||||||
return !isNegativePattern(pattern);
|
return !isNegativePattern(pattern);
|
||||||
}
|
}
|
||||||
exports.isPositivePattern = isPositivePattern;
|
exports.isPositivePattern = isPositivePattern;
|
||||||
function getNegativePatterns(patterns) {
|
function getNegativePatterns(patterns) {
|
||||||
return patterns.filter(isNegativePattern);
|
return patterns.filter(isNegativePattern);
|
||||||
}
|
}
|
||||||
exports.getNegativePatterns = getNegativePatterns;
|
exports.getNegativePatterns = getNegativePatterns;
|
||||||
function getPositivePatterns(patterns) {
|
function getPositivePatterns(patterns) {
|
||||||
return patterns.filter(isPositivePattern);
|
return patterns.filter(isPositivePattern);
|
||||||
}
|
}
|
||||||
exports.getPositivePatterns = getPositivePatterns;
|
exports.getPositivePatterns = getPositivePatterns;
|
||||||
/**
|
/**
|
||||||
* Returns patterns that can be applied inside the current directory.
|
* Returns patterns that can be applied inside the current directory.
|
||||||
*
|
*
|
||||||
* @example
|
* @example
|
||||||
* // ['./*', '*', 'a/*']
|
* // ['./*', '*', 'a/*']
|
||||||
* getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])
|
* getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])
|
||||||
*/
|
*/
|
||||||
function getPatternsInsideCurrentDirectory(patterns) {
|
function getPatternsInsideCurrentDirectory(patterns) {
|
||||||
return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern));
|
return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern));
|
||||||
}
|
}
|
||||||
exports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory;
|
exports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory;
|
||||||
/**
|
/**
|
||||||
* Returns patterns to be expanded relative to (outside) the current directory.
|
* Returns patterns to be expanded relative to (outside) the current directory.
|
||||||
*
|
*
|
||||||
* @example
|
* @example
|
||||||
* // ['../*', './../*']
|
* // ['../*', './../*']
|
||||||
* getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])
|
* getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])
|
||||||
*/
|
*/
|
||||||
function getPatternsOutsideCurrentDirectory(patterns) {
|
function getPatternsOutsideCurrentDirectory(patterns) {
|
||||||
return patterns.filter(isPatternRelatedToParentDirectory);
|
return patterns.filter(isPatternRelatedToParentDirectory);
|
||||||
}
|
}
|
||||||
exports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory;
|
exports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory;
|
||||||
function isPatternRelatedToParentDirectory(pattern) {
|
function isPatternRelatedToParentDirectory(pattern) {
|
||||||
return pattern.startsWith('..') || pattern.startsWith('./..');
|
return pattern.startsWith('..') || pattern.startsWith('./..');
|
||||||
}
|
}
|
||||||
exports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory;
|
exports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory;
|
||||||
function getBaseDirectory(pattern) {
|
function getBaseDirectory(pattern) {
|
||||||
return globParent(pattern, { flipBackslashes: false });
|
return globParent(pattern, { flipBackslashes: false });
|
||||||
}
|
}
|
||||||
exports.getBaseDirectory = getBaseDirectory;
|
exports.getBaseDirectory = getBaseDirectory;
|
||||||
function hasGlobStar(pattern) {
|
function hasGlobStar(pattern) {
|
||||||
return pattern.includes(GLOBSTAR);
|
return pattern.includes(GLOBSTAR);
|
||||||
}
|
}
|
||||||
exports.hasGlobStar = hasGlobStar;
|
exports.hasGlobStar = hasGlobStar;
|
||||||
function endsWithSlashGlobStar(pattern) {
|
function endsWithSlashGlobStar(pattern) {
|
||||||
return pattern.endsWith('/' + GLOBSTAR);
|
return pattern.endsWith('/' + GLOBSTAR);
|
||||||
}
|
}
|
||||||
exports.endsWithSlashGlobStar = endsWithSlashGlobStar;
|
exports.endsWithSlashGlobStar = endsWithSlashGlobStar;
|
||||||
function isAffectDepthOfReadingPattern(pattern) {
|
function isAffectDepthOfReadingPattern(pattern) {
|
||||||
const basename = path.basename(pattern);
|
const basename = path.basename(pattern);
|
||||||
return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);
|
return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);
|
||||||
}
|
}
|
||||||
exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;
|
exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;
|
||||||
function expandPatternsWithBraceExpansion(patterns) {
|
function expandPatternsWithBraceExpansion(patterns) {
|
||||||
return patterns.reduce((collection, pattern) => {
|
return patterns.reduce((collection, pattern) => {
|
||||||
return collection.concat(expandBraceExpansion(pattern));
|
return collection.concat(expandBraceExpansion(pattern));
|
||||||
}, []);
|
}, []);
|
||||||
}
|
}
|
||||||
exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion;
|
exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion;
|
||||||
function expandBraceExpansion(pattern) {
|
function expandBraceExpansion(pattern) {
|
||||||
return micromatch.braces(pattern, {
|
return micromatch.braces(pattern, {
|
||||||
expand: true,
|
expand: true,
|
||||||
nodupes: true
|
nodupes: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.expandBraceExpansion = expandBraceExpansion;
|
exports.expandBraceExpansion = expandBraceExpansion;
|
||||||
function getPatternParts(pattern, options) {
|
function getPatternParts(pattern, options) {
|
||||||
let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true }));
|
let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true }));
|
||||||
/**
|
/**
|
||||||
* The scan method returns an empty array in some cases.
|
* The scan method returns an empty array in some cases.
|
||||||
* See micromatch/picomatch#58 for more details.
|
* See micromatch/picomatch#58 for more details.
|
||||||
*/
|
*/
|
||||||
if (parts.length === 0) {
|
if (parts.length === 0) {
|
||||||
parts = [pattern];
|
parts = [pattern];
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* The scan method does not return an empty part for the pattern with a forward slash.
|
* The scan method does not return an empty part for the pattern with a forward slash.
|
||||||
* This is another part of micromatch/picomatch#58.
|
* This is another part of micromatch/picomatch#58.
|
||||||
*/
|
*/
|
||||||
if (parts[0].startsWith('/')) {
|
if (parts[0].startsWith('/')) {
|
||||||
parts[0] = parts[0].slice(1);
|
parts[0] = parts[0].slice(1);
|
||||||
parts.unshift('');
|
parts.unshift('');
|
||||||
}
|
}
|
||||||
return parts;
|
return parts;
|
||||||
}
|
}
|
||||||
exports.getPatternParts = getPatternParts;
|
exports.getPatternParts = getPatternParts;
|
||||||
function makeRe(pattern, options) {
|
function makeRe(pattern, options) {
|
||||||
return micromatch.makeRe(pattern, options);
|
return micromatch.makeRe(pattern, options);
|
||||||
}
|
}
|
||||||
exports.makeRe = makeRe;
|
exports.makeRe = makeRe;
|
||||||
function convertPatternsToRe(patterns, options) {
|
function convertPatternsToRe(patterns, options) {
|
||||||
return patterns.map((pattern) => makeRe(pattern, options));
|
return patterns.map((pattern) => makeRe(pattern, options));
|
||||||
}
|
}
|
||||||
exports.convertPatternsToRe = convertPatternsToRe;
|
exports.convertPatternsToRe = convertPatternsToRe;
|
||||||
function matchAny(entry, patternsRe) {
|
function matchAny(entry, patternsRe) {
|
||||||
return patternsRe.some((patternRe) => patternRe.test(entry));
|
return patternsRe.some((patternRe) => patternRe.test(entry));
|
||||||
}
|
}
|
||||||
exports.matchAny = matchAny;
|
exports.matchAny = matchAny;
|
||||||
|
6
node_modules/fast-glob/out/utils/stream.d.ts
generated
vendored
6
node_modules/fast-glob/out/utils/stream.d.ts
generated
vendored
@ -1,3 +1,3 @@
|
|||||||
/// <reference types="node" />
|
/// <reference types="node" />
|
||||||
import { Readable } from 'stream';
|
import { Readable } from 'stream';
|
||||||
export declare function merge(streams: Readable[]): NodeJS.ReadableStream;
|
export declare function merge(streams: Readable[]): NodeJS.ReadableStream;
|
||||||
|
34
node_modules/fast-glob/out/utils/stream.js
generated
vendored
34
node_modules/fast-glob/out/utils/stream.js
generated
vendored
@ -1,17 +1,17 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.merge = void 0;
|
exports.merge = void 0;
|
||||||
const merge2 = require("merge2");
|
const merge2 = require("merge2");
|
||||||
function merge(streams) {
|
function merge(streams) {
|
||||||
const mergedStream = merge2(streams);
|
const mergedStream = merge2(streams);
|
||||||
streams.forEach((stream) => {
|
streams.forEach((stream) => {
|
||||||
stream.once('error', (error) => mergedStream.emit('error', error));
|
stream.once('error', (error) => mergedStream.emit('error', error));
|
||||||
});
|
});
|
||||||
mergedStream.once('close', () => propagateCloseEventToSources(streams));
|
mergedStream.once('close', () => propagateCloseEventToSources(streams));
|
||||||
mergedStream.once('end', () => propagateCloseEventToSources(streams));
|
mergedStream.once('end', () => propagateCloseEventToSources(streams));
|
||||||
return mergedStream;
|
return mergedStream;
|
||||||
}
|
}
|
||||||
exports.merge = merge;
|
exports.merge = merge;
|
||||||
function propagateCloseEventToSources(streams) {
|
function propagateCloseEventToSources(streams) {
|
||||||
streams.forEach((stream) => stream.emit('close'));
|
streams.forEach((stream) => stream.emit('close'));
|
||||||
}
|
}
|
||||||
|
4
node_modules/fast-glob/out/utils/string.d.ts
generated
vendored
4
node_modules/fast-glob/out/utils/string.d.ts
generated
vendored
@ -1,2 +1,2 @@
|
|||||||
export declare function isString(input: unknown): input is string;
|
export declare function isString(input: unknown): input is string;
|
||||||
export declare function isEmpty(input: string): boolean;
|
export declare function isEmpty(input: string): boolean;
|
||||||
|
22
node_modules/fast-glob/out/utils/string.js
generated
vendored
22
node_modules/fast-glob/out/utils/string.js
generated
vendored
@ -1,11 +1,11 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.isEmpty = exports.isString = void 0;
|
exports.isEmpty = exports.isString = void 0;
|
||||||
function isString(input) {
|
function isString(input) {
|
||||||
return typeof input === 'string';
|
return typeof input === 'string';
|
||||||
}
|
}
|
||||||
exports.isString = isString;
|
exports.isString = isString;
|
||||||
function isEmpty(input) {
|
function isEmpty(input) {
|
||||||
return input === '';
|
return input === '';
|
||||||
}
|
}
|
||||||
exports.isEmpty = isEmpty;
|
exports.isEmpty = isEmpty;
|
||||||
|
2
node_modules/fast-glob/package.json
generated
vendored
2
node_modules/fast-glob/package.json
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "fast-glob",
|
"name": "fast-glob",
|
||||||
"version": "3.2.11",
|
"version": "3.2.12",
|
||||||
"description": "It's a very fast and efficient glob library for Node.js",
|
"description": "It's a very fast and efficient glob library for Node.js",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": "mrmlnc/fast-glob",
|
"repository": "mrmlnc/fast-glob",
|
||||||
|
2
node_modules/fastq/README.md
generated
vendored
2
node_modules/fastq/README.md
generated
vendored
@ -225,7 +225,7 @@ Same than `kill` but the `drain` function will be called before reset to empty.
|
|||||||
### queue.error(handler)
|
### queue.error(handler)
|
||||||
|
|
||||||
Set a global error handler. `handler(err, task)` will be called
|
Set a global error handler. `handler(err, task)` will be called
|
||||||
when any of the tasks return an error.
|
each time a task is completed, `err` will be not null if the task has thrown an error.
|
||||||
|
|
||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
<a name="concurrency"></a>
|
<a name="concurrency"></a>
|
||||||
|
2
node_modules/fastq/index.d.ts
generated
vendored
2
node_modules/fastq/index.d.ts
generated
vendored
@ -17,7 +17,7 @@ declare namespace fastq {
|
|||||||
getQueue(): T[]
|
getQueue(): T[]
|
||||||
kill(): any
|
kill(): any
|
||||||
killAndDrain(): any
|
killAndDrain(): any
|
||||||
error(handler: errorHandler): void
|
error(handler: errorHandler<T>): void
|
||||||
concurrency: number
|
concurrency: number
|
||||||
drain(): any
|
drain(): any
|
||||||
empty: () => void
|
empty: () => void
|
||||||
|
2
node_modules/fastq/package.json
generated
vendored
2
node_modules/fastq/package.json
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "fastq",
|
"name": "fastq",
|
||||||
"version": "1.13.0",
|
"version": "1.15.0",
|
||||||
"description": "Fast, in memory work queue",
|
"description": "Fast, in memory work queue",
|
||||||
"main": "queue.js",
|
"main": "queue.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
6
node_modules/fastq/queue.js
generated
vendored
6
node_modules/fastq/queue.js
generated
vendored
@ -266,6 +266,12 @@ function queueAsPromised (context, worker, concurrency) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function drained () {
|
function drained () {
|
||||||
|
if (queue.idle()) {
|
||||||
|
return new Promise(function (resolve) {
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
var previousDrain = queue.drain
|
var previousDrain = queue.drain
|
||||||
|
|
||||||
var p = new Promise(function (resolve) {
|
var p = new Promise(function (resolve) {
|
||||||
|
27
node_modules/fastq/test/promise.js
generated
vendored
27
node_modules/fastq/test/promise.js
generated
vendored
@ -129,6 +129,33 @@ test('drained with drain function', async function (t) {
|
|||||||
t.equal(drainCalled, true)
|
t.equal(drainCalled, true)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('drained while idle should resolve', async function (t) {
|
||||||
|
const queue = buildQueue(worker, 2)
|
||||||
|
|
||||||
|
async function worker (arg) {
|
||||||
|
await sleep(arg)
|
||||||
|
}
|
||||||
|
|
||||||
|
await queue.drained()
|
||||||
|
})
|
||||||
|
|
||||||
|
test('drained while idle should not call the drain function', async function (t) {
|
||||||
|
let drainCalled = false
|
||||||
|
const queue = buildQueue(worker, 2)
|
||||||
|
|
||||||
|
queue.drain = function () {
|
||||||
|
drainCalled = true
|
||||||
|
}
|
||||||
|
|
||||||
|
async function worker (arg) {
|
||||||
|
await sleep(arg)
|
||||||
|
}
|
||||||
|
|
||||||
|
await queue.drained()
|
||||||
|
|
||||||
|
t.equal(drainCalled, false)
|
||||||
|
})
|
||||||
|
|
||||||
test('set this', async function (t) {
|
test('set this', async function (t) {
|
||||||
t.plan(1)
|
t.plan(1)
|
||||||
const that = {}
|
const that = {}
|
||||||
|
932
node_modules/fs-extra/CHANGELOG.md
generated
vendored
932
node_modules/fs-extra/CHANGELOG.md
generated
vendored
@ -1,932 +0,0 @@
|
|||||||
10.0.0 / 2021-05-03
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
### Breaking changes
|
|
||||||
|
|
||||||
- Require Node.js v12+ ([#886](https://github.com/jprichardson/node-fs-extra/issues/886), [#893](https://github.com/jprichardson/node-fs-extra/pull/893), [#890](https://github.com/jprichardson/node-fs-extra/pull/890), [#894](https://github.com/jprichardson/node-fs-extra/pull/894), [#895]( https://github.com/jprichardson/node-fs-extra/pull/895))
|
|
||||||
- Allow copying broken symlinks ([#779](https://github.com/jprichardson/node-fs-extra/pull/779), [#765](https://github.com/jprichardson/node-fs-extra/issues/765), [#638](https://github.com/jprichardson/node-fs-extra/issues/638), [#761](https://github.com/jprichardson/node-fs-extra/issues/761))
|
|
||||||
|
|
||||||
**The following changes, although technically semver-major, will not affect the vast majority of users:**
|
|
||||||
|
|
||||||
- Ensure correct type when destination exists for `ensureLink*()`/`ensureSymlink*()` ([#826](https://github.com/jprichardson/node-fs-extra/pull/826), [#786](https://github.com/jprichardson/node-fs-extra/issues/786), [#870](https://github.com/jprichardson/node-fs-extra/issues/870))
|
|
||||||
- Error when attempting to `copy*()` unknown file type ([#880](https://github.com/jprichardson/node-fs-extra/pull/880))
|
|
||||||
- Remove undocumented options for `remove*()` ([#882](https://github.com/jprichardson/node-fs-extra/pull/882))
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
- Allow changing case of filenames with `move*()`, even on technically case-insensitive filesystems ([#759](https://github.com/jprichardson/node-fs-extra/issues/759), [#801](https://github.com/jprichardson/node-fs-extra/pull/801))
|
|
||||||
- Use native `fs.rm*()` for `remove*()` in environments that support it ([#882](https://github.com/jprichardson/node-fs-extra/pull/882), [#806](https://github.com/jprichardson/node-fs-extra/issues/806))
|
|
||||||
- Improve `emptyDir()` performance ([#885](https://github.com/jprichardson/node-fs-extra/pull/885))
|
|
||||||
|
|
||||||
### Bugfixes
|
|
||||||
|
|
||||||
- Ensure `copy*()`'s `filter` function is not called more than necessary ([#883](https://github.com/jprichardson/node-fs-extra/pull/883), [#809](https://github.com/jprichardson/node-fs-extra/issues/809))
|
|
||||||
- Fix `move*()` raising `EPERM` error when moving a file to the root of a drive on Windows ([#897](https://github.com/jprichardson/node-fs-extra/pull/897), [#819](https://github.com/jprichardson/node-fs-extra/issues/819))
|
|
||||||
|
|
||||||
### Miscellaneous changes
|
|
||||||
|
|
||||||
- Do not use `at-least-node` as a dependency ([#896](https://github.com/jprichardson/node-fs-extra/pull/896))
|
|
||||||
- Improve documentation ([#888](https://github.com/jprichardson/node-fs-extra/pull/888), [#830](https://github.com/jprichardson/node-fs-extra/issues/830), [#884](https://github.com/jprichardson/node-fs-extra/pull/884), [#843](https://github.com/jprichardson/node-fs-extra/issues/843))
|
|
||||||
|
|
||||||
9.1.0 / 2021-01-19
|
|
||||||
------------------
|
|
||||||
|
|
||||||
- Add promise support for `fs.rm()` ([#841](https://github.com/jprichardson/node-fs-extra/issues/841), [#860](https://github.com/jprichardson/node-fs-extra/pull/860))
|
|
||||||
- Upgrade universalify for performance improvments ([#825](https://github.com/jprichardson/node-fs-extra/pull/825))
|
|
||||||
|
|
||||||
9.0.1 / 2020-06-03
|
|
||||||
------------------
|
|
||||||
|
|
||||||
- Fix issue with `ensureFile()` when used with Jest on Windows ([#804](https://github.com/jprichardson/node-fs-extra/issues/804), [#805](https://github.com/jprichardson/node-fs-extra/pull/805))
|
|
||||||
- Remove unneeded `process.umask()` call ([#791](https://github.com/jprichardson/node-fs-extra/pull/791))
|
|
||||||
- Docs improvements ([#753](https://github.com/jprichardson/node-fs-extra/pull/753), [#795](https://github.com/jprichardson/node-fs-extra/pull/795), [#797](https://github.com/jprichardson/node-fs-extra/pull/797))
|
|
||||||
|
|
||||||
9.0.0 / 2020-03-19
|
|
||||||
------------------
|
|
||||||
|
|
||||||
### Breaking changes
|
|
||||||
|
|
||||||
- Requires Node.js version 10 or greater ([#725](https://github.com/jprichardson/node-fs-extra/issues/725), [#751](https://github.com/jprichardson/node-fs-extra/pull/751))
|
|
||||||
- Switched `ensureDir*` to use a fork of https://github.com/sindresorhus/make-dir to make use of native recursive `fs.mkdir` where possible ([#619](https://github.com/jprichardson/node-fs-extra/issues/619), [#756](https://github.com/jprichardson/node-fs-extra/pull/756))
|
|
||||||
- Properly preserve `atime` for `copy*` with `preserveTimestamps` option ([#633](https://github.com/jprichardson/node-fs-extra/pull/633))
|
|
||||||
|
|
||||||
**The following changes, allthough technically breaking, will not affect the vast majority of users:**
|
|
||||||
|
|
||||||
- `outputJson` now outputs objects as they were when the function was called, even if they are mutated later ([#702](https://github.com/jprichardson/node-fs-extra/issues/702), [#768](https://github.com/jprichardson/node-fs-extra/pull/768))
|
|
||||||
- Cannot pass `null` as an options parameter to `*Json*` methods ([#745](https://github.com/jprichardson/node-fs-extra/issues/745), [#768](https://github.com/jprichardson/node-fs-extra/pull/768))
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
- Add promise shims for `fs.writev` & `fs.opendir` ([#747](https://github.com/jprichardson/node-fs-extra/pull/747))
|
|
||||||
- Better errors for `ensureFile` ([#696](https://github.com/jprichardson/node-fs-extra/issues/696), [#744](https://github.com/jprichardson/node-fs-extra/pull/744))
|
|
||||||
- Better file comparison for older Node versions ([#694](https://github.com/jprichardson/node-fs-extra/pull/694))
|
|
||||||
|
|
||||||
### Miscellaneous changes
|
|
||||||
- Peformance optimizations ([#762](https://github.com/jprichardson/node-fs-extra/issues/762), [#764](https://github.com/jprichardson/node-fs-extra/pull/764))
|
|
||||||
- Add missing documentation for aliases ([#758](https://github.com/jprichardson/node-fs-extra/issues/758), [#766](https://github.com/jprichardson/node-fs-extra/pull/766))
|
|
||||||
- Update `universalify` dependency ([#767](https://github.com/jprichardson/node-fs-extra/pull/767))
|
|
||||||
|
|
||||||
8.1.0 / 2019-06-28
|
|
||||||
------------------
|
|
||||||
|
|
||||||
- Add support for promisified `fs.realpath.native` in Node v9.2+ ([#650](https://github.com/jprichardson/node-fs-extra/issues/650), [#682](https://github.com/jprichardson/node-fs-extra/pull/682))
|
|
||||||
- Update `graceful-fs` dependency ([#700](https://github.com/jprichardson/node-fs-extra/pull/700))
|
|
||||||
- Use `graceful-fs` everywhere ([#700](https://github.com/jprichardson/node-fs-extra/pull/700))
|
|
||||||
|
|
||||||
8.0.1 / 2019-05-13
|
|
||||||
------------------
|
|
||||||
|
|
||||||
- Fix bug `Maximum call stack size exceeded` error in `util/stat` ([#679](https://github.com/jprichardson/node-fs-extra/pull/679))
|
|
||||||
|
|
||||||
8.0.0 / 2019-05-11
|
|
||||||
------------------
|
|
||||||
|
|
||||||
**NOTE:** Node.js v6 support is deprecated, and will be dropped in the next major release.
|
|
||||||
|
|
||||||
- Use `renameSync()` under the hood in `moveSync()`
|
|
||||||
- Fix bug with bind-mounted directories in `copy*()` ([#613](https://github.com/jprichardson/node-fs-extra/issues/613), [#618](https://github.com/jprichardson/node-fs-extra/pull/618))
|
|
||||||
- Fix bug in `move()` with case-insensitive file systems
|
|
||||||
- Use `fs.stat()`'s `bigint` option in `copy*()` & `move*()` where possible ([#657](https://github.com/jprichardson/node-fs-extra/issues/657))
|
|
||||||
|
|
||||||
7.0.1 / 2018-11-07
|
|
||||||
------------------
|
|
||||||
|
|
||||||
- Fix `removeSync()` on Windows, in some cases, it would error out with `ENOTEMPTY` ([#646](https://github.com/jprichardson/node-fs-extra/pull/646))
|
|
||||||
- Document `mode` option for `ensureDir*()` ([#587](https://github.com/jprichardson/node-fs-extra/pull/587))
|
|
||||||
- Don't include documentation files in npm package tarball ([#642](https://github.com/jprichardson/node-fs-extra/issues/642), [#643](https://github.com/jprichardson/node-fs-extra/pull/643))
|
|
||||||
|
|
||||||
7.0.0 / 2018-07-16
|
|
||||||
------------------
|
|
||||||
|
|
||||||
- **BREAKING:** Refine `copy*()` handling of symlinks to properly detect symlinks that point to the same file. ([#582](https://github.com/jprichardson/node-fs-extra/pull/582))
|
|
||||||
- Fix bug with copying write-protected directories ([#600](https://github.com/jprichardson/node-fs-extra/pull/600))
|
|
||||||
- Universalify `fs.lchmod()` ([#596](https://github.com/jprichardson/node-fs-extra/pull/596))
|
|
||||||
- Add `engines` field to `package.json` ([#580](https://github.com/jprichardson/node-fs-extra/pull/580))
|
|
||||||
|
|
||||||
6.0.1 / 2018-05-09
|
|
||||||
------------------
|
|
||||||
|
|
||||||
- Fix `fs.promises` `ExperimentalWarning` on Node v10.1.0 ([#578](https://github.com/jprichardson/node-fs-extra/pull/578))
|
|
||||||
|
|
||||||
6.0.0 / 2018-05-01
|
|
||||||
------------------
|
|
||||||
|
|
||||||
- Drop support for Node.js versions 4, 5, & 7 ([#564](https://github.com/jprichardson/node-fs-extra/pull/564))
|
|
||||||
- Rewrite `move` to use `fs.rename` where possible ([#549](https://github.com/jprichardson/node-fs-extra/pull/549))
|
|
||||||
- Don't convert relative paths to absolute paths for `filter` ([#554](https://github.com/jprichardson/node-fs-extra/pull/554))
|
|
||||||
- `copy*`'s behavior when `preserveTimestamps` is `false` has been OS-dependent since 5.0.0, but that's now explicitly noted in the docs ([#563](https://github.com/jprichardson/node-fs-extra/pull/563))
|
|
||||||
- Fix subdirectory detection for `copy*` & `move*` ([#541](https://github.com/jprichardson/node-fs-extra/pull/541))
|
|
||||||
- Handle case-insensitive paths correctly in `copy*` ([#568](https://github.com/jprichardson/node-fs-extra/pull/568))
|
|
||||||
|
|
||||||
5.0.0 / 2017-12-11
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Significant refactor of `copy()` & `copySync()`, including breaking changes. No changes to other functions in this release.
|
|
||||||
|
|
||||||
Huge thanks to **[@manidlou](https://github.com/manidlou)** for doing most of the work on this release.
|
|
||||||
|
|
||||||
- The `filter` option can no longer be a RegExp (must be a function). This was deprecated since fs-extra v1.0.0. [#512](https://github.com/jprichardson/node-fs-extra/pull/512)
|
|
||||||
- `copy()`'s `filter` option can now be a function that returns a Promise. [#518](https://github.com/jprichardson/node-fs-extra/pull/518)
|
|
||||||
- `copy()` & `copySync()` now use `fs.copyFile()`/`fs.copyFileSync()` in environments that support it (currently Node 8.5.0+). Older Node versions still get the old implementation. [#505](https://github.com/jprichardson/node-fs-extra/pull/505)
|
|
||||||
- Don't allow copying a directory into itself. [#83](https://github.com/jprichardson/node-fs-extra/issues/83)
|
|
||||||
- Handle copying between identical files. [#198](https://github.com/jprichardson/node-fs-extra/issues/198)
|
|
||||||
- Error out when copying an empty folder to a path that already exists. [#464](https://github.com/jprichardson/node-fs-extra/issues/464)
|
|
||||||
- Don't create `dest`'s parent if the `filter` function aborts the `copy()` operation. [#517](https://github.com/jprichardson/node-fs-extra/pull/517)
|
|
||||||
- Fix `writeStream` not being closed if there was an error in `copy()`. [#516](https://github.com/jprichardson/node-fs-extra/pull/516)
|
|
||||||
|
|
||||||
4.0.3 / 2017-12-05
|
|
||||||
------------------
|
|
||||||
|
|
||||||
- Fix wrong `chmod` values in `fs.remove()` [#501](https://github.com/jprichardson/node-fs-extra/pull/501)
|
|
||||||
- Fix `TypeError` on systems that don't have some `fs` operations like `lchown` [#520](https://github.com/jprichardson/node-fs-extra/pull/520)
|
|
||||||
|
|
||||||
4.0.2 / 2017-09-12
|
|
||||||
------------------
|
|
||||||
|
|
||||||
- Added `EOL` option to `writeJson*` & `outputJson*` (via upgrade to jsonfile v4)
|
|
||||||
- Added promise support to [`fs.copyFile()`](https://nodejs.org/api/fs.html#fs_fs_copyfile_src_dest_flags_callback) in Node 8.5+
|
|
||||||
- Added `.js` extension to `main` field in `package.json` for better tooling compatibility. [#485](https://github.com/jprichardson/node-fs-extra/pull/485)
|
|
||||||
|
|
||||||
4.0.1 / 2017-07-31
|
|
||||||
------------------
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- Previously, `ensureFile()` & `ensureFileSync()` would do nothing if the path was a directory. Now, they error out for consistency with `ensureDir()`. [#465](https://github.com/jprichardson/node-fs-extra/issues/465), [#466](https://github.com/jprichardson/node-fs-extra/pull/466), [#470](https://github.com/jprichardson/node-fs-extra/issues/470)
|
|
||||||
|
|
||||||
4.0.0 / 2017-07-14
|
|
||||||
------------------
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **BREAKING:** The promisified versions of `fs.read()` & `fs.write()` now return objects. See [the docs](docs/fs-read-write.md) for details. [#436](https://github.com/jprichardson/node-fs-extra/issues/436), [#449](https://github.com/jprichardson/node-fs-extra/pull/449)
|
|
||||||
- `fs.move()` now errors out when destination is a subdirectory of source. [#458](https://github.com/jprichardson/node-fs-extra/pull/458)
|
|
||||||
- Applied upstream fixes from `rimraf` to `fs.remove()` & `fs.removeSync()`. [#459](https://github.com/jprichardson/node-fs-extra/pull/459)
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- Got `fs.outputJSONSync()` working again; it was broken due to refactoring. [#428](https://github.com/jprichardson/node-fs-extra/pull/428)
|
|
||||||
|
|
||||||
Also clarified the docs in a few places.
|
|
||||||
|
|
||||||
3.0.1 / 2017-05-04
|
|
||||||
------------------
|
|
||||||
|
|
||||||
- Fix bug in `move()` & `moveSync()` when source and destination are the same, and source does not exist. [#415](https://github.com/jprichardson/node-fs-extra/pull/415)
|
|
||||||
|
|
||||||
3.0.0 / 2017-04-27
|
|
||||||
------------------
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- **BREAKING:** Added Promise support. All asynchronous native fs methods and fs-extra methods now return a promise if the callback is not passed. [#403](https://github.com/jprichardson/node-fs-extra/pull/403)
|
|
||||||
- `pathExists()`, a replacement for the deprecated `fs.exists`. `pathExists` has a normal error-first callback signature. Also added `pathExistsSync`, an alias to `fs.existsSync`, for completeness. [#406](https://github.com/jprichardson/node-fs-extra/pull/406)
|
|
||||||
|
|
||||||
### Removed
|
|
||||||
|
|
||||||
- **BREAKING:** Removed support for setting the default spaces for `writeJson()`, `writeJsonSync()`, `outputJson()`, & `outputJsonSync()`. This was undocumented. [#402](https://github.com/jprichardson/node-fs-extra/pull/402)
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- Upgraded jsonfile dependency to v3.0.0:
|
|
||||||
- **BREAKING:** Changed behavior of `throws` option for `readJsonSync()`; now does not throw filesystem errors when `throws` is `false`.
|
|
||||||
- **BREAKING:** `writeJson()`, `writeJsonSync()`, `outputJson()`, & `outputJsonSync()` now output minified JSON by default for consistency with `JSON.stringify()`; set the `spaces` option to `2` to override this new behavior. [#402](https://github.com/jprichardson/node-fs-extra/pull/402)
|
|
||||||
- Use `Buffer.allocUnsafe()` instead of `new Buffer()` in environments that support it. [#394](https://github.com/jprichardson/node-fs-extra/pull/394)
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- `removeSync()` silently failed on Windows in some cases. Now throws an `EBUSY` error. [#408](https://github.com/jprichardson/node-fs-extra/pull/408)
|
|
||||||
|
|
||||||
2.1.2 / 2017-03-16
|
|
||||||
------------------
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- Weird windows bug that resulted in `ensureDir()`'s callback being called twice in some cases. This bug may have also affected `remove()`. See [#392](https://github.com/jprichardson/node-fs-extra/issues/392), [#393](https://github.com/jprichardson/node-fs-extra/pull/393)
|
|
||||||
|
|
||||||
2.1.1 / 2017-03-15
|
|
||||||
------------------
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- Reverted [`5597bd`](https://github.com/jprichardson/node-fs-extra/commit/5597bd5b67f7d060f5f5bf26e9635be48330f5d7), this broke compatibility with Node.js versions v4+ but less than `v4.5.0`.
|
|
||||||
- Remove `Buffer.alloc()` usage in `moveSync()`.
|
|
||||||
|
|
||||||
2.1.0 / 2017-03-15
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Thanks to [Mani Maghsoudlou (@manidlou)](https://github.com/manidlou) & [Jan Peer Stöcklmair (@JPeer264)](https://github.com/JPeer264) for their extraordinary help with this release!
|
|
||||||
|
|
||||||
### Added
|
|
||||||
- `moveSync()` See [#309], [#381](https://github.com/jprichardson/node-fs-extra/pull/381). ([@manidlou](https://github.com/manidlou))
|
|
||||||
- `copy()` and `copySync()`'s `filter` option now gets the destination path passed as the second parameter. [#366](https://github.com/jprichardson/node-fs-extra/pull/366) ([@manidlou](https://github.com/manidlou))
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
- Use `Buffer.alloc()` instead of deprecated `new Buffer()` in `copySync()`. [#380](https://github.com/jprichardson/node-fs-extra/pull/380) ([@manidlou](https://github.com/manidlou))
|
|
||||||
- Refactored entire codebase to use ES6 features supported by Node.js v4+ [#355](https://github.com/jprichardson/node-fs-extra/issues/355). [(@JPeer264)](https://github.com/JPeer264)
|
|
||||||
- Refactored docs. ([@manidlou](https://github.com/manidlou))
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- `move()` shouldn't error out when source and dest are the same. [#377](https://github.com/jprichardson/node-fs-extra/issues/377), [#378](https://github.com/jprichardson/node-fs-extra/pull/378) ([@jdalton](https://github.com/jdalton))
|
|
||||||
|
|
||||||
2.0.0 / 2017-01-16
|
|
||||||
------------------
|
|
||||||
|
|
||||||
### Removed
|
|
||||||
- **BREAKING:** Removed support for Node `v0.12`. The Node foundation stopped officially supporting it
|
|
||||||
on Jan 1st, 2017.
|
|
||||||
- **BREAKING:** Remove `walk()` and `walkSync()`. `walkSync()` was only part of `fs-extra` for a little
|
|
||||||
over two months. Use [klaw](https://github.com/jprichardson/node-klaw) instead of `walk()`, in fact, `walk()` was just
|
|
||||||
an alias to klaw. For `walkSync()` use [klaw-sync](https://github.com/mawni/node-klaw-sync). See: [#338], [#339]
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
- **BREAKING:** Renamed `clobber` to `overwrite`. This affects `copy()`, `copySync()`, and `move()`. [#330], [#333]
|
|
||||||
- Moved docs, to `docs/`. [#340]
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
- Apply filters to directories in `copySync()` like in `copy()`. [#324]
|
|
||||||
- A specific condition when disk is under heavy use, `copy()` can fail. [#326]
|
|
||||||
|
|
||||||
|
|
||||||
1.0.0 / 2016-11-01
|
|
||||||
------------------
|
|
||||||
|
|
||||||
After five years of development, we finally have reach the 1.0.0 milestone! Big thanks goes
|
|
||||||
to [Ryan Zim](https://github.com/RyanZim) for leading the charge on this release!
|
|
||||||
|
|
||||||
### Added
|
|
||||||
- `walkSync()`
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
- **BREAKING**: dropped Node v0.10 support.
|
|
||||||
- disabled `rimaf` globbing, wasn't used. [#280]
|
|
||||||
- deprecate `copy()/copySync()` option `filter` if it's a `RegExp`. `filter` should now be a function.
|
|
||||||
- inline `rimraf`. This is temporary and was done because `rimraf` depended upon the beefy `glob` which `fs-extra` does not use. [#300]
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
- bug fix proper closing of file handle on `utimesMillis()` [#271]
|
|
||||||
- proper escaping of files with dollar signs [#291]
|
|
||||||
- `copySync()` failed if user didn't own file. [#199], [#301]
|
|
||||||
|
|
||||||
|
|
||||||
0.30.0 / 2016-04-28
|
|
||||||
-------------------
|
|
||||||
- Brought back Node v0.10 support. I didn't realize there was still demand. Official support will end **2016-10-01**.
|
|
||||||
|
|
||||||
0.29.0 / 2016-04-27
|
|
||||||
-------------------
|
|
||||||
- **BREAKING**: removed support for Node v0.10. If you still want to use Node v0.10, everything should work except for `ensureLink()/ensureSymlink()`. Node v0.12 is still supported but will be dropped in the near future as well.
|
|
||||||
|
|
||||||
0.28.0 / 2016-04-17
|
|
||||||
-------------------
|
|
||||||
- **BREAKING**: removed `createOutputStream()`. Use https://www.npmjs.com/package/create-output-stream. See: [#192][#192]
|
|
||||||
- `mkdirs()/mkdirsSync()` check for invalid win32 path chars. See: [#209][#209], [#237][#237]
|
|
||||||
- `mkdirs()/mkdirsSync()` if drive not mounted, error. See: [#93][#93]
|
|
||||||
|
|
||||||
0.27.0 / 2016-04-15
|
|
||||||
-------------------
|
|
||||||
- add `dereference` option to `copySync()`. [#235][#235]
|
|
||||||
|
|
||||||
0.26.7 / 2016-03-16
|
|
||||||
-------------------
|
|
||||||
- fixed `copy()` if source and dest are the same. [#230][#230]
|
|
||||||
|
|
||||||
0.26.6 / 2016-03-15
|
|
||||||
-------------------
|
|
||||||
- fixed if `emptyDir()` does not have a callback: [#229][#229]
|
|
||||||
|
|
||||||
0.26.5 / 2016-01-27
|
|
||||||
-------------------
|
|
||||||
- `copy()` with two arguments (w/o callback) was broken. See: [#215][#215]
|
|
||||||
|
|
||||||
0.26.4 / 2016-01-05
|
|
||||||
-------------------
|
|
||||||
- `copySync()` made `preserveTimestamps` default consistent with `copy()` which is `false`. See: [#208][#208]
|
|
||||||
|
|
||||||
0.26.3 / 2015-12-17
|
|
||||||
-------------------
|
|
||||||
- fixed `copy()` hangup in copying blockDevice / characterDevice / `/dev/null`. See: [#193][#193]
|
|
||||||
|
|
||||||
0.26.2 / 2015-11-02
|
|
||||||
-------------------
|
|
||||||
- fixed `outputJson{Sync}()` spacing adherence to `fs.spaces`
|
|
||||||
|
|
||||||
0.26.1 / 2015-11-02
|
|
||||||
-------------------
|
|
||||||
- fixed `copySync()` when `clogger=true` and the destination is read only. See: [#190][#190]
|
|
||||||
|
|
||||||
0.26.0 / 2015-10-25
|
|
||||||
-------------------
|
|
||||||
- extracted the `walk()` function into its own module [`klaw`](https://github.com/jprichardson/node-klaw).
|
|
||||||
|
|
||||||
0.25.0 / 2015-10-24
|
|
||||||
-------------------
|
|
||||||
- now has a file walker `walk()`
|
|
||||||
|
|
||||||
0.24.0 / 2015-08-28
|
|
||||||
-------------------
|
|
||||||
- removed alias `delete()` and `deleteSync()`. See: [#171][#171]
|
|
||||||
|
|
||||||
0.23.1 / 2015-08-07
|
|
||||||
-------------------
|
|
||||||
- Better handling of errors for `move()` when moving across devices. [#170][#170]
|
|
||||||
- `ensureSymlink()` and `ensureLink()` should not throw errors if link exists. [#169][#169]
|
|
||||||
|
|
||||||
0.23.0 / 2015-08-06
|
|
||||||
-------------------
|
|
||||||
- added `ensureLink{Sync}()` and `ensureSymlink{Sync}()`. See: [#165][#165]
|
|
||||||
|
|
||||||
0.22.1 / 2015-07-09
|
|
||||||
-------------------
|
|
||||||
- Prevent calling `hasMillisResSync()` on module load. See: [#149][#149].
|
|
||||||
Fixes regression that was introduced in `0.21.0`.
|
|
||||||
|
|
||||||
0.22.0 / 2015-07-09
|
|
||||||
-------------------
|
|
||||||
- preserve permissions / ownership in `copy()`. See: [#54][#54]
|
|
||||||
|
|
||||||
0.21.0 / 2015-07-04
|
|
||||||
-------------------
|
|
||||||
- add option to preserve timestamps in `copy()` and `copySync()`. See: [#141][#141]
|
|
||||||
- updated `graceful-fs@3.x` to `4.x`. This brings in features from `amazing-graceful-fs` (much cleaner code / less hacks)
|
|
||||||
|
|
||||||
0.20.1 / 2015-06-23
|
|
||||||
-------------------
|
|
||||||
- fixed regression caused by latest jsonfile update: See: https://github.com/jprichardson/node-jsonfile/issues/26
|
|
||||||
|
|
||||||
0.20.0 / 2015-06-19
|
|
||||||
-------------------
|
|
||||||
- removed `jsonfile` aliases with `File` in the name, they weren't documented and probably weren't in use e.g.
|
|
||||||
this package had both `fs.readJsonFile` and `fs.readJson` that were aliases to each other, now use `fs.readJson`.
|
|
||||||
- preliminary walker created. Intentionally not documented. If you use it, it will almost certainly change and break your code.
|
|
||||||
- started moving tests inline
|
|
||||||
- upgraded to `jsonfile@2.1.0`, can now pass JSON revivers/replacers to `readJson()`, `writeJson()`, `outputJson()`
|
|
||||||
|
|
||||||
0.19.0 / 2015-06-08
|
|
||||||
-------------------
|
|
||||||
- `fs.copy()` had support for Node v0.8, dropped support
|
|
||||||
|
|
||||||
0.18.4 / 2015-05-22
|
|
||||||
-------------------
|
|
||||||
- fixed license field according to this: [#136][#136] and https://github.com/npm/npm/releases/tag/v2.10.0
|
|
||||||
|
|
||||||
0.18.3 / 2015-05-08
|
|
||||||
-------------------
|
|
||||||
- bugfix: handle `EEXIST` when clobbering on some Linux systems. [#134][#134]
|
|
||||||
|
|
||||||
0.18.2 / 2015-04-17
|
|
||||||
-------------------
|
|
||||||
- bugfix: allow `F_OK` ([#120][#120])
|
|
||||||
|
|
||||||
0.18.1 / 2015-04-15
|
|
||||||
-------------------
|
|
||||||
- improved windows support for `move()` a bit. https://github.com/jprichardson/node-fs-extra/commit/92838980f25dc2ee4ec46b43ee14d3c4a1d30c1b
|
|
||||||
- fixed a lot of tests for Windows (appveyor)
|
|
||||||
|
|
||||||
0.18.0 / 2015-03-31
|
|
||||||
-------------------
|
|
||||||
- added `emptyDir()` and `emptyDirSync()`
|
|
||||||
|
|
||||||
0.17.0 / 2015-03-28
|
|
||||||
-------------------
|
|
||||||
- `copySync` added `clobber` option (before always would clobber, now if `clobber` is `false` it throws an error if the destination exists).
|
|
||||||
**Only works with files at the moment.**
|
|
||||||
- `createOutputStream()` added. See: [#118][#118]
|
|
||||||
|
|
||||||
0.16.5 / 2015-03-08
|
|
||||||
-------------------
|
|
||||||
- fixed `fs.move` when `clobber` is `true` and destination is a directory, it should clobber. [#114][#114]
|
|
||||||
|
|
||||||
0.16.4 / 2015-03-01
|
|
||||||
-------------------
|
|
||||||
- `fs.mkdirs` fix infinite loop on Windows. See: See https://github.com/substack/node-mkdirp/pull/74 and https://github.com/substack/node-mkdirp/issues/66
|
|
||||||
|
|
||||||
0.16.3 / 2015-01-28
|
|
||||||
-------------------
|
|
||||||
- reverted https://github.com/jprichardson/node-fs-extra/commit/1ee77c8a805eba5b99382a2591ff99667847c9c9
|
|
||||||
|
|
||||||
|
|
||||||
0.16.2 / 2015-01-28
|
|
||||||
-------------------
|
|
||||||
- fixed `fs.copy` for Node v0.8 (support is temporary and will be removed in the near future)
|
|
||||||
|
|
||||||
0.16.1 / 2015-01-28
|
|
||||||
-------------------
|
|
||||||
- if `setImmediate` is not available, fall back to `process.nextTick`
|
|
||||||
|
|
||||||
0.16.0 / 2015-01-28
|
|
||||||
-------------------
|
|
||||||
- bugfix `fs.move()` into itself. Closes [#104]
|
|
||||||
- bugfix `fs.move()` moving directory across device. Closes [#108]
|
|
||||||
- added coveralls support
|
|
||||||
- bugfix: nasty multiple callback `fs.copy()` bug. Closes [#98]
|
|
||||||
- misc fs.copy code cleanups
|
|
||||||
|
|
||||||
0.15.0 / 2015-01-21
|
|
||||||
-------------------
|
|
||||||
- dropped `ncp`, imported code in
|
|
||||||
- because of previous, now supports `io.js`
|
|
||||||
- `graceful-fs` is now a dependency
|
|
||||||
|
|
||||||
0.14.0 / 2015-01-05
|
|
||||||
-------------------
|
|
||||||
- changed `copy`/`copySync` from `fs.copy(src, dest, [filters], callback)` to `fs.copy(src, dest, [options], callback)` [#100][#100]
|
|
||||||
- removed mockfs tests for mkdirp (this may be temporary, but was getting in the way of other tests)
|
|
||||||
|
|
||||||
0.13.0 / 2014-12-10
|
|
||||||
-------------------
|
|
||||||
- removed `touch` and `touchSync` methods (they didn't handle permissions like UNIX touch)
|
|
||||||
- updated `"ncp": "^0.6.0"` to `"ncp": "^1.0.1"`
|
|
||||||
- imported `mkdirp` => `minimist` and `mkdirp` are no longer dependences, should now appease people who wanted `mkdirp` to be `--use_strict` safe. See [#59]([#59][#59])
|
|
||||||
|
|
||||||
0.12.0 / 2014-09-22
|
|
||||||
-------------------
|
|
||||||
- copy symlinks in `copySync()` [#85][#85]
|
|
||||||
|
|
||||||
0.11.1 / 2014-09-02
|
|
||||||
-------------------
|
|
||||||
- bugfix `copySync()` preserve file permissions [#80][#80]
|
|
||||||
|
|
||||||
0.11.0 / 2014-08-11
|
|
||||||
-------------------
|
|
||||||
- upgraded `"ncp": "^0.5.1"` to `"ncp": "^0.6.0"`
|
|
||||||
- upgrade `jsonfile": "^1.2.0"` to `jsonfile": "^2.0.0"` => on write, json files now have `\n` at end. Also adds `options.throws` to `readJsonSync()`
|
|
||||||
see https://github.com/jprichardson/node-jsonfile#readfilesyncfilename-options for more details.
|
|
||||||
|
|
||||||
0.10.0 / 2014-06-29
|
|
||||||
------------------
|
|
||||||
* bugfix: upgaded `"jsonfile": "~1.1.0"` to `"jsonfile": "^1.2.0"`, bumped minor because of `jsonfile` dep change
|
|
||||||
from `~` to `^`. [#67]
|
|
||||||
|
|
||||||
0.9.1 / 2014-05-22
|
|
||||||
------------------
|
|
||||||
* removed Node.js `0.8.x` support, `0.9.0` was published moments ago and should have been done there
|
|
||||||
|
|
||||||
0.9.0 / 2014-05-22
|
|
||||||
------------------
|
|
||||||
* upgraded `ncp` from `~0.4.2` to `^0.5.1`, [#58]
|
|
||||||
* upgraded `rimraf` from `~2.2.6` to `^2.2.8`
|
|
||||||
* upgraded `mkdirp` from `0.3.x` to `^0.5.0`
|
|
||||||
* added methods `ensureFile()`, `ensureFileSync()`
|
|
||||||
* added methods `ensureDir()`, `ensureDirSync()` [#31]
|
|
||||||
* added `move()` method. From: https://github.com/andrewrk/node-mv
|
|
||||||
|
|
||||||
|
|
||||||
0.8.1 / 2013-10-24
|
|
||||||
------------------
|
|
||||||
* copy failed to return an error to the callback if a file doesn't exist (ulikoehler [#38], [#39])
|
|
||||||
|
|
||||||
0.8.0 / 2013-10-14
|
|
||||||
------------------
|
|
||||||
* `filter` implemented on `copy()` and `copySync()`. (Srirangan / [#36])
|
|
||||||
|
|
||||||
0.7.1 / 2013-10-12
|
|
||||||
------------------
|
|
||||||
* `copySync()` implemented (Srirangan / [#33])
|
|
||||||
* updated to the latest `jsonfile` version `1.1.0` which gives `options` params for the JSON methods. Closes [#32]
|
|
||||||
|
|
||||||
0.7.0 / 2013-10-07
|
|
||||||
------------------
|
|
||||||
* update readme conventions
|
|
||||||
* `copy()` now works if destination directory does not exist. Closes [#29]
|
|
||||||
|
|
||||||
0.6.4 / 2013-09-05
|
|
||||||
------------------
|
|
||||||
* changed `homepage` field in package.json to remove NPM warning
|
|
||||||
|
|
||||||
0.6.3 / 2013-06-28
|
|
||||||
------------------
|
|
||||||
* changed JSON spacing default from `4` to `2` to follow Node conventions
|
|
||||||
* updated `jsonfile` dep
|
|
||||||
* updated `rimraf` dep
|
|
||||||
|
|
||||||
0.6.2 / 2013-06-28
|
|
||||||
------------------
|
|
||||||
* added .npmignore, [#25]
|
|
||||||
|
|
||||||
0.6.1 / 2013-05-14
|
|
||||||
------------------
|
|
||||||
* modified for `strict` mode, closes [#24]
|
|
||||||
* added `outputJson()/outputJsonSync()`, closes [#23]
|
|
||||||
|
|
||||||
0.6.0 / 2013-03-18
|
|
||||||
------------------
|
|
||||||
* removed node 0.6 support
|
|
||||||
* added node 0.10 support
|
|
||||||
* upgraded to latest `ncp` and `rimraf`.
|
|
||||||
* optional `graceful-fs` support. Closes [#17]
|
|
||||||
|
|
||||||
|
|
||||||
0.5.0 / 2013-02-03
|
|
||||||
------------------
|
|
||||||
* Removed `readTextFile`.
|
|
||||||
* Renamed `readJSONFile` to `readJSON` and `readJson`, same with write.
|
|
||||||
* Restructured documentation a bit. Added roadmap.
|
|
||||||
|
|
||||||
0.4.0 / 2013-01-28
|
|
||||||
------------------
|
|
||||||
* Set default spaces in `jsonfile` from 4 to 2.
|
|
||||||
* Updated `testutil` deps for tests.
|
|
||||||
* Renamed `touch()` to `createFile()`
|
|
||||||
* Added `outputFile()` and `outputFileSync()`
|
|
||||||
* Changed creation of testing diretories so the /tmp dir is not littered.
|
|
||||||
* Added `readTextFile()` and `readTextFileSync()`.
|
|
||||||
|
|
||||||
0.3.2 / 2012-11-01
|
|
||||||
------------------
|
|
||||||
* Added `touch()` and `touchSync()` methods.
|
|
||||||
|
|
||||||
0.3.1 / 2012-10-11
|
|
||||||
------------------
|
|
||||||
* Fixed some stray globals.
|
|
||||||
|
|
||||||
0.3.0 / 2012-10-09
|
|
||||||
------------------
|
|
||||||
* Removed all CoffeeScript from tests.
|
|
||||||
* Renamed `mkdir` to `mkdirs`/`mkdirp`.
|
|
||||||
|
|
||||||
0.2.1 / 2012-09-11
|
|
||||||
------------------
|
|
||||||
* Updated `rimraf` dep.
|
|
||||||
|
|
||||||
0.2.0 / 2012-09-10
|
|
||||||
------------------
|
|
||||||
* Rewrote module into JavaScript. (Must still rewrite tests into JavaScript)
|
|
||||||
* Added all methods of [jsonfile](https://github.com/jprichardson/node-jsonfile)
|
|
||||||
* Added Travis-CI.
|
|
||||||
|
|
||||||
0.1.3 / 2012-08-13
|
|
||||||
------------------
|
|
||||||
* Added method `readJSONFile`.
|
|
||||||
|
|
||||||
0.1.2 / 2012-06-15
|
|
||||||
------------------
|
|
||||||
* Bug fix: `deleteSync()` didn't exist.
|
|
||||||
* Verified Node v0.8 compatibility.
|
|
||||||
|
|
||||||
0.1.1 / 2012-06-15
|
|
||||||
------------------
|
|
||||||
* Fixed bug in `remove()`/`delete()` that wouldn't execute the function if a callback wasn't passed.
|
|
||||||
|
|
||||||
0.1.0 / 2012-05-31
|
|
||||||
------------------
|
|
||||||
* Renamed `copyFile()` to `copy()`. `copy()` can now copy directories (recursively) too.
|
|
||||||
* Renamed `rmrf()` to `remove()`.
|
|
||||||
* `remove()` aliased with `delete()`.
|
|
||||||
* Added `mkdirp` capabilities. Named: `mkdir()`. Hides Node.js native `mkdir()`.
|
|
||||||
* Instead of exporting the native `fs` module with new functions, I now copy over the native methods to a new object and export that instead.
|
|
||||||
|
|
||||||
0.0.4 / 2012-03-14
|
|
||||||
------------------
|
|
||||||
* Removed CoffeeScript dependency
|
|
||||||
|
|
||||||
0.0.3 / 2012-01-11
|
|
||||||
------------------
|
|
||||||
* Added methods rmrf and rmrfSync
|
|
||||||
* Moved tests from Jasmine to Mocha
|
|
||||||
|
|
||||||
|
|
||||||
[#344]: https://github.com/jprichardson/node-fs-extra/issues/344 "Licence Year"
|
|
||||||
[#343]: https://github.com/jprichardson/node-fs-extra/pull/343 "Add klaw-sync link to readme"
|
|
||||||
[#342]: https://github.com/jprichardson/node-fs-extra/pull/342 "allow preserveTimestamps when use move"
|
|
||||||
[#341]: https://github.com/jprichardson/node-fs-extra/issues/341 "mkdirp(path.dirname(dest) in move() logic needs cleaning up [question]"
|
|
||||||
[#340]: https://github.com/jprichardson/node-fs-extra/pull/340 "Move docs to seperate docs folder [documentation]"
|
|
||||||
[#339]: https://github.com/jprichardson/node-fs-extra/pull/339 "Remove walk() & walkSync() [feature-walk]"
|
|
||||||
[#338]: https://github.com/jprichardson/node-fs-extra/issues/338 "Remove walk() and walkSync() [feature-walk]"
|
|
||||||
[#337]: https://github.com/jprichardson/node-fs-extra/issues/337 "copy doesn't return a yieldable value"
|
|
||||||
[#336]: https://github.com/jprichardson/node-fs-extra/pull/336 "Docs enhanced walk sync [documentation, feature-walk]"
|
|
||||||
[#335]: https://github.com/jprichardson/node-fs-extra/pull/335 "Refactor move() tests [feature-move]"
|
|
||||||
[#334]: https://github.com/jprichardson/node-fs-extra/pull/334 "Cleanup lib/move/index.js [feature-move]"
|
|
||||||
[#333]: https://github.com/jprichardson/node-fs-extra/pull/333 "Rename clobber to overwrite [feature-copy, feature-move]"
|
|
||||||
[#332]: https://github.com/jprichardson/node-fs-extra/pull/332 "BREAKING: Drop Node v0.12 & io.js support"
|
|
||||||
[#331]: https://github.com/jprichardson/node-fs-extra/issues/331 "Add support for chmodr [enhancement, future]"
|
|
||||||
[#330]: https://github.com/jprichardson/node-fs-extra/pull/330 "BREAKING: Do not error when copy destination exists & clobber: false [feature-copy]"
|
|
||||||
[#329]: https://github.com/jprichardson/node-fs-extra/issues/329 "Does .walk() scale to large directories? [question]"
|
|
||||||
[#328]: https://github.com/jprichardson/node-fs-extra/issues/328 "Copying files corrupts [feature-copy, needs-confirmed]"
|
|
||||||
[#327]: https://github.com/jprichardson/node-fs-extra/pull/327 "Use writeStream 'finish' event instead of 'close' [bug, feature-copy]"
|
|
||||||
[#326]: https://github.com/jprichardson/node-fs-extra/issues/326 "fs.copy fails with chmod error when disk under heavy use [bug, feature-copy]"
|
|
||||||
[#325]: https://github.com/jprichardson/node-fs-extra/issues/325 "ensureDir is difficult to promisify [enhancement]"
|
|
||||||
[#324]: https://github.com/jprichardson/node-fs-extra/pull/324 "copySync() should apply filter to directories like copy() [bug, feature-copy]"
|
|
||||||
[#323]: https://github.com/jprichardson/node-fs-extra/issues/323 "Support for `dest` being a directory when using `copy*()`?"
|
|
||||||
[#322]: https://github.com/jprichardson/node-fs-extra/pull/322 "Add fs-promise as fs-extra-promise alternative"
|
|
||||||
[#321]: https://github.com/jprichardson/node-fs-extra/issues/321 "fs.copy() with clobber set to false return EEXIST error [feature-copy]"
|
|
||||||
[#320]: https://github.com/jprichardson/node-fs-extra/issues/320 "fs.copySync: Error: EPERM: operation not permitted, unlink "
|
|
||||||
[#319]: https://github.com/jprichardson/node-fs-extra/issues/319 "Create directory if not exists"
|
|
||||||
[#318]: https://github.com/jprichardson/node-fs-extra/issues/318 "Support glob patterns [enhancement, future]"
|
|
||||||
[#317]: https://github.com/jprichardson/node-fs-extra/pull/317 "Adding copy sync test for src file without write perms"
|
|
||||||
[#316]: https://github.com/jprichardson/node-fs-extra/pull/316 "Remove move()'s broken limit option [feature-move]"
|
|
||||||
[#315]: https://github.com/jprichardson/node-fs-extra/pull/315 "Fix move clobber tests to work around graceful-fs bug."
|
|
||||||
[#314]: https://github.com/jprichardson/node-fs-extra/issues/314 "move() limit option [documentation, enhancement, feature-move]"
|
|
||||||
[#313]: https://github.com/jprichardson/node-fs-extra/pull/313 "Test that remove() ignores glob characters."
|
|
||||||
[#312]: https://github.com/jprichardson/node-fs-extra/pull/312 "Enhance walkSync() to return items with path and stats [feature-walk]"
|
|
||||||
[#311]: https://github.com/jprichardson/node-fs-extra/issues/311 "move() not work when dest name not provided [feature-move]"
|
|
||||||
[#310]: https://github.com/jprichardson/node-fs-extra/issues/310 "Edit walkSync to return items like what walk emits [documentation, enhancement, feature-walk]"
|
|
||||||
[#309]: https://github.com/jprichardson/node-fs-extra/issues/309 "moveSync support [enhancement, feature-move]"
|
|
||||||
[#308]: https://github.com/jprichardson/node-fs-extra/pull/308 "Fix incorrect anchor link"
|
|
||||||
[#307]: https://github.com/jprichardson/node-fs-extra/pull/307 "Fix coverage"
|
|
||||||
[#306]: https://github.com/jprichardson/node-fs-extra/pull/306 "Update devDeps, fix lint error"
|
|
||||||
[#305]: https://github.com/jprichardson/node-fs-extra/pull/305 "Re-add Coveralls"
|
|
||||||
[#304]: https://github.com/jprichardson/node-fs-extra/pull/304 "Remove path-is-absolute [enhancement]"
|
|
||||||
[#303]: https://github.com/jprichardson/node-fs-extra/pull/303 "Document copySync filter inconsistency [documentation, feature-copy]"
|
|
||||||
[#302]: https://github.com/jprichardson/node-fs-extra/pull/302 "fix(console): depreciated -> deprecated"
|
|
||||||
[#301]: https://github.com/jprichardson/node-fs-extra/pull/301 "Remove chmod call from copySync [feature-copy]"
|
|
||||||
[#300]: https://github.com/jprichardson/node-fs-extra/pull/300 "Inline Rimraf [enhancement, feature-move, feature-remove]"
|
|
||||||
[#299]: https://github.com/jprichardson/node-fs-extra/pull/299 "Warn when filter is a RegExp [feature-copy]"
|
|
||||||
[#298]: https://github.com/jprichardson/node-fs-extra/issues/298 "API Docs [documentation]"
|
|
||||||
[#297]: https://github.com/jprichardson/node-fs-extra/pull/297 "Warn about using preserveTimestamps on 32-bit node"
|
|
||||||
[#296]: https://github.com/jprichardson/node-fs-extra/pull/296 "Improve EEXIST error message for copySync [enhancement]"
|
|
||||||
[#295]: https://github.com/jprichardson/node-fs-extra/pull/295 "Depreciate using regular expressions for copy's filter option [documentation]"
|
|
||||||
[#294]: https://github.com/jprichardson/node-fs-extra/pull/294 "BREAKING: Refactor lib/copy/ncp.js [feature-copy]"
|
|
||||||
[#293]: https://github.com/jprichardson/node-fs-extra/pull/293 "Update CI configs"
|
|
||||||
[#292]: https://github.com/jprichardson/node-fs-extra/issues/292 "Rewrite lib/copy/ncp.js [enhancement, feature-copy]"
|
|
||||||
[#291]: https://github.com/jprichardson/node-fs-extra/pull/291 "Escape '$' in replacement string for async file copying"
|
|
||||||
[#290]: https://github.com/jprichardson/node-fs-extra/issues/290 "Exclude files pattern while copying using copy.config.js [question]"
|
|
||||||
[#289]: https://github.com/jprichardson/node-fs-extra/pull/289 "(Closes #271) lib/util/utimes: properly close file descriptors in the event of an error"
|
|
||||||
[#288]: https://github.com/jprichardson/node-fs-extra/pull/288 "(Closes #271) lib/util/utimes: properly close file descriptors in the event of an error"
|
|
||||||
[#287]: https://github.com/jprichardson/node-fs-extra/issues/287 "emptyDir() callback arguments are inconsistent [enhancement, feature-remove]"
|
|
||||||
[#286]: https://github.com/jprichardson/node-fs-extra/pull/286 "Added walkSync function"
|
|
||||||
[#285]: https://github.com/jprichardson/node-fs-extra/issues/285 "CITGM test failing on s390"
|
|
||||||
[#284]: https://github.com/jprichardson/node-fs-extra/issues/284 "outputFile method is missing a check to determine if existing item is a folder or not"
|
|
||||||
[#283]: https://github.com/jprichardson/node-fs-extra/pull/283 "Apply filter also on directories and symlinks for copySync()"
|
|
||||||
[#282]: https://github.com/jprichardson/node-fs-extra/pull/282 "Apply filter also on directories and symlinks for copySync()"
|
|
||||||
[#281]: https://github.com/jprichardson/node-fs-extra/issues/281 "remove function executes 'successfully' but doesn't do anything?"
|
|
||||||
[#280]: https://github.com/jprichardson/node-fs-extra/pull/280 "Disable rimraf globbing"
|
|
||||||
[#279]: https://github.com/jprichardson/node-fs-extra/issues/279 "Some code is vendored instead of included [awaiting-reply]"
|
|
||||||
[#278]: https://github.com/jprichardson/node-fs-extra/issues/278 "copy() does not preserve file/directory ownership"
|
|
||||||
[#277]: https://github.com/jprichardson/node-fs-extra/pull/277 "Mention defaults for clobber and dereference options"
|
|
||||||
[#276]: https://github.com/jprichardson/node-fs-extra/issues/276 "Cannot connect to Shared Folder [awaiting-reply]"
|
|
||||||
[#275]: https://github.com/jprichardson/node-fs-extra/issues/275 "EMFILE, too many open files on Mac OS with JSON API"
|
|
||||||
[#274]: https://github.com/jprichardson/node-fs-extra/issues/274 "Use with memory-fs? [enhancement, future]"
|
|
||||||
[#273]: https://github.com/jprichardson/node-fs-extra/pull/273 "tests: rename `remote.test.js` to `remove.test.js`"
|
|
||||||
[#272]: https://github.com/jprichardson/node-fs-extra/issues/272 "Copy clobber flag never err even when true [bug, feature-copy]"
|
|
||||||
[#271]: https://github.com/jprichardson/node-fs-extra/issues/271 "Unclosed file handle on futimes error"
|
|
||||||
[#270]: https://github.com/jprichardson/node-fs-extra/issues/270 "copy not working as desired on Windows [feature-copy, platform-windows]"
|
|
||||||
[#269]: https://github.com/jprichardson/node-fs-extra/issues/269 "Copying with preserveTimeStamps: true is inaccurate using 32bit node [feature-copy]"
|
|
||||||
[#268]: https://github.com/jprichardson/node-fs-extra/pull/268 "port fix for mkdirp issue #111"
|
|
||||||
[#267]: https://github.com/jprichardson/node-fs-extra/issues/267 "WARN deprecated wrench@1.5.9: wrench.js is deprecated!"
|
|
||||||
[#266]: https://github.com/jprichardson/node-fs-extra/issues/266 "fs-extra"
|
|
||||||
[#265]: https://github.com/jprichardson/node-fs-extra/issues/265 "Link the `fs.stat fs.exists` etc. methods for replace the `fs` module forever?"
|
|
||||||
[#264]: https://github.com/jprichardson/node-fs-extra/issues/264 "Renaming a file using move fails when a file inside is open (at least on windows) [wont-fix]"
|
|
||||||
[#263]: https://github.com/jprichardson/node-fs-extra/issues/263 "ENOSYS: function not implemented, link [needs-confirmed]"
|
|
||||||
[#262]: https://github.com/jprichardson/node-fs-extra/issues/262 "Add .exists() and .existsSync()"
|
|
||||||
[#261]: https://github.com/jprichardson/node-fs-extra/issues/261 "Cannot read property 'prototype' of undefined"
|
|
||||||
[#260]: https://github.com/jprichardson/node-fs-extra/pull/260 "use more specific path for method require"
|
|
||||||
[#259]: https://github.com/jprichardson/node-fs-extra/issues/259 "Feature Request: isEmpty"
|
|
||||||
[#258]: https://github.com/jprichardson/node-fs-extra/issues/258 "copy files does not preserve file timestamp"
|
|
||||||
[#257]: https://github.com/jprichardson/node-fs-extra/issues/257 "Copying a file on windows fails"
|
|
||||||
[#256]: https://github.com/jprichardson/node-fs-extra/pull/256 "Updated Readme "
|
|
||||||
[#255]: https://github.com/jprichardson/node-fs-extra/issues/255 "Update rimraf required version"
|
|
||||||
[#254]: https://github.com/jprichardson/node-fs-extra/issues/254 "request for readTree, readTreeSync, walkSync method"
|
|
||||||
[#253]: https://github.com/jprichardson/node-fs-extra/issues/253 "outputFile does not touch mtime when file exists"
|
|
||||||
[#252]: https://github.com/jprichardson/node-fs-extra/pull/252 "Fixing problem when copying file with no write permission"
|
|
||||||
[#251]: https://github.com/jprichardson/node-fs-extra/issues/251 "Just wanted to say thank you"
|
|
||||||
[#250]: https://github.com/jprichardson/node-fs-extra/issues/250 "`fs.remove()` not removing files (works with `rm -rf`)"
|
|
||||||
[#249]: https://github.com/jprichardson/node-fs-extra/issues/249 "Just a Question ... Remove Servers"
|
|
||||||
[#248]: https://github.com/jprichardson/node-fs-extra/issues/248 "Allow option to not preserve permissions for copy"
|
|
||||||
[#247]: https://github.com/jprichardson/node-fs-extra/issues/247 "Add TypeScript typing directly in the fs-extra package"
|
|
||||||
[#246]: https://github.com/jprichardson/node-fs-extra/issues/246 "fse.remove() && fse.removeSync() don't throw error on ENOENT file"
|
|
||||||
[#245]: https://github.com/jprichardson/node-fs-extra/issues/245 "filter for empty dir [enhancement]"
|
|
||||||
[#244]: https://github.com/jprichardson/node-fs-extra/issues/244 "copySync doesn't apply the filter to directories"
|
|
||||||
[#243]: https://github.com/jprichardson/node-fs-extra/issues/243 "Can I request fs.walk() to be synchronous?"
|
|
||||||
[#242]: https://github.com/jprichardson/node-fs-extra/issues/242 "Accidentally truncates file names ending with $$ [bug, feature-copy]"
|
|
||||||
[#241]: https://github.com/jprichardson/node-fs-extra/pull/241 "Remove link to createOutputStream"
|
|
||||||
[#240]: https://github.com/jprichardson/node-fs-extra/issues/240 "walkSync request"
|
|
||||||
[#239]: https://github.com/jprichardson/node-fs-extra/issues/239 "Depreciate regular expressions for copy's filter [documentation, feature-copy]"
|
|
||||||
[#238]: https://github.com/jprichardson/node-fs-extra/issues/238 "Can't write to files while in a worker thread."
|
|
||||||
[#237]: https://github.com/jprichardson/node-fs-extra/issues/237 ".ensureDir(..) fails silently when passed an invalid path..."
|
|
||||||
[#236]: https://github.com/jprichardson/node-fs-extra/issues/236 "[Removed] Filed under wrong repo"
|
|
||||||
[#235]: https://github.com/jprichardson/node-fs-extra/pull/235 "Adds symlink dereference option to `fse.copySync` (#191)"
|
|
||||||
[#234]: https://github.com/jprichardson/node-fs-extra/issues/234 "ensureDirSync fails silent when EACCES: permission denied on travis-ci"
|
|
||||||
[#233]: https://github.com/jprichardson/node-fs-extra/issues/233 "please make sure the first argument in callback is error object [feature-copy]"
|
|
||||||
[#232]: https://github.com/jprichardson/node-fs-extra/issues/232 "Copy a folder content to its child folder. "
|
|
||||||
[#231]: https://github.com/jprichardson/node-fs-extra/issues/231 "Adding read/write/output functions for YAML"
|
|
||||||
[#230]: https://github.com/jprichardson/node-fs-extra/pull/230 "throw error if src and dest are the same to avoid zeroing out + test"
|
|
||||||
[#229]: https://github.com/jprichardson/node-fs-extra/pull/229 "fix 'TypeError: callback is not a function' in emptyDir"
|
|
||||||
[#228]: https://github.com/jprichardson/node-fs-extra/pull/228 "Throw error when target is empty so file is not accidentally zeroed out"
|
|
||||||
[#227]: https://github.com/jprichardson/node-fs-extra/issues/227 "Uncatchable errors when there are invalid arguments [feature-move]"
|
|
||||||
[#226]: https://github.com/jprichardson/node-fs-extra/issues/226 "Moving to the current directory"
|
|
||||||
[#225]: https://github.com/jprichardson/node-fs-extra/issues/225 "EBUSY: resource busy or locked, unlink"
|
|
||||||
[#224]: https://github.com/jprichardson/node-fs-extra/issues/224 "fse.copy ENOENT error"
|
|
||||||
[#223]: https://github.com/jprichardson/node-fs-extra/issues/223 "Suspicious behavior of fs.existsSync"
|
|
||||||
[#222]: https://github.com/jprichardson/node-fs-extra/pull/222 "A clearer description of emtpyDir function"
|
|
||||||
[#221]: https://github.com/jprichardson/node-fs-extra/pull/221 "Update README.md"
|
|
||||||
[#220]: https://github.com/jprichardson/node-fs-extra/pull/220 "Non-breaking feature: add option 'passStats' to copy methods."
|
|
||||||
[#219]: https://github.com/jprichardson/node-fs-extra/pull/219 "Add closing parenthesis in copySync example"
|
|
||||||
[#218]: https://github.com/jprichardson/node-fs-extra/pull/218 "fix #187 #70 options.filter bug"
|
|
||||||
[#217]: https://github.com/jprichardson/node-fs-extra/pull/217 "fix #187 #70 options.filter bug"
|
|
||||||
[#216]: https://github.com/jprichardson/node-fs-extra/pull/216 "fix #187 #70 options.filter bug"
|
|
||||||
[#215]: https://github.com/jprichardson/node-fs-extra/pull/215 "fse.copy throws error when only src and dest provided [bug, documentation, feature-copy]"
|
|
||||||
[#214]: https://github.com/jprichardson/node-fs-extra/pull/214 "Fixing copySync anchor tag"
|
|
||||||
[#213]: https://github.com/jprichardson/node-fs-extra/issues/213 "Merge extfs with this repo"
|
|
||||||
[#212]: https://github.com/jprichardson/node-fs-extra/pull/212 "Update year to 2016 in README.md and LICENSE"
|
|
||||||
[#211]: https://github.com/jprichardson/node-fs-extra/issues/211 "Not copying all files"
|
|
||||||
[#210]: https://github.com/jprichardson/node-fs-extra/issues/210 "copy/copySync behave differently when copying a symbolic file [bug, documentation, feature-copy]"
|
|
||||||
[#209]: https://github.com/jprichardson/node-fs-extra/issues/209 "In Windows invalid directory name causes infinite loop in ensureDir(). [bug]"
|
|
||||||
[#208]: https://github.com/jprichardson/node-fs-extra/pull/208 "fix options.preserveTimestamps to false in copy-sync by default [feature-copy]"
|
|
||||||
[#207]: https://github.com/jprichardson/node-fs-extra/issues/207 "Add `compare` suite of functions"
|
|
||||||
[#206]: https://github.com/jprichardson/node-fs-extra/issues/206 "outputFileSync"
|
|
||||||
[#205]: https://github.com/jprichardson/node-fs-extra/issues/205 "fix documents about copy/copySync [documentation, feature-copy]"
|
|
||||||
[#204]: https://github.com/jprichardson/node-fs-extra/pull/204 "allow copy of block and character device files"
|
|
||||||
[#203]: https://github.com/jprichardson/node-fs-extra/issues/203 "copy method's argument options couldn't be undefined [bug, feature-copy]"
|
|
||||||
[#202]: https://github.com/jprichardson/node-fs-extra/issues/202 "why there is not a walkSync method?"
|
|
||||||
[#201]: https://github.com/jprichardson/node-fs-extra/issues/201 "clobber for directories [feature-copy, future]"
|
|
||||||
[#200]: https://github.com/jprichardson/node-fs-extra/issues/200 "'copySync' doesn't work in sync"
|
|
||||||
[#199]: https://github.com/jprichardson/node-fs-extra/issues/199 "fs.copySync fails if user does not own file [bug, feature-copy]"
|
|
||||||
[#198]: https://github.com/jprichardson/node-fs-extra/issues/198 "handle copying between identical files [feature-copy]"
|
|
||||||
[#197]: https://github.com/jprichardson/node-fs-extra/issues/197 "Missing documentation for `outputFile` `options` 3rd parameter [documentation]"
|
|
||||||
[#196]: https://github.com/jprichardson/node-fs-extra/issues/196 "copy filter: async function and/or function called with `fs.stat` result [future]"
|
|
||||||
[#195]: https://github.com/jprichardson/node-fs-extra/issues/195 "How to override with outputFile?"
|
|
||||||
[#194]: https://github.com/jprichardson/node-fs-extra/pull/194 "allow ensureFile(Sync) to provide data to be written to created file"
|
|
||||||
[#193]: https://github.com/jprichardson/node-fs-extra/issues/193 "`fs.copy` fails silently if source file is /dev/null [bug, feature-copy]"
|
|
||||||
[#192]: https://github.com/jprichardson/node-fs-extra/issues/192 "Remove fs.createOutputStream()"
|
|
||||||
[#191]: https://github.com/jprichardson/node-fs-extra/issues/191 "How to copy symlinks to target as normal folders [feature-copy]"
|
|
||||||
[#190]: https://github.com/jprichardson/node-fs-extra/pull/190 "copySync to overwrite destination file if readonly and clobber true"
|
|
||||||
[#189]: https://github.com/jprichardson/node-fs-extra/pull/189 "move.test fix to support CRLF on Windows"
|
|
||||||
[#188]: https://github.com/jprichardson/node-fs-extra/issues/188 "move.test failing on windows platform"
|
|
||||||
[#187]: https://github.com/jprichardson/node-fs-extra/issues/187 "Not filter each file, stops on first false [feature-copy]"
|
|
||||||
[#186]: https://github.com/jprichardson/node-fs-extra/issues/186 "Do you need a .size() function in this module? [future]"
|
|
||||||
[#185]: https://github.com/jprichardson/node-fs-extra/issues/185 "Doesn't work on NodeJS v4.x"
|
|
||||||
[#184]: https://github.com/jprichardson/node-fs-extra/issues/184 "CLI equivalent for fs-extra"
|
|
||||||
[#183]: https://github.com/jprichardson/node-fs-extra/issues/183 "with clobber true, copy and copySync behave differently if destination file is read only [bug, feature-copy]"
|
|
||||||
[#182]: https://github.com/jprichardson/node-fs-extra/issues/182 "ensureDir(dir, callback) second callback parameter not specified"
|
|
||||||
[#181]: https://github.com/jprichardson/node-fs-extra/issues/181 "Add ability to remove file securely [enhancement, wont-fix]"
|
|
||||||
[#180]: https://github.com/jprichardson/node-fs-extra/issues/180 "Filter option doesn't work the same way in copy and copySync [bug, feature-copy]"
|
|
||||||
[#179]: https://github.com/jprichardson/node-fs-extra/issues/179 "Include opendir"
|
|
||||||
[#178]: https://github.com/jprichardson/node-fs-extra/issues/178 "ENOTEMPTY is thrown on removeSync "
|
|
||||||
[#177]: https://github.com/jprichardson/node-fs-extra/issues/177 "fix `remove()` wildcards (introduced by rimraf) [feature-remove]"
|
|
||||||
[#176]: https://github.com/jprichardson/node-fs-extra/issues/176 "createOutputStream doesn't emit 'end' event"
|
|
||||||
[#175]: https://github.com/jprichardson/node-fs-extra/issues/175 "[Feature Request].moveSync support [feature-move, future]"
|
|
||||||
[#174]: https://github.com/jprichardson/node-fs-extra/pull/174 "Fix copy formatting and document options.filter"
|
|
||||||
[#173]: https://github.com/jprichardson/node-fs-extra/issues/173 "Feature Request: writeJson should mkdirs"
|
|
||||||
[#172]: https://github.com/jprichardson/node-fs-extra/issues/172 "rename `clobber` flags to `overwrite`"
|
|
||||||
[#171]: https://github.com/jprichardson/node-fs-extra/issues/171 "remove unnecessary aliases"
|
|
||||||
[#170]: https://github.com/jprichardson/node-fs-extra/pull/170 "More robust handling of errors moving across virtual drives"
|
|
||||||
[#169]: https://github.com/jprichardson/node-fs-extra/pull/169 "suppress ensureLink & ensureSymlink dest exists error"
|
|
||||||
[#168]: https://github.com/jprichardson/node-fs-extra/pull/168 "suppress ensurelink dest exists error"
|
|
||||||
[#167]: https://github.com/jprichardson/node-fs-extra/pull/167 "Adds basic (string, buffer) support for ensureFile content [future]"
|
|
||||||
[#166]: https://github.com/jprichardson/node-fs-extra/pull/166 "Adds basic (string, buffer) support for ensureFile content"
|
|
||||||
[#165]: https://github.com/jprichardson/node-fs-extra/pull/165 "ensure for link & symlink"
|
|
||||||
[#164]: https://github.com/jprichardson/node-fs-extra/issues/164 "Feature Request: ensureFile to take optional argument for file content"
|
|
||||||
[#163]: https://github.com/jprichardson/node-fs-extra/issues/163 "ouputJson not formatted out of the box [bug]"
|
|
||||||
[#162]: https://github.com/jprichardson/node-fs-extra/pull/162 "ensure symlink & link"
|
|
||||||
[#161]: https://github.com/jprichardson/node-fs-extra/pull/161 "ensure symlink & link"
|
|
||||||
[#160]: https://github.com/jprichardson/node-fs-extra/pull/160 "ensure symlink & link"
|
|
||||||
[#159]: https://github.com/jprichardson/node-fs-extra/pull/159 "ensure symlink & link"
|
|
||||||
[#158]: https://github.com/jprichardson/node-fs-extra/issues/158 "Feature Request: ensureLink and ensureSymlink methods"
|
|
||||||
[#157]: https://github.com/jprichardson/node-fs-extra/issues/157 "writeJson isn't formatted"
|
|
||||||
[#156]: https://github.com/jprichardson/node-fs-extra/issues/156 "Promise.promisifyAll doesn't work for some methods"
|
|
||||||
[#155]: https://github.com/jprichardson/node-fs-extra/issues/155 "Readme"
|
|
||||||
[#154]: https://github.com/jprichardson/node-fs-extra/issues/154 "/tmp/millis-test-sync"
|
|
||||||
[#153]: https://github.com/jprichardson/node-fs-extra/pull/153 "Make preserveTimes also work on read-only files. Closes #152"
|
|
||||||
[#152]: https://github.com/jprichardson/node-fs-extra/issues/152 "fs.copy fails for read-only files with preserveTimestamp=true [feature-copy]"
|
|
||||||
[#151]: https://github.com/jprichardson/node-fs-extra/issues/151 "TOC does not work correctly on npm [documentation]"
|
|
||||||
[#150]: https://github.com/jprichardson/node-fs-extra/issues/150 "Remove test file fixtures, create with code."
|
|
||||||
[#149]: https://github.com/jprichardson/node-fs-extra/issues/149 "/tmp/millis-test-sync"
|
|
||||||
[#148]: https://github.com/jprichardson/node-fs-extra/issues/148 "split out `Sync` methods in documentation"
|
|
||||||
[#147]: https://github.com/jprichardson/node-fs-extra/issues/147 "Adding rmdirIfEmpty"
|
|
||||||
[#146]: https://github.com/jprichardson/node-fs-extra/pull/146 "ensure test.js works"
|
|
||||||
[#145]: https://github.com/jprichardson/node-fs-extra/issues/145 "Add `fs.exists` and `fs.existsSync` if it doesn't exist."
|
|
||||||
[#144]: https://github.com/jprichardson/node-fs-extra/issues/144 "tests failing"
|
|
||||||
[#143]: https://github.com/jprichardson/node-fs-extra/issues/143 "update graceful-fs"
|
|
||||||
[#142]: https://github.com/jprichardson/node-fs-extra/issues/142 "PrependFile Feature"
|
|
||||||
[#141]: https://github.com/jprichardson/node-fs-extra/pull/141 "Add option to preserve timestamps"
|
|
||||||
[#140]: https://github.com/jprichardson/node-fs-extra/issues/140 "Json file reading fails with 'utf8'"
|
|
||||||
[#139]: https://github.com/jprichardson/node-fs-extra/pull/139 "Preserve file timestamp on copy. Closes #138"
|
|
||||||
[#138]: https://github.com/jprichardson/node-fs-extra/issues/138 "Preserve timestamps on copying files"
|
|
||||||
[#137]: https://github.com/jprichardson/node-fs-extra/issues/137 "outputFile/outputJson: Unexpected end of input"
|
|
||||||
[#136]: https://github.com/jprichardson/node-fs-extra/pull/136 "Update license attribute"
|
|
||||||
[#135]: https://github.com/jprichardson/node-fs-extra/issues/135 "emptyDir throws Error if no callback is provided"
|
|
||||||
[#134]: https://github.com/jprichardson/node-fs-extra/pull/134 "Handle EEXIST error when clobbering dir"
|
|
||||||
[#133]: https://github.com/jprichardson/node-fs-extra/pull/133 "Travis runs with `sudo: false`"
|
|
||||||
[#132]: https://github.com/jprichardson/node-fs-extra/pull/132 "isDirectory method"
|
|
||||||
[#131]: https://github.com/jprichardson/node-fs-extra/issues/131 "copySync is not working iojs 1.8.4 on linux [feature-copy]"
|
|
||||||
[#130]: https://github.com/jprichardson/node-fs-extra/pull/130 "Please review additional features."
|
|
||||||
[#129]: https://github.com/jprichardson/node-fs-extra/pull/129 "can you review this feature?"
|
|
||||||
[#128]: https://github.com/jprichardson/node-fs-extra/issues/128 "fsExtra.move(filepath, newPath) broken;"
|
|
||||||
[#127]: https://github.com/jprichardson/node-fs-extra/issues/127 "consider using fs.access to remove deprecated warnings for fs.exists"
|
|
||||||
[#126]: https://github.com/jprichardson/node-fs-extra/issues/126 " TypeError: Object #<Object> has no method 'access'"
|
|
||||||
[#125]: https://github.com/jprichardson/node-fs-extra/issues/125 "Question: What do the *Sync function do different from non-sync"
|
|
||||||
[#124]: https://github.com/jprichardson/node-fs-extra/issues/124 "move with clobber option 'ENOTEMPTY'"
|
|
||||||
[#123]: https://github.com/jprichardson/node-fs-extra/issues/123 "Only copy the content of a directory"
|
|
||||||
[#122]: https://github.com/jprichardson/node-fs-extra/pull/122 "Update section links in README to match current section ids."
|
|
||||||
[#121]: https://github.com/jprichardson/node-fs-extra/issues/121 "emptyDir is undefined"
|
|
||||||
[#120]: https://github.com/jprichardson/node-fs-extra/issues/120 "usage bug caused by shallow cloning methods of 'graceful-fs'"
|
|
||||||
[#119]: https://github.com/jprichardson/node-fs-extra/issues/119 "mkdirs and ensureDir never invoke callback and consume CPU indefinitely if provided a path with invalid characters on Windows"
|
|
||||||
[#118]: https://github.com/jprichardson/node-fs-extra/pull/118 "createOutputStream"
|
|
||||||
[#117]: https://github.com/jprichardson/node-fs-extra/pull/117 "Fixed issue with slash separated paths on windows"
|
|
||||||
[#116]: https://github.com/jprichardson/node-fs-extra/issues/116 "copySync can only copy directories not files [documentation, feature-copy]"
|
|
||||||
[#115]: https://github.com/jprichardson/node-fs-extra/issues/115 ".Copy & .CopySync [feature-copy]"
|
|
||||||
[#114]: https://github.com/jprichardson/node-fs-extra/issues/114 "Fails to move (rename) directory to non-empty directory even with clobber: true"
|
|
||||||
[#113]: https://github.com/jprichardson/node-fs-extra/issues/113 "fs.copy seems to callback early if the destination file already exists"
|
|
||||||
[#112]: https://github.com/jprichardson/node-fs-extra/pull/112 "Copying a file into an existing directory"
|
|
||||||
[#111]: https://github.com/jprichardson/node-fs-extra/pull/111 "Moving a file into an existing directory "
|
|
||||||
[#110]: https://github.com/jprichardson/node-fs-extra/pull/110 "Moving a file into an existing directory"
|
|
||||||
[#109]: https://github.com/jprichardson/node-fs-extra/issues/109 "fs.move across windows drives fails"
|
|
||||||
[#108]: https://github.com/jprichardson/node-fs-extra/issues/108 "fse.move directories across multiple devices doesn't work"
|
|
||||||
[#107]: https://github.com/jprichardson/node-fs-extra/pull/107 "Check if dest path is an existing dir and copy or move source in it"
|
|
||||||
[#106]: https://github.com/jprichardson/node-fs-extra/issues/106 "fse.copySync crashes while copying across devices D: [feature-copy]"
|
|
||||||
[#105]: https://github.com/jprichardson/node-fs-extra/issues/105 "fs.copy hangs on iojs"
|
|
||||||
[#104]: https://github.com/jprichardson/node-fs-extra/issues/104 "fse.move deletes folders [bug]"
|
|
||||||
[#103]: https://github.com/jprichardson/node-fs-extra/issues/103 "Error: EMFILE with copy"
|
|
||||||
[#102]: https://github.com/jprichardson/node-fs-extra/issues/102 "touch / touchSync was removed ?"
|
|
||||||
[#101]: https://github.com/jprichardson/node-fs-extra/issues/101 "fs-extra promisified"
|
|
||||||
[#100]: https://github.com/jprichardson/node-fs-extra/pull/100 "copy: options object or filter to pass to ncp"
|
|
||||||
[#99]: https://github.com/jprichardson/node-fs-extra/issues/99 "ensureDir() modes [future]"
|
|
||||||
[#98]: https://github.com/jprichardson/node-fs-extra/issues/98 "fs.copy() incorrect async behavior [bug]"
|
|
||||||
[#97]: https://github.com/jprichardson/node-fs-extra/pull/97 "use path.join; fix copySync bug"
|
|
||||||
[#96]: https://github.com/jprichardson/node-fs-extra/issues/96 "destFolderExists in copySync is always undefined."
|
|
||||||
[#95]: https://github.com/jprichardson/node-fs-extra/pull/95 "Using graceful-ncp instead of ncp"
|
|
||||||
[#94]: https://github.com/jprichardson/node-fs-extra/issues/94 "Error: EEXIST, file already exists '../mkdirp/bin/cmd.js' on fs.copySync() [enhancement, feature-copy]"
|
|
||||||
[#93]: https://github.com/jprichardson/node-fs-extra/issues/93 "Confusing error if drive not mounted [enhancement]"
|
|
||||||
[#92]: https://github.com/jprichardson/node-fs-extra/issues/92 "Problems with Bluebird"
|
|
||||||
[#91]: https://github.com/jprichardson/node-fs-extra/issues/91 "fs.copySync('/test', '/haha') is different with 'cp -r /test /haha' [enhancement]"
|
|
||||||
[#90]: https://github.com/jprichardson/node-fs-extra/issues/90 "Folder creation and file copy is Happening in 64 bit machine but not in 32 bit machine"
|
|
||||||
[#89]: https://github.com/jprichardson/node-fs-extra/issues/89 "Error: EEXIST using fs-extra's fs.copy to copy a directory on Windows"
|
|
||||||
[#88]: https://github.com/jprichardson/node-fs-extra/issues/88 "Stacking those libraries"
|
|
||||||
[#87]: https://github.com/jprichardson/node-fs-extra/issues/87 "createWriteStream + outputFile = ?"
|
|
||||||
[#86]: https://github.com/jprichardson/node-fs-extra/issues/86 "no moveSync?"
|
|
||||||
[#85]: https://github.com/jprichardson/node-fs-extra/pull/85 "Copy symlinks in copySync"
|
|
||||||
[#84]: https://github.com/jprichardson/node-fs-extra/issues/84 "Push latest version to npm ?"
|
|
||||||
[#83]: https://github.com/jprichardson/node-fs-extra/issues/83 "Prevent copying a directory into itself [feature-copy]"
|
|
||||||
[#82]: https://github.com/jprichardson/node-fs-extra/pull/82 "README updates for move"
|
|
||||||
[#81]: https://github.com/jprichardson/node-fs-extra/issues/81 "fd leak after fs.move"
|
|
||||||
[#80]: https://github.com/jprichardson/node-fs-extra/pull/80 "Preserve file mode in copySync"
|
|
||||||
[#79]: https://github.com/jprichardson/node-fs-extra/issues/79 "fs.copy only .html file empty"
|
|
||||||
[#78]: https://github.com/jprichardson/node-fs-extra/pull/78 "copySync was not applying filters to directories"
|
|
||||||
[#77]: https://github.com/jprichardson/node-fs-extra/issues/77 "Create README reference to bluebird"
|
|
||||||
[#76]: https://github.com/jprichardson/node-fs-extra/issues/76 "Create README reference to typescript"
|
|
||||||
[#75]: https://github.com/jprichardson/node-fs-extra/issues/75 "add glob as a dep? [question]"
|
|
||||||
[#74]: https://github.com/jprichardson/node-fs-extra/pull/74 "including new emptydir module"
|
|
||||||
[#73]: https://github.com/jprichardson/node-fs-extra/pull/73 "add dependency status in readme"
|
|
||||||
[#72]: https://github.com/jprichardson/node-fs-extra/pull/72 "Use svg instead of png to get better image quality"
|
|
||||||
[#71]: https://github.com/jprichardson/node-fs-extra/issues/71 "fse.copy not working on Windows 7 x64 OS, but, copySync does work"
|
|
||||||
[#70]: https://github.com/jprichardson/node-fs-extra/issues/70 "Not filter each file, stops on first false [bug]"
|
|
||||||
[#69]: https://github.com/jprichardson/node-fs-extra/issues/69 "How to check if folder exist and read the folder name"
|
|
||||||
[#68]: https://github.com/jprichardson/node-fs-extra/issues/68 "consider flag to readJsonSync (throw false) [enhancement]"
|
|
||||||
[#67]: https://github.com/jprichardson/node-fs-extra/issues/67 "docs for readJson incorrectly states that is accepts options"
|
|
||||||
[#66]: https://github.com/jprichardson/node-fs-extra/issues/66 "ENAMETOOLONG"
|
|
||||||
[#65]: https://github.com/jprichardson/node-fs-extra/issues/65 "exclude filter in fs.copy"
|
|
||||||
[#64]: https://github.com/jprichardson/node-fs-extra/issues/64 "Announce: mfs - monitor your fs-extra calls"
|
|
||||||
[#63]: https://github.com/jprichardson/node-fs-extra/issues/63 "Walk"
|
|
||||||
[#62]: https://github.com/jprichardson/node-fs-extra/issues/62 "npm install fs-extra doesn't work"
|
|
||||||
[#61]: https://github.com/jprichardson/node-fs-extra/issues/61 "No longer supports node 0.8 due to use of `^` in package.json dependencies"
|
|
||||||
[#60]: https://github.com/jprichardson/node-fs-extra/issues/60 "chmod & chown for mkdirs"
|
|
||||||
[#59]: https://github.com/jprichardson/node-fs-extra/issues/59 "Consider including mkdirp and making fs-extra '--use_strict' safe [question]"
|
|
||||||
[#58]: https://github.com/jprichardson/node-fs-extra/issues/58 "Stack trace not included in fs.copy error"
|
|
||||||
[#57]: https://github.com/jprichardson/node-fs-extra/issues/57 "Possible to include wildcards in delete?"
|
|
||||||
[#56]: https://github.com/jprichardson/node-fs-extra/issues/56 "Crash when have no access to write to destination file in copy "
|
|
||||||
[#55]: https://github.com/jprichardson/node-fs-extra/issues/55 "Is it possible to have any console output similar to Grunt copy module?"
|
|
||||||
[#54]: https://github.com/jprichardson/node-fs-extra/issues/54 "`copy` does not preserve file ownership and permissons"
|
|
||||||
[#53]: https://github.com/jprichardson/node-fs-extra/issues/53 "outputFile() - ability to write data in appending mode"
|
|
||||||
[#52]: https://github.com/jprichardson/node-fs-extra/pull/52 "This fixes (what I think) is a bug in copySync"
|
|
||||||
[#51]: https://github.com/jprichardson/node-fs-extra/pull/51 "Add a Bitdeli Badge to README"
|
|
||||||
[#50]: https://github.com/jprichardson/node-fs-extra/issues/50 "Replace mechanism in createFile"
|
|
||||||
[#49]: https://github.com/jprichardson/node-fs-extra/pull/49 "update rimraf to v2.2.6"
|
|
||||||
[#48]: https://github.com/jprichardson/node-fs-extra/issues/48 "fs.copy issue [bug]"
|
|
||||||
[#47]: https://github.com/jprichardson/node-fs-extra/issues/47 "Bug in copy - callback called on readStream 'close' - Fixed in ncp 0.5.0"
|
|
||||||
[#46]: https://github.com/jprichardson/node-fs-extra/pull/46 "update copyright year"
|
|
||||||
[#45]: https://github.com/jprichardson/node-fs-extra/pull/45 "Added note about fse.outputFile() being the one that overwrites"
|
|
||||||
[#44]: https://github.com/jprichardson/node-fs-extra/pull/44 "Proposal: Stream support"
|
|
||||||
[#43]: https://github.com/jprichardson/node-fs-extra/issues/43 "Better error reporting "
|
|
||||||
[#42]: https://github.com/jprichardson/node-fs-extra/issues/42 "Performance issue?"
|
|
||||||
[#41]: https://github.com/jprichardson/node-fs-extra/pull/41 "There does seem to be a synchronous version now"
|
|
||||||
[#40]: https://github.com/jprichardson/node-fs-extra/issues/40 "fs.copy throw unexplained error ENOENT, utime "
|
|
||||||
[#39]: https://github.com/jprichardson/node-fs-extra/pull/39 "Added regression test for copy() return callback on error"
|
|
||||||
[#38]: https://github.com/jprichardson/node-fs-extra/pull/38 "Return err in copy() fstat cb, because stat could be undefined or null"
|
|
||||||
[#37]: https://github.com/jprichardson/node-fs-extra/issues/37 "Maybe include a line reader? [enhancement, question]"
|
|
||||||
[#36]: https://github.com/jprichardson/node-fs-extra/pull/36 "`filter` parameter `fs.copy` and `fs.copySync`"
|
|
||||||
[#35]: https://github.com/jprichardson/node-fs-extra/pull/35 "`filter` parameter `fs.copy` and `fs.copySync` "
|
|
||||||
[#34]: https://github.com/jprichardson/node-fs-extra/issues/34 "update docs to include options for JSON methods [enhancement]"
|
|
||||||
[#33]: https://github.com/jprichardson/node-fs-extra/pull/33 "fs_extra.copySync"
|
|
||||||
[#32]: https://github.com/jprichardson/node-fs-extra/issues/32 "update to latest jsonfile [enhancement]"
|
|
||||||
[#31]: https://github.com/jprichardson/node-fs-extra/issues/31 "Add ensure methods [enhancement]"
|
|
||||||
[#30]: https://github.com/jprichardson/node-fs-extra/issues/30 "update package.json optional dep `graceful-fs`"
|
|
||||||
[#29]: https://github.com/jprichardson/node-fs-extra/issues/29 "Copy failing if dest directory doesn't exist. Is this intended?"
|
|
||||||
[#28]: https://github.com/jprichardson/node-fs-extra/issues/28 "homepage field must be a string url. Deleted."
|
|
||||||
[#27]: https://github.com/jprichardson/node-fs-extra/issues/27 "Update Readme"
|
|
||||||
[#26]: https://github.com/jprichardson/node-fs-extra/issues/26 "Add readdir recursive method. [enhancement]"
|
|
||||||
[#25]: https://github.com/jprichardson/node-fs-extra/pull/25 "adding an `.npmignore` file"
|
|
||||||
[#24]: https://github.com/jprichardson/node-fs-extra/issues/24 "[bug] cannot run in strict mode [bug]"
|
|
||||||
[#23]: https://github.com/jprichardson/node-fs-extra/issues/23 "`writeJSON()` should create parent directories"
|
|
||||||
[#22]: https://github.com/jprichardson/node-fs-extra/pull/22 "Add a limit option to mkdirs()"
|
|
||||||
[#21]: https://github.com/jprichardson/node-fs-extra/issues/21 "touch() in 0.10.0"
|
|
||||||
[#20]: https://github.com/jprichardson/node-fs-extra/issues/20 "fs.remove yields callback before directory is really deleted"
|
|
||||||
[#19]: https://github.com/jprichardson/node-fs-extra/issues/19 "fs.copy err is empty array"
|
|
||||||
[#18]: https://github.com/jprichardson/node-fs-extra/pull/18 "Exposed copyFile Function"
|
|
||||||
[#17]: https://github.com/jprichardson/node-fs-extra/issues/17 "Use `require('graceful-fs')` if found instead of `require('fs')`"
|
|
||||||
[#16]: https://github.com/jprichardson/node-fs-extra/pull/16 "Update README.md"
|
|
||||||
[#15]: https://github.com/jprichardson/node-fs-extra/issues/15 "Implement cp -r but sync aka copySync. [enhancement]"
|
|
||||||
[#14]: https://github.com/jprichardson/node-fs-extra/issues/14 "fs.mkdirSync is broken in 0.3.1"
|
|
||||||
[#13]: https://github.com/jprichardson/node-fs-extra/issues/13 "Thoughts on including a directory tree / file watcher? [enhancement, question]"
|
|
||||||
[#12]: https://github.com/jprichardson/node-fs-extra/issues/12 "copyFile & copyFileSync are global"
|
|
||||||
[#11]: https://github.com/jprichardson/node-fs-extra/issues/11 "Thoughts on including a file walker? [enhancement, question]"
|
|
||||||
[#10]: https://github.com/jprichardson/node-fs-extra/issues/10 "move / moveFile API [enhancement]"
|
|
||||||
[#9]: https://github.com/jprichardson/node-fs-extra/issues/9 "don't import normal fs stuff into fs-extra"
|
|
||||||
[#8]: https://github.com/jprichardson/node-fs-extra/pull/8 "Update rimraf to latest version"
|
|
||||||
[#6]: https://github.com/jprichardson/node-fs-extra/issues/6 "Remove CoffeeScript development dependency"
|
|
||||||
[#5]: https://github.com/jprichardson/node-fs-extra/issues/5 "comments on naming"
|
|
||||||
[#4]: https://github.com/jprichardson/node-fs-extra/issues/4 "version bump to 0.2"
|
|
||||||
[#3]: https://github.com/jprichardson/node-fs-extra/pull/3 "Hi! I fixed some code for you!"
|
|
||||||
[#2]: https://github.com/jprichardson/node-fs-extra/issues/2 "Merge with fs.extra and mkdirp"
|
|
||||||
[#1]: https://github.com/jprichardson/node-fs-extra/issues/1 "file-extra npm !exist"
|
|
40
node_modules/fs-extra/README.md
generated
vendored
40
node_modules/fs-extra/README.md
generated
vendored
@ -4,11 +4,9 @@ Node.js: fs-extra
|
|||||||
`fs-extra` adds file system methods that aren't included in the native `fs` module and adds promise support to the `fs` methods. It also uses [`graceful-fs`](https://github.com/isaacs/node-graceful-fs) to prevent `EMFILE` errors. It should be a drop in replacement for `fs`.
|
`fs-extra` adds file system methods that aren't included in the native `fs` module and adds promise support to the `fs` methods. It also uses [`graceful-fs`](https://github.com/isaacs/node-graceful-fs) to prevent `EMFILE` errors. It should be a drop in replacement for `fs`.
|
||||||
|
|
||||||
[![npm Package](https://img.shields.io/npm/v/fs-extra.svg)](https://www.npmjs.org/package/fs-extra)
|
[![npm Package](https://img.shields.io/npm/v/fs-extra.svg)](https://www.npmjs.org/package/fs-extra)
|
||||||
[![License](https://img.shields.io/npm/l/express.svg)](https://github.com/jprichardson/node-fs-extra/blob/master/LICENSE)
|
[![License](https://img.shields.io/npm/l/fs-extra.svg)](https://github.com/jprichardson/node-fs-extra/blob/master/LICENSE)
|
||||||
[![build status](https://img.shields.io/travis/jprichardson/node-fs-extra/master.svg)](http://travis-ci.org/jprichardson/node-fs-extra)
|
[![build status](https://img.shields.io/github/actions/workflow/status/jprichardson/node-fs-extra/ci.yml?branch=master)](https://github.com/jprichardson/node-fs-extra/actions/workflows/ci.yml?query=branch%3Amaster)
|
||||||
[![windows Build status](https://img.shields.io/appveyor/ci/jprichardson/node-fs-extra/master.svg?label=windows%20build)](https://ci.appveyor.com/project/jprichardson/node-fs-extra/branch/master)
|
|
||||||
[![downloads per month](http://img.shields.io/npm/dm/fs-extra.svg)](https://www.npmjs.org/package/fs-extra)
|
[![downloads per month](http://img.shields.io/npm/dm/fs-extra.svg)](https://www.npmjs.org/package/fs-extra)
|
||||||
[![Coverage Status](https://img.shields.io/coveralls/github/jprichardson/node-fs-extra/master.svg)](https://coveralls.io/github/jprichardson/node-fs-extra)
|
|
||||||
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
|
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
|
||||||
|
|
||||||
Why?
|
Why?
|
||||||
@ -29,6 +27,8 @@ Installation
|
|||||||
Usage
|
Usage
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
### CommonJS
|
||||||
|
|
||||||
`fs-extra` is a drop in replacement for native `fs`. All methods in `fs` are attached to `fs-extra`. All `fs` methods return promises if the callback isn't passed.
|
`fs-extra` is a drop in replacement for native `fs`. All methods in `fs` are attached to `fs-extra`. All `fs` methods return promises if the callback isn't passed.
|
||||||
|
|
||||||
You don't ever need to include the original `fs` module again:
|
You don't ever need to include the original `fs` module again:
|
||||||
@ -57,6 +57,31 @@ const fs = require('fs')
|
|||||||
const fse = require('fs-extra')
|
const fse = require('fs-extra')
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### ESM
|
||||||
|
|
||||||
|
There is also an `fs-extra/esm` import, that supports both default and named exports. However, note that `fs` methods are not included in `fs-extra/esm`; you still need to import `fs` and/or `fs/promises` seperately:
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { readFileSync } from 'fs'
|
||||||
|
import { readFile } from 'fs/promises'
|
||||||
|
import { outputFile, outputFileSync } from 'fs-extra/esm'
|
||||||
|
```
|
||||||
|
|
||||||
|
Default exports are supported:
|
||||||
|
|
||||||
|
```js
|
||||||
|
import fs from 'fs'
|
||||||
|
import fse from 'fs-extra/esm'
|
||||||
|
// fse.readFileSync is not a function; must use fs.readFileSync
|
||||||
|
```
|
||||||
|
|
||||||
|
but you probably want to just use regular `fs-extra` instead of `fs-extra/esm` for default exports:
|
||||||
|
|
||||||
|
```js
|
||||||
|
import fs from 'fs-extra'
|
||||||
|
// both fs and fs-extra methods are defined
|
||||||
|
```
|
||||||
|
|
||||||
Sync vs Async vs Async/Await
|
Sync vs Async vs Async/Await
|
||||||
-------------
|
-------------
|
||||||
Most methods are async by default. All async methods will return a promise if the callback isn't passed.
|
Most methods are async by default. All async methods will return a promise if the callback isn't passed.
|
||||||
@ -189,7 +214,7 @@ you're gonna have to get over it :) If `standard` is good enough for `npm`, it's
|
|||||||
What's needed?
|
What's needed?
|
||||||
- First, take a look at existing issues. Those are probably going to be where the priority lies.
|
- First, take a look at existing issues. Those are probably going to be where the priority lies.
|
||||||
- More tests for edge cases. Specifically on different platforms. There can never be enough tests.
|
- More tests for edge cases. Specifically on different platforms. There can never be enough tests.
|
||||||
- Improve test coverage. See coveralls output for more info.
|
- Improve test coverage.
|
||||||
|
|
||||||
Note: If you make any big changes, **you should definitely file an issue for discussion first.**
|
Note: If you make any big changes, **you should definitely file an issue for discussion first.**
|
||||||
|
|
||||||
@ -199,7 +224,10 @@ fs-extra contains hundreds of tests.
|
|||||||
|
|
||||||
- `npm run lint`: runs the linter ([standard](http://standardjs.com/))
|
- `npm run lint`: runs the linter ([standard](http://standardjs.com/))
|
||||||
- `npm run unit`: runs the unit tests
|
- `npm run unit`: runs the unit tests
|
||||||
- `npm test`: runs both the linter and the tests
|
- `npm run unit-esm`: runs tests for `fs-extra/esm` exports
|
||||||
|
- `npm test`: runs the linter and all tests
|
||||||
|
|
||||||
|
When running unit tests, set the environment variable `CROSS_DEVICE_PATH` to the absolute path of an empty directory on another device (like a thumb drive) to enable cross-device move tests.
|
||||||
|
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
166
node_modules/fs-extra/lib/copy-sync/copy-sync.js
generated
vendored
166
node_modules/fs-extra/lib/copy-sync/copy-sync.js
generated
vendored
@ -1,166 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
const fs = require('graceful-fs')
|
|
||||||
const path = require('path')
|
|
||||||
const mkdirsSync = require('../mkdirs').mkdirsSync
|
|
||||||
const utimesMillisSync = require('../util/utimes').utimesMillisSync
|
|
||||||
const stat = require('../util/stat')
|
|
||||||
|
|
||||||
function copySync (src, dest, opts) {
|
|
||||||
if (typeof opts === 'function') {
|
|
||||||
opts = { filter: opts }
|
|
||||||
}
|
|
||||||
|
|
||||||
opts = opts || {}
|
|
||||||
opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now
|
|
||||||
opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber
|
|
||||||
|
|
||||||
// Warn about using preserveTimestamps on 32-bit node
|
|
||||||
if (opts.preserveTimestamps && process.arch === 'ia32') {
|
|
||||||
console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n
|
|
||||||
see https://github.com/jprichardson/node-fs-extra/issues/269`)
|
|
||||||
}
|
|
||||||
|
|
||||||
const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts)
|
|
||||||
stat.checkParentPathsSync(src, srcStat, dest, 'copy')
|
|
||||||
return handleFilterAndCopy(destStat, src, dest, opts)
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleFilterAndCopy (destStat, src, dest, opts) {
|
|
||||||
if (opts.filter && !opts.filter(src, dest)) return
|
|
||||||
const destParent = path.dirname(dest)
|
|
||||||
if (!fs.existsSync(destParent)) mkdirsSync(destParent)
|
|
||||||
return getStats(destStat, src, dest, opts)
|
|
||||||
}
|
|
||||||
|
|
||||||
function startCopy (destStat, src, dest, opts) {
|
|
||||||
if (opts.filter && !opts.filter(src, dest)) return
|
|
||||||
return getStats(destStat, src, dest, opts)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getStats (destStat, src, dest, opts) {
|
|
||||||
const statSync = opts.dereference ? fs.statSync : fs.lstatSync
|
|
||||||
const srcStat = statSync(src)
|
|
||||||
|
|
||||||
if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)
|
|
||||||
else if (srcStat.isFile() ||
|
|
||||||
srcStat.isCharacterDevice() ||
|
|
||||||
srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)
|
|
||||||
else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)
|
|
||||||
else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)
|
|
||||||
else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)
|
|
||||||
throw new Error(`Unknown file: ${src}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
function onFile (srcStat, destStat, src, dest, opts) {
|
|
||||||
if (!destStat) return copyFile(srcStat, src, dest, opts)
|
|
||||||
return mayCopyFile(srcStat, src, dest, opts)
|
|
||||||
}
|
|
||||||
|
|
||||||
function mayCopyFile (srcStat, src, dest, opts) {
|
|
||||||
if (opts.overwrite) {
|
|
||||||
fs.unlinkSync(dest)
|
|
||||||
return copyFile(srcStat, src, dest, opts)
|
|
||||||
} else if (opts.errorOnExist) {
|
|
||||||
throw new Error(`'${dest}' already exists`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function copyFile (srcStat, src, dest, opts) {
|
|
||||||
fs.copyFileSync(src, dest)
|
|
||||||
if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest)
|
|
||||||
return setDestMode(dest, srcStat.mode)
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleTimestamps (srcMode, src, dest) {
|
|
||||||
// Make sure the file is writable before setting the timestamp
|
|
||||||
// otherwise open fails with EPERM when invoked with 'r+'
|
|
||||||
// (through utimes call)
|
|
||||||
if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode)
|
|
||||||
return setDestTimestamps(src, dest)
|
|
||||||
}
|
|
||||||
|
|
||||||
function fileIsNotWritable (srcMode) {
|
|
||||||
return (srcMode & 0o200) === 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeFileWritable (dest, srcMode) {
|
|
||||||
return setDestMode(dest, srcMode | 0o200)
|
|
||||||
}
|
|
||||||
|
|
||||||
function setDestMode (dest, srcMode) {
|
|
||||||
return fs.chmodSync(dest, srcMode)
|
|
||||||
}
|
|
||||||
|
|
||||||
function setDestTimestamps (src, dest) {
|
|
||||||
// The initial srcStat.atime cannot be trusted
|
|
||||||
// because it is modified by the read(2) system call
|
|
||||||
// (See https://nodejs.org/api/fs.html#fs_stat_time_values)
|
|
||||||
const updatedSrcStat = fs.statSync(src)
|
|
||||||
return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)
|
|
||||||
}
|
|
||||||
|
|
||||||
function onDir (srcStat, destStat, src, dest, opts) {
|
|
||||||
if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)
|
|
||||||
return copyDir(src, dest, opts)
|
|
||||||
}
|
|
||||||
|
|
||||||
function mkDirAndCopy (srcMode, src, dest, opts) {
|
|
||||||
fs.mkdirSync(dest)
|
|
||||||
copyDir(src, dest, opts)
|
|
||||||
return setDestMode(dest, srcMode)
|
|
||||||
}
|
|
||||||
|
|
||||||
function copyDir (src, dest, opts) {
|
|
||||||
fs.readdirSync(src).forEach(item => copyDirItem(item, src, dest, opts))
|
|
||||||
}
|
|
||||||
|
|
||||||
function copyDirItem (item, src, dest, opts) {
|
|
||||||
const srcItem = path.join(src, item)
|
|
||||||
const destItem = path.join(dest, item)
|
|
||||||
const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts)
|
|
||||||
return startCopy(destStat, srcItem, destItem, opts)
|
|
||||||
}
|
|
||||||
|
|
||||||
function onLink (destStat, src, dest, opts) {
|
|
||||||
let resolvedSrc = fs.readlinkSync(src)
|
|
||||||
if (opts.dereference) {
|
|
||||||
resolvedSrc = path.resolve(process.cwd(), resolvedSrc)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!destStat) {
|
|
||||||
return fs.symlinkSync(resolvedSrc, dest)
|
|
||||||
} else {
|
|
||||||
let resolvedDest
|
|
||||||
try {
|
|
||||||
resolvedDest = fs.readlinkSync(dest)
|
|
||||||
} catch (err) {
|
|
||||||
// dest exists and is a regular file or directory,
|
|
||||||
// Windows may throw UNKNOWN error. If dest already exists,
|
|
||||||
// fs throws error anyway, so no need to guard against it here.
|
|
||||||
if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)
|
|
||||||
throw err
|
|
||||||
}
|
|
||||||
if (opts.dereference) {
|
|
||||||
resolvedDest = path.resolve(process.cwd(), resolvedDest)
|
|
||||||
}
|
|
||||||
if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {
|
|
||||||
throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)
|
|
||||||
}
|
|
||||||
|
|
||||||
// prevent copy if src is a subdir of dest since unlinking
|
|
||||||
// dest in this case would result in removing src contents
|
|
||||||
// and therefore a broken symlink would be created.
|
|
||||||
if (fs.statSync(dest).isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) {
|
|
||||||
throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)
|
|
||||||
}
|
|
||||||
return copyLink(resolvedSrc, dest)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function copyLink (resolvedSrc, dest) {
|
|
||||||
fs.unlinkSync(dest)
|
|
||||||
return fs.symlinkSync(resolvedSrc, dest)
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = copySync
|
|
5
node_modules/fs-extra/lib/copy-sync/index.js
generated
vendored
5
node_modules/fs-extra/lib/copy-sync/index.js
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
copySync: require('./copy-sync')
|
|
||||||
}
|
|
44
node_modules/fs-extra/lib/copy/copy.js
generated
vendored
44
node_modules/fs-extra/lib/copy/copy.js
generated
vendored
@ -23,8 +23,11 @@ function copy (src, dest, opts, cb) {
|
|||||||
|
|
||||||
// Warn about using preserveTimestamps on 32-bit node
|
// Warn about using preserveTimestamps on 32-bit node
|
||||||
if (opts.preserveTimestamps && process.arch === 'ia32') {
|
if (opts.preserveTimestamps && process.arch === 'ia32') {
|
||||||
console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n
|
process.emitWarning(
|
||||||
see https://github.com/jprichardson/node-fs-extra/issues/269`)
|
'Using the preserveTimestamps option in 32-bit node is not recommended;\n\n' +
|
||||||
|
'\tsee https://github.com/jprichardson/node-fs-extra/issues/269',
|
||||||
|
'Warning', 'fs-extra-WARN0001'
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
stat.checkPaths(src, dest, 'copy', opts, (err, stats) => {
|
stat.checkPaths(src, dest, 'copy', opts, (err, stats) => {
|
||||||
@ -32,8 +35,12 @@ function copy (src, dest, opts, cb) {
|
|||||||
const { srcStat, destStat } = stats
|
const { srcStat, destStat } = stats
|
||||||
stat.checkParentPaths(src, srcStat, dest, 'copy', err => {
|
stat.checkParentPaths(src, srcStat, dest, 'copy', err => {
|
||||||
if (err) return cb(err)
|
if (err) return cb(err)
|
||||||
if (opts.filter) return handleFilter(checkParentDir, destStat, src, dest, opts, cb)
|
runFilter(src, dest, opts, (err, include) => {
|
||||||
return checkParentDir(destStat, src, dest, opts, cb)
|
if (err) return cb(err)
|
||||||
|
if (!include) return cb()
|
||||||
|
|
||||||
|
checkParentDir(destStat, src, dest, opts, cb)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -50,16 +57,10 @@ function checkParentDir (destStat, src, dest, opts, cb) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleFilter (onInclude, destStat, src, dest, opts, cb) {
|
function runFilter (src, dest, opts, cb) {
|
||||||
Promise.resolve(opts.filter(src, dest)).then(include => {
|
if (!opts.filter) return cb(null, true)
|
||||||
if (include) return onInclude(destStat, src, dest, opts, cb)
|
Promise.resolve(opts.filter(src, dest))
|
||||||
return cb()
|
.then(include => cb(null, include), error => cb(error))
|
||||||
}, error => cb(error))
|
|
||||||
}
|
|
||||||
|
|
||||||
function startCopy (destStat, src, dest, opts, cb) {
|
|
||||||
if (opts.filter) return handleFilter(getStats, destStat, src, dest, opts, cb)
|
|
||||||
return getStats(destStat, src, dest, opts, cb)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getStats (destStat, src, dest, opts, cb) {
|
function getStats (destStat, src, dest, opts, cb) {
|
||||||
@ -175,12 +176,17 @@ function copyDirItems (items, src, dest, opts, cb) {
|
|||||||
function copyDirItem (items, item, src, dest, opts, cb) {
|
function copyDirItem (items, item, src, dest, opts, cb) {
|
||||||
const srcItem = path.join(src, item)
|
const srcItem = path.join(src, item)
|
||||||
const destItem = path.join(dest, item)
|
const destItem = path.join(dest, item)
|
||||||
stat.checkPaths(srcItem, destItem, 'copy', opts, (err, stats) => {
|
runFilter(srcItem, destItem, opts, (err, include) => {
|
||||||
if (err) return cb(err)
|
if (err) return cb(err)
|
||||||
const { destStat } = stats
|
if (!include) return copyDirItems(items, src, dest, opts, cb)
|
||||||
startCopy(destStat, srcItem, destItem, opts, err => {
|
|
||||||
|
stat.checkPaths(srcItem, destItem, 'copy', opts, (err, stats) => {
|
||||||
if (err) return cb(err)
|
if (err) return cb(err)
|
||||||
return copyDirItems(items, src, dest, opts, cb)
|
const { destStat } = stats
|
||||||
|
getStats(destStat, srcItem, destItem, opts, err => {
|
||||||
|
if (err) return cb(err)
|
||||||
|
return copyDirItems(items, src, dest, opts, cb)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -213,7 +219,7 @@ function onLink (destStat, src, dest, opts, cb) {
|
|||||||
// do not copy if src is a subdir of dest since unlinking
|
// do not copy if src is a subdir of dest since unlinking
|
||||||
// dest in this case would result in removing src contents
|
// dest in this case would result in removing src contents
|
||||||
// and therefore a broken symlink would be created.
|
// and therefore a broken symlink would be created.
|
||||||
if (destStat.isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) {
|
if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {
|
||||||
return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`))
|
return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`))
|
||||||
}
|
}
|
||||||
return copyLink(resolvedSrc, dest, cb)
|
return copyLink(resolvedSrc, dest, cb)
|
||||||
|
3
node_modules/fs-extra/lib/copy/index.js
generated
vendored
3
node_modules/fs-extra/lib/copy/index.js
generated
vendored
@ -2,5 +2,6 @@
|
|||||||
|
|
||||||
const u = require('universalify').fromCallback
|
const u = require('universalify').fromCallback
|
||||||
module.exports = {
|
module.exports = {
|
||||||
copy: u(require('./copy'))
|
copy: u(require('./copy')),
|
||||||
|
copySync: require('./copy-sync')
|
||||||
}
|
}
|
||||||
|
30
node_modules/fs-extra/lib/ensure/index.js
generated
vendored
30
node_modules/fs-extra/lib/ensure/index.js
generated
vendored
@ -1,23 +1,23 @@
|
|||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
const file = require('./file')
|
const { createFile, createFileSync } = require('./file')
|
||||||
const link = require('./link')
|
const { createLink, createLinkSync } = require('./link')
|
||||||
const symlink = require('./symlink')
|
const { createSymlink, createSymlinkSync } = require('./symlink')
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
// file
|
// file
|
||||||
createFile: file.createFile,
|
createFile,
|
||||||
createFileSync: file.createFileSync,
|
createFileSync,
|
||||||
ensureFile: file.createFile,
|
ensureFile: createFile,
|
||||||
ensureFileSync: file.createFileSync,
|
ensureFileSync: createFileSync,
|
||||||
// link
|
// link
|
||||||
createLink: link.createLink,
|
createLink,
|
||||||
createLinkSync: link.createLinkSync,
|
createLinkSync,
|
||||||
ensureLink: link.createLink,
|
ensureLink: createLink,
|
||||||
ensureLinkSync: link.createLinkSync,
|
ensureLinkSync: createLinkSync,
|
||||||
// symlink
|
// symlink
|
||||||
createSymlink: symlink.createSymlink,
|
createSymlink,
|
||||||
createSymlinkSync: symlink.createSymlinkSync,
|
createSymlinkSync,
|
||||||
ensureSymlink: symlink.createSymlink,
|
ensureSymlink: createSymlink,
|
||||||
ensureSymlinkSync: symlink.createSymlinkSync
|
ensureSymlinkSync: createSymlinkSync
|
||||||
}
|
}
|
||||||
|
61
node_modules/fs-extra/lib/fs/index.js
generated
vendored
61
node_modules/fs-extra/lib/fs/index.js
generated
vendored
@ -41,8 +41,7 @@ const api = [
|
|||||||
'writeFile'
|
'writeFile'
|
||||||
].filter(key => {
|
].filter(key => {
|
||||||
// Some commands are not available on some systems. Ex:
|
// Some commands are not available on some systems. Ex:
|
||||||
// fs.opendir was added in Node.js v12.12.0
|
// fs.cp was added in Node.js v16.7.0
|
||||||
// fs.rm was added in Node.js v14.14.0
|
|
||||||
// fs.lchown is not available on at least some Linux
|
// fs.lchown is not available on at least some Linux
|
||||||
return typeof fs[key] === 'function'
|
return typeof fs[key] === 'function'
|
||||||
})
|
})
|
||||||
@ -54,7 +53,6 @@ Object.assign(exports, fs)
|
|||||||
api.forEach(method => {
|
api.forEach(method => {
|
||||||
exports[method] = u(fs[method])
|
exports[method] = u(fs[method])
|
||||||
})
|
})
|
||||||
exports.realpath.native = u(fs.realpath.native)
|
|
||||||
|
|
||||||
// We differ from mz/fs in that we still ship the old, broken, fs.exists()
|
// We differ from mz/fs in that we still ship the old, broken, fs.exists()
|
||||||
// since we are a drop-in replacement for the native module
|
// since we are a drop-in replacement for the native module
|
||||||
@ -67,7 +65,7 @@ exports.exists = function (filename, callback) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// fs.read(), fs.write(), & fs.writev() need special treatment due to multiple callback args
|
// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args
|
||||||
|
|
||||||
exports.read = function (fd, buffer, offset, length, position, callback) {
|
exports.read = function (fd, buffer, offset, length, position, callback) {
|
||||||
if (typeof callback === 'function') {
|
if (typeof callback === 'function') {
|
||||||
@ -99,21 +97,44 @@ exports.write = function (fd, buffer, ...args) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// fs.writev only available in Node v12.9.0+
|
// Function signature is
|
||||||
if (typeof fs.writev === 'function') {
|
// s.readv(fd, buffers[, position], callback)
|
||||||
// Function signature is
|
// We need to handle the optional arg, so we use ...args
|
||||||
// s.writev(fd, buffers[, position], callback)
|
exports.readv = function (fd, buffers, ...args) {
|
||||||
// We need to handle the optional arg, so we use ...args
|
if (typeof args[args.length - 1] === 'function') {
|
||||||
exports.writev = function (fd, buffers, ...args) {
|
return fs.readv(fd, buffers, ...args)
|
||||||
if (typeof args[args.length - 1] === 'function') {
|
|
||||||
return fs.writev(fd, buffers, ...args)
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {
|
|
||||||
if (err) return reject(err)
|
|
||||||
resolve({ bytesWritten, buffers })
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => {
|
||||||
|
if (err) return reject(err)
|
||||||
|
resolve({ bytesRead, buffers })
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function signature is
|
||||||
|
// s.writev(fd, buffers[, position], callback)
|
||||||
|
// We need to handle the optional arg, so we use ...args
|
||||||
|
exports.writev = function (fd, buffers, ...args) {
|
||||||
|
if (typeof args[args.length - 1] === 'function') {
|
||||||
|
return fs.writev(fd, buffers, ...args)
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {
|
||||||
|
if (err) return reject(err)
|
||||||
|
resolve({ bytesWritten, buffers })
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// fs.realpath.native sometimes not available if fs is monkey-patched
|
||||||
|
if (typeof fs.realpath.native === 'function') {
|
||||||
|
exports.realpath.native = u(fs.realpath.native)
|
||||||
|
} else {
|
||||||
|
process.emitWarning(
|
||||||
|
'fs.realpath.native is not a function. Is fs being monkey-patched?',
|
||||||
|
'Warning', 'fs-extra-WARN0003'
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
4
node_modules/fs-extra/lib/index.js
generated
vendored
4
node_modules/fs-extra/lib/index.js
generated
vendored
@ -4,15 +4,13 @@ module.exports = {
|
|||||||
// Export promiseified graceful-fs:
|
// Export promiseified graceful-fs:
|
||||||
...require('./fs'),
|
...require('./fs'),
|
||||||
// Export extra methods:
|
// Export extra methods:
|
||||||
...require('./copy-sync'),
|
|
||||||
...require('./copy'),
|
...require('./copy'),
|
||||||
...require('./empty'),
|
...require('./empty'),
|
||||||
...require('./ensure'),
|
...require('./ensure'),
|
||||||
...require('./json'),
|
...require('./json'),
|
||||||
...require('./mkdirs'),
|
...require('./mkdirs'),
|
||||||
...require('./move-sync'),
|
|
||||||
...require('./move'),
|
...require('./move'),
|
||||||
...require('./output'),
|
...require('./output-file'),
|
||||||
...require('./path-exists'),
|
...require('./path-exists'),
|
||||||
...require('./remove')
|
...require('./remove')
|
||||||
}
|
}
|
||||||
|
2
node_modules/fs-extra/lib/json/output-json-sync.js
generated
vendored
2
node_modules/fs-extra/lib/json/output-json-sync.js
generated
vendored
@ -1,7 +1,7 @@
|
|||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
const { stringify } = require('jsonfile/utils')
|
const { stringify } = require('jsonfile/utils')
|
||||||
const { outputFileSync } = require('../output')
|
const { outputFileSync } = require('../output-file')
|
||||||
|
|
||||||
function outputJsonSync (file, data, options) {
|
function outputJsonSync (file, data, options) {
|
||||||
const str = stringify(data, options)
|
const str = stringify(data, options)
|
||||||
|
2
node_modules/fs-extra/lib/json/output-json.js
generated
vendored
2
node_modules/fs-extra/lib/json/output-json.js
generated
vendored
@ -1,7 +1,7 @@
|
|||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
const { stringify } = require('jsonfile/utils')
|
const { stringify } = require('jsonfile/utils')
|
||||||
const { outputFile } = require('../output')
|
const { outputFile } = require('../output-file')
|
||||||
|
|
||||||
async function outputJson (file, data, options = {}) {
|
async function outputJson (file, data, options = {}) {
|
||||||
const str = stringify(data, options)
|
const str = stringify(data, options)
|
||||||
|
5
node_modules/fs-extra/lib/move-sync/index.js
generated
vendored
5
node_modules/fs-extra/lib/move-sync/index.js
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
moveSync: require('./move-sync')
|
|
||||||
}
|
|
54
node_modules/fs-extra/lib/move-sync/move-sync.js
generated
vendored
54
node_modules/fs-extra/lib/move-sync/move-sync.js
generated
vendored
@ -1,54 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
const fs = require('graceful-fs')
|
|
||||||
const path = require('path')
|
|
||||||
const copySync = require('../copy-sync').copySync
|
|
||||||
const removeSync = require('../remove').removeSync
|
|
||||||
const mkdirpSync = require('../mkdirs').mkdirpSync
|
|
||||||
const stat = require('../util/stat')
|
|
||||||
|
|
||||||
function moveSync (src, dest, opts) {
|
|
||||||
opts = opts || {}
|
|
||||||
const overwrite = opts.overwrite || opts.clobber || false
|
|
||||||
|
|
||||||
const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)
|
|
||||||
stat.checkParentPathsSync(src, srcStat, dest, 'move')
|
|
||||||
if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))
|
|
||||||
return doRename(src, dest, overwrite, isChangingCase)
|
|
||||||
}
|
|
||||||
|
|
||||||
function isParentRoot (dest) {
|
|
||||||
const parent = path.dirname(dest)
|
|
||||||
const parsedPath = path.parse(parent)
|
|
||||||
return parsedPath.root === parent
|
|
||||||
}
|
|
||||||
|
|
||||||
function doRename (src, dest, overwrite, isChangingCase) {
|
|
||||||
if (isChangingCase) return rename(src, dest, overwrite)
|
|
||||||
if (overwrite) {
|
|
||||||
removeSync(dest)
|
|
||||||
return rename(src, dest, overwrite)
|
|
||||||
}
|
|
||||||
if (fs.existsSync(dest)) throw new Error('dest already exists.')
|
|
||||||
return rename(src, dest, overwrite)
|
|
||||||
}
|
|
||||||
|
|
||||||
function rename (src, dest, overwrite) {
|
|
||||||
try {
|
|
||||||
fs.renameSync(src, dest)
|
|
||||||
} catch (err) {
|
|
||||||
if (err.code !== 'EXDEV') throw err
|
|
||||||
return moveAcrossDevice(src, dest, overwrite)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function moveAcrossDevice (src, dest, overwrite) {
|
|
||||||
const opts = {
|
|
||||||
overwrite,
|
|
||||||
errorOnExist: true
|
|
||||||
}
|
|
||||||
copySync(src, dest, opts)
|
|
||||||
return removeSync(src)
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = moveSync
|
|
3
node_modules/fs-extra/lib/move/index.js
generated
vendored
3
node_modules/fs-extra/lib/move/index.js
generated
vendored
@ -2,5 +2,6 @@
|
|||||||
|
|
||||||
const u = require('universalify').fromCallback
|
const u = require('universalify').fromCallback
|
||||||
module.exports = {
|
module.exports = {
|
||||||
move: u(require('./move'))
|
move: u(require('./move')),
|
||||||
|
moveSync: require('./move-sync')
|
||||||
}
|
}
|
||||||
|
5
node_modules/fs-extra/lib/move/move.js
generated
vendored
5
node_modules/fs-extra/lib/move/move.js
generated
vendored
@ -14,6 +14,8 @@ function move (src, dest, opts, cb) {
|
|||||||
opts = {}
|
opts = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
opts = opts || {}
|
||||||
|
|
||||||
const overwrite = opts.overwrite || opts.clobber || false
|
const overwrite = opts.overwrite || opts.clobber || false
|
||||||
|
|
||||||
stat.checkPaths(src, dest, 'move', opts, (err, stats) => {
|
stat.checkPaths(src, dest, 'move', opts, (err, stats) => {
|
||||||
@ -62,7 +64,8 @@ function rename (src, dest, overwrite, cb) {
|
|||||||
function moveAcrossDevice (src, dest, overwrite, cb) {
|
function moveAcrossDevice (src, dest, overwrite, cb) {
|
||||||
const opts = {
|
const opts = {
|
||||||
overwrite,
|
overwrite,
|
||||||
errorOnExist: true
|
errorOnExist: true,
|
||||||
|
preserveTimestamps: true
|
||||||
}
|
}
|
||||||
copy(src, dest, opts, err => {
|
copy(src, dest, opts, err => {
|
||||||
if (err) return cb(err)
|
if (err) return cb(err)
|
||||||
|
40
node_modules/fs-extra/lib/output/index.js
generated
vendored
40
node_modules/fs-extra/lib/output/index.js
generated
vendored
@ -1,40 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
const u = require('universalify').fromCallback
|
|
||||||
const fs = require('graceful-fs')
|
|
||||||
const path = require('path')
|
|
||||||
const mkdir = require('../mkdirs')
|
|
||||||
const pathExists = require('../path-exists').pathExists
|
|
||||||
|
|
||||||
function outputFile (file, data, encoding, callback) {
|
|
||||||
if (typeof encoding === 'function') {
|
|
||||||
callback = encoding
|
|
||||||
encoding = 'utf8'
|
|
||||||
}
|
|
||||||
|
|
||||||
const dir = path.dirname(file)
|
|
||||||
pathExists(dir, (err, itDoes) => {
|
|
||||||
if (err) return callback(err)
|
|
||||||
if (itDoes) return fs.writeFile(file, data, encoding, callback)
|
|
||||||
|
|
||||||
mkdir.mkdirs(dir, err => {
|
|
||||||
if (err) return callback(err)
|
|
||||||
|
|
||||||
fs.writeFile(file, data, encoding, callback)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function outputFileSync (file, ...args) {
|
|
||||||
const dir = path.dirname(file)
|
|
||||||
if (fs.existsSync(dir)) {
|
|
||||||
return fs.writeFileSync(file, ...args)
|
|
||||||
}
|
|
||||||
mkdir.mkdirsSync(dir)
|
|
||||||
fs.writeFileSync(file, ...args)
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
outputFile: u(outputFile),
|
|
||||||
outputFileSync
|
|
||||||
}
|
|
9
node_modules/fs-extra/lib/remove/index.js
generated
vendored
9
node_modules/fs-extra/lib/remove/index.js
generated
vendored
@ -2,18 +2,13 @@
|
|||||||
|
|
||||||
const fs = require('graceful-fs')
|
const fs = require('graceful-fs')
|
||||||
const u = require('universalify').fromCallback
|
const u = require('universalify').fromCallback
|
||||||
const rimraf = require('./rimraf')
|
|
||||||
|
|
||||||
function remove (path, callback) {
|
function remove (path, callback) {
|
||||||
// Node 14.14.0+
|
fs.rm(path, { recursive: true, force: true }, callback)
|
||||||
if (fs.rm) return fs.rm(path, { recursive: true, force: true }, callback)
|
|
||||||
rimraf(path, callback)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeSync (path) {
|
function removeSync (path) {
|
||||||
// Node 14.14.0+
|
fs.rmSync(path, { recursive: true, force: true })
|
||||||
if (fs.rmSync) return fs.rmSync(path, { recursive: true, force: true })
|
|
||||||
rimraf.sync(path)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
302
node_modules/fs-extra/lib/remove/rimraf.js
generated
vendored
302
node_modules/fs-extra/lib/remove/rimraf.js
generated
vendored
@ -1,302 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
const fs = require('graceful-fs')
|
|
||||||
const path = require('path')
|
|
||||||
const assert = require('assert')
|
|
||||||
|
|
||||||
const isWindows = (process.platform === 'win32')
|
|
||||||
|
|
||||||
function defaults (options) {
|
|
||||||
const methods = [
|
|
||||||
'unlink',
|
|
||||||
'chmod',
|
|
||||||
'stat',
|
|
||||||
'lstat',
|
|
||||||
'rmdir',
|
|
||||||
'readdir'
|
|
||||||
]
|
|
||||||
methods.forEach(m => {
|
|
||||||
options[m] = options[m] || fs[m]
|
|
||||||
m = m + 'Sync'
|
|
||||||
options[m] = options[m] || fs[m]
|
|
||||||
})
|
|
||||||
|
|
||||||
options.maxBusyTries = options.maxBusyTries || 3
|
|
||||||
}
|
|
||||||
|
|
||||||
function rimraf (p, options, cb) {
|
|
||||||
let busyTries = 0
|
|
||||||
|
|
||||||
if (typeof options === 'function') {
|
|
||||||
cb = options
|
|
||||||
options = {}
|
|
||||||
}
|
|
||||||
|
|
||||||
assert(p, 'rimraf: missing path')
|
|
||||||
assert.strictEqual(typeof p, 'string', 'rimraf: path should be a string')
|
|
||||||
assert.strictEqual(typeof cb, 'function', 'rimraf: callback function required')
|
|
||||||
assert(options, 'rimraf: invalid options argument provided')
|
|
||||||
assert.strictEqual(typeof options, 'object', 'rimraf: options should be object')
|
|
||||||
|
|
||||||
defaults(options)
|
|
||||||
|
|
||||||
rimraf_(p, options, function CB (er) {
|
|
||||||
if (er) {
|
|
||||||
if ((er.code === 'EBUSY' || er.code === 'ENOTEMPTY' || er.code === 'EPERM') &&
|
|
||||||
busyTries < options.maxBusyTries) {
|
|
||||||
busyTries++
|
|
||||||
const time = busyTries * 100
|
|
||||||
// try again, with the same exact callback as this one.
|
|
||||||
return setTimeout(() => rimraf_(p, options, CB), time)
|
|
||||||
}
|
|
||||||
|
|
||||||
// already gone
|
|
||||||
if (er.code === 'ENOENT') er = null
|
|
||||||
}
|
|
||||||
|
|
||||||
cb(er)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Two possible strategies.
|
|
||||||
// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR
|
|
||||||
// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR
|
|
||||||
//
|
|
||||||
// Both result in an extra syscall when you guess wrong. However, there
|
|
||||||
// are likely far more normal files in the world than directories. This
|
|
||||||
// is based on the assumption that a the average number of files per
|
|
||||||
// directory is >= 1.
|
|
||||||
//
|
|
||||||
// If anyone ever complains about this, then I guess the strategy could
|
|
||||||
// be made configurable somehow. But until then, YAGNI.
|
|
||||||
function rimraf_ (p, options, cb) {
|
|
||||||
assert(p)
|
|
||||||
assert(options)
|
|
||||||
assert(typeof cb === 'function')
|
|
||||||
|
|
||||||
// sunos lets the root user unlink directories, which is... weird.
|
|
||||||
// so we have to lstat here and make sure it's not a dir.
|
|
||||||
options.lstat(p, (er, st) => {
|
|
||||||
if (er && er.code === 'ENOENT') {
|
|
||||||
return cb(null)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Windows can EPERM on stat. Life is suffering.
|
|
||||||
if (er && er.code === 'EPERM' && isWindows) {
|
|
||||||
return fixWinEPERM(p, options, er, cb)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (st && st.isDirectory()) {
|
|
||||||
return rmdir(p, options, er, cb)
|
|
||||||
}
|
|
||||||
|
|
||||||
options.unlink(p, er => {
|
|
||||||
if (er) {
|
|
||||||
if (er.code === 'ENOENT') {
|
|
||||||
return cb(null)
|
|
||||||
}
|
|
||||||
if (er.code === 'EPERM') {
|
|
||||||
return (isWindows)
|
|
||||||
? fixWinEPERM(p, options, er, cb)
|
|
||||||
: rmdir(p, options, er, cb)
|
|
||||||
}
|
|
||||||
if (er.code === 'EISDIR') {
|
|
||||||
return rmdir(p, options, er, cb)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return cb(er)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function fixWinEPERM (p, options, er, cb) {
|
|
||||||
assert(p)
|
|
||||||
assert(options)
|
|
||||||
assert(typeof cb === 'function')
|
|
||||||
|
|
||||||
options.chmod(p, 0o666, er2 => {
|
|
||||||
if (er2) {
|
|
||||||
cb(er2.code === 'ENOENT' ? null : er)
|
|
||||||
} else {
|
|
||||||
options.stat(p, (er3, stats) => {
|
|
||||||
if (er3) {
|
|
||||||
cb(er3.code === 'ENOENT' ? null : er)
|
|
||||||
} else if (stats.isDirectory()) {
|
|
||||||
rmdir(p, options, er, cb)
|
|
||||||
} else {
|
|
||||||
options.unlink(p, cb)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function fixWinEPERMSync (p, options, er) {
|
|
||||||
let stats
|
|
||||||
|
|
||||||
assert(p)
|
|
||||||
assert(options)
|
|
||||||
|
|
||||||
try {
|
|
||||||
options.chmodSync(p, 0o666)
|
|
||||||
} catch (er2) {
|
|
||||||
if (er2.code === 'ENOENT') {
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
throw er
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
stats = options.statSync(p)
|
|
||||||
} catch (er3) {
|
|
||||||
if (er3.code === 'ENOENT') {
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
throw er
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stats.isDirectory()) {
|
|
||||||
rmdirSync(p, options, er)
|
|
||||||
} else {
|
|
||||||
options.unlinkSync(p)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function rmdir (p, options, originalEr, cb) {
|
|
||||||
assert(p)
|
|
||||||
assert(options)
|
|
||||||
assert(typeof cb === 'function')
|
|
||||||
|
|
||||||
// try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)
|
|
||||||
// if we guessed wrong, and it's not a directory, then
|
|
||||||
// raise the original error.
|
|
||||||
options.rmdir(p, er => {
|
|
||||||
if (er && (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM')) {
|
|
||||||
rmkids(p, options, cb)
|
|
||||||
} else if (er && er.code === 'ENOTDIR') {
|
|
||||||
cb(originalEr)
|
|
||||||
} else {
|
|
||||||
cb(er)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function rmkids (p, options, cb) {
|
|
||||||
assert(p)
|
|
||||||
assert(options)
|
|
||||||
assert(typeof cb === 'function')
|
|
||||||
|
|
||||||
options.readdir(p, (er, files) => {
|
|
||||||
if (er) return cb(er)
|
|
||||||
|
|
||||||
let n = files.length
|
|
||||||
let errState
|
|
||||||
|
|
||||||
if (n === 0) return options.rmdir(p, cb)
|
|
||||||
|
|
||||||
files.forEach(f => {
|
|
||||||
rimraf(path.join(p, f), options, er => {
|
|
||||||
if (errState) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (er) return cb(errState = er)
|
|
||||||
if (--n === 0) {
|
|
||||||
options.rmdir(p, cb)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// this looks simpler, and is strictly *faster*, but will
|
|
||||||
// tie up the JavaScript thread and fail on excessively
|
|
||||||
// deep directory trees.
|
|
||||||
function rimrafSync (p, options) {
|
|
||||||
let st
|
|
||||||
|
|
||||||
options = options || {}
|
|
||||||
defaults(options)
|
|
||||||
|
|
||||||
assert(p, 'rimraf: missing path')
|
|
||||||
assert.strictEqual(typeof p, 'string', 'rimraf: path should be a string')
|
|
||||||
assert(options, 'rimraf: missing options')
|
|
||||||
assert.strictEqual(typeof options, 'object', 'rimraf: options should be object')
|
|
||||||
|
|
||||||
try {
|
|
||||||
st = options.lstatSync(p)
|
|
||||||
} catch (er) {
|
|
||||||
if (er.code === 'ENOENT') {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Windows can EPERM on stat. Life is suffering.
|
|
||||||
if (er.code === 'EPERM' && isWindows) {
|
|
||||||
fixWinEPERMSync(p, options, er)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
// sunos lets the root user unlink directories, which is... weird.
|
|
||||||
if (st && st.isDirectory()) {
|
|
||||||
rmdirSync(p, options, null)
|
|
||||||
} else {
|
|
||||||
options.unlinkSync(p)
|
|
||||||
}
|
|
||||||
} catch (er) {
|
|
||||||
if (er.code === 'ENOENT') {
|
|
||||||
return
|
|
||||||
} else if (er.code === 'EPERM') {
|
|
||||||
return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)
|
|
||||||
} else if (er.code !== 'EISDIR') {
|
|
||||||
throw er
|
|
||||||
}
|
|
||||||
rmdirSync(p, options, er)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function rmdirSync (p, options, originalEr) {
|
|
||||||
assert(p)
|
|
||||||
assert(options)
|
|
||||||
|
|
||||||
try {
|
|
||||||
options.rmdirSync(p)
|
|
||||||
} catch (er) {
|
|
||||||
if (er.code === 'ENOTDIR') {
|
|
||||||
throw originalEr
|
|
||||||
} else if (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM') {
|
|
||||||
rmkidsSync(p, options)
|
|
||||||
} else if (er.code !== 'ENOENT') {
|
|
||||||
throw er
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function rmkidsSync (p, options) {
|
|
||||||
assert(p)
|
|
||||||
assert(options)
|
|
||||||
options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))
|
|
||||||
|
|
||||||
if (isWindows) {
|
|
||||||
// We only end up here once we got ENOTEMPTY at least once, and
|
|
||||||
// at this point, we are guaranteed to have removed all the kids.
|
|
||||||
// So, we know that it won't be ENOENT or ENOTDIR or anything else.
|
|
||||||
// try really hard to delete stuff on windows, because it has a
|
|
||||||
// PROFOUNDLY annoying habit of not closing handles promptly when
|
|
||||||
// files are deleted, resulting in spurious ENOTEMPTY errors.
|
|
||||||
const startTime = Date.now()
|
|
||||||
do {
|
|
||||||
try {
|
|
||||||
const ret = options.rmdirSync(p, options)
|
|
||||||
return ret
|
|
||||||
} catch {}
|
|
||||||
} while (Date.now() - startTime < 500) // give up after 500ms
|
|
||||||
} else {
|
|
||||||
const ret = options.rmdirSync(p, options)
|
|
||||||
return ret
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = rimraf
|
|
||||||
rimraf.sync = rimrafSync
|
|
25
node_modules/fs-extra/package.json
generated
vendored
25
node_modules/fs-extra/package.json
generated
vendored
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"name": "fs-extra",
|
"name": "fs-extra",
|
||||||
"version": "10.0.0",
|
"version": "11.1.1",
|
||||||
"description": "fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as recursive mkdir, copy, and remove.",
|
"description": "fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as recursive mkdir, copy, and remove.",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=14.14"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/jprichardson/node-fs-extra",
|
"homepage": "https://github.com/jprichardson/node-fs-extra",
|
||||||
"repository": {
|
"repository": {
|
||||||
@ -42,29 +42,30 @@
|
|||||||
"universalify": "^2.0.0"
|
"universalify": "^2.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"at-least-node": "^1.0.0",
|
|
||||||
"coveralls": "^3.0.0",
|
|
||||||
"klaw": "^2.1.1",
|
"klaw": "^2.1.1",
|
||||||
"klaw-sync": "^3.0.2",
|
"klaw-sync": "^3.0.2",
|
||||||
"minimist": "^1.1.1",
|
"minimist": "^1.1.1",
|
||||||
"mocha": "^5.0.5",
|
"mocha": "^10.1.0",
|
||||||
"nyc": "^15.0.0",
|
"nyc": "^15.0.0",
|
||||||
"proxyquire": "^2.0.1",
|
"proxyquire": "^2.0.1",
|
||||||
"read-dir-files": "^0.1.1",
|
"read-dir-files": "^0.1.1",
|
||||||
"standard": "^14.1.0"
|
"standard": "^17.0.0"
|
||||||
},
|
},
|
||||||
"main": "./lib/index.js",
|
"main": "./lib/index.js",
|
||||||
|
"exports": {
|
||||||
|
".": "./lib/index.js",
|
||||||
|
"./esm": "./lib/esm.mjs"
|
||||||
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"lib/",
|
"lib/",
|
||||||
"!lib/**/__tests__/"
|
"!lib/**/__tests__/"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"full-ci": "npm run lint && npm run coverage",
|
|
||||||
"coverage": "nyc -r lcovonly npm run unit",
|
|
||||||
"coveralls": "coveralls < coverage/lcov.info",
|
|
||||||
"lint": "standard",
|
"lint": "standard",
|
||||||
"test-find": "find ./lib/**/__tests__ -name *.test.js | xargs mocha",
|
"test-find": "find ./lib/**/__tests__ -name *.test.js | xargs mocha",
|
||||||
"test": "npm run lint && npm run unit",
|
"test": "npm run lint && npm run unit && npm run unit-esm",
|
||||||
"unit": "node test.js"
|
"unit": "nyc node test.js",
|
||||||
}
|
"unit-esm": "node test.mjs"
|
||||||
|
},
|
||||||
|
"sideEffects": false
|
||||||
}
|
}
|
||||||
|
108
node_modules/globby/gitignore.js
generated
vendored
108
node_modules/globby/gitignore.js
generated
vendored
@ -1,108 +0,0 @@
|
|||||||
import process from 'node:process';
|
|
||||||
import fs from 'node:fs';
|
|
||||||
import path from 'node:path';
|
|
||||||
import fastGlob from 'fast-glob';
|
|
||||||
import gitIgnore from 'ignore';
|
|
||||||
import slash from 'slash';
|
|
||||||
import toPath from './to-path.js';
|
|
||||||
|
|
||||||
const DEFAULT_IGNORE = [
|
|
||||||
'**/node_modules/**',
|
|
||||||
'**/flow-typed/**',
|
|
||||||
'**/coverage/**',
|
|
||||||
'**/.git',
|
|
||||||
];
|
|
||||||
|
|
||||||
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 = slash(path.relative(options.cwd, path.dirname(options.fileName)));
|
|
||||||
|
|
||||||
return content
|
|
||||||
.split(/\r?\n/)
|
|
||||||
.filter(Boolean)
|
|
||||||
.filter(line => !line.startsWith('#'))
|
|
||||||
.map(mapGitIgnorePatternTo(base));
|
|
||||||
};
|
|
||||||
|
|
||||||
const reduceIgnore = files => {
|
|
||||||
const ignores = gitIgnore();
|
|
||||||
for (const file of files) {
|
|
||||||
ignores.add(parseGitIgnore(file.content, {
|
|
||||||
cwd: file.cwd,
|
|
||||||
fileName: file.filePath,
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
return ignores;
|
|
||||||
};
|
|
||||||
|
|
||||||
const ensureAbsolutePathForCwd = (cwd, p) => {
|
|
||||||
cwd = slash(cwd);
|
|
||||||
if (path.isAbsolute(p)) {
|
|
||||||
if (slash(p).startsWith(cwd)) {
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new Error(`Path ${p} is not in cwd ${cwd}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
return path.join(cwd, p);
|
|
||||||
};
|
|
||||||
|
|
||||||
const getIsIgnoredPredicate = (ignores, cwd) => p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, toPath(p.path || p)))));
|
|
||||||
|
|
||||||
const getFile = async (file, cwd) => {
|
|
||||||
const filePath = path.join(cwd, file);
|
|
||||||
const content = await fs.promises.readFile(filePath, 'utf8');
|
|
||||||
|
|
||||||
return {
|
|
||||||
cwd,
|
|
||||||
filePath,
|
|
||||||
content,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
const getFileSync = (file, cwd) => {
|
|
||||||
const filePath = path.join(cwd, file);
|
|
||||||
const content = fs.readFileSync(filePath, 'utf8');
|
|
||||||
|
|
||||||
return {
|
|
||||||
cwd,
|
|
||||||
filePath,
|
|
||||||
content,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
const normalizeOptions = ({
|
|
||||||
ignore = [],
|
|
||||||
cwd = slash(process.cwd()),
|
|
||||||
} = {}) => ({ignore: [...DEFAULT_IGNORE, ...ignore], cwd: toPath(cwd)});
|
|
||||||
|
|
||||||
export const isGitIgnored = async options => {
|
|
||||||
options = normalizeOptions(options);
|
|
||||||
|
|
||||||
const paths = await fastGlob('**/.gitignore', options);
|
|
||||||
|
|
||||||
const files = await Promise.all(paths.map(file => getFile(file, options.cwd)));
|
|
||||||
const ignores = reduceIgnore(files);
|
|
||||||
|
|
||||||
return getIsIgnoredPredicate(ignores, options.cwd);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const isGitIgnoredSync = options => {
|
|
||||||
options = normalizeOptions(options);
|
|
||||||
|
|
||||||
const paths = fastGlob.sync('**/.gitignore', options);
|
|
||||||
|
|
||||||
const files = paths.map(file => getFileSync(file, options.cwd));
|
|
||||||
const ignores = reduceIgnore(files);
|
|
||||||
|
|
||||||
return getIsIgnoredPredicate(ignores, options.cwd);
|
|
||||||
};
|
|
23
node_modules/globby/index.d.ts
generated
vendored
23
node_modules/globby/index.d.ts
generated
vendored
@ -1,10 +1,9 @@
|
|||||||
import {URL} from 'node:url'; // TODO: Remove this when https://github.com/DefinitelyTyped/DefinitelyTyped/issues/34960 is fixed.
|
|
||||||
import {Options as FastGlobOptions, Entry} from 'fast-glob';
|
import {Options as FastGlobOptions, Entry} from 'fast-glob';
|
||||||
|
|
||||||
export type GlobEntry = Entry;
|
export type GlobEntry = Entry;
|
||||||
|
|
||||||
export interface GlobTask {
|
export interface GlobTask {
|
||||||
readonly pattern: string;
|
readonly patterns: string[];
|
||||||
readonly options: Options;
|
readonly options: Options;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,6 +46,15 @@ export interface Options extends FastGlobOptionsWithoutCwd {
|
|||||||
*/
|
*/
|
||||||
readonly gitignore?: boolean;
|
readonly gitignore?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Glob patterns to look for ignore files, which are then used to ignore globbed files.
|
||||||
|
|
||||||
|
This is a more generic form of the `gitignore` option, allowing you to find ignore files with a [compatible syntax](http://git-scm.com/docs/gitignore). For instance, this works with Babel's `.babelignore`, Prettier's `.prettierignore`, or ESLint's `.eslintignore` files.
|
||||||
|
|
||||||
|
@default undefined
|
||||||
|
*/
|
||||||
|
readonly ignoreFiles?: string | readonly string[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The current working directory in which to search.
|
The current working directory in which to search.
|
||||||
|
|
||||||
@ -57,7 +65,6 @@ export interface Options extends FastGlobOptionsWithoutCwd {
|
|||||||
|
|
||||||
export interface GitignoreOptions {
|
export interface GitignoreOptions {
|
||||||
readonly cwd?: URL | string;
|
readonly cwd?: URL | string;
|
||||||
readonly ignore?: readonly string[];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export type GlobbyFilterFunction = (path: URL | string) => boolean;
|
export type GlobbyFilterFunction = (path: URL | string) => boolean;
|
||||||
@ -141,6 +148,16 @@ Note that you should avoid running the same tasks multiple times as they contain
|
|||||||
export function generateGlobTasks(
|
export function generateGlobTasks(
|
||||||
patterns: string | readonly string[],
|
patterns: string | readonly string[],
|
||||||
options?: Options
|
options?: Options
|
||||||
|
): Promise<GlobTask[]>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
@see generateGlobTasks
|
||||||
|
|
||||||
|
@returns An object in the format `{pattern: string, options: object}`, which can be passed as arguments to [`fast-glob`](https://github.com/mrmlnc/fast-glob). This is useful for other globbing-related packages.
|
||||||
|
*/
|
||||||
|
export function generateGlobTasksSync(
|
||||||
|
patterns: string | readonly string[],
|
||||||
|
options?: Options
|
||||||
): GlobTask[];
|
): GlobTask[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
348
node_modules/globby/index.js
generated
vendored
348
node_modules/globby/index.js
generated
vendored
@ -1,22 +1,27 @@
|
|||||||
import fs from 'node:fs';
|
import fs from 'node:fs';
|
||||||
import arrayUnion from 'array-union';
|
import nodePath from 'node:path';
|
||||||
import merge2 from 'merge2';
|
import merge2 from 'merge2';
|
||||||
import fastGlob from 'fast-glob';
|
import fastGlob from 'fast-glob';
|
||||||
import dirGlob from 'dir-glob';
|
import dirGlob from 'dir-glob';
|
||||||
import toPath from './to-path.js';
|
import {
|
||||||
import {isGitIgnored, isGitIgnoredSync} from './gitignore.js';
|
GITIGNORE_FILES_PATTERN,
|
||||||
import {FilterStream, UniqueStream} from './stream-utils.js';
|
isIgnoredByIgnoreFiles,
|
||||||
|
isIgnoredByIgnoreFilesSync,
|
||||||
const DEFAULT_FILTER = () => false;
|
} from './ignore.js';
|
||||||
|
import {FilterStream, toPath, isNegativePattern} from './utilities.js';
|
||||||
const isNegative = pattern => pattern[0] === '!';
|
|
||||||
|
|
||||||
const assertPatternsInput = patterns => {
|
const assertPatternsInput = patterns => {
|
||||||
if (!patterns.every(pattern => typeof pattern === 'string')) {
|
if (patterns.some(pattern => typeof pattern !== 'string')) {
|
||||||
throw new TypeError('Patterns must be a string or an array of strings');
|
throw new TypeError('Patterns must be a string or an array of strings');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const toPatternsArray = patterns => {
|
||||||
|
patterns = [...new Set([patterns].flat())];
|
||||||
|
assertPatternsInput(patterns);
|
||||||
|
return patterns;
|
||||||
|
};
|
||||||
|
|
||||||
const checkCwdOption = options => {
|
const checkCwdOption = options => {
|
||||||
if (!options.cwd) {
|
if (!options.cwd) {
|
||||||
return;
|
return;
|
||||||
@ -34,164 +39,189 @@ const checkCwdOption = options => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const getPathString = p => p.stats instanceof fs.Stats ? p.path : p;
|
const normalizeOptions = (options = {}) => {
|
||||||
|
options = {
|
||||||
export const generateGlobTasks = (patterns, taskOptions = {}) => {
|
|
||||||
patterns = arrayUnion([patterns].flat());
|
|
||||||
assertPatternsInput(patterns);
|
|
||||||
|
|
||||||
const globTasks = [];
|
|
||||||
|
|
||||||
taskOptions = {
|
|
||||||
ignore: [],
|
ignore: [],
|
||||||
expandDirectories: true,
|
expandDirectories: true,
|
||||||
...taskOptions,
|
|
||||||
cwd: toPath(taskOptions.cwd),
|
|
||||||
};
|
|
||||||
|
|
||||||
checkCwdOption(taskOptions);
|
|
||||||
|
|
||||||
for (const [index, pattern] of patterns.entries()) {
|
|
||||||
if (isNegative(pattern)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const ignore = patterns
|
|
||||||
.slice(index)
|
|
||||||
.filter(pattern => isNegative(pattern))
|
|
||||||
.map(pattern => pattern.slice(1));
|
|
||||||
|
|
||||||
const options = {
|
|
||||||
...taskOptions,
|
|
||||||
ignore: [...taskOptions.ignore, ...ignore],
|
|
||||||
};
|
|
||||||
|
|
||||||
globTasks.push({pattern, options});
|
|
||||||
}
|
|
||||||
|
|
||||||
return globTasks;
|
|
||||||
};
|
|
||||||
|
|
||||||
const globDirectories = (task, fn) => {
|
|
||||||
let options = {};
|
|
||||||
if (task.options.cwd) {
|
|
||||||
options.cwd = task.options.cwd;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Array.isArray(task.options.expandDirectories)) {
|
|
||||||
options = {
|
|
||||||
...options,
|
|
||||||
files: task.options.expandDirectories,
|
|
||||||
};
|
|
||||||
} else if (typeof task.options.expandDirectories === 'object') {
|
|
||||||
options = {
|
|
||||||
...options,
|
|
||||||
...task.options.expandDirectories,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return fn(task.pattern, options);
|
|
||||||
};
|
|
||||||
|
|
||||||
const getPattern = (task, fn) => task.options.expandDirectories ? globDirectories(task, fn) : [task.pattern];
|
|
||||||
|
|
||||||
const getFilterSync = options => options && options.gitignore
|
|
||||||
? isGitIgnoredSync({cwd: options.cwd, ignore: options.ignore})
|
|
||||||
: DEFAULT_FILTER;
|
|
||||||
|
|
||||||
const globToTask = task => async glob => {
|
|
||||||
const {options} = task;
|
|
||||||
if (options.ignore && Array.isArray(options.ignore) && options.expandDirectories) {
|
|
||||||
options.ignore = await dirGlob(options.ignore);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
pattern: glob,
|
|
||||||
options,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
const globToTaskSync = task => glob => {
|
|
||||||
const {options} = task;
|
|
||||||
if (options.ignore && Array.isArray(options.ignore) && options.expandDirectories) {
|
|
||||||
options.ignore = dirGlob.sync(options.ignore);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
pattern: glob,
|
|
||||||
options,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export const globby = async (patterns, options) => {
|
|
||||||
const globTasks = generateGlobTasks(patterns, options);
|
|
||||||
|
|
||||||
const getFilter = async () => options && options.gitignore
|
|
||||||
? isGitIgnored({cwd: options.cwd, ignore: options.ignore})
|
|
||||||
: DEFAULT_FILTER;
|
|
||||||
|
|
||||||
const getTasks = async () => {
|
|
||||||
const tasks = await Promise.all(globTasks.map(async task => {
|
|
||||||
const globs = await getPattern(task, dirGlob);
|
|
||||||
return Promise.all(globs.map(globToTask(task)));
|
|
||||||
}));
|
|
||||||
|
|
||||||
return arrayUnion(...tasks);
|
|
||||||
};
|
|
||||||
|
|
||||||
const [filter, tasks] = await Promise.all([getFilter(), getTasks()]);
|
|
||||||
const paths = await Promise.all(tasks.map(task => fastGlob(task.pattern, task.options)));
|
|
||||||
|
|
||||||
return arrayUnion(...paths).filter(path_ => !filter(getPathString(path_)));
|
|
||||||
};
|
|
||||||
|
|
||||||
export const globbySync = (patterns, options) => {
|
|
||||||
const globTasks = generateGlobTasks(patterns, options);
|
|
||||||
|
|
||||||
const tasks = [];
|
|
||||||
for (const task of globTasks) {
|
|
||||||
const newTask = getPattern(task, dirGlob.sync).map(globToTaskSync(task));
|
|
||||||
tasks.push(...newTask);
|
|
||||||
}
|
|
||||||
|
|
||||||
const filter = getFilterSync(options);
|
|
||||||
|
|
||||||
let matches = [];
|
|
||||||
for (const task of tasks) {
|
|
||||||
matches = arrayUnion(matches, fastGlob.sync(task.pattern, task.options));
|
|
||||||
}
|
|
||||||
|
|
||||||
return matches.filter(path_ => !filter(path_));
|
|
||||||
};
|
|
||||||
|
|
||||||
export const globbyStream = (patterns, options) => {
|
|
||||||
const globTasks = generateGlobTasks(patterns, options);
|
|
||||||
|
|
||||||
const tasks = [];
|
|
||||||
for (const task of globTasks) {
|
|
||||||
const newTask = getPattern(task, dirGlob.sync).map(globToTaskSync(task));
|
|
||||||
tasks.push(...newTask);
|
|
||||||
}
|
|
||||||
|
|
||||||
const filter = getFilterSync(options);
|
|
||||||
const filterStream = new FilterStream(p => !filter(p));
|
|
||||||
const uniqueStream = new UniqueStream();
|
|
||||||
|
|
||||||
return merge2(tasks.map(task => fastGlob.stream(task.pattern, task.options)))
|
|
||||||
.pipe(filterStream)
|
|
||||||
.pipe(uniqueStream);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const isDynamicPattern = (patterns, options = {}) => {
|
|
||||||
options = {
|
|
||||||
...options,
|
...options,
|
||||||
cwd: toPath(options.cwd),
|
cwd: toPath(options.cwd),
|
||||||
};
|
};
|
||||||
|
|
||||||
return [patterns].flat().some(pattern => fastGlob.isDynamicPattern(pattern, options));
|
checkCwdOption(options);
|
||||||
|
|
||||||
|
return options;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const normalizeArguments = fn => async (patterns, options) => fn(toPatternsArray(patterns), normalizeOptions(options));
|
||||||
|
const normalizeArgumentsSync = fn => (patterns, options) => fn(toPatternsArray(patterns), normalizeOptions(options));
|
||||||
|
|
||||||
|
const getIgnoreFilesPatterns = options => {
|
||||||
|
const {ignoreFiles, gitignore} = options;
|
||||||
|
|
||||||
|
const patterns = ignoreFiles ? toPatternsArray(ignoreFiles) : [];
|
||||||
|
if (gitignore) {
|
||||||
|
patterns.push(GITIGNORE_FILES_PATTERN);
|
||||||
|
}
|
||||||
|
|
||||||
|
return patterns;
|
||||||
|
};
|
||||||
|
|
||||||
|
const getFilter = async options => {
|
||||||
|
const ignoreFilesPatterns = getIgnoreFilesPatterns(options);
|
||||||
|
return createFilterFunction(
|
||||||
|
ignoreFilesPatterns.length > 0 && await isIgnoredByIgnoreFiles(ignoreFilesPatterns, options),
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const getFilterSync = options => {
|
||||||
|
const ignoreFilesPatterns = getIgnoreFilesPatterns(options);
|
||||||
|
return createFilterFunction(
|
||||||
|
ignoreFilesPatterns.length > 0 && isIgnoredByIgnoreFilesSync(ignoreFilesPatterns, options),
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const createFilterFunction = isIgnored => {
|
||||||
|
const seen = new Set();
|
||||||
|
|
||||||
|
return fastGlobResult => {
|
||||||
|
const path = fastGlobResult.path || fastGlobResult;
|
||||||
|
const pathKey = nodePath.normalize(path);
|
||||||
|
const seenOrIgnored = seen.has(pathKey) || (isIgnored && isIgnored(path));
|
||||||
|
seen.add(pathKey);
|
||||||
|
return !seenOrIgnored;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const unionFastGlobResults = (results, filter) => results.flat().filter(fastGlobResult => filter(fastGlobResult));
|
||||||
|
const unionFastGlobStreams = (streams, filter) => merge2(streams).pipe(new FilterStream(fastGlobResult => filter(fastGlobResult)));
|
||||||
|
|
||||||
|
const convertNegativePatterns = (patterns, options) => {
|
||||||
|
const tasks = [];
|
||||||
|
|
||||||
|
while (patterns.length > 0) {
|
||||||
|
const index = patterns.findIndex(pattern => isNegativePattern(pattern));
|
||||||
|
|
||||||
|
if (index === -1) {
|
||||||
|
tasks.push({patterns, options});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
const ignorePattern = patterns[index].slice(1);
|
||||||
|
|
||||||
|
for (const task of tasks) {
|
||||||
|
task.options.ignore.push(ignorePattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (index !== 0) {
|
||||||
|
tasks.push({
|
||||||
|
patterns: patterns.slice(0, index),
|
||||||
|
options: {
|
||||||
|
...options,
|
||||||
|
ignore: [
|
||||||
|
...options.ignore,
|
||||||
|
ignorePattern,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
patterns = patterns.slice(index + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return tasks;
|
||||||
|
};
|
||||||
|
|
||||||
|
const getDirGlobOptions = (options, cwd) => ({
|
||||||
|
...(cwd ? {cwd} : {}),
|
||||||
|
...(Array.isArray(options) ? {files: options} : options),
|
||||||
|
});
|
||||||
|
|
||||||
|
const generateTasks = async (patterns, options) => {
|
||||||
|
const globTasks = convertNegativePatterns(patterns, options);
|
||||||
|
|
||||||
|
const {cwd, expandDirectories} = options;
|
||||||
|
|
||||||
|
if (!expandDirectories) {
|
||||||
|
return globTasks;
|
||||||
|
}
|
||||||
|
|
||||||
|
const patternExpandOptions = getDirGlobOptions(expandDirectories, cwd);
|
||||||
|
const ignoreExpandOptions = cwd ? {cwd} : undefined;
|
||||||
|
|
||||||
|
return Promise.all(
|
||||||
|
globTasks.map(async task => {
|
||||||
|
let {patterns, options} = task;
|
||||||
|
|
||||||
|
[
|
||||||
|
patterns,
|
||||||
|
options.ignore,
|
||||||
|
] = await Promise.all([
|
||||||
|
dirGlob(patterns, patternExpandOptions),
|
||||||
|
dirGlob(options.ignore, ignoreExpandOptions),
|
||||||
|
]);
|
||||||
|
|
||||||
|
return {patterns, options};
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const generateTasksSync = (patterns, options) => {
|
||||||
|
const globTasks = convertNegativePatterns(patterns, options);
|
||||||
|
|
||||||
|
const {cwd, expandDirectories} = options;
|
||||||
|
|
||||||
|
if (!expandDirectories) {
|
||||||
|
return globTasks;
|
||||||
|
}
|
||||||
|
|
||||||
|
const patternExpandOptions = getDirGlobOptions(expandDirectories, cwd);
|
||||||
|
const ignoreExpandOptions = cwd ? {cwd} : undefined;
|
||||||
|
|
||||||
|
return globTasks.map(task => {
|
||||||
|
let {patterns, options} = task;
|
||||||
|
patterns = dirGlob.sync(patterns, patternExpandOptions);
|
||||||
|
options.ignore = dirGlob.sync(options.ignore, ignoreExpandOptions);
|
||||||
|
return {patterns, options};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const globby = normalizeArguments(async (patterns, options) => {
|
||||||
|
const [
|
||||||
|
tasks,
|
||||||
|
filter,
|
||||||
|
] = await Promise.all([
|
||||||
|
generateTasks(patterns, options),
|
||||||
|
getFilter(options),
|
||||||
|
]);
|
||||||
|
const results = await Promise.all(tasks.map(task => fastGlob(task.patterns, task.options)));
|
||||||
|
|
||||||
|
return unionFastGlobResults(results, filter);
|
||||||
|
});
|
||||||
|
|
||||||
|
export const globbySync = normalizeArgumentsSync((patterns, options) => {
|
||||||
|
const tasks = generateTasksSync(patterns, options);
|
||||||
|
const filter = getFilterSync(options);
|
||||||
|
const results = tasks.map(task => fastGlob.sync(task.patterns, task.options));
|
||||||
|
|
||||||
|
return unionFastGlobResults(results, filter);
|
||||||
|
});
|
||||||
|
|
||||||
|
export const globbyStream = normalizeArgumentsSync((patterns, options) => {
|
||||||
|
const tasks = generateTasksSync(patterns, options);
|
||||||
|
const filter = getFilterSync(options);
|
||||||
|
const streams = tasks.map(task => fastGlob.stream(task.patterns, task.options));
|
||||||
|
|
||||||
|
return unionFastGlobStreams(streams, filter);
|
||||||
|
});
|
||||||
|
|
||||||
|
export const isDynamicPattern = normalizeArgumentsSync(
|
||||||
|
(patterns, options) => patterns.some(pattern => fastGlob.isDynamicPattern(pattern, options)),
|
||||||
|
);
|
||||||
|
|
||||||
|
export const generateGlobTasks = normalizeArguments(generateTasks);
|
||||||
|
export const generateGlobTasksSync = normalizeArgumentsSync(generateTasksSync);
|
||||||
|
|
||||||
export {
|
export {
|
||||||
isGitIgnored,
|
isGitIgnored,
|
||||||
isGitIgnoredSync,
|
isGitIgnoredSync,
|
||||||
} from './gitignore.js';
|
} from './ignore.js';
|
||||||
|
33
node_modules/globby/package.json
generated
vendored
33
node_modules/globby/package.json
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "globby",
|
"name": "globby",
|
||||||
"version": "12.2.0",
|
"version": "13.1.4",
|
||||||
"description": "User-friendly glob matching",
|
"description": "User-friendly glob matching",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": "sindresorhus/globby",
|
"repository": "sindresorhus/globby",
|
||||||
@ -16,15 +16,14 @@
|
|||||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"bench": "npm update glob-stream fast-glob && matcha bench.js",
|
"bench": "npm update @globby/main-branch glob-stream fast-glob && node bench.js",
|
||||||
"test": "xo && ava && tsd"
|
"test": "xo && ava && tsd"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"index.js",
|
"index.js",
|
||||||
"index.d.ts",
|
"index.d.ts",
|
||||||
"gitignore.js",
|
"ignore.js",
|
||||||
"stream-utils.js",
|
"utilities.js"
|
||||||
"to-path.js"
|
|
||||||
],
|
],
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"all",
|
"all",
|
||||||
@ -60,28 +59,34 @@
|
|||||||
"git"
|
"git"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"array-union": "^3.0.1",
|
|
||||||
"dir-glob": "^3.0.1",
|
"dir-glob": "^3.0.1",
|
||||||
"fast-glob": "^3.2.7",
|
"fast-glob": "^3.2.11",
|
||||||
"ignore": "^5.1.9",
|
"ignore": "^5.2.0",
|
||||||
"merge2": "^1.4.1",
|
"merge2": "^1.4.1",
|
||||||
"slash": "^4.0.0"
|
"slash": "^4.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^16.11.11",
|
"@globby/main-branch": "sindresorhus/globby#main",
|
||||||
"ava": "^3.15.0",
|
"@types/node": "^17.0.18",
|
||||||
|
"ava": "^4.0.1",
|
||||||
|
"benchmark": "2.1.4",
|
||||||
"get-stream": "^6.0.1",
|
"get-stream": "^6.0.1",
|
||||||
"glob-stream": "^7.0.0",
|
"glob-stream": "^7.0.0",
|
||||||
"globby": "sindresorhus/globby#main",
|
|
||||||
"matcha": "^0.7.0",
|
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"tsd": "^0.19.0",
|
"tempy": "^3.0.0",
|
||||||
"typescript": "^4.5.2",
|
"tsd": "^0.19.1",
|
||||||
|
"typescript": "^4.5.5",
|
||||||
"xo": "^0.47.0"
|
"xo": "^0.47.0"
|
||||||
},
|
},
|
||||||
"xo": {
|
"xo": {
|
||||||
"ignores": [
|
"ignores": [
|
||||||
"fixtures"
|
"fixtures"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"ava": {
|
||||||
|
"files": [
|
||||||
|
"!tests/utilities.js"
|
||||||
|
],
|
||||||
|
"workerThreads": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
23
node_modules/globby/readme.md
generated
vendored
23
node_modules/globby/readme.md
generated
vendored
@ -10,7 +10,7 @@ Based on [`fast-glob`](https://github.com/mrmlnc/fast-glob) but adds a bunch of
|
|||||||
- Multiple patterns
|
- Multiple patterns
|
||||||
- Negated patterns: `['foo*', '!foobar']`
|
- Negated patterns: `['foo*', '!foobar']`
|
||||||
- Expands directories: `foo` → `foo/**/*`
|
- Expands directories: `foo` → `foo/**/*`
|
||||||
- Supports `.gitignore`
|
- Supports `.gitignore` and similar ignore config files
|
||||||
- Supports `URL` as `cwd`
|
- Supports `URL` as `cwd`
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
@ -88,6 +88,15 @@ Default: `false`
|
|||||||
|
|
||||||
Respect ignore patterns in `.gitignore` files that apply to the globbed files.
|
Respect ignore patterns in `.gitignore` files that apply to the globbed files.
|
||||||
|
|
||||||
|
##### ignoreFiles
|
||||||
|
|
||||||
|
Type: `string | string[]`\
|
||||||
|
Default: `undefined`
|
||||||
|
|
||||||
|
Glob patterns to look for ignore files, which are then used to ignore globbed files.
|
||||||
|
|
||||||
|
This is a more generic form of the `gitignore` option, allowing you to find ignore files with a [compatible syntax](http://git-scm.com/docs/gitignore). For instance, this works with Babel's `.babelignore`, Prettier's `.prettierignore`, or ESLint's `.eslintignore` files.
|
||||||
|
|
||||||
### globbySync(patterns, options?)
|
### globbySync(patterns, options?)
|
||||||
|
|
||||||
Returns `string[]` of matching paths.
|
Returns `string[]` of matching paths.
|
||||||
@ -110,10 +119,16 @@ import {globbyStream} from 'globby';
|
|||||||
|
|
||||||
### generateGlobTasks(patterns, options?)
|
### generateGlobTasks(patterns, options?)
|
||||||
|
|
||||||
Returns an `object[]` in the format `{pattern: string, options: Object}`, which can be passed as arguments to [`fast-glob`](https://github.com/mrmlnc/fast-glob). This is useful for other globbing-related packages.
|
Returns an `Promise<object[]>` in the format `{patterns: string[], options: Object}`, which can be passed as arguments to [`fast-glob`](https://github.com/mrmlnc/fast-glob). This is useful for other globbing-related packages.
|
||||||
|
|
||||||
Note that you should avoid running the same tasks multiple times as they contain a file system cache. Instead, run this method each time to ensure file system changes are taken into consideration.
|
Note that you should avoid running the same tasks multiple times as they contain a file system cache. Instead, run this method each time to ensure file system changes are taken into consideration.
|
||||||
|
|
||||||
|
### generateGlobTasksSync(patterns, options?)
|
||||||
|
|
||||||
|
Returns an `object[]` in the format `{patterns: string[], options: Object}`, which can be passed as arguments to [`fast-glob`](https://github.com/mrmlnc/fast-glob). This is useful for other globbing-related packages.
|
||||||
|
|
||||||
|
Takes the same arguments as `generateGlobTasks`.
|
||||||
|
|
||||||
### isDynamicPattern(patterns, options?)
|
### isDynamicPattern(patterns, options?)
|
||||||
|
|
||||||
Returns a `boolean` of whether there are any special glob characters in the `patterns`.
|
Returns a `boolean` of whether there are any special glob characters in the `patterns`.
|
||||||
@ -126,7 +141,7 @@ This function is backed by [`fast-glob`](https://github.com/mrmlnc/fast-glob#isd
|
|||||||
|
|
||||||
Returns a `Promise<(path: URL | string) => boolean>` indicating whether a given path is ignored via a `.gitignore` file.
|
Returns a `Promise<(path: URL | string) => boolean>` indicating whether a given path is ignored via a `.gitignore` file.
|
||||||
|
|
||||||
Takes `cwd?: URL | string` and `ignore?: string[]` as options. `.gitignore` files matched by the ignore config are not used for the resulting filter function.
|
Takes `cwd?: URL | string` as options.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
import {isGitIgnored} from 'globby';
|
import {isGitIgnored} from 'globby';
|
||||||
@ -140,7 +155,7 @@ console.log(isIgnored('some/file'));
|
|||||||
|
|
||||||
Returns a `(path: URL | string) => boolean` indicating whether a given path is ignored via a `.gitignore` file.
|
Returns a `(path: URL | string) => boolean` indicating whether a given path is ignored via a `.gitignore` file.
|
||||||
|
|
||||||
Takes the same options as `isGitIgnored`.
|
Takes `cwd?: URL | string` as options.
|
||||||
|
|
||||||
## Globbing patterns
|
## Globbing patterns
|
||||||
|
|
||||||
|
40
node_modules/globby/stream-utils.js
generated
vendored
40
node_modules/globby/stream-utils.js
generated
vendored
@ -1,40 +0,0 @@
|
|||||||
import {Transform} from 'node:stream';
|
|
||||||
|
|
||||||
class ObjectTransform extends Transform {
|
|
||||||
constructor() {
|
|
||||||
super({
|
|
||||||
objectMode: true,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class FilterStream extends ObjectTransform {
|
|
||||||
constructor(filter) {
|
|
||||||
super();
|
|
||||||
this._filter = filter;
|
|
||||||
}
|
|
||||||
|
|
||||||
_transform(data, encoding, callback) {
|
|
||||||
if (this._filter(data)) {
|
|
||||||
this.push(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class UniqueStream extends ObjectTransform {
|
|
||||||
constructor() {
|
|
||||||
super();
|
|
||||||
this._pushed = new Set();
|
|
||||||
}
|
|
||||||
|
|
||||||
_transform(data, encoding, callback) {
|
|
||||||
if (!this._pushed.has(data)) {
|
|
||||||
this.push(data);
|
|
||||||
this._pushed.add(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
}
|
|
15
node_modules/globby/to-path.js
generated
vendored
15
node_modules/globby/to-path.js
generated
vendored
@ -1,15 +0,0 @@
|
|||||||
import {fileURLToPath} from 'node:url';
|
|
||||||
|
|
||||||
const toPath = urlOrPath => {
|
|
||||||
if (!urlOrPath) {
|
|
||||||
return urlOrPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (urlOrPath instanceof URL) {
|
|
||||||
urlOrPath = urlOrPath.href;
|
|
||||||
}
|
|
||||||
|
|
||||||
return urlOrPath.startsWith('file://') ? fileURLToPath(urlOrPath) : urlOrPath;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default toPath;
|
|
2
node_modules/graceful-fs/LICENSE
generated
vendored
2
node_modules/graceful-fs/LICENSE
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
The ISC License
|
The ISC License
|
||||||
|
|
||||||
Copyright (c) Isaac Z. Schlueter, Ben Noordhuis, and Contributors
|
Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contributors
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
27
node_modules/graceful-fs/graceful-fs.js
generated
vendored
27
node_modules/graceful-fs/graceful-fs.js
generated
vendored
@ -191,16 +191,35 @@ function patch (fs) {
|
|||||||
|
|
||||||
var fs$readdir = fs.readdir
|
var fs$readdir = fs.readdir
|
||||||
fs.readdir = readdir
|
fs.readdir = readdir
|
||||||
|
var noReaddirOptionVersions = /^v[0-5]\./
|
||||||
function readdir (path, options, cb) {
|
function readdir (path, options, cb) {
|
||||||
if (typeof options === 'function')
|
if (typeof options === 'function')
|
||||||
cb = options, options = null
|
cb = options, options = null
|
||||||
|
|
||||||
|
var go$readdir = noReaddirOptionVersions.test(process.version)
|
||||||
|
? function go$readdir (path, options, cb, startTime) {
|
||||||
|
return fs$readdir(path, fs$readdirCallback(
|
||||||
|
path, options, cb, startTime
|
||||||
|
))
|
||||||
|
}
|
||||||
|
: function go$readdir (path, options, cb, startTime) {
|
||||||
|
return fs$readdir(path, options, fs$readdirCallback(
|
||||||
|
path, options, cb, startTime
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
return go$readdir(path, options, cb)
|
return go$readdir(path, options, cb)
|
||||||
|
|
||||||
function go$readdir (path, options, cb, startTime) {
|
function fs$readdirCallback (path, options, cb, startTime) {
|
||||||
return fs$readdir(path, options, function (err, files) {
|
return function (err, files) {
|
||||||
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
|
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
|
||||||
enqueue([go$readdir, [path, options, cb], err, startTime || Date.now(), Date.now()])
|
enqueue([
|
||||||
|
go$readdir,
|
||||||
|
[path, options, cb],
|
||||||
|
err,
|
||||||
|
startTime || Date.now(),
|
||||||
|
Date.now()
|
||||||
|
])
|
||||||
else {
|
else {
|
||||||
if (files && files.sort)
|
if (files && files.sort)
|
||||||
files.sort()
|
files.sort()
|
||||||
@ -208,7 +227,7 @@ function patch (fs) {
|
|||||||
if (typeof cb === 'function')
|
if (typeof cb === 'function')
|
||||||
cb.call(this, err, files)
|
cb.call(this, err, files)
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
9
node_modules/graceful-fs/package.json
generated
vendored
9
node_modules/graceful-fs/package.json
generated
vendored
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "graceful-fs",
|
"name": "graceful-fs",
|
||||||
"description": "A drop-in replacement for fs, making various improvements.",
|
"description": "A drop-in replacement for fs, making various improvements.",
|
||||||
"version": "4.2.9",
|
"version": "4.2.11",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/isaacs/node-graceful-fs"
|
"url": "https://github.com/isaacs/node-graceful-fs"
|
||||||
@ -38,7 +38,7 @@
|
|||||||
"import-fresh": "^2.0.0",
|
"import-fresh": "^2.0.0",
|
||||||
"mkdirp": "^0.5.0",
|
"mkdirp": "^0.5.0",
|
||||||
"rimraf": "^2.2.8",
|
"rimraf": "^2.2.8",
|
||||||
"tap": "^12.7.0"
|
"tap": "^16.3.4"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"fs.js",
|
"fs.js",
|
||||||
@ -46,5 +46,8 @@
|
|||||||
"legacy-streams.js",
|
"legacy-streams.js",
|
||||||
"polyfills.js",
|
"polyfills.js",
|
||||||
"clone.js"
|
"clone.js"
|
||||||
]
|
],
|
||||||
|
"tap": {
|
||||||
|
"reporter": "classic"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
63
node_modules/graceful-fs/polyfills.js
generated
vendored
63
node_modules/graceful-fs/polyfills.js
generated
vendored
@ -71,13 +71,13 @@ function patch (fs) {
|
|||||||
fs.lstatSync = statFixSync(fs.lstatSync)
|
fs.lstatSync = statFixSync(fs.lstatSync)
|
||||||
|
|
||||||
// if lchmod/lchown do not exist, then make them no-ops
|
// if lchmod/lchown do not exist, then make them no-ops
|
||||||
if (!fs.lchmod) {
|
if (fs.chmod && !fs.lchmod) {
|
||||||
fs.lchmod = function (path, mode, cb) {
|
fs.lchmod = function (path, mode, cb) {
|
||||||
if (cb) process.nextTick(cb)
|
if (cb) process.nextTick(cb)
|
||||||
}
|
}
|
||||||
fs.lchmodSync = function () {}
|
fs.lchmodSync = function () {}
|
||||||
}
|
}
|
||||||
if (!fs.lchown) {
|
if (fs.chown && !fs.lchown) {
|
||||||
fs.lchown = function (path, uid, gid, cb) {
|
fs.lchown = function (path, uid, gid, cb) {
|
||||||
if (cb) process.nextTick(cb)
|
if (cb) process.nextTick(cb)
|
||||||
}
|
}
|
||||||
@ -94,32 +94,38 @@ function patch (fs) {
|
|||||||
// CPU to a busy looping process, which can cause the program causing the lock
|
// CPU to a busy looping process, which can cause the program causing the lock
|
||||||
// contention to be starved of CPU by node, so the contention doesn't resolve.
|
// contention to be starved of CPU by node, so the contention doesn't resolve.
|
||||||
if (platform === "win32") {
|
if (platform === "win32") {
|
||||||
fs.rename = (function (fs$rename) { return function (from, to, cb) {
|
fs.rename = typeof fs.rename !== 'function' ? fs.rename
|
||||||
var start = Date.now()
|
: (function (fs$rename) {
|
||||||
var backoff = 0;
|
function rename (from, to, cb) {
|
||||||
fs$rename(from, to, function CB (er) {
|
var start = Date.now()
|
||||||
if (er
|
var backoff = 0;
|
||||||
&& (er.code === "EACCES" || er.code === "EPERM")
|
fs$rename(from, to, function CB (er) {
|
||||||
&& Date.now() - start < 60000) {
|
if (er
|
||||||
setTimeout(function() {
|
&& (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY")
|
||||||
fs.stat(to, function (stater, st) {
|
&& Date.now() - start < 60000) {
|
||||||
if (stater && stater.code === "ENOENT")
|
setTimeout(function() {
|
||||||
fs$rename(from, to, CB);
|
fs.stat(to, function (stater, st) {
|
||||||
else
|
if (stater && stater.code === "ENOENT")
|
||||||
cb(er)
|
fs$rename(from, to, CB);
|
||||||
})
|
else
|
||||||
}, backoff)
|
cb(er)
|
||||||
if (backoff < 100)
|
})
|
||||||
backoff += 10;
|
}, backoff)
|
||||||
return;
|
if (backoff < 100)
|
||||||
}
|
backoff += 10;
|
||||||
if (cb) cb(er)
|
return;
|
||||||
})
|
}
|
||||||
}})(fs.rename)
|
if (cb) cb(er)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)
|
||||||
|
return rename
|
||||||
|
})(fs.rename)
|
||||||
}
|
}
|
||||||
|
|
||||||
// if read() returns EAGAIN, then just try it again.
|
// if read() returns EAGAIN, then just try it again.
|
||||||
fs.read = (function (fs$read) {
|
fs.read = typeof fs.read !== 'function' ? fs.read
|
||||||
|
: (function (fs$read) {
|
||||||
function read (fd, buffer, offset, length, position, callback_) {
|
function read (fd, buffer, offset, length, position, callback_) {
|
||||||
var callback
|
var callback
|
||||||
if (callback_ && typeof callback_ === 'function') {
|
if (callback_ && typeof callback_ === 'function') {
|
||||||
@ -140,7 +146,8 @@ function patch (fs) {
|
|||||||
return read
|
return read
|
||||||
})(fs.read)
|
})(fs.read)
|
||||||
|
|
||||||
fs.readSync = (function (fs$readSync) { return function (fd, buffer, offset, length, position) {
|
fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync
|
||||||
|
: (function (fs$readSync) { return function (fd, buffer, offset, length, position) {
|
||||||
var eagCounter = 0
|
var eagCounter = 0
|
||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
@ -199,7 +206,7 @@ function patch (fs) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function patchLutimes (fs) {
|
function patchLutimes (fs) {
|
||||||
if (constants.hasOwnProperty("O_SYMLINK")) {
|
if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) {
|
||||||
fs.lutimes = function (path, at, mt, cb) {
|
fs.lutimes = function (path, at, mt, cb) {
|
||||||
fs.open(path, constants.O_SYMLINK, function (er, fd) {
|
fs.open(path, constants.O_SYMLINK, function (er, fd) {
|
||||||
if (er) {
|
if (er) {
|
||||||
@ -233,7 +240,7 @@ function patch (fs) {
|
|||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else if (fs.futimes) {
|
||||||
fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }
|
fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }
|
||||||
fs.lutimesSync = function () {}
|
fs.lutimesSync = function () {}
|
||||||
}
|
}
|
||||||
|
6
node_modules/ignore/README.md
generated
vendored
6
node_modules/ignore/README.md
generated
vendored
@ -8,9 +8,9 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead><tbody><tr>
|
</thead><tbody><tr>
|
||||||
<td colspan="2" align="center">
|
<td colspan="2" align="center">
|
||||||
<a href="https://travis-ci.org/kaelzhang/node-ignore">
|
<a href="https://github.com/kaelzhang/node-ignore/actions/workflows/nodejs.yml">
|
||||||
<img
|
<img
|
||||||
src="https://travis-ci.org/kaelzhang/node-ignore.svg?branch=master"
|
src="https://github.com/kaelzhang/node-ignore/actions/workflows/nodejs.yml/badge.svg"
|
||||||
alt="Build Status" /></a>
|
alt="Build Status" /></a>
|
||||||
</td>
|
</td>
|
||||||
<td align="center">
|
<td align="center">
|
||||||
@ -136,7 +136,7 @@ Notice that a line starting with `'#'`(hash) is treated as a comment. Put a back
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
ignore().add('#abc').ignores('#abc') // false
|
ignore().add('#abc').ignores('#abc') // false
|
||||||
ignore().add('\#abc').ignores('#abc') // true
|
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:
|
`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:
|
||||||
|
33
node_modules/ignore/index.js
generated
vendored
33
node_modules/ignore/index.js
generated
vendored
@ -9,6 +9,7 @@ const EMPTY = ''
|
|||||||
const SPACE = ' '
|
const SPACE = ' '
|
||||||
const ESCAPE = '\\'
|
const ESCAPE = '\\'
|
||||||
const REGEX_TEST_BLANK_LINE = /^\s+$/
|
const REGEX_TEST_BLANK_LINE = /^\s+$/
|
||||||
|
const REGEX_INVALID_TRAILING_BACKSLASH = /(?:[^\\]|^)\\$/
|
||||||
const REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/
|
const REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/
|
||||||
const REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/
|
const REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/
|
||||||
const REGEX_SPLITALL_CRLF = /\r?\n/g
|
const REGEX_SPLITALL_CRLF = /\r?\n/g
|
||||||
@ -20,10 +21,14 @@ const REGEX_SPLITALL_CRLF = /\r?\n/g
|
|||||||
const REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/
|
const REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/
|
||||||
|
|
||||||
const SLASH = '/'
|
const SLASH = '/'
|
||||||
const KEY_IGNORE = typeof Symbol !== 'undefined'
|
|
||||||
? Symbol.for('node-ignore')
|
// Do not use ternary expression here, since "istanbul ignore next" is buggy
|
||||||
/* istanbul ignore next */
|
let TMP_KEY_IGNORE = 'node-ignore'
|
||||||
: 'node-ignore'
|
/* istanbul ignore else */
|
||||||
|
if (typeof Symbol !== 'undefined') {
|
||||||
|
TMP_KEY_IGNORE = Symbol.for('node-ignore')
|
||||||
|
}
|
||||||
|
const KEY_IGNORE = TMP_KEY_IGNORE
|
||||||
|
|
||||||
const define = (object, key, value) =>
|
const define = (object, key, value) =>
|
||||||
Object.defineProperty(object, key, {value})
|
Object.defineProperty(object, key, {value})
|
||||||
@ -190,18 +195,27 @@ const REPLACERS = [
|
|||||||
: '\\/.+'
|
: '\\/.+'
|
||||||
],
|
],
|
||||||
|
|
||||||
// intermediate wildcards
|
// normal intermediate wildcards
|
||||||
[
|
[
|
||||||
// Never replace escaped '*'
|
// Never replace escaped '*'
|
||||||
// ignore rule '\*' will match the path '*'
|
// ignore rule '\*' will match the path '*'
|
||||||
|
|
||||||
// 'abc.*/' -> go
|
// 'abc.*/' -> go
|
||||||
// 'abc.*' -> skip this rule
|
// 'abc.*' -> skip this rule,
|
||||||
/(^|[^\\]+)\\\*(?=.+)/g,
|
// coz trailing single wildcard will be handed by [trailing wildcard]
|
||||||
|
/(^|[^\\]+)(\\\*)+(?=.+)/g,
|
||||||
|
|
||||||
// '*.js' matches '.js'
|
// '*.js' matches '.js'
|
||||||
// '*.js' doesn't match 'abc'
|
// '*.js' doesn't match 'abc'
|
||||||
(_, p1) => `${p1}[^\\/]*`
|
(_, p1, p2) => {
|
||||||
|
// 1.
|
||||||
|
// > An asterisk "*" matches anything except a slash.
|
||||||
|
// 2.
|
||||||
|
// > Other consecutive asterisks are considered regular asterisks
|
||||||
|
// > and will match according to the previous rules.
|
||||||
|
const unescaped = p2.replace(/\\\*/g, '[^\\/]*')
|
||||||
|
return p1 + unescaped
|
||||||
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
[
|
[
|
||||||
@ -312,6 +326,7 @@ const isString = subject => typeof subject === 'string'
|
|||||||
const checkPattern = pattern => pattern
|
const checkPattern = pattern => pattern
|
||||||
&& isString(pattern)
|
&& isString(pattern)
|
||||||
&& !REGEX_TEST_BLANK_LINE.test(pattern)
|
&& !REGEX_TEST_BLANK_LINE.test(pattern)
|
||||||
|
&& !REGEX_INVALID_TRAILING_BACKSLASH.test(pattern)
|
||||||
|
|
||||||
// > A line starting with # serves as a comment.
|
// > A line starting with # serves as a comment.
|
||||||
&& pattern.indexOf('#') !== 0
|
&& pattern.indexOf('#') !== 0
|
||||||
@ -577,7 +592,7 @@ module.exports = factory
|
|||||||
|
|
||||||
// Windows
|
// Windows
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
/* istanbul ignore if */
|
/* istanbul ignore if */
|
||||||
if (
|
if (
|
||||||
// Detect `process` so that it can run in browsers.
|
// Detect `process` so that it can run in browsers.
|
||||||
typeof process !== 'undefined'
|
typeof process !== 'undefined'
|
||||||
|
315
node_modules/ignore/legacy.js
generated
vendored
315
node_modules/ignore/legacy.js
generated
vendored
@ -1,61 +1,66 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
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); } }
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
||||||
|
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, _toPropertyKey(descriptor.key), descriptor); } }
|
||||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
||||||
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
||||||
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||||
|
|
||||||
// A simple implementation of make-array
|
// A simple implementation of make-array
|
||||||
function makeArray(subject) {
|
function makeArray(subject) {
|
||||||
return Array.isArray(subject) ? subject : [subject];
|
return Array.isArray(subject) ? subject : [subject];
|
||||||
}
|
}
|
||||||
|
|
||||||
var EMPTY = '';
|
var EMPTY = '';
|
||||||
var SPACE = ' ';
|
var SPACE = ' ';
|
||||||
var ESCAPE = '\\';
|
var ESCAPE = '\\';
|
||||||
var REGEX_TEST_BLANK_LINE = /^\s+$/;
|
var REGEX_TEST_BLANK_LINE = /^\s+$/;
|
||||||
|
var REGEX_INVALID_TRAILING_BACKSLASH = /(?:[^\\]|^)\\$/;
|
||||||
var REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/;
|
var REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/;
|
||||||
var REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/;
|
var REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/;
|
||||||
var REGEX_SPLITALL_CRLF = /\r?\n/g; // /foo,
|
var REGEX_SPLITALL_CRLF = /\r?\n/g;
|
||||||
|
// /foo,
|
||||||
// ./foo,
|
// ./foo,
|
||||||
// ../foo,
|
// ../foo,
|
||||||
// .
|
// .
|
||||||
// ..
|
// ..
|
||||||
|
|
||||||
var REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/;
|
var REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/;
|
||||||
var SLASH = '/';
|
var SLASH = '/';
|
||||||
var KEY_IGNORE = typeof Symbol !== 'undefined' ? Symbol["for"]('node-ignore')
|
|
||||||
/* istanbul ignore next */
|
|
||||||
: 'node-ignore';
|
|
||||||
|
|
||||||
|
// Do not use ternary expression here, since "istanbul ignore next" is buggy
|
||||||
|
var TMP_KEY_IGNORE = 'node-ignore';
|
||||||
|
/* istanbul ignore else */
|
||||||
|
if (typeof Symbol !== 'undefined') {
|
||||||
|
TMP_KEY_IGNORE = Symbol["for"]('node-ignore');
|
||||||
|
}
|
||||||
|
var KEY_IGNORE = TMP_KEY_IGNORE;
|
||||||
var define = function define(object, key, value) {
|
var define = function define(object, key, value) {
|
||||||
return Object.defineProperty(object, key, {
|
return Object.defineProperty(object, key, {
|
||||||
value: value
|
value: value
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g;
|
var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g;
|
||||||
|
|
||||||
var RETURN_FALSE = function RETURN_FALSE() {
|
var RETURN_FALSE = function RETURN_FALSE() {
|
||||||
return false;
|
return false;
|
||||||
}; // Sanitize the range of a regular expression
|
};
|
||||||
|
|
||||||
|
// Sanitize the range of a regular expression
|
||||||
// The cases are complicated, see test cases for details
|
// The cases are complicated, see test cases for details
|
||||||
|
|
||||||
|
|
||||||
var sanitizeRange = function sanitizeRange(range) {
|
var sanitizeRange = function sanitizeRange(range) {
|
||||||
return range.replace(REGEX_REGEXP_RANGE, function (match, from, to) {
|
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
|
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.
|
// fatal for JavaScript regular expression, so eliminate it.
|
||||||
: EMPTY;
|
: EMPTY;
|
||||||
});
|
});
|
||||||
}; // See fixtures #59
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// See fixtures #59
|
||||||
var cleanRangeBackSlash = function cleanRangeBackSlash(slashes) {
|
var cleanRangeBackSlash = function cleanRangeBackSlash(slashes) {
|
||||||
var length = slashes.length;
|
var length = slashes.length;
|
||||||
return slashes.slice(0, length - length % 2);
|
return slashes.slice(0, length - length % 2);
|
||||||
}; // > If the pattern ends with a slash,
|
};
|
||||||
|
|
||||||
|
// > If the pattern ends with a slash,
|
||||||
// > it is removed for the purpose of the following description,
|
// > it is removed for the purpose of the following description,
|
||||||
// > but it would only find a match with a directory.
|
// > but it would only find a match with a directory.
|
||||||
// > In other words, foo/ will match a directory foo and paths underneath it,
|
// > In other words, foo/ will match a directory foo and paths underneath it,
|
||||||
@ -64,20 +69,24 @@ var cleanRangeBackSlash = function cleanRangeBackSlash(slashes) {
|
|||||||
// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'
|
// '`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
|
// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call
|
||||||
// you could use option `mark: true` with `glob`
|
// you could use option `mark: true` with `glob`
|
||||||
|
|
||||||
// '`foo/`' should not continue with the '`..`'
|
// '`foo/`' should not continue with the '`..`'
|
||||||
|
var REPLACERS = [
|
||||||
|
// > Trailing spaces are ignored unless they are quoted with backslash ("\")
|
||||||
var REPLACERS = [// > Trailing spaces are ignored unless they are quoted with backslash ("\")
|
[
|
||||||
[// (a\ ) -> (a )
|
// (a\ ) -> (a )
|
||||||
// (a ) -> (a)
|
// (a ) -> (a)
|
||||||
// (a \ ) -> (a )
|
// (a \ ) -> (a )
|
||||||
/\\?\s+$/, function (match) {
|
/\\?\s+$/, function (match) {
|
||||||
return match.indexOf('\\') === 0 ? SPACE : EMPTY;
|
return match.indexOf('\\') === 0 ? SPACE : EMPTY;
|
||||||
}], // replace (\ ) with ' '
|
}],
|
||||||
|
// replace (\ ) with ' '
|
||||||
[/\\\s/g, function () {
|
[/\\\s/g, function () {
|
||||||
return SPACE;
|
return SPACE;
|
||||||
}], // Escape metacharacters
|
}],
|
||||||
|
// Escape metacharacters
|
||||||
// which is written down by users but means special for regular expressions.
|
// which is written down by users but means special for regular expressions.
|
||||||
|
|
||||||
// > There are 12 characters with special meanings:
|
// > There are 12 characters with special meanings:
|
||||||
// > - the backslash \,
|
// > - the backslash \,
|
||||||
// > - the caret ^,
|
// > - the caret ^,
|
||||||
@ -94,229 +103,264 @@ var REPLACERS = [// > Trailing spaces are ignored unless they are quoted with ba
|
|||||||
// > These special characters are often called "metacharacters".
|
// > These special characters are often called "metacharacters".
|
||||||
[/[\\$.|*+(){^]/g, function (match) {
|
[/[\\$.|*+(){^]/g, function (match) {
|
||||||
return "\\".concat(match);
|
return "\\".concat(match);
|
||||||
}], [// > a question mark (?) matches a single character
|
}], [
|
||||||
|
// > a question mark (?) matches a single character
|
||||||
/(?!\\)\?/g, function () {
|
/(?!\\)\?/g, function () {
|
||||||
return '[^/]';
|
return '[^/]';
|
||||||
}], // leading slash
|
}],
|
||||||
[// > A leading slash matches the beginning of the pathname.
|
// leading slash
|
||||||
|
[
|
||||||
|
// > A leading slash matches the beginning of the pathname.
|
||||||
// > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
|
// > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
|
||||||
// A leading slash matches the beginning of the pathname
|
// A leading slash matches the beginning of the pathname
|
||||||
/^\//, function () {
|
/^\//, function () {
|
||||||
return '^';
|
return '^';
|
||||||
}], // replace special metacharacter slash after the leading slash
|
}],
|
||||||
|
// replace special metacharacter slash after the leading slash
|
||||||
[/\//g, function () {
|
[/\//g, function () {
|
||||||
return '\\/';
|
return '\\/';
|
||||||
}], [// > A leading "**" followed by a slash means match in all directories.
|
}], [
|
||||||
|
// > A leading "**" followed by a slash means match in all directories.
|
||||||
// > For example, "**/foo" matches file or directory "foo" anywhere,
|
// > For example, "**/foo" matches file or directory "foo" anywhere,
|
||||||
// > the same as pattern "foo".
|
// > the same as pattern "foo".
|
||||||
// > "**/foo/bar" matches file or directory "bar" anywhere that is directly
|
// > "**/foo/bar" matches file or directory "bar" anywhere that is directly
|
||||||
// > under directory "foo".
|
// > under directory "foo".
|
||||||
// Notice that the '*'s have been replaced as '\\*'
|
// Notice that the '*'s have been replaced as '\\*'
|
||||||
/^\^*\\\*\\\*\\\//, // '**/foo' <-> 'foo'
|
/^\^*\\\*\\\*\\\//,
|
||||||
|
// '**/foo' <-> 'foo'
|
||||||
function () {
|
function () {
|
||||||
return '^(?:.*\\/)?';
|
return '^(?:.*\\/)?';
|
||||||
}], // starting
|
}],
|
||||||
[// there will be no leading '/'
|
// starting
|
||||||
|
[
|
||||||
|
// there will be no leading '/'
|
||||||
// (which has been replaced by section "leading slash")
|
// (which has been replaced by section "leading slash")
|
||||||
// If starts with '**', adding a '^' to the regular expression also works
|
// If starts with '**', adding a '^' to the regular expression also works
|
||||||
/^(?=[^^])/, function startingReplacer() {
|
/^(?=[^^])/, function startingReplacer() {
|
||||||
// If has a slash `/` at the beginning or middle
|
// If has a slash `/` at the beginning or middle
|
||||||
return !/\/(?!$)/.test(this) // > Prior to 2.22.1
|
return !/\/(?!$)/.test(this)
|
||||||
|
// > Prior to 2.22.1
|
||||||
// > If the pattern does not contain a slash /,
|
// > If the pattern does not contain a slash /,
|
||||||
// > Git treats it as a shell glob pattern
|
// > Git treats it as a shell glob pattern
|
||||||
// Actually, if there is only a trailing slash,
|
// Actually, if there is only a trailing slash,
|
||||||
// git also treats it as a shell glob pattern
|
// git also treats it as a shell glob pattern
|
||||||
|
|
||||||
// After 2.22.1 (compatible but clearer)
|
// After 2.22.1 (compatible but clearer)
|
||||||
// > If there is a separator at the beginning or middle (or both)
|
// > If there is a separator at the beginning or middle (or both)
|
||||||
// > of the pattern, then the pattern is relative to the directory
|
// > of the pattern, then the pattern is relative to the directory
|
||||||
// > level of the particular .gitignore file itself.
|
// > level of the particular .gitignore file itself.
|
||||||
// > Otherwise the pattern may also match at any level below
|
// > Otherwise the pattern may also match at any level below
|
||||||
// > the .gitignore level.
|
// > the .gitignore level.
|
||||||
? '(?:^|\\/)' // > Otherwise, Git treats the pattern as a shell glob suitable for
|
? '(?:^|\\/)'
|
||||||
|
|
||||||
|
// > Otherwise, Git treats the pattern as a shell glob suitable for
|
||||||
// > consumption by fnmatch(3)
|
// > consumption by fnmatch(3)
|
||||||
: '^';
|
: '^';
|
||||||
}], // two globstars
|
}],
|
||||||
[// Use lookahead assertions so that we could match more than one `'/**'`
|
// two globstars
|
||||||
/\\\/\\\*\\\*(?=\\\/|$)/g, // Zero, one or several directories
|
[
|
||||||
|
// 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
|
// should not use '*', or it will be replaced by the next replacer
|
||||||
|
|
||||||
// Check if it is not the last `'/**'`
|
// Check if it is not the last `'/**'`
|
||||||
function (_, index, str) {
|
function (_, index, str) {
|
||||||
return index + 6 < str.length // case: /**/
|
return index + 6 < str.length
|
||||||
|
|
||||||
|
// case: /**/
|
||||||
// > A slash followed by two consecutive asterisks then a slash matches
|
// > A slash followed by two consecutive asterisks then a slash matches
|
||||||
// > zero or more directories.
|
// > zero or more directories.
|
||||||
// > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on.
|
// > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on.
|
||||||
// '/**/'
|
// '/**/'
|
||||||
? '(?:\\/[^\\/]+)*' // case: /**
|
? '(?:\\/[^\\/]+)*'
|
||||||
|
|
||||||
|
// case: /**
|
||||||
// > A trailing `"/**"` matches everything inside.
|
// > A trailing `"/**"` matches everything inside.
|
||||||
|
|
||||||
// #21: everything inside but it should not include the current folder
|
// #21: everything inside but it should not include the current folder
|
||||||
: '\\/.+';
|
: '\\/.+';
|
||||||
}], // intermediate wildcards
|
}],
|
||||||
[// Never replace escaped '*'
|
// normal intermediate wildcards
|
||||||
|
[
|
||||||
|
// Never replace escaped '*'
|
||||||
// ignore rule '\*' will match the path '*'
|
// ignore rule '\*' will match the path '*'
|
||||||
|
|
||||||
// 'abc.*/' -> go
|
// 'abc.*/' -> go
|
||||||
// 'abc.*' -> skip this rule
|
// 'abc.*' -> skip this rule,
|
||||||
/(^|[^\\]+)\\\*(?=.+)/g, // '*.js' matches '.js'
|
// coz trailing single wildcard will be handed by [trailing wildcard]
|
||||||
|
/(^|[^\\]+)(\\\*)+(?=.+)/g,
|
||||||
|
// '*.js' matches '.js'
|
||||||
// '*.js' doesn't match 'abc'
|
// '*.js' doesn't match 'abc'
|
||||||
function (_, p1) {
|
function (_, p1, p2) {
|
||||||
return "".concat(p1, "[^\\/]*");
|
// 1.
|
||||||
}], [// unescape, revert step 3 except for back slash
|
// > An asterisk "*" matches anything except a slash.
|
||||||
|
// 2.
|
||||||
|
// > Other consecutive asterisks are considered regular asterisks
|
||||||
|
// > and will match according to the previous rules.
|
||||||
|
var unescaped = p2.replace(/\\\*/g, '[^\\/]*');
|
||||||
|
return p1 + unescaped;
|
||||||
|
}], [
|
||||||
|
// unescape, revert step 3 except for back slash
|
||||||
// For example, if a user escape a '\\*',
|
// For example, if a user escape a '\\*',
|
||||||
// after step 3, the result will be '\\\\\\*'
|
// after step 3, the result will be '\\\\\\*'
|
||||||
/\\\\\\(?=[$.|*+(){^])/g, function () {
|
/\\\\\\(?=[$.|*+(){^])/g, function () {
|
||||||
return ESCAPE;
|
return ESCAPE;
|
||||||
}], [// '\\\\' -> '\\'
|
}], [
|
||||||
|
// '\\\\' -> '\\'
|
||||||
/\\\\/g, function () {
|
/\\\\/g, function () {
|
||||||
return ESCAPE;
|
return ESCAPE;
|
||||||
}], [// > The range notation, e.g. [a-zA-Z],
|
}], [
|
||||||
|
// > The range notation, e.g. [a-zA-Z],
|
||||||
// > can be used to match one of the characters in a range.
|
// > can be used to match one of the characters in a range.
|
||||||
|
|
||||||
// `\` is escaped by step 3
|
// `\` is escaped by step 3
|
||||||
/(\\)?\[([^\]/]*?)(\\*)($|\])/g, function (match, leadEscape, range, endEscape, close) {
|
/(\\)?\[([^\]/]*?)(\\*)($|\])/g, function (match, leadEscape, range, endEscape, close) {
|
||||||
return leadEscape === ESCAPE // '\\[bar]' -> '\\\\[bar\\]'
|
return leadEscape === ESCAPE
|
||||||
? "\\[".concat(range).concat(cleanRangeBackSlash(endEscape)).concat(close) : close === ']' ? endEscape.length % 2 === 0 // A normal case, and it is a range notation
|
// '\\[bar]' -> '\\\\[bar\\]'
|
||||||
|
? "\\[".concat(range).concat(cleanRangeBackSlash(endEscape)).concat(close) : close === ']' ? endEscape.length % 2 === 0
|
||||||
|
// A normal case, and it is a range notation
|
||||||
// '[bar]'
|
// '[bar]'
|
||||||
// '[bar\\\\]'
|
// '[bar\\\\]'
|
||||||
? "[".concat(sanitizeRange(range)).concat(endEscape, "]") // Invalid range notaton
|
? "[".concat(sanitizeRange(range)).concat(endEscape, "]") // Invalid range notaton
|
||||||
// '[bar\\]' -> '[bar\\\\]'
|
// '[bar\\]' -> '[bar\\\\]'
|
||||||
: '[]' : '[]';
|
: '[]' : '[]';
|
||||||
}], // ending
|
}],
|
||||||
[// 'js' will not match 'js.'
|
// ending
|
||||||
|
[
|
||||||
|
// 'js' will not match 'js.'
|
||||||
// 'ab' will not match 'abc'
|
// 'ab' will not match 'abc'
|
||||||
/(?:[^*])$/, // WTF!
|
/(?:[^*])$/,
|
||||||
|
// WTF!
|
||||||
// https://git-scm.com/docs/gitignore
|
// https://git-scm.com/docs/gitignore
|
||||||
// changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)
|
// changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)
|
||||||
// which re-fixes #24, #38
|
// which re-fixes #24, #38
|
||||||
|
|
||||||
// > If there is a separator at the end of the pattern then the pattern
|
// > If there is a separator at the end of the pattern then the pattern
|
||||||
// > will only match directories, otherwise the pattern can match both
|
// > will only match directories, otherwise the pattern can match both
|
||||||
// > files and directories.
|
// > files and directories.
|
||||||
|
|
||||||
// 'js*' will not match 'a.js'
|
// 'js*' will not match 'a.js'
|
||||||
// 'js/' will not match 'a.js'
|
// 'js/' will not match 'a.js'
|
||||||
// 'js' will match 'a.js' and 'a.js/'
|
// 'js' will match 'a.js' and 'a.js/'
|
||||||
function (match) {
|
function (match) {
|
||||||
return /\/$/.test(match) // foo/ will not match 'foo'
|
return /\/$/.test(match)
|
||||||
|
// foo/ will not match 'foo'
|
||||||
? "".concat(match, "$") // foo matches 'foo' and 'foo/'
|
? "".concat(match, "$") // foo matches 'foo' and 'foo/'
|
||||||
: "".concat(match, "(?=$|\\/$)");
|
: "".concat(match, "(?=$|\\/$)");
|
||||||
}], // trailing wildcard
|
}],
|
||||||
|
// trailing wildcard
|
||||||
[/(\^|\\\/)?\\\*$/, function (_, p1) {
|
[/(\^|\\\/)?\\\*$/, function (_, p1) {
|
||||||
var prefix = p1 // '\^':
|
var prefix = p1
|
||||||
|
// '\^':
|
||||||
// '/*' does not match EMPTY
|
// '/*' does not match EMPTY
|
||||||
// '/*' does not match everything
|
// '/*' does not match everything
|
||||||
|
|
||||||
// '\\\/':
|
// '\\\/':
|
||||||
// 'abc/*' does not match 'abc/'
|
// 'abc/*' does not match 'abc/'
|
||||||
? "".concat(p1, "[^/]+") // 'a*' matches 'a'
|
? "".concat(p1, "[^/]+") // 'a*' matches 'a'
|
||||||
// 'a*' matches 'aa'
|
// 'a*' matches 'aa'
|
||||||
: '[^/]*';
|
: '[^/]*';
|
||||||
return "".concat(prefix, "(?=$|\\/$)");
|
return "".concat(prefix, "(?=$|\\/$)");
|
||||||
}]]; // A simple cache, because an ignore rule only has only one certain meaning
|
}]];
|
||||||
|
|
||||||
var regexCache = Object.create(null); // @param {pattern}
|
// A simple cache, because an ignore rule only has only one certain meaning
|
||||||
|
var regexCache = Object.create(null);
|
||||||
|
|
||||||
|
// @param {pattern}
|
||||||
var makeRegex = function makeRegex(pattern, ignoreCase) {
|
var makeRegex = function makeRegex(pattern, ignoreCase) {
|
||||||
var source = regexCache[pattern];
|
var source = regexCache[pattern];
|
||||||
|
|
||||||
if (!source) {
|
if (!source) {
|
||||||
source = REPLACERS.reduce(function (prev, current) {
|
source = REPLACERS.reduce(function (prev, current) {
|
||||||
return prev.replace(current[0], current[1].bind(pattern));
|
return prev.replace(current[0], current[1].bind(pattern));
|
||||||
}, pattern);
|
}, pattern);
|
||||||
regexCache[pattern] = source;
|
regexCache[pattern] = source;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ignoreCase ? new RegExp(source, 'i') : new RegExp(source);
|
return ignoreCase ? new RegExp(source, 'i') : new RegExp(source);
|
||||||
};
|
};
|
||||||
|
|
||||||
var isString = function isString(subject) {
|
var isString = function isString(subject) {
|
||||||
return typeof subject === 'string';
|
return typeof subject === 'string';
|
||||||
}; // > A blank line matches no files, so it can serve as a separator for readability.
|
|
||||||
|
|
||||||
|
|
||||||
var checkPattern = function checkPattern(pattern) {
|
|
||||||
return pattern && isString(pattern) && !REGEX_TEST_BLANK_LINE.test(pattern) // > A line starting with # serves as a comment.
|
|
||||||
&& pattern.indexOf('#') !== 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// > A blank line matches no files, so it can serve as a separator for readability.
|
||||||
|
var checkPattern = function checkPattern(pattern) {
|
||||||
|
return pattern && isString(pattern) && !REGEX_TEST_BLANK_LINE.test(pattern) && !REGEX_INVALID_TRAILING_BACKSLASH.test(pattern)
|
||||||
|
|
||||||
|
// > A line starting with # serves as a comment.
|
||||||
|
&& pattern.indexOf('#') !== 0;
|
||||||
|
};
|
||||||
var splitPattern = function splitPattern(pattern) {
|
var splitPattern = function splitPattern(pattern) {
|
||||||
return pattern.split(REGEX_SPLITALL_CRLF);
|
return pattern.split(REGEX_SPLITALL_CRLF);
|
||||||
};
|
};
|
||||||
|
var IgnoreRule = /*#__PURE__*/_createClass(function IgnoreRule(origin, pattern, negative, regex) {
|
||||||
var IgnoreRule = function IgnoreRule(origin, pattern, negative, regex) {
|
|
||||||
_classCallCheck(this, IgnoreRule);
|
_classCallCheck(this, IgnoreRule);
|
||||||
|
|
||||||
this.origin = origin;
|
this.origin = origin;
|
||||||
this.pattern = pattern;
|
this.pattern = pattern;
|
||||||
this.negative = negative;
|
this.negative = negative;
|
||||||
this.regex = regex;
|
this.regex = regex;
|
||||||
};
|
});
|
||||||
|
|
||||||
var createRule = function createRule(pattern, ignoreCase) {
|
var createRule = function createRule(pattern, ignoreCase) {
|
||||||
var origin = pattern;
|
var origin = pattern;
|
||||||
var negative = false; // > An optional prefix "!" which negates the pattern;
|
var negative = false;
|
||||||
|
|
||||||
|
// > An optional prefix "!" which negates the pattern;
|
||||||
if (pattern.indexOf('!') === 0) {
|
if (pattern.indexOf('!') === 0) {
|
||||||
negative = true;
|
negative = true;
|
||||||
pattern = pattern.substr(1);
|
pattern = pattern.substr(1);
|
||||||
}
|
}
|
||||||
|
pattern = pattern
|
||||||
pattern = pattern // > Put a backslash ("\") in front of the first "!" for patterns that
|
// > Put a backslash ("\") in front of the first "!" for patterns that
|
||||||
// > begin with a literal "!", for example, `"\!important!.txt"`.
|
// > begin with a literal "!", for example, `"\!important!.txt"`.
|
||||||
.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!') // > Put a backslash ("\") in front of the first hash for patterns that
|
.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!')
|
||||||
|
// > Put a backslash ("\") in front of the first hash for patterns that
|
||||||
// > begin with a hash.
|
// > begin with a hash.
|
||||||
.replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#');
|
.replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#');
|
||||||
var regex = makeRegex(pattern, ignoreCase);
|
var regex = makeRegex(pattern, ignoreCase);
|
||||||
return new IgnoreRule(origin, pattern, negative, regex);
|
return new IgnoreRule(origin, pattern, negative, regex);
|
||||||
};
|
};
|
||||||
|
|
||||||
var throwError = function throwError(message, Ctor) {
|
var throwError = function throwError(message, Ctor) {
|
||||||
throw new Ctor(message);
|
throw new Ctor(message);
|
||||||
};
|
};
|
||||||
|
|
||||||
var checkPath = function checkPath(path, originalPath, doThrow) {
|
var checkPath = function checkPath(path, originalPath, doThrow) {
|
||||||
if (!isString(path)) {
|
if (!isString(path)) {
|
||||||
return doThrow("path must be a string, but got `".concat(originalPath, "`"), TypeError);
|
return doThrow("path must be a string, but got `".concat(originalPath, "`"), TypeError);
|
||||||
} // We don't know if we should ignore EMPTY, so throw
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// We don't know if we should ignore EMPTY, so throw
|
||||||
if (!path) {
|
if (!path) {
|
||||||
return doThrow("path must not be empty", TypeError);
|
return doThrow("path must not be empty", TypeError);
|
||||||
} // Check if it is a relative path
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Check if it is a relative path
|
||||||
if (checkPath.isNotRelative(path)) {
|
if (checkPath.isNotRelative(path)) {
|
||||||
var r = '`path.relative()`d';
|
var r = '`path.relative()`d';
|
||||||
return doThrow("path should be a ".concat(r, " string, but got \"").concat(originalPath, "\""), RangeError);
|
return doThrow("path should be a ".concat(r, " string, but got \"").concat(originalPath, "\""), RangeError);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
var isNotRelative = function isNotRelative(path) {
|
var isNotRelative = function isNotRelative(path) {
|
||||||
return REGEX_TEST_INVALID_PATH.test(path);
|
return REGEX_TEST_INVALID_PATH.test(path);
|
||||||
};
|
};
|
||||||
|
|
||||||
checkPath.isNotRelative = isNotRelative;
|
checkPath.isNotRelative = isNotRelative;
|
||||||
|
|
||||||
checkPath.convert = function (p) {
|
checkPath.convert = function (p) {
|
||||||
return p;
|
return p;
|
||||||
};
|
};
|
||||||
|
|
||||||
var Ignore = /*#__PURE__*/function () {
|
var Ignore = /*#__PURE__*/function () {
|
||||||
function Ignore() {
|
function Ignore() {
|
||||||
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
||||||
_ref$ignorecase = _ref.ignorecase,
|
_ref$ignorecase = _ref.ignorecase,
|
||||||
ignorecase = _ref$ignorecase === void 0 ? true : _ref$ignorecase,
|
ignorecase = _ref$ignorecase === void 0 ? true : _ref$ignorecase,
|
||||||
_ref$ignoreCase = _ref.ignoreCase,
|
_ref$ignoreCase = _ref.ignoreCase,
|
||||||
ignoreCase = _ref$ignoreCase === void 0 ? ignorecase : _ref$ignoreCase,
|
ignoreCase = _ref$ignoreCase === void 0 ? ignorecase : _ref$ignoreCase,
|
||||||
_ref$allowRelativePat = _ref.allowRelativePaths,
|
_ref$allowRelativePat = _ref.allowRelativePaths,
|
||||||
allowRelativePaths = _ref$allowRelativePat === void 0 ? false : _ref$allowRelativePat;
|
allowRelativePaths = _ref$allowRelativePat === void 0 ? false : _ref$allowRelativePat;
|
||||||
|
|
||||||
_classCallCheck(this, Ignore);
|
_classCallCheck(this, Ignore);
|
||||||
|
|
||||||
define(this, KEY_IGNORE, true);
|
define(this, KEY_IGNORE, true);
|
||||||
this._rules = [];
|
this._rules = [];
|
||||||
this._ignoreCase = ignoreCase;
|
this._ignoreCase = ignoreCase;
|
||||||
this._allowRelativePaths = allowRelativePaths;
|
this._allowRelativePaths = allowRelativePaths;
|
||||||
|
|
||||||
this._initCache();
|
this._initCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
_createClass(Ignore, [{
|
_createClass(Ignore, [{
|
||||||
key: "_initCache",
|
key: "_initCache",
|
||||||
value: function _initCache() {
|
value: function _initCache() {
|
||||||
@ -332,78 +376,79 @@ var Ignore = /*#__PURE__*/function () {
|
|||||||
this._added = true;
|
this._added = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (checkPattern(pattern)) {
|
if (checkPattern(pattern)) {
|
||||||
var rule = createRule(pattern, this._ignoreCase);
|
var rule = createRule(pattern, this._ignoreCase);
|
||||||
this._added = true;
|
this._added = true;
|
||||||
|
|
||||||
this._rules.push(rule);
|
this._rules.push(rule);
|
||||||
}
|
}
|
||||||
} // @param {Array<string> | string | Ignore} pattern
|
}
|
||||||
|
|
||||||
|
// @param {Array<string> | string | Ignore} pattern
|
||||||
}, {
|
}, {
|
||||||
key: "add",
|
key: "add",
|
||||||
value: function add(pattern) {
|
value: function add(pattern) {
|
||||||
this._added = false;
|
this._added = false;
|
||||||
makeArray(isString(pattern) ? splitPattern(pattern) : pattern).forEach(this._addPattern, this); // Some rules have just added to the ignore,
|
makeArray(isString(pattern) ? splitPattern(pattern) : pattern).forEach(this._addPattern, this);
|
||||||
// making the behavior changed.
|
|
||||||
|
|
||||||
|
// Some rules have just added to the ignore,
|
||||||
|
// making the behavior changed.
|
||||||
if (this._added) {
|
if (this._added) {
|
||||||
this._initCache();
|
this._initCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
} // legacy
|
}
|
||||||
|
|
||||||
|
// legacy
|
||||||
}, {
|
}, {
|
||||||
key: "addPattern",
|
key: "addPattern",
|
||||||
value: function addPattern(pattern) {
|
value: function addPattern(pattern) {
|
||||||
return this.add(pattern);
|
return this.add(pattern);
|
||||||
} // | ignored : unignored
|
}
|
||||||
|
|
||||||
|
// | ignored : unignored
|
||||||
// negative | 0:0 | 0:1 | 1:0 | 1:1
|
// negative | 0:0 | 0:1 | 1:0 | 1:1
|
||||||
// -------- | ------- | ------- | ------- | --------
|
// -------- | ------- | ------- | ------- | --------
|
||||||
// 0 | TEST | TEST | SKIP | X
|
// 0 | TEST | TEST | SKIP | X
|
||||||
// 1 | TESTIF | SKIP | TEST | X
|
// 1 | TESTIF | SKIP | TEST | X
|
||||||
|
|
||||||
// - SKIP: always skip
|
// - SKIP: always skip
|
||||||
// - TEST: always test
|
// - TEST: always test
|
||||||
// - TESTIF: only test if checkUnignored
|
// - TESTIF: only test if checkUnignored
|
||||||
// - X: that never happen
|
// - X: that never happen
|
||||||
|
|
||||||
// @param {boolean} whether should check if the path is unignored,
|
// @param {boolean} whether should check if the path is unignored,
|
||||||
// setting `checkUnignored` to `false` could reduce additional
|
// setting `checkUnignored` to `false` could reduce additional
|
||||||
// path matching.
|
// path matching.
|
||||||
// @returns {TestResult} true if a file is ignored
|
|
||||||
|
|
||||||
|
// @returns {TestResult} true if a file is ignored
|
||||||
}, {
|
}, {
|
||||||
key: "_testOne",
|
key: "_testOne",
|
||||||
value: function _testOne(path, checkUnignored) {
|
value: function _testOne(path, checkUnignored) {
|
||||||
var ignored = false;
|
var ignored = false;
|
||||||
var unignored = false;
|
var unignored = false;
|
||||||
|
|
||||||
this._rules.forEach(function (rule) {
|
this._rules.forEach(function (rule) {
|
||||||
var negative = rule.negative;
|
var negative = rule.negative;
|
||||||
|
|
||||||
if (unignored === negative && ignored !== unignored || negative && !ignored && !unignored && !checkUnignored) {
|
if (unignored === negative && ignored !== unignored || negative && !ignored && !unignored && !checkUnignored) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var matched = rule.regex.test(path);
|
var matched = rule.regex.test(path);
|
||||||
|
|
||||||
if (matched) {
|
if (matched) {
|
||||||
ignored = !negative;
|
ignored = !negative;
|
||||||
unignored = negative;
|
unignored = negative;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
ignored: ignored,
|
ignored: ignored,
|
||||||
unignored: unignored
|
unignored: unignored
|
||||||
};
|
};
|
||||||
} // @returns {TestResult}
|
}
|
||||||
|
|
||||||
|
// @returns {TestResult}
|
||||||
}, {
|
}, {
|
||||||
key: "_test",
|
key: "_test",
|
||||||
value: function _test(originalPath, cache, checkUnignored, slices) {
|
value: function _test(originalPath, cache, checkUnignored, slices) {
|
||||||
var path = originalPath // Supports nullable path
|
var path = originalPath
|
||||||
|
// Supports nullable path
|
||||||
&& checkPath.convert(originalPath);
|
&& checkPath.convert(originalPath);
|
||||||
checkPath(path, originalPath, this._allowRelativePaths ? RETURN_FALSE : throwError);
|
checkPath(path, originalPath, this._allowRelativePaths ? RETURN_FALSE : throwError);
|
||||||
return this._t(path, cache, checkUnignored, slices);
|
return this._t(path, cache, checkUnignored, slices);
|
||||||
@ -414,23 +459,22 @@ var Ignore = /*#__PURE__*/function () {
|
|||||||
if (path in cache) {
|
if (path in cache) {
|
||||||
return cache[path];
|
return cache[path];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!slices) {
|
if (!slices) {
|
||||||
// path/to/a.js
|
// path/to/a.js
|
||||||
// ['path', 'to', 'a.js']
|
// ['path', 'to', 'a.js']
|
||||||
slices = path.split(SLASH);
|
slices = path.split(SLASH);
|
||||||
}
|
}
|
||||||
|
slices.pop();
|
||||||
|
|
||||||
slices.pop(); // If the path has no parent directory, just test it
|
// If the path has no parent directory, just test it
|
||||||
|
|
||||||
if (!slices.length) {
|
if (!slices.length) {
|
||||||
return cache[path] = this._testOne(path, checkUnignored);
|
return cache[path] = this._testOne(path, checkUnignored);
|
||||||
}
|
}
|
||||||
|
var parent = this._t(slices.join(SLASH) + SLASH, cache, checkUnignored, slices);
|
||||||
|
|
||||||
var parent = this._t(slices.join(SLASH) + SLASH, cache, checkUnignored, slices); // If the path contains a parent directory, check the parent first
|
// If the path contains a parent directory, check the parent first
|
||||||
|
return cache[path] = parent.ignored
|
||||||
|
// > It is not possible to re-include a file if a parent directory of
|
||||||
return cache[path] = parent.ignored // > It is not possible to re-include a file if a parent directory of
|
|
||||||
// > that file is excluded.
|
// > that file is excluded.
|
||||||
? parent : this._testOne(path, checkUnignored);
|
? parent : this._testOne(path, checkUnignored);
|
||||||
}
|
}
|
||||||
@ -443,7 +487,6 @@ var Ignore = /*#__PURE__*/function () {
|
|||||||
key: "createFilter",
|
key: "createFilter",
|
||||||
value: function createFilter() {
|
value: function createFilter() {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
|
|
||||||
return function (path) {
|
return function (path) {
|
||||||
return !_this.ignores(path);
|
return !_this.ignores(path);
|
||||||
};
|
};
|
||||||
@ -452,46 +495,44 @@ var Ignore = /*#__PURE__*/function () {
|
|||||||
key: "filter",
|
key: "filter",
|
||||||
value: function filter(paths) {
|
value: function filter(paths) {
|
||||||
return makeArray(paths).filter(this.createFilter());
|
return makeArray(paths).filter(this.createFilter());
|
||||||
} // @returns {TestResult}
|
}
|
||||||
|
|
||||||
|
// @returns {TestResult}
|
||||||
}, {
|
}, {
|
||||||
key: "test",
|
key: "test",
|
||||||
value: function test(path) {
|
value: function test(path) {
|
||||||
return this._test(path, this._testCache, true);
|
return this._test(path, this._testCache, true);
|
||||||
}
|
}
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
return Ignore;
|
return Ignore;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
var factory = function factory(options) {
|
var factory = function factory(options) {
|
||||||
return new Ignore(options);
|
return new Ignore(options);
|
||||||
};
|
};
|
||||||
|
|
||||||
var isPathValid = function isPathValid(path) {
|
var isPathValid = function isPathValid(path) {
|
||||||
return checkPath(path && checkPath.convert(path), path, RETURN_FALSE);
|
return checkPath(path && checkPath.convert(path), path, RETURN_FALSE);
|
||||||
};
|
};
|
||||||
|
factory.isPathValid = isPathValid;
|
||||||
|
|
||||||
factory.isPathValid = isPathValid; // Fixes typescript
|
// Fixes typescript
|
||||||
|
|
||||||
factory["default"] = factory;
|
factory["default"] = factory;
|
||||||
module.exports = factory; // Windows
|
module.exports = factory;
|
||||||
|
|
||||||
|
// Windows
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
|
/* istanbul ignore if */
|
||||||
/* istanbul ignore if */
|
if (
|
||||||
|
// Detect `process` so that it can run in browsers.
|
||||||
if ( // Detect `process` so that it can run in browsers.
|
|
||||||
typeof process !== 'undefined' && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === 'win32')) {
|
typeof process !== 'undefined' && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === 'win32')) {
|
||||||
/* eslint no-control-regex: "off" */
|
/* eslint no-control-regex: "off" */
|
||||||
var makePosix = function makePosix(str) {
|
var makePosix = function makePosix(str) {
|
||||||
return /^\\\\\?\\/.test(str) || /[\0-\x1F"<>\|]+/.test(str) ? str : str.replace(/\\/g, '/');
|
return /^\\\\\?\\/.test(str) || /[\0-\x1F"<>\|]+/.test(str) ? str : str.replace(/\\/g, '/');
|
||||||
};
|
};
|
||||||
|
checkPath.convert = makePosix;
|
||||||
|
|
||||||
checkPath.convert = makePosix; // 'C:\\foo' <- 'C:\\foo' has been converted to 'C:/'
|
// 'C:\\foo' <- 'C:\\foo' has been converted to 'C:/'
|
||||||
// 'd:\\foo'
|
// 'd:\\foo'
|
||||||
|
|
||||||
var REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i;
|
var REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i;
|
||||||
|
|
||||||
checkPath.isNotRelative = function (path) {
|
checkPath.isNotRelative = function (path) {
|
||||||
return REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path) || isNotRelative(path);
|
return REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path) || isNotRelative(path);
|
||||||
};
|
};
|
||||||
|
24
node_modules/ignore/package.json
generated
vendored
24
node_modules/ignore/package.json
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ignore",
|
"name": "ignore",
|
||||||
"version": "5.2.0",
|
"version": "5.2.4",
|
||||||
"description": "Ignore is a manager and filter for .gitignore rules, the one used by eslint, gitbook and many others.",
|
"description": "Ignore is a manager and filter for .gitignore rules, the one used by eslint, gitbook and many others.",
|
||||||
"files": [
|
"files": [
|
||||||
"legacy.js",
|
"legacy.js",
|
||||||
@ -19,10 +19,12 @@
|
|||||||
"test:ignore": "npm run tap test/ignore.js",
|
"test:ignore": "npm run tap test/ignore.js",
|
||||||
"test:others": "npm run tap test/others.js",
|
"test:others": "npm run tap test/others.js",
|
||||||
"test:cases": "npm run tap test/*.js -- --coverage",
|
"test:cases": "npm run tap test/*.js -- --coverage",
|
||||||
|
"test:no-coverage": "npm run tap test/*.js -- --no-check-coverage",
|
||||||
"test:only": "npm run test:lint && npm run test:tsc && npm run test:ts && npm run test:cases",
|
"test:only": "npm run test:lint && npm run test:tsc && npm run test:ts && npm run test:cases",
|
||||||
"test": "npm run test:only",
|
"test": "npm run test:only",
|
||||||
"test:win32": "IGNORE_TEST_WIN32=1 npm run test",
|
"test:win32": "IGNORE_TEST_WIN32=1 npm run test",
|
||||||
"posttest": "tap --coverage-report=html && codecov"
|
"report": "tap --coverage-report=html",
|
||||||
|
"posttest": "npm run report && codecov"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -49,21 +51,21 @@
|
|||||||
"url": "https://github.com/kaelzhang/node-ignore/issues"
|
"url": "https://github.com/kaelzhang/node-ignore/issues"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.8.4",
|
"@babel/cli": "^7.19.3",
|
||||||
"@babel/core": "^7.9.6",
|
"@babel/core": "^7.20.5",
|
||||||
"@babel/preset-env": "^7.9.6",
|
"@babel/preset-env": "^7.20.2",
|
||||||
"codecov": "^3.7.0",
|
"codecov": "^3.8.2",
|
||||||
"debug": "^4.1.1",
|
"debug": "^4.3.4",
|
||||||
"eslint": "^7.0.0",
|
"eslint": "^8.30.0",
|
||||||
"eslint-config-ostai": "^3.0.0",
|
"eslint-config-ostai": "^3.0.0",
|
||||||
"eslint-plugin-import": "^2.20.2",
|
"eslint-plugin-import": "^2.26.0",
|
||||||
"mkdirp": "^1.0.4",
|
"mkdirp": "^1.0.4",
|
||||||
"pre-suf": "^1.1.1",
|
"pre-suf": "^1.1.1",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"spawn-sync": "^2.0.0",
|
"spawn-sync": "^2.0.0",
|
||||||
"tap": "^14.10.7",
|
"tap": "^16.3.2",
|
||||||
"tmp": "0.2.1",
|
"tmp": "0.2.1",
|
||||||
"typescript": "^3.9.3"
|
"typescript": "^4.9.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 4"
|
"node": ">= 4"
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user