Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 3 months ago
JSON representation
Node.js SDK to fetch data from the npm API.
- Host: GitHub
- URL: https://github.com/NodeSecure/npm-registry-sdk
- Owner: NodeSecure
- License: mit
- Created: 2021-06-05T13:04:33.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-04-01T00:43:39.000Z (7 months ago)
- Last Synced: 2024-04-26T01:32:12.916Z (7 months ago)
- Topics: npm, registry, sdk
- Language: TypeScript
- Homepage:
- Size: 375 KB
- Stars: 9
- Watchers: 2
- Forks: 9
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
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
💻 📖 👀 🛡️ 🐛
Quentin Lepateley
💻 📖 👀
Nicolas Hallaert
📖
tekeuange23
💻
Tony Gorez
💻
hiroki osame
💻
Kouadio Fabrice Nguessan
🚧
PierreDemailly
💻 📖 ⚠️
Kishore
💻 ⚠️ 📖
## License
MIT