vfile-message

Build
Coverage
Downloads
Size

Create vfile messages.

Contents

What is this?

This package provides a (lint) message format.

When should I use this?

In most cases,
you can use file.message from VFile itself,
but in some cases you might not have a file,
and still want to emit warnings or errors,
in which case this can be used directly.

Install

This package is ESM only.
In Node.js (version 16+),
install with npm:

npm install vfile-message

In Deno with esm.sh:

import {VFileMessage} from 'https://esm.sh/vfile-message@4'

In browsers with esm.sh:

<script type="module">
  import {VFileMessage} from 'https://esm.sh/vfile-message@4?bundle'
</script>

Use

import {VFileMessage} from 'vfile-message'

const message = new VFileMessage(
  'Unexpected unknown word `braavo`, did you mean `bravo`?',
  {place: {column: 8, line: 1}, ruleId: 'typo', source: 'spell'}
)

console.log(message)

Yields:

[1:8: Unexpected unknown word `braavo`, did you mean `bravo`?] {
  reason: 'Unexpected unknown word `braavo`, did you mean `bravo`?',
  line: 1,
  column: 8,
  ancestors: undefined,
  cause: undefined,
  fatal: undefined,
  place: {line: 1, column: 8},
  ruleId: 'typo',
  source: 'spell'
}

API

This package exports the identifier VFileMessage.
There is no default export.
It exports the additional TypeScript type Options.

VFileMessage(reason[, options])

Create a message for reason.

πŸͺ¦ Note: also has obsolete signatures.

Parameters
  • reason (string)
    β€” reason for message (should use markdown)
  • options (Options, optional)
    β€” configuration.
Extends

Error.

Returns

Instance of VFileMessage.

Fields
  • ancestors (Array<Node> or undefined)
    β€” stack of (inclusive) ancestor nodes surrounding the message
  • cause (Error or undefined)
    β€” original error cause of the message
  • column (number or undefined)
    β€” starting column of message
  • fatal (boolean or undefined)
    β€” state of problem; true: error, file not usable; false: warning,
    change may be needed; undefined: info, change likely not needed
  • line (number or undefined)
    β€” starting line of message
  • place (Point, Position
    or undefined)
    β€” place of message
  • reason (string)
    β€” reason for message (should use markdown)
  • ruleId (string or undefined, example: 'my-rule')
    β€” category of message
  • source (string or undefined, example: 'my-package')
    β€” namespace of message

Options

Configuration (TypeScript type).

Fields
  • ancestors (Array<Node>, optional)
    β€” stack of (inclusive) ancestor nodes surrounding the message
  • cause (Error, optional)
    β€” original error cause of the message
  • place (Point or Position,
    optional)
    β€” place of message
  • ruleId (string, optional, example: 'my-rule')
    β€” category of message
  • source (string, optional, , example: 'my-package')
    β€” namespace of who sent the message

Well-known

It’s OK to store custom data directly on the VFileMessage, some of those are
handled by utilities.
The following fields are documented and typed here.

Fields
  • actual (string, optional)
    β€” specify the source value that’s being reported, which is deemed incorrect
  • expected (Array<string>, optional)
    β€” suggest acceptable values that can be used instead of actual
  • url (string, optional)
    β€” link to docs for the message (this must be an absolute URL that can be
    passed as x to new URL(x))
  • note (string, optional)
    β€” long form description of the message (you should use markdown)

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-message@^4,
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.

License

MIT Β© Titus Wormer

Definitions