{
  "name": "npm-package-arg",
  "version": "4.0.1",
  "description": "Parse the things that can be arguments to `npm install`",
  "main": "npa.js",
  "directories": {
    "test": "test"
  },
  "dependencies": {
    "hosted-git-info": "^2.1.4",
    "semver": "4"
  },
  "devDependencies": {
    "tap": "^0.4.9"
  },
  "scripts": {
    "test": "tap test/*.js"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/npm/npm-package-arg.git"
  },
  "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 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  scope: \"@bar\",         // the private 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  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",
  "readmeFilename": "README.md",
  "gitHead": "794c9981033bb16bd4a88c7ba45c109107439172",
  "_id": "npm-package-arg@4.0.1",
  "_shasum": "bfbea17cd2b9fdc4fca2f02796794173dbf1877c",
  "_from": "npm-package-arg@>=4.0.0 <4.1.0"
}
