From 41187d887529ffe677287ec4febc770b7c00a9b3 Mon Sep 17 00:00:00 2001 From: Daniel Schmidt Date: Wed, 25 Apr 2018 21:02:33 +0200 Subject: [PATCH] add types for npmlog (#25291) --- types/npmlog/index.d.ts | 70 ++++++++++++++++++++++++++++++++++++ types/npmlog/npmlog-tests.ts | 43 ++++++++++++++++++++++ types/npmlog/tsconfig.json | 23 ++++++++++++ types/npmlog/tslint.json | 1 + 4 files changed, 137 insertions(+) create mode 100644 types/npmlog/index.d.ts create mode 100644 types/npmlog/npmlog-tests.ts create mode 100644 types/npmlog/tsconfig.json create mode 100644 types/npmlog/tslint.json diff --git a/types/npmlog/index.d.ts b/types/npmlog/index.d.ts new file mode 100644 index 0000000000..5487c76dc7 --- /dev/null +++ b/types/npmlog/index.d.ts @@ -0,0 +1,70 @@ +// Type definitions for npmlog 4.1 +// Project: https://github.com/npm/npmlog#readme +// Definitions by: Daniel Schmidt +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.4 + +export enum LogLevels { + silly = "silly", + verbose = "verbose", + info = "info", + http = "http", + warn = "warn", + error = "error", +} + +export interface StyleObject { + fg?: string; + bg?: string; + bold?: boolean; + inverse?: boolean; + underline?: boolean; + + bell?: boolean; +} + +export interface MessageObject { + id: number; + level: string; + prefix: string; + message: string; + messageRaw: string; +} + +// TODO: newStream, newGroup, setGaugeTemplate and setGaugeTemplateSet need to be added +interface npmlog { + log(level: LogLevels | string, prefix: string, message: string, ...args: any[]): void; + + silly(prefix: string, message: string, ...args: any[]): void; + verbose(prefix: string, message: string, ...args: any[]): void; + info(prefix: string, message: string, ...args: any[]): void; + http(prefix: string, message: string, ...args: any[]): void; + warn(prefix: string, message: string, ...args: any[]): void; + error(prefix: string, message: string, ...args: any[]): void; + + level: string; + record: MessageObject[]; + maxRecordSize: number; + prefixStyle: StyleObject; + headingStyle: StyleObject; + heading: string; + stream: any; // Defaults to process.stderr + + enableColor(): void; + disableColor(): void; + + enableProgress(): void; + disableProgress(): void; + + enableUnicode(): void; + disableUnicode(): void; + + pause(): void; + resume(): void; + + addLevel(level: string, n: number, style?: StyleObject, disp?: string): void; +} + +declare const logger: npmlog; + +export default logger; diff --git a/types/npmlog/npmlog-tests.ts b/types/npmlog/npmlog-tests.ts new file mode 100644 index 0000000000..8f90bea7ce --- /dev/null +++ b/types/npmlog/npmlog-tests.ts @@ -0,0 +1,43 @@ +import npmlog from "npmlog"; + +const prefix = "str"; +const message = "otherStr"; + +['silly', 'verbose', 'info', 'http', 'warn', 'error'].forEach(lvl => npmlog.log(lvl, prefix, message)); + +npmlog.silly(prefix, message); +npmlog.verbose(prefix, message); +npmlog.info(prefix, message); +npmlog.http(prefix, message); +npmlog.warn(prefix, message); +npmlog.error(prefix, message); + +npmlog.level = "silly"; + +npmlog.enableColor(); +npmlog.disableColor(); + +npmlog.enableProgress(); +npmlog.disableProgress(); + +npmlog.enableUnicode(); +npmlog.disableUnicode(); + +npmlog.pause(); +npmlog.resume(); + +npmlog.addLevel("new-level", 42); +npmlog.addLevel("styled-level", 42, { + fg: 'red', + bg: 'blue', + bold: false, + inverse: true, + underline: true, + bell: false +}); + +npmlog.addLevel("styled-level", 42, { + fg: 'red', + bold: false, + underline: true, +}, 'display name'); diff --git a/types/npmlog/tsconfig.json b/types/npmlog/tsconfig.json new file mode 100644 index 0000000000..8ef05dd055 --- /dev/null +++ b/types/npmlog/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "npmlog-tests.ts" + ] +} diff --git a/types/npmlog/tslint.json b/types/npmlog/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/npmlog/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }