Change the TypeScript Level type to be a union instead of enum

Fixes #373
Fixes #382
This commit is contained in:
Sindre Sorhus 2020-04-02 15:46:17 +08:00
parent 7f21f209da
commit f0f4638a92
4 changed files with 23 additions and 54 deletions

47
index.d.ts vendored
View file

@ -1,25 +1,3 @@
declare const enum LevelEnum {
/**
All colors disabled.
*/
None = 0,
/**
Basic 16 colors support.
*/
Basic = 1,
/**
ANSI 256 colors support.
*/
Ansi256 = 2,
/**
Truecolor 16 million colors support.
*/
TrueColor = 3
}
/** /**
Basic foreground colors. Basic foreground colors.
@ -89,12 +67,26 @@ declare type Modifiers =
| 'visible'; | 'visible';
declare namespace chalk { declare namespace chalk {
type Level = LevelEnum; /**
Levels:
- `0` - All colors disabled.
- `1` - Basic 16 colors support.
- `2` - ANSI 256 colors support.
- `3` - Truecolor 16 million colors support.
*/
type Level = 0 | 1 | 2 | 3;
interface Options { interface Options {
/** /**
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.
Levels:
- `0` - All colors disabled.
- `1` - Basic 16 colors support.
- `2` - ANSI 256 colors support.
- `3` - Truecolor 16 million colors support.
*/ */
level?: Level; level?: Level;
} }
@ -161,7 +153,14 @@ declare namespace chalk {
/** /**
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.
Levels:
- `0` - All colors disabled.
- `1` - Basic 16 colors support.
- `2` - ANSI 256 colors support.
- `3` - Truecolor 16 million colors support.
*/ */
level: Level; level: Level;
@ -400,7 +399,7 @@ This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`.
*/ */
declare const chalk: chalk.Chalk & chalk.ChalkFunction & { declare const chalk: chalk.Chalk & chalk.ChalkFunction & {
supportsColor: chalk.ColorSupport | false; supportsColor: chalk.ColorSupport | false;
Level: typeof LevelEnum; Level: chalk.Level;
Color: Color; Color: Color;
ForegroundColor: ForegroundColor; ForegroundColor: ForegroundColor;
BackgroundColor: BackgroundColor; BackgroundColor: BackgroundColor;

View file

@ -4,12 +4,6 @@ import chalk = require('.');
// - Helpers - // - Helpers -
type colorReturn = chalk.Chalk & {supportsColor?: never}; type colorReturn = chalk.Chalk & {supportsColor?: never};
// - Level -
expectType<number>(chalk.Level.None);
expectType<number>(chalk.Level.Basic);
expectType<number>(chalk.Level.Ansi256);
expectType<number>(chalk.Level.TrueColor);
// - supportsColor - // - supportsColor -
expectType<chalk.ColorSupport | false>(chalk.supportsColor); expectType<chalk.ColorSupport | false>(chalk.supportsColor);
expectType<boolean>((chalk.supportsColor as chalk.ColorSupport).hasBasic); expectType<boolean>((chalk.supportsColor as chalk.ColorSupport).hasBasic);

View file

@ -218,16 +218,4 @@ chalk.supportsColor = stdoutColor;
chalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap chalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap
chalk.stderr.supportsColor = stderrColor; chalk.stderr.supportsColor = stderrColor;
// For TypeScript
chalk.Level = {
None: 0,
Basic: 1,
Ansi256: 2,
TrueColor: 3,
0: 'None',
1: 'Basic',
2: 'Ansi256',
3: 'TrueColor'
};
module.exports = chalk; module.exports = chalk;

View file

@ -43,15 +43,3 @@ test('disable colors if they are not supported', async t => {
const {stdout} = await execa.node(path.join(__dirname, '_fixture')); const {stdout} = await execa.node(path.join(__dirname, '_fixture'));
t.is(stdout, 'testout testerr'); t.is(stdout, 'testout testerr');
}); });
test('chalk.Level enum object', t => {
const {Level} = chalk;
t.is(Level.None, 0);
t.is(Level.Basic, 1);
t.is(Level.Ansi256, 2);
t.is(Level.TrueColor, 3);
t.is(Level[Level.None], 'None');
t.is(Level[Level.Basic], 'Basic');
t.is(Level[Level.Ansi256], 'Ansi256');
t.is(Level[Level.TrueColor], 'TrueColor');
});