fsevents 1.0.10 → 1.0.11

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of fsevents might be problematic. Click here for more details.

Files changed (50) hide show
  1. package/node_modules/ansi-styles/package.json +4 -21
  2. package/node_modules/aws4/node_modules/lru-cache/README.md +1 -1
  3. package/node_modules/aws4/node_modules/lru-cache/lib/lru-cache.js +1 -0
  4. package/node_modules/aws4/node_modules/lru-cache/node_modules/pseudomap/package.json +2 -1
  5. package/node_modules/aws4/node_modules/lru-cache/node_modules/yallist/package.json +2 -1
  6. package/node_modules/aws4/node_modules/lru-cache/package.json +20 -12
  7. package/node_modules/aws4/package.json +2 -1
  8. package/node_modules/bl/package.json +2 -1
  9. package/node_modules/chalk/package.json +22 -17
  10. package/node_modules/dashdash/node_modules/assert-plus/package.json +2 -1
  11. package/node_modules/dashdash/package.json +2 -1
  12. package/node_modules/escape-string-regexp/package.json +2 -1
  13. package/node_modules/form-data/package.json +2 -1
  14. package/node_modules/is-my-json-valid/package.json +2 -1
  15. package/node_modules/mime-db/package.json +2 -1
  16. package/node_modules/mime-types/package.json +2 -1
  17. package/node_modules/node-pre-gyp/CHANGELOG.md +6 -0
  18. package/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json +8 -0
  19. package/node_modules/node-pre-gyp/lib/util/versioning.js +14 -2
  20. package/node_modules/node-pre-gyp/package.json +15 -15
  21. package/node_modules/oauth-sign/package.json +2 -1
  22. package/node_modules/once/package.json +1 -1
  23. package/node_modules/pinkie/package.json +2 -1
  24. package/node_modules/qs/package.json +2 -1
  25. package/node_modules/readable-stream/package.json +1 -1
  26. package/node_modules/request/package.json +2 -1
  27. package/node_modules/rimraf/node_modules/glob/package.json +2 -1
  28. package/node_modules/rimraf/package.json +2 -1
  29. package/node_modules/semver/package.json +2 -1
  30. package/node_modules/sshpk/package.json +2 -1
  31. package/node_modules/strip-ansi/package.json +2 -1
  32. package/node_modules/tar-pack/package.json +1 -1
  33. package/node_modules/tough-cookie/package.json +2 -1
  34. package/node_modules/tweetnacl/README.md +12 -4
  35. package/node_modules/tweetnacl/nacl-fast.js +1 -1
  36. package/node_modules/tweetnacl/nacl-fast.min.js +2 -2
  37. package/node_modules/tweetnacl/package.json +12 -11
  38. package/node_modules/verror/package.json +3 -2
  39. package/package.json +2 -2
  40. package/node_modules/ansi-styles/license +0 -21
  41. package/node_modules/aws4/node_modules/lru-cache/.npmignore +0 -4
  42. package/node_modules/aws4/node_modules/lru-cache/.travis.yml +0 -7
  43. package/node_modules/aws4/node_modules/lru-cache/CONTRIBUTORS +0 -14
  44. package/node_modules/aws4/node_modules/lru-cache/LICENSE +0 -15
  45. package/node_modules/aws4/node_modules/lru-cache/benchmarks/insertion-time.js +0 -32
  46. package/node_modules/aws4/node_modules/lru-cache/test/basic.js +0 -520
  47. package/node_modules/aws4/node_modules/lru-cache/test/foreach.js +0 -134
  48. package/node_modules/aws4/node_modules/lru-cache/test/inspect.js +0 -54
  49. package/node_modules/aws4/node_modules/lru-cache/test/no-symbol.js +0 -3
  50. package/node_modules/aws4/node_modules/lru-cache/test/serialize.js +0 -227
@@ -1,14 +1,6 @@
1
1
  {
2
- "_args": [
3
- [
4
- "ansi-styles@^2.1.0",
5
- "/Users/eshanker/Code/fsevents/node_modules/chalk"
6
- ]
7
- ],
8
- "_from": "ansi-styles@>=2.1.0 <3.0.0",
2
+ "_from": "ansi-styles@^2.2.1",
9
3
  "_id": "ansi-styles@2.2.1",
10
- "_inCache": true,
11
- "_installable": true,
12
4
  "_location": "/ansi-styles",
13
5
  "_nodeVersion": "4.3.0",
14
6
  "_npmOperationalInternal": {
@@ -21,22 +13,12 @@
21
13
  },
22
14
  "_npmVersion": "3.8.3",
23
15
  "_phantomChildren": {},
24
- "_requested": {
25
- "name": "ansi-styles",
26
- "raw": "ansi-styles@^2.1.0",
27
- "rawSpec": "^2.1.0",
28
- "scope": null,
29
- "spec": ">=2.1.0 <3.0.0",
30
- "type": "range"
31
- },
32
16
  "_requiredBy": [
33
17
  "/chalk"
34
18
  ],
35
19
  "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
36
20
  "_shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe",
37
21
  "_shrinkwrap": null,
38
- "_spec": "ansi-styles@^2.1.0",
39
- "_where": "/Users/eshanker/Code/fsevents/node_modules/chalk",
40
22
  "author": {
41
23
  "email": "sindresorhus@gmail.com",
42
24
  "name": "Sindre Sorhus",
@@ -53,7 +35,7 @@
53
35
  "directories": {},
54
36
  "dist": {
55
37
  "shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe",
56
- "tarball": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
38
+ "tarball": "http://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
57
39
  },
58
40
  "engines": {
59
41
  "node": ">=0.10.0"
@@ -94,7 +76,8 @@
94
76
  ],
95
77
  "name": "ansi-styles",
96
78
  "optionalDependencies": {},
97
- "readme": "ERROR: No README data found!",
79
+ "readme": "# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)\n\n> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal\n\nYou probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.\n\n![](screenshot.png)\n\n\n## Install\n\n```\n$ npm install --save ansi-styles\n```\n\n\n## Usage\n\n```js\nvar ansi = require('ansi-styles');\n\nconsole.log(ansi.green.open + 'Hello world!' + ansi.green.close);\n```\n\n\n## API\n\nEach style has an `open` and `close` property.\n\n\n## Styles\n\n### Modifiers\n\n- `reset`\n- `bold`\n- `dim`\n- `italic` *(not widely supported)*\n- `underline`\n- `inverse`\n- `hidden`\n- `strikethrough` *(not widely supported)*\n\n### Colors\n\n- `black`\n- `red`\n- `green`\n- `yellow`\n- `blue`\n- `magenta`\n- `cyan`\n- `white`\n- `gray`\n\n### Background colors\n\n- `bgBlack`\n- `bgRed`\n- `bgGreen`\n- `bgYellow`\n- `bgBlue`\n- `bgMagenta`\n- `bgCyan`\n- `bgWhite`\n\n\n## Advanced usage\n\nBy default you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.\n\n- `ansi.modifiers`\n- `ansi.colors`\n- `ansi.bgColors`\n\n\n###### Example\n\n```js\nconsole.log(ansi.colors.green.open);\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
80
+ "readmeFilename": "readme.md",
98
81
  "repository": {
99
82
  "type": "git",
100
83
  "url": "git+https://github.com/chalk/ansi-styles.git"
@@ -116,7 +116,7 @@ away.
116
116
 
117
117
  Return an array of the values in the cache.
118
118
 
119
- * `length()`
119
+ * `length`
120
120
 
121
121
  Return total length of objects in cache taking into account
122
122
  `length` options function.
@@ -12,6 +12,7 @@ var Yallist = require('yallist')
12
12
  var symbols = {}
13
13
  var hasSymbol = typeof Symbol === 'function'
14
14
  var makeSymbol
15
+ /* istanbul ignore if */
15
16
  if (hasSymbol) {
16
17
  makeSymbol = function (key) {
17
18
  return Symbol.for(key)
@@ -47,7 +47,8 @@
47
47
  ],
48
48
  "name": "pseudomap",
49
49
  "optionalDependencies": {},
50
- "readme": "ERROR: No README data found!",
50
+ "readme": "# pseudomap\n\nA thing that is a lot like ES6 `Map`, but without iterators, for use\nin environments where `for..of` syntax and `Map` are not available.\n\nIf you need iterators, or just in general a more faithful polyfill to\nES6 Maps, check out [es6-map](http://npm.im/es6-map).\n\nIf you are in an environment where `Map` is supported, then that will\nbe returned instead, unless `process.env.TEST_PSEUDOMAP` is set.\n\nYou can use any value as keys, and any value as data. Setting again\nwith the identical key will overwrite the previous value.\n\nInternally, data is stored on an `Object.create(null)` style object.\nThe key is coerced to a string to generate the key on the internal\ndata-bag object. The original key used is stored along with the data.\n\nIn the event of a stringified-key collision, a new key is generated by\nappending an increasing number to the stringified-key until finding\neither the intended key or an empty spot.\n\nNote that because object traversal order of plain objects is not\nguaranteed to be identical to insertion order, the insertion order\nguarantee of `Map.prototype.forEach` is not guaranteed in this\nimplementation. However, in all versions of Node.js and V8 where this\nmodule works, `forEach` does traverse data in insertion order.\n\n## API\n\nMost of the [Map\nAPI](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map),\nwith the following exceptions:\n\n1. A `Map` object is not an iterator.\n2. `values`, `keys`, and `entries` methods are not implemented,\n because they return iterators.\n3. The argument to the constructor can be an Array of `[key, value]`\n pairs, or a `Map` or `PseudoMap` object. But, since iterators\n aren't used, passing any plain-old iterator won't initialize the\n map properly.\n\n## USAGE\n\nUse just like a regular ES6 Map.\n\n```javascript\nvar PseudoMap = require('pseudomap')\n\n// optionally provide a pseudomap, or an array of [key,value] pairs\n// as the argument to initialize the map with\nvar myMap = new PseudoMap()\n\nmyMap.set(1, 'number 1')\nmyMap.set('1', 'string 1')\nvar akey = {}\nvar bkey = {}\nmyMap.set(akey, { some: 'data' })\nmyMap.set(bkey, { some: 'other data' })\n```\n",
51
+ "readmeFilename": "README.md",
51
52
  "repository": {
52
53
  "type": "git",
53
54
  "url": "git+https://github.com/isaacs/pseudomap.git"
@@ -47,7 +47,8 @@
47
47
  ],
48
48
  "name": "yallist",
49
49
  "optionalDependencies": {},
50
- "readme": "ERROR: No README data found!",
50
+ "readme": "# yallist\n\nYet Another Linked List\n\nThere are many doubly-linked list implementations like it, but this\none is mine.\n\nFor when an array would be too big, and a Map can't be iterated in\nreverse order.\n\n\n[![Build Status](https://travis-ci.org/isaacs/yallist.svg?branch=master)](https://travis-ci.org/isaacs/yallist) [![Coverage Status](https://coveralls.io/repos/isaacs/yallist/badge.svg?service=github)](https://coveralls.io/github/isaacs/yallist)\n\n## basic usage\n\n```javascript\nvar yallist = require('yallist')\nvar myList = yallist.create([1, 2, 3])\nmyList.push('foo')\nmyList.unshift('bar')\n// of course pop() and shift() are there, too\nconsole.log(myList.toArray()) // ['bar', 1, 2, 3, 'foo']\nmyList.forEach(function (k) {\n // walk the list head to tail\n})\nmyList.forEachReverse(function (k, index, list) {\n // walk the list tail to head\n})\nvar myDoubledList = myList.map(function (k) {\n return k + k\n})\n// now myDoubledList contains ['barbar', 2, 4, 6, 'foofoo']\n// mapReverse is also a thing\nvar myDoubledListReverse = myList.mapReverse(function (k) {\n return k + k\n}) // ['foofoo', 6, 4, 2, 'barbar']\n\nvar reduced = myList.reduce(function (set, entry) {\n set += entry\n return set\n}, 'start')\nconsole.log(reduced) // 'startfoo123bar'\n```\n\n## api\n\nThe whole API is considered \"public\".\n\nFunctions with the same name as an Array method work more or less the\nsame way.\n\nThere's reverse versions of most things because that's the point.\n\n### Yallist\n\nDefault export, the class that holds and manages a list.\n\nCall it with either a forEach-able (like an array) or a set of\narguments, to initialize the list.\n\nThe Array-ish methods all act like you'd expect. No magic length,\nthough, so if you change that it won't automatically prune or add\nempty spots.\n\n### Yallist.create(..)\n\nAlias for Yallist function. Some people like factories.\n\n#### yallist.head\n\nThe first node in the list\n\n#### yallist.tail\n\nThe last node in the list\n\n#### yallist.length\n\nThe number of nodes in the list. (Change this at your peril. It is\nnot magic like Array length.)\n\n#### yallist.toArray()\n\nConvert the list to an array.\n\n#### yallist.forEach(fn, [thisp])\n\nCall a function on each item in the list.\n\n#### yallist.forEachReverse(fn, [thisp])\n\nCall a function on each item in the list, in reverse order.\n\n#### yallist.get(n)\n\nGet the data at position `n` in the list. If you use this a lot,\nprobably better off just using an Array.\n\n#### yallist.getReverse(n)\n\nGet the data at position `n`, counting from the tail.\n\n#### yallist.map(fn, thisp)\n\nCreate a new Yallist with the result of calling the function on each\nitem.\n\n#### yallist.mapReverse(fn, thisp)\n\nSame as `map`, but in reverse.\n\n#### yallist.pop()\n\nGet the data from the list tail, and remove the tail from the list.\n\n#### yallist.push(item, ...)\n\nInsert one or more items to the tail of the list.\n\n#### yallist.reduce(fn, initialValue)\n\nLike Array.reduce.\n\n#### yallist.reduceReverse\n\nLike Array.reduce, but in reverse.\n\n#### yallist.reverse\n\nReverse the list in place.\n\n#### yallist.shift()\n\nGet the data from the list head, and remove the head from the list.\n\n#### yallist.slice([from], [to])\n\nJust like Array.slice, but returns a new Yallist.\n\n#### yallist.sliceReverse([from], [to])\n\nJust like yallist.slice, but the result is returned in reverse.\n\n#### yallist.toArray()\n\nCreate an array representation of the list.\n\n#### yallist.toArrayReverse()\n\nCreate a reversed array representation of the list.\n\n#### yallist.unshift(item, ...)\n\nInsert one or more items to the head of the list.\n\n#### yallist.unshiftNode(node)\n\nMove a Node object to the front of the list. (That is, pull it out of\nwherever it lives, and make it the new head.)\n\nIf the node belongs to a different list, then that list will remove it\nfirst.\n\n#### yallist.pushNode(node)\n\nMove a Node object to the end of the list. (That is, pull it out of\nwherever it lives, and make it the new tail.)\n\nIf the node belongs to a list already, then that list will remove it\nfirst.\n\n#### yallist.removeNode(node)\n\nRemove a node from the list, preserving referential integrity of head\nand tail and other nodes.\n\nWill throw an error if you try to have a list remove a node that\ndoesn't belong to it.\n\n### Yallist.Node\n\nThe class that holds the data and is actually the list.\n\nCall with `var n = new Node(value, previousNode, nextNode)`\n\nNote that if you do direct operations on Nodes themselves, it's very\neasy to get into weird states where the list is broken. Be careful :)\n\n#### node.next\n\nThe next node in the list.\n\n#### node.prev\n\nThe previous node in the list.\n\n#### node.value\n\nThe data the node contains.\n\n#### node.list\n\nThe list to which this node belongs. (Null if it does not belong to\nany list.)\n",
51
+ "readmeFilename": "README.md",
51
52
  "repository": {
52
53
  "type": "git",
53
54
  "url": "git+https://github.com/isaacs/yallist.git"
@@ -1,19 +1,23 @@
1
1
  {
2
2
  "_from": "lru-cache@^4.0.0",
3
- "_id": "lru-cache@4.0.0",
3
+ "_id": "lru-cache@4.0.1",
4
4
  "_location": "/aws4/lru-cache",
5
- "_nodeVersion": "4.0.0",
5
+ "_nodeVersion": "5.6.0",
6
+ "_npmOperationalInternal": {
7
+ "host": "packages-12-west.internal.npmjs.com",
8
+ "tmp": "tmp/lru-cache-4.0.1.tgz_1458667372415_0.8005518841091543"
9
+ },
6
10
  "_npmUser": {
7
11
  "email": "i@izs.me",
8
12
  "name": "isaacs"
9
13
  },
10
- "_npmVersion": "3.3.2",
14
+ "_npmVersion": "3.7.3",
11
15
  "_phantomChildren": {},
12
16
  "_requiredBy": [
13
17
  "/aws4"
14
18
  ],
15
- "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz",
16
- "_shasum": "b5cbf01556c16966febe54ceec0fb4dc90df6c28",
19
+ "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz",
20
+ "_shasum": "1343955edaf2e37d9b9e7ee7241e27c4b9fb72be",
17
21
  "_shrinkwrap": null,
18
22
  "author": {
19
23
  "email": "i@izs.me",
@@ -29,14 +33,17 @@
29
33
  "description": "A cache object that deletes the least-recently-used items.",
30
34
  "devDependencies": {
31
35
  "standard": "^5.4.1",
32
- "tap": "^2.3.3"
36
+ "tap": "^5.1.1"
33
37
  },
34
38
  "directories": {},
35
39
  "dist": {
36
- "shasum": "b5cbf01556c16966febe54ceec0fb4dc90df6c28",
37
- "tarball": "http://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz"
40
+ "shasum": "1343955edaf2e37d9b9e7ee7241e27c4b9fb72be",
41
+ "tarball": "http://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz"
38
42
  },
39
- "gitHead": "da374d4776aaef443765b43cb3617e09c170a5d5",
43
+ "files": [
44
+ "lib/lru-cache.js"
45
+ ],
46
+ "gitHead": "6cd8c8a43cf56c585bdb696faae94f9836cb9e28",
40
47
  "homepage": "https://github.com/isaacs/node-lru-cache#readme",
41
48
  "keywords": [
42
49
  "cache",
@@ -57,14 +64,15 @@
57
64
  ],
58
65
  "name": "lru-cache",
59
66
  "optionalDependencies": {},
60
- "readme": "ERROR: No README data found!",
67
+ "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n[![Build Status](https://travis-ci.org/isaacs/node-lru-cache.svg?branch=master)](https://travis-ci.org/isaacs/node-lru-cache) [![Coverage Status](https://coveralls.io/repos/isaacs/node-lru-cache/badge.svg?service=github)](https://coveralls.io/github/isaacs/node-lru-cache)\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n , options = { max: 500\n , length: function (n, key) { return n * 2 + key.length }\n , dispose: function (key, n) { n.close() }\n , maxAge: 1000 * 60 * 60 }\n , cache = LRU(options)\n , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\n// non-string keys ARE fully supported\nvar someObject = {}\ncache.set(someObject, 'a value')\ncache.set('[object Object]', 'a different value')\nassert.equal(cache.get(someObject), 'a value')\n\ncache.reset() // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum size of the cache, checked by applying the length\n function to all values in the cache. Not setting this is kind of\n silly, since that's the whole purpose of this lib, but it defaults\n to `Infinity`.\n* `maxAge` Maximum age in ms. Items are not pro-actively pruned out\n as they age, but if you try to get an item that is too old, it'll\n drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n items. If you're storing strings or buffers, then you probably want\n to do something like `function(n, key){return n.length}`. The default is\n `function(){return 1}`, which is fine if you want to store `max`\n like-sized things. They item is passed as the first argument, and\n the key is passed as the second argumnet.\n* `dispose` Function that is called on items when they are dropped\n from the cache. This can be handy if you want to close file\n descriptors or do other cleanup tasks when items are no longer\n accessible. Called with `key, value`. It's called *before*\n actually removing the item from the internal cache, so if you want\n to immediately put it back in, you'll have to do that in a\n `nextTick` or `setTimeout` callback or it won't do anything.\n* `stale` By default, if you set a `maxAge`, it'll only actually pull\n stale items out of the cache when you `get(key)`. (That is, it's\n not pre-emptively doing a `setTimeout` or anything.) If you set\n `stale:true`, it'll return the stale value before deleting it. If\n you don't set this, then it'll return `undefined` when you try to\n get a stale entry, as if it had already been deleted.\n\n## API\n\n* `set(key, value, maxAge)`\n* `get(key) => value`\n\n Both of these will update the \"recently used\"-ness of the key.\n They do what you think. `maxAge` is optional and overrides the\n cache `maxAge` option if provided.\n\n If the key is not found, `get()` will return `undefined`.\n\n The key and val can be any value.\n\n* `peek(key)`\n\n Returns the key value (or `undefined` if not found) without\n updating the \"recently used\"-ness of the key.\n\n (If you find yourself using this a lot, you *might* be using the\n wrong sort of data structure, but there are some use cases where\n it's handy.)\n\n* `del(key)`\n\n Deletes a key out of the cache.\n\n* `reset()`\n\n Clear the cache entirely, throwing away all values.\n\n* `has(key)`\n\n Check if a key is in the cache, without updating the recent-ness\n or deleting it for being stale.\n\n* `forEach(function(value,key,cache), [thisp])`\n\n Just like `Array.prototype.forEach`. Iterates over all the keys\n in the cache, in order of recent-ness. (Ie, more recently used\n items are iterated over first.)\n\n* `rforEach(function(value,key,cache), [thisp])`\n\n The same as `cache.forEach(...)` but items are iterated over in\n reverse order. (ie, less recently used items are iterated over\n first.)\n\n* `keys()`\n\n Return an array of the keys in the cache.\n\n* `values()`\n\n Return an array of the values in the cache.\n\n* `length`\n\n Return total length of objects in cache taking into account\n `length` options function.\n\n* `itemCount`\n\n Return total quantity of objects currently in cache. Note, that\n `stale` (see options) items are returned as part of this item\n count.\n\n* `dump()`\n\n Return an array of the cache entries ready for serialization and usage\n with 'destinationCache.load(arr)`.\n\n* `load(cacheEntriesArray)`\n\n Loads another cache entries array, obtained with `sourceCache.dump()`,\n into the cache. The destination cache is reset before loading new entries\n\n* `prune()`\n\n Manually iterates over the entire cache proactively pruning old entries\n",
68
+ "readmeFilename": "README.md",
61
69
  "repository": {
62
70
  "type": "git",
63
71
  "url": "git://github.com/isaacs/node-lru-cache.git"
64
72
  },
65
73
  "scripts": {
66
74
  "posttest": "standard test/*.js lib/*.js",
67
- "test": "tap test --cov"
75
+ "test": "tap test --branches=100 --functions=100 --lines=100 --statements=100"
68
76
  },
69
- "version": "4.0.0"
77
+ "version": "4.0.1"
70
78
  }
@@ -104,7 +104,8 @@
104
104
  ],
105
105
  "name": "aws4",
106
106
  "optionalDependencies": {},
107
- "readme": "ERROR: No README data found!",
107
+ "readme": "aws4\n----\n\n[![Build Status](https://secure.travis-ci.org/mhart/aws4.png?branch=master)](http://travis-ci.org/mhart/aws4)\n\nA small utility to sign vanilla node.js http(s) request options using Amazon's\n[AWS Signature Version 4](http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html).\n\nCan also be used [in the browser](./browser).\n\nThis signature is supported by nearly all Amazon services, including\n[S3](http://docs.aws.amazon.com/AmazonS3/latest/API/),\n[EC2](http://docs.aws.amazon.com/AWSEC2/latest/APIReference/),\n[DynamoDB](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/API.html),\n[Kinesis](http://docs.aws.amazon.com/kinesis/latest/APIReference/),\n[Lambda](http://docs.aws.amazon.com/lambda/latest/dg/API_Reference.html),\n[SQS](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/),\n[SNS](http://docs.aws.amazon.com/sns/latest/api/),\n[IAM](http://docs.aws.amazon.com/IAM/latest/APIReference/),\n[STS](http://docs.aws.amazon.com/STS/latest/APIReference/),\n[RDS](http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/),\n[CloudWatch](http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/),\n[CloudWatch Logs](http://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/),\n[CodeDeploy](http://docs.aws.amazon.com/codedeploy/latest/APIReference/),\n[CloudFront](http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/),\n[CloudTrail](http://docs.aws.amazon.com/awscloudtrail/latest/APIReference/),\n[ElastiCache](http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/),\n[EMR](http://docs.aws.amazon.com/ElasticMapReduce/latest/API/),\n[Glacier](http://docs.aws.amazon.com/amazonglacier/latest/dev/amazon-glacier-api.html),\n[CloudSearch](http://docs.aws.amazon.com/cloudsearch/latest/developerguide/APIReq.html),\n[Elastic Load Balancing](http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/),\n[Elastic Transcoder](http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/api-reference.html),\n[CloudFormation](http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/),\n[Elastic Beanstalk](http://docs.aws.amazon.com/elasticbeanstalk/latest/api/),\n[Storage Gateway](http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewayAPI.html),\n[Data Pipeline](http://docs.aws.amazon.com/datapipeline/latest/APIReference/),\n[Direct Connect](http://docs.aws.amazon.com/directconnect/latest/APIReference/),\n[Redshift](http://docs.aws.amazon.com/redshift/latest/APIReference/),\n[OpsWorks](http://docs.aws.amazon.com/opsworks/latest/APIReference/),\n[SES](http://docs.aws.amazon.com/ses/latest/APIReference/),\n[SWF](http://docs.aws.amazon.com/amazonswf/latest/apireference/),\n[AutoScaling](http://docs.aws.amazon.com/AutoScaling/latest/APIReference/),\n[Mobile Analytics](http://docs.aws.amazon.com/mobileanalytics/latest/ug/server-reference.html),\n[Cognito Identity](http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/),\n[Cognito Sync](http://docs.aws.amazon.com/cognitosync/latest/APIReference/),\n[Container Service](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/),\n[AppStream](http://docs.aws.amazon.com/appstream/latest/developerguide/appstream-api-rest.html),\n[Key Management Service](http://docs.aws.amazon.com/kms/latest/APIReference/),\n[Config](http://docs.aws.amazon.com/config/latest/APIReference/),\n[CloudHSM](http://docs.aws.amazon.com/cloudhsm/latest/dg/api-ref.html),\n[Route53](http://docs.aws.amazon.com/Route53/latest/APIReference/requests-rest.html) and\n[Route53 Domains](http://docs.aws.amazon.com/Route53/latest/APIReference/requests-rpc.html).\n\nIndeed, the only AWS services that *don't* support v4 as of 2014-12-30 are\n[Import/Export](http://docs.aws.amazon.com/AWSImportExport/latest/DG/api-reference.html) and\n[SimpleDB](http://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/SDB_API.html)\n(they only support [AWS Signature Version 2](https://github.com/mhart/aws2)).\n\nIt also provides defaults for a number of core AWS headers and\nrequest parameters, making it very easy to query AWS services, or\nbuild out a fully-featured AWS library.\n\nExample\n-------\n\n```javascript\nvar http = require('http'),\n https = require('https'),\n aws4 = require('aws4')\n\n// given an options object you could pass to http.request\nvar opts = {host: 'sqs.us-east-1.amazonaws.com', path: '/?Action=ListQueues'}\n\n// alternatively (as aws4 can infer the host):\nopts = {service: 'sqs', region: 'us-east-1', path: '/?Action=ListQueues'}\n\n// alternatively (as us-east-1 is default):\nopts = {service: 'sqs', path: '/?Action=ListQueues'}\n\naws4.sign(opts) // assumes AWS credentials are available in process.env\n\nconsole.log(opts)\n/*\n{\n host: 'sqs.us-east-1.amazonaws.com',\n path: '/?Action=ListQueues',\n headers: {\n Host: 'sqs.us-east-1.amazonaws.com',\n 'X-Amz-Date': '20121226T061030Z',\n Authorization: 'AWS4-HMAC-SHA256 Credential=ABCDEF/20121226/us-east-1/sqs/aws4_request, ...'\n }\n}\n*/\n\n// we can now use this to query AWS using the standard node.js http API\nhttp.request(opts, function(res) { res.pipe(process.stdout) }).end()\n/*\n<?xml version=\"1.0\"?>\n<ListQueuesResponse xmlns=\"http://queue.amazonaws.com/doc/2012-11-05/\">\n...\n*/\n```\n\nMore options\n------------\n\n```javascript\n// you can also pass AWS credentials in explicitly (otherwise taken from process.env)\naws4.sign(opts, {accessKeyId: '', secretAccessKey: ''})\n\n// can also add the signature to query strings\naws4.sign({service: 's3', path: '/my-bucket?X-Amz-Expires=12345', signQuery: true})\n\n// create a utility function to pipe to stdout (with https this time)\nfunction request(o) { https.request(o, function(res) { res.pipe(process.stdout) }).end(o.body || '') }\n\n// aws4 can infer the HTTP method if a body is passed in\n// method will be POST and Content-Type: 'application/x-www-form-urlencoded; charset=utf-8'\nrequest(aws4.sign({service: 'iam', body: 'Action=ListGroups&Version=2010-05-08'}))\n/*\n<ListGroupsResponse xmlns=\"https://iam.amazonaws.com/doc/2010-05-08/\">\n...\n*/\n\n// can specify any custom option or header as per usual\nrequest(aws4.sign({\n service: 'dynamodb',\n region: 'ap-southeast-2',\n method: 'POST',\n path: '/',\n headers: {\n 'Content-Type': 'application/x-amz-json-1.0',\n 'X-Amz-Target': 'DynamoDB_20120810.ListTables'\n },\n body: '{}'\n}))\n/*\n{\"TableNames\":[]}\n...\n*/\n\n// works with all other services that support Signature Version 4\n\nrequest(aws4.sign({service: 's3', path: '/', signQuery: true}))\n/*\n<ListAllMyBucketsResult xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">\n...\n*/\n\nrequest(aws4.sign({service: 'ec2', path: '/?Action=DescribeRegions&Version=2014-06-15'}))\n/*\n<DescribeRegionsResponse xmlns=\"http://ec2.amazonaws.com/doc/2014-06-15/\">\n...\n*/\n\nrequest(aws4.sign({service: 'sns', path: '/?Action=ListTopics&Version=2010-03-31'}))\n/*\n<ListTopicsResponse xmlns=\"http://sns.amazonaws.com/doc/2010-03-31/\">\n...\n*/\n\nrequest(aws4.sign({service: 'sts', path: '/?Action=GetSessionToken&Version=2011-06-15'}))\n/*\n<GetSessionTokenResponse xmlns=\"https://sts.amazonaws.com/doc/2011-06-15/\">\n...\n*/\n\nrequest(aws4.sign({service: 'cloudsearch', path: '/?Action=ListDomainNames&Version=2013-01-01'}))\n/*\n<ListDomainNamesResponse xmlns=\"http://cloudsearch.amazonaws.com/doc/2013-01-01/\">\n...\n*/\n\nrequest(aws4.sign({service: 'ses', path: '/?Action=ListIdentities&Version=2010-12-01'}))\n/*\n<ListIdentitiesResponse xmlns=\"http://ses.amazonaws.com/doc/2010-12-01/\">\n...\n*/\n\nrequest(aws4.sign({service: 'autoscaling', path: '/?Action=DescribeAutoScalingInstances&Version=2011-01-01'}))\n/*\n<DescribeAutoScalingInstancesResponse xmlns=\"http://autoscaling.amazonaws.com/doc/2011-01-01/\">\n...\n*/\n\nrequest(aws4.sign({service: 'elasticloadbalancing', path: '/?Action=DescribeLoadBalancers&Version=2012-06-01'}))\n/*\n<DescribeLoadBalancersResponse xmlns=\"http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/\">\n...\n*/\n\nrequest(aws4.sign({service: 'cloudformation', path: '/?Action=ListStacks&Version=2010-05-15'}))\n/*\n<ListStacksResponse xmlns=\"http://cloudformation.amazonaws.com/doc/2010-05-15/\">\n...\n*/\n\nrequest(aws4.sign({service: 'elasticbeanstalk', path: '/?Action=ListAvailableSolutionStacks&Version=2010-12-01'}))\n/*\n<ListAvailableSolutionStacksResponse xmlns=\"http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/\">\n...\n*/\n\nrequest(aws4.sign({service: 'rds', path: '/?Action=DescribeDBInstances&Version=2012-09-17'}))\n/*\n<DescribeDBInstancesResponse xmlns=\"http://rds.amazonaws.com/doc/2012-09-17/\">\n...\n*/\n\nrequest(aws4.sign({service: 'monitoring', path: '/?Action=ListMetrics&Version=2010-08-01'}))\n/*\n<ListMetricsResponse xmlns=\"http://monitoring.amazonaws.com/doc/2010-08-01/\">\n...\n*/\n\nrequest(aws4.sign({service: 'redshift', path: '/?Action=DescribeClusters&Version=2012-12-01'}))\n/*\n<DescribeClustersResponse xmlns=\"http://redshift.amazonaws.com/doc/2012-12-01/\">\n...\n*/\n\nrequest(aws4.sign({service: 'cloudfront', path: '/2014-05-31/distribution'}))\n/*\n<DistributionList xmlns=\"http://cloudfront.amazonaws.com/doc/2014-05-31/\">\n...\n*/\n\nrequest(aws4.sign({service: 'elasticache', path: '/?Action=DescribeCacheClusters&Version=2014-07-15'}))\n/*\n<DescribeCacheClustersResponse xmlns=\"http://elasticache.amazonaws.com/doc/2014-07-15/\">\n...\n*/\n\nrequest(aws4.sign({service: 'elasticmapreduce', path: '/?Action=DescribeJobFlows&Version=2009-03-31'}))\n/*\n<DescribeJobFlowsResponse xmlns=\"http://elasticmapreduce.amazonaws.com/doc/2009-03-31\">\n...\n*/\n\nrequest(aws4.sign({service: 'route53', path: '/2013-04-01/hostedzone'}))\n/*\n<ListHostedZonesResponse xmlns=\"https://route53.amazonaws.com/doc/2013-04-01/\">\n...\n*/\n\nrequest(aws4.sign({service: 'appstream', path: '/applications'}))\n/*\n{\"_links\":{\"curie\":[{\"href\":\"http://docs.aws.amazon.com/appstream/latest/...\n...\n*/\n\nrequest(aws4.sign({service: 'cognito-sync', path: '/identitypools'}))\n/*\n{\"Count\":0,\"IdentityPoolUsages\":[],\"MaxResults\":16,\"NextToken\":null}\n...\n*/\n\nrequest(aws4.sign({service: 'elastictranscoder', path: '/2012-09-25/pipelines'}))\n/*\n{\"NextPageToken\":null,\"Pipelines\":[]}\n...\n*/\n\nrequest(aws4.sign({service: 'lambda', path: '/2014-11-13/functions/'}))\n/*\n{\"Functions\":[],\"NextMarker\":null}\n...\n*/\n\nrequest(aws4.sign({service: 'ecs', path: '/?Action=ListClusters&Version=2014-11-13'}))\n/*\n<ListClustersResponse xmlns=\"http://ecs.amazonaws.com/doc/2014-11-13/\">\n...\n*/\n\nrequest(aws4.sign({service: 'glacier', path: '/-/vaults', headers: {'X-Amz-Glacier-Version': '2012-06-01'}}))\n/*\n{\"Marker\":null,\"VaultList\":[]}\n...\n*/\n\nrequest(aws4.sign({service: 'storagegateway', body: '{}', headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'StorageGateway_20120630.ListGateways'\n}}))\n/*\n{\"Gateways\":[]}\n...\n*/\n\nrequest(aws4.sign({service: 'datapipeline', body: '{}', headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'DataPipeline.ListPipelines'\n}}))\n/*\n{\"hasMoreResults\":false,\"pipelineIdList\":[]}\n...\n*/\n\nrequest(aws4.sign({service: 'opsworks', body: '{}', headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'OpsWorks_20130218.DescribeStacks'\n}}))\n/*\n{\"Stacks\":[]}\n...\n*/\n\nrequest(aws4.sign({service: 'route53domains', body: '{}', headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'Route53Domains_v20140515.ListDomains'\n}}))\n/*\n{\"Domains\":[]}\n...\n*/\n\nrequest(aws4.sign({service: 'kinesis', body: '{}', headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'Kinesis_20131202.ListStreams'\n}}))\n/*\n{\"HasMoreStreams\":false,\"StreamNames\":[]}\n...\n*/\n\nrequest(aws4.sign({service: 'cloudtrail', body: '{}', headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'CloudTrail_20131101.DescribeTrails'\n}}))\n/*\n{\"trailList\":[]}\n...\n*/\n\nrequest(aws4.sign({service: 'logs', body: '{}', headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'Logs_20140328.DescribeLogGroups'\n}}))\n/*\n{\"logGroups\":[]}\n...\n*/\n\nrequest(aws4.sign({service: 'codedeploy', body: '{}', headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'CodeDeploy_20141006.ListApplications'\n}}))\n/*\n{\"applications\":[]}\n...\n*/\n\nrequest(aws4.sign({service: 'directconnect', body: '{}', headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'OvertureService.DescribeConnections'\n}}))\n/*\n{\"connections\":[]}\n...\n*/\n\nrequest(aws4.sign({service: 'kms', body: '{}', headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'TrentService.ListKeys'\n}}))\n/*\n{\"Keys\":[],\"Truncated\":false}\n...\n*/\n\nrequest(aws4.sign({service: 'config', body: '{}', headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'StarlingDoveService.DescribeDeliveryChannels'\n}}))\n/*\n{\"DeliveryChannels\":[]}\n...\n*/\n\nrequest(aws4.sign({service: 'cloudhsm', body: '{}', headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'CloudHsmFrontendService.ListAvailableZones'\n}}))\n/*\n{\"AZList\":[\"us-east-1a\",\"us-east-1b\",\"us-east-1c\"]}\n...\n*/\n\nrequest(aws4.sign({\n service: 'swf',\n body: '{\"registrationStatus\":\"REGISTERED\"}',\n headers: {\n 'Content-Type': 'application/x-amz-json-1.0',\n 'X-Amz-Target': 'SimpleWorkflowService.ListDomains'\n }\n}))\n/*\n{\"domainInfos\":[]}\n...\n*/\n\nrequest(aws4.sign({\n service: 'cognito-identity',\n body: '{\"MaxResults\": 1}',\n headers: {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.ListIdentityPools'\n }\n}))\n/*\n{\"IdentityPools\":[]}\n...\n*/\n\nrequest(aws4.sign({\n service: 'mobileanalytics',\n path: '/2014-06-05/events',\n body: JSON.stringify({events:[{\n eventType: 'a',\n timestamp: new Date().toISOString(),\n session: {},\n }]}),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Amz-Client-Context': JSON.stringify({\n client: {client_id: 'a', app_title: 'a'},\n custom: {},\n env: {platform: 'a'},\n services: {},\n }),\n }\n}))\n/*\n(HTTP 202, empty response)\n*/\n```\n\nAPI\n---\n\n### aws4.sign(requestOptions, [credentials])\n\nThis calculates and populates the `Authorization` header of\n`requestOptions`, and any other necessary AWS headers and/or request\noptions. Returns `requestOptions` as a convenience for chaining.\n\n`requestOptions` is an object holding the same options that the node.js\n[http.request](http://nodejs.org/docs/latest/api/http.html#http_http_request_options_callback)\nfunction takes.\n\nThe following properties of `requestOptions` are used in the signing or\npopulated if they don't already exist:\n\n- `hostname` or `host` (will be determined from `service` and `region` if not given)\n- `method` (will use `'GET'` if not given or `'POST'` if there is a `body`)\n- `path` (will use `'/'` if not given)\n- `body` (will use `''` if not given)\n- `service` (will be calculated from `hostname` or `host` if not given)\n- `region` (will be calculated from `hostname` or `host` or use `'us-east-1'` if not given)\n- `headers['Host']` (will use `hostname` or `host` or be calculated if not given)\n- `headers['Content-Type']` (will use `'application/x-www-form-urlencoded; charset=utf-8'`\n if not given and there is a `body`)\n- `headers['Date']` (used to calculate the signature date if given, otherwise `new Date` is used)\n\nYour AWS credentials (which can be found in your\n[AWS console](https://portal.aws.amazon.com/gp/aws/securityCredentials))\ncan be specified in one of two ways:\n\n- As the second argument, like this:\n\n```javascript\naws4.sign(requestOptions, {\n secretAccessKey: \"<your-secret-access-key>\",\n accessKeyId: \"<your-access-key-id>\",\n sessionToken: \"<your-session-token>\"\n})\n```\n\n- From `process.env`, such as this:\n\n```\nexport AWS_SECRET_ACCESS_KEY=\"<your-secret-access-key>\"\nexport AWS_ACCESS_KEY_ID=\"<your-access-key-id>\"\nexport AWS_SESSION_TOKEN=\"<your-session-token>\"\n```\n\n(will also use `AWS_ACCESS_KEY` and `AWS_SECRET_KEY` if available)\n\nThe `sessionToken` property and `AWS_SESSION_TOKEN` environment variable are optional for signing\nwith [IAM STS temporary credentials](http://docs.aws.amazon.com/STS/latest/UsingSTS/using-temp-creds.html).\n\nInstallation\n------------\n\nWith [npm](http://npmjs.org/) do:\n\n```\nnpm install aws4\n```\n\nCan also be used [in the browser](./browser).\n\nThanks\n------\n\nThanks to [@jed](https://github.com/jed) for his\n[dynamo-client](https://github.com/jed/dynamo-client) lib where I first\ncommitted and subsequently extracted this code.\n\nAlso thanks to the\n[official node.js AWS SDK](https://github.com/aws/aws-sdk-js) for giving\nme a start on implementing the v4 signature.\n\n",
108
+ "readmeFilename": "README.md",
108
109
  "repository": {
109
110
  "type": "git",
110
111
  "url": "git+https://github.com/mhart/aws4.git"
@@ -59,7 +59,8 @@
59
59
  ],
60
60
  "name": "bl",
61
61
  "optionalDependencies": {},
62
- "readme": "ERROR: No README data found!",
62
+ "readme": "# bl *(BufferList)*\n\n[![Build Status](https://travis-ci.org/rvagg/bl.svg?branch=master)](https://travis-ci.org/rvagg/bl)\n\n**A Node.js Buffer list collector, reader and streamer thingy.**\n\n[![NPM](https://nodei.co/npm/bl.png?downloads=true&downloadRank=true)](https://nodei.co/npm/bl/)\n[![NPM](https://nodei.co/npm-dl/bl.png?months=6&height=3)](https://nodei.co/npm/bl/)\n\n**bl** is a storage object for collections of Node Buffers, exposing them with the main Buffer readable API. Also works as a duplex stream so you can collect buffers from a stream that emits them and emit buffers to a stream that consumes them!\n\nThe original buffers are kept intact and copies are only done as necessary. Any reads that require the use of a single original buffer will return a slice of that buffer only (which references the same memory as the original buffer). Reads that span buffers perform concatenation as required and return the results transparently.\n\n```js\nconst BufferList = require('bl')\n\nvar bl = new BufferList()\nbl.append(new Buffer('abcd'))\nbl.append(new Buffer('efg'))\nbl.append('hi') // bl will also accept & convert Strings\nbl.append(new Buffer('j'))\nbl.append(new Buffer([ 0x3, 0x4 ]))\n\nconsole.log(bl.length) // 12\n\nconsole.log(bl.slice(0, 10).toString('ascii')) // 'abcdefghij'\nconsole.log(bl.slice(3, 10).toString('ascii')) // 'defghij'\nconsole.log(bl.slice(3, 6).toString('ascii')) // 'def'\nconsole.log(bl.slice(3, 8).toString('ascii')) // 'defgh'\nconsole.log(bl.slice(5, 10).toString('ascii')) // 'fghij'\n\n// or just use toString!\nconsole.log(bl.toString()) // 'abcdefghij\\u0003\\u0004'\nconsole.log(bl.toString('ascii', 3, 8)) // 'defgh'\nconsole.log(bl.toString('ascii', 5, 10)) // 'fghij'\n\n// other standard Buffer readables\nconsole.log(bl.readUInt16BE(10)) // 0x0304\nconsole.log(bl.readUInt16LE(10)) // 0x0403\n```\n\nGive it a callback in the constructor and use it just like **[concat-stream](https://github.com/maxogden/node-concat-stream)**:\n\n```js\nconst bl = require('bl')\n , fs = require('fs')\n\nfs.createReadStream('README.md')\n .pipe(bl(function (err, data) { // note 'new' isn't strictly required\n // `data` is a complete Buffer object containing the full data\n console.log(data.toString())\n }))\n```\n\nNote that when you use the *callback* method like this, the resulting `data` parameter is a concatenation of all `Buffer` objects in the list. If you want to avoid the overhead of this concatenation (in cases of extreme performance consciousness), then avoid the *callback* method and just listen to `'end'` instead, like a standard Stream.\n\nOr to fetch a URL using [hyperquest](https://github.com/substack/hyperquest) (should work with [request](http://github.com/mikeal/request) and even plain Node http too!):\n```js\nconst hyperquest = require('hyperquest')\n , bl = require('bl')\n , url = 'https://raw.github.com/rvagg/bl/master/README.md'\n\nhyperquest(url).pipe(bl(function (err, data) {\n console.log(data.toString())\n}))\n```\n\nOr, use it as a readable stream to recompose a list of Buffers to an output source:\n\n```js\nconst BufferList = require('bl')\n , fs = require('fs')\n\nvar bl = new BufferList()\nbl.append(new Buffer('abcd'))\nbl.append(new Buffer('efg'))\nbl.append(new Buffer('hi'))\nbl.append(new Buffer('j'))\n\nbl.pipe(fs.createWriteStream('gibberish.txt'))\n```\n\n## API\n\n * <a href=\"#ctor\"><code><b>new BufferList([ callback ])</b></code></a>\n * <a href=\"#length\"><code>bl.<b>length</b></code></a>\n * <a href=\"#append\"><code>bl.<b>append(buffer)</b></code></a>\n * <a href=\"#get\"><code>bl.<b>get(index)</b></code></a>\n * <a href=\"#slice\"><code>bl.<b>slice([ start[, end ] ])</b></code></a>\n * <a href=\"#copy\"><code>bl.<b>copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ])</b></code></a>\n * <a href=\"#duplicate\"><code>bl.<b>duplicate()</b></code></a>\n * <a href=\"#consume\"><code>bl.<b>consume(bytes)</b></code></a>\n * <a href=\"#toString\"><code>bl.<b>toString([encoding, [ start, [ end ]]])</b></code></a>\n * <a href=\"#readXX\"><code>bl.<b>readDoubleBE()</b></code>, <code>bl.<b>readDoubleLE()</b></code>, <code>bl.<b>readFloatBE()</b></code>, <code>bl.<b>readFloatLE()</b></code>, <code>bl.<b>readInt32BE()</b></code>, <code>bl.<b>readInt32LE()</b></code>, <code>bl.<b>readUInt32BE()</b></code>, <code>bl.<b>readUInt32LE()</b></code>, <code>bl.<b>readInt16BE()</b></code>, <code>bl.<b>readInt16LE()</b></code>, <code>bl.<b>readUInt16BE()</b></code>, <code>bl.<b>readUInt16LE()</b></code>, <code>bl.<b>readInt8()</b></code>, <code>bl.<b>readUInt8()</b></code></a>\n * <a href=\"#streams\">Streams</a>\n\n--------------------------------------------------------\n<a name=\"ctor\"></a>\n### new BufferList([ callback | buffer | buffer array ])\nThe constructor takes an optional callback, if supplied, the callback will be called with an error argument followed by a reference to the **bl** instance, when `bl.end()` is called (i.e. from a piped stream). This is a convenient method of collecting the entire contents of a stream, particularly when the stream is *chunky*, such as a network stream.\n\nNormally, no arguments are required for the constructor, but you can initialise the list by passing in a single `Buffer` object or an array of `Buffer` object.\n\n`new` is not strictly required, if you don't instantiate a new object, it will be done automatically for you so you can create a new instance simply with:\n\n```js\nvar bl = require('bl')\nvar myinstance = bl()\n\n// equivilant to:\n\nvar BufferList = require('bl')\nvar myinstance = new BufferList()\n```\n\n--------------------------------------------------------\n<a name=\"length\"></a>\n### bl.length\nGet the length of the list in bytes. This is the sum of the lengths of all of the buffers contained in the list, minus any initial offset for a semi-consumed buffer at the beginning. Should accurately represent the total number of bytes that can be read from the list.\n\n--------------------------------------------------------\n<a name=\"append\"></a>\n### bl.append(buffer)\n`append(buffer)` adds an additional buffer or BufferList to the internal list.\n\n--------------------------------------------------------\n<a name=\"get\"></a>\n### bl.get(index)\n`get()` will return the byte at the specified index.\n\n--------------------------------------------------------\n<a name=\"slice\"></a>\n### bl.slice([ start, [ end ] ])\n`slice()` returns a new `Buffer` object containing the bytes within the range specified. Both `start` and `end` are optional and will default to the beginning and end of the list respectively.\n\nIf the requested range spans a single internal buffer then a slice of that buffer will be returned which shares the original memory range of that Buffer. If the range spans multiple buffers then copy operations will likely occur to give you a uniform Buffer.\n\n--------------------------------------------------------\n<a name=\"copy\"></a>\n### bl.copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ])\n`copy()` copies the content of the list in the `dest` buffer, starting from `destStart` and containing the bytes within the range specified with `srcStart` to `srcEnd`. `destStart`, `start` and `end` are optional and will default to the beginning of the `dest` buffer, and the beginning and end of the list respectively.\n\n--------------------------------------------------------\n<a name=\"duplicate\"></a>\n### bl.duplicate()\n`duplicate()` performs a **shallow-copy** of the list. The internal Buffers remains the same, so if you change the underlying Buffers, the change will be reflected in both the original and the duplicate. This method is needed if you want to call `consume()` or `pipe()` and still keep the original list.Example:\n\n```js\nvar bl = new BufferList()\n\nbl.append('hello')\nbl.append(' world')\nbl.append('\\n')\n\nbl.duplicate().pipe(process.stdout, { end: false })\n\nconsole.log(bl.toString())\n```\n\n--------------------------------------------------------\n<a name=\"consume\"></a>\n### bl.consume(bytes)\n`consume()` will shift bytes *off the start of the list*. The number of bytes consumed don't need to line up with the sizes of the internal Buffers&mdash;initial offsets will be calculated accordingly in order to give you a consistent view of the data.\n\n--------------------------------------------------------\n<a name=\"toString\"></a>\n### bl.toString([encoding, [ start, [ end ]]])\n`toString()` will return a string representation of the buffer. The optional `start` and `end` arguments are passed on to `slice()`, while the `encoding` is passed on to `toString()` of the resulting Buffer. See the [Buffer#toString()](http://nodejs.org/docs/latest/api/buffer.html#buffer_buf_tostring_encoding_start_end) documentation for more information.\n\n--------------------------------------------------------\n<a name=\"readXX\"></a>\n### bl.readDoubleBE(), bl.readDoubleLE(), bl.readFloatBE(), bl.readFloatLE(), bl.readInt32BE(), bl.readInt32LE(), bl.readUInt32BE(), bl.readUInt32LE(), bl.readInt16BE(), bl.readInt16LE(), bl.readUInt16BE(), bl.readUInt16LE(), bl.readInt8(), bl.readUInt8()\n\nAll of the standard byte-reading methods of the `Buffer` interface are implemented and will operate across internal Buffer boundaries transparently.\n\nSee the <b><code>[Buffer](http://nodejs.org/docs/latest/api/buffer.html)</code></b> documentation for how these work.\n\n--------------------------------------------------------\n<a name=\"streams\"></a>\n### Streams\n**bl** is a Node **[Duplex Stream](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_duplex)**, so it can be read from and written to like a standard Node stream. You can also `pipe()` to and from a **bl** instance.\n\n--------------------------------------------------------\n\n## Contributors\n\n**bl** is brought to you by the following hackers:\n\n * [Rod Vagg](https://github.com/rvagg)\n * [Matteo Collina](https://github.com/mcollina)\n * [Jarett Cruger](https://github.com/jcrugzz)\n\n=======\n\n<a name=\"license\"></a>\n## License &amp; copyright\n\nCopyright (c) 2013-2014 bl contributors (listed above).\n\nbl is licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details.\n",
63
+ "readmeFilename": "README.md",
63
64
  "repository": {
64
65
  "type": "git",
65
66
  "url": "git+https://github.com/rvagg/bl.git"
@@ -1,25 +1,29 @@
1
1
  {
2
2
  "_from": "chalk@^1.1.1",
3
- "_id": "chalk@1.1.1",
3
+ "_id": "chalk@1.1.3",
4
4
  "_location": "/chalk",
5
- "_nodeVersion": "0.12.7",
5
+ "_nodeVersion": "0.10.32",
6
+ "_npmOperationalInternal": {
7
+ "host": "packages-12-west.internal.npmjs.com",
8
+ "tmp": "tmp/chalk-1.1.3.tgz_1459210604109_0.3892582862172276"
9
+ },
6
10
  "_npmUser": {
7
- "email": "sindresorhus@gmail.com",
8
- "name": "sindresorhus"
11
+ "email": "i.am.qix@gmail.com",
12
+ "name": "qix"
9
13
  },
10
- "_npmVersion": "2.13.5",
14
+ "_npmVersion": "2.14.2",
11
15
  "_phantomChildren": {},
12
16
  "_requiredBy": [
13
17
  "/har-validator"
14
18
  ],
15
- "_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz",
16
- "_shasum": "509afb67066e7499f7eb3535c77445772ae2d019",
19
+ "_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
20
+ "_shasum": "a8115c55e4a702fe4d150abd3872822a7e09fc98",
17
21
  "_shrinkwrap": null,
18
22
  "bugs": {
19
23
  "url": "https://github.com/chalk/chalk/issues"
20
24
  },
21
25
  "dependencies": {
22
- "ansi-styles": "^2.1.0",
26
+ "ansi-styles": "^2.2.1",
23
27
  "escape-string-regexp": "^1.0.2",
24
28
  "has-ansi": "^2.0.0",
25
29
  "strip-ansi": "^3.0.0",
@@ -38,8 +42,8 @@
38
42
  },
39
43
  "directories": {},
40
44
  "dist": {
41
- "shasum": "509afb67066e7499f7eb3535c77445772ae2d019",
42
- "tarball": "http://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz"
45
+ "shasum": "a8115c55e4a702fe4d150abd3872822a7e09fc98",
46
+ "tarball": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"
43
47
  },
44
48
  "engines": {
45
49
  "node": ">=0.10.0"
@@ -47,7 +51,7 @@
47
51
  "files": [
48
52
  "index.js"
49
53
  ],
50
- "gitHead": "8b554e254e89c85c1fd04dcc444beeb15824e1a5",
54
+ "gitHead": "0d8d8c204eb87a4038219131ad4d8369c9f59d24",
51
55
  "homepage": "https://github.com/chalk/chalk#readme",
52
56
  "keywords": [
53
57
  "256",
@@ -75,12 +79,12 @@
75
79
  "license": "MIT",
76
80
  "maintainers": [
77
81
  {
78
- "name": "sindresorhus",
79
- "email": "sindresorhus@gmail.com"
82
+ "name": "qix",
83
+ "email": "i.am.qix@gmail.com"
80
84
  },
81
85
  {
82
- "name": "jbnicolai",
83
- "email": "jappelman@xebia.com"
86
+ "name": "sindresorhus",
87
+ "email": "sindresorhus@gmail.com"
84
88
  },
85
89
  {
86
90
  "name": "unicorn",
@@ -89,7 +93,8 @@
89
93
  ],
90
94
  "name": "chalk",
91
95
  "optionalDependencies": {},
92
- "readme": "ERROR: No README data found!",
96
+ "readme": "<h1 align=\"center\">\n\t<br>\n\t<br>\n\t<img width=\"360\" src=\"https://cdn.rawgit.com/chalk/chalk/19935d6484811c5e468817f846b7b3d417d7bf4a/logo.svg\" alt=\"chalk\">\n\t<br>\n\t<br>\n\t<br>\n</h1>\n\n> Terminal string styling done right\n\n[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk)\n[![Coverage Status](https://coveralls.io/repos/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/r/chalk/chalk?branch=master)\n[![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4)\n\n\n[colors.js](https://github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough.\n\n**Chalk is a clean and focused alternative.**\n\n![](https://github.com/chalk/ansi-styles/raw/master/screenshot.png)\n\n\n## Why\n\n- Highly performant\n- Doesn't extend `String.prototype`\n- Expressive API\n- Ability to nest styles\n- Clean and focused\n- Auto-detects color support\n- Actively maintained\n- [Used by ~4500 modules](https://www.npmjs.com/browse/depended/chalk) as of July 15, 2015\n\n\n## Install\n\n```\n$ npm install --save chalk\n```\n\n\n## Usage\n\nChalk comes with an easy to use composable API where you just chain and nest the styles you want.\n\n```js\nvar chalk = require('chalk');\n\n// style a string\nchalk.blue('Hello world!');\n\n// combine styled and normal strings\nchalk.blue('Hello') + 'World' + chalk.red('!');\n\n// compose multiple styles using the chainable API\nchalk.blue.bgRed.bold('Hello world!');\n\n// pass in multiple arguments\nchalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz');\n\n// nest styles\nchalk.red('Hello', chalk.underline.bgBlue('world') + '!');\n\n// nest styles of the same type even (color, underline, background)\nchalk.green(\n\t'I am a green line ' +\n\tchalk.blue.underline.bold('with a blue substring') +\n\t' that becomes green again!'\n);\n```\n\nEasily define your own themes.\n\n```js\nvar chalk = require('chalk');\nvar error = chalk.bold.red;\nconsole.log(error('Error!'));\n```\n\nTake advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data).\n\n```js\nvar name = 'Sindre';\nconsole.log(chalk.green('Hello %s'), name);\n//=> Hello Sindre\n```\n\n\n## API\n\n### chalk.`<style>[.<style>...](string, [string...])`\n\nExample: `chalk.red.bold.underline('Hello', 'world');`\n\nChain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter, and later styles take precedent in case of a conflict. This simply means that `Chalk.red.yellow.green` is equivalent to `Chalk.green`.\n\nMultiple arguments will be separated by space.\n\n### chalk.enabled\n\nColor support is automatically detected, but you can override it by setting the `enabled` property. You should however only do this in your own code as it applies globally to all chalk consumers.\n\nIf you need to change this in a reusable module create a new instance:\n\n```js\nvar ctx = new chalk.constructor({enabled: false});\n```\n\n### chalk.supportsColor\n\nDetect whether the terminal [supports color](https://github.com/chalk/supports-color). Used internally and handled for you, but exposed for convenience.\n\nCan be overridden by the user with the flags `--color` and `--no-color`. For situations where using `--color` is not possible, add an environment variable `FORCE_COLOR` with any value to force color. Trumps `--no-color`.\n\n### chalk.styles\n\nExposes the styles as [ANSI escape codes](https://github.com/chalk/ansi-styles).\n\nGenerally not useful, but you might need just the `.open` or `.close` escape code if you're mixing externally styled strings with your own.\n\n```js\nvar chalk = require('chalk');\n\nconsole.log(chalk.styles.red);\n//=> {open: '\\u001b[31m', close: '\\u001b[39m'}\n\nconsole.log(chalk.styles.red.open + 'Hello' + chalk.styles.red.close);\n```\n\n### chalk.hasColor(string)\n\nCheck whether a string [has color](https://github.com/chalk/has-ansi).\n\n### chalk.stripColor(string)\n\n[Strip color](https://github.com/chalk/strip-ansi) from a string.\n\nCan be useful in combination with `.supportsColor` to strip color on externally styled text when it's not supported.\n\nExample:\n\n```js\nvar chalk = require('chalk');\nvar styledString = getText();\n\nif (!chalk.supportsColor) {\n\tstyledString = chalk.stripColor(styledString);\n}\n```\n\n\n## Styles\n\n### Modifiers\n\n- `reset`\n- `bold`\n- `dim`\n- `italic` *(not widely supported)*\n- `underline`\n- `inverse`\n- `hidden`\n- `strikethrough` *(not widely supported)*\n\n### Colors\n\n- `black`\n- `red`\n- `green`\n- `yellow`\n- `blue` *(on Windows the bright version is used as normal blue is illegible)*\n- `magenta`\n- `cyan`\n- `white`\n- `gray`\n\n### Background colors\n\n- `bgBlack`\n- `bgRed`\n- `bgGreen`\n- `bgYellow`\n- `bgBlue`\n- `bgMagenta`\n- `bgCyan`\n- `bgWhite`\n\n\n## 256-colors\n\nChalk does not support anything other than the base eight colors, which guarantees it will work on all terminals and systems. Some terminals, specifically `xterm` compliant ones, will support the full range of 8-bit colors. For this the lower level [ansi-256-colors](https://github.com/jbnicolai/ansi-256-colors) package can be used.\n\n\n## Windows\n\nIf you're on Windows, do yourself a favor and use [`cmder`](http://bliker.github.io/cmder/) instead of `cmd.exe`.\n\n\n## Related\n\n- [chalk-cli](https://github.com/chalk/chalk-cli) - CLI for this module\n- [ansi-styles](https://github.com/chalk/ansi-styles/) - ANSI escape codes for styling strings in the terminal\n- [supports-color](https://github.com/chalk/supports-color/) - Detect whether a terminal supports color\n- [strip-ansi](https://github.com/chalk/strip-ansi) - Strip ANSI escape codes\n- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes\n- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes\n- [wrap-ansi](https://github.com/chalk/wrap-ansi) - Wordwrap a string with ANSI escape codes\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
97
+ "readmeFilename": "readme.md",
93
98
  "repository": {
94
99
  "type": "git",
95
100
  "url": "git+https://github.com/chalk/chalk.git"
@@ -100,7 +105,7 @@
100
105
  "coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls",
101
106
  "test": "xo && mocha"
102
107
  },
103
- "version": "1.1.1",
108
+ "version": "1.1.3",
104
109
  "xo": {
105
110
  "envs": [
106
111
  "mocha",
@@ -77,7 +77,8 @@
77
77
  ],
78
78
  "name": "assert-plus",
79
79
  "optionalDependencies": {},
80
- "readme": "ERROR: No README data found!",
80
+ "readme": "# assert-plus\n\nThis library is a super small wrapper over node's assert module that has two\nthings: (1) the ability to disable assertions with the environment variable\nNODE\\_NDEBUG, and (2) some API wrappers for argument testing. Like\n`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks\nlike this:\n\n```javascript\n var assert = require('assert-plus');\n\n function fooAccount(options, callback) {\n assert.object(options, 'options');\n assert.number(options.id, 'options.id');\n assert.bool(options.isManager, 'options.isManager');\n assert.string(options.name, 'options.name');\n assert.arrayOfString(options.email, 'options.email');\n assert.func(callback, 'callback');\n\n // Do stuff\n callback(null, {});\n }\n```\n\n# API\n\nAll methods that *aren't* part of node's core assert API are simply assumed to\ntake an argument, and then a string 'name' that's not a message; `AssertionError`\nwill be thrown if the assertion fails with a message like:\n\n AssertionError: foo (string) is required\n at test (/home/mark/work/foo/foo.js:3:9)\n at Object.<anonymous> (/home/mark/work/foo/foo.js:15:1)\n at Module._compile (module.js:446:26)\n at Object..js (module.js:464:10)\n at Module.load (module.js:353:31)\n at Function._load (module.js:311:12)\n at Array.0 (module.js:484:10)\n at EventEmitter._tickCallback (node.js:190:38)\n\nfrom:\n\n```javascript\n function test(foo) {\n assert.string(foo, 'foo');\n }\n```\n\nThere you go. You can check that arrays are of a homogeneous type with `Arrayof$Type`:\n\n```javascript\n function test(foo) {\n assert.arrayOfString(foo, 'foo');\n }\n```\n\nYou can assert IFF an argument is not `undefined` (i.e., an optional arg):\n\n```javascript\n assert.optionalString(foo, 'foo');\n```\n\nLastly, you can opt-out of assertion checking altogether by setting the\nenvironment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have\nlots of assertions, and don't want to pay `typeof ()` taxes to v8 in\nproduction. Be advised: The standard functions re-exported from `assert` are\nalso disabled in assert-plus if NDEBUG is specified. Using them directly from\nthe `assert` module avoids this behavior.\n\nThe complete list of APIs is:\n\n* assert.array\n* assert.bool\n* assert.buffer\n* assert.func\n* assert.number\n* assert.finite\n* assert.object\n* assert.string\n* assert.stream\n* assert.date\n* assert.regexp\n* assert.uuid\n* assert.arrayOfArray\n* assert.arrayOfBool\n* assert.arrayOfBuffer\n* assert.arrayOfFunc\n* assert.arrayOfNumber\n* assert.arrayOfFinite\n* assert.arrayOfObject\n* assert.arrayOfString\n* assert.arrayOfStream\n* assert.arrayOfDate\n* assert.arrayOfRegexp\n* assert.arrayOfUuid\n* assert.optionalArray\n* assert.optionalBool\n* assert.optionalBuffer\n* assert.optionalFunc\n* assert.optionalNumber\n* assert.optionalFinite\n* assert.optionalObject\n* assert.optionalString\n* assert.optionalStream\n* assert.optionalDate\n* assert.optionalRegexp\n* assert.optionalUuid\n* assert.optionalArrayOfArray\n* assert.optionalArrayOfBool\n* assert.optionalArrayOfBuffer\n* assert.optionalArrayOfFunc\n* assert.optionalArrayOfNumber\n* assert.optionalArrayOfFinite\n* assert.optionalArrayOfObject\n* assert.optionalArrayOfString\n* assert.optionalArrayOfStream\n* assert.optionalArrayOfDate\n* assert.optionalArrayOfRegexp\n* assert.optionalArrayOfUuid\n* assert.AssertionError\n* assert.fail\n* assert.ok\n* assert.equal\n* assert.notEqual\n* assert.deepEqual\n* assert.notDeepEqual\n* assert.strictEqual\n* assert.notStrictEqual\n* assert.throws\n* assert.doesNotThrow\n* assert.ifError\n\n# Installation\n\n npm install assert-plus\n\n## License\n\nThe MIT License (MIT)\nCopyright (c) 2012 Mark Cavage\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n## Bugs\n\nSee <https://github.com/mcavage/node-assert-plus/issues>.\n",
81
+ "readmeFilename": "README.md",
81
82
  "repository": {
82
83
  "type": "git",
83
84
  "url": "git+https://github.com/mcavage/node-assert-plus.git"
@@ -86,7 +86,8 @@
86
86
  ],
87
87
  "name": "dashdash",
88
88
  "optionalDependencies": {},
89
- "readme": "ERROR: No README data found!",
89
+ "readme": "A light, featureful and explicit option parsing library for node.js.\n\n[Why another one? See below](#why). tl;dr: The others I've tried are one of\ntoo loosey goosey (not explicit), too big/too many deps, or ill specified.\nYMMV.\n\nFollow <a href=\"https://twitter.com/intent/user?screen_name=trentmick\" target=\"_blank\">@trentmick</a>\nfor updates to node-dashdash.\n\n# Install\n\n npm install dashdash\n\n\n# Usage\n\n```javascript\nvar dashdash = require('dashdash');\n\n// Specify the options. Minimally `name` (or `names`) and `type`\n// must be given for each.\nvar options = [\n {\n // `names` or a single `name`. First element is the `opts.KEY`.\n names: ['help', 'h'],\n // See \"Option specs\" below for types.\n type: 'bool',\n help: 'Print this help and exit.'\n }\n];\n\n// Shortcut form. As called it infers `process.argv`. See below for\n// the longer form to use methods like `.help()` on the Parser object.\nvar opts = dashdash.parse({options: options});\n\nconsole.log(\"opts:\", opts);\nconsole.log(\"args:\", opts._args);\n```\n\n\n# Longer Example\n\nA more realistic [starter script \"foo.js\"](./examples/foo.js) is as follows.\nThis also shows using `parser.help()` for formatted option help.\n\n```javascript\nvar dashdash = require('./lib/dashdash');\n\nvar options = [\n {\n name: 'version',\n type: 'bool',\n help: 'Print tool version and exit.'\n },\n {\n names: ['help', 'h'],\n type: 'bool',\n help: 'Print this help and exit.'\n },\n {\n names: ['verbose', 'v'],\n type: 'arrayOfBool',\n help: 'Verbose output. Use multiple times for more verbose.'\n },\n {\n names: ['file', 'f'],\n type: 'string',\n help: 'File to process',\n helpArg: 'FILE'\n }\n];\n\nvar parser = dashdash.createParser({options: options});\ntry {\n var opts = parser.parse(process.argv);\n} catch (e) {\n console.error('foo: error: %s', e.message);\n process.exit(1);\n}\n\nconsole.log(\"# opts:\", opts);\nconsole.log(\"# args:\", opts._args);\n\n// Use `parser.help()` for formatted options help.\nif (opts.help) {\n var help = parser.help({includeEnv: true}).trimRight();\n console.log('usage: node foo.js [OPTIONS]\\n'\n + 'options:\\n'\n + help);\n process.exit(0);\n}\n\n// ...\n```\n\n\nSome example output from this script (foo.js):\n\n```\n$ node foo.js -h\n# opts: { help: true,\n _order: [ { name: 'help', value: true, from: 'argv' } ],\n _args: [] }\n# args: []\nusage: node foo.js [OPTIONS]\noptions:\n --version Print tool version and exit.\n -h, --help Print this help and exit.\n -v, --verbose Verbose output. Use multiple times for more verbose.\n -f FILE, --file=FILE File to process\n\n$ node foo.js -v\n# opts: { verbose: [ true ],\n _order: [ { name: 'verbose', value: true, from: 'argv' } ],\n _args: [] }\n# args: []\n\n$ node foo.js --version arg1\n# opts: { version: true,\n _order: [ { name: 'version', value: true, from: 'argv' } ],\n _args: [ 'arg1' ] }\n# args: [ 'arg1' ]\n\n$ node foo.js -f bar.txt\n# opts: { file: 'bar.txt',\n _order: [ { name: 'file', value: 'bar.txt', from: 'argv' } ],\n _args: [] }\n# args: []\n\n$ node foo.js -vvv --file=blah\n# opts: { verbose: [ true, true, true ],\n file: 'blah',\n _order:\n [ { name: 'verbose', value: true, from: 'argv' },\n { name: 'verbose', value: true, from: 'argv' },\n { name: 'verbose', value: true, from: 'argv' },\n { name: 'file', value: 'blah', from: 'argv' } ],\n _args: [] }\n# args: []\n```\n\n\nSee the [\"examples\"](examples/) dir for a number of starter examples using\nsome of dashdash's features.\n\n\n# Environment variable integration\n\nIf you want to allow environment variables to specify options to your tool,\ndashdash makes this easy. We can change the 'verbose' option in the example\nabove to include an 'env' field:\n\n```javascript\n {\n names: ['verbose', 'v'],\n type: 'arrayOfBool',\n env: 'FOO_VERBOSE', // <--- add this line\n help: 'Verbose output. Use multiple times for more verbose.'\n },\n```\n\nthen the **\"FOO_VERBOSE\" environment variable** can be used to set this\noption:\n\n```shell\n$ FOO_VERBOSE=1 node foo.js\n# opts: { verbose: [ true ],\n _order: [ { name: 'verbose', value: true, from: 'env' } ],\n _args: [] }\n# args: []\n```\n\nBoolean options will interpret the empty string as unset, '0' as false\nand anything else as true.\n\n```shell\n$ FOO_VERBOSE= node examples/foo.js # not set\n# opts: { _order: [], _args: [] }\n# args: []\n\n$ FOO_VERBOSE=0 node examples/foo.js # '0' is false\n# opts: { verbose: [ false ],\n _order: [ { key: 'verbose', value: false, from: 'env' } ],\n _args: [] }\n# args: []\n\n$ FOO_VERBOSE=1 node examples/foo.js # true\n# opts: { verbose: [ true ],\n _order: [ { key: 'verbose', value: true, from: 'env' } ],\n _args: [] }\n# args: []\n\n$ FOO_VERBOSE=boogabooga node examples/foo.js # true\n# opts: { verbose: [ true ],\n _order: [ { key: 'verbose', value: true, from: 'env' } ],\n _args: [] }\n# args: []\n```\n\nNon-booleans can be used as well. Strings:\n\n```shell\n$ FOO_FILE=data.txt node examples/foo.js\n# opts: { file: 'data.txt',\n _order: [ { key: 'file', value: 'data.txt', from: 'env' } ],\n _args: [] }\n# args: []\n```\n\nNumbers:\n\n```shell\n$ FOO_TIMEOUT=5000 node examples/foo.js\n# opts: { timeout: 5000,\n _order: [ { key: 'timeout', value: 5000, from: 'env' } ],\n _args: [] }\n# args: []\n\n$ FOO_TIMEOUT=blarg node examples/foo.js\nfoo: error: arg for \"FOO_TIMEOUT\" is not a positive integer: \"blarg\"\n```\n\nWith the `includeEnv: true` config to `parser.help()` the environment\nvariable can also be included in **help output**:\n\n usage: node foo.js [OPTIONS]\n options:\n --version Print tool version and exit.\n -h, --help Print this help and exit.\n -v, --verbose Verbose output. Use multiple times for more verbose.\n Environment: FOO_VERBOSE=1\n -f FILE, --file=FILE File to process\n\n\n# Bash completion\n\nDashdash provides a simple way to create a Bash completion file that you\ncan place in your \"bash_completion.d\" directory -- sometimes that is\n\"/usr/local/etc/bash_completion.d/\"). Features:\n\n- Support for short and long opts\n- Support for knowing which options take arguments\n- Support for subcommands (e.g. 'git log <TAB>' to show just options for the\n log subcommand). See\n [node-cmdln](https://github.com/trentm/node-cmdln#bash-completion) for\n how to integrate that.\n- Does the right thing with \"--\" to stop options.\n- Custom optarg and arg types for custom completions.\n\nDashdash will return bash completion file content given a parser instance:\n\n var parser = dashdash.createParser({options: options});\n console.log( parser.bashCompletion({name: 'mycli'}) );\n\nor directly from a `options` array of options specs:\n\n var code = dashdash.bashCompletionFromOptions({\n name: 'mycli',\n options: OPTIONS\n });\n\nWrite that content to \"/usr/local/etc/bash_completion.d/mycli\" and you will\nhave Bash completions for `mycli`. Alternatively you can write it to\nany file (e.g. \"~/.bashrc\") and source it.\n\nYou could add a `--completion` hidden option to your tool that emits the\ncompletion content and document for your users to call that to install\nBash completions.\n\nSee [examples/ddcompletion.js](examples/ddcompletion.js) for a complete\nexample, including how one can define bash functions for completion of custom\noption types. Also see [node-cmdln](https://github.com/trentm/node-cmdln) for\nhow it uses this for Bash completion for full multi-subcommand tools.\n\n- TODO: document specExtra\n- TODO: document includeHidden\n- TODO: document custom types, `function complete\\_FOO` guide, completionType\n- TODO: document argtypes\n\n\n# Parser config\n\nParser construction (i.e. `dashdash.createParser(CONFIG)`) takes the\nfollowing fields:\n\n- `options` (Array of option specs). Required. See the\n [Option specs](#option-specs) section below.\n\n- `interspersed` (Boolean). Optional. Default is true. If true this allows\n interspersed arguments and options. I.e.:\n\n node ./tool.js -v arg1 arg2 -h # '-h' is after interspersed args\n\n Set it to false to have '-h' **not** get parsed as an option in the above\n example.\n\n- `allowUnknown` (Boolean). Optional. Default is false. If false, this causes\n unknown arguments to throw an error. I.e.:\n\n node ./tool.js -v arg1 --afe8asefksjefhas\n\n Set it to true to treat the unknown option as a positional\n argument.\n\n **Caveat**: When a shortopt group, such as `-xaz` contains a mix of\n known and unknown options, the *entire* group is passed through\n unmolested as a positional argument.\n\n Consider if you have a known short option `-a`, and parse the\n following command line:\n\n node ./tool.js -xaz\n\n where `-x` and `-z` are unknown. There are multiple ways to\n interpret this:\n\n 1. `-x` takes a value: `{x: 'az'}`\n 2. `-x` and `-z` are both booleans: `{x:true,a:true,z:true}`\n\n Since dashdash does not know what `-x` and `-z` are, it can't know\n if you'd prefer to receive `{a:true,_args:['-x','-z']}` or\n `{x:'az'}`, or `{_args:['-xaz']}`. Leaving the positional arg unprocessed\n is the easiest mistake for the user to recover from.\n\n\n# Option specs\n\nExample using all fields (required fields are noted):\n\n```javascript\n{\n names: ['file', 'f'], // Required (one of `names` or `name`).\n type: 'string', // Required.\n completionType: 'filename',\n env: 'MYTOOL_FILE',\n help: 'Config file to load before running \"mytool\"',\n helpArg: 'PATH',\n helpWrap: false,\n default: path.resolve(process.env.HOME, '.mytoolrc')\n}\n```\n\nEach option spec in the `options` array must/can have the following fields:\n\n- `name` (String) or `names` (Array). Required. These give the option name\n and aliases. The first name (if more than one given) is the key for the\n parsed `opts` object.\n\n- `type` (String). Required. One of:\n\n - bool\n - string\n - number\n - integer\n - positiveInteger\n - date (epoch seconds, e.g. 1396031701, or ISO 8601 format\n `YYYY-MM-DD[THH:MM:SS[.sss][Z]]`, e.g. \"2014-03-28T18:35:01.489Z\")\n - arrayOfBool\n - arrayOfString\n - arrayOfNumber\n - arrayOfInteger\n - arrayOfPositiveInteger\n - arrayOfDate\n\n FWIW, these names attempt to match with asserts on\n [assert-plus](https://github.com/mcavage/node-assert-plus).\n You can add your own custom option types with `dashdash.addOptionType`.\n See below.\n\n- `completionType` (String). Optional. This is used for [Bash\n completion](#bash-completion) for an option argument. If not specified,\n then the value of `type` is used. Any string may be specified, but only the\n following values have meaning:\n\n - `none`: Provide no completions.\n - `file`: Bash's default completion (i.e. `complete -o default`), which\n includes filenames.\n - *Any string FOO for which a `function complete_FOO` Bash function is\n defined.* This is for custom completions for a given tool. Typically\n these custom functions are provided in the `specExtra` argument to\n `dashdash.bashCompletionFromOptions()`. See\n [\"examples/ddcompletion.js\"](examples/ddcompletion.js) for an example.\n\n- `env` (String or Array of String). Optional. An environment variable name\n (or names) that can be used as a fallback for this option. For example,\n given a \"foo.js\" like this:\n\n var options = [{names: ['dry-run', 'n'], env: 'FOO_DRY_RUN'}];\n var opts = dashdash.parse({options: options});\n\n Both `node foo.js --dry-run` and `FOO_DRY_RUN=1 node foo.js` would result\n in `opts.dry_run = true`.\n\n An environment variable is only used as a fallback, i.e. it is ignored if\n the associated option is given in `argv`.\n\n- `help` (String). Optional. Used for `parser.help()` output.\n\n- `helpArg` (String). Optional. Used in help output as the placeholder for\n the option argument, e.g. the \"PATH\" in:\n\n ...\n -f PATH, --file=PATH File to process\n ...\n\n- `helpWrap` (Boolean). Optional, default true. Set this to `false` to have\n that option's `help` *not* be text wrapped in `<parser>.help()` output.\n\n- `default`. Optional. A default value used for this option, if the\n option isn't specified in argv.\n\n- `hidden` (Boolean). Optional, default false. If true, help output will not\n include this option. See also the `includeHidden` option to\n `bashCompletionFromOptions()` for [Bash completion](#bash-completion).\n\n\n# Option group headings\n\nYou can add headings between option specs in the `options` array. To do so,\nsimply add an object with only a `group` property -- the string to print as\nthe heading for the subsequent options in the array. For example:\n\n```javascript\nvar options = [\n {\n group: 'Armament Options'\n },\n {\n names: [ 'weapon', 'w' ],\n type: 'string'\n },\n {\n group: 'General Options'\n },\n {\n names: [ 'help', 'h' ],\n type: 'bool'\n }\n];\n...\n```\n\nNote: You can use an empty string, `{group: ''}`, to get a blank line in help\noutput between groups of options.\n\n\n# Help config\n\nThe `parser.help(...)` function is configurable as follows:\n\n Options:\n Armament Options:\n ^^ -w WEAPON, --weapon=WEAPON Weapon with which to crush. One of: |\n / sword, spear, maul |\n / General Options: |\n / -h, --help Print this help and exit. |\n / ^^^^ ^ |\n \\ `-- indent `-- helpCol maxCol ---'\n `-- headingIndent\n\n- `indent` (Number or String). Default 4. Set to a number (for that many\n spaces) or a string for the literal indent.\n- `headingIndent` (Number or String). Default half length of `indent`. Set to\n a number (for that many spaces) or a string for the literal indent. This\n indent applies to group heading lines, between normal option lines.\n- `nameSort` (String). Default is 'length'. By default the names are\n sorted to put the short opts first (i.e. '-h, --help' preferred\n to '--help, -h'). Set to 'none' to not do this sorting.\n- `maxCol` (Number). Default 80. Note that reflow is just done on whitespace\n so a long token in the option help can overflow maxCol.\n- `helpCol` (Number). If not set a reasonable value will be determined\n between `minHelpCol` and `maxHelpCol`.\n- `minHelpCol` (Number). Default 20.\n- `maxHelpCol` (Number). Default 40.\n- `helpWrap` (Boolean). Default true. Set to `false` to have option `help`\n strings *not* be textwrapped to the helpCol..maxCol range.\n- `includeEnv` (Boolean). Default false. If the option has associated\n environment variables (via the `env` option spec attribute), then\n append mentioned of those envvars to the help string.\n- `includeDefault` (Boolean). Default false. If the option has a default value\n (via the `default` option spec attribute, or a default on the option's type),\n then a \"Default: VALUE\" string will be appended to the help string.\n\n\n# Custom option types\n\nDashdash includes a good starter set of option types that it will parse for\nyou. However, you can add your own via:\n\n var dashdash = require('dashdash');\n dashdash.addOptionType({\n name: '...',\n takesArg: true,\n helpArg: '...',\n parseArg: function (option, optstr, arg) {\n ...\n },\n array: false, // optional\n arrayFlatten: false, // optional\n default: ..., // optional\n completionType: ... // optional\n });\n\nFor example, a simple option type that accepts 'yes', 'y', 'no' or 'n' as\na boolean argument would look like:\n\n var dashdash = require('dashdash');\n\n function parseYesNo(option, optstr, arg) {\n var argLower = arg.toLowerCase()\n if (~['yes', 'y'].indexOf(argLower)) {\n return true;\n } else if (~['no', 'n'].indexOf(argLower)) {\n return false;\n } else {\n throw new Error(format(\n 'arg for \"%s\" is not \"yes\" or \"no\": \"%s\"',\n optstr, arg));\n }\n }\n\n dashdash.addOptionType({\n name: 'yesno'\n takesArg: true,\n helpArg: '<yes|no>',\n parseArg: parseYesNo\n });\n\n var options = {\n {names: ['answer', 'a'], type: 'yesno'}\n };\n var opts = dashdash.parse({options: options});\n\nSee \"examples/custom-option-\\*.js\" for other examples.\nSee the `addOptionType` block comment in \"lib/dashdash.js\" for more details.\nPlease let me know [with an\nissue](https://github.com/trentm/node-dashdash/issues/new) if you write a\ngenerally useful one.\n\n\n\n# Why\n\nWhy another node.js option parsing lib?\n\n- `nopt` really is just for \"tools like npm\". Implicit opts (e.g. '--no-foo'\n works for every '--foo'). Can't disable abbreviated opts. Can't do multiple\n usages of same opt, e.g. '-vvv' (I think). Can't do grouped short opts.\n\n- `optimist` has surprise interpretation of options (at least to me).\n Implicit opts mean ambiguities and poor error handling for fat-fingering.\n `process.exit` calls makes it hard to use as a libary.\n\n- `optparse` Incomplete docs. Is this an attempted clone of Python's `optparse`.\n Not clear. Some divergence. `parser.on(\"name\", ...)` API is weird.\n\n- `argparse` Dep on underscore. No thanks just for option processing.\n `find lib | wc -l` -> `26`. Overkill.\n Argparse is a bit different anyway. Not sure I want that.\n\n- `posix-getopt` No type validation. Though that isn't a killer. AFAIK can't\n have a long opt without a short alias. I.e. no `getopt_long` semantics.\n Also, no whizbang features like generated help output.\n\n- [\"commander.js\"](https://github.com/visionmedia/commander.js): I wrote\n [a critique](http://trentm.com/2014/01/a-critique-of-commander-for-nodejs.html)\n a while back. It seems fine, but last I checked had\n [an outstanding bug](https://github.com/visionmedia/commander.js/pull/121)\n that would prevent me from using it.\n\n\n# License\n\nMIT. See LICENSE.txt.\n",
90
+ "readmeFilename": "README.md",
90
91
  "repository": {
91
92
  "type": "git",
92
93
  "url": "git://github.com/trentm/node-dashdash.git"
@@ -71,7 +71,8 @@
71
71
  ],
72
72
  "name": "escape-string-regexp",
73
73
  "optionalDependencies": {},
74
- "readme": "ERROR: No README data found!",
74
+ "readme": "# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp)\n\n> Escape RegExp special characters\n\n\n## Install\n\n```\n$ npm install --save escape-string-regexp\n```\n\n\n## Usage\n\n```js\nconst escapeStringRegexp = require('escape-string-regexp');\n\nconst escapedString = escapeStringRegexp('how much $ for a unicorn?');\n//=> 'how much \\$ for a unicorn\\?'\n\nnew RegExp(escapedString);\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
75
+ "readmeFilename": "readme.md",
75
76
  "repository": {
76
77
  "type": "git",
77
78
  "url": "git+https://github.com/sindresorhus/escape-string-regexp.git"
@@ -92,7 +92,8 @@
92
92
  "lint",
93
93
  "test"
94
94
  ],
95
- "readme": "ERROR: No README data found!",
95
+ "readme": "# Form-Data [![NPM Module](https://img.shields.io/npm/v/form-data.svg)](https://www.npmjs.com/package/form-data) [![Join the chat at https://gitter.im/form-data/form-data](http://form-data.github.io/images/gitterbadge.svg)](https://gitter.im/form-data/form-data)\n\nA library to create readable ```\"multipart/form-data\"``` streams. Can be used to submit forms and file uploads to other web applications.\n\nThe API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd].\n\n[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface\n[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions\n\n[![Linux Build](https://img.shields.io/travis/form-data/form-data/master.svg?label=linux:0.10-5.x)](https://travis-ci.org/form-data/form-data)\n[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/form-data/master.svg?label=windows:0.10-5.x)](https://ci.appveyor.com/project/alexindigo/form-data)\n[![Coverage Status](https://img.shields.io/coveralls/form-data/form-data/master.svg?label=code+coverage)](https://coveralls.io/github/form-data/form-data?branch=master)\n\n[![Dependency Status](https://img.shields.io/david/form-data/form-data.svg)](https://david-dm.org/form-data/form-data)\n[![Codacy Badge](https://img.shields.io/codacy/43ece80331c246179695e41f81eeffe2.svg)](https://www.codacy.com/app/form-data/form-data)\n[![bitHound Overall Score](https://www.bithound.io/github/form-data/form-data/badges/score.svg)](https://www.bithound.io/github/form-data/form-data)\n\n## Install\n\n```\nnpm install form-data\n```\n\n## Usage\n\nIn this example we are constructing a form with 3 fields that contain a string,\na buffer and a file stream.\n\n``` javascript\nvar FormData = require('form-data');\nvar fs = require('fs');\n\nvar form = new FormData();\nform.append('my_field', 'my value');\nform.append('my_buffer', new Buffer(10));\nform.append('my_file', fs.createReadStream('/foo/bar.jpg'));\n```\n\nAlso you can use http-response stream:\n\n``` javascript\nvar FormData = require('form-data');\nvar http = require('http');\n\nvar form = new FormData();\n\nhttp.request('http://nodejs.org/images/logo.png', function(response) {\n form.append('my_field', 'my value');\n form.append('my_buffer', new Buffer(10));\n form.append('my_logo', response);\n});\n```\n\nOr @mikeal's [request](https://github.com/request/request) stream:\n\n``` javascript\nvar FormData = require('form-data');\nvar request = require('request');\n\nvar form = new FormData();\n\nform.append('my_field', 'my value');\nform.append('my_buffer', new Buffer(10));\nform.append('my_logo', request('http://nodejs.org/images/logo.png'));\n```\n\nIn order to submit this form to a web application, call ```submit(url, [callback])``` method:\n\n``` javascript\nform.submit('http://example.org/', function(err, res) {\n // res – response object (http.IncomingMessage) //\n res.resume();\n});\n\n```\n\nFor more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods.\n\n### Alternative submission methods\n\nYou can use node's http client interface:\n\n``` javascript\nvar http = require('http');\n\nvar request = http.request({\n method: 'post',\n host: 'example.org',\n path: '/upload',\n headers: form.getHeaders()\n});\n\nform.pipe(request);\n\nrequest.on('response', function(res) {\n console.log(res.statusCode);\n});\n```\n\nOr if you would prefer the `'Content-Length'` header to be set for you:\n\n``` javascript\nform.submit('example.org/upload', function(err, res) {\n console.log(res.statusCode);\n});\n```\n\nTo use custom headers and pre-known length in parts:\n\n``` javascript\nvar CRLF = '\\r\\n';\nvar form = new FormData();\n\nvar options = {\n header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF,\n knownLength: 1\n};\n\nform.append('my_buffer', buffer, options);\n\nform.submit('http://example.com/', function(err, res) {\n if (err) throw err;\n console.log('Done');\n});\n```\n\nForm-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide \"file\"-related information manually:\n\n``` javascript\nsomeModule.stream(function(err, stdout, stderr) {\n if (err) throw err;\n\n var form = new FormData();\n\n form.append('file', stdout, {\n filename: 'unicycle.jpg',\n contentType: 'image/jpg',\n knownLength: 19806\n });\n\n form.submit('http://example.com/', function(err, res) {\n if (err) throw err;\n console.log('Done');\n });\n});\n```\n\nFor edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter:\n\n``` javascript\nform.submit({\n host: 'example.com',\n path: '/probably.php?extra=params',\n auth: 'username:password'\n}, function(err, res) {\n console.log(res.statusCode);\n});\n```\n\nIn case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`:\n\n``` javascript\nform.submit({\n host: 'example.com',\n path: '/surelynot.php',\n headers: {'x-test-header': 'test-header-value'}\n}, function(err, res) {\n console.log(res.statusCode);\n});\n```\n\n### Integration with other libraries\n\n#### Request\n\nForm submission using [request](https://github.com/request/request):\n\n```javascript\nvar formData = {\n my_field: 'my_value',\n my_file: fs.createReadStream(__dirname + '/unicycle.jpg'),\n};\n\nrequest.post({url:'http://service.com/upload', formData: formData}, function(err, httpResponse, body) {\n if (err) {\n return console.error('upload failed:', err);\n }\n console.log('Upload successful! Server responded with:', body);\n});\n```\n\nFor more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads).\n\n#### node-fetch\n\nYou can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch):\n\n```javascript\nvar form = new FormData();\n\nform.append('a', 1);\n\nfetch('http://example.com', { method: 'POST', body: form })\n .then(function(res) {\n return res.json();\n }).then(function(json) {\n console.log(json);\n });\n```\n\n## Notes\n\n- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround.\n- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing]\n\n## License\n\nForm-Data is licensed under the MIT license.\n",
96
+ "readmeFilename": "README.md",
96
97
  "repository": {
97
98
  "type": "git",
98
99
  "url": "git://github.com/form-data/form-data.git"
@@ -70,7 +70,8 @@
70
70
  ],
71
71
  "name": "is-my-json-valid",
72
72
  "optionalDependencies": {},
73
- "readme": "ERROR: No README data found!",
73
+ "readme": "# is-my-json-valid\n\nA [JSONSchema](http://json-schema.org/) validator that uses code generation\nto be extremely fast\n\n```\nnpm install is-my-json-valid\n```\n\nIt passes the entire JSONSchema v4 test suite except for `remoteRefs` and `maxLength`/`minLength` when using unicode surrogate pairs.\n\n[![build status](http://img.shields.io/travis/mafintosh/is-my-json-valid.svg?style=flat)](http://travis-ci.org/mafintosh/is-my-json-valid)\n\n## Usage\n\nSimply pass a schema to compile it\n\n``` js\nvar validator = require('is-my-json-valid')\n\nvar validate = validator({\n required: true,\n type: 'object',\n properties: {\n hello: {\n required: true,\n type: 'string'\n }\n }\n})\n\nconsole.log('should be valid', validate({hello: 'world'}))\nconsole.log('should not be valid', validate({}))\n\n// get the last list of errors by checking validate.errors\n// the following will print [{field: 'data.hello', message: 'is required'}]\nconsole.log(validate.errors)\n```\n\nYou can also pass the schema as a string\n\n``` js\nvar validate = validator('{\"type\": ... }')\n```\n\nOptionally you can use the require submodule to load a schema from `__dirname`\n\n``` js\nvar validator = require('is-my-json-valid/require')\nvar validate = validator('my-schema.json')\n```\n\n## Custom formats\n\nis-my-json-valid supports the formats specified in JSON schema v4 (such as date-time).\nIf you want to add your own custom formats pass them as the formats options to the validator\n\n``` js\nvar validate = validator({\n type: 'string',\n required: true,\n format: 'only-a'\n}, {\n formats: {\n 'only-a': /^a+$/\n }\n})\n\nconsole.log(validate('aa')) // true\nconsole.log(validate('ab')) // false\n```\n\n## External schemas\n\nYou can pass in external schemas that you reference using the `$ref` attribute as the `schemas` option\n\n``` js\nvar ext = {\n required: true,\n type: 'string'\n}\n\nvar schema = {\n $ref: '#ext' // references another schema called ext\n}\n\n// pass the external schemas as an option\nvar validate = validator(schema, {schemas: {ext: ext}})\n\nvalidate('hello') // returns true\nvalidate(42) // return false\n```\n\n## Filtering away additional properties\n\nis-my-json-valid supports filtering away properties not in the schema\n\n``` js\nvar filter = validator.filter({\n required: true,\n type: 'object',\n properties: {\n hello: {type: 'string', required: true}\n },\n additionalProperties: false\n})\n\nvar doc = {hello: 'world', notInSchema: true}\nconsole.log(filter(doc)) // {hello: 'world'}\n```\n\n## Verbose mode outputs the value on errors\n\nis-my-json-valid outputs the value causing an error when verbose is set to true\n\n``` js\nvar validate = validator({\n required: true,\n type: 'object',\n properties: {\n hello: {\n required: true,\n type: 'string'\n }\n }\n}, {\n verbose: true\n})\n\nvalidate({hello: 100});\nconsole.log(validate.errors) // {field: 'data.hello', message: 'is the wrong type', value: 100, type: 'string'}\n```\n\n## Greedy mode tries to validate as much as possible\n\nBy default is-my-json-valid bails on first validation error but when greedy is\nset to true it tries to validate as much as possible:\n\n``` js\nvar validate = validator({\n type: 'object',\n properties: {\n x: {\n type: 'number'\n }\n },\n required: ['x', 'y']\n}, {\n greedy: true\n});\n\nvalidate({x: 'string'});\nconsole.log(validate.errors) // [{field: 'data.y', message: 'is required'},\n // {field: 'data.x', message: 'is the wrong type'}]\n```\n\n## Performance\n\nis-my-json-valid uses code generation to turn your JSON schema into basic javascript code that is easily optimizeable by v8.\n\nAt the time of writing, is-my-json-valid is the __fastest validator__ when running\n\n* [json-schema-benchmark](https://github.com/Muscula/json-schema-benchmark)\n* [cosmicreals.com benchmark](http://cosmicrealms.com/blog/2014/08/29/benchmark-of-node-dot-js-json-validation-modules-part-3/)\n* [jsck benchmark](https://github.com/pandastrike/jsck/issues/72#issuecomment-70992684)\n* [themis benchmark](https://cdn.rawgit.com/playlyfe/themis/master/benchmark/results.html)\n* [z-schema benchmark](https://rawgit.com/zaggino/z-schema/master/benchmark/results.html)\n\nIf you know any other relevant benchmarks open a PR and I'll add them.\n\n## License\n\nMIT\n",
74
+ "readmeFilename": "README.md",
74
75
  "repository": {
75
76
  "type": "git",
76
77
  "url": "git+https://github.com/mafintosh/is-my-json-valid.git"
@@ -90,7 +90,8 @@
90
90
  ],
91
91
  "name": "mime-db",
92
92
  "optionalDependencies": {},
93
- "readme": "ERROR: No README data found!",
93
+ "readme": "# mime-db\n\n[![NPM Version][npm-version-image]][npm-url]\n[![NPM Downloads][npm-downloads-image]][npm-url]\n[![Node.js Version][node-image]][node-url]\n[![Build Status][travis-image]][travis-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\nThis is a database of all mime types.\nIt consists of a single, public JSON file and does not include any logic,\nallowing it to remain as un-opinionated as possible with an API.\nIt aggregates data from the following sources:\n\n- http://www.iana.org/assignments/media-types/media-types.xhtml\n- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types\n- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types\n\n## Installation\n\n```bash\nnpm install mime-db\n```\n\n### Database Download\n\nIf you're crazy enough to use this in the browser, you can just grab the\nJSON file using [RawGit](https://rawgit.com/). It is recommended to replace\n`master` with [a release tag](https://github.com/jshttp/mime-db/tags) as the\nJSON format may change in the future.\n\n```\nhttps://cdn.rawgit.com/jshttp/mime-db/master/db.json\n```\n\n## Usage\n\n```js\nvar db = require('mime-db');\n\n// grab data on .js files\nvar data = db['application/javascript'];\n```\n\n## Data Structure\n\nThe JSON file is a map lookup for lowercased mime types.\nEach mime type has the following properties:\n\n- `.source` - where the mime type is defined.\n If not set, it's probably a custom media type.\n - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types)\n - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml)\n - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types)\n- `.extensions[]` - known extensions associated with this mime type.\n- `.compressible` - whether a file of this type can be gzipped.\n- `.charset` - the default charset associated with this type, if any.\n\nIf unknown, every property could be `undefined`.\n\n## Contributing\n\nTo edit the database, only make PRs against `src/custom.json` or\n`src/custom-suffix.json`.\n\nTo update the build, run `npm run build`.\n\n## Adding Custom Media Types\n\nThe best way to get new media types included in this library is to register\nthem with the IANA. The community registration procedure is outlined in\n[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types\nregistered with the IANA are automatically pulled into this library.\n\n[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg\n[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg\n[npm-url]: https://npmjs.org/package/mime-db\n[travis-image]: https://img.shields.io/travis/jshttp/mime-db/master.svg\n[travis-url]: https://travis-ci.org/jshttp/mime-db\n[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db/master.svg\n[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master\n[node-image]: https://img.shields.io/node/v/mime-db.svg\n[node-url]: http://nodejs.org/download/\n",
94
+ "readmeFilename": "README.md",
94
95
  "repository": {
95
96
  "type": "git",
96
97
  "url": "git+https://github.com/jshttp/mime-db.git"
@@ -83,7 +83,8 @@
83
83
  ],
84
84
  "name": "mime-types",
85
85
  "optionalDependencies": {},
86
- "readme": "ERROR: No README data found!",
86
+ "readme": "# mime-types\n\n[![NPM Version][npm-image]][npm-url]\n[![NPM Downloads][downloads-image]][downloads-url]\n[![Node.js Version][node-version-image]][node-version-url]\n[![Build Status][travis-image]][travis-url]\n[![Test Coverage][coveralls-image]][coveralls-url]\n\nThe ultimate javascript content-type utility.\n\nSimilar to [node-mime](https://github.com/broofa/node-mime), except:\n\n- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`,\n so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`.\n- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`.\n- Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db)\n- No `.define()` functionality\n\nOtherwise, the API is compatible.\n\n## Install\n\n```sh\n$ npm install mime-types\n```\n\n## Adding Types\n\nAll mime types are based on [mime-db](https://github.com/jshttp/mime-db),\nso open a PR there if you'd like to add mime types.\n\n## API\n\n```js\nvar mime = require('mime-types')\n```\n\nAll functions return `false` if input is invalid or not found.\n\n### mime.lookup(path)\n\nLookup the content-type associated with a file.\n\n```js\nmime.lookup('json') // 'application/json'\nmime.lookup('.md') // 'text/x-markdown'\nmime.lookup('file.html') // 'text/html'\nmime.lookup('folder/file.js') // 'application/javascript'\nmime.lookup('folder/.htaccess') // false\n\nmime.lookup('cats') // false\n```\n\n### mime.contentType(type)\n\nCreate a full content-type header given a content-type or extension.\n\n```js\nmime.contentType('markdown') // 'text/x-markdown; charset=utf-8'\nmime.contentType('file.json') // 'application/json; charset=utf-8'\n\n// from a full path\nmime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8'\n```\n\n### mime.extension(type)\n\nGet the default extension for a content-type.\n\n```js\nmime.extension('application/octet-stream') // 'bin'\n```\n\n### mime.charset(type)\n\nLookup the implied default charset of a content-type.\n\n```js\nmime.charset('text/x-markdown') // 'UTF-8'\n```\n\n### var type = mime.types[extension]\n\nA map of content-types by extension.\n\n### [extensions...] = mime.extensions[type]\n\nA map of extensions by content-type.\n\n## License\n\n[MIT](LICENSE)\n\n[npm-image]: https://img.shields.io/npm/v/mime-types.svg\n[npm-url]: https://npmjs.org/package/mime-types\n[node-version-image]: https://img.shields.io/node/v/mime-types.svg\n[node-version-url]: https://nodejs.org/en/download/\n[travis-image]: https://img.shields.io/travis/jshttp/mime-types/master.svg\n[travis-url]: https://travis-ci.org/jshttp/mime-types\n[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types/master.svg\n[coveralls-url]: https://coveralls.io/r/jshttp/mime-types\n[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg\n[downloads-url]: https://npmjs.org/package/mime-types\n",
87
+ "readmeFilename": "README.md",
87
88
  "repository": {
88
89
  "type": "git",
89
90
  "url": "git+https://github.com/jshttp/mime-types.git"
@@ -1,8 +1,14 @@
1
1
  # node-pre-gyp changelog
2
2
 
3
+ ## 0.6.25
4
+
5
+ - Improved support for auto-detection of electron runtime in `node-pre-gyp.find()`
6
+ - Add known node version for 4.4.1 and 5.9.1
7
+
3
8
  ## 0.6.24
4
9
 
5
10
  - Add known node version for 5.8.0, 5.9.0, and 4.4.0.
11
+
6
12
  ## 0.6.23
7
13
 
8
14
  - Add known node version for 0.10.43, 0.12.11, 4.3.2, and 5.7.1.