Skip to content

NodeSecure/npm-registry-sdk

Folders and files

NameName
Last commit message
Last commit date
Mar 1, 2025
Dec 31, 2024
Jul 5, 2024
Dec 12, 2023
Jun 6, 2021
Aug 8, 2021
Jun 18, 2022
Jan 25, 2023
Jun 13, 2022
Jan 5, 2025
Dec 12, 2023
Jan 18, 2023
Dec 31, 2024
Feb 24, 2025
Dec 31, 2024

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?: 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 ✨

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

πŸ’» ⚠️ πŸ“–

License

MIT