@nodesecure/npm-registry-sdk
v3.0.0
Published
Node.js SDK to fetch data from the npm API.
Downloads
668
Keywords
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 or yarn.
$ npm i @nodesecure/npm-registry-sdk
# or
$ yarn add @nodesecure/npm-registry-sdk
Usage example
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.
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
interface LoadRegistryMixins {
spawn?: typeof spawnSync;
}
metadata(): Promise<NpmRegistryMetadata>
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<Packument>
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<PackumentVersion>
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 >
interface NpmPackageDownload {
downloads: number;
start: string;
end: string;
package: string;
}
user(username: string, pagination: Partial< Pagination > = {}): Promise< NpmUserProfile >
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 ✨
Thanks goes to these wonderful people (emoji key):
License
MIT