| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 | 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}
 |