// Type definitions for npm 2.0.0 // Project: https://github.com/npm/npm // Definitions by: Maxime LUCE // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /// declare var npm: NPM.Static; export = npm; declare namespace NPM { export interface Static extends NodeJS.EventEmitter { config: Config; commands: Commands; rollbacks: any[]; spinner: Spinner; fullList: string[]; abbrevs: Dictionary; prefix: string; bin: string; globalBin: string; dir: string; globalDir: string; root: string; cache: string; tmp: string; load(cli: ConfigOptions): void; load(callback: SimpleCallback): void; load(cli: ConfigOptions, callback: SimpleCallback): void; deref(command: string): string; } //#region Commands Interfaces export interface Commands { // Commands install: CommandFunction; uninstall: CommandFunction; cache: CommandFunction; config: CommandFunction; set: CommandFunction; get: CommandFunction; update: CommandFunction; outdated: CommandFunction; prune: CommandFunction; submodule: CommandFunction; pack: CommandFunction; dedupe: CommandFunction; rebuild: CommandFunction; link: CommandFunction; publish: CommandFunction; star: CommandFunction; stars: CommandFunction; tag: CommandFunction; adduser: CommandFunction; unpublish: CommandFunction; owner: CommandFunction; deprecate: CommandFunction; shrinkwrap: CommandFunction; help: CommandFunction; "help-search": CommandFunction; ls: CommandFunction; search: CommandFunction; view: CommandFunction; init: CommandFunction; version: CommandFunction; edit: CommandFunction; explore: CommandFunction; docs: CommandFunction; repo: CommandFunction; bugs: CommandFunction; faq: CommandFunction; root: CommandFunction; prefix: CommandFunction; bin: CommandFunction; whoami: CommandFunction; test: CommandFunction; stop: CommandFunction; start: CommandFunction; restart: CommandFunction; "run-script": CommandFunction; completion: CommandFunction; //Aliases rm: CommandFunction; // uninstall r: CommandFunction; // uninstall un: CommandFunction; // uninstall unlink: CommandFunction; // uninstall remove: CommandFunction; // uninstall rb: CommandFunction; // rebuild list: CommandFunction; // ls la: CommandFunction; // ls ll: CommandFunction; // ls i: CommandFunction; // install isntall: CommandFunction; // install up: CommandFunction; // update c: CommandFunction; // config info: CommandFunction; // view show: CommandFunction; // view find: CommandFunction; // search s: CommandFunction; // search se: CommandFunction; // search author: CommandFunction; // owner home: CommandFunction; // docs issues: CommandFunction; // bugs unstar: CommandFunction; // star apihelp: CommandFunction; // help long: CommandFunction; // adduser "add-user": CommandFunction; // adduser tst: CommandFunction; // test t: CommandFunction; // test "find-dupes": CommandFunction; // dedupe ddp: CommandFunction; // dedupe v: CommandFunction; // view // plumbing build: CommandFunction; unbuild: CommandFunction; xmas: CommandFunction; substack: CommandFunction; visnup: CommandFunction; } export interface CommandFunction { (args: string[], callback: CommandCallback): void; } export interface CommandCallback { (err?: Error, result?: any, result2?: any, result3?: any, result4?: any): void; } //#endregion //#region Other Interfaces export interface Spinner { int: string; started: boolean; start(): void; stop(): void; } //#endregion //#region Config Interfaces export interface ConfigStatic { new (base: Config): Config; (base: Config): Config; } export interface Config { loaded: boolean; sources: Dictionary; rootConf: Config; usingBuiltin: boolean; root?: Config; Conf: ConfigStatic; defs: ConfigDefs; get(setting: string): string; set(setting: string, value: string): void; loadPrefix(cb: ErrorCallback): void; loadCAFile(caFilePath: string, cb: ErrorCallback): void; loadUid(cb: SimpleCallback): void; setUser(cb: ErrorCallback): void; findPrefix(prefix: string, cb: SimpleCallback): void; getCredentialsByURI(uri: string): Credentials; setCredentialsByURI(uri: string, cred: Credentials): void; loadExtras(cb: ErrorCallback): void; save(where: string, cb: ErrorCallback): Config; addFile(file: string, name: string): Config; parse(content: string, file: string): any; add(data: Object, marker: Object): any; addEnv(env: Dictionary): any; } export interface ConfigDefs { defaults: ConfigOptions; types: ConfigTypes; } export interface ConfigOptions { "always-auth"?: boolean; "bin-links"?: boolean; browser?: string; ca?: any; // string | string[] cafile?: string; cache?: string; "cache-lock-stale"?: number; "cache-lock-retries"?: number; "cache-lock-wait"?: number; "cache-max"?: number; "cache-min"?: number; cert?: string; color?: any; // boolean | string ("always") depth?: number; description?: boolean; dev?: boolean; editor?: string; "engine-strict"?: boolean; force?: boolean; "fetch-retries"?: number; "fetch-retry-factor"?: number; "fetch-retry-mintimeout"?: number; "fetch-retry-maxtimeout"?: number; git?: string; "git-tag-version"?: boolean; global?: boolean; globalconfig?: string; group?: any; // number | string heading?: string; "ignore-scripts"?: boolean; "init-module"?: string; "init.author.name"?: string; "init.author.email"?: string; "init.author.url"?: string; "init.version"?: string; "init.license"?: string; json?: boolean; key?: string; link?: boolean; "local-address"?: string; loglevel?: string; logstream?: NodeJS.ReadWriteStream; long?: boolean; message?: string; "node-version"?: string; npat?: boolean; "onload-script"?: boolean; optional?: boolean; parseable?: boolean; prefix?: string; production?: boolean; "proprietary-attribs"?: boolean; proxy?: any; // boolean | string "https-proxy"?: string; "user-agent"?: string; "rebuild-bundle"?: boolean; registry?: string; rollback?: boolean; save?: boolean; "save-bundle"?: boolean; "save-dev"?: boolean; "save-exact"?: boolean; "save-optional"?: boolean; "save-prefix"?: string; scope?: string; searchopts?: string; searchexclude?: string; searchsort?: string; shell?: string; shrinkwrap?: boolean; "sign-git-tag"?: boolean; spin?: any; // boolean | string ("always") "strict-ssl"?: boolean; tag?: string; tmp?: string; unicode?: boolean; "unsafe-perm"?: boolean; usage?: boolean; user?: any; // string | number userconfig?: string; umask?: number; version?: boolean; versions?: boolean; viewer?: string; _exit?: boolean; } export interface ConfigTypes { "always-auth": typeof Boolean; "bin-links": typeof Boolean; browser: any[]; ca: any[]; cafile: typeof String; cache: typeof String; "cache-lock-stale": typeof Number; "cache-lock-retries": typeof Number; "cache-lock-wait": typeof Number; "cache-max": typeof Number; "cache-min": typeof Number; cert: typeof String; color: any[]; depth: typeof Number; description: typeof Boolean; dev: typeof Boolean; editor: typeof String; "engine-strict": typeof Boolean; force: typeof Boolean; "fetch-retries": typeof Number; "fetch-retry-factor": typeof Number; "fetch-retry-mintimeout": typeof Number; "fetch-retry-maxtimeout": typeof Number; git: typeof String; "git-tag-version": typeof Boolean; global: typeof Boolean; globalconfig: typeof String; group: any[]; heading: typeof String; "ignore-scripts": typeof Boolean; "init-module": typeof String; "init.author.name": typeof String; "init.author.email": typeof String; "init.author.url": typeof String; "init.version": typeof String; "init.license": typeof String; json: typeof Boolean; key: any[]; link: typeof Boolean; "local-address": typeof String; loglevel: any[]; logstream: any; // typeof stream.Stream long: typeof Boolean; message: typeof String; "node-version": any[]; npat: typeof Boolean; "onload-script": any[]; optional: typeof Boolean; parseable: typeof Boolean; prefix: typeof String; production: typeof Boolean; "proprietary-attribs": typeof Boolean; proxy: any[]; "https-proxy": any[]; "user-agent": typeof String; "rebuild-bundle": Boolean; registry: any[]; rollback: typeof Boolean; save: typeof Boolean; "save-bundle": typeof Boolean; "save-dev": typeof Boolean; "save-exact": typeof Boolean; "save-optional": typeof Boolean; "save-prefix": typeof String; scope: typeof String; searchopts: typeof String; searchexclude: any[]; searchsort: any[]; shell: typeof String; shrinkwrap: typeof Boolean; "sign-git-tag": typeof Boolean; spin: any[]; "strict-ssl": typeof Boolean; tag: typeof String; tmp: typeof String; unicode: typeof Boolean; "unsafe-perm": typeof Boolean; usage: typeof Boolean; user: any; // String | Number userconfig: typeof String; umask: typeof Number; version: typeof Boolean; versions: typeof Boolean; viewer: typeof String; _exit: typeof Boolean; } export interface ConfigShorthands { s: any[]; d: any[]; dd: any[]; ddd: any[]; noreg: any[]; N: any[]; reg: any[]; "no-reg": any[]; silent: any[]; verbose: any[]; quiet: any[]; q: any[]; h: any[]; H: any[]; "?": any[]; help: any[]; v: any[]; f: any[]; gangster: any[]; gangsta: any[]; desc: any[]; "no-desc": any[]; "local": any[]; l: any[]; m: any[]; p: any[]; porcelain: any[]; g: any[]; S: any[]; D: any[]; E: any[]; O: any[]; y: any[]; n: any[]; B: any[]; C: any[]; } export interface ConfigSource { path: string; type: string; } export interface Credentials { scope: string; token?: string; password?: string; username?: string; email?: string; auth?: string; } //#endregion //#region Utilities Interfaces export interface Dictionary { [key: string]: T; } export interface ErrorCallback { (err?: Error): void; } export interface SimpleCallback { (err?: Error, result?: T): void; } //#endregion }