2023-07-05 11:02:15 +02:00
"use strict" ;
2023-07-01 10:42:40 +02:00
2023-07-05 11:02:15 +02:00
exports . _ _esModule = true ;
exports . default = void 0 ;
2023-07-01 10:42:40 +02:00
2023-07-05 11:02:15 +02:00
var _picocolors = _interopRequireDefault ( require ( "picocolors" ) ) ;
2023-07-01 10:42:40 +02:00
2023-07-05 11:02:15 +02:00
var _terminalHighlight = _interopRequireDefault ( require ( "./terminal-highlight" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _assertThisInitialized ( self ) { if ( self === void 0 ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return self ; }
function _inheritsLoose ( subClass , superClass ) { subClass . prototype = Object . create ( superClass . prototype ) ; subClass . prototype . constructor = subClass ; subClass . _ _proto _ _ = superClass ; }
function _wrapNativeSuper ( Class ) { var _cache = typeof Map === "function" ? new Map ( ) : undefined ; _wrapNativeSuper = function _wrapNativeSuper ( Class ) { if ( Class === null || ! _isNativeFunction ( Class ) ) return Class ; if ( typeof Class !== "function" ) { throw new TypeError ( "Super expression must either be null or a function" ) ; } if ( typeof _cache !== "undefined" ) { if ( _cache . has ( Class ) ) return _cache . get ( Class ) ; _cache . set ( Class , Wrapper ) ; } function Wrapper ( ) { return _construct ( Class , arguments , _getPrototypeOf ( this ) . constructor ) ; } Wrapper . prototype = Object . create ( Class . prototype , { constructor : { value : Wrapper , enumerable : false , writable : true , configurable : true } } ) ; return _setPrototypeOf ( Wrapper , Class ) ; } ; return _wrapNativeSuper ( Class ) ; }
function _construct ( Parent , args , Class ) { if ( _isNativeReflectConstruct ( ) ) { _construct = Reflect . construct ; } else { _construct = function _construct ( Parent , args , Class ) { var a = [ null ] ; a . push . apply ( a , args ) ; var Constructor = Function . bind . apply ( Parent , a ) ; var instance = new Constructor ( ) ; if ( Class ) _setPrototypeOf ( instance , Class . prototype ) ; return instance ; } ; } return _construct . apply ( null , arguments ) ; }
function _isNativeReflectConstruct ( ) { if ( typeof Reflect === "undefined" || ! Reflect . construct ) return false ; if ( Reflect . construct . sham ) return false ; if ( typeof Proxy === "function" ) return true ; try { Date . prototype . toString . call ( Reflect . construct ( Date , [ ] , function ( ) { } ) ) ; return true ; } catch ( e ) { return false ; } }
function _isNativeFunction ( fn ) { return Function . toString . call ( fn ) . indexOf ( "[native code]" ) !== - 1 ; }
function _setPrototypeOf ( o , p ) { _setPrototypeOf = Object . setPrototypeOf || function _setPrototypeOf ( o , p ) { o . _ _proto _ _ = p ; return o ; } ; return _setPrototypeOf ( o , p ) ; }
function _getPrototypeOf ( o ) { _getPrototypeOf = Object . setPrototypeOf ? Object . getPrototypeOf : function _getPrototypeOf ( o ) { return o . _ _proto _ _ || Object . getPrototypeOf ( o ) ; } ; return _getPrototypeOf ( o ) ; }
/ * *
* The CSS parser throws this error for broken CSS .
*
* Custom parsers can throw this error for broken custom syntax using
* the { @ link 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 ` .
*
* @ example
* // Catching and checking syntax error
* try {
* postcss . parse ( 'a{' )
* } catch ( error ) {
* if ( error . name === 'CssSyntaxError' ) {
* error //=> CssSyntaxError
* }
* }
*
* @ example
* // Raising error from plugin
* throw node . error ( 'Unknown variable' , { plugin : 'postcss-vars' } )
* /
var CssSyntaxError = /*#__PURE__*/ function ( _Error ) {
_inheritsLoose ( CssSyntaxError , _Error ) ;
/ * *
* @ param { string } message Error message .
* @ param { number } [ line ] Source line of the error .
* @ param { number } [ column ] Source column of the error .
* @ param { string } [ source ] Source code of the broken file .
* @ param { string } [ file ] Absolute path to the broken file .
* @ param { string } [ plugin ] PostCSS plugin name , if error came from plugin .
* /
function CssSyntaxError ( message , line , column , source , file , plugin ) {
var _this ;
_this = _Error . call ( this , message ) || this ;
/ * *
* 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 .
*
* @ type { string }
*
* @ example
* if ( error . name === 'CssSyntaxError' ) {
* error //=> CssSyntaxError
* }
* /
_this . name = 'CssSyntaxError' ;
/ * *
* Error message .
*
* @ type { string }
*
* @ example
* error . message //=> 'Unclosed block'
* /
_this . reason = message ;
2023-07-01 10:42:40 +02:00
if ( file ) {
2023-07-05 11:02:15 +02:00
/ * *
* Absolute path to the broken file .
*
* @ type { string }
*
* @ example
* error . file //=> 'a.sass'
* error . input . file //=> 'a.css'
* /
_this . file = file ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
2023-07-01 10:42:40 +02:00
if ( source ) {
2023-07-05 11:02:15 +02:00
/ * *
* Source code of the broken file .
*
* @ type { string }
*
* @ example
* error . source //=> 'a { b {} }'
* error . input . column //=> 'a b { }'
* /
_this . source = source ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
2023-07-01 10:42:40 +02:00
if ( plugin ) {
2023-07-05 11:02:15 +02:00
/ * *
* Plugin name , if error came from plugin .
*
* @ type { string }
*
* @ example
* error . plugin //=> 'postcss-vars'
* /
_this . plugin = plugin ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
2023-07-01 10:42:40 +02:00
if ( typeof line !== 'undefined' && typeof column !== 'undefined' ) {
2023-07-05 11:02:15 +02:00
/ * *
* Source line of the error .
*
* @ type { number }
*
* @ example
* error . line //=> 2
* error . input . line //=> 4
* /
_this . line = line ;
/ * *
* Source column of the error .
*
* @ type { number }
*
* @ example
* error . column //=> 1
* error . input . column //=> 4
* /
_this . column = column ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
_this . setMessage ( ) ;
2023-07-01 10:42:40 +02:00
if ( Error . captureStackTrace ) {
2023-07-05 11:02:15 +02:00
Error . captureStackTrace ( _assertThisInitialized ( _this ) , CssSyntaxError ) ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
return _this ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
var _proto = CssSyntaxError . prototype ;
_proto . setMessage = function setMessage ( ) {
/ * *
* Full error text in the GNU error format
* with plugin , file , line and column .
*
* @ type { string }
*
* @ example
* error . message //=> 'a.css:1:1: Unclosed block'
* /
this . message = this . plugin ? this . plugin + ': ' : '' ;
this . message += this . file ? this . file : '<css input>' ;
2023-07-01 10:42:40 +02:00
if ( typeof this . line !== 'undefined' ) {
2023-07-05 11:02:15 +02:00
this . message += ':' + this . line + ':' + this . column ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
this . message += ': ' + this . reason ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
/ * *
* 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 .
*
* @ param { boolean } [ 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 ` .
*
* @ example
* error . showSourceCode ( ) //=> " 4 | }
* // 5 | a {
* // > 6 | bad
* // | ^
* // 7 | }
* // 8 | b {"
*
* @ return { string } Few lines of CSS source that caused the error .
* /
;
2023-07-01 10:42:40 +02:00
2023-07-05 11:02:15 +02:00
_proto . showSourceCode = function showSourceCode ( color ) {
var _this2 = this ;
2023-07-01 10:42:40 +02:00
2023-07-05 11:02:15 +02:00
if ( ! this . source ) return '' ;
var css = this . source ;
if ( _terminalHighlight . default ) {
if ( typeof color === 'undefined' ) color = _picocolors . default . isColorSupported ;
if ( color ) css = ( 0 , _terminalHighlight . default ) ( css ) ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
var lines = css . split ( /\r?\n/ ) ;
var start = Math . max ( this . line - 3 , 0 ) ;
var end = Math . min ( this . line + 2 , lines . length ) ;
var maxWidth = String ( end ) . length ;
2023-07-01 10:42:40 +02:00
2023-07-05 11:02:15 +02:00
function mark ( text ) {
if ( color && _picocolors . default . red ) {
return _picocolors . default . red ( _picocolors . default . bold ( text ) ) ;
}
2023-07-01 10:42:40 +02:00
2023-07-05 11:02:15 +02:00
return text ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
function aside ( text ) {
if ( color && _picocolors . default . gray ) {
return _picocolors . default . gray ( text ) ;
}
return text ;
}
return lines . slice ( start , end ) . map ( function ( line , index ) {
var number = start + 1 + index ;
var gutter = ' ' + ( ' ' + number ) . slice ( - maxWidth ) + ' | ' ;
if ( number === _this2 . line ) {
var spacing = aside ( gutter . replace ( /\d/g , ' ' ) ) + line . slice ( 0 , _this2 . column - 1 ) . replace ( /[^\t]/g , ' ' ) ;
return mark ( '>' ) + aside ( gutter ) + line + '\n ' + spacing + mark ( '^' ) ;
}
return ' ' + aside ( gutter ) + line ;
} ) . join ( '\n' ) ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
/ * *
* Returns error position , message and source code of the broken part .
*
* @ example
* error . toString ( ) //=> "CssSyntaxError: app.css:1:1: Unclosed block
* // > 1 | a {
* // | ^"
*
* @ return { string } Error position , message and source code .
* /
;
_proto . toString = function toString ( ) {
var code = this . showSourceCode ( ) ;
2023-07-01 10:42:40 +02:00
if ( code ) {
2023-07-05 11:02:15 +02:00
code = '\n\n' + code + '\n' ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
return this . name + ': ' + this . message + code ;
2023-07-01 10:42:40 +02:00
}
2023-07-05 11:02:15 +02:00
/ * *
* @ memberof CssSyntaxError #
* @ member { Input } input 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 .
*
* @ example
* error . input . file //=> 'a.css'
* error . file //=> 'a.sass'
* /
;
return CssSyntaxError ;
} ( /*#__PURE__*/ _wrapNativeSuper ( Error ) ) ;
2023-07-01 10:42:40 +02:00
2023-07-05 11:02:15 +02:00
var _default = CssSyntaxError ;
exports . default = _default ;
module . exports = exports . default ;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNzcy1zeW50YXgtZXJyb3IuZXM2Il0sIm5hbWVzIjpbIkNzc1N5bnRheEVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJjb2x1bW4iLCJzb3VyY2UiLCJmaWxlIiwicGx1Z2luIiwibmFtZSIsInJlYXNvbiIsInNldE1lc3NhZ2UiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwic2hvd1NvdXJjZUNvZGUiLCJjb2xvciIsImNzcyIsInRlcm1pbmFsSGlnaGxpZ2h0IiwicGljbyIsImlzQ29sb3JTdXBwb3J0ZWQiLCJsaW5lcyIsInNwbGl0Iiwic3RhcnQiLCJNYXRoIiwibWF4IiwiZW5kIiwibWluIiwibGVuZ3RoIiwibWF4V2lkdGgiLCJTdHJpbmciLCJtYXJrIiwidGV4dCIsInJlZCIsImJvbGQiLCJhc2lkZSIsImdyYXkiLCJzbGljZSIsIm1hcCIsImluZGV4IiwibnVtYmVyIiwiZ3V0dGVyIiwic3BhY2luZyIsInJlcGxhY2UiLCJqb2luIiwidG9TdHJpbmciLCJjb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEyQk1BLGM7OztBQUNKOzs7Ozs7OztBQVFBLDBCQUFhQyxPQUFiLEVBQXNCQyxJQUF0QixFQUE0QkMsTUFBNUIsRUFBb0NDLE1BQXBDLEVBQTRDQyxJQUE1QyxFQUFrREMsTUFBbEQsRUFBMEQ7QUFBQTs7QUFDeEQsOEJBQU1MLE9BQU47QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFhQSxVQUFLTSxJQUFMLEdBQVksZ0JBQVo7QUFDQTs7Ozs7Ozs7O0FBUUEsVUFBS0MsTUFBTCxHQUFjUCxPQUFkOztBQUVBLFFBQUlJLElBQUosRUFBVTtBQUNSOzs7Ozs7Ozs7QUFTQSxZQUFLQSxJQUFMLEdBQVlBLElBQVo7QUFDRDs7QUFDRCxRQUFJRCxNQUFKLEVBQVk7QUFDVjs7Ozs7Ozs7O0FBU0EsWUFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0Q7O0FB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