[
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=acorn&version=4.0.11",
    "body": "",
    "status": 200,
    "response": {
      "name": "acorn",
      "version": "4.0.11",
      "description": "ECMAScript parser",
      "keywords": [],
      "readme": "# Acorn\n\n[![Build Status](https://travis-ci.org/ternjs/acorn.svg?branch=master)](https://travis-ci.org/ternjs/acorn)\n[![NPM version](https://img.shields.io/npm/v/acorn.svg)](https://www.npmjs.com/package/acorn)\n[![CDNJS](https://img.shields.io/cdnjs/v/acorn.svg)](https://cdnjs.com/libraries/acorn)  \n[Author funding status: ![maintainer happiness](https://marijnhaverbeke.nl/fund/status_s.png?force)](https://marijnhaverbeke.nl/fund/)\n\nA tiny, fast JavaScript parser, written completely in JavaScript.\n\n## Community\n\nAcorn is open source software released under an\n[MIT license](https://github.com/ternjs/acorn/blob/master/LICENSE).\n\nYou are welcome to\n[report bugs](https://github.com/ternjs/acorn/issues) or create pull\nrequests on [github](https://github.com/ternjs/acorn). For questions\nand discussion, please use the\n[Tern discussion forum](https://discuss.ternjs.net).\n\n## Installation\n\nThe easiest way to install acorn is with [`npm`][npm].\n\n[npm]: https://www.npmjs.com/\n\n```sh\nnpm install acorn\n```\n\nAlternately, download the source.\n\n```sh\ngit clone https://github.com/ternjs/acorn.git\n```\n\n## Components\n\nWhen run in a CommonJS (node.js) or AMD environment, exported values\nappear in the interfaces exposed by the individual files, as usual.\nWhen loaded in the browser (Acorn works in any JS-enabled browser more\nrecent than IE5) without any kind of module management, a single\nglobal object `acorn` will be defined, and all the exported properties\nwill be added to that.\n\n### Main parser\n\nThis is implemented in `dist/acorn.js`, and is what you get when you\n`require(\"acorn\")` in node.js.\n\n**parse**`(input, options)` is used to parse a JavaScript program.\nThe `input` parameter is a string, `options` can be undefined or an\nobject setting some of the options listed below. The return value will\nbe an abstract syntax tree object as specified by the\n[ESTree spec][estree].\n\nWhen  encountering   a  syntax   error,  the   parser  will   raise  a\n`SyntaxError` object with a meaningful  message. The error object will\nhave a `pos` property that indicates the character offset at which the\nerror occurred,  and a `loc`  object that contains a  `{line, column}`\nobject referring to that same position.\n\n[estree]: https://github.com/estree/estree\n\n- **ecmaVersion**: Indicates the ECMAScript version to parse. Must be\n  either 3, 5, 6 (2015), 7 (2016), or 8 (2017). This influences support for strict\n  mode, the set of reserved words, and support for new syntax features.\n  Default is 7.\n\n  **NOTE**: Only 'stage 4' (finalized) ECMAScript features are being\n  implemented by Acorn.\n\n- **sourceType**: Indicate the mode the code should be parsed in. Can be\n  either `\"script\"` or `\"module\"`. This influences global strict mode\n  and parsing of `import` and `export` declarations.\n\n- **onInsertedSemicolon**: If given a callback, that callback will be\n  called whenever a missing semicolon is inserted by the parser. The\n  callback will be given the character offset of the point where the\n  semicolon is inserted as argument, and if `locations` is on, also a\n  `{line, column}` object representing this position.\n\n- **onTrailingComma**: Like `onInsertedSemicolon`, but for trailing\n  commas.\n\n- **allowReserved**: If `false`, using a reserved word will generate\n  an error. Defaults to `true` for `ecmaVersion` 3, `false` for higher\n  versions. When given the value `\"never\"`, reserved words and\n  keywords can also not be used as property names (as in Internet\n  Explorer's old parser).\n\n- **allowReturnOutsideFunction**: By default, a return statement at\n  the top level raises an error. Set this to `true` to accept such\n  code.\n\n- **allowImportExportEverywhere**: By default, `import` and `export`\n  declarations can only appear at a program's top level. Setting this\n  option to `true` allows them anywhere where a statement is allowed.\n\n- **allowHashBang**: When this is enabled (off by default), if the\n  code starts with the characters `#!` (as in a shellscript), the\n  first line will be treated as a comment.\n\n- **locations**: When `true`, each node has a `loc` object attached\n  with `start` and `end` subobjects, each of which contains the\n  one-based line and zero-based column numbers in `{line, column}`\n  form. Default is `false`.\n\n- **onToken**: If a function is passed for this option, each found\n  token will be passed in same format as tokens returned from\n  `tokenizer().getToken()`.\n\n  If array is passed, each found token is pushed to it.\n\n  Note that you are not allowed to call the parser from the\n  callback—that will corrupt its internal state.\n\n- **onComment**: If a function is passed for this option, whenever a\n  comment is encountered the function will be called with the\n  following parameters:\n\n  - `block`: `true` if the comment is a block comment, false if it\n    is a line comment.\n  - `text`: The content of the comment.\n  - `start`: Character offset of the start of the comment.\n  - `end`: Character offset of the end of the comment.\n\n  When the `locations` options is on, the `{line, column}` locations\n  of the comment’s start and end are passed as two additional\n  parameters.\n\n  If array is passed for this option, each found comment is pushed\n  to it as object in Esprima format:\n\n  ```javascript\n  {\n    \"type\": \"Line\" | \"Block\",\n    \"value\": \"comment text\",\n    \"start\": Number,\n    \"end\": Number,\n    // If `locations` option is on:\n    \"loc\": {\n      \"start\": {line: Number, column: Number}\n      \"end\": {line: Number, column: Number}\n    },\n    // If `ranges` option is on:\n    \"range\": [Number, Number]\n  }\n  ```\n\n  Note that you are not allowed to call the parser from the\n  callback—that will corrupt its internal state.\n\n- **ranges**: Nodes have their start and end characters offsets\n  recorded in `start` and `end` properties (directly on the node,\n  rather than the `loc` object, which holds line/column data. To also\n  add a [semi-standardized][range] `range` property holding a\n  `[start, end]` array with the same numbers, set the `ranges` option\n  to `true`.\n\n- **program**: It is possible to parse multiple files into a single\n  AST by passing the tree produced by parsing the first file as the\n  `program` option in subsequent parses. This will add the toplevel\n  forms of the parsed file to the \"Program\" (top) node of an existing\n  parse tree.\n\n- **sourceFile**: When the `locations` option is `true`, you can pass\n  this option to add a `source` attribute in every node’s `loc`\n  object. Note that the contents of this option are not examined or\n  processed in any way; you are free to use whatever format you\n  choose.\n\n- **directSourceFile**: Like `sourceFile`, but a `sourceFile` property\n  will be added (regardless of the `location` option) directly to the\n  nodes, rather than the `loc` object.\n\n- **preserveParens**: If this option is `true`, parenthesized expressions\n  are represented by (non-standard) `ParenthesizedExpression` nodes\n  that have a single `expression` property containing the expression\n  inside parentheses.\n\n[range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n\n**parseExpressionAt**`(input, offset, options)` will parse a single\nexpression in a string, and return its AST. It will not complain if\nthere is more of the string left after the expression.\n\n**getLineInfo**`(input, offset)` can be used to get a `{line,\ncolumn}` object for a given program string and character offset.\n\n**tokenizer**`(input, options)` returns an object with a `getToken`\nmethod that can be called repeatedly to get the next token, a `{start,\nend, type, value}` object (with added `loc` property when the\n`locations` option is enabled and `range` property when the `ranges`\noption is enabled). When the token's type is `tokTypes.eof`, you\nshould stop calling the method, since it will keep returning that same\ntoken forever.\n\nIn ES6 environment, returned result can be used as any other\nprotocol-compliant iterable:\n\n```javascript\nfor (let token of acorn.tokenizer(str)) {\n  // iterate over the tokens\n}\n\n// transform code to array of tokens:\nvar tokens = [...acorn.tokenizer(str)];\n```\n\n**tokTypes** holds an object mapping names to the token type objects\nthat end up in the `type` properties of tokens.\n\n#### Note on using with [Escodegen][escodegen]\n\nEscodegen supports generating comments from AST, attached in\nEsprima-specific format. In order to simulate same format in\nAcorn, consider following example:\n\n```javascript\nvar comments = [], tokens = [];\n\nvar ast = acorn.parse('var x = 42; // answer', {\n\t// collect ranges for each node\n\tranges: true,\n\t// collect comments in Esprima's format\n\tonComment: comments,\n\t// collect token ranges\n\tonToken: tokens\n});\n\n// attach comments using collected information\nescodegen.attachComments(ast, comments, tokens);\n\n// generate code\nconsole.log(escodegen.generate(ast, {comment: true}));\n// > 'var x = 42;    // answer'\n```\n\n[escodegen]: https://github.com/estools/escodegen\n\n### dist/acorn_loose.js ###\n\nThis file implements an error-tolerant parser. It exposes a single\nfunction. The loose parser is accessible in node.js via `require(\"acorn/dist/acorn_loose\")`.\n\n**parse_dammit**`(input, options)` takes the same arguments and\nreturns the same syntax tree as the `parse` function in `acorn.js`,\nbut never raises an error, and will do its best to parse syntactically\ninvalid code in as meaningful a way as it can. It'll insert identifier\nnodes with name `\"✖\"` as placeholders in places where it can't make\nsense of the input. Depends on `acorn.js`, because it uses the same\ntokenizer.\n\n### dist/walk.js ###\n\nImplements an abstract syntax tree walker. Will store its interface in\n`acorn.walk` when loaded without a module system.\n\n**simple**`(node, visitors, base, state)` does a 'simple' walk over\na tree. `node` should be the AST node to walk, and `visitors` an\nobject with properties whose names correspond to node types in the\n[ESTree spec][estree]. The properties should contain functions\nthat will be called with the node object and, if applicable the state\nat that point. The last two arguments are optional. `base` is a walker\nalgorithm, and `state` is a start state. The default walker will\nsimply visit all statements and expressions and not produce a\nmeaningful state. (An example of a use of state is to track scope at\neach point in the tree.)\n\n**ancestor**`(node, visitors, base, state)` does a 'simple' walk over\na tree, building up an array of ancestor nodes (including the current node)\nand passing the array to the callbacks as a third parameter.\n\n**recursive**`(node, state, functions, base)` does a 'recursive'\nwalk, where the walker functions are responsible for continuing the\nwalk on the child nodes of their target node. `state` is the start\nstate, and `functions` should contain an object that maps node types\nto walker functions. Such functions are called with `(node, state, c)`\narguments, and can cause the walk to continue on a sub-node by calling\nthe `c` argument on it with `(node, state)` arguments. The optional\n`base` argument provides the fallback walker functions for node types\nthat aren't handled in the `functions` object. If not given, the\ndefault walkers will be used.\n\n**make**`(functions, base)` builds a new walker object by using the\nwalker functions in `functions` and filling in the missing ones by\ntaking defaults from `base`.\n\n**findNodeAt**`(node, start, end, test, base, state)` tries to\nlocate a node in a tree at the given start and/or end offsets, which\nsatisfies the predicate `test`. `start` and `end` can be either `null`\n(as wildcard) or a number. `test` may be a string (indicating a node\ntype) or a function that takes `(nodeType, node)` arguments and\nreturns a boolean indicating whether this node is interesting. `base`\nand `state` are optional, and can be used to specify a custom walker.\nNodes are tested from inner to outer, so if two nodes match the\nboundaries, the inner one will be preferred.\n\n**findNodeAround**`(node, pos, test, base, state)` is a lot like\n`findNodeAt`, but will match any node that exists 'around' (spanning)\nthe given position.\n\n**findNodeAfter**`(node, pos, test, base, state)` is similar to\n`findNodeAround`, but will match all nodes *after* the given position\n(testing outer nodes before inner nodes).\n\n## Command line interface\n\nThe `bin/acorn` utility can be used to parse a file from the command\nline. It accepts as arguments its input file and the following\noptions:\n\n- `--ecma3|--ecma5|--ecma6|--ecma7`: Sets the ECMAScript version to parse. Default is\n  version 5.\n\n- `--module`: Sets the parsing mode to `\"module\"`. Is set to `\"script\"` otherwise.\n\n- `--locations`: Attaches a \"loc\" object to each node with \"start\" and\n  \"end\" subobjects, each of which contains the one-based line and\n  zero-based column numbers in `{line, column}` form.\n\n- `--allow-hash-bang`: If the code starts with the characters #! (as in a shellscript), the first line will be treated as a comment.\n\n- `--compact`: No whitespace is used in the AST output.\n\n- `--silent`: Do not output the AST, just return the exit status.\n\n- `--help`: Print the usage information and quit.\n\nThe utility spits out the syntax tree as JSON data.\n\n## Build system\n\nAcorn is written in ECMAScript 6, as a set of small modules, in the\nproject's `src` directory, and compiled down to bigger ECMAScript 3\nfiles in `dist` using [Browserify](http://browserify.org) and\n[Babel](http://babeljs.io/). If you are already using Babel, you can\nconsider including the modules directly.\n\nThe command-line test runner (`npm test`) uses the ES6 modules. The\nbrowser-based test page (`test/index.html`) uses the compiled modules.\nThe `bin/build-acorn.js` script builds the latter from the former.\n\nIf you are working on Acorn, you'll probably want to try the code out\ndirectly, without an intermediate build step. In your scripts, you can\nregister the Babel require shim like this:\n\n    require(\"babel-core/register\")\n\nThat will allow you to directly `require` the ES6 modules.\n\n## Plugins\n\nAcorn is designed support allow plugins which, within reasonable\nbounds, redefine the way the parser works. Plugins can add new token\ntypes and new tokenizer contexts (if necessary), and extend methods in\nthe parser object. This is not a clean, elegant API—using it requires\nan understanding of Acorn's internals, and plugins are likely to break\nwhenever those internals are significantly changed. But still, it is\n_possible_, in this way, to create parsers for JavaScript dialects\nwithout forking all of Acorn. And in principle it is even possible to\ncombine such plugins, so that if you have, for example, a plugin for\nparsing types and a plugin for parsing JSX-style XML literals, you\ncould load them both and parse code with both JSX tags and types.\n\nA plugin should register itself by adding a property to\n`acorn.plugins`, which holds a function. Calling `acorn.parse`, a\n`plugins` option can be passed, holding an object mapping plugin names\nto configuration values (or just `true` for plugins that don't take\noptions). After the parser object has been created, the initialization\nfunctions for the chosen plugins are called with `(parser,\nconfigValue)` arguments. They are expected to use the `parser.extend`\nmethod to extend parser methods. For example, the `readToken` method\ncould be extended like this:\n\n```javascript\nparser.extend(\"readToken\", function(nextMethod) {\n  return function(code) {\n    console.log(\"Reading a token!\")\n    return nextMethod.call(this, code)\n  }\n})\n```\n\nThe `nextMethod` argument passed to `extend`'s second argument is the\nprevious value of this method, and should usually be called through to\nwhenever the extended method does not handle the call itself.\n\nSimilarly, the loose parser allows plugins to register themselves via\n`acorn.pluginsLoose`.  The extension mechanism is the same as for the\nnormal parser:\n\n```javascript\nlooseParser.extend(\"readToken\", function(nextMethod) {\n  return function() {\n    console.log(\"Reading a token in the loose parser!\")\n    return nextMethod.call(this)\n  }\n})\n```\n\n### Existing plugins\n\n - [`acorn-jsx`](https://github.com/RReverser/acorn-jsx): Parse [Facebook JSX syntax extensions](https://github.com/facebook/jsx)\n - [`acorn-es7-plugin`](https://github.com/MatAtBread/acorn-es7-plugin/): Parse [async/await syntax proposal](https://github.com/tc39/ecmascript-asyncawait)\n - [`acorn-object-spread`](https://github.com/UXtemple/acorn-object-spread): Parse [object spread syntax proposal](https://github.com/sebmarkbage/ecmascript-rest-spread)\n - [`acorn-es7`](https://www.npmjs.com/package/acorn-es7): Parse [decorator syntax proposal](https://github.com/wycats/javascript-decorators)\n - [`acorn-objj`](https://www.npmjs.com/package/acorn-objj): [Objective-J](http://www.cappuccino-project.org/learn/objective-j.html) language parser built as Acorn plugin\n",
      "author": "marijn",
      "maintainers": [
        "marijn",
        "rreverser"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                16798
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "4.0.11"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                6584
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-27T15:23:00.780Z",
        "published": "2017-02-07T14:01:26.828Z"
      },
      "dependencyCount": 0,
      "downloadCount": 18751302,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              16798
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "4.0.11"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              6584
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 106,
        "package:extract-tarball": 140,
        "git:clone": 3087,
        "git:tag": 5,
        "git:checkout": 34,
        "package:use-git-repo": 3679,
        "package:npm-install": 2761,
        "setup": 6691,
        "criteria:license": 915,
        "criteria:security": 225,
        "criteria:readme": 23,
        "criteria:scm": 1,
        "criteria:disk-usage": 6,
        "certification": 1173
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:26 GMT",
      "transfer-encoding",
      "chunked",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=tape&version=4.6.3",
    "body": "",
    "status": 200,
    "response": {
      "name": "tape",
      "version": "4.6.3",
      "description": "tap-producing test harness for node and browsers",
      "keywords": [
        "tap",
        "test",
        "harness",
        "assert",
        "browser"
      ],
      "readme": "# tape\n\ntap-producing test harness for node and browsers\n\n[![browser support](https://ci.testling.com/substack/tape.png)](http://ci.testling.com/substack/tape)\n\n[![build status](https://secure.travis-ci.org/substack/tape.svg?branch=master)](http://travis-ci.org/substack/tape)\n\n![tape](http://substack.net/images/tape_drive.png)\n\n# example\n\n``` js\nvar test = require('tape');\n\ntest('timing test', function (t) {\n    t.plan(2);\n    \n    t.equal(typeof Date.now, 'function');\n    var start = Date.now();\n    \n    setTimeout(function () {\n        t.equal(Date.now() - start, 100);\n    }, 100);\n});\n```\n\n```\n$ node example/timing.js\nTAP version 13\n# timing test\nok 1 should be equal\nnot ok 2 should be equal\n  ---\n    operator: equal\n    expected: 100\n    actual:   107\n  ...\n\n1..2\n# tests 2\n# pass  1\n# fail  1\n```\n\n# usage\n\nYou always need to `require('tape')` in test files. You can run the tests by\nusual node means (`require('test-file.js')` or `node test-file.js`). You can\nalso run tests using the `tape` binary to utilize globbing, on Windows for\nexample:\n\n```sh\n$ tape tests/**/*.js\n```\n\n`tape`'s arguments are passed to the\n[`glob`](https://www.npmjs.com/package/glob) module. If you want `glob` to\nperform the expansion on a system where the shell performs such expansion, quote\nthe arguments as necessary:\n\n```sh\n$ tape 'tests/**/*.js'\n$ tape \"tests/**/*.js\"\n```\n\n## Preloading modules\n\nAdditionally, it is possible to make `tape` load one or more modules before running any tests, by using the `-r` or `--require` flag. Here's an example that loads [babel-register](http://babeljs.io/docs/usage/require/) before running any tests, to allow for JIT compilation:\n\n```sh\n$ tape -r babel-register tests/**/*.js\n```\n\nDepending on the module you're loading, you may be able to paramaterize it using environment variables or auxiliary files. Babel, for instance, will load options from [`.babelrc`](http://babeljs.io/docs/usage/babelrc/) at runtime.\n\nThe `-r` flag behaves exactly like node's `require`, and uses the same module resolution algorithm. This means that if you need to load local modules, you have to prepend their path with `./` or `../` accordingly.\n\nFor example:\n\n```sh\n$ tape -r ./my/local/module tests/**/*.js\n```\n\nPlease note that all modules loaded using the `-r` flag will run *before* any tests, regardless of when they are specified. For example, `tape -r a b -r c` will actually load `a` and `c` *before* loading `b`, since they are flagged as required modules.\n\n# things that go well with tape\n\ntape maintains a fairly minimal core. Additional features are usually added by using another module alongside tape.\n\n## pretty reporters\n\nThe default TAP output is good for machines and humans that are robots.\n\nIf you want a more colorful / pretty output there are lots of modules on npm\nthat will output something pretty if you pipe TAP into them:\n\n - https://github.com/scottcorgan/tap-spec\n - https://github.com/scottcorgan/tap-dot\n - https://github.com/substack/faucet\n - https://github.com/juliangruber/tap-bail\n - https://github.com/kirbysayshi/tap-browser-color\n - https://github.com/gummesson/tap-json\n - https://github.com/gummesson/tap-min\n - https://github.com/calvinmetcalf/tap-nyan\n - https://www.npmjs.org/package/tap-pessimist\n - https://github.com/toolness/tap-prettify\n - https://github.com/shuhei/colortape\n - https://github.com/aghassemi/tap-xunit\n - https://github.com/namuol/tap-difflet\n - https://github.com/gritzko/tape-dom\n - https://github.com/axross/tap-diff\n - https://github.com/axross/tap-notify\n - https://github.com/zoubin/tap-summary\n - https://github.com/Hypercubed/tap-markdown\n\nTo use them, try `node test/index.js | tap-spec` or pipe it into one\nof the modules of your choice!\n\n## uncaught exceptions\n\nBy default, uncaught exceptions in your tests will not be intercepted, and will cause tape to crash. If you find this behavior undesirable, use [tape-catch](https://github.com/michaelrhodes/tape-catch) to report any exceptions as TAP errors.\n\n## other\n\n- CoffeeScript support with https://www.npmjs.com/package/coffeetape\n- Promise support with https://www.npmjs.com/package/blue-tape\n- ES6 support with https://www.npmjs.com/package/babel-tape-runner\n\n# methods\n\nThe assertion methods in tape are heavily influenced or copied from the methods\nin [node-tap](https://github.com/isaacs/node-tap).\n\n```\nvar test = require('tape')\n```\n\n## test([name], [opts], cb)\n\nCreate a new test with an optional `name` string and optional `opts` object.\n`cb(t)` fires with the new test object `t` once all preceeding tests have\nfinished. Tests execute serially.\n\nAvailable `opts` options are:\n- opts.skip = true/false. See test.skip.\n- opts.timeout = 500. Set a timeout for the test, after which it will fail.\n  See test.timeoutAfter.\n- opts.objectPrintDepth = 5. Configure max depth of expected / actual object\n  printing.\n  \nIf you forget to `t.plan()` out how many assertions you are going to run and you\ndon't call `t.end()` explicitly, your test will hang.\n\n## test.skip(name, cb)\n\nGenerate a new test that will be skipped over.\n\n## test.onFinish(fn)\n\nThe onFinish hook will get invoked when ALL tape tests have finished\nright before tape is about to print the test summary.\n\n## t.plan(n)\n\nDeclare that `n` assertions should be run. `t.end()` will be called\nautomatically after the `n`th assertion. If there are any more assertions after\nthe `n`th, or after `t.end()` is called, they will generate errors.\n\n## t.end(err)\n\nDeclare the end of a test explicitly. If `err` is passed in `t.end` will assert\nthat it is falsey.\n\n## t.fail(msg)\n\nGenerate a failing assertion with a message `msg`.\n\n## t.pass(msg)\n\nGenerate a passing assertion with a message `msg`.\n\n## t.timeoutAfter(ms)\n\nAutomatically timeout the test after X ms.\n\n## t.skip(msg)\n \nGenerate an assertion that will be skipped over.\n\n## t.ok(value, msg)\n\nAssert that `value` is truthy with an optional description of the assertion `msg`.\n\nAliases: `t.true()`, `t.assert()`\n\n## t.notOk(value, msg)\n\nAssert that `value` is falsy with an optional description of the assertion `msg`.\n\nAliases: `t.false()`, `t.notok()`\n\n## t.error(err, msg)\n\nAssert that `err` is falsy. If `err` is non-falsy, use its `err.message` as the\ndescription message.\n\nAliases: `t.ifError()`, `t.ifErr()`, `t.iferror()`\n\n## t.equal(actual, expected, msg)\n\nAssert that `actual === expected` with an optional description of the assertion `msg`.\n\nAliases: `t.equals()`, `t.isEqual()`, `t.is()`, `t.strictEqual()`,\n`t.strictEquals()`\n\n## t.notEqual(actual, expected, msg)\n\nAssert that `actual !== expected` with an optional description of the assertion `msg`.\n\nAliases: `t.notEquals()`, `t.notStrictEqual()`, `t.notStrictEquals()`,\n`t.isNotEqual()`, `t.isNot()`, `t.not()`, `t.doesNotEqual()`, `t.isInequal()`\n\n## t.deepEqual(actual, expected, msg)\n\nAssert that `actual` and `expected` have the same structure and nested values using\n[node's deepEqual() algorithm](https://github.com/substack/node-deep-equal)\nwith strict comparisons (`===`) on leaf nodes and an optional description of the assertion `msg`.\n\nAliases: `t.deepEquals()`, `t.isEquivalent()`, `t.same()`\n\n## t.notDeepEqual(actual, expected, msg)\n\nAssert that `actual` and `expected` do not have the same structure and nested values using\n[node's deepEqual() algorithm](https://github.com/substack/node-deep-equal)\nwith strict comparisons (`===`) on leaf nodes and an optional description of the assertion `msg`.\n\nAliases: `t.notEquivalent()`, `t.notDeeply()`, `t.notSame()`,\n`t.isNotDeepEqual()`, `t.isNotDeeply()`, `t.isNotEquivalent()`,\n`t.isInequivalent()`\n\n## t.deepLooseEqual(actual, expected, msg)\n\nAssert that `actual` and `expected` have the same structure and nested values using\n[node's deepEqual() algorithm](https://github.com/substack/node-deep-equal)\nwith loose comparisons (`==`) on leaf nodes and an optional description of the assertion `msg`.\n\nAliases: `t.looseEqual()`, `t.looseEquals()`\n\n## t.notDeepLooseEqual(actual, expected, msg)\n\nAssert that `actual` and `expected` do not have the same structure and nested values using\n[node's deepEqual() algorithm](https://github.com/substack/node-deep-equal)\nwith loose comparisons (`==`) on leaf nodes and an optional description of the assertion `msg`.\n\nAliases: `t.notLooseEqual()`, `t.notLooseEquals()`\n\n## t.throws(fn, expected, msg)\n\nAssert that the function call `fn()` throws an exception. `expected`, if present, must be a `RegExp` or `Function`. The `RegExp` matches the string representation of the exception, as generated by `err.toString()`. The `Function` is the exception thrown (e.g. `Error`). `msg` is an optional description of the assertion.\n\n## t.doesNotThrow(fn, expected, msg)\n\nAssert that the function call `fn()` does not throw an exception. `msg` is an optional description of the assertion.\n\n## t.test(name, [opts], cb)\n\nCreate a subtest with a new test handle `st` from `cb(st)` inside the current\ntest `t`. `cb(st)` will only fire when `t` finishes. Additional tests queued up\nafter `t` will not be run until all subtests finish.\n\nYou may pass the same options that [`test()`](#testname-opts-cb) accepts.\n\n## t.comment(message)\n\nPrint a message without breaking the tap output. (Useful when using e.g. `tap-colorize` where output is buffered & `console.log` will print in incorrect order vis-a-vis tap output.)\n\n## var htest = test.createHarness()\n\nCreate a new test harness instance, which is a function like `test()`, but with\na new pending stack and test state.\n\nBy default the TAP output goes to `console.log()`. You can pipe the output to\nsomeplace else if you `htest.createStream().pipe()` to a destination stream on\nthe first tick.\n\n## test.only(name, cb)\n\nLike `test(name, cb)` except if you use `.only` this is the only test case\nthat will run for the entire process, all other test cases using tape will\nbe ignored\n\n## var stream = test.createStream(opts)\n\nCreate a stream of output, bypassing the default output stream that writes\nmessages to `console.log()`. By default `stream` will be a text stream of TAP\noutput, but you can get an object stream instead by setting `opts.objectMode` to\n`true`.\n\n### tap stream reporter\n\nYou can create your own custom test reporter using this `createStream()` api:\n\n``` js\nvar test = require('tape');\nvar path = require('path');\n\ntest.createStream().pipe(process.stdout);\n\nprocess.argv.slice(2).forEach(function (file) {\n    require(path.resolve(file));\n});\n```\n\nYou could substitute `process.stdout` for whatever other output stream you want,\nlike a network connection or a file.\n\nPass in test files to run as arguments:\n\n```\n$ node tap.js test/x.js test/y.js\nTAP version 13\n# (anonymous)\nnot ok 1 should be equal\n  ---\n    operator: equal\n    expected: \"boop\"\n    actual:   \"beep\"\n  ...\n# (anonymous)\nok 2 should be equal\nok 3 (unnamed assert)\n# wheee\nok 4 (unnamed assert)\n\n1..4\n# tests 4\n# pass  3\n# fail  1\n```\n\n### object stream reporter\n\nHere's how you can render an object stream instead of TAP:\n\n``` js\nvar test = require('tape');\nvar path = require('path');\n\ntest.createStream({ objectMode: true }).on('data', function (row) {\n    console.log(JSON.stringify(row))\n});\n\nprocess.argv.slice(2).forEach(function (file) {\n    require(path.resolve(file));\n});\n```\n\nThe output for this runner is:\n\n```\n$ node object.js test/x.js test/y.js\n{\"type\":\"test\",\"name\":\"(anonymous)\",\"id\":0}\n{\"id\":0,\"ok\":false,\"name\":\"should be equal\",\"operator\":\"equal\",\"actual\":\"beep\",\"expected\":\"boop\",\"error\":{},\"test\":0,\"type\":\"assert\"}\n{\"type\":\"end\",\"test\":0}\n{\"type\":\"test\",\"name\":\"(anonymous)\",\"id\":1}\n{\"id\":0,\"ok\":true,\"name\":\"should be equal\",\"operator\":\"equal\",\"actual\":2,\"expected\":2,\"test\":1,\"type\":\"assert\"}\n{\"id\":1,\"ok\":true,\"name\":\"(unnamed assert)\",\"operator\":\"ok\",\"actual\":true,\"expected\":true,\"test\":1,\"type\":\"assert\"}\n{\"type\":\"end\",\"test\":1}\n{\"type\":\"test\",\"name\":\"wheee\",\"id\":2}\n{\"id\":0,\"ok\":true,\"name\":\"(unnamed assert)\",\"operator\":\"ok\",\"actual\":true,\"expected\":true,\"test\":2,\"type\":\"assert\"}\n{\"type\":\"end\",\"test\":2}\n```\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install tape --save-dev\n```\n\n# license\n\nMIT\n",
      "author": "ljharb",
      "maintainers": [
        "substack",
        "raynos",
        "domenic",
        "ljharb"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                "mit, isc, apache-1.1"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "readme.markdown"
              ],
              [
                "readme > 300 characters",
                true,
                12097
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v4.6.3"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                37092
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-24T22:17:04.277Z",
        "published": "2017-02-19T19:34:33.106Z"
      },
      "dependencyCount": 13,
      "downloadCount": 1200408,
      "dependencyList": [
        "deep-equal@1.0.1",
        "defined@1.0.0",
        "for-each@0.3.2",
        "is-function@1.0.1",
        "function-bind@1.1.0",
        "glob@7.1.1",
        "fs.realpath@1.0.0",
        "inflight@1.0.6",
        "wrappy@1.0.2",
        "minimatch@3.0.3",
        "brace-expansion@1.1.6",
        "balanced-match@0.4.2",
        "concat-map@0.0.1",
        "once@1.4.0",
        "wrappy@1.0.2",
        "path-is-absolute@1.0.1",
        "has@1.0.1",
        "inherits@2.0.3",
        "minimist@1.2.0",
        "object-inspect@1.2.1",
        "resolve@1.1.7",
        "resumer@0.0.0",
        "string.prototype.trim@1.1.2",
        "define-properties@1.1.2",
        "foreach@2.0.5",
        "object-keys@1.0.11",
        "es-abstract@1.7.0",
        "is-callable@1.1.3",
        "es-to-primitive@1.1.1",
        "is-date-object@1.0.1",
        "is-symbol@1.0.1",
        "is-regex@1.0.4",
        "through@2.3.8"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              "mit, isc, apache-1.1"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "readme.markdown"
            ],
            [
              "readme > 300 characters",
              true,
              12097
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v4.6.3"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              37092
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 624,
        "package:extract-tarball": 3680,
        "git:clone": 9393,
        "git:tag": 4,
        "git:checkout": 1620,
        "package:use-git-repo": 12872,
        "package:npm-install": 46294,
        "setup": 63609,
        "criteria:license": 17775,
        "criteria:security": 736,
        "criteria:readme": 563,
        "criteria:scm": 8,
        "criteria:disk-usage": 50,
        "certification": 19134
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:27 GMT",
      "transfer-encoding",
      "chunked",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=deep-equal&version=1.0.1",
    "body": "",
    "status": 200,
    "response": {
      "name": "deep-equal",
      "version": "1.0.1",
      "description": "node's assert.deepEqual algorithm",
      "keywords": [
        "equality",
        "equal",
        "compare"
      ],
      "readme": "# deep-equal\n\nNode's `assert.deepEqual() algorithm` as a standalone module.\n\nThis module is around [5 times faster](https://gist.github.com/2790507)\nthan wrapping `assert.deepEqual()` in a `try/catch`.\n\n[![browser support](https://ci.testling.com/substack/node-deep-equal.png)](https://ci.testling.com/substack/node-deep-equal)\n\n[![build status](https://secure.travis-ci.org/substack/node-deep-equal.png)](https://travis-ci.org/substack/node-deep-equal)\n\n# example\n\n``` js\nvar equal = require('deep-equal');\nconsole.dir([\n    equal(\n        { a : [ 2, 3 ], b : [ 4 ] },\n        { a : [ 2, 3 ], b : [ 4 ] }\n    ),\n    equal(\n        { x : 5, y : [6] },\n        { x : 5, y : 6 }\n    )\n]);\n```\n\n# methods\n\n``` js\nvar deepEqual = require('deep-equal')\n```\n\n## deepEqual(a, b, opts)\n\nCompare objects `a` and `b`, returning whether they are equal according to a\nrecursive equality algorithm.\n\nIf `opts.strict` is `true`, use strict equality (`===`) to compare leaf nodes.\nThe default is to use coercive equality (`==`) because that's how\n`assert.deepEqual()` works by default.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install deep-equal\n```\n\n# test\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm test\n```\n\n# license\n\nMIT. Derived largely from node's assert module.\n",
      "author": "substack",
      "maintainers": [
        "substack"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "readme.markdown"
              ],
              [
                "readme > 300 characters",
                true,
                1268
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "1.0.1"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                996
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-24T04:24:04.876Z",
        "published": "2016-11-02T02:40:34.136Z"
      },
      "dependencyCount": 0,
      "downloadCount": 5084340,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "readme.markdown"
            ],
            [
              "readme > 300 characters",
              true,
              1268
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "1.0.1"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              996
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 115,
        "package:extract-tarball": 110,
        "git:clone": 1293,
        "git:tag": 6,
        "git:checkout": 7,
        "package:use-git-repo": 1748,
        "package:npm-install": 2789,
        "setup": 4771,
        "criteria:license": 1395,
        "criteria:security": 50,
        "criteria:readme": 37,
        "criteria:scm": 1,
        "criteria:disk-usage": 10,
        "certification": 1498
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:28 GMT",
      "transfer-encoding",
      "chunked",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=defined&version=1.0.0",
    "body": "",
    "status": 200,
    "response": {
      "name": "defined",
      "version": "1.0.0",
      "description": "return the first argument that is `!== undefined`",
      "keywords": [
        "undefined",
        "short-circuit",
        "||",
        "or",
        "//",
        "defined-or"
      ],
      "readme": "# defined\n\nreturn the first argument that is `!== undefined`\n\n[![browser support](http://ci.testling.com/substack/defined.png)](http://ci.testling.com/substack/defined)\n\n[![build status](https://secure.travis-ci.org/substack/defined.png)](http://travis-ci.org/substack/defined)\n\nMost of the time when I chain together `||`s, I actually just want the first\nitem that is not `undefined`, not the first non-falsy item.\n\nThis module is like the defined-or (`//`) operator in perl 5.10+.\n\n# example\n\n``` js\nvar defined = require('defined');\nvar opts = { y : false, w : 4 };\nvar x = defined(opts.x, opts.y, opts.w, 100);\nconsole.log(x);\n```\n\n```\n$ node example/defined.js\nfalse\n```\n\nThe return value is `false` because `false` is the first item that is\n`!== undefined`.\n\n# methods\n\n``` js\nvar defined = require('defined')\n```\n\n## var x = defined(a, b, c...)\n\nReturn the first item in the argument list `a, b, c...` that is `!== undefined`.\n\nIf all the items are `=== undefined`, return undefined.\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install defined\n```\n\n# license\n\nMIT\n",
      "author": "substack",
      "maintainers": [
        "substack"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "readme.markdown"
              ],
              [
                "readme > 300 characters",
                true,
                1082
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "1.0.0"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                1172
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-24T00:03:21.104Z",
        "published": "2016-10-03T05:36:01.471Z"
      },
      "dependencyCount": 0,
      "downloadCount": 6064827,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "readme.markdown"
            ],
            [
              "readme > 300 characters",
              true,
              1082
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "1.0.0"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              1172
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 125,
        "package:extract-tarball": 83,
        "git:clone": 2779,
        "git:tag": 5,
        "git:checkout": 25,
        "package:use-git-repo": 3262,
        "package:npm-install": 15644,
        "setup": 19124,
        "criteria:license": 1197,
        "criteria:security": 33,
        "criteria:readme": 32,
        "criteria:scm": 4,
        "criteria:disk-usage": 18,
        "certification": 1287
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:29 GMT",
      "Content-Length",
      "2749",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=for-each&version=0.3.2",
    "body": "",
    "status": 200,
    "response": {
      "name": "for-each",
      "version": "0.3.2",
      "description": "A better forEach",
      "keywords": [],
      "readme": "# for-each [![build status][1]][2]\n\n[![browser support][3]][4]\n\nA better forEach.\n\n## Example\n\nLike `Array.prototype.forEach` but works on objects.\n\n```js\nvar forEach = require(\"for-each\")\n\nforEach({ key: \"value\" }, function (value, key, object) {\n    /* code */\n})\n```\n\nAs a bonus, it's also a perfectly function shim/polyfill for arrays too!\n\n```js\nvar forEach = require(\"for-each\")\n\nforEach([1, 2, 3], function (value, index, array) {\n    /* code */\n})\n```\n\n## Installation\n\n`npm install for-each`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n  [1]: https://secure.travis-ci.org/Raynos/for-each.png\n  [2]: http://travis-ci.org/Raynos/for-each\n  [3]: https://ci.testling.com/Raynos/for-each.png\n  [4]: https://ci.testling.com/Raynos/for-each\n\n",
      "author": "raynos",
      "maintainers": [
        "raynos"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                "mit"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                746
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v0.3.2"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                676
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-24T04:40:38.283Z",
        "published": "2016-11-01T17:24:17.396Z"
      },
      "dependencyCount": 1,
      "downloadCount": 518553,
      "dependencyList": [
        "is-function@1.0.1"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              "mit"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              746
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v0.3.2"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              676
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 105,
        "package:extract-tarball": 227,
        "git:clone": 2514,
        "git:tag": 5,
        "git:checkout": 6,
        "package:use-git-repo": 2919,
        "package:npm-install": 2956,
        "setup": 6216,
        "criteria:license": 1243,
        "criteria:security": 53,
        "criteria:readme": 32,
        "criteria:scm": 1,
        "criteria:disk-usage": 7,
        "certification": 1340
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:30 GMT",
      "Content-Length",
      "2321",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=is-function&version=1.0.1",
    "body": "",
    "status": 200,
    "response": {
      "name": "is-function",
      "version": "1.0.1",
      "description": "is that thing a function? Use this module to find out",
      "keywords": [
        "polyfill",
        "is-function",
        "ie6"
      ],
      "readme": "# is-function\n\n[![browser support](https://ci.testling.com/grncdr/js-is-function.png)](https://ci.testling.com/grncdr/js-is-function)\n\nIs that thing a function? Use this module to find out.\n\n## API\n\n### module.exports = function isFunction(fn) -> Boolean\n\nReturn `true` if `fn` is a function, otherwise `false`.\n\n## Why not typeof fn === 'function'\n\nBecause certain old browsers misreport the type of `RegExp` objects as functions.\n\n## Acknowledgements\n\nI stole this from https://github.com/ljharb/object-keys\n\n## License\n\nMIT\n",
      "author": "grncdr",
      "maintainers": [
        "grncdr"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                527
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.0.1"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                720
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-24T05:14:22.140Z",
        "published": "2016-11-01T17:38:06.179Z"
      },
      "dependencyCount": 0,
      "downloadCount": 569025,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              527
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.0.1"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              720
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 116,
        "package:extract-tarball": 119,
        "git:clone": 1499,
        "git:tag": 5,
        "git:checkout": 13,
        "package:use-git-repo": 1946,
        "package:npm-install": 2999,
        "setup": 5186,
        "criteria:license": 1287,
        "criteria:security": 42,
        "criteria:readme": 67,
        "criteria:scm": 12,
        "criteria:disk-usage": 19,
        "certification": 1431
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:30 GMT",
      "Content-Length",
      "2128",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=function-bind&version=1.1.0",
    "body": "",
    "status": 200,
    "response": {
      "name": "function-bind",
      "version": "1.1.0",
      "description": "Implementation of Function.prototype.bind",
      "keywords": [
        "function",
        "bind",
        "shim",
        "es5"
      ],
      "readme": "# function-bind\n\n<!--\n    [![build status][travis-svg]][travis-url]\n    [![NPM version][npm-badge-svg]][npm-url]\n    [![Coverage Status][5]][6]\n    [![gemnasium Dependency Status][7]][8]\n    [![Dependency status][deps-svg]][deps-url]\n    [![Dev Dependency status][dev-deps-svg]][dev-deps-url]\n-->\n\n<!-- [![browser support][11]][12] -->\n\nImplementation of function.prototype.bind\n\n## Example\n\nI mainly do this for unit tests I run on phantomjs.\nPhantomJS does not have Function.prototype.bind :(\n\n```js\nFunction.prototype.bind = require(\"function-bind\")\n```\n\n## Installation\n\n`npm install function-bind`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n  [travis-svg]: https://travis-ci.org/Raynos/function-bind.svg\n  [travis-url]: https://travis-ci.org/Raynos/function-bind\n  [npm-badge-svg]: https://badge.fury.io/js/function-bind.svg\n  [npm-url]: https://npmjs.org/package/function-bind\n  [5]: https://coveralls.io/repos/Raynos/function-bind/badge.png\n  [6]: https://coveralls.io/r/Raynos/function-bind\n  [7]: https://gemnasium.com/Raynos/function-bind.png\n  [8]: https://gemnasium.com/Raynos/function-bind\n  [deps-svg]: https://david-dm.org/Raynos/function-bind.svg\n  [deps-url]: https://david-dm.org/Raynos/function-bind\n  [dev-deps-svg]: https://david-dm.org/Raynos/function-bind/dev-status.svg\n  [dev-deps-url]: https://david-dm.org/Raynos/function-bind#info=devDependencies\n  [11]: https://ci.testling.com/Raynos/function-bind.png\n  [12]: https://ci.testling.com/Raynos/function-bind\n",
      "author": "ljharb",
      "maintainers": [
        "raynos",
        "ljharb"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                1488
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.1.0"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                91100
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-25T19:06:54.718Z",
        "published": "2016-02-14T08:28:42.411Z"
      },
      "dependencyCount": 0,
      "downloadCount": 5202579,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              1488
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.1.0"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              91100
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 105,
        "package:extract-tarball": 241,
        "git:clone": 2532,
        "git:tag": 4,
        "git:checkout": 17,
        "package:use-git-repo": 3001,
        "package:npm-install": 32997,
        "setup": 36360,
        "criteria:license": 19848,
        "criteria:security": 62,
        "criteria:readme": 117,
        "criteria:scm": 1,
        "criteria:disk-usage": 50,
        "certification": 20081
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:30 GMT",
      "Content-Length",
      "3126",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=glob&version=7.1.1",
    "body": "",
    "status": 200,
    "response": {
      "name": "glob",
      "version": "7.1.1",
      "description": "a little globber",
      "keywords": [],
      "readme": "# Glob\n\nMatch files using the patterns the shell uses, like stars and stuff.\n\n[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Build Status](https://ci.appveyor.com/api/projects/status/kd7f3yftf7unxlsx?svg=true)](https://ci.appveyor.com/project/isaacs/node-glob) [![Coverage Status](https://coveralls.io/repos/isaacs/node-glob/badge.svg?branch=master&service=github)](https://coveralls.io/github/isaacs/node-glob?branch=master)\n\nThis is a glob implementation in JavaScript.  It uses the `minimatch`\nlibrary to do its matching.\n\n![](oh-my-glob.gif)\n\n## Usage\n\nInstall with npm\n\n```\nnpm i glob\n```\n\n```javascript\nvar glob = require(\"glob\")\n\n// options is optional\nglob(\"**/*.js\", options, function (er, files) {\n  // files is an array of filenames.\n  // If the `nonull` option is set, and nothing\n  // was found, then files is [\"**/*.js\"]\n  // er is an error object or null.\n})\n```\n\n## Glob Primer\n\n\"Globs\" are the patterns you type when you do stuff like `ls *.js` on\nthe command line, or put `build/*` in a `.gitignore` file.\n\nBefore parsing the path part patterns, braced sections are expanded\ninto a set.  Braced sections start with `{` and end with `}`, with any\nnumber of comma-delimited sections within.  Braced sections may contain\nslash characters, so `a{/b/c,bcd}` would expand into `a/b/c` and `abcd`.\n\nThe following characters have special magic meaning when used in a\npath portion:\n\n* `*` Matches 0 or more characters in a single path portion\n* `?` Matches 1 character\n* `[...]` Matches a range of characters, similar to a RegExp range.\n  If the first character of the range is `!` or `^` then it matches\n  any character not in the range.\n* `!(pattern|pattern|pattern)` Matches anything that does not match\n  any of the patterns provided.\n* `?(pattern|pattern|pattern)` Matches zero or one occurrence of the\n  patterns provided.\n* `+(pattern|pattern|pattern)` Matches one or more occurrences of the\n  patterns provided.\n* `*(a|b|c)` Matches zero or more occurrences of the patterns provided\n* `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns\n  provided\n* `**` If a \"globstar\" is alone in a path portion, then it matches\n  zero or more directories and subdirectories searching for matches.\n  It does not crawl symlinked directories.\n\n### Dots\n\nIf a file or directory path portion has a `.` as the first character,\nthen it will not match any glob pattern unless that pattern's\ncorresponding path part also has a `.` as its first character.\n\nFor example, the pattern `a/.*/c` would match the file at `a/.b/c`.\nHowever the pattern `a/*/c` would not, because `*` does not start with\na dot character.\n\nYou can make glob treat dots as normal characters by setting\n`dot:true` in the options.\n\n### Basename Matching\n\nIf you set `matchBase:true` in the options, and the pattern has no\nslashes in it, then it will seek for any file anywhere in the tree\nwith a matching basename.  For example, `*.js` would match\n`test/simple/basic.js`.\n\n### Empty Sets\n\nIf no matching files are found, then an empty array is returned.  This\ndiffers from the shell, where the pattern itself is returned.  For\nexample:\n\n    $ echo a*s*d*f\n    a*s*d*f\n\nTo get the bash-style behavior, set the `nonull:true` in the options.\n\n### See Also:\n\n* `man sh`\n* `man bash` (Search for \"Pattern Matching\")\n* `man 3 fnmatch`\n* `man 5 gitignore`\n* [minimatch documentation](https://github.com/isaacs/minimatch)\n\n## glob.hasMagic(pattern, [options])\n\nReturns `true` if there are any special characters in the pattern, and\n`false` otherwise.\n\nNote that the options affect the results.  If `noext:true` is set in\nthe options object, then `+(a|b)` will not be considered a magic\npattern.  If the pattern has a brace expansion, like `a/{b/c,x/y}`\nthen that is considered magical, unless `nobrace:true` is set in the\noptions.\n\n## glob(pattern, [options], cb)\n\n* `pattern` `{String}` Pattern to be matched\n* `options` `{Object}`\n* `cb` `{Function}`\n  * `err` `{Error | null}`\n  * `matches` `{Array<String>}` filenames found matching the pattern\n\nPerform an asynchronous glob search.\n\n## glob.sync(pattern, [options])\n\n* `pattern` `{String}` Pattern to be matched\n* `options` `{Object}`\n* return: `{Array<String>}` filenames found matching the pattern\n\nPerform a synchronous glob search.\n\n## Class: glob.Glob\n\nCreate a Glob object by instantiating the `glob.Glob` class.\n\n```javascript\nvar Glob = require(\"glob\").Glob\nvar mg = new Glob(pattern, options, cb)\n```\n\nIt's an EventEmitter, and starts walking the filesystem to find matches\nimmediately.\n\n### new glob.Glob(pattern, [options], [cb])\n\n* `pattern` `{String}` pattern to search for\n* `options` `{Object}`\n* `cb` `{Function}` Called when an error occurs, or matches are found\n  * `err` `{Error | null}`\n  * `matches` `{Array<String>}` filenames found matching the pattern\n\nNote that if the `sync` flag is set in the options, then matches will\nbe immediately available on the `g.found` member.\n\n### Properties\n\n* `minimatch` The minimatch object that the glob uses.\n* `options` The options object passed in.\n* `aborted` Boolean which is set to true when calling `abort()`.  There\n  is no way at this time to continue a glob search after aborting, but\n  you can re-use the statCache to avoid having to duplicate syscalls.\n* `cache` Convenience object.  Each field has the following possible\n  values:\n  * `false` - Path does not exist\n  * `true` - Path exists\n  * `'FILE'` - Path exists, and is not a directory\n  * `'DIR'` - Path exists, and is a directory\n  * `[file, entries, ...]` - Path exists, is a directory, and the\n    array value is the results of `fs.readdir`\n* `statCache` Cache of `fs.stat` results, to prevent statting the same\n  path multiple times.\n* `symlinks` A record of which paths are symbolic links, which is\n  relevant in resolving `**` patterns.\n* `realpathCache` An optional object which is passed to `fs.realpath`\n  to minimize unnecessary syscalls.  It is stored on the instantiated\n  Glob object, and may be re-used.\n\n### Events\n\n* `end` When the matching is finished, this is emitted with all the\n  matches found.  If the `nonull` option is set, and no match was found,\n  then the `matches` list contains the original pattern.  The matches\n  are sorted, unless the `nosort` flag is set.\n* `match` Every time a match is found, this is emitted with the specific\n  thing that matched. It is not deduplicated or resolved to a realpath.\n* `error` Emitted when an unexpected error is encountered, or whenever\n  any fs error occurs if `options.strict` is set.\n* `abort` When `abort()` is called, this event is raised.\n\n### Methods\n\n* `pause` Temporarily stop the search\n* `resume` Resume the search\n* `abort` Stop the search forever\n\n### Options\n\nAll the options that can be passed to Minimatch can also be passed to\nGlob to change pattern matching behavior.  Also, some have been added,\nor have glob-specific ramifications.\n\nAll options are false by default, unless otherwise noted.\n\nAll options are added to the Glob object, as well.\n\nIf you are running many `glob` operations, you can pass a Glob object\nas the `options` argument to a subsequent operation to shortcut some\n`stat` and `readdir` calls.  At the very least, you may pass in shared\n`symlinks`, `statCache`, `realpathCache`, and `cache` options, so that\nparallel glob operations will be sped up by sharing information about\nthe filesystem.\n\n* `cwd` The current working directory in which to search.  Defaults\n  to `process.cwd()`.\n* `root` The place where patterns starting with `/` will be mounted\n  onto.  Defaults to `path.resolve(options.cwd, \"/\")` (`/` on Unix\n  systems, and `C:\\` or some such on Windows.)\n* `dot` Include `.dot` files in normal matches and `globstar` matches.\n  Note that an explicit dot in a portion of the pattern will always\n  match dot files.\n* `nomount` By default, a pattern starting with a forward-slash will be\n  \"mounted\" onto the root setting, so that a valid filesystem path is\n  returned.  Set this flag to disable that behavior.\n* `mark` Add a `/` character to directory matches.  Note that this\n  requires additional stat calls.\n* `nosort` Don't sort the results.\n* `stat` Set to true to stat *all* results.  This reduces performance\n  somewhat, and is completely unnecessary, unless `readdir` is presumed\n  to be an untrustworthy indicator of file existence.\n* `silent` When an unusual error is encountered when attempting to\n  read a directory, a warning will be printed to stderr.  Set the\n  `silent` option to true to suppress these warnings.\n* `strict` When an unusual error is encountered when attempting to\n  read a directory, the process will just continue on in search of\n  other matches.  Set the `strict` option to raise an error in these\n  cases.\n* `cache` See `cache` property above.  Pass in a previously generated\n  cache object to save some fs calls.\n* `statCache` A cache of results of filesystem information, to prevent\n  unnecessary stat calls.  While it should not normally be necessary\n  to set this, you may pass the statCache from one glob() call to the\n  options object of another, if you know that the filesystem will not\n  change between calls.  (See \"Race Conditions\" below.)\n* `symlinks` A cache of known symbolic links.  You may pass in a\n  previously generated `symlinks` object to save `lstat` calls when\n  resolving `**` matches.\n* `sync` DEPRECATED: use `glob.sync(pattern, opts)` instead.\n* `nounique` In some cases, brace-expanded patterns can result in the\n  same file showing up multiple times in the result set.  By default,\n  this implementation prevents duplicates in the result set.  Set this\n  flag to disable that behavior.\n* `nonull` Set to never return an empty set, instead returning a set\n  containing the pattern itself.  This is the default in glob(3).\n* `debug` Set to enable debug logging in minimatch and glob.\n* `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets.\n* `noglobstar` Do not match `**` against multiple filenames.  (Ie,\n  treat it as a normal `*` instead.)\n* `noext` Do not match `+(a|b)` \"extglob\" patterns.\n* `nocase` Perform a case-insensitive match.  Note: on\n  case-insensitive filesystems, non-magic patterns will match by\n  default, since `stat` and `readdir` will not raise errors.\n* `matchBase` Perform a basename-only match if the pattern does not\n  contain any slash characters.  That is, `*.js` would be treated as\n  equivalent to `**/*.js`, matching all js files in all directories.\n* `nodir` Do not match directories, only files.  (Note: to match\n  *only* directories, simply put a `/` at the end of the pattern.)\n* `ignore` Add a pattern or an array of glob patterns to exclude matches.\n  Note: `ignore` patterns are *always* in `dot:true` mode, regardless\n  of any other settings.\n* `follow` Follow symlinked directories when expanding `**` patterns.\n  Note that this can result in a lot of duplicate references in the\n  presence of cyclic links.\n* `realpath` Set to true to call `fs.realpath` on all of the results.\n  In the case of a symlink that cannot be resolved, the full absolute\n  path to the matched entry is returned (though it will usually be a\n  broken symlink)\n* `absolute` Set to true to always receive absolute paths for matched\n  files.  Unlike `realpath`, this also affects the values returned in\n  the `match` event.\n\n## Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between node-glob and other\nimplementations, and are intentional.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set.  This is supported in the manner of bsdglob\nand bash 4.3, where `**` only has special significance if it is the only\nthing in a path part.  That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not.\n\nNote that symlinked directories are not crawled as part of a `**`,\nthough their contents may match against subsequent portions of the\npattern.  This prevents infinite loops and duplicates and the like.\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen glob returns the pattern as-provided, rather than\ninterpreting the character escapes.  For example,\n`glob.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`.  This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern.  Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity.  Since those two are valid, matching proceeds.\n\n### Comments and Negation\n\nPreviously, this module let you mark a pattern as a \"comment\" if it\nstarted with a `#` character, or a \"negated\" pattern if it started\nwith a `!` character.\n\nThese options were deprecated in version 5, and removed in version 6.\n\nTo specify things that should not match, use the `ignore` option.\n\n## Windows\n\n**Please only use forward-slashes in glob expressions.**\n\nThough windows uses either `/` or `\\` as its path separator, only `/`\ncharacters are used by this glob implementation.  You must use\nforward-slashes **only** in glob expressions.  Back-slashes will always\nbe interpreted as escape characters, not path separators.\n\nResults from absolute patterns such as `/foo/*` are mounted onto the\nroot setting using `path.join`.  On windows, this will by default result\nin `/foo/*` matching `C:\\foo\\bar.txt`.\n\n## Race Conditions\n\nGlob searching, by its very nature, is susceptible to race conditions,\nsince it relies on directory walking and such.\n\nAs a result, it is possible that a file that exists when glob looks for\nit may have been deleted or modified by the time it returns the result.\n\nAs part of its internal implementation, this program caches all stat\nand readdir calls that it makes, in order to cut down on system\noverhead.  However, this also makes it even more susceptible to races,\nespecially if the cache or statCache objects are reused between glob\ncalls.\n\nUsers are thus advised not to use a glob result as a guarantee of\nfilesystem state in the face of rapid changes.  For the vast majority\nof operations, this is never a problem.\n\n## Contributing\n\nAny change to behavior (including bugfixes) must come with a test.\n\nPatches that fail tests or reduce performance will be rejected.\n\n```\n# to run tests\nnpm test\n\n# to re-generate test fixtures\nnpm run test-regen\n\n# to benchmark against bash/zsh\nnpm run bench\n\n# to profile javascript\nnpm run prof\n```\n",
      "author": "isaacs",
      "maintainers": [
        "isaacs"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "isc"
              ],
              [
                "dependencies",
                true,
                "mit, isc"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                14664
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v7.1.1"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                35572
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-24T18:53:27.361Z",
        "published": "2017-02-16T17:16:53.529Z"
      },
      "dependencyCount": 6,
      "downloadCount": 43378412,
      "dependencyList": [
        "fs.realpath@1.0.0",
        "inflight@1.0.6",
        "wrappy@1.0.2",
        "inherits@2.0.3",
        "minimatch@3.0.3",
        "brace-expansion@1.1.6",
        "balanced-match@0.4.2",
        "concat-map@0.0.1",
        "once@1.4.0",
        "wrappy@1.0.2",
        "path-is-absolute@1.0.1"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "isc"
            ],
            [
              "dependencies",
              true,
              "mit, isc"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              14664
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v7.1.1"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              35572
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 115,
        "package:extract-tarball": 106,
        "git:clone": 1966,
        "git:tag": 7,
        "git:checkout": 15,
        "package:use-git-repo": 2434,
        "package:npm-install": 24351,
        "setup": 27013,
        "criteria:license": 16220,
        "criteria:security": 108,
        "criteria:readme": 68,
        "criteria:scm": 1,
        "criteria:disk-usage": 34,
        "certification": 16433
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:31 GMT",
      "transfer-encoding",
      "chunked",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=fs.realpath&version=1.0.0",
    "body": "",
    "status": 200,
    "response": {
      "name": "fs.realpath",
      "version": "1.0.0",
      "description": "Use node's fs.realpath, but fall back to the JS implementation if the native one fails",
      "keywords": [
        "realpath",
        "fs",
        "polyfill"
      ],
      "readme": "# fs.realpath\n\nA backwards-compatible fs.realpath for Node v6 and above\n\nIn Node v6, the JavaScript implementation of fs.realpath was replaced\nwith a faster (but less resilient) native implementation.  That raises\nnew and platform-specific errors and cannot handle long or excessively\nsymlink-looping paths.\n\nThis module handles those cases by detecting the new errors and\nfalling back to the JavaScript implementation.  On versions of Node\nprior to v6, it has no effect.\n\n## USAGE\n\n```js\nvar rp = require('fs.realpath')\n\n// async version\nrp.realpath(someLongAndLoopingPath, function (er, real) {\n  // the ELOOP was handled, but it was a bit slower\n})\n\n// sync version\nvar real = rp.realpathSync(someLongAndLoopingPath)\n\n// monkeypatch at your own risk!\n// This replaces the fs.realpath/fs.realpathSync builtins\nrp.monkeypatch()\n\n// un-do the monkeypatching\nrp.unmonkeypatch()\n```\n",
      "author": "isaacs",
      "maintainers": [
        "isaacs"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "isc"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                881
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.0.0"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                244
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-24T05:10:34.798Z",
        "published": "2016-11-01T17:25:20.989Z"
      },
      "dependencyCount": 0,
      "downloadCount": 12922619,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "isc"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              881
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.0.0"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              244
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 85,
        "package:extract-tarball": 86,
        "git:clone": 1349,
        "git:tag": 8,
        "git:checkout": 30,
        "package:use-git-repo": 1841,
        "package:npm-install": 2237,
        "setup": 4255,
        "criteria:license": 966,
        "criteria:security": 54,
        "criteria:readme": 30,
        "criteria:scm": 1,
        "criteria:disk-usage": 7,
        "certification": 1061
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:31 GMT",
      "Content-Length",
      "2518",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=inflight&version=1.0.6",
    "body": "",
    "status": 200,
    "response": {
      "name": "inflight",
      "version": "1.0.6",
      "description": "Add callbacks to requests in flight to avoid async duplication",
      "keywords": [],
      "readme": "# inflight\n\nAdd callbacks to requests in flight to avoid async duplication\n\n## USAGE\n\n```javascript\nvar inflight = require('inflight')\n\n// some request that does some stuff\nfunction req(key, callback) {\n  // key is any random string.  like a url or filename or whatever.\n  //\n  // will return either a falsey value, indicating that the\n  // request for this key is already in flight, or a new callback\n  // which when called will call all callbacks passed to inflightk\n  // with the same key\n  callback = inflight(key, callback)\n\n  // If we got a falsey value back, then there's already a req going\n  if (!callback) return\n\n  // this is where you'd fetch the url or whatever\n  // callback is also once()-ified, so it can safely be assigned\n  // to multiple events etc.  First call wins.\n  setTimeout(function() {\n    callback(null, key)\n  }, 100)\n}\n\n// only assigns a single setTimeout\n// when it dings, all cbs get called\nreq('foo', cb1)\nreq('foo', cb2)\nreq('foo', cb3)\nreq('foo', cb4)\n```\n",
      "author": "isaacs",
      "maintainers": [
        "iarna",
        "isaacs",
        "othiym23",
        "zkat"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "isc"
              ],
              [
                "dependencies",
                true,
                "isc"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                991
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.0.6"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                33536
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-24T04:46:33.495Z",
        "published": "2016-11-01T17:30:25.401Z"
      },
      "dependencyCount": 2,
      "downloadCount": 15022512,
      "dependencyList": [
        "once@1.4.0",
        "wrappy@1.0.2"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "isc"
            ],
            [
              "dependencies",
              true,
              "isc"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              991
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.0.6"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              33536
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 102,
        "package:extract-tarball": 113,
        "git:clone": 1412,
        "git:tag": 7,
        "git:checkout": 9,
        "package:use-git-repo": 1879,
        "package:npm-install": 16220,
        "setup": 18320,
        "criteria:license": 14475,
        "criteria:security": 67,
        "criteria:readme": 55,
        "criteria:scm": 1,
        "criteria:disk-usage": 22,
        "certification": 14622
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:32 GMT",
      "Content-Length",
      "2645",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=wrappy&version=1.0.2",
    "body": "",
    "status": 200,
    "response": {
      "name": "wrappy",
      "version": "1.0.2",
      "description": "Callback wrapping utility",
      "keywords": [],
      "readme": "# wrappy\n\nCallback wrapping utility\n\n## USAGE\n\n```javascript\nvar wrappy = require(\"wrappy\")\n\n// var wrapper = wrappy(wrapperFunction)\n\n// make sure a cb is called only once\n// See also: http://npm.im/once for this specific use case\nvar once = wrappy(function (cb) {\n  var called = false\n  return function () {\n    if (called) return\n    called = true\n    return cb.apply(this, arguments)\n  }\n})\n\nfunction printBoo () {\n  console.log('boo')\n}\n// has some rando property\nprintBoo.iAmBooPrinter = true\n\nvar onlyPrintOnce = once(printBoo)\n\nonlyPrintOnce() // prints 'boo'\nonlyPrintOnce() // does nothing\n\n// random property is retained!\nassert.equal(onlyPrintOnce.iAmBooPrinter, true)\n```\n",
      "author": "zkat",
      "maintainers": [
        "isaacs",
        "zkat"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "isc"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                685
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.0.2"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                26280
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-24T05:38:04.146Z",
        "published": "2016-11-01T18:48:39.879Z"
      },
      "dependencyCount": 0,
      "downloadCount": 15257561,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "isc"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              685
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.0.2"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              26280
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 148,
        "package:extract-tarball": 97,
        "git:clone": 1178,
        "git:tag": 6,
        "git:checkout": 7,
        "package:use-git-repo": 1631,
        "package:npm-install": 15090,
        "setup": 16974,
        "criteria:license": 18289,
        "criteria:security": 62,
        "criteria:readme": 33,
        "criteria:scm": 1,
        "criteria:disk-usage": 17,
        "certification": 18405
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:32 GMT",
      "Content-Length",
      "2250",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=minimatch&version=3.0.3",
    "body": "",
    "status": 200,
    "response": {
      "name": "minimatch",
      "version": "3.0.3",
      "description": "a glob matcher in javascript",
      "keywords": [],
      "readme": "# minimatch\n\nA minimal matching utility.\n\n[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.svg)](http://travis-ci.org/isaacs/minimatch)\n\n\nThis is the matching library used internally by npm.\n\nIt works by converting glob expressions into JavaScript `RegExp`\nobjects.\n\n## Usage\n\n```javascript\nvar minimatch = require(\"minimatch\")\n\nminimatch(\"bar.foo\", \"*.foo\") // true!\nminimatch(\"bar.foo\", \"*.bar\") // false!\nminimatch(\"bar.foo\", \"*.+(bar|foo)\", { debug: true }) // true, and noisy!\n```\n\n## Features\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n\n## Minimatch Class\n\nCreate a minimatch object by instantiating the `minimatch.Minimatch` class.\n\n```javascript\nvar Minimatch = require(\"minimatch\").Minimatch\nvar mm = new Minimatch(pattern, options)\n```\n\n### Properties\n\n* `pattern` The original pattern the minimatch object represents.\n* `options` The options supplied to the constructor.\n* `set` A 2-dimensional array of regexp or string expressions.\n  Each row in the\n  array corresponds to a brace-expanded pattern.  Each item in the row\n  corresponds to a single path-part.  For example, the pattern\n  `{a,b/c}/d` would expand to a set of patterns like:\n\n        [ [ a, d ]\n        , [ b, c, d ] ]\n\n    If a portion of the pattern doesn't have any \"magic\" in it\n    (that is, it's something like `\"foo\"` rather than `fo*o?`), then it\n    will be left as a string rather than converted to a regular\n    expression.\n\n* `regexp` Created by the `makeRe` method.  A single regular expression\n  expressing the entire pattern.  This is useful in cases where you wish\n  to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.\n* `negate` True if the pattern is negated.\n* `comment` True if the pattern is a comment.\n* `empty` True if the pattern is `\"\"`.\n\n### Methods\n\n* `makeRe` Generate the `regexp` member if necessary, and return it.\n  Will return `false` if the pattern is invalid.\n* `match(fname)` Return true if the filename matches the pattern, or\n  false otherwise.\n* `matchOne(fileArray, patternArray, partial)` Take a `/`-split\n  filename, and match it against a single row in the `regExpSet`.  This\n  method is mainly for internal use, but is exposed so that it can be\n  used by a glob-walker that needs to avoid excessive filesystem calls.\n\nAll other methods are internal, and will be called as necessary.\n\n### minimatch(path, pattern, options)\n\nMain export.  Tests a path against the pattern using the options.\n\n```javascript\nvar isJS = minimatch(file, \"*.js\", { matchBase: true })\n```\n\n### minimatch.filter(pattern, options)\n\nReturns a function that tests its\nsupplied argument, suitable for use with `Array.filter`.  Example:\n\n```javascript\nvar javascripts = fileList.filter(minimatch.filter(\"*.js\", {matchBase: true}))\n```\n\n### minimatch.match(list, pattern, options)\n\nMatch against the list of\nfiles, in the style of fnmatch or glob.  If nothing is matched, and\noptions.nonull is set, then return a list containing the pattern itself.\n\n```javascript\nvar javascripts = minimatch.match(fileList, \"*.js\", {matchBase: true}))\n```\n\n### minimatch.makeRe(pattern, options)\n\nMake a regular expression object from the pattern.\n\n## Options\n\nAll options are `false` by default.\n\n### debug\n\nDump a ton of stuff to stderr.\n\n### nobrace\n\nDo not expand `{a,b}` and `{1..3}` brace sets.\n\n### noglobstar\n\nDisable `**` matching against multiple folder names.\n\n### dot\n\nAllow patterns to match filenames starting with a period, even if\nthe pattern does not explicitly have a period in that spot.\n\nNote that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`\nis set.\n\n### noext\n\nDisable \"extglob\" style patterns like `+(a|b)`.\n\n### nocase\n\nPerform a case-insensitive match.\n\n### nonull\n\nWhen a match is not found by `minimatch.match`, return a list containing\nthe pattern itself if this option is set.  When not set, an empty list\nis returned if there are no matches.\n\n### matchBase\n\nIf set, then patterns without slashes will be matched\nagainst the basename of the path if it contains slashes.  For example,\n`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.\n\n### nocomment\n\nSuppress the behavior of treating `#` at the start of a pattern as a\ncomment.\n\n### nonegate\n\nSuppress the behavior of treating a leading `!` character as negation.\n\n### flipNegate\n\nReturns from negate expressions the same as if they were not negated.\n(Ie, true on a hit, false on a miss.)\n\n\n## Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between minimatch and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated.  Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally.  This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`.  Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything.  Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set.  This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part.  That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not.\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen minimatch.match returns the pattern as-provided, rather than\ninterpreting the character escapes.  For example,\n`minimatch.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`.  This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern.  Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity.  Since those two are valid, matching proceeds.\n",
      "author": "isaacs",
      "maintainers": [
        "isaacs"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "isc"
              ],
              [
                "dependencies",
                true,
                "mit"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                6336
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v3.0.3"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                448
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-27T17:02:42.743Z",
        "published": "2017-02-19T09:05:44.917Z"
      },
      "dependencyCount": 1,
      "downloadCount": 30826937,
      "dependencyList": [
        "brace-expansion@1.1.6",
        "balanced-match@0.4.2",
        "concat-map@0.0.1"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "isc"
            ],
            [
              "dependencies",
              true,
              "mit"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              6336
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v3.0.3"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              448
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 158,
        "package:extract-tarball": 66,
        "git:clone": 3544,
        "git:tag": 4,
        "git:checkout": 48,
        "package:use-git-repo": 4071,
        "package:npm-install": 7292,
        "setup": 11593,
        "criteria:license": 1028,
        "criteria:security": 36,
        "criteria:readme": 58,
        "criteria:scm": 1,
        "criteria:disk-usage": 6,
        "certification": 1132
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:32 GMT",
      "Content-Length",
      "8182",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=brace-expansion&version=1.1.6",
    "body": "",
    "status": 200,
    "response": {
      "name": "brace-expansion",
      "version": "1.1.6",
      "description": "Brace expansion as known from sh/bash",
      "keywords": [],
      "readme": "# brace-expansion\n\n[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html), \nas known from sh/bash, in JavaScript.\n\n[![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion)\n[![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion)\n\n[![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion)\n\n## Example\n\n```js\nvar expand = require('brace-expansion');\n\nexpand('file-{a,b,c}.jpg')\n// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']\n\nexpand('-v{,,}')\n// => ['-v', '-v', '-v']\n\nexpand('file{0..2}.jpg')\n// => ['file0.jpg', 'file1.jpg', 'file2.jpg']\n\nexpand('file-{a..c}.jpg')\n// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']\n\nexpand('file{2..0}.jpg')\n// => ['file2.jpg', 'file1.jpg', 'file0.jpg']\n\nexpand('file{0..4..2}.jpg')\n// => ['file0.jpg', 'file2.jpg', 'file4.jpg']\n\nexpand('file-{a..e..2}.jpg')\n// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg']\n\nexpand('file{00..10..5}.jpg')\n// => ['file00.jpg', 'file05.jpg', 'file10.jpg']\n\nexpand('{{A..C},{a..c}}')\n// => ['A', 'B', 'C', 'a', 'b', 'c']\n\nexpand('ppp{,config,oe{,conf}}')\n// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf']\n```\n\n## API\n\n```js\nvar expand = require('brace-expansion');\n```\n\n### var expanded = expand(str)\n\nReturn an array of all possible and valid expansions of `str`. If none are\nfound, `[str]` is returned.\n\nValid expansions are:\n\n```js\n/^(.*,)+(.+)?$/\n// {a,b,...}\n```\n\nA comma seperated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`.\n\n```js\n/^-?\\d+\\.\\.-?\\d+(\\.\\.-?\\d+)?$/\n// {x..y[..incr]}\n```\n\nA numeric sequence from `x` to `y` inclusive, with optional increment.\nIf `x` or `y` start with a leading `0`, all the numbers will be padded\nto have equal length. Negative numbers and backwards iteration work too.\n\n```js\n/^-?\\d+\\.\\.-?\\d+(\\.\\.-?\\d+)?$/\n// {x..y[..incr]}\n```\n\nAn alphabetic sequence from `x` to `y` inclusive, with optional increment.\n`x` and `y` must be exactly one character, and if given, `incr` must be a\nnumber.\n\nFor compatibility reasons, the string `${` is not eligible for brace expansion.\n\n## Installation\n\nWith [npm](https://npmjs.org) do:\n\n```bash\nnpm install brace-expansion\n```\n\n## Contributors\n\n- [Julian Gruber](https://github.com/juliangruber)\n- [Isaac Z. Schlueter](https://github.com/isaacs)\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;\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\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject 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",
      "author": "juliangruber",
      "maintainers": [
        "juliangruber",
        "isaacs"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                "mit"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                3545
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.1.6"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                284
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-27T05:02:26.208Z",
        "published": "2017-02-27T01:33:37.982Z"
      },
      "dependencyCount": 2,
      "downloadCount": 14442387,
      "dependencyList": [
        "balanced-match@0.4.2",
        "concat-map@0.0.1"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              "mit"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              3545
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.1.6"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              284
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 113,
        "package:extract-tarball": 69,
        "git:clone": 2065,
        "git:tag": 4,
        "git:checkout": 8,
        "package:use-git-repo": 2571,
        "package:npm-install": 5804,
        "setup": 8566,
        "criteria:license": 2181,
        "criteria:security": 373,
        "criteria:readme": 28,
        "criteria:scm": 4,
        "criteria:disk-usage": 6,
        "certification": 2595
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:33 GMT",
      "Content-Length",
      "5286",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=balanced-match&version=0.4.2",
    "body": "",
    "status": 200,
    "response": {
      "name": "balanced-match",
      "version": "0.4.2",
      "description": "Match balanced character pairs, like \"{\" and \"}\"",
      "keywords": [
        "match",
        "regexp",
        "test",
        "balanced",
        "parse"
      ],
      "readme": "# balanced-match\n\nMatch balanced string pairs, like `{` and `}` or `<b>` and `</b>`. Supports regular expressions as well!\n\n[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match)\n[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match)\n\n[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match)\n\n## Example\n\nGet the first matching pair of braces:\n\n```js\nvar balanced = require('balanced-match');\n\nconsole.log(balanced('{', '}', 'pre{in{nested}}post'));\nconsole.log(balanced('{', '}', 'pre{first}between{second}post'));\nconsole.log(balanced(/\\s+\\{\\s+/, /\\s+\\}\\s+/, 'pre  {   in{nest}   }  post'));\n```\n\nThe matches are:\n\n```bash\n$ node example.js\n{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' }\n{ start: 3,\n  end: 9,\n  pre: 'pre',\n  body: 'first',\n  post: 'between{second}post' }\n{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' }\n```\n\n## API\n\n### var m = balanced(a, b, str)\n\nFor the first non-nested matching pair of `a` and `b` in `str`, return an\nobject with those keys:\n\n* **start** the index of the first match of `a`\n* **end** the index of the matching `b`\n* **pre** the preamble, `a` and `b` not included\n* **body** the match, `a` and `b` not included\n* **post** the postscript, `a` and `b` not included\n\nIf there's no match, `undefined` will be returned.\n\nIf the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`.\n\n### var r = balanced.range(a, b, str)\n\nFor the first non-nested matching pair of `a` and `b` in `str`, return an\narray with indexes: `[ <a index>, <b index> ]`.\n\nIf there's no match, `undefined` will be returned.\n\nIf the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`.\n\n## Installation\n\nWith [npm](https://npmjs.org) do:\n\n```bash\nnpm install balanced-match\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;\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\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject 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",
      "author": "juliangruber",
      "maintainers": [
        "juliangruber"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                3308
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v0.4.2"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                168
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-27T11:52:29.748Z",
        "published": "2017-01-07T23:53:11.718Z"
      },
      "dependencyCount": 0,
      "downloadCount": 15319273,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              3308
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v0.4.2"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              168
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 124,
        "package:extract-tarball": 65,
        "git:clone": 1783,
        "git:tag": 7,
        "git:checkout": 15,
        "package:use-git-repo": 2266,
        "package:npm-install": 2174,
        "setup": 4639,
        "criteria:license": 1205,
        "criteria:security": 122,
        "criteria:readme": 473,
        "criteria:scm": 4,
        "criteria:disk-usage": 8,
        "certification": 1815
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:33 GMT",
      "Content-Length",
      "5016",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=concat-map&version=0.0.1",
    "body": "",
    "status": 200,
    "response": {
      "name": "concat-map",
      "version": "0.0.1",
      "description": "concatenative mapdashery",
      "keywords": [
        "concat",
        "concatMap",
        "map",
        "functional",
        "higher-order"
      ],
      "readme": "concat-map\n==========\n\nConcatenative mapdashery.\n\n[![browser support](http://ci.testling.com/substack/node-concat-map.png)](http://ci.testling.com/substack/node-concat-map)\n\n[![build status](https://secure.travis-ci.org/substack/node-concat-map.png)](http://travis-ci.org/substack/node-concat-map)\n\nexample\n=======\n\n``` js\nvar concatMap = require('concat-map');\nvar xs = [ 1, 2, 3, 4, 5, 6 ];\nvar ys = concatMap(xs, function (x) {\n    return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];\n});\nconsole.dir(ys);\n```\n\n***\n\n```\n[ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]\n```\n\nmethods\n=======\n\n``` js\nvar concatMap = require('concat-map')\n```\n\nconcatMap(xs, fn)\n-----------------\n\nReturn an array of concatenated elements by calling `fn(x, i)` for each element\n`x` and each index `i` in the array `xs`.\n\nWhen `fn(x, i)` returns an array, its result will be concatenated with the\nresult array. If `fn(x, i)` returns anything else, that value will be pushed\nonto the end of the result array.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install concat-map\n```\n\nlicense\n=======\n\nMIT\n\nnotes\n=====\n\nThis module was written while sitting high above the ground in a tree.\n",
      "author": "substack",
      "maintainers": [
        "substack"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.markdown"
              ],
              [
                "readme > 300 characters",
                true,
                1165
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "0.0.1"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                772
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-23T11:15:58.069Z",
        "published": "2014-01-30T03:06:35.982Z"
      },
      "dependencyCount": 0,
      "downloadCount": 14885769,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.markdown"
            ],
            [
              "readme > 300 characters",
              true,
              1165
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "0.0.1"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              772
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 112,
        "package:extract-tarball": 116,
        "git:clone": 1269,
        "git:tag": 7,
        "git:checkout": 13,
        "package:use-git-repo": 1721,
        "package:npm-install": 3391,
        "setup": 5346,
        "criteria:license": 1201,
        "criteria:security": 171,
        "criteria:readme": 413,
        "criteria:scm": 2,
        "criteria:disk-usage": 12,
        "certification": 1803
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:33 GMT",
      "Content-Length",
      "2818",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=once&version=1.4.0",
    "body": "",
    "status": 200,
    "response": {
      "name": "once",
      "version": "1.4.0",
      "description": "Run a function exactly one time",
      "keywords": [
        "once",
        "function",
        "one",
        "single"
      ],
      "readme": "# once\n\nOnly call a function once.\n\n## usage\n\n```javascript\nvar once = require('once')\n\nfunction load (file, cb) {\n  cb = once(cb)\n  loader.load('file')\n  loader.once('load', cb)\n  loader.once('error', cb)\n}\n```\n\nOr add to the Function.prototype in a responsible way:\n\n```javascript\n// only has to be done once\nrequire('once').proto()\n\nfunction load (file, cb) {\n  cb = cb.once()\n  loader.load('file')\n  loader.once('load', cb)\n  loader.once('error', cb)\n}\n```\n\nIronically, the prototype feature makes this module twice as\ncomplicated as necessary.\n\nTo check whether you function has been called, use `fn.called`. Once the\nfunction is called for the first time the return value of the original\nfunction is saved in `fn.value` and subsequent calls will continue to\nreturn this value.\n\n```javascript\nvar once = require('once')\n\nfunction load (cb) {\n  cb = once(cb)\n  var stream = createStream()\n  stream.once('data', cb)\n  stream.once('end', function () {\n    if (!cb.called) cb(new Error('not found'))\n  })\n}\n```\n\n## `once.strict(func)`\n\nThrow an error if the function is called twice.\n\nSome functions are expected to be called only once. Using `once` for them would\npotentially hide logical errors.\n\nIn the example below, the `greet` function has to call the callback only once:\n\n```javascript\nfunction greet (name, cb) {\n  // return is missing from the if statement\n  // when no name is passed, the callback is called twice\n  if (!name) cb('Hello anonymous')\n  cb('Hello ' + name)\n}\n\nfunction log (msg) {\n  console.log(msg)\n}\n\n// this will print 'Hello anonymous' but the logical error will be missed\ngreet(null, once(msg))\n\n// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time\ngreet(null, once.strict(msg))\n```\n",
      "author": "isaacs",
      "maintainers": [
        "isaacs"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "isc"
              ],
              [
                "dependencies",
                true,
                "isc"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                1772
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.4.0"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                33480
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-26T11:57:40.395Z",
        "published": "2017-02-25T23:38:29.654Z"
      },
      "dependencyCount": 1,
      "downloadCount": 21274110,
      "dependencyList": [
        "wrappy@1.0.2"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "isc"
            ],
            [
              "dependencies",
              true,
              "isc"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              1772
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.4.0"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              33480
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 119,
        "package:extract-tarball": 148,
        "git:clone": 1382,
        "git:tag": 10,
        "git:checkout": 15,
        "package:use-git-repo": 1832,
        "package:npm-install": 21574,
        "setup": 23683,
        "criteria:license": 9239,
        "criteria:security": 354,
        "criteria:readme": 59,
        "criteria:scm": 1,
        "criteria:disk-usage": 26,
        "certification": 9682
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:34 GMT",
      "Content-Length",
      "3429",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=path-is-absolute&version=1.0.1",
    "body": "",
    "status": 200,
    "response": {
      "name": "path-is-absolute",
      "version": "1.0.1",
      "description": "Node.js 0.12 path.isAbsolute() ponyfill",
      "keywords": [
        "path",
        "paths",
        "file",
        "dir",
        "absolute",
        "isabsolute",
        "is-absolute",
        "built-in",
        "util",
        "utils",
        "core",
        "ponyfill",
        "polyfill",
        "shim",
        "is",
        "detect",
        "check"
      ],
      "readme": "# path-is-absolute [![Build Status](https://travis-ci.org/sindresorhus/path-is-absolute.svg?branch=master)](https://travis-ci.org/sindresorhus/path-is-absolute)\n\n> Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) [ponyfill](https://ponyfill.com)\n\n\n## Install\n\n```\n$ npm install --save path-is-absolute\n```\n\n\n## Usage\n\n```js\nconst pathIsAbsolute = require('path-is-absolute');\n\n// Running on Linux\npathIsAbsolute('/home/foo');\n//=> true\npathIsAbsolute('C:/Users/foo');\n//=> false\n\n// Running on Windows\npathIsAbsolute('C:/Users/foo');\n//=> true\npathIsAbsolute('/home/foo');\n//=> false\n\n// Running on any OS\npathIsAbsolute.posix('/home/foo');\n//=> true\npathIsAbsolute.posix('C:/Users/foo');\n//=> false\npathIsAbsolute.win32('C:/Users/foo');\n//=> true\npathIsAbsolute.win32('/home/foo');\n//=> false\n```\n\n\n## API\n\nSee the [`path.isAbsolute()` docs](http://nodejs.org/api/path.html#path_path_isabsolute_path).\n\n### pathIsAbsolute(path)\n\n### pathIsAbsolute.posix(path)\n\nPOSIX specific version.\n\n### pathIsAbsolute.win32(path)\n\nWindows specific version.\n\n\n## License\n\nMIT © [Sindre Sorhus](https://sindresorhus.com)\n",
      "author": "sindresorhus",
      "maintainers": [
        "sindresorhus"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "readme.md"
              ],
              [
                "readme > 300 characters",
                true,
                1152
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.0.1"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                78276
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-24T05:15:49.961Z",
        "published": "2016-11-01T18:01:04.405Z"
      },
      "dependencyCount": 0,
      "downloadCount": 14724694,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "readme.md"
            ],
            [
              "readme > 300 characters",
              true,
              1152
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.0.1"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              78276
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 110,
        "package:extract-tarball": 103,
        "git:clone": 2019,
        "git:tag": 7,
        "git:checkout": 9,
        "package:use-git-repo": 2455,
        "package:npm-install": 27574,
        "setup": 30249,
        "criteria:license": 11918,
        "criteria:security": 55,
        "criteria:readme": 29,
        "criteria:scm": 2,
        "criteria:disk-usage": 52,
        "certification": 12059
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:34 GMT",
      "Content-Length",
      "2922",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=has&version=1.0.1",
    "body": "",
    "status": 200,
    "response": {
      "name": "has",
      "version": "1.0.1",
      "description": "Object.prototype.hasOwnProperty.call shortcut",
      "keywords": [],
      "readme": "# has\n\n> Object.prototype.hasOwnProperty.call shortcut\n\n## Installation\n\n```sh\nnpm install --save has\n```\n\n## Usage\n\n```js\nvar has = require('has');\n\nhas({}, 'hasOwnProperty'); // false\nhas(Object.prototype, 'hasOwnProperty'); // true\n```\n",
      "author": "tarruda",
      "maintainers": [
        "tarruda"
      ],
      "score": 93,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                "mit"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.mkd"
              ],
              [
                "readme > 300 characters",
                false,
                239
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "1.0.1"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                2400
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-24T12:58:01.428Z",
        "published": "2016-12-17T00:20:05.830Z"
      },
      "dependencyCount": 1,
      "downloadCount": 4835197,
      "dependencyList": [
        "function-bind@1.1.0"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              "mit"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.mkd"
            ],
            [
              "readme > 300 characters",
              false,
              239
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "1.0.1"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              2400
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 132,
        "package:extract-tarball": 302,
        "git:clone": 1585,
        "git:tag": 7,
        "git:checkout": 10,
        "package:use-git-repo": 2132,
        "package:npm-install": 7057,
        "setup": 9632,
        "criteria:license": 1836,
        "criteria:security": 95,
        "criteria:readme": 37,
        "criteria:scm": 2,
        "criteria:disk-usage": 25,
        "certification": 1998
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:34 GMT",
      "Content-Length",
      "1817",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=inherits&version=2.0.3",
    "body": "",
    "status": 200,
    "response": {
      "name": "inherits",
      "version": "2.0.3",
      "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
      "keywords": [
        "inheritance",
        "class",
        "klass",
        "oop",
        "object-oriented",
        "inherits",
        "browser",
        "browserify"
      ],
      "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n  superclass\n* new version overwrites current prototype while old one preserves any\n  existing fields on it\n",
      "author": "isaacs",
      "maintainers": [
        "isaacs"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "isc"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                1625
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v2.0.3"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                33668
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-24T15:31:46.452Z",
        "published": "2017-01-20T11:01:19.020Z"
      },
      "dependencyCount": 0,
      "downloadCount": 31953667,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "isc"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              1625
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v2.0.3"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              33668
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 115,
        "package:extract-tarball": 98,
        "git:clone": 1720,
        "git:tag": 11,
        "git:checkout": 10,
        "package:use-git-repo": 2267,
        "package:npm-install": 25580,
        "setup": 28068,
        "criteria:license": 17300,
        "criteria:security": 60,
        "criteria:readme": 40,
        "criteria:scm": 0,
        "criteria:disk-usage": 23,
        "certification": 17429
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:35 GMT",
      "transfer-encoding",
      "chunked",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=minimist&version=1.2.0",
    "body": "",
    "status": 200,
    "response": {
      "name": "minimist",
      "version": "1.2.0",
      "description": "parse argument options",
      "keywords": [
        "argv",
        "getopt",
        "parser",
        "optimist"
      ],
      "readme": "# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n  x: 3,\n  y: 4,\n  n: 5,\n  a: true,\n  b: true,\n  c: true,\n  beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a boolean, string or array of strings to always treat as\nbooleans. if `true` will treat all double hyphenated arguments without equal signs\nas boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`)\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n* `opts.stopEarly` - when true, populate `argv._` with everything after the\nfirst non-option\n* `opts['--']` - when true, populate `argv._` with everything before the `--`\nand `argv['--']` with everything after the `--`. Here's an example:\n* `opts.unknown` - a function which is invoked with a command line parameter not\ndefined in the `opts` configuration object. If the function returns `false`, the\nunknown option is not added to `argv`.\n\n```\n> require('./')('one two three -- four five --six'.split(' '), { '--': true })\n{ _: [ 'one', 'two', 'three' ],\n  '--': [ 'four', 'five', '--six' ] }\n```\n\nNote that with `opts['--']` set, parsing for arguments still stops after the\n`--`.\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n",
      "author": "substack",
      "maintainers": [
        "substack"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "readme.markdown"
              ],
              [
                "readme > 300 characters",
                true,
                2463
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "1.2.0"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                20164
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-26T21:25:47.530Z",
        "published": "2017-02-26T02:40:32.555Z"
      },
      "dependencyCount": 0,
      "downloadCount": 34415182,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "readme.markdown"
            ],
            [
              "readme > 300 characters",
              true,
              2463
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "1.2.0"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              20164
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 270,
        "package:extract-tarball": 512,
        "git:clone": 2412,
        "git:tag": 5,
        "git:checkout": 17,
        "package:use-git-repo": 2893,
        "package:npm-install": 18934,
        "setup": 22650,
        "criteria:license": 4332,
        "criteria:security": 235,
        "criteria:readme": 126,
        "criteria:scm": 2,
        "criteria:disk-usage": 37,
        "certification": 4738
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:35 GMT",
      "Content-Length",
      "4128",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=object-inspect&version=1.2.1",
    "body": "",
    "status": 200,
    "response": {
      "name": "object-inspect",
      "version": "1.2.1",
      "description": "string representations of objects in node and the browser",
      "keywords": [
        "inspect",
        "util.inspect",
        "object",
        "stringify",
        "pretty"
      ],
      "readme": "# object-inspect\n\nstring representations of objects in node and the browser\n\n[![testling badge](https://ci.testling.com/substack/object-inspect.png)](https://ci.testling.com/substack/object-inspect)\n\n[![build status](https://secure.travis-ci.org/substack/object-inspect.png)](http://travis-ci.org/substack/object-inspect)\n\n# example\n\n## circular\n\n``` js\nvar inspect = require('object-inspect');\nvar obj = { a: 1, b: [3,4] };\nobj.c = obj;\nconsole.log(inspect(obj));\n```\n\n## dom element\n\n``` js\nvar inspect = require('object-inspect');\n\nvar d = document.createElement('div');\nd.setAttribute('id', 'beep');\nd.innerHTML = '<b>wooo</b><i>iiiii</i>';\n\nconsole.log(inspect([ d, { a: 3, b : 4, c: [5,6,[7,[8,[9]]]] } ]));\n```\n\noutput:\n\n```\n[ <div id=\"beep\">...</div>, { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [ ... ] ] ] ] } ]\n```\n\n# methods\n\n``` js\nvar inspect = require('object-inspect')\n```\n\n## var s = inspect(obj, opts={})\n\nReturn a string `s` with the string representation of `obj` up to a depth of\n`opts.depth`.\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install object-inspect\n```\n\n# license\n\nMIT\n",
      "author": "ljharb",
      "maintainers": [
        "substack",
        "ljharb"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "readme.markdown"
              ],
              [
                "readme > 300 characters",
                true,
                1104
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.2.1"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                2516
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-25T21:22:21.076Z",
        "published": "2016-04-09T15:57:31.022Z"
      },
      "dependencyCount": 0,
      "downloadCount": 944621,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "readme.markdown"
            ],
            [
              "readme > 300 characters",
              true,
              1104
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.2.1"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              2516
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 352,
        "package:extract-tarball": 261,
        "git:clone": 3965,
        "git:tag": 4,
        "git:checkout": 25,
        "package:use-git-repo": 4448,
        "package:npm-install": 26409,
        "setup": 31570,
        "criteria:license": 1493,
        "criteria:security": 83,
        "criteria:readme": 25,
        "criteria:scm": 1,
        "criteria:disk-usage": 14,
        "certification": 1620
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:35 GMT",
      "Content-Length",
      "2802",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=resumer&version=0.0.0",
    "body": "",
    "status": 200,
    "response": {
      "name": "resumer",
      "version": "0.0.0",
      "description": "a through stream that starts paused and resumes on the next tick",
      "keywords": [
        "through",
        "stream",
        "pause",
        "resume"
      ],
      "readme": "# resumer\n\nReturn a through stream that starts out paused and resumes on the next tick,\nunless somebody called `.pause()`.\n\nThis module has the same signature as\n[through](https://npmjs.com/package/through).\n\n[![browser support](https://ci.testling.com/substack/resumer.png)](http://ci.testling.com/substack/resumer)\n\n[![build status](https://secure.travis-ci.org/substack/resumer.png)](http://travis-ci.org/substack/resumer)\n\n# example\n\n``` js\nvar resumer = require('resumer');\nvar s = createStream();\ns.pipe(process.stdout);\n\nfunction createStream () {\n    var stream = resumer();\n    stream.queue('beep boop\\n');\n    return stream;\n}\n```\n\n```\n$ node example/resume.js\nbeep boop\n```\n\n# methods\n\n``` js\nvar resumer = require('resumer')\n```\n\n## resumer(write, end)\n\nReturn a new through stream from `write` and `end`, which default to\npass-through `.queue()` functions if not specified.\n\nThe stream starts out paused and will be resumed on the next tick unless you\ncall `.pause()` first.\n\n`write` and `end` get passed directly through to\n[through](https://npmjs.com/package/through).\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install resumer\n```\n\n# license\n\nMIT\n",
      "author": "substack",
      "maintainers": [
        "substack"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                "apache-1.1"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "readme.markdown"
              ],
              [
                "readme > 300 characters",
                true,
                1175
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "0.0.0"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                3024
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-26T11:34:07.369Z",
        "published": "2017-01-21T17:10:22.752Z"
      },
      "dependencyCount": 1,
      "downloadCount": 933338,
      "dependencyList": [
        "through@2.3.8"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              "apache-1.1"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "readme.markdown"
            ],
            [
              "readme > 300 characters",
              true,
              1175
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "0.0.0"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              3024
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 158,
        "package:extract-tarball": 157,
        "git:clone": 1763,
        "git:tag": 6,
        "git:checkout": 10,
        "package:use-git-repo": 2257,
        "package:npm-install": 11166,
        "setup": 13775,
        "criteria:license": 2367,
        "criteria:security": 243,
        "criteria:readme": 478,
        "criteria:scm": 4,
        "criteria:disk-usage": 61,
        "certification": 3156
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:36 GMT",
      "Content-Length",
      "2877",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=string.prototype.trim&version=1.1.2",
    "body": "",
    "status": 200,
    "response": {
      "name": "string.prototype.trim",
      "version": "1.1.2",
      "description": "ES5 spec-compliant shim for String.prototype.trim",
      "keywords": [
        "String.prototype.trim",
        "string",
        "ES5",
        "shim",
        "trim",
        "polyfill",
        "es-shim API"
      ],
      "readme": "String.prototype.trim <sup>[![Version Badge][npm-version-svg]][package-url]</sup>\n\n[![Build Status][travis-svg]][travis-url]\n[![dependency status][deps-svg]][deps-url]\n[![dev dependency status][dev-deps-svg]][dev-deps-url]\n[![License][license-image]][license-url]\n[![Downloads][downloads-image]][downloads-url]\n\n[![npm badge][npm-badge-png]][package-url]\n\n[![browser support][testling-svg]][testling-url]\n\nAn ES5 spec-compliant `String.prototype.trim` shim. Invoke its \"shim\" method to shim `String.prototype.trim` if it is unavailable.\n\nThis package implements the [es-shim API](https://github.com/es-shims/api) interface. It works in an ES3-supported environment and complies with the [spec](http://www.ecma-international.org/ecma-262/5.1/#sec-15.5.4.20).\n\nMost common usage:\n\n```js\nvar assert = require('assert');\nvar trim = require('string.prototype.trim');\n\nassert(trim(' \\t\\na \\t\\n') === 'a');\n\ntrim.shim(); // will be a no-op if not needed\n\nassert(trim(' \\t\\na \\t\\n') === ' \\t\\na \\t\\n'.trim());\n```\n\n## Engine Bugs\nSome implementations of `String#trim` incorrectly trim zero-width spaces. This shim detects and corrects this behavior.\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[package-url]: https://npmjs.com/package/string.prototype.trim\n[npm-version-svg]: http://versionbadg.es/es-shims/String.prototype.trim.svg\n[travis-svg]: https://travis-ci.org/es-shims/String.prototype.trim.svg\n[travis-url]: https://travis-ci.org/es-shims/String.prototype.trim\n[deps-svg]: https://david-dm.org/es-shims/String.prototype.trim.svg\n[deps-url]: https://david-dm.org/es-shims/String.prototype.trim\n[dev-deps-svg]: https://david-dm.org/es-shims/String.prototype.trim/dev-status.svg\n[dev-deps-url]: https://david-dm.org/es-shims/String.prototype.trim#info=devDependencies\n[testling-svg]: https://ci.testling.com/es-shims/String.prototype.trim.png\n[testling-url]: https://ci.testling.com/es-shims/String.prototype.trim\n[npm-badge-png]: https://nodei.co/npm/string.prototype.trim.png?downloads=true&stars=true\n[license-image]: http://img.shields.io/npm/l/string.prototype.trim.svg\n[license-url]: LICENSE\n[downloads-image]: http://img.shields.io/npm/dm/string.prototype.trim.svg\n[downloads-url]: http://npm-stat.com/charts.html?package=string.prototype.trim\n",
      "author": "ljharb",
      "maintainers": [
        "ljharb"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                "mit"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                2274
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.1.2"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                72304
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-15T16:02:39.641Z",
        "published": "2016-02-06T09:37:24.527Z"
      },
      "dependencyCount": 3,
      "downloadCount": 311806,
      "dependencyList": [
        "define-properties@1.1.2",
        "foreach@2.0.5",
        "object-keys@1.0.11",
        "es-abstract@1.7.0",
        "es-to-primitive@1.1.1",
        "is-date-object@1.0.1",
        "is-symbol@1.0.1",
        "is-callable@1.1.3",
        "is-regex@1.0.3",
        "function-bind@1.1.0"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              "mit"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              2274
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.1.2"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              72304
            ]
          ]
        }
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:37 GMT",
      "Content-Length",
      "3874",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=define-properties&version=1.1.2",
    "body": "",
    "status": 200,
    "response": {
      "name": "define-properties",
      "version": "1.1.2",
      "description": "Define multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines.",
      "keywords": [
        "Object.defineProperty",
        "Object.defineProperties",
        "object",
        "property descriptor",
        "descriptor",
        "define",
        "ES5"
      ],
      "readme": "#define-properties <sup>[![Version Badge][npm-version-svg]][package-url]</sup>\n\n[![Build Status][travis-svg]][travis-url]\n[![dependency status][deps-svg]][deps-url]\n[![dev dependency status][dev-deps-svg]][dev-deps-url]\n[![License][license-image]][license-url]\n[![Downloads][downloads-image]][downloads-url]\n\n[![npm badge][npm-badge-png]][package-url]\n\n[![browser support][testling-svg]][testling-url]\n\nDefine multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines.\nExisting properties are not overridden. Accepts a map of property names to a predicate that, when true, force-overrides.\n\n## Example\n\n```js\nvar define = require('define-properties');\nvar assert = require('assert');\n\nvar obj = define({ a: 1, b: 2 }, {\n\ta: 10,\n\tb: 20,\n\tc: 30\n});\nassert(obj.a === 1);\nassert(obj.b === 2);\nassert(obj.c === 30);\nif (define.supportsDescriptors) {\n\tassert.deepEqual(Object.keys(obj), ['a', 'b']);\n\tassert.deepEqual(Object.getOwnPropertyDescriptor(obj, 'c'), {\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\tvalue: 30,\n\t\twritable: false\n\t});\n}\n```\n\nThen, with predicates:\n```js\nvar define = require('define-properties');\nvar assert = require('assert');\n\nvar obj = define({ a: 1, b: 2, c: 3 }, {\n\ta: 10,\n\tb: 20,\n\tc: 30\n}, {\n\ta: function () { return false; },\n\tb: function () { return true; }\n});\nassert(obj.a === 1);\nassert(obj.b === 20);\nassert(obj.c === 3);\nif (define.supportsDescriptors) {\n\tassert.deepEqual(Object.keys(obj), ['a', 'c']);\n\tassert.deepEqual(Object.getOwnPropertyDescriptor(obj, 'b'), {\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\tvalue: 20,\n\t\twritable: false\n\t});\n}\n```\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[package-url]: https://npmjs.org/package/define-properties\n[npm-version-svg]: http://versionbadg.es/ljharb/define-properties.svg\n[travis-svg]: https://travis-ci.org/ljharb/define-properties.svg\n[travis-url]: https://travis-ci.org/ljharb/define-properties\n[deps-svg]: https://david-dm.org/ljharb/define-properties.svg\n[deps-url]: https://david-dm.org/ljharb/define-properties\n[dev-deps-svg]: https://david-dm.org/ljharb/define-properties/dev-status.svg\n[dev-deps-url]: https://david-dm.org/ljharb/define-properties#info=devDependencies\n[testling-svg]: https://ci.testling.com/ljharb/define-properties.png\n[testling-url]: https://ci.testling.com/ljharb/define-properties\n[npm-badge-png]: https://nodei.co/npm/define-properties.png?downloads=true&stars=true\n[license-image]: http://img.shields.io/npm/l/define-properties.svg\n[license-url]: LICENSE\n[downloads-image]: http://img.shields.io/npm/dm/define-properties.svg\n[downloads-url]: http://npm-stat.com/charts.html?package=define-properties\n\n",
      "author": "ljharb",
      "maintainers": [
        "ljharb"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                "mit"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                2725
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.1.2"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                112864
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-23T11:20:34.566Z",
        "published": "2015-10-14T22:28:41.286Z"
      },
      "dependencyCount": 2,
      "downloadCount": 2569251,
      "dependencyList": [
        "foreach@2.0.5",
        "object-keys@1.0.11"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              "mit"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              2725
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.1.2"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              112864
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 105,
        "package:extract-tarball": 109,
        "git:clone": 1386,
        "git:tag": 6,
        "git:checkout": 7,
        "package:use-git-repo": 1765,
        "package:npm-install": 48458,
        "setup": 50449,
        "criteria:license": 29319,
        "criteria:security": 62,
        "criteria:readme": 31,
        "criteria:scm": 1,
        "criteria:disk-usage": 51,
        "certification": 29466
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:37 GMT",
      "Content-Length",
      "4646",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=foreach&version=2.0.5",
    "body": "",
    "status": 200,
    "response": {
      "name": "foreach",
      "version": "2.0.5",
      "description": "foreach component + npm package",
      "keywords": [
        "shim",
        "Array.prototype.forEach",
        "forEach",
        "Array#forEach",
        "each"
      ],
      "readme": "\n# foreach\n\nIterate over the key value pairs of either an array-like object or a dictionary like object.\n\n[![browser support][1]][2]\n\n## API\n\n### foreach(object, function, [context])\n\n```js\nvar each = require('foreach');\n\neach([1,2,3], function (value, key, array) {\n    // value === 1, 2, 3\n    // key === 0, 1, 2\n    // array === [1, 2, 3]\n});\n\neach({0:1,1:2,2:3}, function (value, key, object) {\n    // value === 1, 2, 3\n    // key === 0, 1, 2\n    // object === {0:1,1:2,2:3}\n});\n```\n\n[1]: https://ci.testling.com/manuelstofer/foreach.png\n[2]: https://ci.testling.com/manuelstofer/foreach\n\n",
      "author": "manuelstofer",
      "maintainers": [
        "manuelstofer"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "Readme.md"
              ],
              [
                "readme > 300 characters",
                true,
                593
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "2.0.5"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                160
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-27T08:13:53.930Z",
        "published": "2014-09-22T06:29:58.002Z"
      },
      "dependencyCount": 0,
      "downloadCount": 3192254,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "Readme.md"
            ],
            [
              "readme > 300 characters",
              true,
              593
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "2.0.5"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              160
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 81,
        "package:extract-tarball": 101,
        "git:clone": 2483,
        "git:tag": 4,
        "git:checkout": 22,
        "package:use-git-repo": 3016,
        "package:npm-install": 3613,
        "setup": 6816,
        "criteria:license": 1064,
        "criteria:security": 31,
        "criteria:readme": 34,
        "criteria:scm": 39,
        "criteria:disk-usage": 92,
        "certification": 1265
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:37 GMT",
      "Content-Length",
      "2220",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=object-keys&version=1.0.11",
    "body": "",
    "status": 200,
    "response": {
      "name": "object-keys",
      "version": "1.0.11",
      "description": "An Object.keys replacement, in case Object.keys is not available. From https://github.com/es-shims/es5-shim",
      "keywords": [
        "Object.keys",
        "keys",
        "ES5",
        "shim"
      ],
      "readme": "#object-keys <sup>[![Version Badge][npm-version-svg]][package-url]</sup>\n\n[![Build Status][travis-svg]][travis-url]\n[![dependency status][deps-svg]][deps-url]\n[![dev dependency status][dev-deps-svg]][dev-deps-url]\n[![License][license-image]][license-url]\n[![Downloads][downloads-image]][downloads-url]\n\n[![npm badge][npm-badge-png]][package-url]\n\n[![browser support][testling-svg]][testling-url]\n\nAn Object.keys shim. Invoke its \"shim\" method to shim Object.keys if it is unavailable.\n\nMost common usage:\n```js\nvar keys = Object.keys || require('object-keys');\n```\n\n## Example\n\n```js\nvar keys = require('object-keys');\nvar assert = require('assert');\nvar obj = {\n\ta: true,\n\tb: true,\n\tc: true\n};\n\nassert.deepEqual(keys(obj), ['a', 'b', 'c']);\n```\n\n```js\nvar keys = require('object-keys');\nvar assert = require('assert');\n/* when Object.keys is not present */\ndelete Object.keys;\nvar shimmedKeys = keys.shim();\nassert.equal(shimmedKeys, keys);\nassert.deepEqual(Object.keys(obj), keys(obj));\n```\n\n```js\nvar keys = require('object-keys');\nvar assert = require('assert');\n/* when Object.keys is present */\nvar shimmedKeys = keys.shim();\nassert.equal(shimmedKeys, Object.keys);\nassert.deepEqual(Object.keys(obj), keys(obj));\n```\n\n## Source\nImplementation taken directly from [es5-shim][es5-shim-url], with modifications, including from [lodash][lodash-url].\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[package-url]: https://npmjs.org/package/object-keys\n[npm-version-svg]: http://versionbadg.es/ljharb/object-keys.svg\n[travis-svg]: https://travis-ci.org/ljharb/object-keys.svg\n[travis-url]: https://travis-ci.org/ljharb/object-keys\n[deps-svg]: https://david-dm.org/ljharb/object-keys.svg\n[deps-url]: https://david-dm.org/ljharb/object-keys\n[dev-deps-svg]: https://david-dm.org/ljharb/object-keys/dev-status.svg\n[dev-deps-url]: https://david-dm.org/ljharb/object-keys#info=devDependencies\n[testling-svg]: https://ci.testling.com/ljharb/object-keys.png\n[testling-url]: https://ci.testling.com/ljharb/object-keys\n[es5-shim-url]: https://github.com/es-shims/es5-shim/blob/master/es5-shim.js#L542-589\n[lodash-url]: https://github.com/lodash/lodash\n[npm-badge-png]: https://nodei.co/npm/object-keys.png?downloads=true&stars=true\n[license-image]: http://img.shields.io/npm/l/object-keys.svg\n[license-url]: LICENSE\n[downloads-image]: http://img.shields.io/npm/dm/object-keys.svg\n[downloads-url]: http://npm-stat.com/charts.html?package=object-keys\n\n",
      "author": "ljharb",
      "maintainers": [
        "ljharb"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                2460
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.0.11"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                360
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-27T06:50:34.826Z",
        "published": "2016-07-05T17:49:39.399Z"
      },
      "dependencyCount": 0,
      "downloadCount": 5252985,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              2460
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.0.11"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              360
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 117,
        "package:extract-tarball": 150,
        "git:clone": 4872,
        "git:tag": 6,
        "git:checkout": 28,
        "package:use-git-repo": 5345,
        "package:npm-install": 3580,
        "setup": 9198,
        "criteria:license": 2513,
        "criteria:security": 106,
        "criteria:readme": 313,
        "criteria:scm": 8,
        "criteria:disk-usage": 50,
        "certification": 2992
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:38 GMT",
      "Content-Length",
      "4183",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=es-abstract&version=1.7.0",
    "body": "",
    "status": 200,
    "response": {
      "name": "es-abstract",
      "version": "1.7.0",
      "description": "ECMAScript spec abstract operations.",
      "keywords": [
        "ECMAScript",
        "ES",
        "abstract",
        "operation",
        "abstract operation",
        "JavaScript",
        "ES5",
        "ES6",
        "ES7"
      ],
      "readme": "#es-abstract <sup>[![Version Badge][npm-version-svg]][package-url]</sup>\n\n[![Build Status][travis-svg]][travis-url]\n[![dependency status][deps-svg]][deps-url]\n[![dev dependency status][dev-deps-svg]][dev-deps-url]\n[![License][license-image]][license-url]\n[![Downloads][downloads-image]][downloads-url]\n\n[![npm badge][npm-badge-png]][package-url]\n\n[![browser support][testling-svg]][testling-url]\n\nECMAScript spec abstract operations.\nWhen different versions of the spec conflict, the default export will be the latest version of the abstract operation.\nAll abstract operations will also be available under an `es5`/`es6`/`es7` exported property if you require a specific version.\n\n## Example\n\n```js\nvar ES = require('es-abstract');\nvar assert = require('assert');\n\nassert(ES.isCallable(function () {}));\nassert(!ES.isCallable(/a/g));\n```\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[package-url]: https://npmjs.org/package/es-abstract\n[npm-version-svg]: http://versionbadg.es/ljharb/es-abstract.svg\n[travis-svg]: https://travis-ci.org/ljharb/es-abstract.svg\n[travis-url]: https://travis-ci.org/ljharb/es-abstract\n[deps-svg]: https://david-dm.org/ljharb/es-abstract.svg\n[deps-url]: https://david-dm.org/ljharb/es-abstract\n[dev-deps-svg]: https://david-dm.org/ljharb/es-abstract/dev-status.svg\n[dev-deps-url]: https://david-dm.org/ljharb/es-abstract#info=devDependencies\n[testling-svg]: https://ci.testling.com/ljharb/es-abstract.png\n[testling-url]: https://ci.testling.com/ljharb/es-abstract\n[npm-badge-png]: https://nodei.co/npm/es-abstract.png?downloads=true&stars=true\n[license-image]: http://img.shields.io/npm/l/es-abstract.svg\n[license-url]: LICENSE\n[downloads-image]: http://img.shields.io/npm/dm/es-abstract.svg\n[downloads-url]: http://npm-stat.com/charts.html?package=es-abstract\n",
      "author": "ljharb",
      "maintainers": [
        "ljharb"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                "mit"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                1812
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.7.0"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                85712
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-17T01:32:24.171Z",
        "published": "2017-01-23T01:26:46.994Z"
      },
      "dependencyCount": 4,
      "downloadCount": 2242938,
      "dependencyList": [
        "es-to-primitive@1.1.1",
        "is-date-object@1.0.1",
        "is-symbol@1.0.1",
        "function-bind@1.1.0",
        "is-callable@1.1.3",
        "is-regex@1.0.3"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              "mit"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              1812
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.7.0"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              85712
            ]
          ]
        }
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:38 GMT",
      "Content-Length",
      "3302",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=es-to-primitive&version=1.1.1",
    "body": "",
    "status": 200,
    "response": {
      "name": "es-to-primitive",
      "version": "1.1.1",
      "description": "ECMAScript “ToPrimitive” algorithm. Provides ES5 and ES6 versions.",
      "keywords": [
        "primitive",
        "abstract",
        "ecmascript",
        "es5",
        "es6",
        "toPrimitive",
        "coerce",
        "type",
        "object"
      ],
      "readme": "# es-to-primitive <sup>[![Version Badge][npm-version-svg]][package-url]</sup>\n\n[![Build Status][travis-svg]][travis-url]\n[![dependency status][deps-svg]][deps-url]\n[![dev dependency status][dev-deps-svg]][dev-deps-url]\n[![License][license-image]][license-url]\n[![Downloads][downloads-image]][downloads-url]\n\n[![npm badge][npm-badge-png]][package-url]\n\n[![browser support][testling-svg]][testling-url]\n\nECMAScript “ToPrimitive” algorithm. Provides ES5 and ES6 versions.\nWhen different versions of the spec conflict, the default export will be the latest version of the abstract operation.\nAlternative versions will also be available under an `es5`/`es6`/`es7` exported property if you require a specific version.\n\n## Example\n\n```js\nvar toPrimitive = require('es-to-primitive');\nvar assert = require('assert');\n\nassert(toPrimitive(function () {}) === String(function () {}));\n\nvar date = new Date();\nassert(toPrimitive(date) === String(date));\n\nassert(toPrimitive({ valueOf: function () { return 3; } }) === 3);\n\nassert(toPrimitive(['a', 'b', 3]) === String(['a', 'b', 3]));\n\nvar sym = Symbol();\nassert(toPrimitive(Object(sym)) === sym);\n```\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[package-url]: https://npmjs.org/package/es-to-primitive\n[npm-version-svg]: http://versionbadg.es/ljharb/es-to-primitive.svg\n[travis-svg]: https://travis-ci.org/ljharb/es-to-primitive.svg\n[travis-url]: https://travis-ci.org/ljharb/es-to-primitive\n[deps-svg]: https://david-dm.org/ljharb/es-to-primitive.svg\n[deps-url]: https://david-dm.org/ljharb/es-to-primitive\n[dev-deps-svg]: https://david-dm.org/ljharb/es-to-primitive/dev-status.svg\n[dev-deps-url]: https://david-dm.org/ljharb/es-to-primitive#info=devDependencies\n[testling-svg]: https://ci.testling.com/ljharb/es-to-primitive.png\n[testling-url]: https://ci.testling.com/ljharb/es-to-primitive\n[npm-badge-png]: https://nodei.co/npm/es-to-primitive.png?downloads=true&stars=true\n[license-image]: http://img.shields.io/npm/l/es-to-primitive.svg\n[license-url]: LICENSE\n[downloads-image]: http://img.shields.io/npm/dm/es-to-primitive.svg\n[downloads-url]: http://npm-stat.com/charts.html?package=es-to-primitive\n",
      "author": "ljharb",
      "maintainers": [
        "ljharb"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                "mit"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                2170
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.1.1"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                73836
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-15T11:36:49.237Z",
        "published": "2016-01-04T02:05:46.641Z"
      },
      "dependencyCount": 3,
      "downloadCount": 2033056,
      "dependencyList": [
        "is-callable@1.1.3",
        "is-date-object@1.0.1",
        "is-symbol@1.0.1"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              "mit"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              2170
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.1.1"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              73836
            ]
          ]
        }
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:38 GMT",
      "Content-Length",
      "3642",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=is-date-object&version=1.0.1",
    "body": "",
    "status": 200,
    "response": {
      "name": "is-date-object",
      "version": "1.0.1",
      "description": "Is this value a JS Date object? This module works cross-realm/iframe, and despite ES6 @@toStringTag.",
      "keywords": [
        "Date",
        "ES6",
        "toStringTag",
        "@@toStringTag",
        "Date object"
      ],
      "readme": "# is-date-object <sup>[![Version Badge][2]][1]</sup>\n\n[![Build Status][3]][4]\n[![dependency status][5]][6]\n[![dev dependency status][7]][8]\n[![License][license-image]][license-url]\n[![Downloads][downloads-image]][downloads-url]\n\n[![npm badge][11]][1]\n\n[![browser support][9]][10]\n\nIs this value a JS Date object? This module works cross-realm/iframe, and despite ES6 @@toStringTag.\n\n## Example\n\n```js\nvar isDate = require('is-date-object');\nvar assert = require('assert');\n\nassert.notOk(isDate(undefined));\nassert.notOk(isDate(null));\nassert.notOk(isDate(false));\nassert.notOk(isDate(true));\nassert.notOk(isDate(42));\nassert.notOk(isDate('foo'));\nassert.notOk(isDate(function () {}));\nassert.notOk(isDate([]));\nassert.notOk(isDate({}));\nassert.notOk(isDate(/a/g));\nassert.notOk(isDate(new RegExp('a', 'g')));\n\nassert.ok(isDate(new Date()));\n```\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[1]: https://npmjs.org/package/is-date-object\n[2]: http://versionbadg.es/ljharb/is-date-object.svg\n[3]: https://travis-ci.org/ljharb/is-date-object.svg\n[4]: https://travis-ci.org/ljharb/is-date-object\n[5]: https://david-dm.org/ljharb/is-date-object.svg\n[6]: https://david-dm.org/ljharb/is-date-object\n[7]: https://david-dm.org/ljharb/is-date-object/dev-status.svg\n[8]: https://david-dm.org/ljharb/is-date-object#info=devDependencies\n[9]: https://ci.testling.com/ljharb/is-date-object.png\n[10]: https://ci.testling.com/ljharb/is-date-object\n[11]: https://nodei.co/npm/is-date-object.png?downloads=true&stars=true\n[license-image]: http://img.shields.io/npm/l/is-date-object.svg\n[license-url]: LICENSE\n[downloads-image]: http://img.shields.io/npm/dm/is-date-object.svg\n[downloads-url]: http://npm-stat.com/charts.html?package=is-date-object\n",
      "author": "ljharb",
      "maintainers": [
        "ljharb"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                1751
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.0.1"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                108704
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-26T06:19:15.190Z",
        "published": "2015-09-27T14:34:57.369Z"
      },
      "dependencyCount": 0,
      "downloadCount": 2090400,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              1751
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.0.1"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              108704
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 157,
        "package:extract-tarball": 171,
        "git:clone": 1456,
        "git:tag": 9,
        "git:checkout": 10,
        "package:use-git-repo": 1959,
        "package:npm-install": 60471,
        "setup": 62767,
        "criteria:license": 14336,
        "criteria:security": 46,
        "criteria:readme": 32,
        "criteria:scm": 1,
        "criteria:disk-usage": 70,
        "certification": 14490
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:39 GMT",
      "Content-Length",
      "3470",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=is-symbol&version=1.0.1",
    "body": "",
    "status": 200,
    "response": {
      "name": "is-symbol",
      "version": "1.0.1",
      "description": "Determine if a value is an ES6 Symbol or not.",
      "keywords": [
        "symbol",
        "es6",
        "is",
        "Symbol"
      ],
      "readme": "#is-symbol <sup>[![Version Badge][2]][1]</sup>\n\n[![Build Status][3]][4]\n[![dependency status][5]][6]\n[![dev dependency status][7]][8]\n[![License][license-image]][license-url]\n[![Downloads][downloads-image]][downloads-url]\n\n[![npm badge][11]][1]\n\n[![browser support][9]][10]\n\nIs this an ES6 Symbol value?\n\n## Example\n\n```js\nvar isSymbol = require('is-symbol');\nassert(!isSymbol(function () {}));\nassert(!isSymbol(null));\nassert(!isSymbol(function* () { yield 42; return Infinity; });\n\nassert(isSymbol(Symbol.iterator));\nassert(isSymbol(Symbol('foo')));\nassert(isSymbol(Symbol.for('foo')));\nassert(isSymbol(Object(Symbol('foo'))));\n```\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[1]: https://npmjs.org/package/is-symbol\n[2]: http://vb.teelaun.ch/ljharb/is-symbol.svg\n[3]: https://travis-ci.org/ljharb/is-symbol.svg\n[4]: https://travis-ci.org/ljharb/is-symbol\n[5]: https://david-dm.org/ljharb/is-symbol.svg\n[6]: https://david-dm.org/ljharb/is-symbol\n[7]: https://david-dm.org/ljharb/is-symbol/dev-status.svg\n[8]: https://david-dm.org/ljharb/is-symbol#info=devDependencies\n[9]: https://ci.testling.com/ljharb/is-symbol.png\n[10]: https://ci.testling.com/ljharb/is-symbol\n[11]: https://nodei.co/npm/is-symbol.png?downloads=true&stars=true\n[license-image]: http://img.shields.io/npm/l/is-symbol.svg\n[license-url]: LICENSE\n[downloads-image]: http://img.shields.io/npm/dm/is-symbol.svg\n[downloads-url]: http://npm-stat.com/charts.html?package=is-symbol\n",
      "author": "ljharb",
      "maintainers": [
        "ljharb"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                1469
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.0.1"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                49032
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-23T09:05:53.450Z",
        "published": "2015-01-26T09:47:09.285Z"
      },
      "dependencyCount": 0,
      "downloadCount": 2123761,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              1469
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.0.1"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              49032
            ]
          ]
        }
      },
      "timings": {
        "package:fetch": 98,
        "package:extract-tarball": 108,
        "git:clone": 2338,
        "git:tag": 4,
        "git:checkout": 7,
        "package:use-git-repo": 2753,
        "package:npm-install": 23258,
        "setup": 26221,
        "criteria:license": 11486,
        "criteria:security": 42,
        "criteria:readme": 29,
        "criteria:scm": 3,
        "criteria:disk-usage": 24,
        "certification": 11586
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:39 GMT",
      "Content-Length",
      "3089",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=is-callable&version=1.1.3",
    "body": "",
    "status": 200,
    "response": {
      "name": "is-callable",
      "version": "1.1.3",
      "description": "Is this JS value callable? Works with Functions and GeneratorFunctions, despite ES6 @@toStringTag.",
      "keywords": [
        "Function",
        "function",
        "callable",
        "generator",
        "generator function",
        "arrow",
        "arrow function",
        "ES6",
        "toStringTag",
        "@@toStringTag"
      ],
      "readme": "# is-callable <sup>[![Version Badge][2]][1]</sup>\n\n[![Build Status][3]][4]\n[![dependency status][5]][6]\n[![dev dependency status][7]][8]\n[![License][license-image]][license-url]\n[![Downloads][downloads-image]][downloads-url]\n\n[![npm badge][11]][1]\n\n[![browser support][9]][10]\n\nIs this JS value callable? Works with Functions and GeneratorFunctions, despite ES6 @@toStringTag.\n\n## Example\n\n```js\nvar isCallable = require('is-callable');\nvar assert = require('assert');\n\nassert.notOk(isCallable(undefined));\nassert.notOk(isCallable(null));\nassert.notOk(isCallable(false));\nassert.notOk(isCallable(true));\nassert.notOk(isCallable([]));\nassert.notOk(isCallable({}));\nassert.notOk(isCallable(/a/g));\nassert.notOk(isCallable(new RegExp('a', 'g')));\nassert.notOk(isCallable(new Date()));\nassert.notOk(isCallable(42));\nassert.notOk(isCallable(NaN));\nassert.notOk(isCallable(Infinity));\nassert.notOk(isCallable(new Number(42)));\nassert.notOk(isCallable('foo'));\nassert.notOk(isCallable(Object('foo')));\n\nassert.ok(isCallable(function () {}));\nassert.ok(isCallable(function* () {}));\nassert.ok(isCallable(x => x * x));\n```\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[1]: https://npmjs.org/package/is-callable\n[2]: http://versionbadg.es/ljharb/is-callable.svg\n[3]: https://travis-ci.org/ljharb/is-callable.svg\n[4]: https://travis-ci.org/ljharb/is-callable\n[5]: https://david-dm.org/ljharb/is-callable.svg\n[6]: https://david-dm.org/ljharb/is-callable\n[7]: https://david-dm.org/ljharb/is-callable/dev-status.svg\n[8]: https://david-dm.org/ljharb/is-callable#info=devDependencies\n[9]: https://ci.testling.com/ljharb/is-callable.png\n[10]: https://ci.testling.com/ljharb/is-callable\n[11]: https://nodei.co/npm/is-callable.png?downloads=true&stars=true\n[license-image]: http://img.shields.io/npm/l/is-callable.svg\n[license-url]: LICENSE\n[downloads-image]: http://img.shields.io/npm/dm/is-callable.svg\n[downloads-url]: http://npm-stat.com/charts.html?package=is-callable\n",
      "author": "ljharb",
      "maintainers": [
        "ljharb"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                1978
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.1.3"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                100648
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-15T18:11:56.036Z",
        "published": "2016-02-28T01:26:19.027Z"
      },
      "dependencyCount": 0,
      "downloadCount": 2052339,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              1978
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.1.3"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              100648
            ]
          ]
        }
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:39 GMT",
      "Content-Length",
      "3456",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=is-regex&version=1.0.4",
    "body": "",
    "status": 200,
    "response": {
      "name": "is-regex",
      "version": "1.0.4",
      "description": "Is this value a JS regex? Works cross-realm/iframe, and despite ES6 @@toStringTag",
      "keywords": [
        "regex",
        "regexp",
        "is",
        "regular expression",
        "regular",
        "expression"
      ],
      "readme": "#is-regex <sup>[![Version Badge][2]][1]</sup>\n\n[![Build Status][3]][4]\n[![dependency status][5]][6]\n[![dev dependency status][7]][8]\n[![License][license-image]][license-url]\n[![Downloads][downloads-image]][downloads-url]\n\n[![npm badge][11]][1]\n\n[![browser support][9]][10]\n\nIs this value a JS regex?\nThis module works cross-realm/iframe, and despite ES6 @@toStringTag.\n\n## Example\n\n```js\nvar isRegex = require('is-regex');\nvar assert = require('assert');\n\nassert.notOk(isRegex(undefined));\nassert.notOk(isRegex(null));\nassert.notOk(isRegex(false));\nassert.notOk(isRegex(true));\nassert.notOk(isRegex(42));\nassert.notOk(isRegex('foo'));\nassert.notOk(isRegex(function () {}));\nassert.notOk(isRegex([]));\nassert.notOk(isRegex({}));\n\nassert.ok(isRegex(/a/g));\nassert.ok(isRegex(new RegExp('a', 'g')));\n```\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[1]: https://npmjs.org/package/is-regex\n[2]: http://versionbadg.es/ljharb/is-regex.svg\n[3]: https://travis-ci.org/ljharb/is-regex.svg\n[4]: https://travis-ci.org/ljharb/is-regex\n[5]: https://david-dm.org/ljharb/is-regex.svg\n[6]: https://david-dm.org/ljharb/is-regex\n[7]: https://david-dm.org/ljharb/is-regex/dev-status.svg\n[8]: https://david-dm.org/ljharb/is-regex#info=devDependencies\n[9]: https://ci.testling.com/ljharb/is-regex.png\n[10]: https://ci.testling.com/ljharb/is-regex\n[11]: https://nodei.co/npm/is-regex.png?downloads=true&stars=true\n[license-image]: http://img.shields.io/npm/l/is-regex.svg\n[license-url]: LICENSE\n[downloads-image]: http://img.shields.io/npm/dm/is-regex.svg\n[downloads-url]: http://npm-stat.com/charts.html?package=is-regex\n\n",
      "author": "ljharb",
      "maintainers": [
        "ljharb"
      ],
      "score": 100,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "mit"
              ],
              [
                "dependencies",
                true,
                "mit"
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "README.md"
              ],
              [
                "readme > 300 characters",
                true,
                1624
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                true,
                "v1.0.4"
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                84088
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-19T22:36:05.780Z",
        "published": "2017-02-18T08:39:40.514Z"
      },
      "dependencyCount": 1,
      "downloadCount": 2253276,
      "dependencyList": [
        "has@1.0.1",
        "function-bind@1.1.0"
      ],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "mit"
            ],
            [
              "dependencies",
              true,
              "mit"
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "README.md"
            ],
            [
              "readme > 300 characters",
              true,
              1624
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              true,
              "v1.0.4"
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              84088
            ]
          ]
        }
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:40 GMT",
      "Content-Length",
      "3049",
      "Connection",
      "Close"
    ]
  },
  {
    "scope": "https://id.registry.nodesource.test:443",
    "method": "GET",
    "path": "/api/v1/package?name=through&version=2.3.8",
    "body": "",
    "status": 200,
    "response": {
      "name": "through",
      "version": "2.3.8",
      "description": "simplified stream construction",
      "keywords": [
        "stream",
        "streams",
        "user-streams",
        "pipe"
      ],
      "readme": "#through\n\n[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through)\n[![testling badge](https://ci.testling.com/dominictarr/through.png)](https://ci.testling.com/dominictarr/through)\n\nEasy way to create a `Stream` that is both `readable` and `writable`. \n\n* Pass in optional `write` and `end` methods.\n* `through` takes care of pause/resume logic if you use `this.queue(data)` instead of `this.emit('data', data)`.\n* Use `this.pause()` and `this.resume()` to manage flow.\n* Check `this.paused` to see current flow state. (`write` always returns `!this.paused`).\n\nThis function is the basis for most of the synchronous streams in \n[event-stream](http://github.com/dominictarr/event-stream).\n\n``` js\nvar through = require('through')\n\nthrough(function write(data) {\n    this.queue(data) //data *must* not be null\n  },\n  function end () { //optional\n    this.queue(null)\n  })\n```\n\nOr, can also be used _without_ buffering on pause, use `this.emit('data', data)`,\nand this.emit('end')\n\n``` js\nvar through = require('through')\n\nthrough(function write(data) {\n    this.emit('data', data)\n    //this.pause() \n  },\n  function end () { //optional\n    this.emit('end')\n  })\n```\n\n## Extended Options\n\nYou will probably not need these 99% of the time.\n\n### autoDestroy=false\n\nBy default, `through` emits close when the writable\nand readable side of the stream has ended.\nIf that is not desired, set `autoDestroy=false`.\n\n``` js\nvar through = require('through')\n\n//like this\nvar ts = through(write, end, {autoDestroy: false})\n//or like this\nvar ts = through(write, end)\nts.autoDestroy = false\n```\n\n## License\n\nMIT / Apache2\n",
      "author": "dominictarr",
      "maintainers": [
        "dominictarr"
      ],
      "score": 93,
      "results": {
        "critical": [
          {
            "name": "license",
            "tests": [
              [
                "package",
                true,
                "apache-1.1"
              ],
              [
                "dependencies",
                true,
                null
              ]
            ]
          }
        ],
        "major": [
          {
            "name": "security",
            "tests": [
              [
                "vulnerabilities",
                true,
                "0"
              ]
            ]
          }
        ],
        "minor": [
          {
            "name": "readme",
            "tests": [
              [
                "readme exists",
                1,
                "readme.markdown"
              ],
              [
                "readme > 300 characters",
                true,
                1665
              ]
            ]
          },
          {
            "name": "public source control",
            "tests": [
              [
                "has matching tag",
                false,
                null
              ]
            ]
          },
          {
            "name": "disk usage",
            "tests": [
              [
                "bytes used less than 26214400",
                true,
                744
              ]
            ]
          }
        ],
        "bonus": []
      },
      "times": {
        "certified": "2017-02-21T14:45:19.891Z",
        "published": "2017-02-21T08:27:56.848Z"
      },
      "dependencyCount": 0,
      "downloadCount": 9736638,
      "dependencyList": [],
      "raw_results": {
        "license": {
          "name": "license",
          "tests": [
            [
              "package",
              true,
              "apache-1.1"
            ],
            [
              "dependencies",
              true,
              null
            ]
          ]
        },
        "security": {
          "name": "security",
          "tests": [
            [
              "vulnerabilities",
              true,
              "0"
            ]
          ]
        },
        "readme": {
          "name": "readme",
          "tests": [
            [
              "readme exists",
              1,
              "readme.markdown"
            ],
            [
              "readme > 300 characters",
              true,
              1665
            ]
          ]
        },
        "scm": {
          "name": "public source control",
          "tests": [
            [
              "has matching tag",
              false,
              null
            ]
          ]
        },
        "disk-usage": {
          "name": "disk usage",
          "tests": [
            [
              "bytes used less than 26214400",
              true,
              744
            ]
          ]
        }
      }
    },
    "rawHeaders": [
      "Date",
      "Tue, 14 Mar 2017 22:37:40 GMT",
      "Content-Length",
      "3013",
      "Connection",
      "Close"
    ]
  }
]
