diff --git a/.travis.yml b/.travis.yml index 5e3bcf3..1492647 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,6 @@ language: node_js node_js: + - '12' - '10' - '8' after_success: diff --git a/index.d.ts b/index.d.ts index 6256ce3..c7d4a54 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,276 +1,287 @@ -export const enum Level { +declare const enum LevelEnum { /** - * All colors disabled. - */ + All colors disabled. + */ None = 0, /** - * Basic 16 colors support. - */ + Basic 16 colors support. + */ Basic = 1, /** - * ANSI 256 colors support. - */ + ANSI 256 colors support. + */ Ansi256 = 2, /** - * Truecolor 16 million colors support. - */ + Truecolor 16 million colors support. + */ TrueColor = 3 } -export interface Options { +declare namespace chalk { + type Level = LevelEnum; + + interface Options { + /** + Enable or disable Chalk. + + @default true + */ + enabled?: boolean; + + /** + Specify the color support for Chalk. + By default, color support is automatically detected based on the environment. + */ + level?: Level; + } + + interface Instance { + /** + Return a new Chalk instance. + */ + new (options?: Options): Chalk; + } + /** - * Enable or disable Chalk. - * - * @default true - */ - enabled?: boolean; + Detect whether the terminal supports color. + */ + interface ColorSupport { + /** + The color level used by Chalk. + */ + level: Level; + + /** + Return whether Chalk supports basic 16 colors. + */ + hasBasic: boolean; + + /** + Return whether Chalk supports ANSI 256 colors. + */ + has256: boolean; - /** - * Specify the color support for Chalk. - * By default, color support is automatically detected based on the environment. - */ - level?: Level; -} - -export interface Instance { - /** - * Return a new Chalk instance. - */ - new (options?: Options): Chalk; -} - -/** - * Detect whether the terminal supports color. - */ -export interface ColorSupport { - /** - * The color level used by Chalk. - */ - level: Level; - - /** - * Return whether Chalk supports basic 16 colors. - */ - hasBasic: boolean; - - /** - * Return whether Chalk supports ANSI 256 colors. - */ - has256: boolean; - - /** - * Return whether Chalk supports Truecolor 16 million colors. - */ - has16m: boolean; -} - -export interface Chalk { - (...text: unknown[]): string; - - (text: TemplateStringsArray, ...placeholders: unknown[]): string; - - /** - * Return a new Chalk instance. - */ - Instance: Instance; - - /** - * Enable or disable Chalk. - * - * @default true - */ - enabled: boolean; - - /** - * The color support for Chalk. - * By default, color support is automatically detected based on the environment. - */ - level: Level; - - /** - * Use HEX value to set text color. - * - * @param color - Hexadecimal value representing the desired color. - * - * @example - * - * import chalk from 'chalk'; - * - * chalk.hex('#DEADED'); - */ - hex(color: string): this; - - /** - * Use keyword color value to set text color. - * - * @param color - Keyword value representing the desired color. - * - * @example - * - * import chalk from 'chalk'; - * - * chalk.keyword('orange'); - */ - keyword(color: string): this; - - /** - * Use RGB values to set text color. - */ - rgb(red: number, green: number, blue: number): this; - - /** - * Use HSL values to set text color. - */ - hsl(hue: number, saturation: number, lightness: number): this; - - /** - * Use HSV values to set text color. - */ - hsv(hue: number, saturation: number, value: number): this; - - /** - * Use HWB values to set text color. - */ - hwb(hue: number, whiteness: number, blackness: number): this; - - /** - * Use HEX value to set background color. - * - * @param color - Hexadecimal value representing the desired color. - * - * @example - * - * import chalk from 'chalk'; - * - * chalk.bgHex('#DEADED'); - */ - bgHex(color: string): this; - - /** - * Use keyword color value to set background color. - * - * @param color - Keyword value representing the desired color. - * - * @example - * - * import chalk from 'chalk'; - * - * chalk.bgKeyword('orange'); - */ - bgKeyword(color: string): this; - - /** - * Use RGB values to set background color. - */ - bgRgb(red: number, green: number, blue: number): this; - - /** - * Use HSL values to set background color. - */ - bgHsl(hue: number, saturation: number, lightness: number): this; - - /** - * Use HSV values to set background color. - */ - bgHsv(hue: number, saturation: number, value: number): this; - - /** - * Use HWB values to set background color. - */ - bgHwb(hue: number, whiteness: number, blackness: number): this; - - /** - * Modifier: Resets the current color chain. - */ - readonly reset: this; - - /** - * Modifier: Make text bold. - */ - readonly bold: this; - - /** - * Modifier: Emitting only a small amount of light. - */ - readonly dim: this; - - /** - * Modifier: Make text italic. (Not widely supported) - */ - readonly italic: this; - - /** - * Modifier: Make text underline. (Not widely supported) - */ - readonly underline: this; - - /** - * Modifier: Inverse background and foreground colors. - */ - readonly inverse: this; - - /** - * Modifier: Prints the text, but makes it invisible. - */ - readonly hidden: this; - - /** - * Modifier: Puts a horizontal line through the center of the text. (Not widely supported) - */ - readonly strikethrough: this; + /** + Return whether Chalk supports Truecolor 16 million colors. + */ + has16m: boolean; + } - /** - * Modifier: Prints the text only when Chalk is enabled. - * Can be useful for things that are purely cosmetic. - */ - readonly visible: this; - - readonly black: this; - readonly red: this; - readonly green: this; - readonly yellow: this; - readonly blue: this; - readonly magenta: this; - readonly cyan: this; - readonly white: this; - readonly gray: this; - readonly grey: this; - readonly blackBright: this; - readonly redBright: this; - readonly greenBright: this; - readonly yellowBright: this; - readonly blueBright: this; - readonly magentaBright: this; - readonly cyanBright: this; - readonly whiteBright: this; - - readonly bgBlack: this; - readonly bgRed: this; - readonly bgGreen: this; - readonly bgYellow: this; - readonly bgBlue: this; - readonly bgMagenta: this; - readonly bgCyan: this; - readonly bgWhite: this; - readonly bgBlackBright: this; - readonly bgRedBright: this; - readonly bgGreenBright: this; - readonly bgYellowBright: this; - readonly bgBlueBright: this; - readonly bgMagentaBright: this; - readonly bgCyanBright: this; - readonly bgWhiteBright: this; + interface Chalk { + (...text: unknown[]): string; + + (text: TemplateStringsArray, ...placeholders: unknown[]): string; + + /** + Return a new Chalk instance. + */ + Instance: Instance; + + /** + Enable or disable Chalk. + + @default true + */ + enabled: boolean; + + /** + The color support for Chalk. + By default, color support is automatically detected based on the environment. + */ + level: Level; + + /** + Use HEX value to set text color. + + @param color - Hexadecimal value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.hex('#DEADED'); + ``` + */ + hex(color: string): this; + + /** + Use keyword color value to set text color. + + @param color - Keyword value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.keyword('orange'); + ``` + */ + keyword(color: string): this; + + /** + Use RGB values to set text color. + */ + rgb(red: number, green: number, blue: number): this; + + /** + Use HSL values to set text color. + */ + hsl(hue: number, saturation: number, lightness: number): this; + + /** + Use HSV values to set text color. + */ + hsv(hue: number, saturation: number, value: number): this; + + /** + Use HWB values to set text color. + */ + hwb(hue: number, whiteness: number, blackness: number): this; + + /** + Use HEX value to set background color. + + @param color - Hexadecimal value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.bgHex('#DEADED'); + ``` + */ + bgHex(color: string): this; + + /** + Use keyword color value to set background color. + + @param color - Keyword value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.bgKeyword('orange'); + ``` + */ + bgKeyword(color: string): this; + + /** + Use RGB values to set background color. + */ + bgRgb(red: number, green: number, blue: number): this; + + /** + Use HSL values to set background color. + */ + bgHsl(hue: number, saturation: number, lightness: number): this; + + /** + Use HSV values to set background color. + */ + bgHsv(hue: number, saturation: number, value: number): this; + + /** + Use HWB values to set background color. + */ + bgHwb(hue: number, whiteness: number, blackness: number): this; + + /** + Modifier: Resets the current color chain. + */ + readonly reset: this; + + /** + Modifier: Make text bold. + */ + readonly bold: this; + + /** + Modifier: Emitting only a small amount of light. + */ + readonly dim: this; + + /** + Modifier: Make text italic. (Not widely supported) + */ + readonly italic: this; + + /** + Modifier: Make text underline. (Not widely supported) + */ + readonly underline: this; + + /** + Modifier: Inverse background and foreground colors. + */ + readonly inverse: this; + + /** + Modifier: Prints the text, but makes it invisible. + */ + readonly hidden: this; + + /** + Modifier: Puts a horizontal line through the center of the text. (Not widely supported) + */ + readonly strikethrough: this; + + /** + Modifier: Prints the text only when Chalk is enabled. + Can be useful for things that are purely cosmetic. + */ + readonly visible: this; + + readonly black: this; + readonly red: this; + readonly green: this; + readonly yellow: this; + readonly blue: this; + readonly magenta: this; + readonly cyan: this; + readonly white: this; + readonly gray: this; + readonly grey: this; + readonly blackBright: this; + readonly redBright: this; + readonly greenBright: this; + readonly yellowBright: this; + readonly blueBright: this; + readonly magentaBright: this; + readonly cyanBright: this; + readonly whiteBright: this; + + readonly bgBlack: this; + readonly bgRed: this; + readonly bgGreen: this; + readonly bgYellow: this; + readonly bgBlue: this; + readonly bgMagenta: this; + readonly bgCyan: this; + readonly bgWhite: this; + readonly bgBlackBright: this; + readonly bgRedBright: this; + readonly bgGreenBright: this; + readonly bgYellowBright: this; + readonly bgBlueBright: this; + readonly bgMagentaBright: this; + readonly bgCyanBright: this; + readonly bgWhiteBright: this; + } } /** - * Main Chalk object that allows to chain styles together. - * Call the last one as a method with a string argument. - * Order doesn't matter, and later styles take precedent in case of a conflict. - * This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`. - */ -declare const chalk: Chalk & {supportsColor: ColorSupport}; - -export default chalk; +Main Chalk object that allows to chain styles together. +Call the last one as a method with a string argument. +Order doesn't matter, and later styles take precedent in case of a conflict. +This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`. +*/ +declare const chalk: chalk.Chalk & { + supportsColor: chalk.ColorSupport; + Level: typeof LevelEnum; +}; + +export = chalk; diff --git a/index.js b/index.js index 7d00571..9f5575a 100644 --- a/index.js +++ b/index.js @@ -199,4 +199,3 @@ Object.defineProperties(Chalk.prototype, styles); module.exports = Chalk(); // eslint-disable-line new-cap module.exports.supportsColor = stdoutColor; -module.exports.default = module.exports; // For TypeScript diff --git a/index.test-d.ts b/index.test-d.ts index 0b26e9c..7a791a8 100644 --- a/index.test-d.ts +++ b/index.test-d.ts @@ -1,14 +1,14 @@ -import {expectType} from 'tsd-check'; -import chalk, {Level, Chalk, ColorSupport} from '.'; +import {expectType} from 'tsd'; +import chalk = require('.'); // - Helpers - -type colorReturn = Chalk & {supportsColor: ColorSupport}; +type colorReturn = chalk.Chalk & {supportsColor: chalk.ColorSupport}; // - Level - -expectType(Level.None); -expectType(Level.Basic); -expectType(Level.Ansi256); -expectType(Level.TrueColor); +expectType(chalk.Level.None); +expectType(chalk.Level.Basic); +expectType(chalk.Level.Ansi256); +expectType(chalk.Level.TrueColor); // - supportsColor - expectType(chalk.supportsColor.hasBasic); @@ -17,11 +17,11 @@ expectType(chalk.supportsColor.has16m); // - Chalk - // -- Instance -- -expectType(new chalk.Instance({level: 1})); +expectType(new chalk.Instance({level: 1})); // -- Properties -- expectType(chalk.enabled); -expectType(chalk.level); +expectType(chalk.level); // -- Template literal -- expectType(chalk``); diff --git a/package.json b/package.json index bbc1634..39ec03d 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "node": ">=8" }, "scripts": { - "test": "xo && nyc ava && tsd-check && flow", + "test": "xo && nyc ava && tsd && flow", "bench": "matcha benchmark.js" }, "files": [ @@ -46,19 +46,18 @@ "supports-color": "^6.1.0" }, "devDependencies": { - "@sindresorhus/tsconfig": "^0.2.1", - "ava": "^1.3.1", + "@sindresorhus/tsconfig": "^0.3.0", + "ava": "^1.4.1", "coveralls": "^3.0.3", "execa": "^1.0.0", - "flow-bin": "^0.94.0", + "flow-bin": "^0.98.0", "import-fresh": "^3.0.0", "matcha": "^0.7.0", - "nyc": "^13.3.0", - "resolve-from": "^4.0.0", - "tsd-check": "^0.3.0", + "nyc": "^14.0.0", + "resolve-from": "^5.0.0", + "tsd": "^0.7.2", "xo": "^0.24.0" }, - "types": "index.d.ts", "xo": { "ignores": [ "test/_flow.js"