diff --git a/lib/index.js b/lib/index.js index ef01c0d..2b8f541 100644 --- a/lib/index.js +++ b/lib/index.js @@ -21,7 +21,7 @@ /** * Get stats for a file, list of files, or list of messages. * - * @param {VFile | VFileMessage | Array | null | undefined} [value] + * @param {VFile | VFileMessage | Array} value * File, message, or list of files or messages. * @returns {Statistics} * Statistics. @@ -29,12 +29,16 @@ export function statistics(value) { const result = {fatal: 0, warn: 0, info: 0} - if (value) { - if (Array.isArray(value)) { - list(value) - } else { - one(value) - } + if (!value) { + throw new TypeError( + 'Expected file or message for `value`, not `' + value + '`' + ) + } + + if (Array.isArray(value)) { + list(value) + } else { + one(value) } return { diff --git a/readme.md b/readme.md index d0fdce3..4835aa4 100644 --- a/readme.md +++ b/readme.md @@ -94,7 +94,7 @@ Get stats for a file, list of files, or list of messages. ###### Parameters * `file` ([`VFile`][vfile], [`VFileMessage`][vfile-message], - `Array`, optional) + `Array`) — file, message, or list of files or messages. ###### Returns diff --git a/test.js b/test.js index 4c437ac..a9b7d57 100644 --- a/test.js +++ b/test.js @@ -13,13 +13,10 @@ test('statistics', async function () { const file = new VFile() const other = new VFile() - assert.deepEqual(statistics(), { - fatal: 0, - nonfatal: 0, - warn: 0, - info: 0, - total: 0 - }) + assert.throws(function () { + // @ts-expect-error: check that a runtime error is thrown. + statistics() + }, /Expected file or message for `value`, not `undefined`/) assert.deepEqual(statistics(file), { fatal: 0,