Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

NodeSecure/npm-registry-sdk

Open more actions menu

Repository files navigation

@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 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?: PackumentRegistryApiOptions): 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?: PackumentRegistryApiOptions): 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;
}

keys(): Promise< RegistryKey[] >

export interface RegistryKey {
  keyid: string;
  keytype: string; 
  scheme: string;
  key: string;
  pemkey: string;
  expires: string | null;
}

packageDistTags(pkgName: string, options?: DefaultRegistryApiOptions): Promise

export interface DistTags {
  latest: string;
  next?: string;
  canary?: string;
  rc?: string;
  beta?: string;
  alpha?: string;
  experimental?: string;
}

tarballDownload(name: string,version, options?: DefaultRegistryApiOptions): NodeJS.ReadableStream

org(namespace: string): Promise

export type PermissionLevel = "read" | "write" | "admin" | "maintain";

export type NpmPackageOrg = Record<string, PermissionLevel>;

Contributors ✨

All Contributors

Thanks goes to these wonderful people (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

💻 ⚠️ 📖
Clement Gombauld
Clement Gombauld

💻

License

MIT

About

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

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Contributors 16

Morty Proxy This is a proxified and sanitized view of the page, visit original site.