# npm-api [](https://www.npmjs.com/package/npm-api) [](https://npmjs.org/package/npm-api) [](https://npmjs.org/package/npm-api) [](https://travis-ci.org/doowb/npm-api)
> Base class for retrieving data from the npm registry.
Please consider following this project's author, [Brian Woodward](https://github.com/doowb), and consider starring the project to show your :heart: and support.
## Install
Install with [npm](https://www.npmjs.com/):
```sh
$ npm install --save npm-api
```
## Usage
```js
var NpmApi = require('npm-api');
```
## API
### [NpmApi](index.js#L27)
NpmApi constructor. Create an instance to work with maintainer and repository information.
**Example**
```js
var npm = new NpmApi();
```
### [.view](index.js#L65)
Create a new instance of `View` or get an existing instance to work with npm couchdb views.
**Params**
* `name` **{String}**: Name of the couchdb view to work with.
* `returns` **{Object}** `View`: instance
**Example**
```js
var view = npm.view('byUser');
```
### [.list](index.js#L88)
Create a new instance of `List` or get an existing instance to work with npm couchdb list.
**Params**
* `name` **{String}**: Name of the couchdb list to work with.
* `view` **{String|Object}**: Name or instance of a `view` to work with.
* `returns` **{Object}** `List`: instance
**Example**
```js
var list = npm.list('sortCount', 'byUser');
```
### [.repo](index.js#L119)
Create an instance of a `repo` to work with.
**Params**
* `name` **{String}**: Name of the repo as it's published to npm.
* `returns` **{Object}**: Instance of a `Repo` model to work with.
**Example**
```js
var repo = npm.repo('micromatch');
```
### [.maintainer](index.js#L142)
Create an instance of a `maintainer` to work with.
**Params**
* `name` **{String}**: Npm username of the maintainer.
* `returns` **{Object}**: Instance of a `Maintainer` model to work with.
**Example**
```js
var maintainer = npm.maintainer('doowb');
```
## Models
### [BaseModel](lib/models/base.js#L24)
Base model to include common plugins.
**Params**
* `store` **{Object}**: Cache store instance to use.
### [Maintainer](lib/models/maintainer.js#L25)
Maintainer constructor. Create an instance of an npm maintainer by maintainer name.
**Params**
* `name` **{String}**: Name of the npm maintainer to get information about.
* `store` **{Object}**: Optional cache store instance for caching results. Defaults to a memory store.
**Example**
```js
var maintainer = new Maintainer('doowb');
```
### [.repos](lib/models/maintainer.js#L56)
Get the repositories owned by this maintainer.
* `returns` **{Promise}**: Returns array of repository names when promise resolves.
**Example**
```js
maintainer.repos()
.then(function(repos) {
console.log(repos);
}, function(err) {
console.error(err);
});
```
### [Repo](lib/models/repo.js#L26)
Repo constructor. Create an instance of an npm repo by repo name.
**Params**
* `name` **{String}**: Name of the npm repo to get information about.
* `store` **{Object}**: Optional cache store instance for caching results. Defaults to a memory store.
**Example**
```js
var repo = new Repo('micromatch');
```
### [.package](lib/models/repo.js#L57)
Get the repo's published package.json.
* `returns` **{Promise}**: Returns the package.json object when promise resolves.
**Example**
```js
repo.package()
.then(function(pkg) {
console.log(pkg);
}, function(err) {
console.error(err);
});
```
### [.version](lib/models/repo.js#L89)
Get the repo's published package.json value for the specified version.
**Params**
* `version` **{String}**: Specific version to retrieve.
* `returns` **{Promise}**: Returns the package.json object for the specified version when promise resolves.
**Example**
```js
repo.version('0.2.0')
.then(function(pkg) {
console.log(pkg);
}, function(err) {
console.error(err);
});
```
### [.dependencies](lib/models/repo.js#L118)
Get the repo's dependencies for the specified version.
**Params**
* `version` **{String}**: Specific version to retrieve. Defaults to `latest`.
* `returns` **{Promise}**: Returns the dependencies object for the specified version when promise resolves.
**Example**
```js
repo.dependencies()
.then(function(dependencies) {
console.log(dependencies);
}, function(err) {
console.error(err);
});
```
### [.devDependencies](lib/models/repo.js#L138)
Get the repo's devDependencies for the specified version.
**Params**
* `version` **{String}**: Specific version to retrieve. Defaults to `latest`.
* `returns` **{Promise}**: Returns the devDependencies object for the specified version when promise resolves.
**Example**
```js
repo.devDependencies()
.then(function(devDependencies) {
console.log(devDependencies);
}, function(err) {
console.error(err);
});
```
### [.prop](lib/models/repo.js#L159)
Get the specified property from the repo's package.json for the specified version.
**Params**
* `prop` **{String}**: Name of the property to get.
* `version` **{String}**: Specific version to retrieve. Defaults to `latest`.
* `returns` **{Promise}**: Returns the property for the specified version when promise resolves.
**Example**
```js
repo.prop('author')
.then(function(author) {
console.log(author);
}, function(err) {
console.error(err);
});
```
## Registry queries
### [View](lib/view.js#L26)
View constructor. Create an instance of a view associated with a couchdb view in the npm registry.
**Params**
* `name` **{String}**: Name of couchdb view to use.
* `returns` **{Object}**: instance of `View`
**Example**
```js
var view = new View('dependedUpon');
```
### [.query](lib/view.js#L51)
Query the couchdb view with the provided parameters.
**Params**
* `params` **{Object}**: URL query parameters to pass along to the couchdb view.
* `returns` **{Promise}**: Results of the query when promise is resolved.
**Example**
```js
view.query({ group_level: 2, startkey: JSON.stringify(['micromatch']), endkey: JSON.stringify(['micromatch', {}])})
.then(function(results) {
console.log(results);
}, function(err) {
console.log(err);
});
```
### [.stream](lib/view.js#L91)
Query the couchdb view with the provided parameters and return a stream of results.
**Params**
* `params` **{Object}**: URL query parameters to pass along to the couchdb view.
* `returns` **{Stream}**: Streaming results of the query.
**Example**
```js
view.stream({ group_level: 2, startkey: JSON.stringify(['micromatch']), endkey: JSON.stringify(['micromatch', {}])})
.on('data', function(data) {
console.log(data);
});
```
### [.url](lib/view.js#L105)
Build a formatted url with the provided parameters.
**Params**
* `params` **{Object}**: URL query parameters.
* `returns` **{String}**: formatted url string
### [List](lib/list.js#L27)
List constructor. Create an instance of a list associated with a couchdb list in the npm registry.
**Params**
* `name` **{String}**: Name of couchdb list to use.
* `view` **{Object}**: Instance of a View to use with the list.
* `returns` **{Object}**: instance of `List`
**Example**
```js
var list = new List('dependedUpon', view);
```
### [.query](lib/list.js#L53)
Query the couchdb list with the provided parameters.
**Params**
* `params` **{Object}**: URL query parameters to pass along to the couchdb list.
* `returns` **{Promise}**: Results of the query when promise is resolved.
**Example**
```js
list.query({ key: JSON.stringify(['micromatch']) })
.then(function(results) {
console.log(results);
}, function(err) {
console.log(err);
});
```
### [.url](lib/list.js#L80)
Build a formatted url with the provided parameters.
**Params**
* `params` **{Object}**: URL query parameters.
* `returns` **{String}**: formatted url string
## About
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
Running Tests
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
```sh
$ npm install && npm test
```
Building docs
_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
To generate the readme, run the following command:
```sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
```
### Related projects
You might also be interested in these projects:
* [base](https://www.npmjs.com/package/base): Framework for rapidly creating high quality, server-side node.js applications, using plugins like building blocks | [homepage](https://github.com/node-base/base "Framework for rapidly creating high quality, server-side node.js applications, using plugins like building blocks")
* [download-stats](https://www.npmjs.com/package/download-stats): Get and calculate npm download stats for npm modules. | [homepage](https://github.com/doowb/download-stats "Get and calculate npm download stats for npm modules.")
### Contributors
| **Commits** | **Contributor** |
| --- | --- |
| 106 | [doowb](https://github.com/doowb) |
| 1 | [0xflotus](https://github.com/0xflotus) |
| 1 | [NachmanBerkowitz](https://github.com/NachmanBerkowitz) |
### Author
**Brian Woodward**
* [GitHub Profile](https://github.com/doowb)
* [Twitter Profile](https://twitter.com/doowb)
* [LinkedIn Profile](https://linkedin.com/in/woodwardbrian)
### License
Copyright © 2019, [Brian Woodward](https://github.com/doowb).
Released under the [MIT License](LICENSE).
***
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on June 17, 2019._