{
  "_args": [
    [
      {
        "raw": "thenify@>= 3.1.0 < 4",
        "scope": null,
        "escapedName": "thenify",
        "name": "thenify",
        "rawSpec": ">= 3.1.0 < 4",
        "spec": ">=3.1.0 <4.0.0",
        "type": "range"
      },
      "/home/zoltan/src/pnpm/pnpm/packages/pnpm/node_modules/thenify-all"
    ]
  ],
  "_from": "thenify@>=3.1.0 <4.0.0",
  "_id": "thenify@3.3.0",
  "_inCache": true,
  "_location": "/thenify",
  "_nodeVersion": "6.10.2",
  "_npmOperationalInternal": {
    "host": "packages-18-east.internal.npmjs.com",
    "tmp": "tmp/thenify-3.3.0.tgz_1495187910351_0.656304276548326"
  },
  "_npmUser": {
    "name": "dead_horse",
    "email": "dead_horse@qq.com"
  },
  "_npmVersion": "3.10.3",
  "_phantomChildren": {},
  "_requested": {
    "raw": "thenify@>= 3.1.0 < 4",
    "scope": null,
    "escapedName": "thenify",
    "name": "thenify",
    "rawSpec": ">= 3.1.0 < 4",
    "spec": ">=3.1.0 <4.0.0",
    "type": "range"
  },
  "_requiredBy": [
    "/thenify-all"
  ],
  "_resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz",
  "_shasum": "e69e38a1babe969b0108207978b9f62b88604839",
  "_shrinkwrap": null,
  "_spec": "thenify@>= 3.1.0 < 4",
  "_where": "/home/zoltan/src/pnpm/pnpm/packages/pnpm/node_modules/thenify-all",
  "author": {
    "name": "Jonathan Ong",
    "email": "me@jongleberry.com",
    "url": "http://jongleberry.com"
  },
  "bugs": {
    "url": "https://github.com/thenables/thenify/issues"
  },
  "dependencies": {
    "any-promise": "^1.0.0"
  },
  "description": "Promisify a callback-based function",
  "devDependencies": {
    "bluebird": "^3.1.1",
    "istanbul": "^0.4.0",
    "mocha": "^3.0.2"
  },
  "directories": {},
  "dist": {
    "shasum": "e69e38a1babe969b0108207978b9f62b88604839",
    "tarball": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz"
  },
  "files": [
    "index.js"
  ],
  "gitHead": "aa21cfb64f47238c764d258d0faf7366a8487e36",
  "homepage": "https://github.com/thenables/thenify#readme",
  "keywords": [
    "promisify",
    "promise",
    "thenify",
    "then",
    "es6"
  ],
  "license": "MIT",
  "maintainers": [
    {
      "name": "jongleberry",
      "email": "jonathanrichardong@gmail.com"
    },
    {
      "name": "dead-horse",
      "email": "dead_horse@qq.com"
    },
    {
      "name": "dead_horse",
      "email": "dead_horse@qq.com"
    }
  ],
  "name": "thenify",
  "optionalDependencies": {},
  "readme": "\n# thenify\n\n[![NPM version][npm-image]][npm-url]\n[![Build status][travis-image]][travis-url]\n[![Test coverage][coveralls-image]][coveralls-url]\n[![Dependency Status][david-image]][david-url]\n[![License][license-image]][license-url]\n[![Downloads][downloads-image]][downloads-url]\n\nPromisify a callback-based function using [`any-promise`](https://github.com/kevinbeaty/any-promise).\n\n- Preserves function names\n- Uses a native promise implementation if available and tries to fall back to a promise implementation such as `bluebird`\n- Converts multiple arguments from the callback into an `Array`, also support change the behavior by `options.multiArgs`\n- Resulting function never deoptimizes\n- Supports both callback and promise style\n\nAn added benefit is that `throw`n errors in that async function will be caught by the promise!\n\n## API\n\n### fn = thenify(fn, options)\n\nPromisifies a function.\n\n### Options\n\n`options` are optional.\n\n- `options.withCallback` - support both callback and promise style, default to `false`.\n- `options.multiArgs` - change the behavior when callback have multiple arguments. default to `true`.\n  - `true` - converts multiple arguments to an array\n  - `false`- always use the first argument\n  - `Array` - converts multiple arguments to an object with keys provided in `options.multiArgs`\n\n- Turn async functions into promises\n\n```js\nvar thenify = require('thenify');\n\nvar somethingAsync = thenify(function somethingAsync(a, b, c, callback) {\n  callback(null, a, b, c);\n});\n```\n\n- Backward compatible with callback\n\n```js\nvar thenify = require('thenify');\n\nvar somethingAsync = thenify(function somethingAsync(a, b, c, callback) {\n  callback(null, a, b, c);\n}, { withCallback: true });\n\n// somethingAsync(a, b, c).then(onFulfilled).catch(onRejected);\n// somethingAsync(a, b, c, function () {});\n```\n\nor use `thenify.withCallback()`\n\n```js\nvar thenify = require('thenify').withCallback;\n\nvar somethingAsync = thenify(function somethingAsync(a, b, c, callback) {\n  callback(null, a, b, c);\n});\n\n// somethingAsync(a, b, c).then(onFulfilled).catch(onRejected);\n// somethingAsync(a, b, c, function () {});\n```\n\n- Always return the first argument in callback\n\n```js\nvar thenify = require('thenify');\n\nvar promise = thenify(function (callback) {\n  callback(null, 1, 2, 3);\n}, { multiArgs: false });\n\n// promise().then(function onFulfilled(value) {\n//   assert.equal(value, 1);\n// });\n```\n\n- Converts callback arguments to an object\n\n```js\nvar thenify = require('thenify');\n\nvar promise = thenify(function (callback) {\n  callback(null, 1, 2, 3);\n}, { multiArgs: [ 'one', 'tow', 'three' ] });\n\n// promise().then(function onFulfilled(value) {\n//   assert.deepEqual(value, {\n//     one: 1,\n//     tow: 2,\n//     three: 3\n//   });\n// });\n```\n\n[gitter-image]: https://badges.gitter.im/thenables/thenify.png\n[gitter-url]: https://gitter.im/thenables/thenify\n[npm-image]: https://img.shields.io/npm/v/thenify.svg?style=flat-square\n[npm-url]: https://npmjs.org/package/thenify\n[github-tag]: http://img.shields.io/github/tag/thenables/thenify.svg?style=flat-square\n[github-url]: https://github.com/thenables/thenify/tags\n[travis-image]: https://img.shields.io/travis/thenables/thenify.svg?style=flat-square\n[travis-url]: https://travis-ci.org/thenables/thenify\n[coveralls-image]: https://img.shields.io/coveralls/thenables/thenify.svg?style=flat-square\n[coveralls-url]: https://coveralls.io/r/thenables/thenify\n[david-image]: http://img.shields.io/david/thenables/thenify.svg?style=flat-square\n[david-url]: https://david-dm.org/thenables/thenify\n[license-image]: http://img.shields.io/npm/l/thenify.svg?style=flat-square\n[license-url]: LICENSE\n[downloads-image]: http://img.shields.io/npm/dm/thenify.svg?style=flat-square\n[downloads-url]: https://npmjs.org/package/thenify\n",
  "readmeFilename": "README.md",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/thenables/thenify.git"
  },
  "scripts": {
    "test": "mocha --reporter spec",
    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot",
    "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
  },
  "version": "3.3.0"
}
