Use CommonJS-compatible export in TypeScript definition (#344)

This commit is contained in:
Dimitri Benin 2019-04-28 04:10:44 +00:00 committed by Sindre Sorhus
parent 7b9211be50
commit 98628d9f08
5 changed files with 284 additions and 274 deletions

View file

@ -1,5 +1,6 @@
language: node_js language: node_js
node_js: node_js:
- '12'
- '10' - '10'
- '8' - '8'
after_success: after_success:

195
index.d.ts vendored
View file

@ -1,230 +1,237 @@
export const enum Level { declare const enum LevelEnum {
/** /**
* All colors disabled. All colors disabled.
*/ */
None = 0, None = 0,
/** /**
* Basic 16 colors support. Basic 16 colors support.
*/ */
Basic = 1, Basic = 1,
/** /**
* ANSI 256 colors support. ANSI 256 colors support.
*/ */
Ansi256 = 2, Ansi256 = 2,
/** /**
* Truecolor 16 million colors support. Truecolor 16 million colors support.
*/ */
TrueColor = 3 TrueColor = 3
} }
export interface Options { declare namespace chalk {
type Level = LevelEnum;
interface Options {
/** /**
* Enable or disable Chalk. Enable or disable Chalk.
*
* @default true @default true
*/ */
enabled?: boolean; enabled?: boolean;
/** /**
* Specify the color support for Chalk. Specify the color support for Chalk.
* By default, color support is automatically detected based on the environment. By default, color support is automatically detected based on the environment.
*/ */
level?: Level; level?: Level;
} }
export interface Instance { interface Instance {
/** /**
* Return a new Chalk instance. Return a new Chalk instance.
*/ */
new (options?: Options): Chalk; new (options?: Options): Chalk;
} }
/**
* Detect whether the terminal supports color.
*/
export interface ColorSupport {
/** /**
* The color level used by Chalk. Detect whether the terminal supports color.
*/
interface ColorSupport {
/**
The color level used by Chalk.
*/ */
level: Level; level: Level;
/** /**
* Return whether Chalk supports basic 16 colors. Return whether Chalk supports basic 16 colors.
*/ */
hasBasic: boolean; hasBasic: boolean;
/** /**
* Return whether Chalk supports ANSI 256 colors. Return whether Chalk supports ANSI 256 colors.
*/ */
has256: boolean; has256: boolean;
/** /**
* Return whether Chalk supports Truecolor 16 million colors. Return whether Chalk supports Truecolor 16 million colors.
*/ */
has16m: boolean; has16m: boolean;
} }
export interface Chalk { interface Chalk {
(...text: unknown[]): string; (...text: unknown[]): string;
(text: TemplateStringsArray, ...placeholders: unknown[]): string; (text: TemplateStringsArray, ...placeholders: unknown[]): string;
/** /**
* Return a new Chalk instance. Return a new Chalk instance.
*/ */
Instance: Instance; Instance: Instance;
/** /**
* Enable or disable Chalk. Enable or disable Chalk.
*
* @default true @default true
*/ */
enabled: boolean; enabled: boolean;
/** /**
* The color support for Chalk. The color support for Chalk.
* By default, color support is automatically detected based on the environment. By default, color support is automatically detected based on the environment.
*/ */
level: Level; level: Level;
/** /**
* Use HEX value to set text color. Use HEX value to set text color.
*
* @param color - Hexadecimal value representing the desired color. @param color - Hexadecimal value representing the desired color.
*
* @example @example
* ```
* import chalk from 'chalk'; import chalk = require('chalk');
*
* chalk.hex('#DEADED'); chalk.hex('#DEADED');
```
*/ */
hex(color: string): this; hex(color: string): this;
/** /**
* Use keyword color value to set text color. Use keyword color value to set text color.
*
* @param color - Keyword value representing the desired color. @param color - Keyword value representing the desired color.
*
* @example @example
* ```
* import chalk from 'chalk'; import chalk = require('chalk');
*
* chalk.keyword('orange'); chalk.keyword('orange');
```
*/ */
keyword(color: string): this; keyword(color: string): this;
/** /**
* Use RGB values to set text color. Use RGB values to set text color.
*/ */
rgb(red: number, green: number, blue: number): this; rgb(red: number, green: number, blue: number): this;
/** /**
* Use HSL values to set text color. Use HSL values to set text color.
*/ */
hsl(hue: number, saturation: number, lightness: number): this; hsl(hue: number, saturation: number, lightness: number): this;
/** /**
* Use HSV values to set text color. Use HSV values to set text color.
*/ */
hsv(hue: number, saturation: number, value: number): this; hsv(hue: number, saturation: number, value: number): this;
/** /**
* Use HWB values to set text color. Use HWB values to set text color.
*/ */
hwb(hue: number, whiteness: number, blackness: number): this; hwb(hue: number, whiteness: number, blackness: number): this;
/** /**
* Use HEX value to set background color. Use HEX value to set background color.
*
* @param color - Hexadecimal value representing the desired color. @param color - Hexadecimal value representing the desired color.
*
* @example @example
* ```
* import chalk from 'chalk'; import chalk = require('chalk');
*
* chalk.bgHex('#DEADED'); chalk.bgHex('#DEADED');
```
*/ */
bgHex(color: string): this; bgHex(color: string): this;
/** /**
* Use keyword color value to set background color. Use keyword color value to set background color.
*
* @param color - Keyword value representing the desired color. @param color - Keyword value representing the desired color.
*
* @example @example
* ```
* import chalk from 'chalk'; import chalk = require('chalk');
*
* chalk.bgKeyword('orange'); chalk.bgKeyword('orange');
```
*/ */
bgKeyword(color: string): this; bgKeyword(color: string): this;
/** /**
* Use RGB values to set background color. Use RGB values to set background color.
*/ */
bgRgb(red: number, green: number, blue: number): this; bgRgb(red: number, green: number, blue: number): this;
/** /**
* Use HSL values to set background color. Use HSL values to set background color.
*/ */
bgHsl(hue: number, saturation: number, lightness: number): this; bgHsl(hue: number, saturation: number, lightness: number): this;
/** /**
* Use HSV values to set background color. Use HSV values to set background color.
*/ */
bgHsv(hue: number, saturation: number, value: number): this; bgHsv(hue: number, saturation: number, value: number): this;
/** /**
* Use HWB values to set background color. Use HWB values to set background color.
*/ */
bgHwb(hue: number, whiteness: number, blackness: number): this; bgHwb(hue: number, whiteness: number, blackness: number): this;
/** /**
* Modifier: Resets the current color chain. Modifier: Resets the current color chain.
*/ */
readonly reset: this; readonly reset: this;
/** /**
* Modifier: Make text bold. Modifier: Make text bold.
*/ */
readonly bold: this; readonly bold: this;
/** /**
* Modifier: Emitting only a small amount of light. Modifier: Emitting only a small amount of light.
*/ */
readonly dim: this; readonly dim: this;
/** /**
* Modifier: Make text italic. (Not widely supported) Modifier: Make text italic. (Not widely supported)
*/ */
readonly italic: this; readonly italic: this;
/** /**
* Modifier: Make text underline. (Not widely supported) Modifier: Make text underline. (Not widely supported)
*/ */
readonly underline: this; readonly underline: this;
/** /**
* Modifier: Inverse background and foreground colors. Modifier: Inverse background and foreground colors.
*/ */
readonly inverse: this; readonly inverse: this;
/** /**
* Modifier: Prints the text, but makes it invisible. Modifier: Prints the text, but makes it invisible.
*/ */
readonly hidden: this; readonly hidden: this;
/** /**
* Modifier: Puts a horizontal line through the center of the text. (Not widely supported) Modifier: Puts a horizontal line through the center of the text. (Not widely supported)
*/ */
readonly strikethrough: this; readonly strikethrough: this;
/** /**
* Modifier: Prints the text only when Chalk is enabled. Modifier: Prints the text only when Chalk is enabled.
* Can be useful for things that are purely cosmetic. Can be useful for things that are purely cosmetic.
*/ */
readonly visible: this; readonly visible: this;
@ -263,14 +270,18 @@ export interface Chalk {
readonly bgMagentaBright: this; readonly bgMagentaBright: this;
readonly bgCyanBright: this; readonly bgCyanBright: this;
readonly bgWhiteBright: this; readonly bgWhiteBright: this;
}
} }
/** /**
* Main Chalk object that allows to chain styles together. Main Chalk object that allows to chain styles together.
* Call the last one as a method with a string argument. 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. 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`. This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`.
*/ */
declare const chalk: Chalk & {supportsColor: ColorSupport}; declare const chalk: chalk.Chalk & {
supportsColor: chalk.ColorSupport;
Level: typeof LevelEnum;
};
export default chalk; export = chalk;

View file

@ -199,4 +199,3 @@ Object.defineProperties(Chalk.prototype, styles);
module.exports = Chalk(); // eslint-disable-line new-cap module.exports = Chalk(); // eslint-disable-line new-cap
module.exports.supportsColor = stdoutColor; module.exports.supportsColor = stdoutColor;
module.exports.default = module.exports; // For TypeScript

View file

@ -1,14 +1,14 @@
import {expectType} from 'tsd-check'; import {expectType} from 'tsd';
import chalk, {Level, Chalk, ColorSupport} from '.'; import chalk = require('.');
// - Helpers - // - Helpers -
type colorReturn = Chalk & {supportsColor: ColorSupport}; type colorReturn = chalk.Chalk & {supportsColor: chalk.ColorSupport};
// - Level - // - Level -
expectType<number>(Level.None); expectType<number>(chalk.Level.None);
expectType<number>(Level.Basic); expectType<number>(chalk.Level.Basic);
expectType<number>(Level.Ansi256); expectType<number>(chalk.Level.Ansi256);
expectType<number>(Level.TrueColor); expectType<number>(chalk.Level.TrueColor);
// - supportsColor - // - supportsColor -
expectType<boolean>(chalk.supportsColor.hasBasic); expectType<boolean>(chalk.supportsColor.hasBasic);
@ -17,11 +17,11 @@ expectType<boolean>(chalk.supportsColor.has16m);
// - Chalk - // - Chalk -
// -- Instance -- // -- Instance --
expectType<Chalk>(new chalk.Instance({level: 1})); expectType<chalk.Chalk>(new chalk.Instance({level: 1}));
// -- Properties -- // -- Properties --
expectType<boolean>(chalk.enabled); expectType<boolean>(chalk.enabled);
expectType<Level>(chalk.level); expectType<chalk.Level>(chalk.level);
// -- Template literal -- // -- Template literal --
expectType<string>(chalk``); expectType<string>(chalk``);

View file

@ -8,7 +8,7 @@
"node": ">=8" "node": ">=8"
}, },
"scripts": { "scripts": {
"test": "xo && nyc ava && tsd-check && flow", "test": "xo && nyc ava && tsd && flow",
"bench": "matcha benchmark.js" "bench": "matcha benchmark.js"
}, },
"files": [ "files": [
@ -46,19 +46,18 @@
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
}, },
"devDependencies": { "devDependencies": {
"@sindresorhus/tsconfig": "^0.2.1", "@sindresorhus/tsconfig": "^0.3.0",
"ava": "^1.3.1", "ava": "^1.4.1",
"coveralls": "^3.0.3", "coveralls": "^3.0.3",
"execa": "^1.0.0", "execa": "^1.0.0",
"flow-bin": "^0.94.0", "flow-bin": "^0.98.0",
"import-fresh": "^3.0.0", "import-fresh": "^3.0.0",
"matcha": "^0.7.0", "matcha": "^0.7.0",
"nyc": "^13.3.0", "nyc": "^14.0.0",
"resolve-from": "^4.0.0", "resolve-from": "^5.0.0",
"tsd-check": "^0.3.0", "tsd": "^0.7.2",
"xo": "^0.24.0" "xo": "^0.24.0"
}, },
"types": "index.d.ts",
"xo": { "xo": {
"ignores": [ "ignores": [
"test/_flow.js" "test/_flow.js"