{
  "name": "npm-package-arg",
  "version": "2.1.3",
  "description": "Parse the things that can be arguments to `npm install`",
  "main": "npa.js",
  "directories": {
    "test": "test"
  },
  "dependencies": {
    "semver": "4"
  },
  "devDependencies": {
    "tap": "^0.4.9"
  },
  "scripts": {
    "test": "tap test/*.js"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/npm/npm-package-arg"
  },
  "author": {
    "name": "Isaac Z. Schlueter",
    "email": "i@izs.me",
    "url": "http://blog.izs.me/"
  },
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/npm/npm-package-arg/issues"
  },
  "homepage": "https://github.com/npm/npm-package-arg",
  "readme": "# npm-package-arg\n\nParse the things that can be arguments to `npm install`\n\nTakes an argument like `foo@1.2`, or `foo@user/foo`, or\n`http://x.com/foo.tgz`, or `git+https://github.com/user/foo`, and\nfigures out what type of thing it is.\n\n## USAGE\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(\"foo@1.2\")\n\n// Returns an object like:\n// {\n//  name: \"foo\",  // The bit in front of the @\n//  type: \"range\", // the type of descriptor this is\n//  spec: \"1.2\" // the specifier for this descriptor\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\nFor more examples, see the test file.\n\n## Result Objects\n\nThe objects that are returned by npm-package-arg contain the following\nfields:\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  * `github` - A github shorthand, like `user/project`\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* `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",
  "readmeFilename": "README.md",
  "gitHead": "9aaabc2aae746371a05f54cdb57a5f9ada003d8f",
  "_id": "npm-package-arg@2.1.3",
  "_shasum": "dfba34bd82dd327c10cb43a65c8db6ef0b812bf7",
  "_from": "npm-package-arg@~2.1.3"
}
