{
  "_args": [
    [
      {
        "raw": "fast-glob@^2.0.4",
        "scope": null,
        "escapedName": "fast-glob",
        "name": "fast-glob",
        "rawSpec": "^2.0.4",
        "spec": ">=2.0.4 <3.0.0",
        "type": "range"
      },
      "/home/zkochan/src/pnpm/packages/pnpm/node_modules/find-packages"
    ]
  ],
  "_from": "fast-glob@>=2.0.4 <3.0.0",
  "_id": "fast-glob@2.2.2",
  "_inCache": true,
  "_location": "/fast-glob",
  "_nodeVersion": "10.0.0",
  "_npmOperationalInternal": {
    "host": "s3://npm-registry-packages",
    "tmp": "tmp/fast-glob_2.2.2_1526414004029_0.20552151849582811"
  },
  "_npmUser": {
    "name": "mrmlnc",
    "email": "dmalinochkin@rambler.ru"
  },
  "_npmVersion": "5.6.0",
  "_phantomChildren": {},
  "_requested": {
    "raw": "fast-glob@^2.0.4",
    "scope": null,
    "escapedName": "fast-glob",
    "name": "fast-glob",
    "rawSpec": "^2.0.4",
    "spec": ">=2.0.4 <3.0.0",
    "type": "range"
  },
  "_requiredBy": [
    "/find-packages"
  ],
  "_resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz",
  "_shasum": "71723338ac9b4e0e2fff1d6748a2a13d5ed352bf",
  "_shrinkwrap": null,
  "_spec": "fast-glob@^2.0.4",
  "_where": "/home/zkochan/src/pnpm/packages/pnpm/node_modules/find-packages",
  "author": {
    "name": "Denis Malinochkin",
    "url": "canonium.com"
  },
  "bugs": {
    "url": "https://github.com/mrmlnc/fast-glob/issues"
  },
  "dependencies": {
    "@mrmlnc/readdir-enhanced": "^2.2.1",
    "@nodelib/fs.stat": "^1.0.1",
    "glob-parent": "^3.1.0",
    "is-glob": "^4.0.0",
    "merge2": "^1.2.1",
    "micromatch": "^3.1.10"
  },
  "description": "Is a faster `node-glob` alternative",
  "devDependencies": {
    "@types/bash-glob": "^2.0.0",
    "@types/compute-stdev": "^1.0.0",
    "@types/easy-table": "0.0.31",
    "@types/execa": "^0.9.0",
    "@types/glob": "^5.0.35",
    "@types/glob-parent": "^3.1.0",
    "@types/glob-stream": "^6.1.0",
    "@types/globby": "^6.1.0",
    "@types/is-glob": "^4.0.0",
    "@types/merge2": "^1.1.4",
    "@types/micromatch": "^3.1.0",
    "@types/minimist": "^1.2.0",
    "@types/mocha": "^5.2.0",
    "@types/node": "^9.6.6",
    "@types/rimraf": "2.0.2",
    "bash-glob": "^2.0.0",
    "compute-stdev": "^1.0.0",
    "easy-table": "^1.1.1",
    "execa": "^0.10.0",
    "fast-glob": "^2.2.0",
    "glob": "^7.1.2",
    "glob-stream": "^6.1.0",
    "globby": "^8.0.1",
    "minimist": "^1.2.0",
    "mocha": "^5.1.1",
    "rimraf": "^2.6.2",
    "tslint": "^5.9.1",
    "tslint-config-mrmlnc": "^1.0.0",
    "typescript": "^2.8.3"
  },
  "directories": {},
  "dist": {
    "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==",
    "shasum": "71723338ac9b4e0e2fff1d6748a2a13d5ed352bf",
    "tarball": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz",
    "fileCount": 39,
    "unpackedSize": 68259,
    "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+zq1CRA9TVsSAnZWagAAJW8P/i0PuU6V4envjgUXDU4D\n2SVxwKWeKuybODwFA7q0wX4DM3RRchPejZwGx9mt9lBjz7BSYYf1ZVak+csK\nNHz8jR8rELl5g6bsvjJSS+h0/yizti9LDF52KF6YOTp+MF1FmH/k+bkE109K\nx4CibiJo4DHP6HBm3rTLL3mOyNlq7iHVkPftpjx1ZeT//2KD+oPTqp0Y0PsW\n2bOc0Cy2zhV/OW4o7c3nnKRY/iXYU/eizxLfCWuywFHMPMn/RXsNB2Jnxvmo\narqiLPZQyMoMcTGfuVvwhlyA6/SkkOm+sdMav2T+mSwPie2RnLGlE8net3W+\nC9XP5t3OpOFCZKJkhDS2e+5W6f/yPuW8JdTWi/vAa5yq4KG5jKUtrebhmslS\nFk5M7PhLYM8bA0jT/EB4lMwAEibPdTYetwzXTcDyXAJJnCldSoSIV77YCFoW\nJxm3AI/1lac0/bEX2noo3eclvwD0vMrFObij9XAiJNY+e5xYY/Jf0ZWr6t5c\n553EPfXLSmgttqM9YEsTwj3QghIWMQJE7BggaIb4da54Mg1JTctkoQ7kRFNo\neNF/46vH28tuiGzuez/JV82Zv/pxnfFebUh/AZ7nxUP3VnEcE+w4uqDlUXB7\n2B4mP5ZZq1uo23KnpVXCZ/4ssQiY9tM1qVMt5nC2ZPSZSjl7F9ToKFlkZYlk\nZlsV\r\n=HXwS\r\n-----END PGP SIGNATURE-----\r\n"
  },
  "engines": {
    "node": ">=4.0.0"
  },
  "gitHead": "8d340033ffc557ab6a38dd702a68a0cc9ab0aea3",
  "homepage": "https://github.com/mrmlnc/fast-glob#readme",
  "keywords": [
    "glob",
    "patterns",
    "fast",
    "implementation"
  ],
  "license": "MIT",
  "main": "index.js",
  "maintainers": [
    {
      "name": "mrmlnc",
      "email": "dmalinochkin@rambler.ru"
    }
  ],
  "name": "fast-glob",
  "optionalDependencies": {},
  "readme": "# :rocket: fast-glob\n\n> Is a faster [`node-glob`](https://github.com/isaacs/node-glob) alternative.\n\n[![Build Status](https://travis-ci.org/mrmlnc/fast-glob.svg?branch=master)](https://travis-ci.org/mrmlnc/fast-glob)\n[![Build status](https://ci.appveyor.com/api/projects/status/i4xqijtq26qf6o9d?svg=true)](https://ci.appveyor.com/project/mrmlnc/fast-glob)\n\n## :bulb: Highlights\n\n  * :rocket: Fast by using Streams and Promises. Used [readdir-enhanced](https://github.com/BigstickCarpet/readdir-enhanced) and [micromatch](https://github.com/jonschlinkert/micromatch).\n  * :beginner: User-friendly, since it supports multiple and negated patterns (`['*', '!*.md']`).\n  * :vertical_traffic_light: Rational, because it doesn't read excluded directories (`!**/node_modules/**`).\n  * :gear: Universal, because it supports Synchronous, Promise and Stream API.\n  * :money_with_wings: Economy, because it provides `fs.Stats` for matched path if you wanted.\n\n## Donate\n\nIf you want to thank me, or promote your Issue.\n\n[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/mrmlnc)\n\n> Sorry, but I have work and support for packages requires some time after work. I will be glad of your support and PR's.\n\n## Install\n\n```\n$ npm install --save fast-glob\n```\n\n## Usage\n\n#### Asynchronous\n\n```js\nconst fg = require('fast-glob');\n\nfg(['src/**/*.js', '!src/**/*.spec.js']).then((entries) => console.log(entries));\nfg.async(['src/**/*.js', '!src/**/*.spec.js']).then((entries) => console.log(entries));\n```\n\n#### Synchronous\n\n```js\nconst fg = require('fast-glob');\n\nconst entries = fg.sync(['src/**/*.js', '!src/**/*.spec.js']);\nconsole.log(entries);\n```\n\n#### Stream\n\n```js\nconst fg = require('fast-glob');\n\nconst stream = fg.stream(['src/**/*.js', '!src/**/*.spec.js']);\n\nconst entries = [];\n\nstream.on('data', (entry) => entries.push(entry));\nstream.once('error', console.log);\nstream.once('end', () => console.log(entries));\n```\n\n## API\n\n### fg(patterns, [options])\n### fg.async(patterns, [options])\n\nReturns a `Promise<Array>` of matching entries.\n\n#### patterns\n\n  * Type: `string|string[]`\n\nThis package does not respect the order of patterns. First, all the negative patterns are applied, and only then the positive patterns.\n\n#### options\n\n  * Type: `Object`\n\nSee [options](#options-1) section for more detailed information.\n\n### fg.sync(patterns, [options])\n\nReturns a `Array` of matching entries.\n\n### fg.stream(patterns, [options])\n\nReturns a [`ReadableStream`](https://nodejs.org/api/stream.html#stream_readable_streams).\n\n### fg.generateTasks(patterns, [options])\n\nReturn a set of tasks based on provided patterns. All tasks satisfy the `Task` interface:\n\n```ts\ninterface Task {\n  /**\n   * Parent directory for all patterns inside this task.\n   */\n  base: string;\n  /**\n   * Dynamic or static patterns are in this task.\n   */\n  dynamic: boolean;\n  /**\n   * All patterns.\n   */\n  patterns: string[];\n  /**\n   * Only positive patterns.\n   */\n  positive: string[];\n  /**\n   * Only negative patterns without ! symbol.\n   */\n  negative: string[];\n}\n```\n\n## Options\n\n#### cwd\n\n  * Type: `string`\n  * Default: `process.cwd()`\n\nThe current working directory in which to search.\n\n#### deep\n\n  * Type: `number|boolean`\n  * Default: `true`\n\nThe deep option can be set to `true` to traverse the entire directory structure, or it can be set to a *number* to only traverse that many levels deep.\n\n#### ignore\n\n  * Type: `string[]`\n  * Default: `[]`\n\nAn array of glob patterns to exclude matches.\n\n#### dot\n\n  * Type: `boolean`\n  * Default: `false`\n\nAllow patterns to match filenames starting with a period (files & directories), even if the pattern does not explicitly have a period in that spot.\n\n#### stats\n\n  * Type: `number|boolean`\n  * Default: `false`\n\nReturn `fs.Stats` with `path` property instead of file path.\n\n#### onlyFiles\n\n  * Type: `boolean`\n  * Default: `true`\n\nReturn only files.\n\n#### onlyDirectories\n\n  * Type: `boolean`\n  * Default: `false`\n\nReturn only directories.\n\n#### followSymlinkedDirectories\n\n  * Type: `boolean`\n  * Default: `true`\n\nFollow symlinked directories when expanding `**` patterns.\n\n#### unique\n\n  * Type: `boolean`\n  * Default: `true`\n\nPrevent duplicate results.\n\n#### markDirectories\n\n  * Type: `boolean`\n  * Default: `false`\n\nAdd a `/` character to directory entries.\n\n#### absolute\n\n  * Type: `boolean`\n  * Default: `false`\n\nReturn absolute paths for matched entries.\n\n#### nobrace\n\n  * Type: `boolean`\n  * Default: `false`\n\nDisable expansion of brace patterns (`{a,b}`, `{1..3}`).\n\n#### brace\n\n  * Type: `boolean`\n  * Default: `true`\n\nThe [`nobrace`](#nobrace) option without double-negation. This option has a higher priority then `nobrace`.\n\n#### noglobstar\n\n  * Type: `boolean`\n  * Default: `false`\n\nDisable matching with globstars (`**`).\n\n#### globstar\n\n  * Type: `boolean`\n  * Default: `true`\n\nThe [`noglobstar`](#noglobstar) option without double-negation. This option has a higher priority then `noglobstar`.\n\n#### noext\n\n  * Type: `boolean`\n  * Default: `false`\n\nDisable extglob support (patterns like `+(a|b)`), so that extglobs are regarded as literal characters.\n\n#### extension\n\n  * Type: `boolean`\n  * Default: `true`\n\nThe [`noext`](#noext) option without double-negation. This option has a higher priority then `noext`.\n\n#### nocase\n\n  * Type: `boolean`\n  * Default: `false`\n\nDisable a case-insensitive regex for matching files.\n\n#### case\n\n  * Type: `boolean`\n  * Default: `true`\n\nThe [`nocase`](#nocase) option without double-negation. This option has a higher priority then `nocase`.\n\n#### matchBase\n\n  * Type: `boolean`\n  * Default: `false`\n\nAllow glob patterns without slashes to match a file path based on its basename. For example, `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.\n\n#### transform\n\n  * Type: `Function`\n  * Default: `null`\n\nAllows you to transform a path or `fs.Stats` object before sending to the array.\n\n```js\nconst fg = require('fast-glob');\n\nconst entries1 = fg.sync(['**/*.scss']);\nconst entries2 = fg.sync(['**/*.scss'], { transform: (entry) => '_' + entry });\n\nconsole.log(entries1); // ['a.scss', 'b.scss']\nconsole.log(entries2); // ['_a.scss', '_b.scss']\n```\n\nIf you are using **TypeScript**, you probably want to specify your own type of the returned array.\n\n```ts\nimport * as fg from 'fast-glob';\n\ninterface IMyOwnEntry {\n\tpath: string;\n}\n\nconst entries: IMyOwnEntry[] = fg.sync<IMyOwnEntry>(['*.md'], {\n\ttransform: (entry) => typeof entry === 'string' ? { path: entry } : { path: entry.path }\n\t// Will throw compilation error for non-IMyOwnEntry types (boolean, for example)\n});\n```\n\n## How to exclude directory from reading?\n\nYou can use a negative pattern like this: `!**/node_modules` or `!**/node_modules/**`. Also you can use `ignore` option. Just look at the example below.\n\n```\nfirst/\n├── file.md\n└── second\n    └── file.txt\n```\n\nIf you don't want to read the `second` directory, you must write the following pattern: `!**/second` or `!**/second/**`.\n\n```js\nfg.sync(['**/*.md', '!**/second']); // ['first/file.txt']\nfg.sync(['**/*.md'], { ignore: '**/second/**' }); // ['first/file.txt']\n```\n\n> :warning: When you write `!**/second/**/*` it means that the directory will be **read**, but all the entries will not be included in the results.\n\nYou have to understand that if you write the pattern to exclude directories, then the directory will not be read under any circumstances.\n\n## Compatible with `node-glob`?\n\nNot fully, because `fast-glob` does not implement all options of `node-glob`. See table below.\n\n| node-glob    | fast-glob |\n| :----------: | :-------: |\n| `cwd`        | [`cwd`](#cwd) |\n| `root`       | – |\n| `dot`        | [`dot`](#dot) |\n| `nomount`    | – |\n| `mark`       | [`markDirectories`](#markdirectories) |\n| `nosort`     | – |\n| `nounique`   | [`unique`](#unique) |\n| `nobrace`    | [`nobrace`](#nobrace) or [`brace`](#brace) |\n| `noglobstar` | [`noglobstar`](#noglobstar) or [`globstar`](#globstar) |\n| `noext`      | [`noext`](#noext) or [`extension`](#extension) |\n| `nocase`     | [`nocase`](#nocase) or [`case`](#case) |\n| `matchBase`  | [`matchbase`](#matchbase) |\n| `nodir`      | [`onlyFiles`](#onlyfiles) |\n| `ignore`     | [`ignore`](#ignore) |\n| `follow`     | [`followSymlinkedDirectories`](#followsymlinkeddirectories) |\n| `realpath`   | – |\n| `absolute`   | [`absolute`](#absolute) |\n\n## Benchmarks\n\n**Tech specs:**\n\nServer: [Vultr Bare Metal](https://www.vultr.com/pricing/baremetal)\n\n  * Processor: E3-1270v6 (8 CPU)\n  * RAM: 32GB\n  * Disk: SSD\n\nYou can see results [here](https://gist.github.com/mrmlnc/f06246b197f53c356895fa35355a367c) for latest release.\n\n## Related\n\n  * [readdir-enhanced](https://github.com/BigstickCarpet/readdir-enhanced) – Fast functional replacement for `fs.readdir()`.\n  * [globby](https://github.com/sindresorhus/globby) – User-friendly glob matching.\n  * [node-glob](https://github.com/isaacs/node-glob) – «Standard» glob functionality for Node.js\n  * [bash-glob](https://github.com/micromatch/bash-glob) – Bash-powered globbing for node.js.\n  * [glob-stream](https://github.com/gulpjs/glob-stream) – A Readable Stream interface over node-glob that used in the [gulpjs](https://github.com/gulpjs/gulp).\n\n## Changelog\n\nSee the [Releases section of our GitHub project](https://github.com/mrmlnc/fast-glob/releases) for changelogs for each release version.\n\n## License\n\nThis software is released under the terms of the MIT license.\n",
  "readmeFilename": "README.md",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/mrmlnc/fast-glob.git"
  },
  "scripts": {
    "bench": "npm run build && npm run bench-async && npm run bench-sync",
    "bench-async": "npm run bench-async-1 && npm run bench-async-5 && npm run bench-async-10 && npm run bench-async-50 && npm run bench-async-100",
    "bench-async-1": "node ./out/benchmark --depth 1",
    "bench-async-10": "node ./out/benchmark --depth 10",
    "bench-async-100": "node ./out/benchmark --depth 100",
    "bench-async-5": "node ./out/benchmark --depth 5",
    "bench-async-50": "node ./out/benchmark --depth 50",
    "bench-sync": "npm run bench-sync-1 && npm run bench-sync-5 && npm run bench-sync-10 && npm run bench-sync-50 && npm run bench-sync-100",
    "bench-sync-1": "node ./out/benchmark --depth 1 --type sync",
    "bench-sync-10": "node ./out/benchmark --depth 10 --type sync",
    "bench-sync-100": "node ./out/benchmark --depth 100 --type sync",
    "bench-sync-5": "node ./out/benchmark --depth 5 --type sync",
    "bench-sync-50": "node ./out/benchmark --depth 50 --type sync",
    "build": "npm run clean && npm run lint && npm run compile && npm test",
    "clean": "rimraf out",
    "compile": "tsc",
    "lint": "tslint \"src/**/*.ts\" -p . -t stylish",
    "smoke": "mocha \"out/**/*.smoke.js\" -s 0",
    "test": "mocha \"out/**/*.spec.js\" -s 0",
    "watch": "npm run clean && npm run lint & npm run compile -- --sourceMap --watch"
  },
  "typings": "index.d.ts",
  "version": "2.2.2"
}
