UNPKG

@remcostoeten/fync

Version:

A unified TypeScript library for easy access to popular APIs (GitHub, Spotify, GitLab, etc.)

101 lines 4.29 kB
import type { TChainableClient, TNpmClientConfig, TRequestOptions } from "./services/npm-client"; import type { TNpmAuditResponse, TNpmCollaborator, TNpmDeprecation, TNpmDistTags, TNpmDownloadCount, TNpmDownloadsResponse, TNpmOrganization, TNpmPackageInfo, TNpmPackageSize, TNpmPackageVersion, TNpmSearchResponse, TNpmSearchResult, TNpmUser, TNpmVulnerability } from "./types"; type TNpm = { api: TChainableClient; package(packageName: string): TPackageClient; search: TSearchClient; downloads: TDownloadsClient; user(username: string): TUserClient; org(orgName: string): TOrgClient; tag(tag: string): TTagClient; }; type TPackageClient = { get(): Promise<TNpmPackageInfo>; version(version: string): TVersionClient; latest(): Promise<TNpmPackageVersion>; versions(): Promise<Record<string, TNpmPackageVersion>>; downloads: { last(period: "day" | "week" | "month"): Promise<TNpmDownloadCount>; range(start: string, end: string): Promise<TNpmDownloadsResponse>; }; chain: TChainableClient; }; type TVersionClient = { get(): Promise<TNpmPackageVersion>; chain: TChainableClient; }; type TSearchClient = { packages(query: string, options?: TRequestOptions & { size?: number; from?: number; quality?: number; popularity?: number; maintenance?: number; }): Promise<TNpmSearchResponse>; chain: TChainableClient; }; type TDownloadsClient = { package(packageName: string, period?: "last-day" | "last-week" | "last-month"): Promise<TNpmDownloadCount>; packages(packageNames: string[], period?: "last-day" | "last-week" | "last-month"): Promise<Record<string, TNpmDownloadCount>>; range(packageName: string, start: string, end: string): Promise<TNpmDownloadsResponse>; chain: TChainableClient; }; type TUserClient = { get(): Promise<TNpmUser>; packages(options?: TRequestOptions): Promise<TNpmPackageInfo[]>; chain: TChainableClient; }; type TOrgClient = { get(): Promise<TNpmOrganization>; packages(options?: TRequestOptions): Promise<TNpmPackageInfo[]>; members(options?: TRequestOptions): Promise<TNpmUser[]>; chain: TChainableClient; }; type TTagClient = { packages(options?: TRequestOptions): Promise<TNpmPackageInfo[]>; chain: TChainableClient; }; type TAdvancedPackageClient = TPackageClient & { vulnerabilities(): Promise<TNpmVulnerability[]>; audit(): Promise<TNpmAuditResponse>; size(): Promise<TNpmPackageSize>; deprecation(): Promise<TNpmDeprecation | null>; distTags(): Promise<TNpmDistTags>; collaborators(): Promise<TNpmCollaborator[]>; isDeprecated(): Promise<boolean>; bundleAnalysis(): Promise<{ size: number; gzip: number; modules: number; dependencies: string[]; }>; }; /** * Creates a new NPM Registry API client * * @param config - Optional configuration for the NPM client * @param config.cache - Enable response caching (default: false) * @param config.cacheTTL - Cache time-to-live in milliseconds (default: 300000) * @param config.baseUrl - Custom NPM registry URL (default: https://registry.npmjs.org) * @param config.timeout - Request timeout in milliseconds (default: 30000) * * @returns NPM client instance with access to packages, search, downloads, users, orgs, and tags * * @example * ```typescript * const npm = NPM({ cache: true, cacheTTL: 600000 }); * * // Get package information * const reactInfo = await npm.package('react').get(); * * // Search for packages * const results = await npm.search.packages('typescript'); * * // Get download statistics * const downloads = await npm.downloads.package('react', 'last-week'); * ``` */ declare function NPM(config?: TNpmClientConfig): TNpm; export { NPM }; export type { TNpm, TPackageClient, TAdvancedPackageClient, TVersionClient, TSearchClient, TDownloadsClient, TUserClient, TOrgClient, TTagClient, TChainableClient, TRequestOptions, TNpmClientConfig, TNpmPackageInfo, TNpmPackageVersion, TNpmSearchResponse, TNpmSearchResult, TNpmDownloadsResponse, TNpmDownloadCount, TNpmUser, TNpmOrganization, TNpmVulnerability, TNpmAuditResponse, TNpmPackageSize, TNpmDeprecation, TNpmDistTags, TNpmCollaborator, }; //# sourceMappingURL=index.d.ts.map