You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

195 lines
4.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# vfile-message
[![Build][build-badge]][build]
[![Coverage][coverage-badge]][coverage]
[![Downloads][downloads-badge]][downloads]
[![Chat][chat-badge]][chat]
Create [vfile][] messages.
## Installation
[npm][]:
```bash
npm install vfile-message
```
## Usage
```js
var VMessage = require('vfile-message')
var message = new VMessage(
'`braavo` is misspelt; did you mean `bravo`?',
{line: 1, column: 8},
'spell:typo'
)
console.log(message)
```
Yields:
```js
{ [1:8: `braavo` is misspelt; did you mean `bravo`?]
reason: '`braavo` is misspelt; did you mean `bravo`?',
fatal: null,
line: 1,
column: 8,
location:
{ start: { line: 1, column: 8 },
end: { line: null, column: null } },
source: 'spell',
ruleId: 'typo' }
```
## API
### `VMessage(reason[, position][, origin])`
Constructor of a message for `reason` at `position` from `origin`. When
an error is passed in as `reason`, copies the stack.
##### Parameters
###### `reason`
Reason for message (`string` or `Error`). Uses the stack and message of the
error if given.
###### `position`
Place at which the message occurred in a file ([`Node`][node],
[`Position`][position], or [`Point`][point], optional).
###### `origin`
Place in code the message originates from (`string`, optional).
Can either be the [`ruleId`][ruleid] (`'rule'`), or a string with both a
[`source`][source] and a [`ruleId`][ruleid] delimited with a colon
(`'source:rule'`).
##### Extends
[`Error`][error].
##### Returns
An instance of itself.
##### Properties
###### `reason`
Reason for message (`string`).
###### `fatal`
If `true`, marks associated file as no longer processable (`boolean?`). If
`false`, necessitates a (potential) change. The value can also be `null` or
`undefined`.
###### `line`
Starting line of error (`number?`).
###### `column`
Starting column of error (`number?`).
###### `location`
Full range information, when available ([`Position`][position]). Has `start`
and `end` properties, both set to an object with `line` and `column`, set to
`number?`.
###### `source`
Namespace of warning (`string?`).
###### `ruleId`
Category of message (`string?`).
###### `stack`
Stack of message (`string?`).
##### Custom properties
Its OK to store custom data directly on the `VMessage`, some of those are
handled by [utilities][util].
###### `file`
You may add a `file` property with a path of a file (used throughout the
[**VFile**][vfile] ecosystem).
###### `note`
You may add a `note` property with a long form description of the message
(supported by [`vfile-reporter`][reporter]).
###### `url`
You may add a `url` property with a link to documentation for the message.
## Contribute
See [`contributing.md` in `vfile/vfile`][contributing] for ways to get started.
This organisation has a [Code of Conduct][coc]. By interacting with this
repository, organisation, or community you agree to abide by its terms.
## License
[MIT][license] © [Titus Wormer][author]
<!-- Definitions -->
[build-badge]: https://img.shields.io/travis/vfile/vfile-message.svg
[build]: https://travis-ci.org/vfile/vfile-message
[coverage-badge]: https://img.shields.io/codecov/c/github/vfile/vfile-message.svg
[coverage]: https://codecov.io/github/vfile/vfile-message
[downloads-badge]: https://img.shields.io/npm/dm/vfile-message.svg
[downloads]: https://www.npmjs.com/package/vfile-message
[chat-badge]: https://img.shields.io/badge/join%20the%20community-on%20spectrum-7b16ff.svg
[chat]: https://spectrum.chat/unified/vfile
[npm]: https://docs.npmjs.com/cli/install
[license]: license
[author]: https://wooorm.com
[error]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error
[node]: https://github.com/syntax-tree/unist#node
[position]: https://github.com/syntax-tree/unist#position
[point]: https://github.com/syntax-tree/unist#point
[vfile]: https://github.com/vfile/vfile
[contributing]: https://github.com/vfile/vfile/blob/master/contributing.md
[coc]: https://github.com/vfile/vfile/blob/master/code-of-conduct.md
[util]: https://github.com/vfile/vfile#utilities
[reporter]: https://github.com/vfile/vfile-reporter
[ruleid]: #ruleid
[source]: #source