fix: validate non-numeric level options

This commit is contained in:
Bojun Chai 2026-04-21 00:23:05 +08:00
parent aa06bb5ac3
commit 1fd0309724
2 changed files with 9 additions and 1 deletions

View file

@ -22,7 +22,7 @@ const levelMapping = [
const styles = Object.create(null);
const applyOptions = (object, options = {}) => {
if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
if (options.level !== undefined && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
throw new Error('The `level` option should be an integer from 0 to 3');
}

View file

@ -20,5 +20,13 @@ test('the `level` option should be a number from 0 to 3', t => {
t.throws(() => {
new Chalk({level: -1});
}, {message: /should be an integer from 0 to 3/});
t.throws(() => {
new Chalk({level: null});
}, {message: /should be an integer from 0 to 3/});
t.throws(() => {
new Chalk({level: Number.NaN});
}, {message: /should be an integer from 0 to 3/});
/* eslint-enable no-new */
});