{
  "_args": [
    [
      {
        "raw": "npm-package-arg@^4.1.1",
        "scope": null,
        "escapedName": "npm-package-arg",
        "name": "npm-package-arg",
        "rawSpec": "^4.1.1",
        "spec": ">=4.1.1 <5.0.0",
        "type": "range"
      },
      "/home/travis/build/lukesargeant/ember-sparkline/node_modules/ember-cli"
    ]
  ],
  "_from": "npm-package-arg@>=4.1.1 <5.0.0",
  "_id": "npm-package-arg@4.2.1",
  "_inCache": true,
  "_location": "/npm-package-arg",
  "_nodeVersion": "7.7.1",
  "_npmOperationalInternal": {
    "host": "packages-18-east.internal.npmjs.com",
    "tmp": "tmp/npm-package-arg-4.2.1.tgz_1488928211600_0.17898930050432682"
  },
  "_npmUser": {
    "name": "zkat",
    "email": "kat@sykosomatic.org"
  },
  "_npmVersion": "4.1.2",
  "_phantomChildren": {},
  "_requested": {
    "raw": "npm-package-arg@^4.1.1",
    "scope": null,
    "escapedName": "npm-package-arg",
    "name": "npm-package-arg",
    "rawSpec": "^4.1.1",
    "spec": ">=4.1.1 <5.0.0",
    "type": "range"
  },
  "_requiredBy": [
    "/ember-cli"
  ],
  "_resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-4.2.1.tgz",
  "_shasum": "593303fdea85f7c422775f17f9eb7670f680e3ec",
  "_shrinkwrap": null,
  "_spec": "npm-package-arg@^4.1.1",
  "_where": "/home/travis/build/lukesargeant/ember-sparkline/node_modules/ember-cli",
  "author": {
    "name": "Isaac Z. Schlueter",
    "email": "i@izs.me",
    "url": "http://blog.izs.me/"
  },
  "bugs": {
    "url": "https://github.com/npm/npm-package-arg/issues"
  },
  "dependencies": {
    "hosted-git-info": "^2.1.5",
    "semver": "^5.1.0"
  },
  "description": "Parse the things that can be arguments to `npm install`",
  "devDependencies": {
    "standard": "^7.1.2",
    "tap": "^5.7.2"
  },
  "directories": {
    "test": "test"
  },
  "dist": {
    "shasum": "593303fdea85f7c422775f17f9eb7670f680e3ec",
    "tarball": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-4.2.1.tgz"
  },
  "files": [
    "npa.js"
  ],
  "gitHead": "2fa53ce9c3a000626e58c115205d4049c5b1ef42",
  "homepage": "https://github.com/npm/npm-package-arg",
  "license": "ISC",
  "main": "npa.js",
  "maintainers": [
    {
      "name": "iarna",
      "email": "me@re-becca.org"
    },
    {
      "name": "isaacs",
      "email": "i@izs.me"
    },
    {
      "name": "othiym23",
      "email": "ogd@aoaioxxysz.net"
    },
    {
      "name": "zkat",
      "email": "kat@sykosomatic.org"
    }
  ],
  "name": "npm-package-arg",
  "optionalDependencies": {},
  "readme": "# npm-package-arg\n\nParse package name and specifier passed to commands like `npm install` or\n`npm cache add`.  This just parses the text given-- it's worth noting that\n`npm` has further logic it applies by looking at your disk to figure out\nwhat ambiguous specifiers are.  If you want that logic, please see\n[realize-package-specifier].\n\n[realize-package-specifier]: https://www.npmjs.org/package/realize-package-specifier\n\nArguments look like: `foo@1.2`, `@bar/foo@1.2`, `foo@user/foo`, `http://x.com/foo.tgz`,\n`git+https://github.com/user/foo`, `bitbucket:user/foo`, `foo.tar.gz` or `bar`\n\n## EXAMPLES\n\n```javascript\nvar assert = require(\"assert\")\nvar npa = require(\"npm-package-arg\")\n\n// Pass in the descriptor, and it'll return an object\nvar parsed = npa(\"@bar/foo@1.2\")\n\n// Returns an object like:\n{\n  raw: '@bar/foo@1.2',       // what was passed in\n  name: '@bar/foo',          // the name of the package\n  escapedName: '@bar%2ffoo', // the escaped name, for making requests against a registry\n  scope: '@bar',             // the scope of the package, or null\n  type: 'range',             // the type of specifier this is\n  spec: '>=1.2.0 <1.3.0',    // the expanded specifier\n  rawSpec: '1.2'             // the specifier as passed in\n }\n\n// Parsing urls pointing at hosted git services produces a variation:\nvar parsed = npa(\"git+https://github.com/user/foo\")\n\n// Returns an object like:\n{\n  raw: 'git+https://github.com/user/foo',\n  scope: null,\n  name: null,\n  escapedName: null,\n  rawSpec: 'git+https://github.com/user/foo',\n  spec: 'user/foo',\n  type: 'hosted',\n  hosted: {\n    type: 'github',\n    ssh: 'git@github.com:user/foo.git',\n    sshurl: 'git+ssh://git@github.com/user/foo.git',\n    https: 'https://github.com/user/foo.git',\n    directUrl: 'https://raw.githubusercontent.com/user/foo/master/package.json'\n  }\n}\n\n// Completely unreasonable invalid garbage throws an error\n// Make sure you wrap this in a try/catch if you have not\n// already sanitized the inputs!\nassert.throws(function() {\n  npa(\"this is not \\0 a valid package name or url\")\n})\n```\n\n## USING\n\n`var npa = require('npm-package-arg')`\n\n* var result = npa(*arg*)\n\nParses *arg* and returns a result object detailing what *arg* is.\n\n*arg* -- a package descriptor, like: `foo@1.2`, or `foo@user/foo`, or\n`http://x.com/foo.tgz`, or `git+https://github.com/user/foo`\n\n## RESULT OBJECT\n\nThe objects that are returned by npm-package-arg contain the following\nkeys:\n\n* `name` - If known, the `name` field expected in the resulting pkg.\n* `type` - One of the following strings:\n  * `git` - A git repo\n  * `hosted` - A hosted project, from github, bitbucket or gitlab. Originally\n    either a full url pointing at one of these services or a shorthand like\n    `user/project` or `github:user/project` for github or `bitbucket:user/project`\n    for bitbucket.\n  * `tag` - A tagged version, like `\"foo@latest\"`\n  * `version` - A specific version number, like `\"foo@1.2.3\"`\n  * `range` - A version range, like `\"foo@2.x\"`\n  * `local` - A local file or folder path\n  * `remote` - An http url (presumably to a tgz)\n* `spec` - The \"thing\".  URL, the range, git repo, etc.\n* `hosted` - If type=hosted this will be an object with the following keys:\n  * `type` - github, bitbucket or gitlab\n  * `ssh` - The ssh path for this git repo\n  * `sshUrl` - The ssh URL for this git repo\n  * `httpsUrl` - The HTTPS URL for this git repo\n  * `directUrl` - The URL for the package.json in this git repo\n* `raw` - The original un-modified string that was provided.\n* `rawSpec` - The part after the `name@...`, as it was originally\n  provided.\n* `scope` - If a name is something like `@org/module` then the `scope`\n  field will be set to `@org`.  If it doesn't have a scoped name, then\n  scope is `null`.\n* `escapedName` - A version of `name` escaped to match the npm scoped packages\n  specification. Mostly used when making requests against a registry. When\n  `name` is `null`, `escapedName` will also be `null`.\n\nIf you only include a name and no specifier part, eg, `foo` or `foo@` then\na default of `latest` will be used (as of 4.1.0). This is contrast with\nprevious behavior where `*` was used.\n",
  "readmeFilename": "README.md",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/npm/npm-package-arg.git"
  },
  "scripts": {
    "test": "standard && tap --coverage test/*.js"
  },
  "version": "4.2.1"
}
