Node.js SDK to fetch data from the npm API.
npm install @nodesecure/npm-registry-sdk
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
$3
$3
$3
$3
`ts
interface LoadRegistryMixins {
spawn?: typeof spawnSync;
}
`
$3
`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;
}
`
$3
`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;
}
`
$3
`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;
}
};
`
$3
`ts
interface NpmPackageDownload {
downloads: number;
start: string;
end: string;
package: string;
}
`
$3
`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;
}
`
$3
`ts
export interface RegistryKey {
keyid: string;
keytype: string;
scheme: string;
key: string;
pemkey: string;
expires: string | null;
}
`
$3
`ts
export interface DistTags {
latest: string;
next?: string;
canary?: string;
rc?: string;
beta?: string;
alpha?: string;
experimental?: string;
}
`
$3
$3
`ts
export type PermissionLevel = "read" | "write" | "admin" | "maintain";
export type NpmPackageOrg = Record;
``
Gentilhomme 💻 📖 👀 🛡️ 🐛 |
Quentin Lepateley 💻 📖 👀 |
Nicolas Hallaert 📖 |
tekeuange23 💻 |
Tony Gorez 💻 |
hiroki osame 💻 |
Kouadio Fabrice Nguessan 🚧 |
PierreDemailly 💻 📖 ⚠️ |
Kishore 💻 ⚠️ 📖 |
Clement Gombauld 💻 |