vfile-statistics
vfile utility to count messages per category (fatal, warn, info, etc).
Contents
What is this?
This tiny package gives you stats about messages in files.
When should I use this?
This is really tiny, you could do it yourself, but this is useful as a building block.
Install
This package is ESM only. In Node.js (version 16+), install with npm:
npm install vfile-statistics
In Deno with esm.sh
:
import {statistics} from 'https://esm.sh/vfile-statistics@3'
In browsers with esm.sh
:
<script type="module">
import {statistics} from 'https://esm.sh/vfile-statistics@3?bundle'
</script>
Use
import {VFile} from 'vfile'
import {statistics} from 'vfile-statistics'
const file = new VFile({path: '~/example.md'})
file.message('This could be better')
file.message('That could be better')
try {
file.fail('This is terribly wrong')
} catch {}
file.info('This is perfect')
console.log(statistics(file))
Yields:
{fatal: 1, nonfatal: 3, warn: 2, info: 1, total: 4}
API
This package exports the identifier statistics
. There is no default export.
statistics(file)
Get stats for a file, list of files, or list of messages.
Parameters
file
(Array<VFile>
,Array<VFileMessage>
,VFile
, orVFileMessage
) — file, message, or list of files or messages
Returns
Statistics (Statistics
).
Statistics
Statistics (TypeScript type).
Fields
fatal
— fatal errors (fatal: true
)warn
— warning messages (fatal: false
)info
— informational messages (fatal: undefined
)nonfatal
— warning or info messagestotal
— all messages
Types
This package is fully typed with TypeScript. It exports the additional type Statistics
.
Compatibility
Projects maintained by the unified collective are compatible with maintained versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line, vfile-statistics@^3
, compatible with Node.js 16.
Contribute
See contributing.md
in vfile/.github
for ways to get started. See support.md
for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.