Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/NodeSecure/npm-registry-sdk

Node.js SDK to fetch data from the npm API.
https://github.com/NodeSecure/npm-registry-sdk

npm registry sdk

Last synced: about 1 month ago
JSON representation

Node.js SDK to fetch data from the npm API.

Awesome Lists containing this project

README

        


@nodesecure/npm-registry-sdk



npm version


maintenance


license


ossf scorecard


github ci workflow

Node.js SDK to fetch data from the npm API (with up to date TypeScript types)

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @nodesecure/npm-registry-sdk
# or
$ yarn add @nodesecure/npm-registry-sdk
```

## Usage example

```ts
import * as Npm from "@nodesecure/npm-registry-sdk";

const packument: Npm.Packument = await Npm.packument("express");
console.log(packument);
```

packument and packumentVersion take an optional payload options which can be used to provide an NPM token.

```ts
import * as Npm from "@nodesecure/npm-registry-sdk";

const user: NpmUserProfile = await Npm.user("test-user");
console.log(user);
```

user takes an optional payload pagination which can be used to set page number and page size to be used for paginated properties of the user like pacakges.
## API

### getNpmRegistryURL(): string

### getLocalRegistryURL(): string

### setLocalRegistryURL(value: string | URL): string

### loadRegistryURLFromLocalSystem(mixins?: LoadRegistryMixins): string

```ts
interface LoadRegistryMixins {
spawn?: typeof spawnSync;
}
```

### metadata(): Promise\

```ts
interface NpmRegistryMetadata {
db_name: string;
doc_count: number;
doc_del_count: number;
update_seq: number;
purge_seq: number;
compact_running: boolean;
disk_size: number;
data_size: number;
instance_start_time: string;
disk_format_version: number;
committed_update_seq: number;
}
```

### packument(name: string, options?: PackumentOptions): Promise\

```ts
interface Packument {
_id: string;
_rev: string;
name: string;
readme?: string;
description?: string;
'dist-tags': { latest?: string } & ObjectOfStrings;
versions: {
[key: string]: PackumentVersion
};
maintainers: Maintainer[];
time: {
modified: string,
created: string,
[key: string]: string
};
users?: {
[key: string]: boolean;
}
contributors?: Maintainer[];
homepage?: string;
keywords?: string[];
repository?: Repository;
author?: Maintainer;
bugs?: { url: string };
license: string;
// left out users (stars) deprecated, and attachments (does nothing)
readmeFilename?: string;
}
```

### packumentVersion(name: string, version: string, options?: PackumentOptions): Promise\

```ts
type PackumentVersion = PackageJson & {
gitHead?: string;
maintainers: Maintainer[];
dist: Dist;
types?: string;
deprecated?: string;
_id: string;
_npmVersion: string;
_nodeVersion: string;
_npmUser: Maintainer;
_hasShrinkwrap?: boolean;
_engineSupported?: boolean;
_defaultsLoaded?: boolean;
_npmOperationalInternal?: {
host: string;
tmp: string;
}
};
```

### downloads(pkgName: string, period: Period = "last-week"): Promise< NpmPackageDownload >

```ts
interface NpmPackageDownload {
downloads: number;
start: string;
end: string;
package: string;
}
```

### user(username: string, pagination: Partial< Pagination > = {}): Promise< NpmUserProfile >

```ts
interface Pagination {
perPage: number;
page: number;
}

interface NpmPackage {
id: number;
name: string;
description: string;
maintainers: string[];
version: string;
}

interface NpmUserProfile {
id: number;
name: string;
fullname?: string;
accounts: {
twitter?: string;
github?: string;
};
avatars: {
small: string;
medium: string;
large: string;
};
packages: {
total: number;
objects: NpmPackage[];
urls: {
next: string;
prev: string;
}
};
pagination: Pagination;
}
```

## Contributors ✨

[![All Contributors](https://img.shields.io/badge/all_contributors-9-orange.svg?style=flat-square)](#contributors-)

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):



Gentilhomme
Gentilhomme

💻 📖 👀 🛡️ 🐛
Quentin Lepateley
Quentin Lepateley

💻 📖 👀
Nicolas Hallaert
Nicolas Hallaert

📖
tekeuange23
tekeuange23

💻
Tony Gorez
Tony Gorez

💻
hiroki osame
hiroki osame

💻
Kouadio Fabrice Nguessan
Kouadio Fabrice Nguessan

🚧


PierreDemailly
PierreDemailly

💻 📖 ⚠️
Kishore
Kishore

💻 ⚠️ 📖

## License

MIT