| import { FilePosition } from './input.js' |
| |
| /** |
| * A position that is part of a range. |
| */ |
| export interface RangePosition { |
| /** |
| * The line number in the input. |
| */ |
| line: number |
| |
| /** |
| * The column number in the input. |
| */ |
| column: number |
| } |
| |
| /** |
| * The CSS parser throws this error for broken CSS. |
| * |
| * Custom parsers can throw this error for broken custom syntax using |
| * the `Node#error` method. |
| * |
| * PostCSS will use the input source map to detect the original error location. |
| * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS, |
| * PostCSS will show the original position in the Sass file. |
| * |
| * If you need the position in the PostCSS input |
| * (e.g., to debug the previous compiler), use `error.input.file`. |
| * |
| * ```js |
| * // Raising error from plugin |
| * throw node.error('Unknown variable', { plugin: 'postcss-vars' }) |
| * ``` |
| * |
| * ```js |
| * // Catching and checking syntax error |
| * try { |
| * postcss.parse('a{') |
| * } catch (error) { |
| * if (error.name === 'CssSyntaxError') { |
| * error //=> CssSyntaxError |
| * } |
| * } |
| * ``` |
| */ |
| export default class CssSyntaxError { |
| /** |
| * Instantiates a CSS syntax error. Can be instantiated for a single position |
| * or for a range. |
| * @param message Error message. |
| * @param lineOrStartPos If for a single position, the line number, or if for |
| * a range, the inclusive start position of the error. |
| * @param columnOrEndPos If for a single position, the column number, or if for |
| * a range, the exclusive end position of the error. |
| * @param source Source code of the broken file. |
| * @param file Absolute path to the broken file. |
| * @param plugin PostCSS plugin name, if error came from plugin. |
| */ |
| constructor( |
| message: string, |
| lineOrStartPos?: number | RangePosition, |
| columnOrEndPos?: number | RangePosition, |
| source?: string, |
| file?: string, |
| plugin?: string |
| ) |
| |
| stack: string |
| |
| /** |
| * Always equal to `'CssSyntaxError'`. You should always check error type |
| * by `error.name === 'CssSyntaxError'` |
| * instead of `error instanceof CssSyntaxError`, |
| * because npm could have several PostCSS versions. |
| * |
| * ```js |
| * if (error.name === 'CssSyntaxError') { |
| * error //=> CssSyntaxError |
| * } |
| * ``` |
| */ |
| name: 'CssSyntaxError' |
| |
| /** |
| * Error message. |
| * |
| * ```js |
| * error.message //=> 'Unclosed block' |
| * ``` |
| */ |
| reason: string |
| |
| /** |
| * Full error text in the GNU error format |
| * with plugin, file, line and column. |
| * |
| * ```js |
| * error.message //=> 'a.css:1:1: Unclosed block' |
| * ``` |
| */ |
| message: string |
| |
| /** |
| * Absolute path to the broken file. |
| * |
| * ```js |
| * error.file //=> 'a.sass' |
| * error.input.file //=> 'a.css' |
| * ``` |
| * |
| * PostCSS will use the input source map to detect the original location. |
| * If you need the position in the PostCSS input, use `error.input.file`. |
| */ |
| file?: string |
| |
| /** |
| * Source line of the error. |
| * |
| * ```js |
| * error.line //=> 2 |
| * error.input.line //=> 4 |
| * ``` |
| * |
| * PostCSS will use the input source map to detect the original location. |
| * If you need the position in the PostCSS input, use `error.input.line`. |
| */ |
| line?: number |
| |
| /** |
| * Source column of the error. |
| * |
| * ```js |
| * error.column //=> 1 |
| * error.input.column //=> 4 |
| * ``` |
| * |
| * PostCSS will use the input source map to detect the original location. |
| * If you need the position in the PostCSS input, use `error.input.column`. |
| */ |
| column?: number |
| |
| /** |
| * Source line of the error's end, exclusive. Provided if the error pertains |
| * to a range. |
| * |
| * ```js |
| * error.endLine //=> 3 |
| * error.input.endLine //=> 4 |
| * ``` |
| * |
| * PostCSS will use the input source map to detect the original location. |
| * If you need the position in the PostCSS input, use `error.input.endLine`. |
| */ |
| endLine?: number |
| |
| /** |
| * Source column of the error's end, exclusive. Provided if the error pertains |
| * to a range. |
| * |
| * ```js |
| * error.endColumn //=> 1 |
| * error.input.endColumn //=> 4 |
| * ``` |
| * |
| * PostCSS will use the input source map to detect the original location. |
| * If you need the position in the PostCSS input, use `error.input.endColumn`. |
| */ |
| endColumn?: number |
| |
| /** |
| * Source code of the broken file. |
| * |
| * ```js |
| * error.source //=> 'a { b {} }' |
| * error.input.source //=> 'a b { }' |
| * ``` |
| */ |
| source?: string |
| |
| /** |
| * Plugin name, if error came from plugin. |
| * |
| * ```js |
| * error.plugin //=> 'postcss-vars' |
| * ``` |
| */ |
| plugin?: string |
| |
| /** |
| * Input object with PostCSS internal information |
| * about input file. If input has source map |
| * from previous tool, PostCSS will use origin |
| * (for example, Sass) source. You can use this |
| * object to get PostCSS input source. |
| * |
| * ```js |
| * error.input.file //=> 'a.css' |
| * error.file //=> 'a.sass' |
| * ``` |
| */ |
| input?: FilePosition |
| |
| /** |
| * Returns error position, message and source code of the broken part. |
| * |
| * ```js |
| * error.toString() //=> "CssSyntaxError: app.css:1:1: Unclosed block |
| * // > 1 | a { |
| * // | ^" |
| * ``` |
| * |
| * @return Error position, message and source code. |
| */ |
| toString(): string |
| |
| /** |
| * Returns a few lines of CSS source that caused the error. |
| * |
| * If the CSS has an input source map without `sourceContent`, |
| * this method will return an empty string. |
| * |
| * ```js |
| * error.showSourceCode() //=> " 4 | } |
| * // 5 | a { |
| * // > 6 | bad |
| * // | ^ |
| * // 7 | } |
| * // 8 | b {" |
| * ``` |
| * |
| * @param color Whether arrow will be colored red by terminal |
| * color codes. By default, PostCSS will detect |
| * color support by `process.stdout.isTTY` |
| * and `process.env.NODE_DISABLE_COLORS`. |
| * @return Few lines of CSS source that caused the error. |
| */ |
| showSourceCode(color?: boolean): string |
| } |