2023-11-14 20:01:30 -08:00
/*! markdownlint 0.32.1 https://github.com/DavidAnson/markdownlint @license MIT */
Update dependencies: c8 to 7.7.2, eslint to 7.28.0, eslint-plugin-jsdoc to 35.1.3, eslint-plugin-unicorn to 33.0.1, globby to 11.0.3, js-yaml to 4.1.0, markdown-it-texmath to 0.9.0, markdownlint-rule-helpers to 0.14.0, ts-loader to 9.2.3, typescript to 4.3.2, webpack to 5.38.1, webpack-cli to 4.7.2.
2021-06-08 22:20:13 -07:00
var markdownlint ;
2021-01-05 20:55:09 -08:00
/******/ ( ( ) => { // webpackBootstrap
/******/ var _ _webpack _modules _ _ = ( {
2019-10-02 20:10:42 -07:00
2021-01-06 19:45:15 -08:00
/***/ "../lib sync recursive" :
/ * ! * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / sync * * * !
\ * * * * * * * * * * * * * * * * * * * * /
/***/ ( ( module ) => {
function webpackEmptyContext ( req ) {
var e = new Error ( "Cannot find module '" + req + "'" ) ;
e . code = 'MODULE_NOT_FOUND' ;
throw e ;
}
2021-02-06 19:23:55 -08:00
webpackEmptyContext . keys = ( ) => ( [ ] ) ;
2021-01-06 19:45:15 -08:00
webpackEmptyContext . resolve = webpackEmptyContext ;
webpackEmptyContext . id = "../lib sync recursive" ;
module . exports = webpackEmptyContext ;
/***/ } ) ,
/***/ "../helpers/helpers.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / helpers / helpers . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
2022-05-04 22:09:11 -07:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-17 04:19:40 +00:00
function _toConsumableArray ( arr ) { return _arrayWithoutHoles ( arr ) || _iterableToArray ( arr ) || _unsupportedIterableToArray ( arr ) || _nonIterableSpread ( ) ; }
function _nonIterableSpread ( ) { throw new TypeError ( "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-07-12 21:58:36 -07:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
2023-01-17 04:19:40 +00:00
function _iterableToArray ( iter ) { if ( typeof Symbol !== "undefined" && iter [ Symbol . iterator ] != null || iter [ "@@iterator" ] != null ) return Array . from ( iter ) ; }
function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) return _arrayLikeToArray ( arr ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-08-26 17:45:39 -07:00
function _typeof ( o ) { "@babel/helpers - typeof" ; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( o ) { return typeof o ; } : function ( o ) { return o && "function" == typeof Symbol && o . constructor === Symbol && o !== Symbol . prototype ? "symbol" : typeof o ; } , _typeof ( o ) ; }
2023-01-29 20:36:53 -08:00
var micromark = _ _webpack _require _ _ ( /*! ./micromark.cjs */ "../helpers/micromark.cjs" ) ;
2023-07-21 22:49:08 -07:00
var _require = _ _webpack _require _ _ ( /*! ./shared.js */ "../helpers/shared.js" ) ,
2023-10-18 23:20:19 -07:00
newLineRe = _require . newLineRe ,
nextLinesRe = _require . nextLinesRe ;
2019-10-02 20:10:42 -07:00
module . exports . newLineRe = newLineRe ;
2023-10-18 23:20:19 -07:00
module . exports . nextLinesRe = nextLinesRe ;
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
// Regular expression for matching common front matter (YAML and TOML)
2023-11-05 20:13:12 -08:00
module . exports . frontMatterRe = /((^---\s*$[\s\S]+?^---\s*)|(^\+\+\+\s*$[\s\S]+?^(\+\+\+|\.\.\.)\s*)|(^\{\s*$[\s\S]+?^\}\s*))(\r\n|\r|\n|$)/m ;
2023-01-17 04:19:40 +00:00
2022-02-12 17:46:46 -08:00
// Regular expression for matching the start of inline disable/enable comments
2023-11-05 20:13:12 -08:00
var inlineCommentStartRe = /(<!--\s*markdownlint-(disable|enable|capture|restore|disable-file|enable-file|disable-line|disable-next-line|configure-file))(?:\s|-->)/gi ;
2022-02-12 17:46:46 -08:00
module . exports . inlineCommentStartRe = inlineCommentStartRe ;
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
// Regular expressions for range matching
2019-12-14 13:50:48 -08:00
module . exports . listItemMarkerRe = /^([\s>]*)(?:[*+-]|\d+[.)])\s+/ ;
2019-10-02 20:10:42 -07:00
module . exports . orderedListItemMarkerRe = /^[\s>]*0*(\d+)[.)]/ ;
2023-01-17 04:19:40 +00:00
2022-08-01 18:48:01 -07:00
// Regular expression for blockquote prefixes
2023-01-17 04:19:40 +00:00
var blockquotePrefixRe = /^[>\s]*/ ;
2022-08-01 18:48:01 -07:00
module . exports . blockquotePrefixRe = blockquotePrefixRe ;
2023-01-17 04:19:40 +00:00
2022-06-01 20:23:08 -07:00
// Regular expression for link reference definitions
2023-01-17 04:19:40 +00:00
var linkReferenceDefinitionRe = /^ {0,3}\[([^\]]*[^\\])\]:/ ;
2022-06-01 20:23:08 -07:00
module . exports . linkReferenceDefinitionRe = linkReferenceDefinitionRe ;
2023-01-17 04:19:40 +00:00
2023-06-24 15:45:51 -07:00
// Regular expression for identifying an HTML entity at the end of a line
2023-11-05 20:13:12 -08:00
module . exports . endOfLineHtmlEntityRe = /&(?:#\d+|#[xX][\da-fA-F]+|[a-zA-Z]{2,31}|blk\d{2}|emsp1[34]|frac\d{2}|sup\d|there4);$/ ;
2023-06-24 15:45:51 -07:00
// Regular expression for identifying a GitHub emoji code at the end of a line
2023-11-05 20:13:12 -08:00
module . exports . endOfLineGemojiCodeRe = /:(?:[abmovx]|[-+]1|100|1234|(?:1st|2nd|3rd)_place_medal|8ball|clock\d{1,4}|e-mail|non-potable_water|o2|t-rex|u5272|u5408|u55b6|u6307|u6708|u6709|u6e80|u7121|u7533|u7981|u7a7a|[a-z]{2,15}2?|[a-z]{1,14}(?:_[a-z\d]{1,16})+):$/ ;
2023-06-24 15:45:51 -07:00
2019-10-02 20:10:42 -07:00
// All punctuation characters (normal and full-width)
2023-01-17 04:19:40 +00:00
var allPunctuation = ".,;:!?。,;:!?" ;
2020-11-24 16:37:11 -08:00
module . exports . allPunctuation = allPunctuation ;
2023-01-17 04:19:40 +00:00
2020-11-24 16:37:11 -08:00
// All punctuation characters without question mark (normal and full-width)
2023-01-17 04:19:40 +00:00
module . exports . allPunctuationNoQuestion = allPunctuation . replace ( /[\?\uFF1F]/g , "" ) ;
2023-07-12 21:58:36 -07:00
/ * *
* Returns true iff the input is a Number .
*
* @ param { Object } obj Object of unknown type .
* @ returns { boolean } True iff obj is a Number .
* /
function isNumber ( obj ) {
2023-01-17 04:19:40 +00:00
return typeof obj === "number" ;
2023-07-12 21:58:36 -07:00
}
module . exports . isNumber = isNumber ;
2023-01-17 04:19:40 +00:00
2023-07-12 21:58:36 -07:00
/ * *
* Returns true iff the input is a String .
*
* @ param { Object } obj Object of unknown type .
* @ returns { boolean } True iff obj is a String .
* /
function isString ( obj ) {
2023-01-17 04:19:40 +00:00
return typeof obj === "string" ;
2023-07-12 21:58:36 -07:00
}
module . exports . isString = isString ;
2023-01-17 04:19:40 +00:00
2023-07-12 21:58:36 -07:00
/ * *
* Returns true iff the input String is empty .
*
* @ param { string } str String of unknown length .
* @ returns { boolean } True iff the input String is empty .
* /
function isEmptyString ( str ) {
2023-01-17 04:19:40 +00:00
return str . length === 0 ;
2023-07-12 21:58:36 -07:00
}
module . exports . isEmptyString = isEmptyString ;
2023-01-17 04:19:40 +00:00
2023-07-12 21:58:36 -07:00
/ * *
* Returns true iff the input is an Object .
*
* @ param { Object } obj Object of unknown type .
* @ returns { boolean } True iff obj is an Object .
* /
function isObject ( obj ) {
2023-07-11 21:44:45 -07:00
return ! ! obj && _typeof ( obj ) === "object" && ! Array . isArray ( obj ) ;
2023-07-12 21:58:36 -07:00
}
module . exports . isObject = isObject ;
2023-07-11 21:44:45 -07:00
2023-07-12 21:58:36 -07:00
/ * *
* Returns true iff the input is a URL .
*
* @ param { Object } obj Object of unknown type .
* @ returns { boolean } True iff obj is a URL .
* /
function isUrl ( obj ) {
2023-07-11 21:44:45 -07:00
return ! ! obj && Object . getPrototypeOf ( obj ) === URL . prototype ;
2023-07-12 21:58:36 -07:00
}
module . exports . isUrl = isUrl ;
/ * *
* Clones the input if it is an Array .
*
* @ param { Object } arr Object of unknown type .
* @ returns { Object } Clone of obj iff obj is an Array .
* /
function cloneIfArray ( arr ) {
return Array . isArray ( arr ) ? _toConsumableArray ( arr ) : arr ;
}
module . exports . cloneIfArray = cloneIfArray ;
/ * *
* Clones the input if it is a URL .
*
* @ param { Object } url Object of unknown type .
* @ returns { Object } Clone of obj iff obj is a URL .
* /
function cloneIfUrl ( url ) {
return isUrl ( url ) ? new URL ( url ) : url ;
}
module . exports . cloneIfUrl = cloneIfUrl ;
2023-01-17 04:19:40 +00:00
2023-10-18 23:45:39 -07:00
/ * *
* Gets a Regular Expression for matching the specified HTML attribute .
*
* @ param { string } name HTML attribute name .
* @ returns { RegExp } Regular Expression for matching .
* /
module . exports . getHtmlAttributeRe = function getHtmlAttributeRe ( name ) {
return new RegExp ( "\\s" . concat ( name , "\\s*=\\s*['\"]?([^'\"\\s>]*)" ) , "iu" ) ;
} ;
2022-02-11 21:54:43 -08:00
/ * *
* Returns true iff the input line is blank ( contains nothing , whitespace , or
* comments ( unclosed start / end comments allowed ) ) .
*
* @ param { string } line Input line .
* @ returns { boolean } True iff line is blank .
* /
function isBlankLine ( line ) {
2023-01-17 04:19:40 +00:00
var startComment = "<!--" ;
var endComment = "-->" ;
var removeComments = function removeComments ( s ) {
// eslint-disable-next-line no-constant-condition
while ( true ) {
var start = s . indexOf ( startComment ) ;
var end = s . indexOf ( endComment ) ;
if ( end !== - 1 && ( start === - 1 || end < start ) ) {
// Unmatched end comment is first
s = s . slice ( end + endComment . length ) ;
} else if ( start !== - 1 && end !== - 1 ) {
// Start comment is before end comment
s = s . slice ( 0 , start ) + s . slice ( end + endComment . length ) ;
} else if ( start !== - 1 && end === - 1 ) {
// Unmatched start comment is last
s = s . slice ( 0 , start ) ;
} else {
// No more comments to remove
return s ;
}
}
} ;
return ! line || ! line . trim ( ) || ! removeComments ( line ) . replace ( />/g , "" ) . trim ( ) ;
2022-02-11 21:54:43 -08:00
}
module . exports . isBlankLine = isBlankLine ;
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Compare function for Array . prototype . sort for ascending order of numbers .
*
* @ param { number } a First number .
* @ param { number } b Second number .
* @ returns { number } Positive value if a > b , negative value if b < a , 0 otherwise .
* /
module . exports . numericSortAscending = function numericSortAscending ( a , b ) {
2023-01-17 04:19:40 +00:00
return a - b ;
2020-01-27 19:19:34 -08:00
} ;
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
// Returns true iff the sorted array contains the specified element
module . exports . includesSorted = function includesSorted ( array , element ) {
2023-01-17 04:19:40 +00:00
var left = 0 ;
var right = array . length - 1 ;
while ( left <= right ) {
// eslint-disable-next-line no-bitwise
var mid = left + right >> 1 ;
if ( array [ mid ] < element ) {
left = mid + 1 ;
} else if ( array [ mid ] > element ) {
right = mid - 1 ;
} else {
return true ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
return false ;
2019-10-02 20:10:42 -07:00
} ;
2023-01-17 04:19:40 +00:00
2021-01-30 14:36:11 -08:00
// Replaces the content of properly-formatted CommonMark comments with "."
2019-10-02 20:10:42 -07:00
// This preserves the line/column information for the rest of the document
2021-01-30 13:08:57 -08:00
// https://spec.commonmark.org/0.29/#html-blocks
// https://spec.commonmark.org/0.29/#html-comment
2023-01-17 04:19:40 +00:00
var htmlCommentBegin = "<!--" ;
var htmlCommentEnd = "-->" ;
var safeCommentCharacter = "." ;
var startsWithPipeRe = /^ *\|/ ;
var notCrLfRe = /[^\r\n]/g ;
var notSpaceCrLfRe = /[^ \r\n]/g ;
var trailingSpaceRe = / +[\r\n]/g ;
var replaceTrailingSpace = function replaceTrailingSpace ( s ) {
return s . replace ( notCrLfRe , safeCommentCharacter ) ;
} ;
2019-10-02 20:10:42 -07:00
module . exports . clearHtmlCommentText = function clearHtmlCommentText ( text ) {
2023-01-17 04:19:40 +00:00
var i = 0 ;
while ( ( i = text . indexOf ( htmlCommentBegin , i ) ) !== - 1 ) {
var j = text . indexOf ( htmlCommentEnd , i + 2 ) ;
if ( j === - 1 ) {
// Un-terminated comments are treated as text
break ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
// If the comment has content...
if ( j > i + htmlCommentBegin . length ) {
var content = text . slice ( i + htmlCommentBegin . length , j ) ;
var lastLf = text . lastIndexOf ( "\n" , i ) + 1 ;
var preText = text . slice ( lastLf , i ) ;
var isBlock = preText . trim ( ) . length === 0 ;
var couldBeTable = startsWithPipeRe . test ( preText ) ;
var spansTableCells = couldBeTable && content . includes ( "\n" ) ;
var isValid = isBlock || ! ( spansTableCells || content . startsWith ( ">" ) || content . startsWith ( "->" ) || content . endsWith ( "-" ) || content . includes ( "--" ) ) ;
// If a valid block/inline comment...
if ( isValid ) {
var clearedContent = content . replace ( notSpaceCrLfRe , safeCommentCharacter ) . replace ( trailingSpaceRe , replaceTrailingSpace ) ;
text = text . slice ( 0 , i + htmlCommentBegin . length ) + clearedContent + text . slice ( j ) ;
}
}
i = j + htmlCommentEnd . length ;
}
return text ;
2019-10-02 20:10:42 -07:00
} ;
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
// Escapes a string for use in a RegExp
module . exports . escapeForRegExp = function escapeForRegExp ( str ) {
2023-01-17 04:19:40 +00:00
return str . replace ( /[-/\\^$*+?.()|[\]{}]/g , "\\$&" ) ;
2019-10-02 20:10:42 -07:00
} ;
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Return the string representation of a fence markup character .
*
* @ param { string } markup Fence string .
* @ returns { string } String representation .
* /
2023-01-17 04:19:40 +00:00
module . exports . fencedCodeBlockStyleFor = function fencedCodeBlockStyleFor ( markup ) {
switch ( markup [ 0 ] ) {
case "~" :
return "tilde" ;
default :
return "backtick" ;
}
} ;
2021-10-21 06:42:48 +02:00
/ * *
* Return the string representation of a emphasis or strong markup character .
*
* @ param { string } markup Emphasis or strong string .
* @ returns { string } String representation .
* /
2023-01-17 04:19:40 +00:00
module . exports . emphasisOrStrongStyleFor = function emphasisOrStrongStyleFor ( markup ) {
switch ( markup [ 0 ] ) {
case "*" :
return "asterisk" ;
default :
return "underscore" ;
}
} ;
2020-01-27 19:19:34 -08:00
/ * *
* Return the number of characters of indent for a token .
*
* @ param { Object } token MarkdownItToken instance .
* @ returns { number } Characters of indent .
* /
2019-10-02 20:10:42 -07:00
function indentFor ( token ) {
2023-01-17 04:19:40 +00:00
var line = token . line . replace ( /^[\s>]*(> |>)/ , "" ) ;
return line . length - line . trimStart ( ) . length ;
2019-10-02 20:10:42 -07:00
}
module . exports . indentFor = indentFor ;
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
// Returns the heading style for a heading token
module . exports . headingStyleFor = function headingStyleFor ( token ) {
2023-01-17 04:19:40 +00:00
if ( token . map [ 1 ] - token . map [ 0 ] === 1 ) {
if ( /[^\\]#\s*$/ . test ( token . line ) ) {
return "atx_closed" ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
return "atx" ;
}
return "setext" ;
2019-10-02 20:10:42 -07:00
} ;
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Return the string representation of an unordered list marker .
*
* @ param { Object } token MarkdownItToken instance .
* @ returns { string } String representation .
* /
module . exports . unorderedListStyleFor = function unorderedListStyleFor ( token ) {
2023-01-17 04:19:40 +00:00
switch ( token . markup ) {
case "-" :
return "dash" ;
case "+" :
return "plus" ;
// case "*":
default :
return "asterisk" ;
}
2020-01-27 19:19:34 -08:00
} ;
2023-01-17 04:19:40 +00:00
2023-09-04 21:41:16 -07:00
/ * *
* @ callback TokenCallback
* @ param { MarkdownItToken } token Current token .
* @ returns { void }
* /
2020-01-27 19:19:34 -08:00
/ * *
* Calls the provided function for each matching token .
*
* @ param { Object } params RuleParams instance .
* @ param { string } type Token type identifier .
2023-09-04 21:41:16 -07:00
* @ param { TokenCallback } handler Callback function .
2020-01-27 19:19:34 -08:00
* @ returns { void }
* /
2019-10-02 20:10:42 -07:00
function filterTokens ( params , type , handler ) {
2023-02-18 21:41:07 -08:00
var _iterator = _createForOfIteratorHelper ( params . parsers . markdownit . tokens ) ,
2023-01-17 04:19:40 +00:00
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var token = _step . value ;
if ( token . type === type ) {
handler ( token ) ;
}
2022-06-07 22:59:48 -07:00
}
2023-01-17 04:19:40 +00:00
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
2019-10-02 20:10:42 -07:00
}
module . exports . filterTokens = filterTokens ;
2023-01-17 04:19:40 +00:00
2023-09-04 21:41:16 -07:00
/ * *
* @ typedef { Array } LineMetadata
* /
/ * *
* Gets a line metadata array .
*
* @ param { Object } params RuleParams instance .
* @ returns { LineMetadata } Line metadata .
* /
function getLineMetadata ( params ) {
2023-01-17 04:19:40 +00:00
var lineMetadata = params . lines . map ( function ( line , index ) {
2023-07-24 21:36:55 -07:00
return [ line , index , false , 0 , false , false , false ] ;
2023-01-17 04:19:40 +00:00
} ) ;
filterTokens ( params , "fence" , function ( token ) {
lineMetadata [ token . map [ 0 ] ] [ 3 ] = 1 ;
lineMetadata [ token . map [ 1 ] - 1 ] [ 3 ] = - 1 ;
for ( var i = token . map [ 0 ] + 1 ; i < token . map [ 1 ] - 1 ; i ++ ) {
lineMetadata [ i ] [ 2 ] = true ;
}
} ) ;
filterTokens ( params , "code_block" , function ( token ) {
for ( var i = token . map [ 0 ] ; i < token . map [ 1 ] ; i ++ ) {
lineMetadata [ i ] [ 2 ] = true ;
2022-06-08 22:10:27 -07:00
}
2023-01-17 04:19:40 +00:00
} ) ;
filterTokens ( params , "table_open" , function ( token ) {
for ( var i = token . map [ 0 ] ; i < token . map [ 1 ] ; i ++ ) {
lineMetadata [ i ] [ 4 ] = true ;
}
} ) ;
filterTokens ( params , "list_item_open" , function ( token ) {
var count = 1 ;
for ( var i = token . map [ 0 ] ; i < token . map [ 1 ] ; i ++ ) {
lineMetadata [ i ] [ 5 ] = count ;
count ++ ;
}
} ) ;
filterTokens ( params , "hr" , function ( token ) {
lineMetadata [ token . map [ 0 ] ] [ 6 ] = true ;
} ) ;
return lineMetadata ;
2023-09-04 21:41:16 -07:00
}
module . exports . getLineMetadata = getLineMetadata ;
/ * *
* @ callback EachLineCallback
* @ param { string } line Line content .
* @ param { number } lineIndex Line index ( 0 - based ) .
* @ param { boolean } inCode Iff in a code block .
* @ param { number } onFence + if open , - if closed , 0 otherwise .
* @ param { boolean } inTable Iff in a table .
* @ param { boolean } inItem Iff in a list item .
* @ param { boolean } inBreak Iff in semantic break .
* @ returns { void }
* /
2023-01-17 04:19:40 +00:00
2021-11-23 04:40:05 +00:00
/ * *
* Calls the provided function for each line .
*
2023-09-04 21:41:16 -07:00
* @ param { LineMetadata } lineMetadata Line metadata object .
* @ param { EachLineCallback } handler Function taking ( line , lineIndex , inCode ,
* onFence , inTable , inItem , inBreak ) .
2021-11-23 04:40:05 +00:00
* @ returns { void }
* /
function forEachLine ( lineMetadata , handler ) {
2023-07-24 21:36:55 -07:00
var _iterator2 = _createForOfIteratorHelper ( lineMetadata ) ,
_step2 ;
2023-01-17 04:19:40 +00:00
try {
2023-07-24 21:36:55 -07:00
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
var metadata = _step2 . value ;
2023-09-04 21:41:16 -07:00
// @ts-ignore
2023-01-17 04:19:40 +00:00
handler . apply ( void 0 , _toConsumableArray ( metadata ) ) ;
2022-06-08 22:10:27 -07:00
}
2023-01-17 04:19:40 +00:00
} catch ( err ) {
2023-07-24 21:36:55 -07:00
_iterator2 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-07-24 21:36:55 -07:00
_iterator2 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
2021-11-23 04:40:05 +00:00
}
module . exports . forEachLine = forEachLine ;
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
// Returns (nested) lists as a flat array (in order)
2021-06-17 22:01:27 -07:00
module . exports . flattenLists = function flattenLists ( tokens ) {
2023-01-17 04:19:40 +00:00
var flattenedLists = [ ] ;
var stack = [ ] ;
var current = null ;
var nesting = 0 ;
var nestingStack = [ ] ;
var lastWithMap = {
"map" : [ 0 , 1 ]
} ;
2023-07-24 21:36:55 -07:00
var _iterator3 = _createForOfIteratorHelper ( tokens ) ,
_step3 ;
2023-01-17 04:19:40 +00:00
try {
2023-07-24 21:36:55 -07:00
for ( _iterator3 . s ( ) ; ! ( _step3 = _iterator3 . n ( ) ) . done ; ) {
var token = _step3 . value ;
2023-01-17 04:19:40 +00:00
if ( token . type === "bullet_list_open" || token . type === "ordered_list_open" ) {
// Save current context and start a new one
stack . push ( current ) ;
current = {
"unordered" : token . type === "bullet_list_open" ,
"parentsUnordered" : ! current || current . unordered && current . parentsUnordered ,
"open" : token ,
"indent" : indentFor ( token ) ,
"parentIndent" : current && current . indent || 0 ,
"items" : [ ] ,
"nesting" : nesting ,
"lastLineIndex" : - 1 ,
"insert" : flattenedLists . length
} ;
nesting ++ ;
} else if ( token . type === "bullet_list_close" || token . type === "ordered_list_close" ) {
// Finalize current context and restore previous
current . lastLineIndex = lastWithMap . map [ 1 ] ;
flattenedLists . splice ( current . insert , 0 , current ) ;
delete current . insert ;
current = stack . pop ( ) ;
nesting -- ;
} else if ( token . type === "list_item_open" ) {
// Add list item
current . items . push ( token ) ;
} else if ( token . type === "blockquote_open" ) {
nestingStack . push ( nesting ) ;
nesting = 0 ;
} else if ( token . type === "blockquote_close" ) {
nesting = nestingStack . pop ( ) || 0 ;
}
if ( token . map ) {
// Track last token with map
lastWithMap = token ;
}
2022-06-08 22:10:27 -07:00
}
2023-01-17 04:19:40 +00:00
} catch ( err ) {
2023-07-24 21:36:55 -07:00
_iterator3 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-07-24 21:36:55 -07:00
_iterator3 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
return flattenedLists ;
2019-10-02 20:10:42 -07:00
} ;
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
// Calls the provided function for each heading's content
module . exports . forEachHeading = function forEachHeading ( params , handler ) {
2023-01-17 04:19:40 +00:00
var heading = null ;
2023-08-04 20:53:38 -07:00
var _iterator4 = _createForOfIteratorHelper ( params . parsers . markdownit . tokens ) ,
_step4 ;
2023-01-17 04:19:40 +00:00
try {
2023-08-04 20:53:38 -07:00
for ( _iterator4 . s ( ) ; ! ( _step4 = _iterator4 . n ( ) ) . done ; ) {
var token = _step4 . value ;
2023-01-17 04:19:40 +00:00
if ( token . type === "heading_open" ) {
heading = token ;
} else if ( token . type === "heading_close" ) {
heading = null ;
} else if ( token . type === "inline" && heading ) {
handler ( heading , token . content , token ) ;
}
2022-06-08 22:10:27 -07:00
}
2023-01-17 04:19:40 +00:00
} catch ( err ) {
2023-08-04 20:53:38 -07:00
_iterator4 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-08-04 20:53:38 -07:00
_iterator4 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2023-01-17 04:19:40 +00:00
2023-09-04 21:41:16 -07:00
/ * *
* @ callback InlineCodeSpanCallback
* @ param { string } code Code content .
* @ param { number } lineIndex Line index ( 0 - based ) .
* @ param { number } columnIndex Column index ( 0 - based ) .
* @ param { number } ticks Count of backticks .
* @ returns { void }
* /
2020-04-25 21:15:13 -07:00
/ * *
* Calls the provided function for each inline code span ' s content .
*
* @ param { string } input Markdown content .
2023-09-04 21:41:16 -07:00
* @ param { InlineCodeSpanCallback } handler Callback function taking ( code ,
* lineIndex , columnIndex , ticks ) .
2020-04-25 21:15:13 -07:00
* @ returns { void }
* /
function forEachInlineCodeSpan ( input , handler ) {
2023-01-17 04:19:40 +00:00
var backtickRe = /`+/g ;
var match = null ;
var backticksLengthAndIndex = [ ] ;
while ( ( match = backtickRe . exec ( input ) ) !== null ) {
backticksLengthAndIndex . push ( [ match [ 0 ] . length , match . index ] ) ;
}
var newLinesIndex = [ ] ;
while ( ( match = newLineRe . exec ( input ) ) !== null ) {
newLinesIndex . push ( match . index ) ;
}
var lineIndex = 0 ;
var lineStartIndex = 0 ;
var k = 0 ;
for ( var i = 0 ; i < backticksLengthAndIndex . length - 1 ; i ++ ) {
var _backticksLengthAndIn = _slicedToArray ( backticksLengthAndIndex [ i ] , 2 ) ,
startLength = _backticksLengthAndIn [ 0 ] ,
startIndex = _backticksLengthAndIn [ 1 ] ;
if ( startIndex === 0 || input [ startIndex - 1 ] !== "\\" ) {
for ( var j = i + 1 ; j < backticksLengthAndIndex . length ; j ++ ) {
var _backticksLengthAndIn2 = _slicedToArray ( backticksLengthAndIndex [ j ] , 2 ) ,
endLength = _backticksLengthAndIn2 [ 0 ] ,
endIndex = _backticksLengthAndIn2 [ 1 ] ;
if ( startLength === endLength ) {
for ( ; k < newLinesIndex . length ; k ++ ) {
var newLineIndex = newLinesIndex [ k ] ;
if ( startIndex < newLineIndex ) {
break ;
2020-04-25 21:15:13 -07:00
}
2023-01-17 04:19:40 +00:00
lineIndex ++ ;
lineStartIndex = newLineIndex + 1 ;
}
var columnIndex = startIndex - lineStartIndex + startLength ;
handler ( input . slice ( startIndex + startLength , endIndex ) , lineIndex , columnIndex , startLength ) ;
i = j ;
break ;
}
}
2020-04-25 21:15:13 -07:00
}
2023-01-17 04:19:40 +00:00
}
2020-04-25 21:15:13 -07:00
}
module . exports . forEachInlineCodeSpan = forEachInlineCodeSpan ;
2023-01-17 04:19:40 +00:00
2022-06-01 20:23:08 -07:00
/ * *
* Adds ellipsis to the left / right / middle of the specified text .
*
* @ param { string } text Text to ellipsify .
* @ param { boolean } [ start ] True iff the start of the text is important .
* @ param { boolean } [ end ] True iff the end of the text is important .
* @ returns { string } Ellipsified text .
* /
function ellipsify ( text , start , end ) {
2023-01-17 04:19:40 +00:00
if ( text . length <= 30 ) {
// Nothing to do
} else if ( start && end ) {
text = text . slice ( 0 , 15 ) + "..." + text . slice ( - 15 ) ;
} else if ( end ) {
text = "..." + text . slice ( - 30 ) ;
} else {
text = text . slice ( 0 , 30 ) + "..." ;
}
return text ;
2022-06-01 20:23:08 -07:00
}
module . exports . ellipsify = ellipsify ;
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Adds a generic error object via the onError callback .
*
* @ param { Object } onError RuleOnError instance .
* @ param { number } lineNumber Line number .
* @ param { string } [ detail ] Error details .
* @ param { string } [ context ] Error context .
* @ param { number [ ] } [ range ] Column and length of error .
* @ param { Object } [ fixInfo ] RuleOnErrorFixInfo instance .
* @ returns { void }
* /
2019-10-02 20:10:42 -07:00
function addError ( onError , lineNumber , detail , context , range , fixInfo ) {
2023-01-17 04:19:40 +00:00
onError ( {
lineNumber : lineNumber ,
detail : detail ,
context : context ,
range : range ,
fixInfo : fixInfo
} ) ;
2019-10-02 20:10:42 -07:00
}
module . exports . addError = addError ;
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
// Adds an error object with details conditionally via the onError callback
module . exports . addErrorDetailIf = function addErrorDetailIf ( onError , lineNumber , expected , actual , detail , context , range , fixInfo ) {
2023-01-17 04:19:40 +00:00
if ( expected !== actual ) {
addError ( onError , lineNumber , "Expected: " + expected + "; Actual: " + actual + ( detail ? "; " + detail : "" ) , context , range , fixInfo ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
// Adds an error object with context via the onError callback
module . exports . addErrorContext = function addErrorContext ( onError , lineNumber , context , left , right , range , fixInfo ) {
2023-01-17 04:19:40 +00:00
context = ellipsify ( context , left , right ) ;
addError ( onError , lineNumber , undefined , context , range , fixInfo ) ;
2019-10-02 20:10:42 -07:00
} ;
2023-01-17 04:19:40 +00:00
2021-06-17 21:50:03 -07:00
/ * *
2021-11-23 04:40:05 +00:00
* Returns an array of code block and span content ranges .
2021-06-17 21:50:03 -07:00
*
2021-11-23 04:40:05 +00:00
* @ param { Object } params RuleParams instance .
* @ param { Object } lineMetadata Line metadata object .
* @ returns { number [ ] [ ] } Array of ranges ( lineIndex , columnIndex , length ) .
2021-06-17 21:50:03 -07:00
* /
2023-01-17 04:19:40 +00:00
module . exports . codeBlockAndSpanRanges = function ( params , lineMetadata ) {
var exclusions = [ ] ;
// Add code block ranges (excludes fences)
forEachLine ( lineMetadata , function ( line , lineIndex , inCode , onFence ) {
if ( inCode && ! onFence ) {
exclusions . push ( [ lineIndex , 0 , line . length ] ) ;
}
} ) ;
// Add code span ranges (excludes ticks)
filterTokens ( params , "inline" , function ( token ) {
if ( token . children . some ( function ( child ) {
return child . type === "code_inline" ;
} ) ) {
var tokenLines = params . lines . slice ( token . map [ 0 ] , token . map [ 1 ] ) ;
forEachInlineCodeSpan ( tokenLines . join ( "\n" ) , function ( code , lineIndex , columnIndex ) {
var codeLines = code . split ( newLineRe ) ;
2023-08-04 20:53:38 -07:00
var _iterator5 = _createForOfIteratorHelper ( codeLines . entries ( ) ) ,
_step5 ;
2023-01-17 04:19:40 +00:00
try {
2023-08-04 20:53:38 -07:00
for ( _iterator5 . s ( ) ; ! ( _step5 = _iterator5 . n ( ) ) . done ; ) {
var _step5$value = _slicedToArray ( _step5 . value , 2 ) ,
i = _step5$value [ 0 ] ,
line = _step5$value [ 1 ] ;
2023-01-17 04:19:40 +00:00
exclusions . push ( [ token . lineNumber - 1 + lineIndex + i , i ? 0 : columnIndex , line . length ] ) ;
}
} catch ( err ) {
2023-08-04 20:53:38 -07:00
_iterator5 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-08-04 20:53:38 -07:00
_iterator5 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
} ) ;
}
} ) ;
return exclusions ;
2021-06-17 21:50:03 -07:00
} ;
2023-01-17 04:19:40 +00:00
2022-06-01 20:23:08 -07:00
/ * *
* Determines whether the specified range is within another range .
*
* @ param { number [ ] [ ] } ranges Array of ranges ( line , index , length ) .
* @ param { number } lineIndex Line index to check .
* @ param { number } index Index to check .
* @ param { number } length Length to check .
* @ returns { boolean } True iff the specified range is within .
* /
2023-01-17 04:19:40 +00:00
var withinAnyRange = function withinAnyRange ( ranges , lineIndex , index , length ) {
return ! ranges . every ( function ( span ) {
return lineIndex !== span [ 0 ] || index < span [ 1 ] || index + length > span [ 1 ] + span [ 2 ] ;
} ) ;
} ;
2022-06-02 22:17:32 -07:00
module . exports . withinAnyRange = withinAnyRange ;
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
// Returns a range object for a line by applying a RegExp
module . exports . rangeFromRegExp = function rangeFromRegExp ( line , regexp ) {
2023-01-17 04:19:40 +00:00
var range = null ;
var match = line . match ( regexp ) ;
if ( match ) {
var column = match . index + 1 ;
var length = match [ 0 ] . length ;
range = [ column , length ] ;
}
return range ;
2019-10-02 20:10:42 -07:00
} ;
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
// Determines if the front matter includes a title
2023-01-17 04:19:40 +00:00
module . exports . frontMatterHasTitle = function frontMatterHasTitle ( frontMatterLines , frontMatterTitlePattern ) {
var ignoreFrontMatter = frontMatterTitlePattern !== undefined && ! frontMatterTitlePattern ;
var frontMatterTitleRe = new RegExp ( String ( frontMatterTitlePattern || "^\\s*\"?title\"?\\s*[:=]" ) , "i" ) ;
return ! ignoreFrontMatter && frontMatterLines . some ( function ( line ) {
return frontMatterTitleRe . test ( line ) ;
} ) ;
} ;
2022-06-01 20:23:08 -07:00
/ * *
* Returns an object with information about reference links and images .
*
2023-01-29 20:36:53 -08:00
* @ param { Object } params RuleParams instance .
2022-06-01 20:23:08 -07:00
* @ returns { Object } Reference link / image data .
* /
2023-01-29 20:36:53 -08:00
function getReferenceLinkImageData ( params ) {
var normalizeReference = function normalizeReference ( s ) {
2023-01-17 04:19:40 +00:00
return s . toLowerCase ( ) . trim ( ) . replace ( /\s+/g , " " ) ;
} ;
2023-01-29 20:36:53 -08:00
var definitions = new Map ( ) ;
var definitionLineIndices = [ ] ;
var duplicateDefinitions = [ ] ;
var references = new Map ( ) ;
var shortcuts = new Map ( ) ;
2023-02-05 16:58:06 -08:00
var filteredTokens = micromark . filterByTypes ( params . parsers . micromark . tokens , [
2023-01-29 20:36:53 -08:00
// definitionLineIndices
"definition" , "gfmFootnoteDefinition" ,
// definitions and definitionLineIndices
"definitionLabelString" , "gfmFootnoteDefinitionLabelString" ,
// references and shortcuts
2023-02-05 16:58:06 -08:00
"gfmFootnoteCall" , "image" , "link" ] ) ;
2023-08-04 20:53:38 -07:00
var _iterator6 = _createForOfIteratorHelper ( filteredTokens ) ,
_step6 ;
2023-01-29 20:36:53 -08:00
try {
2023-08-04 20:53:38 -07:00
for ( _iterator6 . s ( ) ; ! ( _step6 = _iterator6 . n ( ) ) . done ; ) {
var token = _step6 . value ;
2023-01-29 20:36:53 -08:00
var labelPrefix = "" ;
// eslint-disable-next-line default-case
switch ( token . type ) {
case "definition" :
case "gfmFootnoteDefinition" :
// definitionLineIndices
for ( var i = token . startLine ; i <= token . endLine ; i ++ ) {
definitionLineIndices . push ( i - 1 ) ;
2023-01-17 04:19:40 +00:00
}
2023-01-29 20:36:53 -08:00
break ;
case "gfmFootnoteDefinitionLabelString" :
labelPrefix = "^" ;
case "definitionLabelString" :
// eslint-disable-line no-fallthrough
{
// definitions and definitionLineIndices
var reference = normalizeReference ( "" . concat ( labelPrefix ) . concat ( token . text ) ) ;
if ( definitions . has ( reference ) ) {
duplicateDefinitions . push ( [ reference , token . startLine - 1 ] ) ;
} else {
2023-10-25 20:05:19 -07:00
var destinationString = null ;
var parent = micromark . getTokenParentOfType ( token , [ "definition" ] ) ;
if ( parent ) {
destinationString = micromark . getTokenTextByType ( micromark . filterByPredicate ( parent . children ) , "definitionDestinationString" ) ;
}
definitions . set ( reference , [ token . startLine - 1 , destinationString ] ) ;
2023-01-29 20:36:53 -08:00
}
2023-01-17 04:19:40 +00:00
}
2023-01-29 20:36:53 -08:00
break ;
case "gfmFootnoteCall" :
case "image" :
case "link" :
{
var isShortcut = false ;
var isFullOrCollapsed = false ;
var labelText = null ;
var referenceStringText = null ;
2023-02-25 15:42:28 -08:00
var shortcutCandidate = micromark . matchAndGetTokensByType ( token . children , [ "label" ] ) ;
2023-01-29 20:36:53 -08:00
if ( shortcutCandidate ) {
2023-02-25 15:42:28 -08:00
labelText = micromark . getTokenTextByType ( shortcutCandidate [ 0 ] . children , "labelText" ) ;
2023-01-29 20:36:53 -08:00
isShortcut = labelText !== null ;
}
2023-02-25 15:42:28 -08:00
var fullAndCollapsedCandidate = micromark . matchAndGetTokensByType ( token . children , [ "label" , "reference" ] ) ;
2023-01-29 20:36:53 -08:00
if ( fullAndCollapsedCandidate ) {
2023-02-25 15:42:28 -08:00
labelText = micromark . getTokenTextByType ( fullAndCollapsedCandidate [ 0 ] . children , "labelText" ) ;
referenceStringText = micromark . getTokenTextByType ( fullAndCollapsedCandidate [ 1 ] . children , "referenceString" ) ;
2023-01-29 20:36:53 -08:00
isFullOrCollapsed = labelText !== null ;
}
2023-02-25 15:42:28 -08:00
var footnote = micromark . matchAndGetTokensByType ( token . children , [ "gfmFootnoteCallLabelMarker" , "gfmFootnoteCallMarker" , "gfmFootnoteCallString" , "gfmFootnoteCallLabelMarker" ] , [ "gfmFootnoteCallMarker" , "gfmFootnoteCallString" ] ) ;
2023-01-29 20:36:53 -08:00
if ( footnote ) {
2023-02-23 22:14:44 -08:00
var callMarkerText = footnote [ 0 ] . text ;
var callString = footnote [ 1 ] . text ;
2023-01-29 20:36:53 -08:00
labelText = "" . concat ( callMarkerText ) . concat ( callString ) ;
isShortcut = true ;
}
// Track shortcuts separately due to ambiguity in "text [text] text"
if ( isShortcut || isFullOrCollapsed ) {
var referenceDatum = [ token . startLine - 1 , token . startColumn - 1 , token . text . length ,
// @ts-ignore
labelText . length , ( referenceStringText || "" ) . length ] ;
var _reference = normalizeReference ( referenceStringText || labelText ) ;
var dictionary = isShortcut ? shortcuts : references ;
var referenceData = dictionary . get ( _reference ) || [ ] ;
referenceData . push ( referenceDatum ) ;
dictionary . set ( _reference , referenceData ) ;
}
2023-01-17 04:19:40 +00:00
}
2023-01-29 20:36:53 -08:00
break ;
2023-01-17 04:19:40 +00:00
}
2022-06-01 20:23:08 -07:00
}
2023-01-29 20:36:53 -08:00
} catch ( err ) {
2023-08-04 20:53:38 -07:00
_iterator6 . e ( err ) ;
2023-01-29 20:36:53 -08:00
} finally {
2023-08-04 20:53:38 -07:00
_iterator6 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
return {
references : references ,
shortcuts : shortcuts ,
definitions : definitions ,
duplicateDefinitions : duplicateDefinitions ,
definitionLineIndices : definitionLineIndices
} ;
2022-06-01 20:23:08 -07:00
}
module . exports . getReferenceLinkImageData = getReferenceLinkImageData ;
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Gets the most common line ending , falling back to the platform default .
*
* @ param { string } input Markdown content to analyze .
2022-05-06 21:04:34 -07:00
* @ param { Object } [ os ] Node . js "os" module .
2020-01-27 19:19:34 -08:00
* @ returns { string } Preferred line ending .
* /
2022-05-06 21:04:34 -07:00
function getPreferredLineEnding ( input , os ) {
2023-01-17 04:19:40 +00:00
var cr = 0 ;
var lf = 0 ;
var crlf = 0 ;
var endings = input . match ( newLineRe ) || [ ] ;
2023-08-04 20:53:38 -07:00
var _iterator7 = _createForOfIteratorHelper ( endings ) ,
_step7 ;
2023-01-17 04:19:40 +00:00
try {
2023-08-04 20:53:38 -07:00
for ( _iterator7 . s ( ) ; ! ( _step7 = _iterator7 . n ( ) ) . done ; ) {
var ending = _step7 . value ;
2023-01-17 04:19:40 +00:00
// eslint-disable-next-line default-case
switch ( ending ) {
case "\r" :
cr ++ ;
break ;
case "\n" :
lf ++ ;
break ;
case "\r\n" :
crlf ++ ;
break ;
}
2022-06-08 22:10:27 -07:00
}
2023-01-17 04:19:40 +00:00
} catch ( err ) {
2023-08-04 20:53:38 -07:00
_iterator7 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-08-04 20:53:38 -07:00
_iterator7 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
var preferredLineEnding = null ;
if ( ! cr && ! lf && ! crlf ) {
preferredLineEnding = os && os . EOL || "\n" ;
} else if ( lf >= crlf && lf >= cr ) {
preferredLineEnding = "\n" ;
} else if ( crlf >= cr ) {
preferredLineEnding = "\r\n" ;
} else {
preferredLineEnding = "\r" ;
}
return preferredLineEnding ;
2019-10-02 20:10:42 -07:00
}
module . exports . getPreferredLineEnding = getPreferredLineEnding ;
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Normalizes the fields of a RuleOnErrorFixInfo instance .
*
* @ param { Object } fixInfo RuleOnErrorFixInfo instance .
* @ param { number } [ lineNumber ] Line number .
* @ returns { Object } Normalized RuleOnErrorFixInfo instance .
* /
2019-10-02 20:10:42 -07:00
function normalizeFixInfo ( fixInfo , lineNumber ) {
2023-01-17 04:19:40 +00:00
return {
"lineNumber" : fixInfo . lineNumber || lineNumber ,
"editColumn" : fixInfo . editColumn || 1 ,
"deleteCount" : fixInfo . deleteCount || 0 ,
"insertText" : fixInfo . insertText || ""
} ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Fixes the specified error on a line of Markdown content .
*
* @ param { string } line Line of Markdown content .
* @ param { Object } fixInfo RuleOnErrorFixInfo instance .
2022-02-09 22:44:49 -08:00
* @ param { string } [ lineEnding ] Line ending to use .
2022-06-12 17:51:47 -07:00
* @ returns { string | null } Fixed content .
2020-01-27 19:19:34 -08:00
* /
2019-10-02 20:10:42 -07:00
function applyFix ( line , fixInfo , lineEnding ) {
2023-01-17 04:19:40 +00:00
var _normalizeFixInfo = normalizeFixInfo ( fixInfo ) ,
editColumn = _normalizeFixInfo . editColumn ,
deleteCount = _normalizeFixInfo . deleteCount ,
insertText = _normalizeFixInfo . insertText ;
var editIndex = editColumn - 1 ;
return deleteCount === - 1 ? null : line . slice ( 0 , editIndex ) + insertText . replace ( /\n/g , lineEnding || "\n" ) + line . slice ( editIndex + deleteCount ) ;
2019-10-02 20:10:42 -07:00
}
module . exports . applyFix = applyFix ;
2023-01-17 04:19:40 +00:00
2022-02-09 22:44:49 -08:00
/ * *
* Applies as many fixes as possible to Markdown content .
*
* @ param { string } input Lines of Markdown content .
* @ param { Object [ ] } errors RuleOnErrorInfo instances .
* @ returns { string } Corrected content .
* /
2022-05-05 23:14:18 -07:00
function applyFixes ( input , errors ) {
2023-01-17 04:19:40 +00:00
var lineEnding = getPreferredLineEnding ( input , _ _webpack _require _ _ ( /*! node:os */ "?0176" ) ) ;
var lines = input . split ( newLineRe ) ;
// Normalize fixInfo objects
var fixInfos = errors . filter ( function ( error ) {
return error . fixInfo ;
} ) . map ( function ( error ) {
return normalizeFixInfo ( error . fixInfo , error . lineNumber ) ;
} ) ;
// Sort bottom-to-top, line-deletes last, right-to-left, long-to-short
fixInfos . sort ( function ( a , b ) {
var aDeletingLine = a . deleteCount === - 1 ;
var bDeletingLine = b . deleteCount === - 1 ;
return b . lineNumber - a . lineNumber || ( aDeletingLine ? 1 : bDeletingLine ? - 1 : 0 ) || b . editColumn - a . editColumn || b . insertText . length - a . insertText . length ;
} ) ;
// Remove duplicate entries (needed for following collapse step)
var lastFixInfo = { } ;
fixInfos = fixInfos . filter ( function ( fixInfo ) {
var unique = fixInfo . lineNumber !== lastFixInfo . lineNumber || fixInfo . editColumn !== lastFixInfo . editColumn || fixInfo . deleteCount !== lastFixInfo . deleteCount || fixInfo . insertText !== lastFixInfo . insertText ;
lastFixInfo = fixInfo ;
return unique ;
} ) ;
// Collapse insert/no-delete and no-insert/delete for same line/column
lastFixInfo = {
"lineNumber" : - 1
} ;
2023-08-04 20:53:38 -07:00
var _iterator8 = _createForOfIteratorHelper ( fixInfos ) ,
_step8 ;
2023-01-17 04:19:40 +00:00
try {
2023-08-04 20:53:38 -07:00
for ( _iterator8 . s ( ) ; ! ( _step8 = _iterator8 . n ( ) ) . done ; ) {
var fixInfo = _step8 . value ;
2023-01-17 04:19:40 +00:00
if ( fixInfo . lineNumber === lastFixInfo . lineNumber && fixInfo . editColumn === lastFixInfo . editColumn && ! fixInfo . insertText && fixInfo . deleteCount > 0 && lastFixInfo . insertText && ! lastFixInfo . deleteCount ) {
fixInfo . insertText = lastFixInfo . insertText ;
lastFixInfo . lineNumber = 0 ;
}
lastFixInfo = fixInfo ;
2022-06-08 22:10:27 -07:00
}
2023-01-17 04:19:40 +00:00
} catch ( err ) {
2023-08-04 20:53:38 -07:00
_iterator8 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-08-04 20:53:38 -07:00
_iterator8 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
fixInfos = fixInfos . filter ( function ( fixInfo ) {
return fixInfo . lineNumber ;
} ) ;
// Apply all (remaining/updated) fixes
var lastLineIndex = - 1 ;
var lastEditIndex = - 1 ;
2023-08-04 20:53:38 -07:00
var _iterator9 = _createForOfIteratorHelper ( fixInfos ) ,
_step9 ;
2023-01-17 04:19:40 +00:00
try {
2023-08-04 20:53:38 -07:00
for ( _iterator9 . s ( ) ; ! ( _step9 = _iterator9 . n ( ) ) . done ; ) {
var _fixInfo = _step9 . value ;
2023-01-17 04:19:40 +00:00
var lineNumber = _fixInfo . lineNumber ,
editColumn = _fixInfo . editColumn ,
deleteCount = _fixInfo . deleteCount ;
var lineIndex = lineNumber - 1 ;
var editIndex = editColumn - 1 ;
if ( lineIndex !== lastLineIndex || deleteCount === - 1 || editIndex + deleteCount <= lastEditIndex - ( deleteCount > 0 ? 0 : 1 ) ) {
// @ts-ignore
lines [ lineIndex ] = applyFix ( lines [ lineIndex ] , _fixInfo , lineEnding ) ;
}
lastLineIndex = lineIndex ;
lastEditIndex = editIndex ;
2022-06-08 22:10:27 -07:00
}
2019-10-02 20:10:42 -07:00
// Return corrected input
2023-01-17 04:19:40 +00:00
} catch ( err ) {
2023-08-04 20:53:38 -07:00
_iterator9 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-08-04 20:53:38 -07:00
_iterator9 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
return lines . filter ( function ( line ) {
return line !== null ;
} ) . join ( lineEnding ) ;
2022-02-09 22:44:49 -08:00
}
module . exports . applyFixes = applyFixes ;
2023-01-17 04:19:40 +00:00
2022-05-16 22:57:11 -07:00
/ * *
* Expands a path with a tilde to an absolute path .
*
* @ param { string } file Path that may begin with a tilde .
* @ param { Object } os Node . js "os" module .
* @ returns { string } Absolute path ( or original path ) .
* /
function expandTildePath ( file , os ) {
2023-01-17 04:19:40 +00:00
var homedir = os && os . homedir && os . homedir ( ) ;
return homedir ? file . replace ( /^~($|\/|\\)/ , "" . concat ( homedir , "$1" ) ) : file ;
2022-05-16 22:57:11 -07:00
}
module . exports . expandTildePath = expandTildePath ;
2023-01-17 04:19:40 +00:00
2023-09-04 21:41:16 -07:00
// Copied from markdownlint.js to avoid TypeScript compiler import() issue.
/ * *
* @ typedef { Object } MarkdownItToken
* @ property { string [ ] [ ] } attrs HTML attributes .
* @ property { boolean } block Block - level token .
* @ property { MarkdownItToken [ ] } children Child nodes .
* @ property { string } content Tag contents .
* @ property { boolean } hidden Ignore element .
* @ property { string } info Fence info .
* @ property { number } level Nesting level .
* @ property { number [ ] } map Beginning / ending line numbers .
* @ property { string } markup Markup text .
* @ property { Object } meta Arbitrary data .
* @ property { number } nesting Level change .
* @ property { string } tag HTML tag name .
* @ property { string } type Token type .
* @ property { number } lineNumber Line number ( 1 - based ) .
* @ property { string } line Line content .
* /
2022-04-21 21:09:07 -07:00
/***/ } ) ,
2023-07-21 22:49:08 -07:00
/***/ "../helpers/shared.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / helpers / shared . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/***/ ( ( module ) => {
"use strict" ;
// @ts-check
// Regular expression for matching common newline characters
// See NEWLINES_RE in markdown-it/lib/rules_core/normalize.js
module . exports . newLineRe = /\r\n?|\n/g ;
2023-10-18 23:20:19 -07:00
// Regular expression for matching next lines
module . exports . nextLinesRe = /[\r\n][\s\S]*$/ ;
2023-07-21 22:49:08 -07:00
/***/ } ) ,
2022-04-21 21:09:07 -07:00
/***/ "markdown-it" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * external "markdownit" * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/***/ ( ( module ) => {
"use strict" ;
module . exports = markdownit ;
/***/ } ) ,
2023-02-08 20:50:28 -08:00
/***/ "markdownlint-micromark" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * external "micromarkBrowser" * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/***/ ( ( module ) => {
"use strict" ;
module . exports = micromarkBrowser ;
/***/ } ) ,
2022-08-16 04:01:53 +00:00
/***/ "?0176" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * node : os ( ignored ) * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * /
2022-05-04 22:09:11 -07:00
/***/ ( ( ) => {
/* (ignored) */
/***/ } ) ,
2022-08-16 04:01:53 +00:00
/***/ "?d0ee" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * node : fs ( ignored ) * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * /
2022-04-21 21:09:07 -07:00
/***/ ( ( ) => {
/* (ignored) */
/***/ } ) ,
2022-08-16 04:01:53 +00:00
/***/ "?e6c4" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * node : os ( ignored ) * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * /
2022-05-16 22:57:11 -07:00
/***/ ( ( ) => {
/* (ignored) */
/***/ } ) ,
2022-08-16 04:01:53 +00:00
/***/ "?9a52" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * node : path ( ignored ) * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * /
2022-04-21 21:09:07 -07:00
/***/ ( ( ) => {
/* (ignored) */
/***/ } ) ,
2022-08-16 04:01:53 +00:00
/***/ "?39e5" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * node : util ( ignored ) * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * /
2022-04-21 21:09:07 -07:00
/***/ ( ( ) => {
/* (ignored) */
2022-12-29 00:43:53 +00:00
/***/ } ) ,
/***/ "./markdownlint-exports.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . / markdownlint - exports . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
"use strict" ;
// @ts-check
2023-01-17 04:19:40 +00:00
2022-12-29 00:43:53 +00:00
module . exports = {
2023-01-17 04:19:40 +00:00
"library" : _ _webpack _require _ _ ( /*! .. */ "../lib/markdownlint.js" ) ,
"helpers" : _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" )
2022-12-29 00:43:53 +00:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2023-01-20 04:10:18 +00:00
/***/ "../helpers/micromark.cjs" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / helpers / micromark . cjs * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
"use strict" ;
// @ts-check
// @ts-ignore
2023-08-26 17:45:39 -07:00
function _typeof ( o ) { "@babel/helpers - typeof" ; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( o ) { return typeof o ; } : function ( o ) { return o && "function" == typeof Symbol && o . constructor === Symbol && o !== Symbol . prototype ? "symbol" : typeof o ; } , _typeof ( o ) ; }
function ownKeys ( e , r ) { var t = Object . keys ( e ) ; if ( Object . getOwnPropertySymbols ) { var o = Object . getOwnPropertySymbols ( e ) ; r && ( o = o . filter ( function ( r ) { return Object . getOwnPropertyDescriptor ( e , r ) . enumerable ; } ) ) , t . push . apply ( t , o ) ; } return t ; }
function _objectSpread ( e ) { for ( var r = 1 ; r < arguments . length ; r ++ ) { var t = null != arguments [ r ] ? arguments [ r ] : { } ; r % 2 ? ownKeys ( Object ( t ) , ! 0 ) . forEach ( function ( r ) { _defineProperty ( e , r , t [ r ] ) ; } ) : Object . getOwnPropertyDescriptors ? Object . defineProperties ( e , Object . getOwnPropertyDescriptors ( t ) ) : ownKeys ( Object ( t ) ) . forEach ( function ( r ) { Object . defineProperty ( e , r , Object . getOwnPropertyDescriptor ( t , r ) ) ; } ) ; } return e ; }
2023-07-21 22:49:08 -07:00
function _defineProperty ( obj , key , value ) { key = _toPropertyKey ( key ) ; if ( key in obj ) { Object . defineProperty ( obj , key , { value : value , enumerable : true , configurable : true , writable : true } ) ; } else { obj [ key ] = value ; } return obj ; }
function _toPropertyKey ( arg ) { var key = _toPrimitive ( arg , "string" ) ; return _typeof ( key ) === "symbol" ? key : String ( key ) ; }
function _toPrimitive ( input , hint ) { if ( _typeof ( input ) !== "object" || input === null ) return input ; var prim = input [ Symbol . toPrimitive ] ; if ( prim !== undefined ) { var res = prim . call ( input , hint || "default" ) ; if ( _typeof ( res ) !== "object" ) return res ; throw new TypeError ( "@@toPrimitive must return a primitive value." ) ; } return ( hint === "string" ? String : Number ) ( input ) ; }
2023-01-20 04:10:18 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-20 04:10:18 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-20 04:10:18 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-02-23 22:14:44 -08:00
var _require = _ _webpack _require _ _ ( /*! markdownlint-micromark */ "markdownlint-micromark" ) ,
2023-02-05 16:58:06 -08:00
gfmAutolinkLiteral = _require . gfmAutolinkLiteral ,
2023-01-29 20:36:53 -08:00
gfmFootnote = _require . gfmFootnote ,
2023-02-23 22:14:44 -08:00
gfmTable = _require . gfmTable ,
2023-07-16 22:07:34 -07:00
math = _require . math ,
2023-01-20 04:10:18 +00:00
parse = _require . parse ,
postprocess = _require . postprocess ,
preprocess = _require . preprocess ;
2023-07-21 22:49:08 -07:00
var _require2 = _ _webpack _require _ _ ( /*! ./shared.js */ "../helpers/shared.js" ) ,
newLineRe = _require2 . newLineRe ;
2023-08-28 22:00:43 -07:00
var flatTokensSymbol = Symbol ( "flat-tokens" ) ;
2023-01-20 04:10:18 +00:00
/ * *
* Markdown token .
*
* @ typedef { Object } Token
* @ property { string } type Token type .
* @ property { number } startLine Start line ( 1 - based ) .
* @ property { number } startColumn Start column ( 1 - based ) .
* @ property { number } endLine End line ( 1 - based ) .
* @ property { number } endColumn End column ( 1 - based ) .
* @ property { string } text Token text .
2023-02-25 15:42:28 -08:00
* @ property { Token [ ] } children Child tokens .
2023-10-19 23:01:31 -07:00
* @ property { Token | null } parent Parent token .
2023-01-20 04:10:18 +00:00
* /
2023-09-02 12:07:14 -07:00
/ * *
* Returns whether a token is an htmlFlow type containing an HTML comment .
*
* @ param { Token } token Micromark token .
* @ returns { boolean } True iff token is htmlFlow containing a comment .
* /
function isHtmlFlowComment ( token ) {
var text = token . text ,
type = token . type ;
if ( type === "htmlFlow" && text . startsWith ( "<!--" ) && text . endsWith ( "-->" ) ) {
var comment = text . slice ( 4 , - 3 ) ;
2023-10-07 20:18:43 -07:00
return ! comment . startsWith ( ">" ) && ! comment . startsWith ( "->" ) && ! comment . endsWith ( "-" )
// The following condition from the CommonMark specification is commented
// to avoid parsing HTML comments that include "--" because that is NOT a
// condition of the HTML specification.
// https://spec.commonmark.org/0.30/#raw-html
// https://html.spec.whatwg.org/multipage/syntax.html#comments
// && !comment.includes("--")
;
2023-09-02 12:07:14 -07:00
}
2023-10-07 20:18:43 -07:00
2023-09-02 12:07:14 -07:00
return false ;
}
2023-01-20 04:10:18 +00:00
/ * *
2023-02-10 20:37:32 -08:00
* Parses a Markdown document and returns Micromark events .
2023-01-20 04:10:18 +00:00
*
* @ param { string } markdown Markdown document .
2023-07-21 22:49:08 -07:00
* @ param { Object } [ micromarkOptions ] Options for micromark .
* @ param { boolean } [ referencesDefined ] Treat references as defined .
2023-02-10 20:37:32 -08:00
* @ returns { Object [ ] } Micromark events .
2023-01-20 04:10:18 +00:00
* /
2023-02-10 20:37:32 -08:00
function getMicromarkEvents ( markdown ) {
2023-07-21 22:49:08 -07:00
var micromarkOptions = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ;
var referencesDefined = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : true ;
2023-01-29 20:36:53 -08:00
// Customize options object to add useful extensions
2023-07-21 22:49:08 -07:00
micromarkOptions . extensions = micromarkOptions . extensions || [ ] ;
micromarkOptions . extensions . push ( gfmAutolinkLiteral ( ) , gfmFootnote ( ) , gfmTable ( ) , math ( ) ) ;
2023-01-29 20:36:53 -08:00
2023-01-20 04:10:18 +00:00
// Use micromark to parse document into Events
var encoding = undefined ;
var eol = true ;
2023-07-21 22:49:08 -07:00
var parseContext = parse ( micromarkOptions ) ;
if ( referencesDefined ) {
2023-05-23 04:01:55 +00:00
// Customize ParseContext to treat all references as defined
parseContext . defined . includes = function ( searchElement ) {
return searchElement . length > 0 ;
} ;
}
2023-01-20 04:10:18 +00:00
var chunks = preprocess ( ) ( markdown , encoding , eol ) ;
2023-01-29 20:36:53 -08:00
var events = postprocess ( parseContext . document ( ) . write ( chunks ) ) ;
2023-02-10 20:37:32 -08:00
return events ;
}
/ * *
* Parses a Markdown document and returns ( frozen ) tokens .
*
* @ param { string } markdown Markdown document .
2023-07-21 22:49:08 -07:00
* @ param { Object } micromarkOptions Options for micromark .
* @ param { boolean } referencesDefined Treat references as defined .
* @ param { number } lineDelta Offset to apply to start / end line .
2023-10-19 23:01:31 -07:00
* @ param { Token } [ ancestor ] Parent of top - most tokens .
2023-02-10 20:37:32 -08:00
* @ returns { Token [ ] } Micromark tokens ( frozen ) .
* /
2023-10-19 23:01:31 -07:00
function micromarkParseWithOffset ( markdown , micromarkOptions , referencesDefined , lineDelta , ancestor ) {
2023-02-10 20:37:32 -08:00
// Use micromark to parse document into Events
2023-07-21 22:49:08 -07:00
var events = getMicromarkEvents ( markdown , micromarkOptions , referencesDefined ) ;
2023-01-20 04:10:18 +00:00
// Create Token objects
var document = [ ] ;
2023-08-28 22:00:43 -07:00
var flatTokens = [ ] ;
2023-10-19 23:01:31 -07:00
/** @type {Token} */
2023-10-15 21:24:59 -07:00
var root = {
2023-10-19 23:01:31 -07:00
"type" : "ROOT" ,
"startLine" : - 1 ,
"startColumn" : - 1 ,
"endLine" : - 1 ,
"endColumn" : - 1 ,
"text" : "ROOT" ,
"children" : document ,
"parent" : null
2023-01-20 04:10:18 +00:00
} ;
2023-10-15 21:24:59 -07:00
var history = [ root ] ;
var current = root ;
2023-07-21 22:49:08 -07:00
var reparseOptions = null ;
var lines = null ;
2023-09-02 12:07:14 -07:00
var skipHtmlFlowChildren = false ;
2023-01-20 04:10:18 +00:00
var _iterator = _createForOfIteratorHelper ( events ) ,
_step ;
try {
2023-10-19 23:01:31 -07:00
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
2023-01-20 04:10:18 +00:00
var event = _step . value ;
var _event = _slicedToArray ( event , 3 ) ,
kind = _event [ 0 ] ,
token = _event [ 1 ] ,
context = _event [ 2 ] ;
var type = token . type ,
start = token . start ,
end = token . end ;
var startColumn = start [ "column" ] ,
startLine = start [ "line" ] ;
var endColumn = end [ "column" ] ,
endLine = end [ "line" ] ;
2023-05-31 20:54:18 -07:00
var text = context . sliceSerialize ( token ) ;
2023-09-02 12:07:14 -07:00
if ( kind === "enter" && ! skipHtmlFlowChildren ) {
2023-01-20 04:10:18 +00:00
var previous = current ;
history . push ( previous ) ;
current = {
type : type ,
2023-07-21 22:49:08 -07:00
"startLine" : startLine + lineDelta ,
2023-01-20 04:10:18 +00:00
startColumn : startColumn ,
2023-07-21 22:49:08 -07:00
"endLine" : endLine + lineDelta ,
2023-01-20 04:10:18 +00:00
endColumn : endColumn ,
text : text ,
2023-10-15 21:24:59 -07:00
"children" : [ ] ,
2023-10-19 23:01:31 -07:00
"parent" : previous === root ? ancestor || null : previous
2023-01-20 04:10:18 +00:00
} ;
2023-09-02 12:07:14 -07:00
previous . children . push ( current ) ;
flatTokens . push ( current ) ;
if ( current . type === "htmlFlow" && ! isHtmlFlowComment ( current ) ) {
skipHtmlFlowChildren = true ;
2023-07-21 22:49:08 -07:00
if ( ! reparseOptions || ! lines ) {
reparseOptions = _objectSpread ( _objectSpread ( { } , micromarkOptions ) , { } , {
"extensions" : [ {
"disable" : {
"null" : [ "codeIndented" , "htmlFlow" ]
}
} ]
} ) ;
lines = markdown . split ( newLineRe ) ;
}
var reparseMarkdown = lines . slice ( current . startLine - 1 , current . endLine ) . join ( "\n" ) ;
2023-10-19 23:01:31 -07:00
var tokens = micromarkParseWithOffset ( reparseMarkdown , reparseOptions , referencesDefined , current . startLine - 1 , current ) ;
2023-09-02 12:07:14 -07:00
current . children = tokens ;
2023-09-04 22:02:39 -07:00
// Avoid stack overflow of Array.push(...spread)
// eslint-disable-next-line unicorn/prefer-spread
flatTokens = flatTokens . concat ( tokens [ flatTokensSymbol ] ) ;
2023-07-21 22:49:08 -07:00
}
2023-01-20 04:10:18 +00:00
} else if ( kind === "exit" ) {
2023-09-02 12:07:14 -07:00
if ( type === "htmlFlow" ) {
skipHtmlFlowChildren = false ;
}
if ( ! skipHtmlFlowChildren ) {
Object . freeze ( current . children ) ;
Object . freeze ( current ) ;
// @ts-ignore
current = history . pop ( ) ;
}
2023-01-20 04:10:18 +00:00
}
}
// Return document
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
2023-08-28 22:00:43 -07:00
Object . defineProperty ( document , flatTokensSymbol , {
"value" : flatTokens
} ) ;
2023-01-20 04:10:18 +00:00
Object . freeze ( document ) ;
return document ;
}
2023-01-21 15:41:03 -08:00
2023-07-21 22:49:08 -07:00
/ * *
* Parses a Markdown document and returns ( frozen ) tokens .
*
* @ param { string } markdown Markdown document .
* @ param { Object } [ micromarkOptions ] Options for micromark .
* @ param { boolean } [ referencesDefined ] Treat references as defined .
* @ returns { Token [ ] } Micromark tokens ( frozen ) .
* /
function micromarkParse ( markdown ) {
var micromarkOptions = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ;
var referencesDefined = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : true ;
return micromarkParseWithOffset ( markdown , micromarkOptions , referencesDefined , 0 ) ;
}
2023-09-04 21:41:16 -07:00
/ * *
* @ callback AllowedPredicate
* @ param { Token } token Micromark token .
* @ returns { boolean } True iff allowed .
* /
/ * *
* @ callback TransformPredicate
* @ param { Token } token Micromark token .
* @ returns { Token [ ] } Child tokens .
* /
2023-01-21 15:41:03 -08:00
/ * *
* Filter a list of Micromark tokens by predicate .
*
* @ param { Token [ ] } tokens Micromark tokens .
2023-10-25 20:05:19 -07:00
* @ param { AllowedPredicate } [ allowed ] Allowed token predicate .
2023-09-04 21:41:16 -07:00
* @ param { TransformPredicate } [ transformChildren ] Transform predicate .
2023-01-21 15:41:03 -08:00
* @ returns { Token [ ] } Filtered tokens .
* /
2023-03-14 21:03:07 -07:00
function filterByPredicate ( tokens , allowed , transformChildren ) {
2023-10-25 20:05:19 -07:00
allowed = allowed || function ( ) {
return true ;
} ;
2023-01-21 15:41:03 -08:00
var result = [ ] ;
2023-09-02 21:30:43 -07:00
var queue = [ {
"array" : tokens ,
"index" : 0
} ] ;
while ( queue . length > 0 ) {
var current = queue [ queue . length - 1 ] ;
var array = current . array ,
index = current . index ;
if ( index < array . length ) {
var token = array [ current . index ++ ] ;
if ( allowed ( token ) ) {
result . push ( token ) ;
}
var children = token . children ;
if ( children . length > 0 ) {
var transformed = transformChildren ? transformChildren ( token ) : children ;
queue . push ( {
"array" : transformed ,
"index" : 0
} ) ;
}
} else {
queue . pop ( ) ;
2023-03-10 22:22:54 -08:00
}
2023-01-21 15:41:03 -08:00
}
return result ;
}
/ * *
* Filter a list of Micromark tokens by type .
*
* @ param { Token [ ] } tokens Micromark tokens .
2023-10-21 22:03:11 -07:00
* @ param { string [ ] } types Types to allow .
2023-01-21 15:41:03 -08:00
* @ returns { Token [ ] } Filtered tokens .
* /
2023-10-21 22:03:11 -07:00
function filterByTypes ( tokens , types ) {
2023-08-28 22:00:43 -07:00
var predicate = function predicate ( token ) {
2023-10-21 22:03:11 -07:00
return types . includes ( token . type ) ;
2023-08-28 22:00:43 -07:00
} ;
var flatTokens = tokens [ flatTokensSymbol ] ;
if ( flatTokens ) {
return flatTokens . filter ( predicate ) ;
}
return filterByPredicate ( tokens , predicate ) ;
2023-01-21 15:41:03 -08:00
}
2023-01-29 20:36:53 -08:00
2023-08-08 22:56:47 -07:00
/ * *
* Gets the heading level of a Micromark heading tokan .
*
* @ param { Token } heading Micromark heading token .
* @ returns { number } Heading level .
* /
function getHeadingLevel ( heading ) {
var headingSequence = filterByTypes ( heading . children , [ "atxHeadingSequence" , "setextHeadingLineSequence" ] ) ;
var level = 1 ;
var text = headingSequence [ 0 ] . text ;
if ( text [ 0 ] === "#" ) {
level = Math . min ( text . length , 6 ) ;
} else if ( text [ 0 ] === "-" ) {
level = 2 ;
}
return level ;
}
2023-02-05 16:58:06 -08:00
/ * *
* Gets information about the tag in an HTML token .
*
* @ param { Token } token Micromark token .
* @ returns { Object | null } HTML tag information .
* /
function getHtmlTagInfo ( token ) {
var htmlTagNameRe = /^<([^!>][^/\s>]*)/ ;
if ( token . type === "htmlText" ) {
var match = htmlTagNameRe . exec ( token . text ) ;
if ( match ) {
var name = match [ 1 ] ;
var close = name . startsWith ( "/" ) ;
return {
close : close ,
"name" : close ? name . slice ( 1 ) : name
} ;
}
}
return null ;
}
2023-10-21 22:03:11 -07:00
/ * *
* Gets the nearest parent of the specified type for a Micromark token .
*
* @ param { Token } token Micromark token .
* @ param { string [ ] } types Types to allow .
* @ returns { Token | null } Parent token .
* /
function getTokenParentOfType ( token , types ) {
/** @type {Token | null} */
var current = token ;
while ( ( current = current . parent ) && ! types . includes ( current . type ) ) {
// Empty
}
return current ;
}
2023-01-29 20:36:53 -08:00
/ * *
2023-10-25 20:05:19 -07:00
* Get the text of the first match from a list of Micromark tokens by type .
2023-01-29 20:36:53 -08:00
*
* @ param { Token [ ] } tokens Micromark tokens .
* @ param { string } type Types to match .
* @ returns { string | null } Text of token .
* /
function getTokenTextByType ( tokens , type ) {
var filtered = tokens . filter ( function ( token ) {
return token . type === type ;
} ) ;
2023-10-25 20:05:19 -07:00
return filtered . length > 0 ? filtered [ 0 ] . text : null ;
2023-01-29 20:36:53 -08:00
}
2023-10-21 22:03:11 -07:00
/ * *
* Determines if a Micromark token has an htmlFlow - type parent .
*
* @ param { Token } token Micromark token .
* @ returns { boolean } True iff the token has an htmlFlow - type parent .
* /
function inHtmlFlow ( token ) {
return getTokenParentOfType ( token , [ "htmlFlow" ] ) !== null ;
}
2023-01-29 20:36:53 -08:00
/ * *
* Determines a list of Micromark tokens matches and returns a subset .
*
* @ param { Token [ ] } tokens Micromark tokens .
* @ param { string [ ] } matchTypes Types to match .
* @ param { string [ ] } [ resultTypes ] Types to return .
2023-02-23 22:14:44 -08:00
* @ returns { Token [ ] | null } Matching tokens .
2023-01-29 20:36:53 -08:00
* /
function matchAndGetTokensByType ( tokens , matchTypes , resultTypes ) {
if ( tokens . length !== matchTypes . length ) {
return null ;
}
2023-02-25 16:24:24 -08:00
resultTypes = resultTypes || matchTypes ;
2023-02-23 22:14:44 -08:00
var result = [ ] ;
// eslint-disable-next-line unicorn/no-for-loop
2023-01-29 20:36:53 -08:00
for ( var i = 0 ; i < matchTypes . length ; i ++ ) {
if ( tokens [ i ] . type !== matchTypes [ i ] ) {
return null ;
} else if ( resultTypes . includes ( matchTypes [ i ] ) ) {
2023-02-23 22:14:44 -08:00
result . push ( tokens [ i ] ) ;
2023-01-29 20:36:53 -08:00
}
}
return result ;
}
2023-05-25 03:47:34 +00:00
/ * *
* Returns the specified token iff it is of the desired type .
*
* @ param { Token } token Micromark token candidate .
* @ param { string } type Desired type .
* @ returns { Token | null } Token instance .
* /
function tokenIfType ( token , type ) {
return token && token . type === type ? token : null ;
}
2023-01-20 04:10:18 +00:00
module . exports = {
2023-02-05 16:58:06 -08:00
"parse" : micromarkParse ,
2023-01-21 15:41:03 -08:00
filterByPredicate : filterByPredicate ,
filterByTypes : filterByTypes ,
2023-08-08 22:56:47 -07:00
getHeadingLevel : getHeadingLevel ,
2023-02-05 16:58:06 -08:00
getHtmlTagInfo : getHtmlTagInfo ,
2023-02-10 20:37:32 -08:00
getMicromarkEvents : getMicromarkEvents ,
2023-10-21 22:03:11 -07:00
getTokenParentOfType : getTokenParentOfType ,
2023-01-29 20:36:53 -08:00
getTokenTextByType : getTokenTextByType ,
2023-10-21 22:03:11 -07:00
inHtmlFlow : inHtmlFlow ,
2023-05-25 03:47:34 +00:00
matchAndGetTokensByType : matchAndGetTokensByType ,
tokenIfType : tokenIfType
2023-01-20 04:10:18 +00:00
} ;
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/cache.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / cache . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2019-10-02 20:10:42 -07:00
2021-01-05 20:55:09 -08:00
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
var map = new Map ( ) ;
module . exports . set = function ( keyValuePairs ) {
for ( var _i = 0 , _Object$entries = Object . entries ( keyValuePairs ) ; _i < _Object$entries . length ; _i ++ ) {
var _Object$entries$ _i = _slicedToArray ( _Object$entries [ _i ] , 2 ) ,
key = _Object$entries$ _i [ 0 ] ,
value = _Object$entries$ _i [ 1 ] ;
map . set ( key , value ) ;
}
} ;
module . exports . clear = function ( ) {
return map . clear ( ) ;
} ;
module . exports . codeBlockAndSpanRanges = function ( ) {
return map . get ( "codeBlockAndSpanRanges" ) ;
} ;
module . exports . flattenedLists = function ( ) {
return map . get ( "flattenedLists" ) ;
} ;
module . exports . lineMetadata = function ( ) {
return map . get ( "lineMetadata" ) ;
} ;
module . exports . referenceLinkImageData = function ( ) {
return map . get ( "referenceLinkImageData" ) ;
} ;
2021-11-10 21:48:15 -08:00
/***/ } ) ,
/***/ "../lib/constants.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / constants . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/***/ ( ( module ) => {
"use strict" ;
// @ts-check
2023-01-17 04:19:40 +00:00
2023-11-09 19:47:15 -08:00
module . exports . deprecatedRuleNames = [ ] ;
module . exports . fixableRuleNames = [ "MD004" , "MD005" , "MD007" , "MD009" , "MD010" , "MD011" , "MD012" , "MD014" , "MD018" , "MD019" , "MD020" , "MD021" , "MD022" , "MD023" , "MD026" , "MD027" , "MD030" , "MD031" , "MD032" , "MD034" , "MD037" , "MD038" , "MD039" , "MD044" , "MD047" , "MD049" , "MD050" , "MD051" , "MD053" , "MD054" ] ;
2021-11-10 21:48:15 -08:00
module . exports . homepage = "https://github.com/DavidAnson/markdownlint" ;
2023-11-14 20:01:30 -08:00
module . exports . version = "0.32.1" ;
2021-11-10 21:48:15 -08:00
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/markdownlint.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / markdownlint . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
2022-06-02 21:42:48 -07:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2021-01-05 20:55:09 -08:00
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
2023-08-26 17:45:39 -07:00
function ownKeys ( e , r ) { var t = Object . keys ( e ) ; if ( Object . getOwnPropertySymbols ) { var o = Object . getOwnPropertySymbols ( e ) ; r && ( o = o . filter ( function ( r ) { return Object . getOwnPropertyDescriptor ( e , r ) . enumerable ; } ) ) , t . push . apply ( t , o ) ; } return t ; }
function _objectSpread ( e ) { for ( var r = 1 ; r < arguments . length ; r ++ ) { var t = null != arguments [ r ] ? arguments [ r ] : { } ; r % 2 ? ownKeys ( Object ( t ) , ! 0 ) . forEach ( function ( r ) { _defineProperty ( e , r , t [ r ] ) ; } ) : Object . getOwnPropertyDescriptors ? Object . defineProperties ( e , Object . getOwnPropertyDescriptors ( t ) ) : ownKeys ( Object ( t ) ) . forEach ( function ( r ) { Object . defineProperty ( e , r , Object . getOwnPropertyDescriptor ( t , r ) ) ; } ) ; } return e ; }
2023-01-17 04:19:40 +00:00
function _defineProperty ( obj , key , value ) { key = _toPropertyKey ( key ) ; if ( key in obj ) { Object . defineProperty ( obj , key , { value : value , enumerable : true , configurable : true , writable : true } ) ; } else { obj [ key ] = value ; } return obj ; }
function _toPropertyKey ( arg ) { var key = _toPrimitive ( arg , "string" ) ; return _typeof ( key ) === "symbol" ? key : String ( key ) ; }
function _toPrimitive ( input , hint ) { if ( _typeof ( input ) !== "object" || input === null ) return input ; var prim = input [ Symbol . toPrimitive ] ; if ( prim !== undefined ) { var res = prim . call ( input , hint || "default" ) ; if ( _typeof ( res ) !== "object" ) return res ; throw new TypeError ( "@@toPrimitive must return a primitive value." ) ; } return ( hint === "string" ? String : Number ) ( input ) ; }
function _toConsumableArray ( arr ) { return _arrayWithoutHoles ( arr ) || _iterableToArray ( arr ) || _unsupportedIterableToArray ( arr ) || _nonIterableSpread ( ) ; }
function _nonIterableSpread ( ) { throw new TypeError ( "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _iterableToArray ( iter ) { if ( typeof Symbol !== "undefined" && iter [ Symbol . iterator ] != null || iter [ "@@iterator" ] != null ) return Array . from ( iter ) ; }
function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) return _arrayLikeToArray ( arr ) ; }
2023-08-26 17:45:39 -07:00
function _typeof ( o ) { "@babel/helpers - typeof" ; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( o ) { return typeof o ; } : function ( o ) { return o && "function" == typeof Symbol && o . constructor === Symbol && o !== Symbol . prototype ? "symbol" : typeof o ; } , _typeof ( o ) ; }
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-17 04:19:40 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var path = _ _webpack _require _ _ ( /*! node:path */ "?9a52" ) ;
var _require = _ _webpack _require _ _ ( /*! node:util */ "?39e5" ) ,
promisify = _require . promisify ;
2023-01-15 21:41:22 -08:00
var markdownit = _ _webpack _require _ _ ( /*! markdown-it */ "markdown-it" ) ;
2023-01-20 04:10:18 +00:00
var micromark = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ;
2023-11-09 19:47:15 -08:00
// const { deprecatedRuleNames } = require("./constants");
2023-01-17 04:19:40 +00:00
var rules = _ _webpack _require _ _ ( /*! ./rules */ "../lib/rules.js" ) ;
var helpers = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ;
var cache = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ;
2021-02-11 22:16:07 -08:00
// @ts-ignore
2023-11-05 20:13:12 -08:00
// eslint-disable-next-line camelcase, no-inline-comments, no-undef
2023-01-17 04:19:40 +00:00
var dynamicRequire = typeof require === "undefined" ? _ _webpack _require _ _ ( "../lib sync recursive" ) : /* c8 ignore next */ require ;
2021-02-11 22:16:07 -08:00
// Capture native require implementation for dynamic loading of modules
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Validate the list of rules for structure and reuse .
*
* @ param { Rule [ ] } ruleList List of rules .
2021-12-11 21:44:25 -08:00
* @ param { boolean } synchronous Whether to execute synchronously .
2022-06-11 22:40:45 -07:00
* @ returns { Error | null } Error message if validation fails .
2020-01-27 19:19:34 -08:00
* /
2021-12-11 21:44:25 -08:00
function validateRuleList ( ruleList , synchronous ) {
2023-01-17 04:19:40 +00:00
var result = null ;
if ( ruleList . length === rules . length ) {
// No need to validate if only using built-in rules
return result ;
}
var allIds = { } ;
var _iterator = _createForOfIteratorHelper ( ruleList . entries ( ) ) ,
_step ;
try {
var _loop = function _loop ( ) {
var _step$value = _slicedToArray ( _step . value , 2 ) ,
index = _step$value [ 0 ] ,
rule = _step$value [ 1 ] ;
var customIndex = index - rules . length ;
// eslint-disable-next-line no-inner-declarations, jsdoc/require-jsdoc
function newError ( property ) {
return new Error ( "Property '" + property + "' of custom rule at index " + customIndex + " is incorrect." ) ;
}
2023-08-26 17:45:39 -07:00
for ( var _i = 0 , _arr = [ "names" , "tags" ] ; _i < _arr . length ; _i ++ ) {
var property = _arr [ _i ] ;
2023-01-17 04:19:40 +00:00
var value = rule [ property ] ;
if ( ! result && ( ! value || ! Array . isArray ( value ) || value . length === 0 || ! value . every ( helpers . isString ) || value . some ( helpers . isEmptyString ) ) ) {
result = newError ( property ) ;
}
}
2023-08-26 17:45:39 -07:00
for ( var _i2 = 0 , _arr2 = [ [ "description" , "string" ] , [ "function" , "function" ] ] ; _i2 < _arr2 . length ; _i2 ++ ) {
var propertyInfo = _arr2 [ _i2 ] ;
2023-01-17 04:19:40 +00:00
var _property = propertyInfo [ 0 ] ;
var _value = rule [ _property ] ;
if ( ! result && ( ! _value || _typeof ( _value ) !== propertyInfo [ 1 ] ) ) {
result = newError ( _property ) ;
}
}
2023-07-11 21:44:45 -07:00
if ( ! result && rule . information && ! helpers . isUrl ( rule . information ) ) {
2023-01-17 04:19:40 +00:00
result = newError ( "information" ) ;
}
if ( ! result && rule . asynchronous !== undefined && typeof rule . asynchronous !== "boolean" ) {
result = newError ( "asynchronous" ) ;
}
if ( ! result && rule . asynchronous && synchronous ) {
result = new Error ( "Custom rule " + rule . names . join ( "/" ) + " at index " + customIndex + " is asynchronous and can not be used in a synchronous context." ) ;
}
if ( ! result ) {
var _iterator2 = _createForOfIteratorHelper ( rule . names ) ,
_step2 ;
try {
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
var name = _step2 . value ;
var nameUpper = name . toUpperCase ( ) ;
if ( ! result && allIds [ nameUpper ] !== undefined ) {
result = new Error ( "Name '" + name + "' of custom rule at index " + customIndex + " is already used as a name or tag." ) ;
}
allIds [ nameUpper ] = true ;
}
} catch ( err ) {
_iterator2 . e ( err ) ;
} finally {
_iterator2 . f ( ) ;
}
var _iterator3 = _createForOfIteratorHelper ( rule . tags ) ,
_step3 ;
try {
for ( _iterator3 . s ( ) ; ! ( _step3 = _iterator3 . n ( ) ) . done ; ) {
var tag = _step3 . value ;
var tagUpper = tag . toUpperCase ( ) ;
if ( ! result && allIds [ tagUpper ] ) {
result = new Error ( "Tag '" + tag + "' of custom rule at index " + customIndex + " is already used as a name." ) ;
}
allIds [ tagUpper ] = false ;
}
} catch ( err ) {
_iterator3 . e ( err ) ;
} finally {
_iterator3 . f ( ) ;
}
}
} ;
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
_loop ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
return result ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Creates a LintResults instance with toString for pretty display .
*
* @ param { Rule [ ] } ruleList List of rules .
* @ returns { LintResults } New LintResults instance .
* /
2019-10-02 20:10:42 -07:00
function newResults ( ruleList ) {
2023-01-17 04:19:40 +00:00
var lintResults = { } ;
// eslint-disable-next-line jsdoc/require-jsdoc
function toString ( useAlias ) {
var ruleNameToRule = null ;
var results = [ ] ;
var keys = Object . keys ( lintResults ) ;
keys . sort ( ) ;
2023-08-26 17:45:39 -07:00
for ( var _i3 = 0 , _keys = keys ; _i3 < _keys . length ; _i3 ++ ) {
var file = _keys [ _i3 ] ;
2023-01-17 04:19:40 +00:00
var fileResults = lintResults [ file ] ;
if ( Array . isArray ( fileResults ) ) {
var _iterator4 = _createForOfIteratorHelper ( fileResults ) ,
_step4 ;
try {
for ( _iterator4 . s ( ) ; ! ( _step4 = _iterator4 . n ( ) ) . done ; ) {
var result = _step4 . value ;
var ruleMoniker = result . ruleNames ? result . ruleNames . join ( "/" ) : result . ruleName + "/" + result . ruleAlias ;
results . push ( file + ": " + result . lineNumber + ": " + ruleMoniker + " " + result . ruleDescription + ( result . errorDetail ? " [" + result . errorDetail + "]" : "" ) + ( result . errorContext ? " [Context: \"" + result . errorContext + "\"]" : "" ) ) ;
}
} catch ( err ) {
_iterator4 . e ( err ) ;
} finally {
_iterator4 . f ( ) ;
}
} else {
if ( ! ruleNameToRule ) {
ruleNameToRule = { } ;
var _iterator5 = _createForOfIteratorHelper ( ruleList ) ,
_step5 ;
try {
for ( _iterator5 . s ( ) ; ! ( _step5 = _iterator5 . n ( ) ) . done ; ) {
var rule = _step5 . value ;
var ruleName = rule . names [ 0 ] . toUpperCase ( ) ;
ruleNameToRule [ ruleName ] = rule ;
}
} catch ( err ) {
_iterator5 . e ( err ) ;
} finally {
_iterator5 . f ( ) ;
}
}
2023-08-26 17:45:39 -07:00
for ( var _i4 = 0 , _Object$entries = Object . entries ( fileResults ) ; _i4 < _Object$entries . length ; _i4 ++ ) {
var _Object$entries$ _i = _slicedToArray ( _Object$entries [ _i4 ] , 2 ) ,
2023-01-17 04:19:40 +00:00
_ruleName = _Object$entries$ _i [ 0 ] ,
ruleResults = _Object$entries$ _i [ 1 ] ;
var _rule = ruleNameToRule [ _ruleName . toUpperCase ( ) ] ;
var _iterator6 = _createForOfIteratorHelper ( ruleResults ) ,
_step6 ;
try {
for ( _iterator6 . s ( ) ; ! ( _step6 = _iterator6 . n ( ) ) . done ; ) {
var lineNumber = _step6 . value ;
// @ts-ignore
var nameIndex = Math . min ( useAlias ? 1 : 0 , _rule . names . length - 1 ) ;
var _result = file + ": " + lineNumber + ": " +
// @ts-ignore
_rule . names [ nameIndex ] + " " +
// @ts-ignore
_rule . description ;
results . push ( _result ) ;
}
} catch ( err ) {
_iterator6 . e ( err ) ;
} finally {
_iterator6 . f ( ) ;
}
}
}
2020-09-13 21:15:11 -07:00
}
2023-01-17 04:19:40 +00:00
return results . join ( "\n" ) ;
}
Object . defineProperty ( lintResults , "toString" , {
"value" : toString
} ) ;
// @ts-ignore
return lintResults ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Remove front matter ( if present at beginning of content ) .
*
* @ param { string } content Markdown content .
2023-01-29 21:13:17 -08:00
* @ param { RegExp | null } frontMatter Regular expression to match front matter .
2020-01-27 19:19:34 -08:00
* @ returns { Object } Trimmed content and front matter lines .
* /
2019-10-02 20:10:42 -07:00
function removeFrontMatter ( content , frontMatter ) {
2023-01-17 04:19:40 +00:00
var frontMatterLines = [ ] ;
if ( frontMatter ) {
var frontMatterMatch = content . match ( frontMatter ) ;
if ( frontMatterMatch && ! frontMatterMatch . index ) {
var contentMatched = frontMatterMatch [ 0 ] ;
content = content . slice ( contentMatched . length ) ;
frontMatterLines = contentMatched . split ( helpers . newLineRe ) ;
if ( frontMatterLines . length > 0 && frontMatterLines [ frontMatterLines . length - 1 ] === "" ) {
frontMatterLines . length -- ;
}
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
return {
"content" : content ,
"frontMatterLines" : frontMatterLines
} ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
2022-06-09 23:56:44 -07:00
* Freeze all freeze - able members of a token and its children .
*
* @ param { MarkdownItToken } token A markdown - it token .
* @ returns { void }
* /
function freezeToken ( token ) {
2023-01-17 04:19:40 +00:00
if ( token . attrs ) {
var _iterator7 = _createForOfIteratorHelper ( token . attrs ) ,
_step7 ;
try {
for ( _iterator7 . s ( ) ; ! ( _step7 = _iterator7 . n ( ) ) . done ; ) {
var attr = _step7 . value ;
Object . freeze ( attr ) ;
}
} catch ( err ) {
_iterator7 . e ( err ) ;
} finally {
_iterator7 . f ( ) ;
2022-06-09 23:56:44 -07:00
}
2023-01-17 04:19:40 +00:00
Object . freeze ( token . attrs ) ;
}
if ( token . children ) {
var _iterator8 = _createForOfIteratorHelper ( token . children ) ,
_step8 ;
try {
for ( _iterator8 . s ( ) ; ! ( _step8 = _iterator8 . n ( ) ) . done ; ) {
var child = _step8 . value ;
freezeToken ( child ) ;
}
} catch ( err ) {
_iterator8 . e ( err ) ;
} finally {
_iterator8 . f ( ) ;
2022-06-09 23:56:44 -07:00
}
2023-01-17 04:19:40 +00:00
Object . freeze ( token . children ) ;
}
if ( token . map ) {
Object . freeze ( token . map ) ;
}
Object . freeze ( token ) ;
2022-06-09 23:56:44 -07:00
}
2023-01-17 04:19:40 +00:00
2022-06-09 23:56:44 -07:00
/ * *
* Annotate tokens with line / lineNumber and freeze them .
2020-01-27 19:19:34 -08:00
*
* @ param { MarkdownItToken [ ] } tokens Array of markdown - it tokens .
* @ param { string [ ] } lines Lines of Markdown content .
* @ returns { void }
* /
2022-06-09 23:56:44 -07:00
function annotateAndFreezeTokens ( tokens , lines ) {
2023-01-17 04:19:40 +00:00
var trMap = null ;
var _iterator9 = _createForOfIteratorHelper ( tokens ) ,
_step9 ;
try {
var _loop2 = function _loop2 ( ) {
var token = _step9 . value ;
// Provide missing maps for table content
if ( token . type === "tr_open" ) {
trMap = token . map ;
} else if ( token . type === "tr_close" ) {
trMap = null ;
}
if ( ! token . map && trMap ) {
token . map = _toConsumableArray ( trMap ) ;
}
// Update token metadata
if ( token . map ) {
token . line = lines [ token . map [ 0 ] ] ;
token . lineNumber = token . map [ 0 ] + 1 ;
// Trim bottom of token to exclude whitespace lines
while ( token . map [ 1 ] && ! ( lines [ token . map [ 1 ] - 1 ] || "" ) . trim ( ) ) {
token . map [ 1 ] -- ;
}
}
// Annotate children with lineNumber
if ( token . children ) {
var codeSpanExtraLines = [ ] ;
if ( token . children . some ( function ( child ) {
return child . type === "code_inline" ;
} ) ) {
helpers . forEachInlineCodeSpan ( token . content , function ( code ) {
codeSpanExtraLines . push ( code . split ( helpers . newLineRe ) . length - 1 ) ;
} ) ;
}
var lineNumber = token . lineNumber ;
var _iterator10 = _createForOfIteratorHelper ( token . children ) ,
_step10 ;
try {
for ( _iterator10 . s ( ) ; ! ( _step10 = _iterator10 . n ( ) ) . done ; ) {
var child = _step10 . value ;
child . lineNumber = lineNumber ;
child . line = lines [ lineNumber - 1 ] ;
if ( child . type === "softbreak" || child . type === "hardbreak" ) {
lineNumber ++ ;
} else if ( child . type === "code_inline" ) {
lineNumber += codeSpanExtraLines . shift ( ) ;
}
}
} catch ( err ) {
_iterator10 . e ( err ) ;
} finally {
_iterator10 . f ( ) ;
}
}
freezeToken ( token ) ;
} ;
for ( _iterator9 . s ( ) ; ! ( _step9 = _iterator9 . n ( ) ) . done ; ) {
_loop2 ( ) ;
2022-06-08 22:10:27 -07:00
}
2023-01-17 04:19:40 +00:00
} catch ( err ) {
_iterator9 . e ( err ) ;
} finally {
_iterator9 . f ( ) ;
}
Object . freeze ( tokens ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Map rule names / tags to canonical rule name .
*
* @ param { Rule [ ] } ruleList List of rules .
* @ returns { Object . < string , string [ ] > } Map of alias to rule name .
* /
2019-10-02 20:10:42 -07:00
function mapAliasToRuleNames ( ruleList ) {
2023-01-17 04:19:40 +00:00
var aliasToRuleNames = { } ;
// const tagToRuleNames = {};
var _iterator11 = _createForOfIteratorHelper ( ruleList ) ,
_step11 ;
try {
for ( _iterator11 . s ( ) ; ! ( _step11 = _iterator11 . n ( ) ) . done ; ) {
var rule = _step11 . value ;
var ruleName = rule . names [ 0 ] . toUpperCase ( ) ;
// The following is useful for updating README.md:
// console.log(
// "* **[" + ruleName + "](doc/Rules.md#" + ruleName.toLowerCase() +
// ")** *" + rule.names.slice(1).join("/") + "* - " + rule.description);
var _iterator12 = _createForOfIteratorHelper ( rule . names ) ,
_step12 ;
try {
for ( _iterator12 . s ( ) ; ! ( _step12 = _iterator12 . n ( ) ) . done ; ) {
var name = _step12 . value ;
var nameUpper = name . toUpperCase ( ) ;
aliasToRuleNames [ nameUpper ] = [ ruleName ] ;
}
} catch ( err ) {
_iterator12 . e ( err ) ;
} finally {
_iterator12 . f ( ) ;
}
var _iterator13 = _createForOfIteratorHelper ( rule . tags ) ,
_step13 ;
try {
for ( _iterator13 . s ( ) ; ! ( _step13 = _iterator13 . n ( ) ) . done ; ) {
var tag = _step13 . value ;
var tagUpper = tag . toUpperCase ( ) ;
var ruleNames = aliasToRuleNames [ tagUpper ] || [ ] ;
ruleNames . push ( ruleName ) ;
aliasToRuleNames [ tagUpper ] = ruleNames ;
// tagToRuleNames[tag] = ruleName;
}
} catch ( err ) {
_iterator13 . e ( err ) ;
} finally {
_iterator13 . f ( ) ;
}
2022-06-08 22:10:27 -07:00
}
2019-10-02 20:10:42 -07:00
// The following is useful for updating README.md:
// Object.keys(tagToRuleNames).sort().forEach(function forTag(tag) {
// console.log("* **" + tag + "** - " +
// aliasToRuleNames[tag.toUpperCase()].join(", "));
// });
2020-01-27 19:19:34 -08:00
// @ts-ignore
2023-01-17 04:19:40 +00:00
} catch ( err ) {
_iterator11 . e ( err ) ;
} finally {
_iterator11 . f ( ) ;
}
return aliasToRuleNames ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Apply ( and normalize ) configuration object .
*
* @ param { Rule [ ] } ruleList List of rules .
* @ param { Configuration } config Configuration object .
* @ param { Object . < string , string [ ] > } aliasToRuleNames Map of alias to rule
* names .
* @ returns { Configuration } Effective configuration .
* /
2019-10-02 20:10:42 -07:00
function getEffectiveConfig ( ruleList , config , aliasToRuleNames ) {
2023-01-17 04:19:40 +00:00
var defaultKey = Object . keys ( config ) . filter ( function ( key ) {
return key . toUpperCase ( ) === "DEFAULT" ;
} ) ;
var ruleDefault = defaultKey . length === 0 || ! ! config [ defaultKey [ 0 ] ] ;
2023-11-08 19:49:02 -08:00
/** @type {Configuration} */
2023-01-17 04:19:40 +00:00
var effectiveConfig = { } ;
var _iterator14 = _createForOfIteratorHelper ( ruleList ) ,
_step14 ;
try {
for ( _iterator14 . s ( ) ; ! ( _step14 = _iterator14 . n ( ) ) . done ; ) {
var rule = _step14 . value ;
var _ruleName2 = rule . names [ 0 ] . toUpperCase ( ) ;
effectiveConfig [ _ruleName2 ] = ruleDefault ;
2022-06-08 22:10:27 -07:00
}
2023-11-09 19:47:15 -08:00
// for (const ruleName of deprecatedRuleNames) {
// effectiveConfig[ruleName] = false;
// }
2023-01-17 04:19:40 +00:00
} catch ( err ) {
_iterator14 . e ( err ) ;
} finally {
_iterator14 . f ( ) ;
}
2023-08-26 17:45:39 -07:00
for ( var _i5 = 0 , _Object$keys = Object . keys ( config ) ; _i5 < _Object$keys . length ; _i5 ++ ) {
var key = _Object$keys [ _i5 ] ;
2023-01-17 04:19:40 +00:00
var value = config [ key ] ;
if ( value ) {
if ( ! ( value instanceof Object ) ) {
value = { } ;
}
} else {
value = false ;
2022-06-08 22:10:27 -07:00
}
2023-01-17 04:19:40 +00:00
var keyUpper = key . toUpperCase ( ) ;
2023-11-09 19:47:15 -08:00
var _iterator15 = _createForOfIteratorHelper ( aliasToRuleNames [ keyUpper ] || [ ] ) ,
_step15 ;
2023-01-17 04:19:40 +00:00
try {
2023-11-09 19:47:15 -08:00
for ( _iterator15 . s ( ) ; ! ( _step15 = _iterator15 . n ( ) ) . done ; ) {
var ruleName = _step15 . value ;
2023-01-17 04:19:40 +00:00
effectiveConfig [ ruleName ] = value ;
}
} catch ( err ) {
2023-11-09 19:47:15 -08:00
_iterator15 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-11-09 19:47:15 -08:00
_iterator15 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
}
return effectiveConfig ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2022-06-05 22:32:22 -07:00
/ * *
* Parse the content of a configuration file .
*
* @ param { string } name Name of the configuration file .
* @ param { string } content Configuration content .
2022-06-11 22:40:45 -07:00
* @ param { ConfigurationParser [ ] | null } [ parsers ] Parsing function ( s ) .
2022-06-05 22:32:22 -07:00
* @ returns { Object } Configuration object and error message .
* /
function parseConfiguration ( name , content , parsers ) {
2023-01-17 04:19:40 +00:00
var config = null ;
var message = "" ;
var errors = [ ] ;
var index = 0 ;
// Try each parser
( parsers || [ JSON . parse ] ) . every ( function ( parser ) {
try {
config = parser ( content ) ;
} catch ( error ) {
errors . push ( "Parser " . concat ( index ++ , ": " ) . concat ( error . message ) ) ;
2022-06-05 22:32:22 -07:00
}
2023-01-17 04:19:40 +00:00
return ! config ;
} ) ;
// Message if unable to parse
if ( ! config ) {
errors . unshift ( "Unable to parse '" . concat ( name , "'" ) ) ;
message = errors . join ( "; " ) ;
}
return {
config : config ,
message : message
} ;
2022-06-05 22:32:22 -07:00
}
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Create a mapping of enabled rules per line .
*
* @ param { Rule [ ] } ruleList List of rules .
* @ param { string [ ] } lines List of content lines .
* @ param { string [ ] } frontMatterLines List of front matter lines .
* @ param { boolean } noInlineConfig Whether to allow inline configuration .
2020-04-11 13:54:46 -07:00
* @ param { Configuration } config Configuration object .
2022-06-11 22:40:45 -07:00
* @ param { ConfigurationParser [ ] | null } configParsers Configuration parsers .
2020-01-27 19:19:34 -08:00
* @ param { Object . < string , string [ ] > } aliasToRuleNames Map of alias to rule
* names .
2020-04-11 13:54:46 -07:00
* @ returns { Object } Effective configuration and enabled rules per line number .
2020-01-27 19:19:34 -08:00
* /
2022-06-05 22:32:22 -07:00
function getEnabledRulesPerLineNumber ( ruleList , lines , frontMatterLines , noInlineConfig , config , configParsers , aliasToRuleNames ) {
2023-01-17 04:19:40 +00:00
// Shared variables
var enabledRules = { } ;
var capturedRules = { } ;
var allRuleNames = [ ] ;
var enabledRulesPerLineNumber = new Array ( 1 + frontMatterLines . length ) ;
// Helper functions
// eslint-disable-next-line jsdoc/require-jsdoc
function handleInlineConfig ( input , forEachMatch , forEachLine ) {
2023-11-09 19:47:15 -08:00
var _iterator16 = _createForOfIteratorHelper ( input . entries ( ) ) ,
_step16 ;
2023-01-17 04:19:40 +00:00
try {
2023-11-09 19:47:15 -08:00
for ( _iterator16 . s ( ) ; ! ( _step16 = _iterator16 . n ( ) ) . done ; ) {
var _step16$value = _slicedToArray ( _step16 . value , 2 ) ,
lineIndex = _step16$value [ 0 ] ,
line = _step16$value [ 1 ] ;
2023-01-17 04:19:40 +00:00
if ( ! noInlineConfig ) {
var match = null ;
while ( match = helpers . inlineCommentStartRe . exec ( line ) ) {
var action = match [ 2 ] . toUpperCase ( ) ;
var startIndex = match . index + match [ 1 ] . length ;
var endIndex = line . indexOf ( "-->" , startIndex ) ;
if ( endIndex === - 1 ) {
break ;
}
var parameter = line . slice ( startIndex , endIndex ) ;
forEachMatch ( action , parameter , lineIndex + 1 ) ;
}
}
if ( forEachLine ) {
forEachLine ( ) ;
}
}
} catch ( err ) {
2023-11-09 19:47:15 -08:00
_iterator16 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-11-09 19:47:15 -08:00
_iterator16 . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
// eslint-disable-next-line jsdoc/require-jsdoc
function configureFile ( action , parameter ) {
if ( action === "CONFIGURE-FILE" ) {
var _parseConfiguration = parseConfiguration ( "CONFIGURE-FILE" , parameter , configParsers ) ,
parsed = _parseConfiguration [ "config" ] ;
if ( parsed ) {
config = _objectSpread ( _objectSpread ( { } , config ) , parsed ) ;
}
2020-04-11 13:54:46 -07:00
}
2023-01-17 04:19:40 +00:00
}
// eslint-disable-next-line jsdoc/require-jsdoc
function applyEnableDisable ( action , parameter , state ) {
state = _objectSpread ( { } , state ) ;
var enabled = action . startsWith ( "ENABLE" ) ;
var trimmed = parameter && parameter . trim ( ) ;
var items = trimmed ? trimmed . toUpperCase ( ) . split ( /\s+/ ) : allRuleNames ;
2023-11-09 19:47:15 -08:00
var _iterator17 = _createForOfIteratorHelper ( items ) ,
_step17 ;
2023-01-17 04:19:40 +00:00
try {
2023-11-09 19:47:15 -08:00
for ( _iterator17 . s ( ) ; ! ( _step17 = _iterator17 . n ( ) ) . done ; ) {
var nameUpper = _step17 . value ;
var _iterator18 = _createForOfIteratorHelper ( aliasToRuleNames [ nameUpper ] || [ ] ) ,
_step18 ;
2023-01-17 04:19:40 +00:00
try {
2023-11-09 19:47:15 -08:00
for ( _iterator18 . s ( ) ; ! ( _step18 = _iterator18 . n ( ) ) . done ; ) {
var ruleName = _step18 . value ;
2023-01-17 04:19:40 +00:00
state [ ruleName ] = enabled ;
}
} catch ( err ) {
2023-11-09 19:47:15 -08:00
_iterator18 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-11-09 19:47:15 -08:00
_iterator18 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
}
} catch ( err ) {
2023-11-09 19:47:15 -08:00
_iterator17 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-11-09 19:47:15 -08:00
_iterator17 . f ( ) ;
2020-04-11 13:54:46 -07:00
}
2023-01-17 04:19:40 +00:00
return state ;
}
// eslint-disable-next-line jsdoc/require-jsdoc
function enableDisableFile ( action , parameter ) {
if ( action === "ENABLE-FILE" || action === "DISABLE-FILE" ) {
enabledRules = applyEnableDisable ( action , parameter , enabledRules ) ;
2020-04-11 13:54:46 -07:00
}
2023-01-17 04:19:40 +00:00
}
// eslint-disable-next-line jsdoc/require-jsdoc
function captureRestoreEnableDisable ( action , parameter ) {
if ( action === "CAPTURE" ) {
capturedRules = enabledRules ;
} else if ( action === "RESTORE" ) {
enabledRules = capturedRules ;
} else if ( action === "ENABLE" || action === "DISABLE" ) {
enabledRules = applyEnableDisable ( action , parameter , enabledRules ) ;
2020-04-11 13:54:46 -07:00
}
2023-01-17 04:19:40 +00:00
}
// eslint-disable-next-line jsdoc/require-jsdoc
function updateLineState ( ) {
enabledRulesPerLineNumber . push ( enabledRules ) ;
}
// eslint-disable-next-line jsdoc/require-jsdoc
function disableLineNextLine ( action , parameter , lineNumber ) {
var disableLine = action === "DISABLE-LINE" ;
var disableNextLine = action === "DISABLE-NEXT-LINE" ;
if ( disableLine || disableNextLine ) {
var nextLineNumber = frontMatterLines . length + lineNumber + ( disableNextLine ? 1 : 0 ) ;
2023-07-28 14:33:03 +10:00
enabledRulesPerLineNumber [ nextLineNumber ] = applyEnableDisable ( action , parameter , enabledRulesPerLineNumber [ nextLineNumber ] ) ;
2020-11-24 16:37:11 -08:00
}
2023-01-17 04:19:40 +00:00
}
// Handle inline comments
handleInlineConfig ( [ lines . join ( "\n" ) ] , configureFile ) ;
var effectiveConfig = getEffectiveConfig ( ruleList , config , aliasToRuleNames ) ;
2023-11-09 19:47:15 -08:00
var _iterator19 = _createForOfIteratorHelper ( ruleList ) ,
_step19 ;
2023-01-17 04:19:40 +00:00
try {
2023-11-09 19:47:15 -08:00
for ( _iterator19 . s ( ) ; ! ( _step19 = _iterator19 . n ( ) ) . done ; ) {
var rule = _step19 . value ;
2023-01-17 04:19:40 +00:00
var ruleName = rule . names [ 0 ] . toUpperCase ( ) ;
allRuleNames . push ( ruleName ) ;
enabledRules [ ruleName ] = ! ! effectiveConfig [ ruleName ] ;
2022-06-08 22:10:27 -07:00
}
2023-01-17 04:19:40 +00:00
} catch ( err ) {
2023-11-09 19:47:15 -08:00
_iterator19 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-11-09 19:47:15 -08:00
_iterator19 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
capturedRules = enabledRules ;
handleInlineConfig ( lines , enableDisableFile ) ;
handleInlineConfig ( lines , captureRestoreEnableDisable , updateLineState ) ;
handleInlineConfig ( lines , disableLineNextLine ) ;
// Return results
return {
effectiveConfig : effectiveConfig ,
enabledRulesPerLineNumber : enabledRulesPerLineNumber
} ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Lints a string containing Markdown content .
*
* @ param { Rule [ ] } ruleList List of rules .
2023-03-12 20:49:41 -07:00
* @ param { Object . < string , string [ ] > } aliasToRuleNames Map of alias to rule
* names .
2020-01-27 19:19:34 -08:00
* @ param { string } name Identifier for the content .
2020-11-24 16:37:11 -08:00
* @ param { string } content Markdown content .
* @ param { Object } md Instance of markdown - it .
2020-01-27 19:19:34 -08:00
* @ param { Configuration } config Configuration object .
2022-06-11 22:40:45 -07:00
* @ param { ConfigurationParser [ ] | null } configParsers Configuration parsers .
2023-01-29 21:13:17 -08:00
* @ param { RegExp | null } frontMatter Regular expression for front matter .
2020-01-27 19:19:34 -08:00
* @ param { boolean } handleRuleFailures Whether to handle exceptions in rules .
* @ param { boolean } noInlineConfig Whether to allow inline configuration .
* @ param { number } resultVersion Version of the LintResults object to return .
2023-09-04 21:41:16 -07:00
* @ param { LintContentCallback } callback Callback ( err , result ) function .
2020-01-27 19:19:34 -08:00
* @ returns { void }
* /
2023-03-12 20:49:41 -07:00
function lintContent ( ruleList , aliasToRuleNames , name , content , md , config , configParsers , frontMatter , handleRuleFailures , noInlineConfig , resultVersion , callback ) {
2023-01-17 04:19:40 +00:00
// Remove UTF-8 byte order marker (if present)
content = content . replace ( /^\uFEFF/ , "" ) ;
// Remove front matter
var removeFrontMatterResult = removeFrontMatter ( content , frontMatter ) ;
var frontMatterLines = removeFrontMatterResult . frontMatterLines ;
content = removeFrontMatterResult . content ;
// Get enabled rules per line (with HTML comments present)
2023-03-12 20:49:41 -07:00
var _getEnabledRulesPerLi = getEnabledRulesPerLineNumber ( ruleList , content . split ( helpers . newLineRe ) , frontMatterLines , noInlineConfig , config , configParsers , aliasToRuleNames ) ,
2023-01-17 04:19:40 +00:00
effectiveConfig = _getEnabledRulesPerLi . effectiveConfig ,
enabledRulesPerLineNumber = _getEnabledRulesPerLi . enabledRulesPerLineNumber ;
2023-01-15 21:41:22 -08:00
// Parse content into parser tokens
var markdownitTokens = md . parse ( content , { } ) ;
var micromarkTokens = micromark . parse ( content ) ;
// Hide the content of HTML comments from rules
2023-01-17 04:19:40 +00:00
content = helpers . clearHtmlCommentText ( content ) ;
2023-01-15 21:41:22 -08:00
// Parse content into lines and update markdown-it tokens
2023-01-17 04:19:40 +00:00
var lines = content . split ( helpers . newLineRe ) ;
2023-01-15 21:41:22 -08:00
annotateAndFreezeTokens ( markdownitTokens , lines ) ;
2023-01-17 04:19:40 +00:00
// Create (frozen) parameters for rules
2023-01-15 21:41:22 -08:00
var parsers = Object . freeze ( {
2023-01-21 19:16:07 -08:00
"markdownit" : Object . freeze ( {
"tokens" : markdownitTokens
} ) ,
"micromark" : Object . freeze ( {
"tokens" : micromarkTokens
} )
2023-01-15 21:41:22 -08:00
} ) ;
2023-01-17 04:19:40 +00:00
var paramsBase = {
name : name ,
2023-01-15 21:41:22 -08:00
parsers : parsers ,
"tokens" : markdownitTokens ,
2023-01-17 04:19:40 +00:00
"lines" : Object . freeze ( lines ) ,
"frontMatterLines" : Object . freeze ( frontMatterLines )
} ;
var lineMetadata = helpers . getLineMetadata ( paramsBase ) ;
var codeBlockAndSpanRanges = helpers . codeBlockAndSpanRanges ( paramsBase , lineMetadata ) ;
2023-02-18 21:41:07 -08:00
var flattenedLists = helpers . flattenLists ( paramsBase . parsers . markdownit . tokens ) ;
2023-01-29 20:36:53 -08:00
var referenceLinkImageData = helpers . getReferenceLinkImageData ( paramsBase ) ;
2023-01-17 04:19:40 +00:00
cache . set ( {
codeBlockAndSpanRanges : codeBlockAndSpanRanges ,
flattenedLists : flattenedLists ,
lineMetadata : lineMetadata ,
referenceLinkImageData : referenceLinkImageData
} ) ;
// Function to run for each rule
var results = [ ] ;
// eslint-disable-next-line jsdoc/require-jsdoc
function forRule ( rule ) {
// Configure rule
var ruleName = rule . names [ 0 ] . toUpperCase ( ) ;
var params = _objectSpread ( _objectSpread ( { } , paramsBase ) , { } , {
"config" : effectiveConfig [ ruleName ]
2022-06-02 21:33:31 -07:00
} ) ;
2020-01-27 19:19:34 -08:00
// eslint-disable-next-line jsdoc/require-jsdoc
2023-01-17 04:19:40 +00:00
function throwError ( property ) {
2023-11-05 20:13:12 -08:00
throw new Error ( "Value of '" . concat ( property , "' passed to onError by '" ) . concat ( ruleName , "' is incorrect for '" ) . concat ( name , "'." ) ) ;
2021-12-11 21:44:25 -08:00
}
// eslint-disable-next-line jsdoc/require-jsdoc
2023-01-17 04:19:40 +00:00
function onError ( errorInfo ) {
if ( ! errorInfo || ! helpers . isNumber ( errorInfo . lineNumber ) || errorInfo . lineNumber < 1 || errorInfo . lineNumber > lines . length ) {
throwError ( "lineNumber" ) ;
}
var lineNumber = errorInfo . lineNumber + frontMatterLines . length ;
if ( ! enabledRulesPerLineNumber [ lineNumber ] [ ruleName ] ) {
return ;
}
if ( errorInfo . detail && ! helpers . isString ( errorInfo . detail ) ) {
throwError ( "detail" ) ;
}
if ( errorInfo . context && ! helpers . isString ( errorInfo . context ) ) {
throwError ( "context" ) ;
}
2023-07-11 21:44:45 -07:00
if ( errorInfo . information && ! helpers . isUrl ( errorInfo . information ) ) {
throwError ( "information" ) ;
}
2023-01-17 04:19:40 +00:00
if ( errorInfo . range && ( ! Array . isArray ( errorInfo . range ) || errorInfo . range . length !== 2 || ! helpers . isNumber ( errorInfo . range [ 0 ] ) || errorInfo . range [ 0 ] < 1 || ! helpers . isNumber ( errorInfo . range [ 1 ] ) || errorInfo . range [ 1 ] < 1 || errorInfo . range [ 0 ] + errorInfo . range [ 1 ] - 1 > lines [ errorInfo . lineNumber - 1 ] . length ) ) {
throwError ( "range" ) ;
}
var fixInfo = errorInfo . fixInfo ;
var cleanFixInfo = { } ;
if ( fixInfo ) {
if ( ! helpers . isObject ( fixInfo ) ) {
throwError ( "fixInfo" ) ;
}
if ( fixInfo . lineNumber !== undefined ) {
if ( ! helpers . isNumber ( fixInfo . lineNumber ) || fixInfo . lineNumber < 1 || fixInfo . lineNumber > lines . length ) {
throwError ( "fixInfo.lineNumber" ) ;
}
cleanFixInfo . lineNumber = fixInfo . lineNumber + frontMatterLines . length ;
}
var effectiveLineNumber = fixInfo . lineNumber || errorInfo . lineNumber ;
if ( fixInfo . editColumn !== undefined ) {
if ( ! helpers . isNumber ( fixInfo . editColumn ) || fixInfo . editColumn < 1 || fixInfo . editColumn > lines [ effectiveLineNumber - 1 ] . length + 1 ) {
throwError ( "fixInfo.editColumn" ) ;
}
cleanFixInfo . editColumn = fixInfo . editColumn ;
}
if ( fixInfo . deleteCount !== undefined ) {
if ( ! helpers . isNumber ( fixInfo . deleteCount ) || fixInfo . deleteCount < - 1 || fixInfo . deleteCount > lines [ effectiveLineNumber - 1 ] . length ) {
throwError ( "fixInfo.deleteCount" ) ;
}
cleanFixInfo . deleteCount = fixInfo . deleteCount ;
}
if ( fixInfo . insertText !== undefined ) {
if ( ! helpers . isString ( fixInfo . insertText ) ) {
throwError ( "fixInfo.insertText" ) ;
}
cleanFixInfo . insertText = fixInfo . insertText ;
}
}
2023-07-11 21:44:45 -07:00
var information = errorInfo . information || rule . information ;
2023-01-17 04:19:40 +00:00
results . push ( {
lineNumber : lineNumber ,
"ruleName" : rule . names [ 0 ] ,
"ruleNames" : rule . names ,
"ruleDescription" : rule . description ,
2023-07-11 21:44:45 -07:00
"ruleInformation" : information ? information . href : null ,
2023-01-17 04:19:40 +00:00
"errorDetail" : errorInfo . detail || null ,
"errorContext" : errorInfo . context || null ,
"errorRange" : errorInfo . range ? _toConsumableArray ( errorInfo . range ) : null ,
"fixInfo" : fixInfo ? cleanFixInfo : null
} ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
// Call (possibly external) rule function to report errors
var catchCallsOnError = function catchCallsOnError ( error ) {
return onError ( {
"lineNumber" : 1 ,
"detail" : "This rule threw an exception: " . concat ( error . message || error )
} ) ;
} ;
var invokeRuleFunction = function invokeRuleFunction ( ) {
return rule [ "function" ] ( params , onError ) ;
} ;
if ( rule . asynchronous ) {
// Asynchronous rule, ensure it returns a Promise
var ruleFunctionPromise = Promise . resolve ( ) . then ( invokeRuleFunction ) ;
return handleRuleFailures ? ruleFunctionPromise [ "catch" ] ( catchCallsOnError ) : ruleFunctionPromise ;
}
// Synchronous rule
2019-10-02 20:10:42 -07:00
try {
2023-01-17 04:19:40 +00:00
invokeRuleFunction ( ) ;
} catch ( error ) {
if ( handleRuleFailures ) {
catchCallsOnError ( error ) ;
} else {
throw error ;
}
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
return null ;
}
// eslint-disable-next-line jsdoc/require-jsdoc
function formatResults ( ) {
// Sort results by rule name by line number
results . sort ( function ( a , b ) {
return a . ruleName . localeCompare ( b . ruleName ) || a . lineNumber - b . lineNumber ;
} ) ;
if ( resultVersion < 3 ) {
// Remove fixInfo and multiple errors for the same rule and line number
var noPrevious = {
"ruleName" : null ,
"lineNumber" : - 1
} ;
results = results . filter ( function ( error , index , array ) {
delete error . fixInfo ;
var previous = array [ index - 1 ] || noPrevious ;
return error . ruleName !== previous . ruleName || error . lineNumber !== previous . lineNumber ;
} ) ;
2021-12-04 17:02:11 -08:00
}
2023-01-17 04:19:40 +00:00
if ( resultVersion === 0 ) {
// Return a dictionary of rule->[line numbers]
var dictionary = { } ;
2023-11-09 19:47:15 -08:00
var _iterator20 = _createForOfIteratorHelper ( results ) ,
_step20 ;
2023-01-17 04:19:40 +00:00
try {
2023-11-09 19:47:15 -08:00
for ( _iterator20 . s ( ) ; ! ( _step20 = _iterator20 . n ( ) ) . done ; ) {
var error = _step20 . value ;
2023-01-17 04:19:40 +00:00
var ruleLines = dictionary [ error . ruleName ] || [ ] ;
ruleLines . push ( error . lineNumber ) ;
dictionary [ error . ruleName ] = ruleLines ;
}
// @ts-ignore
} catch ( err ) {
2023-11-09 19:47:15 -08:00
_iterator20 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-11-09 19:47:15 -08:00
_iterator20 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
results = dictionary ;
} else if ( resultVersion === 1 ) {
// Use ruleAlias instead of ruleNames
2023-11-09 19:47:15 -08:00
var _iterator21 = _createForOfIteratorHelper ( results ) ,
_step21 ;
2023-01-17 04:19:40 +00:00
try {
2023-11-09 19:47:15 -08:00
for ( _iterator21 . s ( ) ; ! ( _step21 = _iterator21 . n ( ) ) . done ; ) {
var _error = _step21 . value ;
2023-01-17 04:19:40 +00:00
_error . ruleAlias = _error . ruleNames [ 1 ] || _error . ruleName ;
delete _error . ruleNames ;
}
} catch ( err ) {
2023-11-09 19:47:15 -08:00
_iterator21 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-11-09 19:47:15 -08:00
_iterator21 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
} else {
// resultVersion 2 or 3: Remove unwanted ruleName
2023-11-09 19:47:15 -08:00
var _iterator22 = _createForOfIteratorHelper ( results ) ,
_step22 ;
2023-01-17 04:19:40 +00:00
try {
2023-11-09 19:47:15 -08:00
for ( _iterator22 . s ( ) ; ! ( _step22 = _iterator22 . n ( ) ) . done ; ) {
var _error2 = _step22 . value ;
2023-01-17 04:19:40 +00:00
delete _error2 . ruleName ;
}
} catch ( err ) {
2023-11-09 19:47:15 -08:00
_iterator22 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-11-09 19:47:15 -08:00
_iterator22 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
2021-12-04 17:02:11 -08:00
}
2023-01-17 04:19:40 +00:00
return results ;
}
// Run all rules
var ruleListAsync = ruleList . filter ( function ( rule ) {
return rule . asynchronous ;
} ) ;
var ruleListSync = ruleList . filter ( function ( rule ) {
return ! rule . asynchronous ;
} ) ;
var ruleListAsyncFirst = [ ] . concat ( _toConsumableArray ( ruleListAsync ) , _toConsumableArray ( ruleListSync ) ) ;
var callbackSuccess = function callbackSuccess ( ) {
return callback ( null , formatResults ( ) ) ;
} ;
var callbackError = function callbackError ( error ) {
return callback ( error instanceof Error ? error : new Error ( error ) ) ;
} ;
try {
var ruleResults = ruleListAsyncFirst . map ( forRule ) ;
if ( ruleListAsync . length > 0 ) {
Promise . all ( ruleResults . slice ( 0 , ruleListAsync . length ) ) . then ( callbackSuccess ) [ "catch" ] ( callbackError ) ;
} else {
callbackSuccess ( ) ;
}
} catch ( error ) {
callbackError ( error ) ;
} finally {
cache . clear ( ) ;
}
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Lints a file containing Markdown content .
*
* @ param { Rule [ ] } ruleList List of rules .
2023-03-12 20:49:41 -07:00
* @ param { Object . < string , string [ ] > } aliasToRuleNames Map of alias to rule
* names .
2020-01-27 19:19:34 -08:00
* @ param { string } file Path of file to lint .
2020-11-24 16:37:11 -08:00
* @ param { Object } md Instance of markdown - it .
2020-01-27 19:19:34 -08:00
* @ param { Configuration } config Configuration object .
2022-06-11 22:40:45 -07:00
* @ param { ConfigurationParser [ ] | null } configParsers Configuration parsers .
2023-01-29 21:13:17 -08:00
* @ param { RegExp | null } frontMatter Regular expression for front matter .
2020-01-27 19:19:34 -08:00
* @ param { boolean } handleRuleFailures Whether to handle exceptions in rules .
* @ param { boolean } noInlineConfig Whether to allow inline configuration .
* @ param { number } resultVersion Version of the LintResults object to return .
2021-08-12 19:38:03 -07:00
* @ param { Object } fs File system implementation .
2020-01-27 19:19:34 -08:00
* @ param { boolean } synchronous Whether to execute synchronously .
2023-09-04 21:41:16 -07:00
* @ param { LintContentCallback } callback Callback ( err , result ) function .
2020-01-27 19:19:34 -08:00
* @ returns { void }
* /
2023-03-12 20:49:41 -07:00
function lintFile ( ruleList , aliasToRuleNames , file , md , config , configParsers , frontMatter , handleRuleFailures , noInlineConfig , resultVersion , fs , synchronous , callback ) {
2023-01-17 04:19:40 +00:00
// eslint-disable-next-line jsdoc/require-jsdoc
function lintContentWrapper ( err , content ) {
if ( err ) {
return callback ( err ) ;
2019-10-02 20:10:42 -07:00
}
2023-03-12 20:49:41 -07:00
return lintContent ( ruleList , aliasToRuleNames , file , content , md , config , configParsers , frontMatter , handleRuleFailures , noInlineConfig , resultVersion , callback ) ;
2023-01-17 04:19:40 +00:00
}
// Make a/synchronous call to read file
if ( synchronous ) {
lintContentWrapper ( null , fs . readFileSync ( file , "utf8" ) ) ;
} else {
fs . readFile ( file , "utf8" , lintContentWrapper ) ;
}
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2020-01-27 19:19:34 -08:00
/ * *
* Lint files and strings specified in the Options object .
*
2023-01-29 21:13:17 -08:00
* @ param { Options | null } options Options object .
2020-01-27 19:19:34 -08:00
* @ param { boolean } synchronous Whether to execute synchronously .
2023-09-04 21:41:16 -07:00
* @ param { LintCallback } callback Callback ( err , result ) function .
2020-01-27 19:19:34 -08:00
* @ returns { void }
* /
2019-10-02 20:10:42 -07:00
function lintInput ( options , synchronous , callback ) {
2023-01-17 04:19:40 +00:00
// Normalize inputs
options = options || { } ;
callback = callback || function noop ( ) { } ;
2023-07-11 22:17:53 -07:00
var customRuleList = [ options . customRules || [ ] ] . flat ( ) . map ( function ( rule ) {
2023-07-12 21:58:36 -07:00
return {
"names" : helpers . cloneIfArray ( rule . names ) ,
"description" : rule . description ,
"information" : helpers . cloneIfUrl ( rule . information ) ,
"tags" : helpers . cloneIfArray ( rule . tags ) ,
"asynchronous" : rule . asynchronous ,
"function" : rule [ "function" ]
} ;
2023-07-11 22:17:53 -07:00
} ) ;
2023-01-17 04:19:40 +00:00
// eslint-disable-next-line unicorn/prefer-spread
2023-07-11 22:17:53 -07:00
var ruleList = rules . concat ( customRuleList ) ;
2023-01-17 04:19:40 +00:00
var ruleErr = validateRuleList ( ruleList , synchronous ) ;
if ( ruleErr ) {
callback ( ruleErr ) ;
return ;
}
var files = [ ] ;
if ( Array . isArray ( options . files ) ) {
files = _toConsumableArray ( options . files ) ;
} else if ( options . files ) {
files = [ String ( options . files ) ] ;
}
var strings = options . strings || { } ;
var stringsKeys = Object . keys ( strings ) ;
var config = options . config || {
"default" : true
} ;
var configParsers = options . configParsers || null ;
var frontMatter = options . frontMatter === undefined ? helpers . frontMatterRe : options . frontMatter ;
var handleRuleFailures = ! ! options . handleRuleFailures ;
var noInlineConfig = ! ! options . noInlineConfig ;
var resultVersion = options . resultVersion === undefined ? 3 : options . resultVersion ;
2023-01-15 21:41:22 -08:00
var md = markdownit ( {
2023-01-17 04:19:40 +00:00
"html" : true
} ) ;
var markdownItPlugins = options . markdownItPlugins || [ ] ;
2023-11-09 19:47:15 -08:00
var _iterator23 = _createForOfIteratorHelper ( markdownItPlugins ) ,
_step23 ;
2023-01-17 04:19:40 +00:00
try {
2023-11-09 19:47:15 -08:00
for ( _iterator23 . s ( ) ; ! ( _step23 = _iterator23 . n ( ) ) . done ; ) {
var plugin = _step23 . value ;
2023-01-17 04:19:40 +00:00
// @ts-ignore
md . use . apply ( md , _toConsumableArray ( plugin ) ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
} catch ( err ) {
2023-11-09 19:47:15 -08:00
_iterator23 . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-11-09 19:47:15 -08:00
_iterator23 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
var fs = options . fs || _ _webpack _require _ _ ( /*! node:fs */ "?d0ee" ) ;
2023-03-12 20:49:41 -07:00
var aliasToRuleNames = mapAliasToRuleNames ( ruleList ) ;
2023-01-17 04:19:40 +00:00
var results = newResults ( ruleList ) ;
var done = false ;
var concurrency = 0 ;
// eslint-disable-next-line jsdoc/require-jsdoc
function lintWorker ( ) {
var currentItem = null ;
2020-09-13 21:15:11 -07:00
// eslint-disable-next-line jsdoc/require-jsdoc
2023-01-17 04:19:40 +00:00
function lintWorkerCallback ( err , result ) {
concurrency -- ;
if ( err ) {
done = true ;
return callback ( err ) ;
}
results [ currentItem ] = result ;
if ( ! synchronous ) {
lintWorker ( ) ;
}
return null ;
2020-09-13 21:15:11 -07:00
}
2023-01-17 04:19:40 +00:00
if ( done ) {
// Abort for error or nothing left to do
} else if ( files . length > 0 ) {
// Lint next file
concurrency ++ ;
currentItem = files . shift ( ) ;
2023-03-12 20:49:41 -07:00
lintFile ( ruleList , aliasToRuleNames , currentItem , md , config , configParsers , frontMatter , handleRuleFailures , noInlineConfig , resultVersion , fs , synchronous , lintWorkerCallback ) ;
2023-01-17 04:19:40 +00:00
} else if ( currentItem = stringsKeys . shift ( ) ) {
// Lint next string
concurrency ++ ;
2023-03-12 20:49:41 -07:00
lintContent ( ruleList , aliasToRuleNames , currentItem , strings [ currentItem ] || "" , md , config , configParsers , frontMatter , handleRuleFailures , noInlineConfig , resultVersion , lintWorkerCallback ) ;
2023-01-17 04:19:40 +00:00
} else if ( concurrency === 0 ) {
// Finish
done = true ;
return callback ( null , results ) ;
2021-12-03 22:43:58 -08:00
}
2023-01-17 04:19:40 +00:00
return null ;
}
if ( synchronous ) {
while ( ! done ) {
lintWorker ( ) ;
2021-12-03 22:43:58 -08:00
}
2023-01-17 04:19:40 +00:00
} else {
// Testing on a Raspberry Pi 4 Model B with an artificial 5ms file access
// delay suggests that a concurrency factor of 8 can eliminate the impact
// of that delay (i.e., total time is the same as with no delay).
lintWorker ( ) ;
lintWorker ( ) ;
lintWorker ( ) ;
lintWorker ( ) ;
lintWorker ( ) ;
lintWorker ( ) ;
lintWorker ( ) ;
lintWorker ( ) ;
}
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
/ * *
* Lint specified Markdown files .
*
2023-01-29 21:13:17 -08:00
* @ param { Options | null } options Configuration options .
2019-12-14 13:50:48 -08:00
* @ param { LintCallback } callback Callback ( err , result ) function .
2019-10-02 20:10:42 -07:00
* @ returns { void }
* /
function markdownlint ( options , callback ) {
2023-01-17 04:19:40 +00:00
return lintInput ( options , false , callback ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
var markdownlintPromisify = promisify && promisify ( markdownlint ) ;
2020-09-13 21:15:11 -07:00
/ * *
* Lint specified Markdown files .
*
* @ param { Options } options Configuration options .
* @ returns { Promise < LintResults > } Results object .
* /
function markdownlintPromise ( options ) {
2023-01-17 04:19:40 +00:00
// @ts-ignore
return markdownlintPromisify ( options ) ;
2020-09-13 21:15:11 -07:00
}
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
/ * *
* Lint specified Markdown files synchronously .
*
2023-01-29 21:13:17 -08:00
* @ param { Options | null } options Configuration options .
2019-12-14 13:50:48 -08:00
* @ returns { LintResults } Results object .
2019-10-02 20:10:42 -07:00
* /
function markdownlintSync ( options ) {
2023-09-04 21:41:16 -07:00
var results = null ;
2023-01-17 04:19:40 +00:00
lintInput ( options , true , function callback ( error , res ) {
if ( error ) {
throw error ;
}
results = res ;
} ) ;
// @ts-ignore
return results ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2021-08-12 20:43:18 -07:00
/ * *
* Resolve referenced "extends" path in a configuration file
* using path . resolve ( ) with require . resolve ( ) as a fallback .
*
* @ param { string } configFile Configuration file name .
* @ param { string } referenceId Referenced identifier to resolve .
* @ param { Object } fs File system implementation .
2022-06-11 22:40:45 -07:00
* @ param { ResolveConfigExtendsCallback } callback Callback ( err , result )
2021-08-12 20:43:18 -07:00
* function .
* @ returns { void }
* /
function resolveConfigExtends ( configFile , referenceId , fs , callback ) {
2023-01-17 04:19:40 +00:00
var configFileDirname = path . dirname ( configFile ) ;
var resolvedExtendsFile = path . resolve ( configFileDirname , referenceId ) ;
fs . access ( resolvedExtendsFile , function ( err ) {
if ( err ) {
// Not a file, try require.resolve
try {
return callback ( null , dynamicRequire . resolve ( referenceId , {
"paths" : [ configFileDirname ]
} ) ) ;
} catch ( _unused ) {
// Unable to resolve, use resolvedExtendsFile
}
}
return callback ( null , resolvedExtendsFile ) ;
} ) ;
2021-08-12 20:43:18 -07:00
}
2023-01-17 04:19:40 +00:00
2020-11-24 16:37:11 -08:00
/ * *
* Resolve referenced "extends" path in a configuration file
* using path . resolve ( ) with require . resolve ( ) as a fallback .
*
* @ param { string } configFile Configuration file name .
* @ param { string } referenceId Referenced identifier to resolve .
2021-08-12 19:38:03 -07:00
* @ param { Object } fs File system implementation .
2020-11-24 16:37:11 -08:00
* @ returns { string } Resolved path to file .
* /
2021-08-12 20:43:18 -07:00
function resolveConfigExtendsSync ( configFile , referenceId , fs ) {
2023-01-17 04:19:40 +00:00
var configFileDirname = path . dirname ( configFile ) ;
var resolvedExtendsFile = path . resolve ( configFileDirname , referenceId ) ;
try {
fs . accessSync ( resolvedExtendsFile ) ;
2020-11-24 16:37:11 -08:00
return resolvedExtendsFile ;
2023-01-17 04:19:40 +00:00
} catch ( _unused2 ) {
// Not a file, try require.resolve
}
try {
return dynamicRequire . resolve ( referenceId , {
"paths" : [ configFileDirname ]
} ) ;
} catch ( _unused3 ) {
// Unable to resolve, return resolvedExtendsFile
}
return resolvedExtendsFile ;
2020-11-24 16:37:11 -08:00
}
2023-01-17 04:19:40 +00:00
2023-04-03 22:59:06 -07:00
/ * *
* Extend specified configuration object .
*
* @ param { Configuration } config Configuration object .
* @ param { string } file Configuration file name .
* @ param { ConfigurationParser [ ] } parsers Parsing
* function ( s ) .
* @ param { Object } fs File system implementation .
* @ param { ReadConfigCallback } callback Callback ( err , result ) function .
* @ returns { void }
* /
function extendConfig ( config , file , parsers , fs , callback ) {
var configExtends = config [ "extends" ] ;
if ( configExtends ) {
return resolveConfigExtends ( file , helpers . expandTildePath ( configExtends , _ _webpack _require _ _ ( /*! node:os */ "?e6c4" ) ) , fs ,
// eslint-disable-next-line no-use-before-define
function ( _ , resolvedExtends ) {
return readConfig (
// @ts-ignore
resolvedExtends , parsers , fs , function ( err , extendsConfig ) {
if ( err ) {
return callback ( err ) ;
}
var result = _objectSpread ( _objectSpread ( { } , extendsConfig ) , config ) ;
delete result [ "extends" ] ;
return callback ( null , result ) ;
} ) ;
} ) ;
}
return callback ( null , config ) ;
}
var extendConfigPromisify = promisify && promisify ( extendConfig ) ;
/ * *
* Extend specified configuration object .
*
* @ param { Configuration } config Configuration object .
* @ param { string } file Configuration file name .
* @ param { ConfigurationParser [ ] } [ parsers ] Parsing function ( s ) .
* @ param { Object } [ fs ] File system implementation .
* @ returns { Promise < Configuration > } Configuration object .
* /
function extendConfigPromise ( config , file , parsers , fs ) {
// @ts-ignore
return extendConfigPromisify ( config , file , parsers , fs ) ;
}
2019-10-02 20:10:42 -07:00
/ * *
* Read specified configuration file .
*
2019-12-14 13:50:48 -08:00
* @ param { string } file Configuration file name .
2020-01-27 19:19:34 -08:00
* @ param { ConfigurationParser [ ] | ReadConfigCallback } parsers Parsing
* function ( s ) .
2021-08-12 19:38:03 -07:00
* @ param { Object } [ fs ] File system implementation .
2020-01-27 19:19:34 -08:00
* @ param { ReadConfigCallback } [ callback ] Callback ( err , result ) function .
2019-10-02 20:10:42 -07:00
* @ returns { void }
* /
2021-08-12 19:38:03 -07:00
function readConfig ( file , parsers , fs , callback ) {
2023-01-17 04:19:40 +00:00
if ( ! callback ) {
if ( fs ) {
callback = fs ;
fs = null ;
} else {
// @ts-ignore
callback = parsers ;
// @ts-ignore
parsers = null ;
2021-08-12 19:38:03 -07:00
}
2023-01-17 04:19:40 +00:00
}
if ( ! fs ) {
fs = _ _webpack _require _ _ ( /*! node:fs */ "?d0ee" ) ;
}
// Read file
2023-04-03 22:59:06 -07:00
file = helpers . expandTildePath ( file , _ _webpack _require _ _ ( /*! node:os */ "?e6c4" ) ) ;
2023-08-22 21:39:09 -07:00
// eslint-disable-next-line n/prefer-promises/fs
2023-01-17 04:19:40 +00:00
fs . readFile ( file , "utf8" , function ( err , content ) {
if ( err ) {
// @ts-ignore
return callback ( err ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
// Try to parse file
// @ts-ignore
var _parseConfiguration2 = parseConfiguration ( file , content , parsers ) ,
config = _parseConfiguration2 . config ,
message = _parseConfiguration2 . message ;
if ( ! config ) {
// @ts-ignore
return callback ( new Error ( message ) ) ;
}
// Extend configuration
// @ts-ignore
2023-04-03 22:59:06 -07:00
return extendConfig ( config , file , parsers , fs , callback ) ;
2023-01-17 04:19:40 +00:00
} ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
var readConfigPromisify = promisify && promisify ( readConfig ) ;
2020-09-13 21:15:11 -07:00
/ * *
* Read specified configuration file .
*
* @ param { string } file Configuration file name .
* @ param { ConfigurationParser [ ] } [ parsers ] Parsing function ( s ) .
2021-08-12 19:38:03 -07:00
* @ param { Object } [ fs ] File system implementation .
2020-09-13 21:15:11 -07:00
* @ returns { Promise < Configuration > } Configuration object .
* /
2021-08-12 19:38:03 -07:00
function readConfigPromise ( file , parsers , fs ) {
2023-01-17 04:19:40 +00:00
// @ts-ignore
return readConfigPromisify ( file , parsers , fs ) ;
2020-09-13 21:15:11 -07:00
}
2023-01-17 04:19:40 +00:00
2019-10-02 20:10:42 -07:00
/ * *
* Read specified configuration file synchronously .
*
2019-12-14 13:50:48 -08:00
* @ param { string } file Configuration file name .
* @ param { ConfigurationParser [ ] } [ parsers ] Parsing function ( s ) .
2021-08-12 19:38:03 -07:00
* @ param { Object } [ fs ] File system implementation .
2019-12-14 13:50:48 -08:00
* @ returns { Configuration } Configuration object .
2021-08-22 18:03:26 -07:00
* @ throws An Error if processing fails .
2019-10-02 20:10:42 -07:00
* /
2021-08-12 19:38:03 -07:00
function readConfigSync ( file , parsers , fs ) {
2023-01-17 04:19:40 +00:00
if ( ! fs ) {
fs = _ _webpack _require _ _ ( /*! node:fs */ "?d0ee" ) ;
}
// Read file
var os = _ _webpack _require _ _ ( /*! node:os */ "?e6c4" ) ;
file = helpers . expandTildePath ( file , os ) ;
var content = fs . readFileSync ( file , "utf8" ) ;
// Try to parse file
var _parseConfiguration3 = parseConfiguration ( file , content , parsers ) ,
config = _parseConfiguration3 . config ,
message = _parseConfiguration3 . message ;
if ( ! config ) {
throw new Error ( message ) ;
}
// Extend configuration
var configExtends = config [ "extends" ] ;
if ( configExtends ) {
delete config [ "extends" ] ;
var resolvedExtends = resolveConfigExtendsSync ( file , helpers . expandTildePath ( configExtends , os ) , fs ) ;
return _objectSpread ( _objectSpread ( { } , readConfigSync ( resolvedExtends , parsers , fs ) ) , config ) ;
}
return config ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
2020-10-20 20:16:49 -07:00
/ * *
* Gets the ( semantic ) version of the library .
*
* @ returns { string } SemVer string .
* /
function getVersion ( ) {
2023-01-17 04:19:40 +00:00
return ( _ _webpack _require _ _ ( /*! ./constants */ "../lib/constants.js" ) . version ) ;
2020-10-20 20:16:49 -07:00
}
2023-01-17 04:19:40 +00:00
2020-09-13 21:15:11 -07:00
// Export a/synchronous/Promise APIs
2019-10-02 20:10:42 -07:00
markdownlint . sync = markdownlintSync ;
markdownlint . readConfig = readConfig ;
markdownlint . readConfigSync = readConfigSync ;
2020-10-20 20:16:49 -07:00
markdownlint . getVersion = getVersion ;
2020-09-13 21:15:11 -07:00
markdownlint . promises = {
2023-01-17 04:19:40 +00:00
"markdownlint" : markdownlintPromise ,
2023-04-03 22:59:06 -07:00
"extendConfig" : extendConfigPromise ,
2023-01-17 04:19:40 +00:00
"readConfig" : readConfigPromise
2020-09-13 21:15:11 -07:00
} ;
2019-10-02 20:10:42 -07:00
module . exports = markdownlint ;
2023-01-17 04:19:40 +00:00
// Type declarations
/ * *
* Function to implement rule logic .
*
* @ callback RuleFunction
* @ param { RuleParams } params Rule parameters .
* @ param { RuleOnError } onError Error - reporting callback .
* @ returns { void }
* /
/ * *
* Rule parameters .
*
* @ typedef { Object } RuleParams
* @ property { string } name File / string name .
* @ property { MarkdownItToken [ ] } tokens Token objects from markdown - it .
* @ property { string [ ] } lines File / string lines .
* @ property { string [ ] } frontMatterLines Front matter lines .
* @ property { RuleConfiguration } config Rule configuration .
* /
/ * *
* Markdown - It token .
*
* @ typedef { Object } MarkdownItToken
* @ property { string [ ] [ ] } attrs HTML attributes .
* @ property { boolean } block Block - level token .
* @ property { MarkdownItToken [ ] } children Child nodes .
* @ property { string } content Tag contents .
* @ property { boolean } hidden Ignore element .
* @ property { string } info Fence info .
* @ property { number } level Nesting level .
* @ property { number [ ] } map Beginning / ending line numbers .
* @ property { string } markup Markup text .
* @ property { Object } meta Arbitrary data .
* @ property { number } nesting Level change .
* @ property { string } tag HTML tag name .
* @ property { string } type Token type .
* @ property { number } lineNumber Line number ( 1 - based ) .
* @ property { string } line Line content .
* /
/ * *
* Error - reporting callback .
*
* @ callback RuleOnError
* @ param { RuleOnErrorInfo } onErrorInfo Error information .
* @ returns { void }
* /
/ * *
* Fix information for RuleOnError callback .
*
* @ typedef { Object } RuleOnErrorInfo
* @ property { number } lineNumber Line number ( 1 - based ) .
* @ property { string } [ detail ] Detail about the error .
* @ property { string } [ context ] Context for the error .
2023-07-11 21:44:45 -07:00
* @ property { URL } [ information ] Link to more information .
2023-01-17 04:19:40 +00:00
* @ property { number [ ] } [ range ] Column number ( 1 - based ) and length .
* @ property { RuleOnErrorFixInfo } [ fixInfo ] Fix information .
* /
/ * *
* Fix information for RuleOnErrorInfo .
*
* @ typedef { Object } RuleOnErrorFixInfo
* @ property { number } [ lineNumber ] Line number ( 1 - based ) .
* @ property { number } [ editColumn ] Column of the fix ( 1 - based ) .
* @ property { number } [ deleteCount ] Count of characters to delete .
* @ property { string } [ insertText ] Text to insert ( after deleting ) .
* /
/ * *
* Rule definition .
*
* @ typedef { Object } Rule
* @ property { string [ ] } names Rule name ( s ) .
* @ property { string } description Rule description .
* @ property { URL } [ information ] Link to more information .
* @ property { string [ ] } tags Rule tag ( s ) .
* @ property { boolean } [ asynchronous ] True if asynchronous .
* @ property { RuleFunction } function Rule implementation .
* /
/ * *
* Configuration options .
*
* @ typedef { Object } Options
* @ property { Configuration } [ config ] Configuration object .
* @ property { ConfigurationParser [ ] } [ configParsers ] Configuration parsers .
* @ property { Rule [ ] | Rule } [ customRules ] Custom rules .
* @ property { string [ ] | string } [ files ] Files to lint .
2023-01-29 21:13:17 -08:00
* @ property { RegExp | null } [ frontMatter ] Front matter pattern .
2023-01-17 04:19:40 +00:00
* @ property { Object } [ fs ] File system implementation .
* @ property { boolean } [ handleRuleFailures ] True to catch exceptions .
* @ property { Plugin [ ] } [ markdownItPlugins ] Additional plugins .
* @ property { boolean } [ noInlineConfig ] True to ignore HTML directives .
* @ property { number } [ resultVersion ] Results object version .
* @ property { Object . < string , string > } [ strings ] Strings to lint .
* /
/ * *
* A markdown - it plugin .
*
* @ typedef { Array } Plugin
* /
/ * *
* Function to pretty - print lint results .
*
* @ callback ToStringCallback
* @ param { boolean } [ ruleAliases ] True to use rule aliases .
* @ returns { string }
* /
/ * *
* Lint results ( for resultVersion 3 ) .
*
* @ typedef { Object . < string , LintError [ ] > } LintResults
* @ property { ToStringCallback } toString String representation .
* /
/ * *
* Lint error .
*
* @ typedef { Object } LintError
* @ property { number } lineNumber Line number ( 1 - based ) .
* @ property { string [ ] } ruleNames Rule name ( s ) .
* @ property { string } ruleDescription Rule description .
* @ property { string } ruleInformation Link to more information .
* @ property { string } errorDetail Detail about the error .
* @ property { string } errorContext Context for the error .
* @ property { number [ ] } errorRange Column number ( 1 - based ) and length .
* @ property { FixInfo } [ fixInfo ] Fix information .
* /
/ * *
* Fix information .
*
* @ typedef { Object } FixInfo
* @ property { number } [ lineNumber ] Line number ( 1 - based ) .
* @ property { number } [ editColumn ] Column of the fix ( 1 - based ) .
* @ property { number } [ deleteCount ] Count of characters to delete .
* @ property { string } [ insertText ] Text to insert ( after deleting ) .
* /
2023-09-04 21:41:16 -07:00
/ * *
* Called with the result of linting a string or document .
*
* @ callback LintContentCallback
* @ param { Error | null } error Error iff failed .
* @ param { LintError [ ] } [ result ] Result iff successful .
* @ returns { void }
* /
2023-01-17 04:19:40 +00:00
/ * *
* Called with the result of the lint function .
*
* @ callback LintCallback
2023-09-04 21:41:16 -07:00
* @ param { Error | null } error Error object iff failed .
* @ param { LintResults } [ results ] Lint results iff succeeded .
2023-01-17 04:19:40 +00:00
* @ returns { void }
* /
/ * *
2023-11-08 19:49:02 -08:00
* Configuration object for linting rules . For the JSON schema , see
2023-01-17 04:19:40 +00:00
* { @ link . . / schema / markdownlint - config - schema . json } .
*
2023-11-08 19:49:02 -08:00
* @ typedef { import ( "./configuration" ) . Configuration } Configuration
2023-01-17 04:19:40 +00:00
* /
/ * *
* Rule configuration object .
*
* @ typedef { boolean | Object } RuleConfiguration Rule configuration .
* /
/ * *
* Parses a configuration string and returns a configuration object .
*
* @ callback ConfigurationParser
* @ param { string } text Configuration string .
* @ returns { Configuration }
* /
/ * *
* Called with the result of the readConfig function .
*
* @ callback ReadConfigCallback
* @ param { Error | null } err Error object or null .
* @ param { Configuration } [ config ] Configuration object .
* @ returns { void }
* /
/ * *
* Called with the result of the resolveConfigExtends function .
*
* @ callback ResolveConfigExtendsCallback
* @ param { Error | null } err Error object or null .
* @ param { string } [ path ] Resolved path to file .
* @ returns { void }
* /
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md001.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md001 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorDetailIf = _require . addErrorDetailIf ,
filterTokens = _require . filterTokens ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-11-09 20:05:30 -08:00
"names" : [ "MD001" , "heading-increment" ] ,
2023-01-17 04:19:40 +00:00
"description" : "Heading levels should only increment by one level at a time" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD001 ( params , onError ) {
var prevLevel = 0 ;
filterTokens ( params , "heading_open" , function forToken ( token ) {
var level = Number . parseInt ( token . tag . slice ( 1 ) , 10 ) ;
if ( prevLevel && level > prevLevel ) {
addErrorDetailIf ( onError , token . lineNumber , "h" + ( prevLevel + 1 ) , "h" + level ) ;
}
prevLevel = level ;
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md003.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md003 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorDetailIf = _require . addErrorDetailIf ,
filterTokens = _require . filterTokens ,
headingStyleFor = _require . headingStyleFor ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-11-09 20:05:30 -08:00
"names" : [ "MD003" , "heading-style" ] ,
2023-01-17 04:19:40 +00:00
"description" : "Heading style" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD003 ( params , onError ) {
var style = String ( params . config . style || "consistent" ) ;
filterTokens ( params , "heading_open" , function forToken ( token ) {
var styleForToken = headingStyleFor ( token ) ;
if ( style === "consistent" ) {
style = styleForToken ;
}
if ( styleForToken !== style ) {
var h12 = /h[12]/ . test ( token . tag ) ;
var setextWithAtx = style === "setext_with_atx" && ( h12 && styleForToken === "setext" || ! h12 && styleForToken === "atx" ) ;
var setextWithAtxClosed = style === "setext_with_atx_closed" && ( h12 && styleForToken === "setext" || ! h12 && styleForToken === "atx_closed" ) ;
if ( ! setextWithAtx && ! setextWithAtxClosed ) {
var expected = style ;
if ( style === "setext_with_atx" ) {
expected = h12 ? "setext" : "atx" ;
} else if ( style === "setext_with_atx_closed" ) {
expected = h12 ? "setext" : "atx_closed" ;
}
addErrorDetailIf ( onError , token . lineNumber , expected , styleForToken ) ;
}
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md004.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md004 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorDetailIf = _require . addErrorDetailIf ,
listItemMarkerRe = _require . listItemMarkerRe ,
unorderedListStyleFor = _require . unorderedListStyleFor ;
var _require2 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
flattenedLists = _require2 . flattenedLists ;
var expectedStyleToMarker = {
"dash" : "-" ,
"plus" : "+" ,
"asterisk" : "*"
2021-02-06 15:49:02 -08:00
} ;
2023-01-17 04:19:40 +00:00
var differentItemStyle = {
"dash" : "plus" ,
"plus" : "asterisk" ,
"asterisk" : "dash"
2021-02-06 15:49:02 -08:00
} ;
2023-01-17 04:19:40 +00:00
var validStyles = Object . keys ( expectedStyleToMarker ) ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD004" , "ul-style" ] ,
"description" : "Unordered list style" ,
"tags" : [ "bullet" , "ul" ] ,
"function" : function MD004 ( params , onError ) {
var style = String ( params . config . style || "consistent" ) ;
var expectedStyle = style ;
var nestingStyles = [ ] ;
var _iterator = _createForOfIteratorHelper ( flattenedLists ( ) ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var list = _step . value ;
if ( list . unordered ) {
if ( expectedStyle === "consistent" ) {
expectedStyle = unorderedListStyleFor ( list . items [ 0 ] ) ;
}
var _iterator2 = _createForOfIteratorHelper ( list . items ) ,
_step2 ;
try {
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
var item = _step2 . value ;
var itemStyle = unorderedListStyleFor ( item ) ;
if ( style === "sublist" ) {
var nesting = list . nesting ;
if ( ! nestingStyles [ nesting ] ) {
nestingStyles [ nesting ] = itemStyle === nestingStyles [ nesting - 1 ] ? differentItemStyle [ itemStyle ] : itemStyle ;
2022-06-08 22:10:27 -07:00
}
2023-01-17 04:19:40 +00:00
expectedStyle = nestingStyles [ nesting ] ;
}
if ( ! validStyles . includes ( expectedStyle ) ) {
expectedStyle = validStyles [ 0 ] ;
}
var range = null ;
var fixInfo = null ;
var match = item . line . match ( listItemMarkerRe ) ;
if ( match ) {
var column = match . index + 1 ;
var length = match [ 0 ] . length ;
range = [ column , length ] ;
fixInfo = {
"editColumn" : match [ 1 ] . length + 1 ,
"deleteCount" : 1 ,
"insertText" : expectedStyleToMarker [ expectedStyle ]
} ;
}
addErrorDetailIf ( onError , item . lineNumber , expectedStyle , itemStyle , null , null , range , fixInfo ) ;
}
} catch ( err ) {
_iterator2 . e ( err ) ;
} finally {
_iterator2 . f ( ) ;
}
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md005.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md005 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addError = _require . addError ,
2023-10-12 21:43:31 -07:00
addErrorDetailIf = _require . addErrorDetailIf ;
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
2023-10-21 22:03:11 -07:00
filterByTypes = _require2 . filterByTypes ,
inHtmlFlow = _require2 . inHtmlFlow ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD005" , "list-indent" ] ,
"description" : "Inconsistent indentation for list items at the same level" ,
"tags" : [ "bullet" , "ul" , "indentation" ] ,
"function" : function MD005 ( params , onError ) {
2023-10-21 22:03:11 -07:00
var lists = filterByTypes ( params . parsers . micromark . tokens , [ "listOrdered" , "listUnordered" ] ) . filter ( function ( list ) {
return ! inHtmlFlow ( list ) ;
} ) ;
2023-10-12 21:43:31 -07:00
var _iterator = _createForOfIteratorHelper ( lists ) ,
2023-01-17 04:19:40 +00:00
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var list = _step . value ;
2023-10-12 21:43:31 -07:00
var expectedIndent = list . startColumn - 1 ;
2023-01-17 04:19:40 +00:00
var expectedEnd = 0 ;
var endMatching = false ;
2023-10-12 21:43:31 -07:00
var listItemPrefixes = list . children . filter ( function ( token ) {
return token . type === "listItemPrefix" ;
} ) ;
var _iterator2 = _createForOfIteratorHelper ( listItemPrefixes ) ,
2023-01-17 04:19:40 +00:00
_step2 ;
try {
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
2023-10-12 21:43:31 -07:00
var listItemPrefix = _step2 . value ;
var lineNumber = listItemPrefix . startLine ;
var actualIndent = listItemPrefix . startColumn - 1 ;
var markerLength = listItemPrefix . text . trim ( ) . length ;
var range = [ 1 , listItemPrefix . startColumn + markerLength ] ;
if ( list . type === "listUnordered" ) {
addErrorDetailIf ( onError , lineNumber , expectedIndent , actualIndent , null , null , range
2023-01-17 04:19:40 +00:00
// No fixInfo; MD007 handles this scenario better
) ;
2023-10-12 21:43:31 -07:00
} else {
var actualEnd = range [ 1 ] - 1 ;
2023-01-17 04:19:40 +00:00
expectedEnd = expectedEnd || actualEnd ;
if ( expectedIndent !== actualIndent || endMatching ) {
if ( expectedEnd === actualEnd ) {
endMatching = true ;
} else {
var detail = endMatching ? "Expected: (" . concat ( expectedEnd , "); Actual: (" ) . concat ( actualEnd , ")" ) : "Expected: " . concat ( expectedIndent , "; Actual: " ) . concat ( actualIndent ) ;
var expected = endMatching ? expectedEnd - markerLength : expectedIndent ;
var actual = endMatching ? actualEnd - markerLength : actualIndent ;
2023-10-12 21:43:31 -07:00
addError ( onError , lineNumber , detail , undefined , range , {
2023-01-17 04:19:40 +00:00
"editColumn" : Math . min ( actual , expected ) + 1 ,
"deleteCount" : Math . max ( actual - expected , 0 ) ,
"insertText" : "" . padEnd ( Math . max ( expected - actual , 0 ) )
} ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
}
}
} catch ( err ) {
_iterator2 . e ( err ) ;
} finally {
_iterator2 . f ( ) ;
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md007.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md007 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
2023-10-15 21:24:59 -07:00
addErrorDetailIf = _require . addErrorDetailIf ;
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
2023-10-21 22:03:11 -07:00
filterByTypes = _require2 . filterByTypes ,
getTokenParentOfType = _require2 . getTokenParentOfType ,
inHtmlFlow = _require2 . inHtmlFlow ;
2023-10-19 23:01:31 -07:00
/ * *
* @ typedef { import ( "../helpers/micromark.cjs" ) . Token } Token
* /
2023-10-21 22:03:11 -07:00
var unorderedListTypes = [ "blockQuotePrefix" , "listItemPrefix" , "listUnordered" ] ;
var unorderedParentTypes = [ "blockQuote" , "listOrdered" , "listUnordered" ] ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD007" , "ul-indent" ] ,
"description" : "Unordered list indentation" ,
"tags" : [ "bullet" , "ul" , "indentation" ] ,
"function" : function MD007 ( params , onError ) {
var indent = Number ( params . config . indent || 2 ) ;
var startIndented = ! ! params . config . start _indented ;
var startIndent = Number ( params . config . start _indent || indent ) ;
2023-10-15 21:24:59 -07:00
var unorderedListNesting = new Map ( ) ;
var lastBlockQuotePrefix = null ;
2023-10-21 22:03:11 -07:00
var tokens = filterByTypes ( params . parsers . micromark . tokens , unorderedListTypes ) ;
2023-10-15 21:24:59 -07:00
var _iterator = _createForOfIteratorHelper ( tokens ) ,
2023-01-17 04:19:40 +00:00
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
2023-10-15 21:24:59 -07:00
var token = _step . value ;
2023-10-19 23:01:31 -07:00
var parent = token . parent ,
startColumn = token . startColumn ,
2023-10-15 21:24:59 -07:00
startLine = token . startLine ,
type = token . type ;
if ( type === "blockQuotePrefix" ) {
lastBlockQuotePrefix = token ;
} else if ( type === "listUnordered" ) {
var nesting = 0 ;
2023-10-19 23:01:31 -07:00
/** @type {Token | null} */
2023-10-15 21:24:59 -07:00
var current = token ;
2023-10-21 22:03:11 -07:00
while ( current = getTokenParentOfType ( current , unorderedParentTypes ) ) {
2023-10-15 21:24:59 -07:00
if ( current . type === "listUnordered" ) {
nesting ++ ;
2023-10-21 22:03:11 -07:00
continue ;
2023-10-15 21:24:59 -07:00
} else if ( current . type === "listOrdered" ) {
nesting = - 1 ;
2023-01-17 04:19:40 +00:00
}
2023-10-21 22:03:11 -07:00
break ;
2023-10-15 21:24:59 -07:00
}
if ( nesting >= 0 ) {
unorderedListNesting . set ( token , nesting ) ;
}
2023-10-21 22:03:11 -07:00
} else if ( ! inHtmlFlow ( token ) ) {
2023-10-15 21:24:59 -07:00
// listItemPrefix
2023-10-19 23:01:31 -07:00
var _nesting = unorderedListNesting . get ( parent ) ;
2023-10-15 21:24:59 -07:00
if ( _nesting !== undefined ) {
var _lastBlockQuotePrefix ;
// listItemPrefix for listUnordered
var expectedIndent = ( startIndented ? startIndent : 0 ) + _nesting * indent ;
var blockQuoteAdjustment = ( ( _lastBlockQuotePrefix = lastBlockQuotePrefix ) === null || _lastBlockQuotePrefix === void 0 ? void 0 : _lastBlockQuotePrefix . endLine ) === startLine ? lastBlockQuotePrefix . endColumn - 1 : 0 ;
var actualIndent = startColumn - 1 - blockQuoteAdjustment ;
var range = [ 1 , startColumn + 1 ] ;
var fixInfo = {
"editColumn" : startColumn - actualIndent ,
"deleteCount" : Math . max ( actualIndent - expectedIndent , 0 ) ,
"insertText" : "" . padEnd ( Math . max ( expectedIndent - actualIndent , 0 ) )
} ;
addErrorDetailIf ( onError , startLine , expectedIndent , actualIndent , undefined , undefined , range , fixInfo ) ;
2023-01-17 04:19:40 +00:00
}
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md009.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md009 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addError = _require . addError ,
filterTokens = _require . filterTokens ,
forEachLine = _require . forEachLine ,
includesSorted = _require . includesSorted ,
numericSortAscending = _require . numericSortAscending ;
var _require2 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
lineMetadata = _require2 . lineMetadata ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD009" , "no-trailing-spaces" ] ,
"description" : "Trailing spaces" ,
"tags" : [ "whitespace" ] ,
"function" : function MD009 ( params , onError ) {
var brSpaces = params . config . br _spaces ;
brSpaces = Number ( brSpaces === undefined ? 2 : brSpaces ) ;
var listItemEmptyLines = ! ! params . config . list _item _empty _lines ;
var strict = ! ! params . config . strict ;
var listItemLineNumbers = [ ] ;
if ( listItemEmptyLines ) {
filterTokens ( params , "list_item_open" , function ( token ) {
for ( var i = token . map [ 0 ] ; i < token . map [ 1 ] ; i ++ ) {
listItemLineNumbers . push ( i + 1 ) ;
}
} ) ;
listItemLineNumbers . sort ( numericSortAscending ) ;
}
var paragraphLineNumbers = [ ] ;
var codeInlineLineNumbers = [ ] ;
if ( strict ) {
filterTokens ( params , "paragraph_open" , function ( token ) {
for ( var i = token . map [ 0 ] ; i < token . map [ 1 ] - 1 ; i ++ ) {
paragraphLineNumbers . push ( i + 1 ) ;
}
} ) ;
var addLineNumberRange = function addLineNumberRange ( start , end ) {
for ( var i = start ; i < end ; i ++ ) {
codeInlineLineNumbers . push ( i ) ;
}
} ;
filterTokens ( params , "inline" , function ( token ) {
var start = 0 ;
var _iterator = _createForOfIteratorHelper ( token . children ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var child = _step . value ;
if ( start > 0 ) {
addLineNumberRange ( start , child . lineNumber ) ;
start = 0 ;
}
if ( child . type === "code_inline" ) {
start = child . lineNumber ;
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-12-14 13:50:48 -08:00
}
2023-01-17 04:19:40 +00:00
if ( start > 0 ) {
addLineNumberRange ( start , token . map [ 1 ] ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
} ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
var expected = brSpaces < 2 ? 0 : brSpaces ;
forEachLine ( lineMetadata ( ) , function ( line , lineIndex , inCode ) {
var lineNumber = lineIndex + 1 ;
var trailingSpaces = line . length - line . trimEnd ( ) . length ;
if ( trailingSpaces && ! inCode && ! includesSorted ( listItemLineNumbers , lineNumber ) && ( expected !== trailingSpaces || strict && ( ! includesSorted ( paragraphLineNumbers , lineNumber ) || includesSorted ( codeInlineLineNumbers , lineNumber ) ) ) ) {
var column = line . length - trailingSpaces + 1 ;
addError ( onError , lineNumber , "Expected: " + ( expected === 0 ? "" : "0 or " ) + expected + "; Actual: " + trailingSpaces , undefined , [ column , trailingSpaces ] , {
"editColumn" : column ,
"deleteCount" : trailingSpaces
} ) ;
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md010.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md010 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addError = _require . addError ,
filterTokens = _require . filterTokens ,
forEachLine = _require . forEachLine ,
withinAnyRange = _require . withinAnyRange ;
var _require2 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
codeBlockAndSpanRanges = _require2 . codeBlockAndSpanRanges ,
lineMetadata = _require2 . lineMetadata ;
var tabRe = /\t+/g ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD010" , "no-hard-tabs" ] ,
"description" : "Hard tabs" ,
"tags" : [ "whitespace" , "hard_tab" ] ,
"function" : function MD010 ( params , onError ) {
var codeBlocks = params . config . code _blocks ;
var includeCode = codeBlocks === undefined ? true : ! ! codeBlocks ;
var ignoreCodeLanguages = new Set ( ( params . config . ignore _code _languages || [ ] ) . map ( function ( language ) {
return language . toLowerCase ( ) ;
} ) ) ;
var spacesPerTab = params . config . spaces _per _tab ;
var spaceMultiplier = spacesPerTab === undefined ? 1 : Math . max ( 0 , Number ( spacesPerTab ) ) ;
var exclusions = includeCode ? [ ] : codeBlockAndSpanRanges ( ) ;
filterTokens ( params , "fence" , function ( token ) {
var language = token . info . trim ( ) . toLowerCase ( ) ;
if ( ignoreCodeLanguages . has ( language ) ) {
for ( var i = token . map [ 0 ] + 1 ; i < token . map [ 1 ] - 1 ; i ++ ) {
exclusions . push ( [ i , 0 , params . lines [ i ] . length ] ) ;
}
}
} ) ;
forEachLine ( lineMetadata ( ) , function ( line , lineIndex , inCode ) {
if ( includeCode || ! inCode ) {
var match = null ;
while ( ( match = tabRe . exec ( line ) ) !== null ) {
var _match = match ,
index = _match . index ;
var column = index + 1 ;
var length = match [ 0 ] . length ;
if ( ! withinAnyRange ( exclusions , lineIndex , index , length ) ) {
addError ( onError , lineIndex + 1 , "Column: " + column , null , [ column , length ] , {
"editColumn" : column ,
"deleteCount" : length ,
"insertText" : "" . padEnd ( length * spaceMultiplier )
} ) ;
}
}
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md011.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md011 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addError = _require . addError ,
forEachLine = _require . forEachLine ,
withinAnyRange = _require . withinAnyRange ;
var _require2 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
codeBlockAndSpanRanges = _require2 . codeBlockAndSpanRanges ,
lineMetadata = _require2 . lineMetadata ;
var reversedLinkRe = /(^|[^\\])\(([^()]+)\)\[([^\]^][^\]]*)\](?!\()/g ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD011" , "no-reversed-links" ] ,
"description" : "Reversed link syntax" ,
"tags" : [ "links" ] ,
"function" : function MD011 ( params , onError ) {
var exclusions = codeBlockAndSpanRanges ( ) ;
forEachLine ( lineMetadata ( ) , function ( line , lineIndex , inCode , onFence ) {
if ( ! inCode && ! onFence ) {
var match = null ;
while ( ( match = reversedLinkRe . exec ( line ) ) !== null ) {
var _match = match ,
_match2 = _slicedToArray ( _match , 4 ) ,
reversedLink = _match2 [ 0 ] ,
preChar = _match2 [ 1 ] ,
linkText = _match2 [ 2 ] ,
linkDestination = _match2 [ 3 ] ;
var index = match . index + preChar . length ;
var length = match [ 0 ] . length - preChar . length ;
if ( ! linkText . endsWith ( "\\" ) && ! linkDestination . endsWith ( "\\" ) && ! withinAnyRange ( exclusions , lineIndex , index , length ) ) {
addError ( onError , lineIndex + 1 , reversedLink . slice ( preChar . length ) , undefined , [ index + 1 , length ] , {
"editColumn" : index + 1 ,
"deleteCount" : length ,
"insertText" : "[" . concat ( linkText , "](" ) . concat ( linkDestination , ")" )
} ) ;
}
}
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md012.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md012 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorDetailIf = _require . addErrorDetailIf ,
forEachLine = _require . forEachLine ;
var _require2 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
lineMetadata = _require2 . lineMetadata ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD012" , "no-multiple-blanks" ] ,
"description" : "Multiple consecutive blank lines" ,
"tags" : [ "whitespace" , "blank_lines" ] ,
"function" : function MD012 ( params , onError ) {
var maximum = Number ( params . config . maximum || 1 ) ;
var count = 0 ;
forEachLine ( lineMetadata ( ) , function ( line , lineIndex , inCode ) {
count = inCode || line . trim ( ) . length > 0 ? 0 : count + 1 ;
if ( maximum < count ) {
addErrorDetailIf ( onError , lineIndex + 1 , maximum , count , null , null , null , {
"deleteCount" : - 1
2019-10-02 20:10:42 -07:00
} ) ;
2023-01-17 04:19:40 +00:00
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md013.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md013 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorDetailIf = _require . addErrorDetailIf ,
filterTokens = _require . filterTokens ,
forEachHeading = _require . forEachHeading ,
forEachLine = _require . forEachLine ,
includesSorted = _require . includesSorted ;
var _require2 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
lineMetadata = _require2 . lineMetadata ,
referenceLinkImageData = _require2 . referenceLinkImageData ;
var longLineRePrefix = "^.{" ;
var longLineRePostfixRelaxed = "}.*\\s.*$" ;
var longLineRePostfixStrict = "}.+$" ;
var linkOrImageOnlyLineRe = /^[es]*(?:lT?L|I)[ES]*$/ ;
var sternModeRe = /^(?:[#>\s]*\s)?\S*$/ ;
var tokenTypeMap = {
"em_open" : "e" ,
"em_close" : "E" ,
"image" : "I" ,
"link_open" : "l" ,
"link_close" : "L" ,
"strong_open" : "s" ,
"strong_close" : "S" ,
"text" : "T"
2019-10-02 20:10:42 -07:00
} ;
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD013" , "line-length" ] ,
"description" : "Line length" ,
"tags" : [ "line_length" ] ,
"function" : function MD013 ( params , onError ) {
var lineLength = Number ( params . config . line _length || 80 ) ;
var headingLineLength = Number ( params . config . heading _line _length || lineLength ) ;
var codeLineLength = Number ( params . config . code _block _line _length || lineLength ) ;
var strict = ! ! params . config . strict ;
var stern = ! ! params . config . stern ;
var longLineRePostfix = strict || stern ? longLineRePostfixStrict : longLineRePostfixRelaxed ;
var longLineRe = new RegExp ( longLineRePrefix + lineLength + longLineRePostfix ) ;
var longHeadingLineRe = new RegExp ( longLineRePrefix + headingLineLength + longLineRePostfix ) ;
var longCodeLineRe = new RegExp ( longLineRePrefix + codeLineLength + longLineRePostfix ) ;
var codeBlocks = params . config . code _blocks ;
var includeCodeBlocks = codeBlocks === undefined ? true : ! ! codeBlocks ;
var tables = params . config . tables ;
var includeTables = tables === undefined ? true : ! ! tables ;
var headings = params . config . headings ;
var includeHeadings = headings === undefined ? true : ! ! headings ;
var headingLineNumbers = [ ] ;
forEachHeading ( params , function ( heading ) {
headingLineNumbers . push ( heading . lineNumber ) ;
} ) ;
var linkOnlyLineNumbers = [ ] ;
filterTokens ( params , "inline" , function ( token ) {
var childTokenTypes = "" ;
var _iterator = _createForOfIteratorHelper ( token . children ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var child = _step . value ;
if ( child . type !== "text" || child . content !== "" ) {
childTokenTypes += tokenTypeMap [ child . type ] || "x" ;
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
if ( linkOrImageOnlyLineRe . test ( childTokenTypes ) ) {
linkOnlyLineNumbers . push ( token . lineNumber ) ;
}
} ) ;
var _referenceLinkImageDa = referenceLinkImageData ( ) ,
definitionLineIndices = _referenceLinkImageDa . definitionLineIndices ;
forEachLine ( lineMetadata ( ) , function ( line , lineIndex , inCode , onFence , inTable ) {
var lineNumber = lineIndex + 1 ;
var isHeading = includesSorted ( headingLineNumbers , lineNumber ) ;
var length = inCode ? codeLineLength : isHeading ? headingLineLength : lineLength ;
var lengthRe = inCode ? longCodeLineRe : isHeading ? longHeadingLineRe : longLineRe ;
if ( ( includeCodeBlocks || ! inCode ) && ( includeTables || ! inTable ) && ( includeHeadings || ! isHeading ) && ! includesSorted ( definitionLineIndices , lineIndex ) && ( strict || ! ( stern && sternModeRe . test ( line ) ) && ! includesSorted ( linkOnlyLineNumbers , lineNumber ) ) && lengthRe . test ( line ) ) {
addErrorDetailIf ( onError , lineNumber , length , line . length , null , null , [ length + 1 , line . length - length ] ) ;
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md014.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md014 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-17 04:19:40 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
filterTokens = _require . filterTokens ;
var dollarCommandRe = /^(\s*)(\$\s+)/ ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD014" , "commands-show-output" ] ,
"description" : "Dollar signs used before commands without showing output" ,
"tags" : [ "code" ] ,
"function" : function MD014 ( params , onError ) {
for ( var _i = 0 , _arr = [ "code_block" , "fence" ] ; _i < _arr . length ; _i ++ ) {
var type = _arr [ _i ] ;
filterTokens ( params , type , function ( token ) {
var margin = token . type === "fence" ? 1 : 0 ;
var dollarInstances = [ ] ;
var allDollars = true ;
for ( var i = token . map [ 0 ] + margin ; i < token . map [ 1 ] - margin ; i ++ ) {
var line = params . lines [ i ] ;
var lineTrim = line . trim ( ) ;
if ( lineTrim ) {
var match = dollarCommandRe . exec ( line ) ;
if ( match ) {
var column = match [ 1 ] . length + 1 ;
var length = match [ 2 ] . length ;
dollarInstances . push ( [ i , lineTrim , column , length ] ) ;
} else {
allDollars = false ;
}
}
}
if ( allDollars ) {
var _iterator = _createForOfIteratorHelper ( dollarInstances ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var instance = _step . value ;
var _instance = _slicedToArray ( instance , 4 ) ,
_i2 = _instance [ 0 ] ,
_lineTrim = _instance [ 1 ] ,
_column = _instance [ 2 ] ,
_length = _instance [ 3 ] ;
addErrorContext ( onError , _i2 + 1 , _lineTrim , null , null , [ _column , _length ] , {
"editColumn" : _column ,
"deleteCount" : _length
} ) ;
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
}
} ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md018.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md018 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
forEachLine = _require . forEachLine ;
var _require2 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
lineMetadata = _require2 . lineMetadata ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD018" , "no-missing-space-atx" ] ,
"description" : "No space after hash on atx style heading" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" , "atx" , "spaces" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD018 ( params , onError ) {
forEachLine ( lineMetadata ( ) , function ( line , lineIndex , inCode ) {
if ( ! inCode && /^#+[^# \t]/ . test ( line ) && ! /#\s*$/ . test ( line ) && ! line . startsWith ( "#️⃣" ) ) {
var hashCount = /^#+/ . exec ( line ) [ 0 ] . length ;
addErrorContext ( onError , lineIndex + 1 , line . trim ( ) , null , null , [ 1 , hashCount + 1 ] , {
"editColumn" : hashCount + 1 ,
"insertText" : " "
2019-10-02 20:10:42 -07:00
} ) ;
2023-01-17 04:19:40 +00:00
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md019.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md019 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
filterTokens = _require . filterTokens ,
headingStyleFor = _require . headingStyleFor ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD019" , "no-multiple-space-atx" ] ,
"description" : "Multiple spaces after hash on atx style heading" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" , "atx" , "spaces" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD019 ( params , onError ) {
filterTokens ( params , "heading_open" , function ( token ) {
if ( headingStyleFor ( token ) === "atx" ) {
var line = token . line ,
lineNumber = token . lineNumber ;
var match = /^(#+)([ \t]{2,})\S/ . exec ( line ) ;
if ( match ) {
var _match = _slicedToArray ( match , 3 ) ,
hashLength = _match [ 1 ] [ "length" ] ,
spacesLength = _match [ 2 ] [ "length" ] ;
addErrorContext ( onError , lineNumber , line . trim ( ) , null , null , [ 1 , hashLength + spacesLength + 1 ] , {
"editColumn" : hashLength + 1 ,
"deleteCount" : spacesLength - 1
} ) ;
}
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md020.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md020 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
forEachLine = _require . forEachLine ;
var _require2 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
lineMetadata = _require2 . lineMetadata ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD020" , "no-missing-space-closed-atx" ] ,
"description" : "No space inside hashes on closed atx style heading" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" , "atx_closed" , "spaces" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD020 ( params , onError ) {
forEachLine ( lineMetadata ( ) , function ( line , lineIndex , inCode ) {
if ( ! inCode ) {
var match = /^(#+)([ \t]*)([^#]*?[^#\\])([ \t]*)((?:\\#)?)(#+)(\s*)$/ . exec ( line ) ;
if ( match ) {
var _match = _slicedToArray ( match , 8 ) ,
leftHash = _match [ 1 ] ,
leftSpaceLength = _match [ 2 ] [ "length" ] ,
content = _match [ 3 ] ,
rightSpaceLength = _match [ 4 ] [ "length" ] ,
rightEscape = _match [ 5 ] ,
rightHash = _match [ 6 ] ,
trailSpaceLength = _match [ 7 ] [ "length" ] ;
var leftHashLength = leftHash . length ;
var rightHashLength = rightHash . length ;
var left = ! leftSpaceLength ;
var right = ! rightSpaceLength || rightEscape ;
var rightEscapeReplacement = rightEscape ? "" . concat ( rightEscape , " " ) : "" ;
if ( left || right ) {
var range = left ? [ 1 , leftHashLength + 1 ] : [ line . length - trailSpaceLength - rightHashLength , rightHashLength + 1 ] ;
addErrorContext ( onError , lineIndex + 1 , line . trim ( ) , left , right , range , {
"editColumn" : 1 ,
"deleteCount" : line . length ,
"insertText" : "" . concat ( leftHash , " " ) . concat ( content , " " ) . concat ( rightEscapeReplacement ) . concat ( rightHash )
} ) ;
}
}
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md021.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md021 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
filterTokens = _require . filterTokens ,
headingStyleFor = _require . headingStyleFor ;
var closedAtxRe = /^(#+)([ \t]+)([^ \t]|[^ \t].*[^ \t])([ \t]+)(#+)(\s*)$/ ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD021" , "no-multiple-space-closed-atx" ] ,
"description" : "Multiple spaces inside hashes on closed atx style heading" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" , "atx_closed" , "spaces" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD021 ( params , onError ) {
filterTokens ( params , "heading_open" , function ( token ) {
if ( headingStyleFor ( token ) === "atx_closed" ) {
var line = token . line ,
lineNumber = token . lineNumber ;
var match = closedAtxRe . exec ( line ) ;
if ( match ) {
var _match = _slicedToArray ( match , 7 ) ,
leftHash = _match [ 1 ] ,
leftSpaceLength = _match [ 2 ] [ "length" ] ,
content = _match [ 3 ] ,
rightSpaceLength = _match [ 4 ] [ "length" ] ,
rightHash = _match [ 5 ] ,
trailSpaceLength = _match [ 6 ] [ "length" ] ;
var left = leftSpaceLength > 1 ;
var right = rightSpaceLength > 1 ;
if ( left || right ) {
var length = line . length ;
var leftHashLength = leftHash . length ;
var rightHashLength = rightHash . length ;
var range = left ? [ 1 , leftHashLength + leftSpaceLength + 1 ] : [ length - trailSpaceLength - rightHashLength - rightSpaceLength , rightSpaceLength + rightHashLength + 1 ] ;
addErrorContext ( onError , lineNumber , line . trim ( ) , left , right , range , {
"editColumn" : 1 ,
"deleteCount" : length ,
"insertText" : "" . concat ( leftHash , " " ) . concat ( content , " " ) . concat ( rightHash )
} ) ;
}
}
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md022.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md022 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
2023-08-08 22:56:47 -07:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-08-08 22:56:47 -07:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
function _toConsumableArray ( arr ) { return _arrayWithoutHoles ( arr ) || _iterableToArray ( arr ) || _unsupportedIterableToArray ( arr ) || _nonIterableSpread ( ) ; }
function _nonIterableSpread ( ) { throw new TypeError ( "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _iterableToArray ( iter ) { if ( typeof Symbol !== "undefined" && iter [ Symbol . iterator ] != null || iter [ "@@iterator" ] != null ) return Array . from ( iter ) ; }
function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) return _arrayLikeToArray ( arr ) ; }
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-17 04:19:40 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorDetailIf = _require . addErrorDetailIf ,
blockquotePrefixRe = _require . blockquotePrefixRe ,
isBlankLine = _require . isBlankLine ;
2023-08-05 23:09:07 -07:00
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
2023-08-08 22:56:47 -07:00
filterByTypes = _require2 . filterByTypes ,
2023-10-21 22:03:11 -07:00
getHeadingLevel = _require2 . getHeadingLevel ,
inHtmlFlow = _require2 . inHtmlFlow ;
2023-08-08 22:56:47 -07:00
var defaultLines = 1 ;
var getLinesFunction = function getLinesFunction ( linesParam ) {
if ( Array . isArray ( linesParam ) ) {
var linesArray = new Array ( 6 ) . fill ( defaultLines ) ;
var _iterator = _createForOfIteratorHelper ( _toConsumableArray ( linesParam . entries ( ) ) . slice ( 0 , 6 ) ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var _step$value = _slicedToArray ( _step . value , 2 ) ,
index = _step$value [ 0 ] ,
value = _step$value [ 1 ] ;
linesArray [ index ] = value ;
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
return function ( heading ) {
return linesArray [ getHeadingLevel ( heading ) - 1 ] ;
} ;
}
// Coerce linesParam to a number
var lines = linesParam === undefined ? defaultLines : Number ( linesParam ) ;
return function ( ) {
return lines ;
} ;
} ;
2023-01-17 04:19:40 +00:00
var getBlockQuote = function getBlockQuote ( str , count ) {
return ( str || "" ) . match ( blockquotePrefixRe ) [ 0 ] . trimEnd ( )
// eslint-disable-next-line unicorn/prefer-spread
. concat ( "\n" ) . repeat ( count ) ;
} ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-11-09 20:05:30 -08:00
"names" : [ "MD022" , "blanks-around-headings" ] ,
2023-01-17 04:19:40 +00:00
"description" : "Headings should be surrounded by blank lines" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" , "blank_lines" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD022 ( params , onError ) {
2023-08-08 22:56:47 -07:00
var getLinesAbove = getLinesFunction ( params . config . lines _above ) ;
var getLinesBelow = getLinesFunction ( params . config . lines _below ) ;
2023-08-05 23:09:07 -07:00
var lines = params . lines ,
parsers = params . parsers ;
2023-10-21 22:03:11 -07:00
var headings = filterByTypes ( parsers . micromark . tokens , [ "atxHeading" , "setextHeading" ] ) . filter ( function ( heading ) {
return ! inHtmlFlow ( heading ) ;
} ) ;
2023-08-08 22:56:47 -07:00
var _iterator2 = _createForOfIteratorHelper ( headings ) ,
_step2 ;
2023-08-05 23:09:07 -07:00
try {
2023-08-08 22:56:47 -07:00
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
var heading = _step2 . value ;
2023-08-05 23:09:07 -07:00
var startLine = heading . startLine ,
endLine = heading . endLine ;
var line = lines [ startLine - 1 ] . trim ( ) ;
2023-08-06 15:24:35 -07:00
// Check lines above
2023-08-08 22:56:47 -07:00
var linesAbove = getLinesAbove ( heading ) ;
2023-08-06 15:24:35 -07:00
if ( linesAbove >= 0 ) {
var actualAbove = 0 ;
2023-08-08 22:56:47 -07:00
for ( var i = 0 ; i < linesAbove && isBlankLine ( lines [ startLine - 2 - i ] ) ; i ++ ) {
actualAbove ++ ;
2023-08-05 23:09:07 -07:00
}
2023-08-06 15:24:35 -07:00
addErrorDetailIf ( onError , startLine , linesAbove , actualAbove , "Above" , line , null , {
"insertText" : getBlockQuote ( lines [ startLine - 2 ] , linesAbove - actualAbove )
} ) ;
2023-01-17 04:19:40 +00:00
}
2023-08-06 15:24:35 -07:00
// Check lines below
2023-08-08 22:56:47 -07:00
var linesBelow = getLinesBelow ( heading ) ;
2023-08-06 15:24:35 -07:00
if ( linesBelow >= 0 ) {
var actualBelow = 0 ;
2023-08-26 17:45:39 -07:00
for ( var _i = 0 ; _i < linesBelow && isBlankLine ( lines [ endLine + _i ] ) ; _i ++ ) {
2023-08-08 22:56:47 -07:00
actualBelow ++ ;
2023-08-05 23:09:07 -07:00
}
2023-08-06 15:24:35 -07:00
addErrorDetailIf ( onError , startLine , linesBelow , actualBelow , "Below" , line , null , {
"lineNumber" : endLine + 1 ,
"insertText" : getBlockQuote ( lines [ endLine ] , linesBelow - actualBelow )
} ) ;
2023-01-17 04:19:40 +00:00
}
}
2023-08-05 23:09:07 -07:00
} catch ( err ) {
2023-08-08 22:56:47 -07:00
_iterator2 . e ( err ) ;
2023-08-05 23:09:07 -07:00
} finally {
2023-08-08 22:56:47 -07:00
_iterator2 . f ( ) ;
2023-08-05 23:09:07 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md023.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md023 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
filterTokens = _require . filterTokens ;
var spaceBeforeHeadingRe = /^(\s+|[>\s]+\s\s)[^>\s]/ ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-11-09 20:05:30 -08:00
"names" : [ "MD023" , "heading-start-left" ] ,
2023-01-17 04:19:40 +00:00
"description" : "Headings must start at the beginning of the line" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" , "spaces" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD023 ( params , onError ) {
filterTokens ( params , "heading_open" , function forToken ( token ) {
var lineNumber = token . lineNumber ,
line = token . line ;
var match = line . match ( spaceBeforeHeadingRe ) ;
if ( match ) {
var _match = _slicedToArray ( match , 2 ) ,
prefixAndFirstChar = _match [ 0 ] ,
prefix = _match [ 1 ] ;
var deleteCount = prefix . length ;
var prefixLengthNoSpace = prefix . trimEnd ( ) . length ;
if ( prefixLengthNoSpace ) {
deleteCount -= prefixLengthNoSpace - 1 ;
}
addErrorContext ( onError , lineNumber , line , null , null , [ 1 , prefixAndFirstChar . length ] , {
"editColumn" : prefixLengthNoSpace + 1 ,
"deleteCount" : deleteCount
2019-10-02 20:10:42 -07:00
} ) ;
2023-01-17 04:19:40 +00:00
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md024.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md024 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
forEachHeading = _require . forEachHeading ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-11-09 20:05:30 -08:00
"names" : [ "MD024" , "no-duplicate-heading" ] ,
2023-01-17 04:19:40 +00:00
"description" : "Multiple headings with the same content" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD024 ( params , onError ) {
var siblingsOnly = ! ! params . config . siblings _only || ! ! params . config . allow _different _nesting || false ;
var knownContents = [ null , [ ] ] ;
var lastLevel = 1 ;
var knownContent = knownContents [ lastLevel ] ;
forEachHeading ( params , function ( heading , content ) {
if ( siblingsOnly ) {
var newLevel = heading . tag . slice ( 1 ) ;
while ( lastLevel < newLevel ) {
lastLevel ++ ;
knownContents [ lastLevel ] = [ ] ;
}
while ( lastLevel > newLevel ) {
knownContents [ lastLevel ] = [ ] ;
lastLevel -- ;
}
knownContent = knownContents [ newLevel ] ;
}
if ( knownContent . includes ( content ) ) {
addErrorContext ( onError , heading . lineNumber , heading . line . trim ( ) ) ;
} else {
knownContent . push ( content ) ;
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md025.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md025 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
filterTokens = _require . filterTokens ,
frontMatterHasTitle = _require . frontMatterHasTitle ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD025" , "single-title" , "single-h1" ] ,
"description" : "Multiple top-level headings in the same document" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD025 ( params , onError ) {
var level = Number ( params . config . level || 1 ) ;
var tag = "h" + level ;
var foundFrontMatterTitle = frontMatterHasTitle ( params . frontMatterLines , params . config . front _matter _title ) ;
var hasTopLevelHeading = false ;
filterTokens ( params , "heading_open" , function forToken ( token ) {
if ( token . tag === tag ) {
if ( hasTopLevelHeading || foundFrontMatterTitle ) {
addErrorContext ( onError , token . lineNumber , token . line . trim ( ) ) ;
} else if ( token . lineNumber === 1 ) {
hasTopLevelHeading = true ;
}
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md026.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md026 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
2023-06-24 15:45:51 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addError = _require . addError ,
allPunctuationNoQuestion = _require . allPunctuationNoQuestion ,
2023-06-24 15:45:51 -07:00
endOfLineGemojiCodeRe = _require . endOfLineGemojiCodeRe ,
endOfLineHtmlEntityRe = _require . endOfLineHtmlEntityRe ,
escapeForRegExp = _require . escapeForRegExp ;
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
filterByTypes = _require2 . filterByTypes ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD026" , "no-trailing-punctuation" ] ,
"description" : "Trailing punctuation in heading" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD026 ( params , onError ) {
var punctuation = params . config . punctuation ;
punctuation = String ( punctuation === undefined ? allPunctuationNoQuestion : punctuation ) ;
var trailingPunctuationRe = new RegExp ( "\\s*[" + escapeForRegExp ( punctuation ) + "]+$" ) ;
2023-06-24 15:45:51 -07:00
var headings = filterByTypes ( params . parsers . micromark . tokens , [ "atxHeadingText" , "setextHeadingText" ] ) ;
var _iterator = _createForOfIteratorHelper ( headings ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var heading = _step . value ;
var endLine = heading . endLine ,
startColumn = heading . startColumn ,
text = heading . text ;
var match = trailingPunctuationRe . exec ( text ) ;
if ( match && ! endOfLineHtmlEntityRe . test ( text ) && ! endOfLineGemojiCodeRe . test ( text ) ) {
var fullMatch = match [ 0 ] ;
var column = startColumn + match . index ;
var length = fullMatch . length ;
addError ( onError , endLine , "Punctuation: '" . concat ( fullMatch , "'" ) , undefined , [ column , length ] , {
"editColumn" : column ,
"deleteCount" : length
} ) ;
}
2023-01-17 04:19:40 +00:00
}
2023-06-24 15:45:51 -07:00
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md027.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md027 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-17 04:19:40 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
newLineRe = _require . newLineRe ;
var spaceAfterBlockQuoteRe = /^((?:\s*>)+)(\s{2,})\S/ ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD027" , "no-multiple-space-blockquote" ] ,
"description" : "Multiple spaces after blockquote symbol" ,
"tags" : [ "blockquote" , "whitespace" , "indentation" ] ,
"function" : function MD027 ( params , onError ) {
var blockquoteNesting = 0 ;
var listItemNesting = 0 ;
2023-02-18 21:41:07 -08:00
var _iterator = _createForOfIteratorHelper ( params . parsers . markdownit . tokens ) ,
2023-01-17 04:19:40 +00:00
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var token = _step . value ;
var content = token . content ,
lineNumber = token . lineNumber ,
type = token . type ;
if ( type === "blockquote_open" ) {
blockquoteNesting ++ ;
} else if ( type === "blockquote_close" ) {
blockquoteNesting -- ;
} else if ( type === "list_item_open" ) {
listItemNesting ++ ;
} else if ( type === "list_item_close" ) {
listItemNesting -- ;
} else if ( type === "inline" && blockquoteNesting ) {
var lineCount = content . split ( newLineRe ) . length ;
for ( var i = 0 ; i < lineCount ; i ++ ) {
var line = params . lines [ lineNumber + i - 1 ] ;
var match = line . match ( spaceAfterBlockQuoteRe ) ;
if ( match ) {
var _match = _slicedToArray ( match , 3 ) ,
fullMatch = _match [ 0 ] ,
blockquoteLength = _match [ 1 ] [ "length" ] ,
spaceLength = _match [ 2 ] [ "length" ] ;
if ( ! listItemNesting || fullMatch [ fullMatch . length - 1 ] === ">" ) {
addErrorContext ( onError , lineNumber + i , line , null , null , [ 1 , fullMatch . length ] , {
"editColumn" : blockquoteLength + 1 ,
"deleteCount" : spaceLength - 1
} ) ;
}
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2022-06-08 22:10:27 -07:00
}
2023-01-17 04:19:40 +00:00
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md028.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md028 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addError = _require . addError ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD028" , "no-blanks-blockquote" ] ,
"description" : "Blank line inside blockquote" ,
"tags" : [ "blockquote" , "whitespace" ] ,
"function" : function MD028 ( params , onError ) {
var prevToken = { } ;
var prevLineNumber = null ;
2023-02-18 21:41:07 -08:00
var _iterator = _createForOfIteratorHelper ( params . parsers . markdownit . tokens ) ,
2023-01-17 04:19:40 +00:00
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var token = _step . value ;
if ( token . type === "blockquote_open" && prevToken . type === "blockquote_close" ) {
for ( var lineNumber = prevLineNumber ; lineNumber < token . lineNumber ; lineNumber ++ ) {
addError ( onError , lineNumber ) ;
}
}
prevToken = token ;
if ( token . type === "blockquote_open" ) {
prevLineNumber = token . map [ 1 ] + 1 ;
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md029.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md029 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-17 04:19:40 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorDetailIf = _require . addErrorDetailIf ,
listItemMarkerRe = _require . listItemMarkerRe ,
orderedListItemMarkerRe = _require . orderedListItemMarkerRe ,
rangeFromRegExp = _require . rangeFromRegExp ;
var _require2 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
flattenedLists = _require2 . flattenedLists ;
var listStyleExamples = {
"one" : "1/1/1" ,
"ordered" : "1/2/3" ,
"zero" : "0/0/0"
2019-10-02 20:10:42 -07:00
} ;
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD029" , "ol-prefix" ] ,
"description" : "Ordered list item prefix" ,
"tags" : [ "ol" ] ,
"function" : function MD029 ( params , onError ) {
var style = String ( params . config . style || "one_or_ordered" ) ;
var filteredLists = flattenedLists ( ) . filter ( function ( list ) {
return ! list . unordered ;
} ) ;
var _iterator = _createForOfIteratorHelper ( filteredLists ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var list = _step . value ;
var items = list . items ;
var current = 1 ;
var incrementing = false ;
// Check for incrementing number pattern 1/2/3 or 0/1/2
if ( items . length >= 2 ) {
var first = orderedListItemMarkerRe . exec ( items [ 0 ] . line ) ;
var second = orderedListItemMarkerRe . exec ( items [ 1 ] . line ) ;
if ( first && second ) {
var _first = _slicedToArray ( first , 2 ) ,
firstNumber = _first [ 1 ] ;
var _second = _slicedToArray ( second , 2 ) ,
secondNumber = _second [ 1 ] ;
if ( secondNumber !== "1" || firstNumber === "0" ) {
incrementing = true ;
if ( firstNumber === "0" ) {
2020-04-11 13:54:46 -07:00
current = 0 ;
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
}
// Determine effective style
var listStyle = style ;
if ( listStyle === "one_or_ordered" ) {
listStyle = incrementing ? "ordered" : "one" ;
}
// Force expected value for 0/0/0 and 1/1/1 patterns
if ( listStyle === "zero" ) {
current = 0 ;
} else if ( listStyle === "one" ) {
current = 1 ;
2022-06-08 22:10:27 -07:00
}
2023-01-17 04:19:40 +00:00
// Validate each list item marker
var _iterator2 = _createForOfIteratorHelper ( items ) ,
_step2 ;
try {
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
var item = _step2 . value ;
var match = orderedListItemMarkerRe . exec ( item . line ) ;
if ( match ) {
addErrorDetailIf ( onError , item . lineNumber , String ( current ) , match [ 1 ] , "Style: " + listStyleExamples [ listStyle ] , null , rangeFromRegExp ( item . line , listItemMarkerRe ) ) ;
if ( listStyle === "ordered" ) {
current ++ ;
}
}
}
} catch ( err ) {
_iterator2 . e ( err ) ;
} finally {
_iterator2 . f ( ) ;
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md030.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md030 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-17 04:19:40 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorDetailIf = _require . addErrorDetailIf ;
2023-10-10 22:03:18 -07:00
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
filterByTypes = _require2 . filterByTypes ;
2023-01-17 04:19:40 +00:00
module . exports = {
"names" : [ "MD030" , "list-marker-space" ] ,
"description" : "Spaces after list markers" ,
"tags" : [ "ol" , "ul" , "whitespace" ] ,
"function" : function MD030 ( params , onError ) {
var ulSingle = Number ( params . config . ul _single || 1 ) ;
var olSingle = Number ( params . config . ol _single || 1 ) ;
var ulMulti = Number ( params . config . ul _multi || 1 ) ;
var olMulti = Number ( params . config . ol _multi || 1 ) ;
2023-10-10 22:03:18 -07:00
var lists = filterByTypes ( params . parsers . micromark . tokens , [ "listOrdered" , "listUnordered" ] ) ;
var _iterator = _createForOfIteratorHelper ( lists ) ,
2023-01-17 04:19:40 +00:00
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var list = _step . value ;
2023-10-10 22:03:18 -07:00
var ordered = list . type === "listOrdered" ;
var listItemPrefixes = list . children . filter ( function ( token ) {
return token . type === "listItemPrefix" ;
} ) ;
var allSingleLine = list . endLine - list . startLine + 1 === listItemPrefixes . length ;
var expectedSpaces = ordered ? allSingleLine ? olSingle : olMulti : allSingleLine ? ulSingle : ulMulti ;
var _iterator2 = _createForOfIteratorHelper ( listItemPrefixes ) ,
2023-01-17 04:19:40 +00:00
_step2 ;
try {
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
2023-10-10 22:03:18 -07:00
var listItemPrefix = _step2 . value ;
var range = [ listItemPrefix . startColumn , listItemPrefix . endColumn - listItemPrefix . startColumn ] ;
var listItemPrefixWhitespaces = listItemPrefix . children . filter ( function ( token ) {
return token . type === "listItemPrefixWhitespace" ;
} ) ;
var _iterator3 = _createForOfIteratorHelper ( listItemPrefixWhitespaces ) ,
_step3 ;
try {
for ( _iterator3 . s ( ) ; ! ( _step3 = _iterator3 . n ( ) ) . done ; ) {
var listItemPrefixWhitespace = _step3 . value ;
var endColumn = listItemPrefixWhitespace . endColumn ,
startColumn = listItemPrefixWhitespace . startColumn ,
startLine = listItemPrefixWhitespace . startLine ;
var actualSpaces = endColumn - startColumn ;
var fixInfo = {
"editColumn" : startColumn ,
2023-01-17 04:19:40 +00:00
"deleteCount" : actualSpaces ,
"insertText" : "" . padEnd ( expectedSpaces )
} ;
2023-10-10 22:03:18 -07:00
addErrorDetailIf ( onError , startLine , expectedSpaces , actualSpaces , null , null , range , fixInfo ) ;
2023-01-17 04:19:40 +00:00
}
2023-10-10 22:03:18 -07:00
} catch ( err ) {
_iterator3 . e ( err ) ;
} finally {
_iterator3 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
}
} catch ( err ) {
_iterator2 . e ( err ) ;
} finally {
_iterator2 . f ( ) ;
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md031.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md031 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
forEachLine = _require . forEachLine ,
isBlankLine = _require . isBlankLine ;
var _require2 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
lineMetadata = _require2 . lineMetadata ;
var codeFencePrefixRe = /^(.*?)[`~]/ ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD031" , "blanks-around-fences" ] ,
"description" : "Fenced code blocks should be surrounded by blank lines" ,
"tags" : [ "code" , "blank_lines" ] ,
"function" : function MD031 ( params , onError ) {
var listItems = params . config . list _items ;
var includeListItems = listItems === undefined ? true : ! ! listItems ;
var lines = params . lines ;
forEachLine ( lineMetadata ( ) , function ( line , i , inCode , onFence , inTable , inItem ) {
var onTopFence = onFence > 0 ;
var onBottomFence = onFence < 0 ;
if ( ( includeListItems || ! inItem ) && ( onTopFence && ! isBlankLine ( lines [ i - 1 ] ) || onBottomFence && ! isBlankLine ( lines [ i + 1 ] ) ) ) {
var _ref = line . match ( codeFencePrefixRe ) || [ ] ,
_ref2 = _slicedToArray ( _ref , 2 ) ,
prefix = _ref2 [ 1 ] ;
var fixInfo = prefix === undefined ? null : {
"lineNumber" : i + ( onTopFence ? 1 : 2 ) ,
"insertText" : "" . concat ( prefix . replace ( /[^>]/g , " " ) . trim ( ) , "\n" )
} ;
addErrorContext ( onError , i + 1 , lines [ i ] . trim ( ) , null , null , null , fixInfo ) ;
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md032.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md032 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
blockquotePrefixRe = _require . blockquotePrefixRe ,
isBlankLine = _require . isBlankLine ;
2023-07-18 22:33:57 -07:00
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
2023-08-29 22:38:00 -07:00
filterByPredicate = _require2 . filterByPredicate ;
2023-07-18 22:33:57 -07:00
var nonContentTokens = new Set ( [ "blockQuoteMarker" , "blockQuotePrefix" , "blockQuotePrefixWhitespace" , "lineEnding" , "lineEndingBlank" , "linePrefix" , "listItemIndent" ] ) ;
var isList = function isList ( token ) {
return token . type === "listOrdered" || token . type === "listUnordered" ;
} ;
var addBlankLineError = function addBlankLineError ( onError , lines , lineIndex , lineNumber ) {
var line = lines [ lineIndex ] ;
var quotePrefix = line . match ( blockquotePrefixRe ) [ 0 ] . trimEnd ( ) ;
addErrorContext ( onError , lineIndex + 1 , line . trim ( ) , null , null , null , {
lineNumber : lineNumber ,
"insertText" : "" . concat ( quotePrefix , "\n" )
} ) ;
} ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD032" , "blanks-around-lists" ] ,
"description" : "Lists should be surrounded by blank lines" ,
"tags" : [ "bullet" , "ul" , "ol" , "blank_lines" ] ,
"function" : function MD032 ( params , onError ) {
2023-07-18 22:33:57 -07:00
var lines = params . lines ,
parsers = params . parsers ;
// For every top-level list...
var topLevelLists = filterByPredicate ( parsers . micromark . tokens , isList , function ( token ) {
2023-09-02 12:07:14 -07:00
return isList ( token ) || token . type === "htmlFlow" ? [ ] : token . children ;
2023-01-17 04:19:40 +00:00
} ) ;
2023-07-18 22:33:57 -07:00
var _iterator = _createForOfIteratorHelper ( topLevelLists ) ,
2023-01-17 04:19:40 +00:00
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var list = _step . value ;
2023-07-18 22:33:57 -07:00
// Look for a blank line above the list
var firstIndex = list . startLine - 1 ;
2023-01-17 04:19:40 +00:00
if ( ! isBlankLine ( lines [ firstIndex - 1 ] ) ) {
2023-07-18 22:33:57 -07:00
addBlankLineError ( onError , lines , firstIndex ) ;
}
// Find the "visual" end of the list
var endLine = list . endLine ;
2023-10-25 20:05:19 -07:00
var flattenedChildren = filterByPredicate ( list . children ) ;
2023-08-29 22:38:00 -07:00
var _iterator2 = _createForOfIteratorHelper ( flattenedChildren . reverse ( ) ) ,
2023-07-18 22:33:57 -07:00
_step2 ;
try {
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
var child = _step2 . value ;
if ( ! nonContentTokens . has ( child . type ) ) {
endLine = child . endLine ;
break ;
}
}
// Look for a blank line below the list
} catch ( err ) {
_iterator2 . e ( err ) ;
} finally {
_iterator2 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
2023-07-18 22:33:57 -07:00
var lastIndex = endLine - 1 ;
2023-01-17 04:19:40 +00:00
if ( ! isBlankLine ( lines [ lastIndex + 1 ] ) ) {
2023-07-18 22:33:57 -07:00
addBlankLineError ( onError , lines , lastIndex , lastIndex + 2 ) ;
2023-01-17 04:19:40 +00:00
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md033.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md033 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
2023-07-21 22:49:08 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-17 04:19:40 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
2023-10-18 23:20:19 -07:00
addError = _require . addError ,
nextLinesRe = _require . nextLinesRe ;
2023-01-21 15:41:03 -08:00
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
2023-09-02 12:07:14 -07:00
filterByTypes = _require2 . filterByTypes ,
2023-07-21 22:49:08 -07:00
getHtmlTagInfo = _require2 . getHtmlTagInfo ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD033" , "no-inline-html" ] ,
"description" : "Inline HTML" ,
"tags" : [ "html" ] ,
"function" : function MD033 ( params , onError ) {
var allowedElements = params . config . allowed _elements ;
allowedElements = Array . isArray ( allowedElements ) ? allowedElements : [ ] ;
allowedElements = allowedElements . map ( function ( element ) {
return element . toLowerCase ( ) ;
} ) ;
2023-09-02 12:07:14 -07:00
var tokens = params . parsers . micromark . tokens ;
var _iterator = _createForOfIteratorHelper ( filterByTypes ( tokens , [ "htmlText" ] ) ) ,
2023-08-04 20:53:38 -07:00
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var token = _step . value ;
var htmlTagInfo = getHtmlTagInfo ( token ) ;
if ( htmlTagInfo && ! htmlTagInfo . close && ! allowedElements . includes ( htmlTagInfo . name . toLowerCase ( ) ) ) {
var range = [ token . startColumn , token . text . replace ( nextLinesRe , "" ) . length ] ;
addError ( onError , token . startLine , "Element: " + htmlTagInfo . name , undefined , range ) ;
2023-01-17 04:19:40 +00:00
}
}
2023-08-04 20:53:38 -07:00
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md034.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md034 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
2023-02-05 16:58:06 -08:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-17 04:19:40 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
2023-02-05 16:58:06 -08:00
addErrorContext = _require . addErrorContext ;
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
filterByPredicate = _require2 . filterByPredicate ,
2023-09-13 22:44:15 -07:00
filterByTypes = _require2 . filterByTypes ,
2023-05-23 04:01:55 +00:00
getHtmlTagInfo = _require2 . getHtmlTagInfo ,
2023-10-23 20:55:37 -07:00
inHtmlFlow = _require2 . inHtmlFlow ,
2023-05-23 04:01:55 +00:00
parse = _require2 . parse ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD034" , "no-bare-urls" ] ,
"description" : "Bare URL used" ,
"tags" : [ "links" , "url" ] ,
"function" : function MD034 ( params , onError ) {
2023-05-23 04:01:55 +00:00
var literalAutolinks = function literalAutolinks ( tokens ) {
2023-10-23 20:55:37 -07:00
return filterByPredicate ( tokens , function ( token ) {
return token . type === "literalAutolink" && ! inHtmlFlow ( token ) ;
} , function ( token ) {
var children = token . children ;
var result = [ ] ;
for ( var i = 0 ; i < children . length ; i ++ ) {
var current = children [ i ] ;
var openTagInfo = getHtmlTagInfo ( current ) ;
if ( openTagInfo && ! openTagInfo . close ) {
var count = 1 ;
for ( var j = i + 1 ; j < children . length ; j ++ ) {
var candidate = children [ j ] ;
var closeTagInfo = getHtmlTagInfo ( candidate ) ;
if ( closeTagInfo && openTagInfo . name === closeTagInfo . name ) {
if ( closeTagInfo . close ) {
count -- ;
if ( count === 0 ) {
i = j ;
break ;
}
} else {
count ++ ;
2023-02-05 16:58:06 -08:00
}
}
}
2023-10-23 20:55:37 -07:00
} else {
result . push ( current ) ;
2023-02-05 16:58:06 -08:00
}
}
2023-10-23 20:55:37 -07:00
return result ;
2023-05-23 04:01:55 +00:00
} ) ;
} ;
2023-09-13 22:44:15 -07:00
var autoLinks = filterByTypes ( params . parsers . micromark . tokens , [ "literalAutolink" ] ) ;
if ( autoLinks . length > 0 ) {
2023-05-23 04:01:55 +00:00
// Re-parse with correct link/image reference definition handling
var document = params . lines . join ( "\n" ) ;
var tokens = parse ( document , undefined , false ) ;
var _iterator = _createForOfIteratorHelper ( literalAutolinks ( tokens ) ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var token = _step . value ;
var range = [ token . startColumn , token . endColumn - token . startColumn ] ;
var fixInfo = {
"editColumn" : range [ 0 ] ,
"deleteCount" : range [ 1 ] ,
"insertText" : "<" . concat ( token . text , ">" )
} ;
addErrorContext ( onError , token . startLine , token . text , null , null , range , fixInfo ) ;
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md035.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md035 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
2023-03-06 21:38:40 -08:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
2023-03-06 21:38:40 -08:00
addErrorDetailIf = _require . addErrorDetailIf ;
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
filterByTypes = _require2 . filterByTypes ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD035" , "hr-style" ] ,
"description" : "Horizontal rule style" ,
"tags" : [ "hr" ] ,
"function" : function MD035 ( params , onError ) {
var style = String ( params . config . style || "consistent" ) . trim ( ) ;
2023-03-06 21:38:40 -08:00
var thematicBreaks = filterByTypes ( params . parsers . micromark . tokens , [ "thematicBreak" ] ) ;
var _iterator = _createForOfIteratorHelper ( thematicBreaks ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var token = _step . value ;
var startLine = token . startLine ,
text = token . text ;
if ( style === "consistent" ) {
style = text ;
}
addErrorDetailIf ( onError , startLine , style , text ) ;
2023-01-17 04:19:40 +00:00
}
2023-03-06 21:38:40 -08:00
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md036.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md036 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
allPunctuation = _require . allPunctuation ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-11-09 20:05:30 -08:00
"names" : [ "MD036" , "no-emphasis-as-heading" ] ,
2023-01-17 04:19:40 +00:00
"description" : "Emphasis used instead of a heading" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" , "emphasis" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD036 ( params , onError ) {
var punctuation = params . config . punctuation ;
punctuation = String ( punctuation === undefined ? allPunctuation : punctuation ) ;
var re = new RegExp ( "[" + punctuation + "]$" ) ;
// eslint-disable-next-line jsdoc/require-jsdoc
function base ( token ) {
if ( token . type === "paragraph_open" ) {
return function inParagraph ( t ) {
// Always paragraph_open/inline/paragraph_close,
var children = t . children . filter ( function notEmptyText ( child ) {
return child . type !== "text" || child . content !== "" ;
} ) ;
if ( children . length === 3 && ( children [ 0 ] . type === "strong_open" || children [ 0 ] . type === "em_open" ) && children [ 1 ] . type === "text" && ! re . test ( children [ 1 ] . content ) ) {
addErrorContext ( onError , t . lineNumber , children [ 1 ] . content ) ;
}
return base ;
} ;
} else if ( token . type === "blockquote_open" ) {
return function inBlockquote ( t ) {
if ( t . type !== "blockquote_close" ) {
return inBlockquote ;
}
return base ;
} ;
} else if ( token . type === "list_item_open" ) {
return function inListItem ( t ) {
if ( t . type !== "list_item_close" ) {
return inListItem ;
}
return base ;
} ;
}
return base ;
}
var state = base ;
2023-02-18 21:41:07 -08:00
var _iterator = _createForOfIteratorHelper ( params . parsers . markdownit . tokens ) ,
2023-01-17 04:19:40 +00:00
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var token = _step . value ;
state = state ( token ) ;
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md037.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md037 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
2023-07-24 21:36:55 -07:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-07-24 21:36:55 -07:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-17 04:19:40 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
2023-07-24 21:36:55 -07:00
addError = _require . addError ;
2023-09-02 12:07:14 -07:00
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
2023-10-21 22:03:11 -07:00
filterByPredicate = _require2 . filterByPredicate ,
inHtmlFlow = _require2 . inHtmlFlow ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD037" , "no-space-in-emphasis" ] ,
"description" : "Spaces inside emphasis markers" ,
"tags" : [ "whitespace" , "emphasis" ] ,
"function" : function MD037 ( params , onError ) {
2023-07-24 21:36:55 -07:00
// Initialize variables
var lines = params . lines ,
parsers = params . parsers ;
var emphasisTokensByMarker = new Map ( ) ;
for ( var _i = 0 , _arr = [ "_" , "__" , "___" , "*" , "**" , "***" ] ; _i < _arr . length ; _i ++ ) {
var marker = _arr [ _i ] ;
emphasisTokensByMarker . set ( marker , [ ] ) ;
2023-01-17 04:19:40 +00:00
}
2023-09-02 12:07:14 -07:00
var tokens = filterByPredicate ( parsers . micromark . tokens , function ( token ) {
return token . children . some ( function ( child ) {
return child . type === "data" ;
} ) ;
} ) ;
var _iterator = _createForOfIteratorHelper ( tokens ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var token = _step . value ;
// Build lists of bare tokens for each emphasis marker type
var _iterator2 = _createForOfIteratorHelper ( emphasisTokensByMarker . values ( ) ) ,
_step2 ;
try {
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
var emphasisTokens = _step2 . value ;
emphasisTokens . length = 0 ;
}
} catch ( err ) {
_iterator2 . e ( err ) ;
} finally {
_iterator2 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
2023-09-02 12:07:14 -07:00
var _iterator3 = _createForOfIteratorHelper ( token . children ) ,
_step3 ;
try {
for ( _iterator3 . s ( ) ; ! ( _step3 = _iterator3 . n ( ) ) . done ; ) {
var child = _step3 . value ;
var text = child . text ,
type = child . type ;
if ( type === "data" && text . length <= 3 ) {
var _emphasisTokens = emphasisTokensByMarker . get ( text ) ;
2023-10-21 22:03:11 -07:00
if ( _emphasisTokens && ! inHtmlFlow ( child ) ) {
2023-09-02 12:07:14 -07:00
_emphasisTokens . push ( child ) ;
}
2023-07-24 21:36:55 -07:00
}
}
2023-09-02 12:07:14 -07:00
// Process bare tokens for each emphasis marker type
} catch ( err ) {
_iterator3 . e ( err ) ;
} finally {
_iterator3 . f ( ) ;
}
var _iterator4 = _createForOfIteratorHelper ( emphasisTokensByMarker . entries ( ) ) ,
_step4 ;
try {
for ( _iterator4 . s ( ) ; ! ( _step4 = _iterator4 . n ( ) ) . done ; ) {
var entry = _step4 . value ;
var _entry = _slicedToArray ( entry , 2 ) ,
_marker = _entry [ 0 ] ,
_emphasisTokens2 = _entry [ 1 ] ;
for ( var i = 0 ; i + 1 < _emphasisTokens2 . length ; i += 2 ) {
// Process start token of start/end pair
var startToken = _emphasisTokens2 [ i ] ;
var startLine = lines [ startToken . startLine - 1 ] ;
var startSlice = startLine . slice ( startToken . endColumn - 1 ) ;
var startMatch = startSlice . match ( /^\s+\S/ ) ;
if ( startMatch ) {
var _startMatch = _slicedToArray ( startMatch , 1 ) ,
startSpaceCharacter = _startMatch [ 0 ] ;
var startContext = "" . concat ( _marker ) . concat ( startSpaceCharacter ) ;
addError ( onError , startToken . startLine , undefined , startContext , [ startToken . startColumn , startContext . length ] , {
"editColumn" : startToken . endColumn ,
"deleteCount" : startSpaceCharacter . length - 1
} ) ;
}
2023-07-24 21:36:55 -07:00
2023-09-02 12:07:14 -07:00
// Process end token of start/end pair
var endToken = _emphasisTokens2 [ i + 1 ] ;
var endLine = lines [ endToken . startLine - 1 ] ;
var endSlice = endLine . slice ( 0 , endToken . startColumn - 1 ) ;
var endMatch = endSlice . match ( /\S\s+$/ ) ;
if ( endMatch ) {
var _endMatch = _slicedToArray ( endMatch , 1 ) ,
endSpaceCharacter = _endMatch [ 0 ] ;
var endContext = "" . concat ( endSpaceCharacter ) . concat ( _marker ) ;
addError ( onError , endToken . startLine , undefined , endContext , [ endToken . endColumn - endContext . length , endContext . length ] , {
"editColumn" : endToken . startColumn - ( endSpaceCharacter . length - 1 ) ,
"deleteCount" : endSpaceCharacter . length - 1
} ) ;
}
2023-01-17 04:19:40 +00:00
}
}
2023-09-02 12:07:14 -07:00
} catch ( err ) {
_iterator4 . e ( err ) ;
} finally {
_iterator4 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
}
2023-09-02 12:07:14 -07:00
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2023-07-24 21:36:55 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md038.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md038 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
2023-02-23 22:20:27 -08:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
2023-02-23 22:20:27 -08:00
addErrorContext = _require . addErrorContext ;
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
2023-05-25 03:47:34 +00:00
filterByTypes = _require2 . filterByTypes ,
2023-10-21 22:03:11 -07:00
inHtmlFlow = _require2 . inHtmlFlow ,
2023-05-25 03:47:34 +00:00
tokenIfType = _require2 . tokenIfType ;
2023-01-17 04:19:40 +00:00
var leftSpaceRe = /^\s(?:[^`]|$)/ ;
var rightSpaceRe = /[^`]\s$/ ;
2023-02-23 22:20:27 -08:00
var trimCodeText = function trimCodeText ( text , start , end ) {
text = text . replace ( /^\s+$/ , "" ) ;
if ( start ) {
text = text . replace ( /^\s+?(\s`|\S)/ , "$1" ) ;
}
if ( end ) {
text = text . replace ( /(`\s|\S)\s+$/ , "$1" ) ;
}
return text ;
} ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD038" , "no-space-in-code" ] ,
"description" : "Spaces inside code span elements" ,
"tags" : [ "whitespace" , "code" ] ,
"function" : function MD038 ( params , onError ) {
2023-10-21 22:03:11 -07:00
var codeTexts = filterByTypes ( params . parsers . micromark . tokens , [ "codeText" ] ) . filter ( function ( codeText ) {
return ! inHtmlFlow ( codeText ) ;
} ) ;
var _iterator = _createForOfIteratorHelper ( codeTexts ) ,
2023-02-23 22:20:27 -08:00
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
2023-10-21 22:03:11 -07:00
var codeText = _step . value ;
var children = codeText . children ;
2023-02-23 22:20:27 -08:00
var first = 0 ;
2023-02-25 15:42:28 -08:00
var last = children . length - 1 ;
var startSequence = tokenIfType ( children [ first ] , "codeTextSequence" ) ;
var endSequence = tokenIfType ( children [ last ] , "codeTextSequence" ) ;
var startData = tokenIfType ( children [ first + 1 ] , "codeTextData" ) || tokenIfType ( children [ first + 2 ] , "codeTextData" ) ;
var endData = tokenIfType ( children [ last - 1 ] , "codeTextData" ) || tokenIfType ( children [ last - 2 ] , "codeTextData" ) ;
2023-02-23 22:20:27 -08:00
if ( startSequence && endSequence && startData && endData ) {
var spaceLeft = leftSpaceRe . test ( startData . text ) ;
var spaceRight = ! spaceLeft && rightSpaceRe . test ( endData . text ) ;
if ( spaceLeft || spaceRight ) {
var lineNumber = startSequence . startLine ;
var range = null ;
var fixInfo = null ;
if ( startSequence . startLine === endSequence . endLine ) {
range = [ startSequence . startColumn , endSequence . endColumn - startSequence . startColumn ] ;
fixInfo = {
"editColumn" : startSequence . endColumn ,
"deleteCount" : endSequence . startColumn - startSequence . endColumn ,
"insertText" : trimCodeText ( startData . text , true , true )
} ;
} else if ( spaceLeft ) {
range = [ startSequence . startColumn , startData . endColumn - startSequence . startColumn ] ;
fixInfo = {
"editColumn" : startSequence . endColumn ,
"deleteCount" : startData . endColumn - startData . startColumn ,
"insertText" : trimCodeText ( startData . text , true , false )
} ;
} else {
lineNumber = endSequence . endLine ;
range = [ endData . startColumn , endSequence . endColumn - endData . startColumn ] ;
fixInfo = {
"editColumn" : endData . startColumn ,
"deleteCount" : endData . endColumn - endData . startColumn ,
"insertText" : trimCodeText ( endData . text , false , true )
} ;
2023-01-17 04:19:40 +00:00
}
2023-02-23 22:20:27 -08:00
var context = params . lines [ lineNumber - 1 ] . substring ( range [ 0 ] - 1 , range [ 0 ] - 1 + range [ 1 ] ) ;
addErrorContext ( onError , lineNumber , context , spaceLeft , spaceRight , range , fixInfo ) ;
2023-01-17 04:19:40 +00:00
}
2023-02-23 22:20:27 -08:00
}
2023-01-17 04:19:40 +00:00
}
2023-02-23 22:20:27 -08:00
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md039.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md039 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
filterTokens = _require . filterTokens ;
var spaceInLinkRe = /\[(?:\s[^\]]*|[^\]]*?\s)\](?=(\([^)]*\)|\[[^\]]*\]))/ ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD039" , "no-space-in-links" ] ,
"description" : "Spaces inside link text" ,
"tags" : [ "whitespace" , "links" ] ,
"function" : function MD039 ( params , onError ) {
filterTokens ( params , "inline" , function ( token ) {
var children = token . children ;
var lineNumber = token . lineNumber ;
var inLink = false ;
var linkText = "" ;
var lineIndex = 0 ;
var _iterator = _createForOfIteratorHelper ( children ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var child = _step . value ;
var content = child . content ,
markup = child . markup ,
type = child . type ;
if ( type === "link_open" ) {
inLink = true ;
linkText = "" ;
} else if ( type === "link_close" ) {
inLink = false ;
var left = linkText . trimStart ( ) . length !== linkText . length ;
var right = linkText . trimEnd ( ) . length !== linkText . length ;
if ( left || right ) {
var line = params . lines [ lineNumber - 1 ] ;
var range = null ;
var fixInfo = null ;
var match = line . slice ( lineIndex ) . match ( spaceInLinkRe ) ;
if ( match ) {
var column = match . index + lineIndex + 1 ;
var length = match [ 0 ] . length ;
range = [ column , length ] ;
fixInfo = {
"editColumn" : column + 1 ,
"deleteCount" : length - 2 ,
"insertText" : linkText . trim ( )
} ;
lineIndex = column + length - 1 ;
}
addErrorContext ( onError , lineNumber , "[" . concat ( linkText , "]" ) , left , right , range , fixInfo ) ;
}
} else if ( type === "softbreak" || type === "hardbreak" ) {
lineNumber ++ ;
lineIndex = 0 ;
} else if ( inLink ) {
linkText += type . endsWith ( "_inline" ) ? "" . concat ( markup ) . concat ( content ) . concat ( markup ) : content || markup ;
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md040.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md040 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addError = _require . addError ,
addErrorContext = _require . addErrorContext ,
filterTokens = _require . filterTokens ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD040" , "fenced-code-language" ] ,
"description" : "Fenced code blocks should have a language specified" ,
"tags" : [ "code" , "language" ] ,
"function" : function MD040 ( params , onError ) {
var allowed = params . config . allowed _languages ;
allowed = Array . isArray ( allowed ) ? allowed : [ ] ;
var languageOnly = ! ! params . config . language _only ;
filterTokens ( params , "fence" , function forToken ( token ) {
var lang = token . info . trim ( ) . split ( /[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]+/ ) . shift ( ) ;
if ( lang === "" ) {
addErrorContext ( onError , token . lineNumber , token . line ) ;
} else if ( allowed . length > 0 && ! allowed . includes ( lang ) ) {
addError ( onError , token . lineNumber , "\"" . concat ( lang , "\" is not allowed" ) ) ;
}
if ( languageOnly && token . info !== lang ) {
addError ( onError , token . lineNumber , "Info string contains more than language: \"" . concat ( token . info , "\"" ) ) ;
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md041.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md041 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
frontMatterHasTitle = _require . frontMatterHasTitle ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD041" , "first-line-heading" , "first-line-h1" ] ,
"description" : "First line in a file should be a top-level heading" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD041 ( params , onError ) {
var level = Number ( params . config . level || 1 ) ;
var tag = "h" + level ;
var foundFrontMatterTitle = frontMatterHasTitle ( params . frontMatterLines , params . config . front _matter _title ) ;
if ( ! foundFrontMatterTitle ) {
var htmlHeadingRe = new RegExp ( "^<h" . concat ( level , "[ />]" ) , "i" ) ;
2023-02-18 21:41:07 -08:00
params . parsers . markdownit . tokens . every ( function ( token ) {
2023-01-17 04:19:40 +00:00
var isError = false ;
if ( token . type === "html_block" ) {
if ( token . content . startsWith ( "<!--" ) ) {
// Ignore leading HTML comments
return true ;
} else if ( ! htmlHeadingRe . test ( token . content ) ) {
// Something other than an HTML heading
isError = true ;
}
} else if ( token . type !== "heading_open" || token . tag !== tag ) {
// Something other than a Markdown heading
isError = true ;
}
if ( isError ) {
addErrorContext ( onError , token . lineNumber , token . line ) ;
}
return false ;
} ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md042.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md042 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
escapeForRegExp = _require . escapeForRegExp ,
filterTokens = _require . filterTokens ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD042" , "no-empty-links" ] ,
"description" : "No empty links" ,
"tags" : [ "links" ] ,
"function" : function MD042 ( params , onError ) {
filterTokens ( params , "inline" , function forToken ( token ) {
var inLink = false ;
var linkText = "" ;
var emptyLink = false ;
var _iterator = _createForOfIteratorHelper ( token . children ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var child = _step . value ;
if ( child . type === "link_open" ) {
inLink = true ;
linkText = "" ;
var _iterator2 = _createForOfIteratorHelper ( child . attrs ) ,
_step2 ;
try {
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
var attr = _step2 . value ;
if ( attr [ 0 ] === "href" && ( ! attr [ 1 ] || attr [ 1 ] === "#" ) ) {
emptyLink = true ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
} catch ( err ) {
_iterator2 . e ( err ) ;
} finally {
_iterator2 . f ( ) ;
}
} else if ( child . type === "link_close" ) {
inLink = false ;
if ( emptyLink ) {
var context = "[" . concat ( linkText , "]" ) ;
var range = null ;
var match = child . line . match ( new RegExp ( "" . concat ( escapeForRegExp ( context ) , "\\((?:|#|<>)\\)" ) ) ) ;
if ( match ) {
context = match [ 0 ] ;
range = [ match . index + 1 , match [ 0 ] . length ] ;
}
addErrorContext ( onError , child . lineNumber , context , null , null , range ) ;
emptyLink = false ;
}
} else if ( inLink ) {
linkText += child . content ;
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
} ) ;
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md043.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md043 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
addErrorDetailIf = _require . addErrorDetailIf ,
forEachHeading = _require . forEachHeading ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-11-09 20:05:30 -08:00
"names" : [ "MD043" , "required-headings" ] ,
2023-01-17 04:19:40 +00:00
"description" : "Required heading structure" ,
2023-11-09 20:05:30 -08:00
"tags" : [ "headings" ] ,
2023-01-17 04:19:40 +00:00
"function" : function MD043 ( params , onError ) {
2023-11-09 20:05:30 -08:00
var requiredHeadings = params . config . headings ;
2023-08-29 23:00:27 -07:00
if ( ! Array . isArray ( requiredHeadings ) ) {
// Nothing to check; avoid doing any work
return ;
}
2023-01-17 04:19:40 +00:00
var matchCase = params . config . match _case || false ;
2023-08-29 23:00:27 -07:00
var levels = { } ;
for ( var _i = 0 , _arr = [ 1 , 2 , 3 , 4 , 5 , 6 ] ; _i < _arr . length ; _i ++ ) {
var level = _arr [ _i ] ;
levels [ "h" + level ] = "######" . substr ( - level ) ;
}
var i = 0 ;
var matchAny = false ;
var hasError = false ;
var anyHeadings = false ;
var getExpected = function getExpected ( ) {
return requiredHeadings [ i ++ ] || "[None]" ;
} ;
var handleCase = function handleCase ( str ) {
return matchCase ? str : str . toLowerCase ( ) ;
} ;
forEachHeading ( params , function ( heading , content ) {
if ( ! hasError ) {
anyHeadings = true ;
var actual = levels [ heading . tag ] + " " + content ;
var expected = getExpected ( ) ;
if ( expected === "*" ) {
var nextExpected = getExpected ( ) ;
if ( handleCase ( nextExpected ) !== handleCase ( actual ) ) {
2023-01-17 04:19:40 +00:00
matchAny = true ;
i -- ;
}
2023-08-29 23:00:27 -07:00
} else if ( expected === "+" ) {
matchAny = true ;
} else if ( handleCase ( expected ) === handleCase ( actual ) ) {
matchAny = false ;
} else if ( matchAny ) {
i -- ;
} else {
addErrorDetailIf ( onError , heading . lineNumber , expected , actual ) ;
hasError = true ;
2023-01-17 04:19:40 +00:00
}
}
2023-08-29 23:00:27 -07:00
} ) ;
var extraHeadings = requiredHeadings . length - i ;
if ( ! hasError && ( extraHeadings > 1 || extraHeadings === 1 && requiredHeadings [ i ] !== "*" ) && ( anyHeadings || ! requiredHeadings . every ( function ( heading ) {
return heading === "*" ;
} ) ) ) {
addErrorContext ( onError , params . lines . length , requiredHeadings [ i ] ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md044.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md044 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
"use strict" ;
// @ts-check
2023-01-17 04:19:40 +00:00
2023-08-27 23:35:00 -07:00
function _toConsumableArray ( arr ) { return _arrayWithoutHoles ( arr ) || _iterableToArray ( arr ) || _unsupportedIterableToArray ( arr ) || _nonIterableSpread ( ) ; }
function _nonIterableSpread ( ) { throw new TypeError ( "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _iterableToArray ( iter ) { if ( typeof Symbol !== "undefined" && iter [ Symbol . iterator ] != null || iter [ "@@iterator" ] != null ) return Array . from ( iter ) ; }
function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) return _arrayLikeToArray ( arr ) ; }
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-17 04:19:40 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorDetailIf = _require . addErrorDetailIf ,
escapeForRegExp = _require . escapeForRegExp ,
withinAnyRange = _require . withinAnyRange ;
2023-03-14 21:03:07 -07:00
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
filterByPredicate = _require2 . filterByPredicate ,
filterByTypes = _require2 . filterByTypes ,
parse = _require2 . parse ;
var ignoredChildTypes = new Set ( [ "codeFencedFence" , "definition" , "reference" , "resource" ] ) ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD044" , "proper-names" ] ,
"description" : "Proper names should have the correct capitalization" ,
"tags" : [ "spelling" ] ,
"function" : function MD044 ( params , onError ) {
var names = params . config . names ;
names = Array . isArray ( names ) ? names : [ ] ;
names . sort ( function ( a , b ) {
return b . length - a . length || a . localeCompare ( b ) ;
} ) ;
2023-08-27 23:35:00 -07:00
if ( names . length === 0 ) {
// Nothing to check; avoid doing any work
return ;
}
2023-01-17 04:19:40 +00:00
var codeBlocks = params . config . code _blocks ;
var includeCodeBlocks = codeBlocks === undefined ? true : ! ! codeBlocks ;
var htmlElements = params . config . html _elements ;
var includeHtmlElements = htmlElements === undefined ? true : ! ! htmlElements ;
2023-09-02 12:07:14 -07:00
var scannedTypes = new Set ( [ "data" ] ) ;
2023-03-14 21:03:07 -07:00
if ( includeCodeBlocks ) {
scannedTypes . add ( "codeFlowValue" ) ;
scannedTypes . add ( "codeTextData" ) ;
}
2023-09-02 12:07:14 -07:00
if ( includeHtmlElements ) {
scannedTypes . add ( "htmlFlowData" ) ;
scannedTypes . add ( "htmlTextData" ) ;
}
2023-03-14 21:03:07 -07:00
var contentTokens = filterByPredicate ( params . parsers . micromark . tokens , function ( token ) {
return scannedTypes . has ( token . type ) ;
} , function ( token ) {
2023-09-02 12:07:14 -07:00
return token . children . filter ( function ( t ) {
2023-03-14 21:03:07 -07:00
return ! ignoredChildTypes . has ( t . type ) ;
} ) ;
2023-01-17 04:19:40 +00:00
} ) ;
2023-03-14 21:03:07 -07:00
var exclusions = [ ] ;
var autoLinked = new Set ( ) ;
2023-08-27 23:35:00 -07:00
var _iterator = _createForOfIteratorHelper ( names ) ,
_step ;
2023-01-17 04:19:40 +00:00
try {
2023-08-27 23:35:00 -07:00
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var name = _step . value ;
2023-01-17 04:19:40 +00:00
var escapedName = escapeForRegExp ( name ) ;
var startNamePattern = /^\W/ . test ( name ) ? "" : "\\b_*" ;
var endNamePattern = /\W$/ . test ( name ) ? "" : "_*\\b" ;
var namePattern = "(" . concat ( startNamePattern , ")(" ) . concat ( escapedName , ")" ) . concat ( endNamePattern ) ;
var nameRe = new RegExp ( namePattern , "gi" ) ;
2023-08-27 23:35:00 -07:00
var _iterator2 = _createForOfIteratorHelper ( contentTokens ) ,
_step2 ;
2023-03-14 21:03:07 -07:00
try {
var _loop = function _loop ( ) {
2023-08-27 23:35:00 -07:00
var token = _step2 . value ;
2023-01-17 04:19:40 +00:00
var match = null ;
2023-03-14 21:03:07 -07:00
var _loop2 = function _loop2 ( ) {
2023-01-17 04:19:40 +00:00
var _match = match ,
_match2 = _slicedToArray ( _match , 3 ) ,
leftMatch = _match2 [ 1 ] ,
nameMatch = _match2 [ 2 ] ;
2023-03-14 21:03:07 -07:00
var index = token . startColumn - 1 + match . index + leftMatch . length ;
2023-01-17 04:19:40 +00:00
var length = nameMatch . length ;
2023-03-14 21:03:07 -07:00
var lineIndex = token . startLine - 1 ;
2023-01-17 04:19:40 +00:00
if ( ! withinAnyRange ( exclusions , lineIndex , index , length ) && ! names . includes ( nameMatch ) ) {
2023-03-14 21:03:07 -07:00
var urlRanges = [ ] ;
if ( ! autoLinked . has ( token ) ) {
urlRanges = filterByTypes ( parse ( token . text ) , [ "literalAutolink" ] ) . map ( function ( t ) {
return [ lineIndex , token . startColumn - 1 + t . startColumn - 1 , t . endColumn - t . startColumn ] ;
} ) ;
exclusions . push . apply ( exclusions , _toConsumableArray ( urlRanges ) ) ;
autoLinked . add ( token ) ;
}
if ( ! withinAnyRange ( urlRanges , lineIndex , index , length ) ) {
2023-08-27 23:35:00 -07:00
var column = index + 1 ;
addErrorDetailIf ( onError , token . startLine , name , nameMatch , null , null , [ column , length ] , {
2023-03-14 21:03:07 -07:00
"editColumn" : column ,
"deleteCount" : length ,
"insertText" : name
} ) ;
}
2023-01-17 04:19:40 +00:00
}
exclusions . push ( [ lineIndex , index , length ] ) ;
2023-03-14 21:03:07 -07:00
} ;
while ( ( match = nameRe . exec ( token . text ) ) !== null ) {
_loop2 ( ) ;
2021-06-13 13:07:03 -07:00
}
2023-03-14 21:03:07 -07:00
} ;
2023-08-27 23:35:00 -07:00
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
2023-03-14 21:03:07 -07:00
_loop ( ) ;
2023-01-17 04:19:40 +00:00
}
2023-03-14 21:03:07 -07:00
} catch ( err ) {
2023-08-27 23:35:00 -07:00
_iterator2 . e ( err ) ;
2023-03-14 21:03:07 -07:00
} finally {
2023-08-27 23:35:00 -07:00
_iterator2 . f ( ) ;
2023-03-14 21:03:07 -07:00
}
2023-01-17 04:19:40 +00:00
}
} catch ( err ) {
2023-08-27 23:35:00 -07:00
_iterator . e ( err ) ;
2023-01-17 04:19:40 +00:00
} finally {
2023-08-27 23:35:00 -07:00
_iterator . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md045.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md045 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
2023-07-28 20:19:30 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
2023-10-18 23:20:19 -07:00
addError = _require . addError ,
2023-10-18 23:45:39 -07:00
getHtmlAttributeRe = _require . getHtmlAttributeRe ,
2023-10-18 23:20:19 -07:00
nextLinesRe = _require . nextLinesRe ;
2023-07-28 20:19:30 -07:00
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
2023-10-18 23:20:19 -07:00
filterByTypes = _require2 . filterByTypes ,
getHtmlTagInfo = _require2 . getHtmlTagInfo ;
2023-10-18 23:45:39 -07:00
var altRe = getHtmlAttributeRe ( "alt" ) ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD045" , "no-alt-text" ] ,
"description" : "Images should have alternate text (alt text)" ,
"tags" : [ "accessibility" , "images" ] ,
"function" : function MD045 ( params , onError ) {
2023-10-18 23:20:19 -07:00
var tokens = params . parsers . micromark . tokens ;
// Process Markdown images
var images = filterByTypes ( tokens , [ "image" ] ) ;
2023-07-28 20:19:30 -07:00
var _iterator = _createForOfIteratorHelper ( images ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var image = _step . value ;
var labelTexts = filterByTypes ( image . children , [ "labelText" ] ) ;
if ( labelTexts . some ( function ( labelText ) {
return labelText . text . length === 0 ;
} ) ) {
var range = image . startLine === image . endLine ? [ image . startColumn , image . endColumn - image . startColumn ] : undefined ;
addError ( onError , image . startLine , undefined , undefined , range ) ;
}
2023-01-17 04:19:40 +00:00
}
2023-10-18 23:20:19 -07:00
// Process HTML images
2023-07-28 20:19:30 -07:00
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
2023-10-18 23:20:19 -07:00
var htmlTexts = filterByTypes ( tokens , [ "htmlText" ] ) ;
var _iterator2 = _createForOfIteratorHelper ( htmlTexts ) ,
_step2 ;
try {
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
var htmlText = _step2 . value ;
var startColumn = htmlText . startColumn ,
startLine = htmlText . startLine ,
text = htmlText . text ;
var htmlTagInfo = getHtmlTagInfo ( htmlText ) ;
2023-10-18 23:45:39 -07:00
if ( htmlTagInfo && ! htmlTagInfo . close && htmlTagInfo . name . toLowerCase ( ) === "img" && ! altRe . test ( text ) ) {
2023-10-18 23:20:19 -07:00
var _range = [ startColumn , text . replace ( nextLinesRe , "" ) . length ] ;
addError ( onError , startLine , undefined , undefined , _range ) ;
}
}
} catch ( err ) {
_iterator2 . e ( err ) ;
} finally {
_iterator2 . f ( ) ;
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md046.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md046 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorDetailIf = _require . addErrorDetailIf ;
var tokenTypeToStyle = {
"fence" : "fenced" ,
"code_block" : "indented"
2019-10-02 20:10:42 -07:00
} ;
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD046" , "code-block-style" ] ,
"description" : "Code block style" ,
"tags" : [ "code" ] ,
"function" : function MD046 ( params , onError ) {
var expectedStyle = String ( params . config . style || "consistent" ) ;
2023-02-18 21:41:07 -08:00
var codeBlocksAndFences = params . parsers . markdownit . tokens . filter ( function ( token ) {
2023-01-17 04:19:40 +00:00
return token . type === "code_block" || token . type === "fence" ;
} ) ;
var _iterator = _createForOfIteratorHelper ( codeBlocksAndFences ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var token = _step . value ;
var lineNumber = token . lineNumber ,
type = token . type ;
if ( expectedStyle === "consistent" ) {
expectedStyle = tokenTypeToStyle [ type ] ;
}
addErrorDetailIf ( onError , lineNumber , expectedStyle , tokenTypeToStyle [ type ] ) ;
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md047.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md047 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addError = _require . addError ,
isBlankLine = _require . isBlankLine ;
2019-10-02 20:10:42 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD047" , "single-trailing-newline" ] ,
"description" : "Files should end with a single newline character" ,
"tags" : [ "blank_lines" ] ,
"function" : function MD047 ( params , onError ) {
var lastLineNumber = params . lines . length ;
var lastLine = params . lines [ lastLineNumber - 1 ] ;
if ( ! isBlankLine ( lastLine ) ) {
addError ( onError , lastLineNumber , null , null , [ lastLine . length , 1 ] , {
"insertText" : "\n" ,
"editColumn" : lastLine . length + 1
} ) ;
2019-10-02 20:10:42 -07:00
}
2023-01-17 04:19:40 +00:00
}
2019-10-02 20:10:42 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/md048.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md048 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2021-01-05 20:55:09 -08:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2019-10-02 20:10:42 -07:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorDetailIf = _require . addErrorDetailIf ,
fencedCodeBlockStyleFor = _require . fencedCodeBlockStyleFor ;
2019-12-14 13:50:48 -08:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD048" , "code-fence-style" ] ,
"description" : "Code fence style" ,
"tags" : [ "code" ] ,
"function" : function MD048 ( params , onError ) {
var style = String ( params . config . style || "consistent" ) ;
var expectedStyle = style ;
2023-02-18 21:41:07 -08:00
var fenceTokens = params . parsers . markdownit . tokens . filter ( function ( token ) {
2023-01-17 04:19:40 +00:00
return token . type === "fence" ;
} ) ;
var _iterator = _createForOfIteratorHelper ( fenceTokens ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var fenceToken = _step . value ;
var lineNumber = fenceToken . lineNumber ,
markup = fenceToken . markup ;
if ( expectedStyle === "consistent" ) {
expectedStyle = fencedCodeBlockStyleFor ( markup ) ;
}
addErrorDetailIf ( onError , lineNumber , expectedStyle , fencedCodeBlockStyleFor ( markup ) ) ;
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2019-12-14 13:50:48 -08:00
}
2023-01-17 04:19:40 +00:00
}
2019-12-14 13:50:48 -08:00
} ;
2021-10-24 06:54:58 +02:00
/***/ } ) ,
2022-05-03 21:37:30 -07:00
/***/ "../lib/md049-md050.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md049 - md050 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
2021-10-24 06:54:58 +02:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
"use strict" ;
// @ts-check
2021-10-21 06:42:48 +02:00
2023-05-25 03:47:34 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addError = _require . addError ,
2023-05-25 03:47:34 +00:00
emphasisOrStrongStyleFor = _require . emphasisOrStrongStyleFor ;
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
2023-09-02 12:07:14 -07:00
filterByPredicate = _require2 . filterByPredicate ,
2023-05-25 03:47:34 +00:00
tokenIfType = _require2 . tokenIfType ;
2023-05-25 02:38:18 +00:00
var intrawordRe = /\w/ ;
2023-05-25 03:47:34 +00:00
var impl = function impl ( params , onError , type , asterisk , underline ) {
2023-05-25 02:50:56 +00:00
var style = arguments . length > 5 && arguments [ 5 ] !== undefined ? arguments [ 5 ] : "consistent" ;
2023-05-25 02:38:18 +00:00
var lines = params . lines ,
parsers = params . parsers ;
2023-09-02 12:07:14 -07:00
var emphasisTokens = filterByPredicate ( parsers . micromark . tokens , function ( token ) {
return token . type === type ;
} , function ( token ) {
return token . type === "htmlFlow" ? [ ] : token . children ;
} ) ;
2023-05-25 03:47:34 +00:00
var _iterator = _createForOfIteratorHelper ( emphasisTokens ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var token = _step . value ;
var children = token . children ;
var childType = "" . concat ( type , "Sequence" ) ;
var startSequence = tokenIfType ( children [ 0 ] , childType ) ;
var endSequence = tokenIfType ( children [ children . length - 1 ] , childType ) ;
if ( startSequence && endSequence ) {
var markupStyle = emphasisOrStrongStyleFor ( startSequence . text ) ;
if ( style === "consistent" ) {
style = markupStyle ;
}
if ( style !== markupStyle ) {
2023-05-25 02:38:18 +00:00
var underscoreIntraword = style === "underscore" && ( intrawordRe . test ( lines [ startSequence . startLine - 1 ] [ startSequence . startColumn - 2 ] ) || intrawordRe . test ( lines [ endSequence . endLine - 1 ] [ endSequence . endColumn - 1 ] ) ) ;
if ( ! underscoreIntraword ) {
for ( var _i = 0 , _arr = [ startSequence , endSequence ] ; _i < _arr . length ; _i ++ ) {
var sequence = _arr [ _i ] ;
addError ( onError , sequence . startLine , "Expected: " . concat ( style , "; Actual: " ) . concat ( markupStyle ) , undefined , [ sequence . startColumn , sequence . text . length ] , {
"editColumn" : sequence . startColumn ,
"deleteCount" : sequence . text . length ,
"insertText" : style === "asterisk" ? asterisk : underline
} ) ;
}
2023-05-25 03:47:34 +00:00
}
2023-01-17 04:19:40 +00:00
}
}
}
2023-05-25 03:47:34 +00:00
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
2023-01-17 04:19:40 +00:00
} ;
module . exports = [ {
"names" : [ "MD049" , "emphasis-style" ] ,
2023-10-25 20:05:19 -07:00
"description" : "Emphasis style" ,
2023-01-17 04:19:40 +00:00
"tags" : [ "emphasis" ] ,
"function" : function MD049 ( params , onError ) {
2023-05-25 03:47:34 +00:00
return impl ( params , onError , "emphasis" , "*" , "_" , params . config . style || undefined ) ;
2023-01-17 04:19:40 +00:00
}
} , {
"names" : [ "MD050" , "strong-style" ] ,
2023-10-25 20:05:19 -07:00
"description" : "Strong style" ,
2023-01-17 04:19:40 +00:00
"tags" : [ "emphasis" ] ,
"function" : function MD050 ( params , onError ) {
2023-05-25 02:50:56 +00:00
return impl ( params , onError , "strong" , "**" , "__" , params . config . style || undefined ) ;
2023-01-17 04:19:40 +00:00
}
} ] ;
2022-01-26 00:21:08 +01:00
/***/ } ) ,
/***/ "../lib/md051.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md051 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
"use strict" ;
// @ts-check
2023-01-17 04:19:40 +00:00
function _toConsumableArray ( arr ) { return _arrayWithoutHoles ( arr ) || _iterableToArray ( arr ) || _unsupportedIterableToArray ( arr ) || _nonIterableSpread ( ) ; }
function _nonIterableSpread ( ) { throw new TypeError ( "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _iterableToArray ( iter ) { if ( typeof Symbol !== "undefined" && iter [ Symbol . iterator ] != null || iter [ "@@iterator" ] != null ) return Array . from ( iter ) ; }
function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) return _arrayLikeToArray ( arr ) ; }
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-08-04 20:53:38 -07:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
2023-01-17 04:19:40 +00:00
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addError = _require . addError ,
2023-10-18 23:45:39 -07:00
addErrorDetailIf = _require . addErrorDetailIf ,
getHtmlAttributeRe = _require . getHtmlAttributeRe ;
2023-08-04 20:53:38 -07:00
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
2023-09-04 12:26:38 -07:00
filterByPredicate = _require2 . filterByPredicate ,
2023-08-04 20:53:38 -07:00
filterByTypes = _require2 . filterByTypes ,
getHtmlTagInfo = _require2 . getHtmlTagInfo ;
2023-01-17 04:19:40 +00:00
2022-04-10 05:37:57 +00:00
// Regular expression for identifying HTML anchor names
2023-10-18 23:45:39 -07:00
var idRe = getHtmlAttributeRe ( "id" ) ;
var nameRe = getHtmlAttributeRe ( "name" ) ;
2023-07-08 22:14:00 -07:00
var anchorRe = /\{(#[0-9a-z]+(?:[\x2D_][0-9a-z]+)*)\}/g ;
2023-01-17 04:19:40 +00:00
2023-09-04 12:26:38 -07:00
// Sets for filtering heading tokens during conversion
var childrenExclude = new Set ( [ "image" , "reference" , "resource" ] ) ;
2023-09-18 22:20:44 -07:00
var tokensInclude = new Set ( [ "characterEscapeValue" , "codeTextData" , "data" ] ) ;
2023-09-04 12:26:38 -07:00
2023-09-06 21:25:00 -07:00
/ * *
* @ typedef { import ( "../helpers/micromark.cjs" ) . Token } Token
* /
2022-01-26 00:21:08 +01:00
/ * *
2022-04-10 05:37:57 +00:00
* Converts a Markdown heading into an HTML fragment according to the rules
* used by GitHub .
2022-01-26 00:21:08 +01:00
*
2023-09-06 21:25:00 -07:00
* @ param { Token } headingText Heading text token .
2022-04-10 05:37:57 +00:00
* @ returns { string } Fragment string for heading .
2022-01-26 00:21:08 +01:00
* /
2023-08-04 20:53:38 -07:00
function convertHeadingToHTMLFragment ( headingText ) {
2023-09-04 12:26:38 -07:00
var inlineText = filterByPredicate ( headingText . children , function ( token ) {
return tokensInclude . has ( token . type ) ;
} , function ( token ) {
return childrenExclude . has ( token . type ) ? [ ] : token . children ;
} ) . map ( function ( token ) {
2023-08-04 20:53:38 -07:00
return token . text ;
2023-01-17 04:19:40 +00:00
} ) . join ( "" ) ;
return "#" + encodeURIComponent ( inlineText . toLowerCase ( )
// RegExp source with Ruby's \p{Word} expanded into its General Categories
// https://github.com/gjtorikian/html-pipeline/blob/main/lib/html/pipeline/toc_filter.rb
// https://ruby-doc.org/core-3.0.2/Regexp.html
2023-09-15 20:13:53 -07:00
. replace ( / ( ? : [ \ 0 - \ x 1 F ! - , \ . \ / : - @ \ [ - \ ^ ` \ { - \ x A 9 \ x A B - \ x B 1 \ x B 4 \ x B 6 - \ x B 8 \ x B B \ x B F \ x D 7 \ x F 7 \ u 0 2 C 2 - \ u 0 2 C 5 \ u 0 2 D 2 - \ u 0 2 D F \ u 0 2 E 5 - \ u 0 2 E B \ u 0 2 E D \ u 0 2 E F - \ u 0 2 F F \ u 0 3 7 5 \ u 0 3 7 8 \ u 0 3 7 9 \ u 0 3 7 E \ u 0 3 8 0 - \ u 0 3 8 5 \ u 0 3 8 7 \ u 0 3 8 B \ u 0 3 8 D \ u 0 3 A 2 \ u 0 3 F 6 \ u 0 4 8 2 \ u 0 5 3 0 \ u 0 5 5 7 \ u 0 5 5 8 \ u 0 5 5 A - \ u 0 5 5 F \ u 0 5 8 9 - \ u 0 5 9 0 \ u 0 5 B E \ u 0 5 C 0 \ u 0 5 C 3 \ u 0 5 C 6 \ u 0 5 C 8 - \ u 0 5 C F \ u 0 5 E B - \ u 0 5 E E \ u 0 5 F 3 - \ u 0 6 0 F \ u 0 6 1 B - \ u 0 6 1 F \ u 0 6 6 A - \ u 0 6 6 D \ u 0 6 D 4 \ u 0 6 D D \ u 0 6 D E \ u 0 6 E 9 \ u 0 6 F D \ u 0 6 F E \ u 0 7 0 0 - \ u 0 7 0 F \ u 0 7 4 B \ u 0 7 4 C \ u 0 7 B 2 - \ u 0 7 B F \ u 0 7 F 6 - \ u 0 7 F 9 \ u 0 7 F B \ u 0 7 F C \ u 0 7 F E \ u 0 7 F F \ u 0 8 2 E - \ u 0 8 3 F \ u 0 8 5 C - \ u 0 8 5 F \ u 0 8 6 B - \ u 0 8 6 F \ u 0 8 8 8 \ u 0 8 8 F - \ u 0 8 9 7 \ u 0 8 E 2 \ u 0 9 6 4 \ u 0 9 6 5 \ u 0 9 7 0 \ u 0 9 8 4 \ u 0 9 8 D \ u 0 9 8 E \ u 0 9 9 1 \ u 0 9 9 2 \ u 0 9 A 9 \ u 0 9 B 1 \ u 0 9 B 3 - \ u 0 9 B 5 \ u 0 9 B A \ u 0 9 B B \ u 0 9 C 5 \ u 0 9 C 6 \ u 0 9 C 9 \ u 0 9 C A \ u 0 9 C F - \ u 0 9 D 6 \ u 0 9 D 8 - \ u 0 9 D B \ u 0 9 D E \ u 0 9 E 4 \ u 0 9 E 5 \ u 0 9 F 2 \ u 0 9 F 3 \ u 0 9 F A \ u 0 9 F B \ u 0 9 F D \ u 0 9 F F \ u 0 A 0 0 \ u 0 A 0 4 \ u 0 A 0 B - \ u 0 A 0 E \ u 0 A 1 1 \ u 0 A 1 2 \ u 0 A 2 9 \ u 0 A 3 1 \ u 0 A 3 4 \ u 0 A 3 7 \ u 0 A 3 A \ u 0 A 3 B \ u 0 A 3 D \ u 0 A 4 3 - \ u 0 A 4 6 \ u 0 A 4 9 \ u 0 A 4 A \ u 0 A 4 E - \ u 0 A 5 0 \ u 0 A 5 2 - \ u 0 A 5 8 \ u 0 A 5 D \ u 0 A 5 F - \ u 0 A 6 5 \ u 0 A 7 6 - \ u 0 A 8 0 \ u 0 A 8 4 \ u 0 A 8 E \ u 0 A 9 2 \ u 0 A A 9 \ u 0 A B 1 \ u 0 A B 4 \ u 0 A B A \ u 0 A B B \ u 0 A C 6 \ u 0 A C A \ u 0 A C E \ u 0 A C F \ u 0 A D 1 - \ u 0 A D F \ u 0 A E 4 \ u 0 A E 5 \ u 0 A F 0 - \ u 0 A F 8 \ u 0 B 0 0 \ u 0 B 0 4 \ u 0 B 0 D \ u 0 B 0 E \ u 0 B 1 1 \ u 0 B 1 2 \ u 0 B 2 9 \ u 0 B 3 1 \ u 0 B 3 4 \ u 0 B 3 A \ u 0 B 3 B \ u 0 B 4 5 \ u 0 B 4 6 \ u 0 B 4 9 \ u 0 B 4 A \ u 0 B 4 E - \ u 0 B 5 4 \ u 0 B 5 8 - \ u 0 B 5 B \ u 0 B 5 E \ u 0 B 6 4 \ u 0 B 6 5 \ u 0 B 7 0 \ u 0 B 7 8 - \ u 0 B 8 1 \ u 0 B 8 4 \ u 0 B 8 B - \ u 0 B 8 D \ u 0 B 9 1 \ u 0 B 9 6 - \ u 0 B 9 8 \ u 0 B 9 B \ u 0 B 9 D \ u 0 B A 0 - \ u 0 B A 2 \ u 0 B A 5 - \ u 0 B A 7 \ u 0 B A B - \ u 0 B A D \ u 0 B B A - \ u 0 B B D \ u 0 B C 3 - \ u 0 B C 5 \ u 0 B C 9 \ u 0 B C E \ u 0 B C F \ u 0 B D 1 - \ u 0 B D 6 \ u 0 B D 8 - \ u 0 B E 5 \ u 0 B F 3 - \ u 0 B F F \ u 0 C 0 D \ u 0 C 1 1 \ u 0 C 2 9 \ u 0 C 3 A \ u 0 C 3 B \ u 0 C 4 5 \ u 0 C 4 9 \ u 0 C 4 E - \ u 0 C 5 4 \ u 0 C 5 7 \ u 0 C 5 B \ u 0 C 5 C \ u 0 C 5 E \ u 0 C 5 F \ u 0 C 6 4 \ u 0 C 6 5 \ u 0 C 7 0 - \ u 0 C 7 7 \ u 0 C 7 F \ u 0 C 8 4 \ u 0 C 8 D \ u 0 C 9 1 \ u 0 C A 9 \ u 0 C B 4 \ u 0 C B A \ u 0 C B B \ u 0 C C 5 \ u 0 C C 9 \ u 0 C C E - \ u 0 C D 4 \ u 0 C D 7 - \ u 0 C D C \ u 0 C D F \ u 0 C E 4 \ u 0 C E 5 \ u 0 C F 0 \ u 0 C F 4 - \ u 0 C F F \ u 0 D 0 D \ u 0 D 1 1 \ u 0 D 4 5 \ u 0 D 4 9 \ u 0 D 4 F - \ u 0 D 5 3 \ u 0 D 6 4 \ u 0 D 6 5 \ u 0 D 7 9 \ u 0 D 8 0 \ u 0 D 8 4 \ u 0 D 9 7 - \ u 0 D 9 9 \ u 0 D B 2 \ u 0 D B C \ u 0 D B E \ u 0 D B F \ u 0 D C 7 - \ u 0 D C 9 \ u 0 D C B - \ u 0 D C E \ u 0 D D 5 \ u 0 D D 7 \ u 0 D E 0 - \ u 0 D E 5 \ u 0 D F 0 \ u 0 D F 1 \ u 0 D F 4 - \ u 0 E 0 0 \ u 0 E 3 B - \ u 0 E 3 F \ u 0 E 4 F \ u 0 E 5 A - \ u 0 E 8 0 \ u 0 E 8 3 \ u 0 E 8 5 \ u 0 E 8 B \ u 0 E A 4 \ u 0 E A 6 \ u 0 E B E \ u 0 E B F \ u 0 E C 5 \ u 0 E C 7 \ u 0 E C F \ u 0 E D A \ u 0 E D B \ u 0 E E 0 - \ u 0 E F F \ u 0 F 0 1 - \ u 0 F 1 7 \ u 0 F 1 A - \ u 0 F 1 F \ u 0 F 3 4 \ u 0 F 3 6 \ u 0 F 3 8 \ u 0 F 3 A - \ u 0 F 3 D \ u 0 F 4 8 \ u 0 F 6 D - \ u 0 F 7 0 \ u 0 F 8 5 \ u 0 F 9 8 \ u 0 F B D - \ u 0 F C 5 \ u 0 F C 7 - \ u 0 F F F \ u 1 0 4 A - \ u 1 0 4 F \ u 1 0 9 E \ u 1 0 9 F \ u 1 0 C 6 \ u 1 0 C 8 - \ u 1 0 C C \ u 1 0 C E \ u 1 0 C F \ u 1 0 F B \ u 1 2 4 9 \ u 1 2 4 E \ u 1 2 4 F \ u 1 2 5 7 \ u 1 2 5 9 \ u 1 2 5 E \ u 1 2 5 F \ u 1 2 8 9 \ u 1 2 8 E \ u 1 2 8 F \ u 1 2 B 1 \ u 1 2 B 6 \ u 1 2 B 7 \ u 1 2 B F \ u 1 2 C 1 \ u 1 2 C 6 \ u 1 2 C 7 \ u 1 2 D 7 \ u 1 3 1 1 \ u 1 3 1 6 \ u 1 3 1 7 \ u 1 3 5 B \ u 1 3 5 C \ u 1 3 6 0 - \ u 1 3 6 8 \ u 1 3 7 D - \ u 1 3 7 F \ u 1 3 9 0 - \ u 1 3 9 F \ u 1 3 F 6 \ u 1 3 F 7 \ u 1 3 F E - \ u 1 4 0 0 \ u 1 6 6 D \ u 1 6 6 E \ u 1 6 8 0 \ u 1 6 9 B - \ u 1 6 9 F \ u 1 6 E B - \ u 1 6 E D \ u 1 6 F 9 - \ u 1 6 F F \ u 1 7 1 6 - \ u 1 7 1 E \ u 1 7 3 5 - \ u 1 7 3 F \ u 1 7 5 4 - \ u 1 7 5 F \ u 1 7 6 D \ u 1 7 7 1 \ u 1 7 7 4 - \ u 1 7 7 F \ u 1 7 D 4 - \ u 1 7 D 6 \ u 1 7 D 8 - \ u 1 7 D B \ u 1 7 D E \ u 1 7 D F \ u 1 7 E A - \ u 1 7 E F \ u 1 7 F A - \ u 1 8 0 A \ u 1 8 0 E \ u 1 8 1 A - \ u 1 8 1 F \ u 1 8 7 9 - \ u 1 8 7 F \ u 1 8 A B - \ u 1 8 A F \ u 1 8 F 6 - \ u 1 8 F F \ u 1 9 1 F \ u 1 9 2 C - \ u 1 9 2 F \ u 1 9 3 C - \ u 1 9 4 5 \ u 1 9 6 E \ u 1 9 6 F \ u 1 9 7 5 - \ u 1 9 7 F \ u 1 9 A C - \ u 1 9 A F \ u 1 9 C A - \ u 1 9 C F \ u 1 9 D B - \ u 1 9 F F \ u 1 A 1 C - \ u 1 A 1 F \ u 1 A 5 F \ u 1 A 7 D \ u 1 A 7 E \ u 1 A 8 A - \ u 1 A 8 F \ u 1 A 9 A - \ u 1 A A 6 \ u 1 A A 8 - \ u 1 A A F \ u 1 A C F - \ u 1 A F F \ u 1 B 4 D - \ u 1 B 4 F \ u 1 B 5 A - \ u 1 B 6 A \ u 1 B 7 4 - \ u 1 B 7 F \ u 1 B F 4 - \ u 1 B F F \ u 1 C 3 8 - \ u 1 C 3 F \ u 1 C 4 A - \ u 1 C 4 C \ u 1 C 7 E \ u 1 C 7 F \ u 1 C 8 9 - \ u 1 C 8 F \ u 1 C B B \ u 1 C B C \ u 1 C C 0 - \ u 1 C C F \ u 1 C D 3 \ u 1 C F B - \ u 1 C F F \ u 1 F 1 6 \ u 1 F 1 7 \ u 1 F 1 E \ u 1 F 1 F \ u 1 F 4 6 \ u 1 F 4 7 \ u 1 F 4 E \ u 1 F 4 F \ u 1 F 5 8 \ u 1 F 5 A \ u 1 F 5 C \ u 1 F 5 E \ u 1 F 7 E \ u 1 F 7 F \ u 1 F B 5 \ u 1 F B D \ u 1 F B F - \ u 1 F C 1 \ u 1 F C 5 \ u 1 F C D - \ u 1 F C F \ u 1 F D 4 \ u 1 F D 5 \ u 1 F D C - \ u 1 F D F \ u 1 F E D - \ u 1 F F 1 \ u 1 F F 5 \ u 1 F F D - \ u 2 0 3 E \ u 2 0 4 1 - \ u 2 0 5 3 \ u 2 0 5 5 - \ u 2 0 6 F \ u 2 0 7 2 \ u 2 0 7 3 \ u 2 0 7 A - \ u 2 0 7 E \ u 2 0 8 A - \ u 2 0 8 F \ u 2 0 9 D - \ u 2 0 C F \ u 2 0 F 1 - \ u 2 1 0 1 \ u 2 1 0 3 - \ u 2 1 0 6 \ u 2 1 0 8 \ u 2 1 0 9 \ u 2 1 1 4 \ u 2 1 1 6 - \ u 2 1 1 8 \ u 2 1 1 E - \ u 2 1 2 3 \ u 2 1 2 5 \ u 2 1 2 7 \ u 2 1 2 9 \ u 2 1 2 E \ u 2 1 3 A \ u 2 1 3 B \ u 2 1 4 0 - \ u 2 1 4 4 \ u 2 1 4 A - \ u 2 1 4 D \ u 2 1 4 F \ u 2 1 8 A - \ u 2 4 5 F \ u 2 4 9 C - \ u 2 4 E 9 \ u 2 5 0 0 - \ u 2 7 7 5 \ u 2 7 9 4 - \ u 2 B F F \ u 2 C E 5 - \ u 2 C E A \ u 2 C F 4 - \ u 2 C F C \ u 2 C F E \ u 2 C F F \ u 2 D 2 6 \ u 2 D 2 8 - \ u 2 D 2 C \ u 2 D 2 E \ u 2 D 2 F \ u 2 D 6 8 - \ u 2 D 6 E \ u 2 D 7 0 - \ u 2 D 7 E \ u 2 D 9 7 - \ u 2 D 9 F \ u 2 D A 7 \ u 2 D A F \ u 2 D B 7 \ u 2 D B F \ u 2 D C 7 \ u 2 D C F \ u 2 D D 7 \ u 2 D D F \ u 2 E 0 0 - \ u 2 E 2 E \ u 2 E 3 0 - \ u 3 0 0 4 \ u 3 0 0 8 - \ u 3 0 2 0 \ u 3 0 3 0 \ u 3 0 3 6 \ u 3 0 3 7 \ u 3 0 3 D - \ u 3 0 4 0 \ u 3 0 9 7 \ u 3 0 9 8 \ u 3 0 9 B \ u 3 0 9 C \ u 3 0 A 0 \ u 3 0 F B \ u 3 1 0 0 - \ u 3 1 0 4 \ u 3 1 3 0 \ u 3 1 8 F - \ u 3 1 9 1 \ u 3 1 9 6 - \ u 3 1 9 F \ u 3 1 C 0 - \ u 3 1 E F \ u 3 2 0 0 - \ u 3 2 1 F \ u 3 2 2 A - \ u 3 2 4 7 \ u 3 2 5 0 \ u 3 2 6 0 - \ u 3 2 7 F \ u 3 2 8 A - \ u 3 2 B 0 \ u 3 2 C 0 - \ u 3 3 F F \ u 4 D C 0 - \ u 4 D F F \ u A 4 8 D - \ u A 4 C F \ u A 4 F E \ u A 4 F F \ u A 6 0 D - \ u A 6 0 F \ u A 6 2 C - \ u A 6 3 F \ u A 6 7 3 \ u A 6 7 E \ u A 6 F 2 - \ u A 7 1 6 \ u A 7 2 0 \ u A 7 2 1 \ u A 7 8 9 \ u A 7 8 A \ u A 7 C B - \ u A 7 C F \ u A 7 D 2 \ u A 7 D 4 \ u A 7 D A - \ u A 7 F 1 \ u A 8 2 8 - \ u A 8 2 B \ u A 8 2 D - \ u A 8 2 F \ u A 8 3 6 - \ u A 8 3 F \ u A 8 7 4 - \ u A 8 7 F \ u A 8 C 6 - \ u A 8 C F \ u A 8 D A - \ u A 8 D F \ u A 8 F 8 - \ u A 8 F A \ u A 8 F C \ u A 9 2 E \ u A 9 2 F \ u A 9 5 4 - \ u A 9 5 F \ u A 9 7 D - \ u A 9 7 F \ u A 9 C 1 - \ u A 9 C E \ u A 9 D A - \ u A 9 D F \ u A 9 F F \ u A A 3 7 - \ u A A 3 F \ u A A 4 E \ u A A 4 F \ u A A 5 A - \ u A A 5 F \ u A A 7 7 - \ u A A 7 9 \ u A A C 3 - \ u A A D A \ u A A D E \ u A A D F \ u A A F 0 \ u A A F 1 \ u A A F 7 - \ u A B 0 0 \ u A B 0 7 \ u A B 0 8 \ u A B 0 F \ u A B 1 0 \ u A B 1 7 - \ u A B 1 F \ u A B 2 7 \ u A B
2022-01-26 00:21:08 +01:00
}
2023-09-06 21:25:00 -07:00
/ * *
* Unescapes the text of a String - type micromark Token .
*
* @ param { Token } token String - type micromark Token .
* @ returns { string } Unescaped token text .
* /
function unescapeStringTokenText ( token ) {
return filterByTypes ( token . children , [ "characterEscapeValue" , "data" ] ) . map ( function ( child ) {
return child . text ;
} ) . join ( "" ) ;
}
2022-01-26 00:21:08 +01:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD051" , "link-fragments" ] ,
"description" : "Link fragments should be valid" ,
"tags" : [ "links" ] ,
"function" : function MD051 ( params , onError ) {
2023-08-04 20:53:38 -07:00
var tokens = params . parsers . micromark . tokens ;
2023-01-17 04:19:40 +00:00
var fragments = new Map ( ) ;
2023-08-04 20:53:38 -07:00
2023-01-17 04:19:40 +00:00
// Process headings
2023-08-04 20:53:38 -07:00
var headingTexts = filterByTypes ( tokens , [ "atxHeadingText" , "setextHeadingText" ] ) ;
var _iterator = _createForOfIteratorHelper ( headingTexts ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var headingText = _step . value ;
var fragment = convertHeadingToHTMLFragment ( headingText ) ;
2023-09-04 12:26:38 -07:00
if ( fragment !== "#" ) {
var count = fragments . get ( fragment ) || 0 ;
if ( count ) {
fragments . set ( "" . concat ( fragment , "-" ) . concat ( count ) , 0 ) ;
}
fragments . set ( fragment , count + 1 ) ;
var match = null ;
while ( ( match = anchorRe . exec ( headingText . text ) ) !== null ) {
var _match = match ,
_match2 = _slicedToArray ( _match , 2 ) ,
anchor = _match2 [ 1 ] ;
if ( ! fragments . has ( anchor ) ) {
fragments . set ( anchor , 1 ) ;
}
2023-08-04 20:53:38 -07:00
}
2023-01-17 04:19:40 +00:00
}
}
2023-08-04 20:53:38 -07:00
// Process HTML anchors
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
2023-09-02 12:07:14 -07:00
var _iterator2 = _createForOfIteratorHelper ( filterByTypes ( tokens , [ "htmlText" ] ) ) ,
2023-08-04 20:53:38 -07:00
_step2 ;
try {
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
var token = _step2 . value ;
var htmlTagInfo = getHtmlTagInfo ( token ) ;
if ( htmlTagInfo && ! htmlTagInfo . close ) {
var anchorMatch = idRe . exec ( token . text ) || htmlTagInfo . name . toLowerCase ( ) === "a" && nameRe . exec ( token . text ) ;
2023-10-18 23:45:39 -07:00
if ( anchorMatch && anchorMatch . length > 0 ) {
2023-08-04 20:53:38 -07:00
fragments . set ( "#" . concat ( anchorMatch [ 1 ] ) , 0 ) ;
}
2023-01-17 04:19:40 +00:00
}
2023-08-04 20:53:38 -07:00
}
// Process link and definition fragments
} catch ( err ) {
_iterator2 . e ( err ) ;
} finally {
_iterator2 . f ( ) ;
}
var parentChilds = [ [ "link" , "resourceDestinationString" ] , [ "definition" , "definitionDestinationString" ] ] ;
for ( var _i = 0 , _parentChilds = parentChilds ; _i < _parentChilds . length ; _i ++ ) {
var _parentChilds$ _i = _slicedToArray ( _parentChilds [ _i ] , 2 ) ,
parentType = _parentChilds$ _i [ 0 ] ,
definitionType = _parentChilds$ _i [ 1 ] ;
var links = filterByTypes ( tokens , [ parentType ] ) ;
var _iterator3 = _createForOfIteratorHelper ( links ) ,
_step3 ;
try {
for ( _iterator3 . s ( ) ; ! ( _step3 = _iterator3 . n ( ) ) . done ; ) {
var link = _step3 . value ;
var definitions = filterByTypes ( link . children , [ definitionType ] ) ;
var _iterator4 = _createForOfIteratorHelper ( definitions ) ,
_step4 ;
try {
var _loop = function _loop ( ) {
var definition = _step4 . value ;
2023-09-06 20:50:56 -07:00
var endColumn = definition . endColumn ,
2023-09-06 21:25:00 -07:00
startColumn = definition . startColumn ;
var text = unescapeStringTokenText ( definition ) ;
2023-09-06 20:50:56 -07:00
if ( text . length > 1 && text . startsWith ( "#" ) && ! fragments . has ( text ) && ! fragments . has ( "#" . concat ( encodeURIComponent ( text . slice ( 1 ) ) ) ) ) {
2023-08-04 21:23:43 -07:00
// eslint-disable-next-line no-undef-init
var context = undefined ;
2023-08-04 20:53:38 -07:00
// eslint-disable-next-line no-undef-init
var range = undefined ;
// eslint-disable-next-line no-undef-init
var fixInfo = undefined ;
if ( link . startLine === link . endLine ) {
2023-08-04 21:23:43 -07:00
context = link . text ;
2023-08-04 20:53:38 -07:00
range = [ link . startColumn , link . endColumn - link . startColumn ] ;
fixInfo = {
2023-09-06 20:50:56 -07:00
"editColumn" : startColumn ,
"deleteCount" : endColumn - startColumn
2023-08-04 20:53:38 -07:00
} ;
}
2023-09-06 20:50:56 -07:00
var textLower = text . toLowerCase ( ) ;
2023-08-04 20:53:38 -07:00
var mixedCaseKey = _toConsumableArray ( fragments . keys ( ) ) . find ( function ( key ) {
2023-09-06 20:50:56 -07:00
return textLower === key . toLowerCase ( ) ;
2023-08-04 20:53:38 -07:00
} ) ;
if ( mixedCaseKey ) {
// @ts-ignore
( fixInfo || { } ) . insertText = mixedCaseKey ;
2023-09-06 20:50:56 -07:00
addErrorDetailIf ( onError , link . startLine , mixedCaseKey , text , undefined , context , range , fixInfo ) ;
2023-08-04 20:53:38 -07:00
} else {
2023-08-04 21:23:43 -07:00
addError ( onError , link . startLine , undefined , context , range ) ;
2023-08-04 20:53:38 -07:00
}
}
} ;
for ( _iterator4 . s ( ) ; ! ( _step4 = _iterator4 . n ( ) ) . done ; ) {
_loop ( ) ;
}
} catch ( err ) {
_iterator4 . e ( err ) ;
} finally {
_iterator4 . f ( ) ;
}
2023-01-17 04:19:40 +00:00
}
2023-08-04 20:53:38 -07:00
} catch ( err ) {
_iterator3 . e ( err ) ;
} finally {
_iterator3 . f ( ) ;
2023-01-17 04:19:40 +00:00
}
2023-08-04 20:53:38 -07:00
}
2023-01-17 04:19:40 +00:00
}
2022-01-26 00:21:08 +01:00
} ;
2022-06-01 20:23:08 -07:00
/***/ } ) ,
/***/ "../lib/md052.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md052 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
"use strict" ;
// @ts-check
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-09-04 16:40:48 -07:00
function _toConsumableArray ( arr ) { return _arrayWithoutHoles ( arr ) || _iterableToArray ( arr ) || _unsupportedIterableToArray ( arr ) || _nonIterableSpread ( ) ; }
function _nonIterableSpread ( ) { throw new TypeError ( "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-01-17 04:19:40 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
2023-09-04 16:40:48 -07:00
function _iterableToArray ( iter ) { if ( typeof Symbol !== "undefined" && iter [ Symbol . iterator ] != null || iter [ "@@iterator" ] != null ) return Array . from ( iter ) ; }
function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) return _arrayLikeToArray ( arr ) ; }
2023-01-17 04:19:40 +00:00
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addError = _require . addError ;
var _require2 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
referenceLinkImageData = _require2 . referenceLinkImageData ;
2022-06-01 20:23:08 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD052" , "reference-links-images" ] ,
"description" : "Reference links and images should use a label that is defined" ,
"tags" : [ "images" , "links" ] ,
"function" : function MD052 ( params , onError ) {
2023-09-04 16:40:48 -07:00
var config = params . config ,
lines = params . lines ;
var shortcutSyntax = config . shortcut _syntax || false ;
2023-01-17 04:19:40 +00:00
var _referenceLinkImageDa = referenceLinkImageData ( ) ,
2023-09-04 16:40:48 -07:00
definitions = _referenceLinkImageDa . definitions ,
2023-01-17 04:19:40 +00:00
references = _referenceLinkImageDa . references ,
2023-09-04 16:40:48 -07:00
shortcuts = _referenceLinkImageDa . shortcuts ;
var entries = shortcutSyntax ? [ ] . concat ( _toConsumableArray ( references . entries ( ) ) , _toConsumableArray ( shortcuts . entries ( ) ) ) : references . entries ( ) ;
2023-01-17 04:19:40 +00:00
// Look for links/images that use an undefined link reference
2023-09-04 16:40:48 -07:00
var _iterator = _createForOfIteratorHelper ( entries ) ,
2023-01-17 04:19:40 +00:00
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var reference = _step . value ;
var _reference = _slicedToArray ( reference , 2 ) ,
label = _reference [ 0 ] ,
datas = _reference [ 1 ] ;
if ( ! definitions . has ( label ) ) {
var _iterator2 = _createForOfIteratorHelper ( datas ) ,
_step2 ;
try {
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
var data = _step2 . value ;
var _data = _slicedToArray ( data , 3 ) ,
lineIndex = _data [ 0 ] ,
index = _data [ 1 ] ,
length = _data [ 2 ] ;
// Context will be incomplete if reporting for a multi-line link
var context = lines [ lineIndex ] . slice ( index , index + length ) ;
addError ( onError , lineIndex + 1 , "Missing link or image reference definition: \"" . concat ( label , "\"" ) , context , [ index + 1 , context . length ] ) ;
}
} catch ( err ) {
_iterator2 . e ( err ) ;
} finally {
_iterator2 . f ( ) ;
}
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2022-06-01 20:23:08 -07:00
}
2023-01-17 04:19:40 +00:00
}
2022-06-01 20:23:08 -07:00
} ;
/***/ } ) ,
/***/ "../lib/md053.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md053 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
"use strict" ;
// @ts-check
2023-01-17 04:19:40 +00:00
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2023-08-26 17:45:39 -07:00
function _iterableToArrayLimit ( r , l ) { var t = null == r ? null : "undefined" != typeof Symbol && r [ Symbol . iterator ] || r [ "@@iterator" ] ; if ( null != t ) { var e , n , i , u , a = [ ] , f = ! 0 , o = ! 1 ; try { if ( i = ( t = t . call ( r ) ) . next , 0 === l ) { if ( Object ( t ) !== t ) return ; f = ! 1 ; } else for ( ; ! ( f = ( e = i . call ( t ) ) . done ) && ( a . push ( e . value ) , a . length !== l ) ; f = ! 0 ) ; } catch ( r ) { o = ! 0 , n = r ; } finally { try { if ( ! f && null != t [ "return" ] && ( u = t [ "return" ] ( ) , Object ( u ) !== u ) ) return ; } finally { if ( o ) throw n ; } } return a ; } }
2023-01-17 04:19:40 +00:00
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
2023-08-26 17:45:39 -07:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
2023-01-17 04:19:40 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addError = _require . addError ,
ellipsify = _require . ellipsify ,
linkReferenceDefinitionRe = _require . linkReferenceDefinitionRe ;
var _require2 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
referenceLinkImageData = _require2 . referenceLinkImageData ;
2022-06-01 20:23:08 -07:00
module . exports = {
2023-01-17 04:19:40 +00:00
"names" : [ "MD053" , "link-image-reference-definitions" ] ,
"description" : "Link and image reference definitions should be needed" ,
"tags" : [ "images" , "links" ] ,
"function" : function MD053 ( params , onError ) {
var ignored = new Set ( params . config . ignored _definitions || [ "//" ] ) ;
var lines = params . lines ;
var _referenceLinkImageDa = referenceLinkImageData ( ) ,
references = _referenceLinkImageDa . references ,
shortcuts = _referenceLinkImageDa . shortcuts ,
definitions = _referenceLinkImageDa . definitions ,
duplicateDefinitions = _referenceLinkImageDa . duplicateDefinitions ;
var singleLineDefinition = function singleLineDefinition ( line ) {
return line . replace ( linkReferenceDefinitionRe , "" ) . trim ( ) . length > 0 ;
} ;
var deleteFixInfo = {
"deleteCount" : - 1
} ;
// Look for unused link references (unreferenced by any link/image)
var _iterator = _createForOfIteratorHelper ( definitions . entries ( ) ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var definition = _step . value ;
var _definition = _slicedToArray ( definition , 2 ) ,
label = _definition [ 0 ] ,
2023-10-25 20:05:19 -07:00
_definition$ = _slicedToArray ( _definition [ 1 ] , 1 ) ,
lineIndex = _definition$ [ 0 ] ;
2023-01-17 04:19:40 +00:00
if ( ! ignored . has ( label ) && ! references . has ( label ) && ! shortcuts . has ( label ) ) {
var line = lines [ lineIndex ] ;
addError ( onError , lineIndex + 1 , "Unused link or image reference definition: \"" . concat ( label , "\"" ) , ellipsify ( line ) , [ 1 , line . length ] , singleLineDefinition ( line ) ? deleteFixInfo : 0 ) ;
}
}
// Look for duplicate link references (defined more than once)
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
var _iterator2 = _createForOfIteratorHelper ( duplicateDefinitions ) ,
_step2 ;
try {
for ( _iterator2 . s ( ) ; ! ( _step2 = _iterator2 . n ( ) ) . done ; ) {
var duplicateDefinition = _step2 . value ;
var _duplicateDefinition = _slicedToArray ( duplicateDefinition , 2 ) ,
_label = _duplicateDefinition [ 0 ] ,
_lineIndex = _duplicateDefinition [ 1 ] ;
if ( ! ignored . has ( _label ) ) {
var _line = lines [ _lineIndex ] ;
addError ( onError , _lineIndex + 1 , "Duplicate link or image reference definition: \"" . concat ( _label , "\"" ) , ellipsify ( _line ) , [ 1 , _line . length ] , singleLineDefinition ( _line ) ? deleteFixInfo : 0 ) ;
}
}
} catch ( err ) {
_iterator2 . e ( err ) ;
} finally {
_iterator2 . f ( ) ;
2022-06-01 20:23:08 -07:00
}
2023-01-17 04:19:40 +00:00
}
2022-06-01 20:23:08 -07:00
} ;
2021-01-05 20:55:09 -08:00
/***/ } ) ,
2023-10-25 20:05:19 -07:00
/***/ "../lib/md054.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / md054 . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
"use strict" ;
// @ts-check
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ../helpers */ "../helpers/helpers.js" ) ,
addErrorContext = _require . addErrorContext ,
nextLinesRe = _require . nextLinesRe ;
var _require2 = _ _webpack _require _ _ ( /*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs" ) ,
filterByTypes = _require2 . filterByTypes ,
filterByPredicate = _require2 . filterByPredicate ,
getTokenTextByType = _require2 . getTokenTextByType ;
var _require3 = _ _webpack _require _ _ ( /*! ./cache */ "../lib/cache.js" ) ,
referenceLinkImageData = _require3 . referenceLinkImageData ;
var backslashEscapeRe = /\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g ;
var removeBackslashEscapes = function removeBackslashEscapes ( text ) {
return text . replace ( backslashEscapeRe , "$1" ) ;
} ;
var autolinkDisallowedRe = /[ <>]/ ;
var autolinkAble = function autolinkAble ( destination ) {
try {
// eslint-disable-next-line no-new
new URL ( destination ) ;
} catch ( _unused ) {
// Not an absolute URL
return false ;
}
return ! autolinkDisallowedRe . test ( destination ) ;
} ;
module . exports = {
"names" : [ "MD054" , "link-image-style" ] ,
"description" : "Link and image style" ,
"tags" : [ "images" , "links" ] ,
2023-11-03 20:09:06 -07:00
"function" : function _function ( params , onError ) {
var parsers = params . parsers ,
config = params . config ;
2023-10-25 20:05:19 -07:00
var autolink = config . autolink === undefined || ! ! config . autolink ;
var inline = config . inline === undefined || ! ! config . inline ;
2023-11-11 22:12:50 -08:00
var full = config . full === undefined || ! ! config . full ;
var collapsed = config . collapsed === undefined || ! ! config . collapsed ;
var shortcut = config . shortcut === undefined || ! ! config . shortcut ;
2023-11-12 22:42:02 -08:00
var urlInline = config . url _inline === undefined || ! ! config . url _inline ;
if ( autolink && inline && full && collapsed && shortcut && urlInline ) {
2023-10-25 20:05:19 -07:00
// Everything allowed, nothing to check
return ;
}
var _referenceLinkImageDa = referenceLinkImageData ( ) ,
definitions = _referenceLinkImageDa . definitions ;
var links = filterByTypes ( parsers . micromark . tokens , [ "autolink" , "image" , "link" ] ) ;
var _iterator = _createForOfIteratorHelper ( links ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var link = _step . value ;
var label = null ;
var destination = null ;
var children = link . children ,
endColumn = link . endColumn ,
endLine = link . endLine ,
startColumn = link . startColumn ,
startLine = link . startLine ,
text = link . text ,
type = link . type ;
var image = type === "image" ;
var isError = false ;
if ( type === "autolink" ) {
// link kind is an autolink
destination = getTokenTextByType ( children , "autolinkProtocol" ) ;
label = destination ;
isError = ! autolink ;
} else {
// link type is "image" or "link"
var descendents = filterByPredicate ( children ) ;
label = getTokenTextByType ( descendents , "labelText" ) ;
destination = getTokenTextByType ( descendents , "resourceDestinationString" ) ;
if ( destination ) {
// link kind is an inline link
2023-11-12 22:42:02 -08:00
var title = getTokenTextByType ( descendents , "resourceTitleString" ) ;
2023-11-14 19:56:23 -08:00
isError = ! inline || ! urlInline && autolink && ! image && ! title && label === destination && autolinkAble ( destination ) ;
2023-10-25 20:05:19 -07:00
} else {
2023-11-11 22:12:50 -08:00
// link kind is a full/collapsed/shortcut reference link
var isShortcut = ! children . some ( function ( t ) {
return t . type === "reference" ;
} ) ;
var referenceString = getTokenTextByType ( descendents , "referenceString" ) ;
var isCollapsed = referenceString === null ;
var definition = definitions . get ( referenceString || label ) ;
2023-10-25 20:05:19 -07:00
destination = definition && definition [ 1 ] ;
2023-11-11 22:12:50 -08:00
isError = destination && ( isShortcut ? ! shortcut : isCollapsed ? ! collapsed : ! full ) ;
2023-10-25 20:05:19 -07:00
}
}
if ( isError ) {
var range = null ;
var fixInfo = null ;
if ( startLine === endLine ) {
range = [ startColumn , endColumn - startColumn ] ;
var insertText = null ;
2023-11-12 22:42:02 -08:00
var canInline = inline && label ;
var canAutolink = autolink && ! image && autolinkAble ( destination ) ;
if ( canInline && ( urlInline || ! canAutolink ) ) {
2023-10-25 20:05:19 -07:00
// Most useful form
var prefix = image ? "!" : "" ;
2023-11-12 22:42:02 -08:00
// @ts-ignore
2023-10-25 20:05:19 -07:00
var escapedLabel = label . replace ( /[[\]]/g , "\\$&" ) ;
var escapedDestination = destination . replace ( /[()]/g , "\\$&" ) ;
insertText = "" . concat ( prefix , "[" ) . concat ( escapedLabel , "](" ) . concat ( escapedDestination , ")" ) ;
2023-11-12 22:42:02 -08:00
} else if ( canAutolink ) {
2023-10-25 20:05:19 -07:00
// Simplest form
insertText = "<" . concat ( removeBackslashEscapes ( destination ) , ">" ) ;
}
if ( insertText ) {
fixInfo = {
"editColumn" : range [ 0 ] ,
insertText : insertText ,
"deleteCount" : range [ 1 ]
} ;
}
}
addErrorContext ( onError , startLine , text . replace ( nextLinesRe , "" ) , null , null , range , fixInfo ) ;
}
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
}
} ;
/***/ } ) ,
2021-01-06 19:45:15 -08:00
/***/ "../lib/rules.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . . / lib / rules . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * /
2022-06-02 21:42:48 -07:00
/***/ ( ( module , _ _unused _webpack _exports , _ _webpack _require _ _ ) => {
2021-01-05 20:55:09 -08:00
2019-12-14 13:50:48 -08:00
"use strict" ;
2021-01-05 20:55:09 -08:00
// @ts-check
2023-01-17 04:19:40 +00:00
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it = typeof Symbol !== "undefined" && o [ Symbol . iterator ] || o [ "@@iterator" ] ; if ( ! it ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e ) { throw _e ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = it . call ( o ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e2 ) { didErr = true ; err = _e2 ; } , f : function f ( ) { try { if ( ! normalCompletion && it [ "return" ] != null ) it [ "return" ] ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _toConsumableArray ( arr ) { return _arrayWithoutHoles ( arr ) || _iterableToArray ( arr ) || _unsupportedIterableToArray ( arr ) || _nonIterableSpread ( ) ; }
function _nonIterableSpread ( ) { throw new TypeError ( "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _iterableToArray ( iter ) { if ( typeof Symbol !== "undefined" && iter [ Symbol . iterator ] != null || iter [ "@@iterator" ] != null ) return Array . from ( iter ) ; }
function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) return _arrayLikeToArray ( arr ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) arr2 [ i ] = arr [ i ] ; return arr2 ; }
var _require = _ _webpack _require _ _ ( /*! ./constants */ "../lib/constants.js" ) ,
homepage = _require . homepage ,
version = _require . version ;
2023-11-09 19:47:15 -08:00
var rules = [ _ _webpack _require _ _ ( /*! ./md001 */ "../lib/md001.js" ) , _ _webpack _require _ _ ( /*! ./md003 */ "../lib/md003.js" ) , _ _webpack _require _ _ ( /*! ./md004 */ "../lib/md004.js" ) , _ _webpack _require _ _ ( /*! ./md005 */ "../lib/md005.js" ) , _ _webpack _require _ _ ( /*! ./md007 */ "../lib/md007.js" ) , _ _webpack _require _ _ ( /*! ./md009 */ "../lib/md009.js" ) , _ _webpack _require _ _ ( /*! ./md010 */ "../lib/md010.js" ) , _ _webpack _require _ _ ( /*! ./md011 */ "../lib/md011.js" ) , _ _webpack _require _ _ ( /*! ./md012 */ "../lib/md012.js" ) , _ _webpack _require _ _ ( /*! ./md013 */ "../lib/md013.js" ) , _ _webpack _require _ _ ( /*! ./md014 */ "../lib/md014.js" ) , _ _webpack _require _ _ ( /*! ./md018 */ "../lib/md018.js" ) , _ _webpack _require _ _ ( /*! ./md019 */ "../lib/md019.js" ) , _ _webpack _require _ _ ( /*! ./md020 */ "../lib/md020.js" ) , _ _webpack _require _ _ ( /*! ./md021 */ "../lib/md021.js" ) , _ _webpack _require _ _ ( /*! ./md022 */ "../lib/md022.js" ) , _ _webpack _require _ _ ( /*! ./md023 */ "../lib/md023.js" ) , _ _webpack _require _ _ ( /*! ./md024 */ "../lib/md024.js" ) , _ _webpack _require _ _ ( /*! ./md025 */ "../lib/md025.js" ) , _ _webpack _require _ _ ( /*! ./md026 */ "../lib/md026.js" ) , _ _webpack _require _ _ ( /*! ./md027 */ "../lib/md027.js" ) , _ _webpack _require _ _ ( /*! ./md028 */ "../lib/md028.js" ) , _ _webpack _require _ _ ( /*! ./md029 */ "../lib/md029.js" ) , _ _webpack _require _ _ ( /*! ./md030 */ "../lib/md030.js" ) , _ _webpack _require _ _ ( /*! ./md031 */ "../lib/md031.js" ) , _ _webpack _require _ _ ( /*! ./md032 */ "../lib/md032.js" ) , _ _webpack _require _ _ ( /*! ./md033 */ "../lib/md033.js" ) , _ _webpack _require _ _ ( /*! ./md034 */ "../lib/md034.js" ) , _ _webpack _require _ _ ( /*! ./md035 */ "../lib/md035.js" ) , _ _webpack _require _ _ ( /*! ./md036 */ "../lib/md036.js" ) , _ _webpack _require _ _ ( /*! ./md037 */ "../lib/md037.js" ) , _ _webpack _require _ _ ( /*! ./md038 */ "../lib/md038.js" ) , _ _webpack _require _ _ ( /*! ./md039 */ "../lib/md039.js" ) , _ _webpack _require _ _ ( /*! ./md040 */ "../lib/md040.js" ) , _ _webpack _require _ _ ( /*! ./md041 */ "../lib/md041.js" ) , _ _webpack _require _ _ ( /*! ./md042 */ "../lib/md042.js" ) , _ _webpack _require _ _ ( /*! ./md043 */ "../lib/md043.js" ) , _ _webpack _require _ _ ( /*! ./md044 */ "../lib/md044.js" ) , _ _webpack _require _ _ ( /*! ./md045 */ "../lib/md045.js" ) , _ _webpack _require _ _ ( /*! ./md046 */ "../lib/md046.js" ) , _ _webpack _require _ _ ( /*! ./md047 */ "../lib/md047.js" ) , _ _webpack _require _ _ ( /*! ./md048 */ "../lib/md048.js" ) ] . concat ( _toConsumableArray ( _ _webpack _require _ _ ( /*! ./md049-md050 */ "../lib/md049-md050.js" ) ) , [ _ _webpack _require _ _ ( /*! ./md051 */ "../lib/md051.js" ) , _ _webpack _require _ _ ( /*! ./md052 */ "../lib/md052.js" ) , _ _webpack _require _ _ ( /*! ./md053 */ "../lib/md053.js" ) , _ _webpack _require _ _ ( /*! ./md054 */ "../lib/md054.js" )
2023-10-25 20:05:19 -07:00
// md055: See https://github.com/markdownlint/markdownlint
// md056: See https://github.com/markdownlint/markdownlint
// md057: See https://github.com/markdownlint/markdownlint
] ) ;
2023-01-17 04:19:40 +00:00
var _iterator = _createForOfIteratorHelper ( rules ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var rule = _step . value ;
var name = rule . names [ 0 ] . toLowerCase ( ) ;
2021-01-06 20:20:18 -08:00
// eslint-disable-next-line dot-notation
2023-01-17 04:19:40 +00:00
rule [ "information" ] = new URL ( "" . concat ( homepage , "/blob/v" ) . concat ( version , "/doc/" ) . concat ( name , ".md" ) ) ;
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
2022-06-08 22:10:27 -07:00
}
2019-10-02 20:10:42 -07:00
module . exports = rules ;
2021-01-05 20:55:09 -08:00
/***/ } )
/******/ } ) ;
/************************************************************************/
/******/ // The module cache
/******/ var _ _webpack _module _cache _ _ = { } ;
/******/
/******/ // The require function
/******/ function _ _webpack _require _ _ ( moduleId ) {
/******/ // Check if module is in cache
Update dependencies: c8 to 7.7.2, eslint to 7.28.0, eslint-plugin-jsdoc to 35.1.3, eslint-plugin-unicorn to 33.0.1, globby to 11.0.3, js-yaml to 4.1.0, markdown-it-texmath to 0.9.0, markdownlint-rule-helpers to 0.14.0, ts-loader to 9.2.3, typescript to 4.3.2, webpack to 5.38.1, webpack-cli to 4.7.2.
2021-06-08 22:20:13 -07:00
/******/ var cachedModule = _ _webpack _module _cache _ _ [ moduleId ] ;
/******/ if ( cachedModule !== undefined ) {
/******/ return cachedModule . exports ;
2021-01-05 20:55:09 -08:00
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = _ _webpack _module _cache _ _ [ moduleId ] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports : { }
/******/ } ;
/******/
/******/ // Execute the module function
2022-06-02 21:42:48 -07:00
/******/ _ _webpack _modules _ _ [ moduleId ] ( module , module . exports , _ _webpack _require _ _ ) ;
2021-01-05 20:55:09 -08:00
/******/
/******/ // Return the exports of the module
/******/ return module . exports ;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ ( ( ) => {
2021-02-06 19:23:55 -08:00
/******/ _ _webpack _require _ _ . o = ( obj , prop ) => ( Object . prototype . hasOwnProperty . call ( obj , prop ) )
2021-01-05 20:55:09 -08:00
/******/ } ) ( ) ;
/******/
/************************************************************************/
Update dependencies: c8 to 7.7.2, eslint to 7.28.0, eslint-plugin-jsdoc to 35.1.3, eslint-plugin-unicorn to 33.0.1, globby to 11.0.3, js-yaml to 4.1.0, markdown-it-texmath to 0.9.0, markdownlint-rule-helpers to 0.14.0, ts-loader to 9.2.3, typescript to 4.3.2, webpack to 5.38.1, webpack-cli to 4.7.2.
2021-06-08 22:20:13 -07:00
/******/
2021-01-05 20:55:09 -08:00
/******/ // startup
/******/ // Load entry module and return exports
Update dependencies: c8 to 7.7.2, eslint to 7.28.0, eslint-plugin-jsdoc to 35.1.3, eslint-plugin-unicorn to 33.0.1, globby to 11.0.3, js-yaml to 4.1.0, markdown-it-texmath to 0.9.0, markdownlint-rule-helpers to 0.14.0, ts-loader to 9.2.3, typescript to 4.3.2, webpack to 5.38.1, webpack-cli to 4.7.2.
2021-06-08 22:20:13 -07:00
/******/ // This entry module is referenced by other modules so it can't be inlined
2022-12-29 00:43:53 +00:00
/******/ var _ _webpack _exports _ _ = _ _webpack _require _ _ ( "./markdownlint-exports.js" ) ;
Update dependencies: c8 to 7.7.2, eslint to 7.28.0, eslint-plugin-jsdoc to 35.1.3, eslint-plugin-unicorn to 33.0.1, globby to 11.0.3, js-yaml to 4.1.0, markdown-it-texmath to 0.9.0, markdownlint-rule-helpers to 0.14.0, ts-loader to 9.2.3, typescript to 4.3.2, webpack to 5.38.1, webpack-cli to 4.7.2.
2021-06-08 22:20:13 -07:00
/******/ markdownlint = _ _webpack _exports _ _ ;
/******/
2021-01-05 20:55:09 -08:00
/******/ } ) ( )
;