UNPKG

@verdaccio/types

Version:

Verdaccio Type Definitions

311 lines (280 loc) 7.23 kB
export interface PackageAccess { storage?: string; publish?: string[]; proxy?: string[]; access?: string[]; unpublish?: string[] | boolean; // false means fallback to publish access } export interface PackageList { [key: string]: PackageAccess; } export interface MergeTags { [key: string]: string; } export interface DistFile { url: string; sha: string; registry?: string; } export interface DistFiles { [key: string]: DistFile; } export interface Token { user: string; token: string; key: string; cidr?: string[]; readonly: boolean; created: number | string; updated?: number | string; } export interface AttachMents { [key: string]: AttachMentsItem; } export interface AttachMentsItem { content_type?: string; data?: string; length?: number; shasum?: string; version?: string; } export interface GenericBody { [key: string]: string; } export interface UpLinkMetadata { etag: string; fetched: number; } export interface UpLinks { [key: string]: UpLinkMetadata; } export interface Signatures { keyid: string; sig: string; } export interface Dist { 'npm-signature'?: string; signatures?: Signatures[]; fileCount?: number; integrity?: string; shasum: string; unpackedSize?: number; tarball: string; } export interface Author { username?: string; name: string; email?: string; url?: string; _avatar?: string; // for web ui } export type Person = Author | string; export interface PackageUsers { [key: string]: boolean; } export interface Tags { [key: string]: Version; } export interface PeerDependenciesMeta { [dependencyName: string]: { optional?: boolean; }; } export interface Version { name: string; version: string; directories?: any; dist: Dist; author: Person; main: string; homemage?: string; license?: string; readme: string; readmeFileName?: string; readmeFilename?: string; description: string; bin?: string; bugs?: any; files?: string[]; gitHead?: string; maintainers?: Person[]; contributors?: Person[]; repository?: string | any; scripts?: any; homepage?: string; etag?: string; dependencies?: Dependencies; peerDependencies?: Dependencies; devDependencies?: Dependencies; optionalDependencies?: Dependencies; peerDependenciesMeta?: PeerDependenciesMeta; bundleDependencies?: string[]; acceptDependencies?: Dependencies; keywords?: string | string[]; nodeVersion?: string; _id: string; _npmVersion?: string; _npmUser: Author; _hasShrinkwrap?: boolean; deprecated?: string; funding?: { type: string; url: string }; engines?: Engines; hasInstallScript?: boolean; cpu?: string[]; os?: string[]; } export interface Dependencies { [key: string]: string; } export interface Engines { [key: string]: string; } export interface Versions { [key: string]: Version; } /** * @deprecated use Manifest instead */ export interface Package { _id?: string; name: string; versions: Versions; 'dist-tags': GenericBody; time: GenericBody; readme?: string; users?: PackageUsers; _distfiles: DistFiles; _attachments: AttachMents; _uplinks: UpLinks; _rev: string; } /** * Represents upstream manifest from another registry */ export interface FullRemoteManifest { _id?: string; _rev?: string; name: string; description?: string; 'dist-tags': GenericBody; time: GenericBody; versions: Versions; /** store owners of this package */ maintainers?: Person[]; contributors?: Person[]; /** store the latest readme **/ readme?: string; /** store star assigned to this packages by users */ users?: PackageUsers; // TODO: not clear what access exactly means access?: any; bugs?: { url: string }; license?: string; homepage?: string; repository?: string | { type?: string; url: string; directory?: string }; keywords?: string[]; author?: Person; } export interface Manifest extends FullRemoteManifest, PublishManifest { // private fields only used by verdaccio /** * store fast access to the dist url of an specific tarball, instead search version * by id, just the tarball id is faster. * * The _distfiles is created only when a package is being sync from an upstream. * also used to fetch tarballs from upstream, the private publish tarballs are not stored in * this object because they are not published in the upstream registry. */ _distfiles: DistFiles; /** * Store access cache metadata, to avoid to fetch the same metadata multiple times. * * The key represents the uplink id which is composed of a etag and a fetched timestamp. * * The fetched timestamp is the time when the metadata was fetched, used to avoid to fetch the * same metadata until the metadata is older than the last fetch. */ _uplinks: UpLinks; /** * store the revision of the manifest */ _rev: string; } export type AbbreviatedVersion = Pick< Version, | 'name' | 'version' | 'dependencies' | 'devDependencies' | 'bin' | 'dist' | 'engines' | 'funding' | 'peerDependencies' | 'cpu' | 'deprecated' | 'directories' | 'hasInstallScript' | 'optionalDependencies' | 'os' | 'peerDependenciesMeta' | 'acceptDependencies' | '_hasShrinkwrap' >; export interface AbbreviatedVersions { [key: string]: AbbreviatedVersion; } /** * */ export type AbbreviatedManifest = Pick<Manifest, 'name' | 'dist-tags' | 'time'> & { modified: string; versions: AbbreviatedVersions; }; /** * */ export type UnPublishManifest = Omit<Manifest, '_attachments' | '_distfiles' | '_uplinks'>; export interface Publisher { name: string; groups?: string[]; real_groups?: string[]; } export interface PublishManifest { /** * The `_attachments` object has different usages: * * - When a package is published, it contains the tarball as an string, this string is used to be * converted as a tarball, usually attached to the package but not stored in the database. * - If user runs `npm star` the _attachments will be at the manifest body but empty. * * It has also an internal usage: * * - Used as a cache for the tarball, quick access to the tarball shasum, etc. Instead * iterate versions and find the right one, just using the tarball as a key which is what * the package manager sends to the registry. * * - A `_attachments` object is added every time a private tarball is published, upstream cached tarballs are * not being part of this object, only for published private packages. * * Note: This field is removed when the package is accesed through the web user interface. * */ _attachments: AttachMents; /** * The publisher of the package * * This field is added when the package is published or unpublished using the notify batch service. * * Note: Using `_publisher` or `_publishedPackage` would break existing handlebar templates. */ publisher?: Publisher; publishedPackage?: string; publishType?: 'publish' | 'unpublish'; } /** * Web user interface hoists the selected version to "latest" and adds "dist.tarball" field. */ export interface WebManifest extends Manifest { latest?: Version; dist?: { tarball: string }; }