Socket
Socket
Sign inDemoInstall

eslint-mdx

Package Overview
Dependencies
Maintainers
4
Versions
109
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eslint-mdx - npm Package Compare versions

Comparing version 1.9.1 to 1.10.0

lib/helpers.d.ts

11

CHANGELOG.md

@@ -6,2 +6,13 @@ # Change Log

# [1.10.0](https://github.com/mdx-js/eslint-mdx/compare/v1.9.1...v1.10.0) (2021-03-16)
### Features
* use eslint-plugin-markdown as processor! ([#283](https://github.com/mdx-js/eslint-mdx/issues/283)) ([abe30cb](https://github.com/mdx-js/eslint-mdx/commit/abe30cbfd62d89f700888053b01331bc74394bd2))
## [1.9.1](https://github.com/mdx-js/eslint-mdx/compare/v1.9.0...v1.9.1) (2021-03-11)

@@ -8,0 +19,0 @@

40

lib/cjs.js

@@ -5,3 +5,2 @@ 'use strict';

var espree = require('espree');
var tslib = require('tslib');

@@ -25,2 +24,3 @@ var path = require('path');

'babel-eslint',
'espree',
];

@@ -48,3 +48,3 @@ var JSX_TYPES = ['JSXElement', 'JSXFragment'];

}
var parsers = [espree.parse];
var parsers = [];
// try to load FALLBACK_PARSERS automatically

@@ -64,3 +64,3 @@ for (var _i = 0, FALLBACK_PARSERS_1 = FALLBACK_PARSERS; _i < FALLBACK_PARSERS_1.length; _i++) {

if (parserFn) {
parsers.unshift(parserFn);
parsers.push(parserFn);
}

@@ -449,22 +449,21 @@ }

}
catch (e) {
if (hasProperties(e, LOC_ERROR_PROPERTIES)) {
catch (err) {
if (hasProperties(err, LOC_ERROR_PROPERTIES)) {
var start = node.position.start;
/* istanbul ignore else */
if ('index' in e) {
e.index += start.offset - OFFSET;
if ('index' in err) {
err.index += start.offset - OFFSET;
}
else if ('pos' in e) {
e.pos += start.offset - OFFSET;
else if ('pos' in err) {
err.pos += start.offset - OFFSET;
}
e.column =
err.column =
/* istanbul ignore next */
e.lineNumber > 1 ? e.column : e.column + start.column - OFFSET;
e.lineNumber += start.line - 1;
throw e;
err.lineNumber > 1 ? err.column : err.column + start.column - OFFSET;
err.lineNumber += start.line - 1;
throw err;
}
return node;
}
var expression = program
.body[0].expression;
var expression = program.body[0].expression;
if (!isJsxNode(expression) || expression.children.length <= 1) {

@@ -478,14 +477,7 @@ return node;

}
var nodeStart = jsNode.start, nodeEnd = jsNode.end,
/* istanbul ignore next */
_a = jsNode.loc,
/* istanbul ignore next */
_b = _a === void 0 ? {
var nodeStart = jsNode.start, nodeEnd = jsNode.end, _a = jsNode.loc, _b = _a === void 0 ? {
start: { column: nodeStart, line: 1 },
end: { column: nodeEnd, line: 1 },
} : _a, start = _b.start, end = _b.end,
/* istanbul ignore next */
_c = jsNode.range,
/* istanbul ignore next */
range = _c === void 0 ? [nodeStart, nodeEnd] : _c;
} : _a, start = _b.start, end = _b.end, _c = jsNode.range, range = _c === void 0 ? [nodeStart, nodeEnd] : _c;
var startLine = line + start.line - 1;

@@ -492,0 +484,0 @@ var endLine = line + end.line - 1;

2

lib/cjs.min.js

@@ -1,1 +0,1 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("espree"),t=require("tslib"),r=require("path"),n=require("remark-mdx"),s=require("remark-parse"),o=require("unified");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=i(r),p=i(n),l=i(s),u=i(o),c=["@typescript-eslint/parser","@babel/eslint-parser","babel-eslint"],f=["JSXElement","JSXFragment"],m=function(e){return f.includes(e.type)},x=function(t){if(t){if("string"==typeof t&&(t=require(t)),"object"==typeof t&&(t="parseForESLint"in t&&t.parseForESLint||"parse"in t&&t.parse),"function"!=typeof t)throw new TypeError("Invalid custom parser for `eslint-mdx`: "+t);return[t]}for(var r=[e.parse],n=0,s=c;n<s.length;n++){var o=s[n];try{var i=require(o),a="parseForESLint"in i?i.parseForESLint:i.parse;a&&r.unshift(a)}catch(e){}}return r},h=function(e){var t=e.start.offset,r=e.end.offset;return{range:[t,r],loc:e,start:t,end:r}},d=function(e,t){return"object"==typeof e&&e&&t.every((function(t){return t in e}))},_=function(e,t,r){if(e&&"object"==typeof e)for(var n=0,s=Object.values(e);n<s.length;n++){var o=s[n];_(o,t,r)}if(!d(e,["loc","range"]))return e;var i=e.loc,a=i.start,p=i.end,l=e.range,u=l[0]+r,c=l[1]+r;return Object.assign(e,{start:u,end:c,range:[u,c],loc:{start:{line:t+a.line,column:a.column},end:{line:t+p.line,column:p.column}}})},v=function(e){return e&&e[e.length-1]},E="(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*"+("(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"|"+"{.*}".replace(".","[\0-￿]")+")")+")?)",g="<[A-Za-z]*[A-Za-z0-9\\.\\-]*"+E+"*\\s*>",y="<\\s*\\/[A-Za-z]*[A-Za-z0-9\\.\\-]*\\s*>",S="<[A-Za-z]*[A-Za-z0-9\\.\\-]*"+E+"*\\s*\\/?>",T="\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e",N=new RegExp("^(?:"+g+")$"),b=new RegExp("^(?:"+y+")$"),O=new RegExp("^(?:"+g+"[^<]*"+y+")$"),L=new RegExp("^(?:"+S+")$"),A=new RegExp("^(?:"+T+")$"),P=new RegExp("(\x3c!---*)([\\s\\S]*?)(-*--\x3e)"),R=new RegExp("(\x3c!---*)([\\s\\S]*?)(-*--\x3e)","g"),C=function(e){return N.test(e.trim())},J=function(e){return b.test(e.trim())},j=function(e){return A.test(e.trim())},w=function(e){return O.test(e.trim())},z=function(e){return L.test(e.trim())},F=function(){function e(e){var t=e.code,r=e.enter;this.code=t,this._enter=r}return e.prototype.combineLeftJsxNodes=function(e,r){var n,s=e[0].position.start,o=t.__assign({},v(e).position.end);return r&&(null===(n=r.position.indent)||void 0===n?void 0:n.length)>0&&(o.offset+=r.position.indent.reduce((function(e,t,r){return e+(r?t+1:0)}),0)),{type:"jsx",data:e[0].data,value:this.code.slice(s.offset,o.offset),position:{start:s,end:o}}},e.prototype.combineJsxNodes=function(e,r){var n=this,s=0,o=!1,i=[],a=e.length;return e.reduce((function(e,p,l){if("jsx"===p.type){var u=p.value;if(C(u))s++,o=!0,i.push(p);else{if(J(u))s--,i.push(p);else if(j(u)||z(u)||w(u))i.push(p);else{l||(s++,o=!0);try{var c=B.normalizeJsxNode(p,r);i.push.apply(i,Array.isArray(c)?c:[c])}catch(e){if(!s){var f=p.position.start;throw Object.assign(new SyntaxError("unknown jsx node: "+JSON.stringify(u)),{lineNumber:f.line,column:f.column,index:f.offset})}i.push(p)}}if(!s){var m=i.findIndex((function(e){return"string"==typeof e.value&&C(e.value)}));-1===m?o?e.push(n.combineLeftJsxNodes(i,r)):e.push.apply(e,i):e.push.apply(e,t.__spreadArray(t.__spreadArray([],i.slice(0,m)),[n.combineLeftJsxNodes(i.slice(m),r)])),i.length=0}}}else s?i.push(p):e.push(p);return l===a-1&&i.length>0&&e.push(n.combineLeftJsxNodes(i,r)),e}),[])},e.prototype.traverse=function(e,t){if(e){var r=e.children;if(r)for(var n=e,s=0,o=r=e.children=this.combineJsxNodes(r,n);s<o.length;s++){var i=o[s];this.traverse(i,n)}this._enter(e,t)}},e}(),X=function(e,t){return new F(t).traverse(e)},G=u.default().use(l.default).freeze(),M=G().use(p.default).freeze(),k=["body","comments","tokens"],q=["export","import","jsx"],Z=["column","lineNumber"],$=[".mdx"],I=[".md"],D={comment:!0,ecmaFeatures:{jsx:!0},ecmaVersion:(new Date).getUTCFullYear(),sourceType:"module",tokens:!0,filePath:"__placeholder__.mdx",loc:!0,range:!0},W="<$>".length,H=function(){function e(){this._options=D,this.parse=this.parse.bind(this),this.parseForESLint=this.parseForESLint.bind(this)}return e.prototype.normalizeJsxNode=function(e,r,n){void 0===n&&(n=this._options);var s=e.value;if("jsx"!==e.type||j(s))return e;if(P.exec(s)){var o=[],i=e.position.start,a=i.line,p=i.column,l=i.offset,u=e.data;Object.assign(e,{data:t.__assign(t.__assign({},u),{jsxType:"JSXElementWithHTMLComments",comments:o,inline:!!r&&"root"!==r.type}),value:s.replace(R,(function(e,t,r,n,i){var u=i+e.length,c=s.slice(0,i).split("\n"),f=s.slice(0,u).split("\n"),m="{/"+"*".repeat(t.length-2)+r+"*".repeat(n.length-2)+"/}",x=c.length-1,h=f.length-1;return o.push({fixed:m,loc:{start:{line:a+x,column:v(c).length+(x?0:p-1),offset:l+i},end:{line:a+h,column:v(f).length+(h?0:p-1),offset:l+u}},origin:e}),m}))})}return this._normalizeJsxNodes(e,n)},e.prototype.parse=function(e,t){return this.parseForESLint(e,t).ast},e.prototype.parseForESLint=function(e,r){var n=this,s=a.default.extname(r.filePath),o=$.concat(r.extensions||[]).includes(s),i=I.concat(r.markdownExtensions||[]).includes(s);if(!o&&!i)return this._eslintParse(e,r);var p=(o?M:G).parse(e);return this._ast=t.__assign(t.__assign({},h(p.position)),{type:"Program",sourceType:r.sourceType||"module",body:[],comments:[],tokens:[]}),this._services={JSXElementsWithHTMLComments:[]},o&&X(p,{code:e,enter:function(e,t){if(q.includes(e.type))for(var s=n.normalizeJsxNode(e,t,r),o=0,i=s=Array.isArray(s)?s:[s];o<i.length;o++){var a=i[o];n._nodeToAst(a,r)}}}),{ast:this._ast,services:this._services}},e.prototype._eslintParse=function(e,t){var r,n;this._parsers&&t.parser===this._options.parser||(this._parsers=x(t.parser)),t.filePath&&this._options!==t&&Object.assign(this._options,t);for(var s=0,o=this._parsers;s<o.length;s++){var i=o[s];try{r=i(e,this._options);break}catch(e){n||(n=e)}}if(!r&&n)throw n;return"ast"in r&&r.ast?r:{ast:r}},e.prototype._normalizeJsxNodes=function(e,t){var r,n=e.value;try{r=this._eslintParse("<$>"+n+"</$>",t).ast}catch(t){if(d(t,Z)){var s=e.position.start;throw"index"in t?t.index+=s.offset-W:"pos"in t&&(t.pos+=s.offset-W),t.column=t.lineNumber>1?t.column:t.column+s.column-W,t.lineNumber+=s.line-1,t}return e}var o=r.body[0].expression;if(!m(o)||o.children.length<=1)return e;var i=e.position.start,a=i.line,p=i.offset,l=e.data;return o.children.reduce((function(e,t){if(!m(t))return e;var r=t.start,s=t.end,o=t.loc,i=void 0===o?{start:{column:r,line:1},end:{column:s,line:1}}:o,u=i.start,c=i.end,f=t.range,x=void 0===f?[r,s]:f,h=a+u.line-1,d=a+c.line-1,_=x[0]-W,v=x[1]-W;return e.push({type:"jsx",data:e.length>0?null:l,value:n.slice(_,v),position:{start:{line:h,column:a===h?u.column-W:u.column,offset:p+_},end:{line:d,column:a===h?c.column-W:c.column,offset:p+v}}}),e}),[])},e.prototype._nodeToAst=function(e,t){var r;e.data&&"JSXElementWithHTMLComments"===e.data.jsxType&&this._services.JSXElementsWithHTMLComments.push(e);var n=e.value,s=h(e.position),o=s.loc,i=s.start,a=s.end;if(j(n)){var p=P.exec(n)[2];this._ast.comments.push({type:"Block",value:p,loc:o,range:[i,a]})}else{var l,u=o.start.line-1;try{l=this._eslintParse(n,t).ast}catch(e){throw d(e,Z)&&(e.index+=i,e.column=e.lineNumber>1?e.column:e.column+o.start.column,e.lineNumber+=u),e}for(var c=i-l.range[0],f=0,m=k;f<m.length;f++){var x=m[f];(r=this._ast[x]).push.apply(r,l[x].map((function(e){return _(e,u,c)})))}}},e}(),B=new H,U=B.parse,Y=B.parseForESLint;exports.AST_PROPS=k,exports.CLOSE_TAG_REGEX=b,exports.COMMENT_CONTENT_REGEX=P,exports.COMMENT_CONTENT_REGEX_GLOBAL=R,exports.COMMENT_REGEX=A,exports.DEFAULT_EXTENSIONS=$,exports.DEFAULT_PARSER_OPTIONS=D,exports.ES_NODE_TYPES=q,exports.FALLBACK_PARSERS=c,exports.JSX_TYPES=f,exports.LOC_ERROR_PROPERTIES=Z,exports.MARKDOWN_EXTENSIONS=I,exports.OPEN_CLOSE_TAG_REGEX=O,exports.OPEN_TAG_REGEX=N,exports.Parser=H,exports.SELF_CLOSING_TAG_REGEX=L,exports.Traverse=F,exports.closeTag=y,exports.comment=T,exports.commentClose="(-*--\x3e)",exports.commentContent="(\x3c!---*)([\\s\\S]*?)(-*--\x3e)",exports.commentOpen="(\x3c!---*)",exports.first=function(e){return e&&e[0]},exports.hasProperties=d,exports.isCloseTag=J,exports.isComment=j,exports.isJsxNode=m,exports.isOpenCloseTag=w,exports.isOpenTag=C,exports.isSelfClosingTag=z,exports.last=v,exports.mdProcessor=G,exports.mdxProcessor=M,exports.normalizeParser=x,exports.normalizePosition=h,exports.openTag=g,exports.parse=U,exports.parseForESLint=Y,exports.parser=B,exports.restoreNodeLocation=_,exports.selfClosingTag=S,exports.traverse=X;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib"),t=require("path"),r=require("remark-mdx"),n=require("remark-parse"),s=require("unified");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=o(t),a=o(r),p=o(n),l=o(s),u=["@typescript-eslint/parser","@babel/eslint-parser","babel-eslint","espree"],c=["JSXElement","JSXFragment"],f=function(e){return c.includes(e.type)},m=function(e){if(e){if("string"==typeof e&&(e=require(e)),"object"==typeof e&&(e="parseForESLint"in e&&e.parseForESLint||"parse"in e&&e.parse),"function"!=typeof e)throw new TypeError("Invalid custom parser for `eslint-mdx`: "+e);return[e]}for(var t=[],r=0,n=u;r<n.length;r++){var s=n[r];try{var o=require(s),i="parseForESLint"in o?o.parseForESLint:o.parse;i&&t.push(i)}catch(e){}}return t},x=function(e){var t=e.start.offset,r=e.end.offset;return{range:[t,r],loc:e,start:t,end:r}},h=function(e,t){return"object"==typeof e&&e&&t.every((function(t){return t in e}))},d=function(e,t,r){if(e&&"object"==typeof e)for(var n=0,s=Object.values(e);n<s.length;n++){var o=s[n];d(o,t,r)}if(!h(e,["loc","range"]))return e;var i=e.loc,a=i.start,p=i.end,l=e.range,u=l[0]+r,c=l[1]+r;return Object.assign(e,{start:u,end:c,range:[u,c],loc:{start:{line:t+a.line,column:a.column},end:{line:t+p.line,column:p.column}}})},_=function(e){return e&&e[e.length-1]},v="(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*"+("(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"|"+"{.*}".replace(".","[\0-￿]")+")")+")?)",E="<[A-Za-z]*[A-Za-z0-9\\.\\-]*"+v+"*\\s*>",g="<\\s*\\/[A-Za-z]*[A-Za-z0-9\\.\\-]*\\s*>",y="<[A-Za-z]*[A-Za-z0-9\\.\\-]*"+v+"*\\s*\\/?>",S="\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e",T=new RegExp("^(?:"+E+")$"),N=new RegExp("^(?:"+g+")$"),b=new RegExp("^(?:"+E+"[^<]*"+g+")$"),O=new RegExp("^(?:"+y+")$"),L=new RegExp("^(?:"+S+")$"),A=new RegExp("(\x3c!---*)([\\s\\S]*?)(-*--\x3e)"),P=new RegExp("(\x3c!---*)([\\s\\S]*?)(-*--\x3e)","g"),R=function(e){return T.test(e.trim())},C=function(e){return N.test(e.trim())},J=function(e){return L.test(e.trim())},j=function(e){return b.test(e.trim())},w=function(e){return O.test(e.trim())},z=function(){function t(e){var t=e.code,r=e.enter;this.code=t,this._enter=r}return t.prototype.combineLeftJsxNodes=function(t,r){var n,s=t[0].position.start,o=e.__assign({},_(t).position.end);return r&&(null===(n=r.position.indent)||void 0===n?void 0:n.length)>0&&(o.offset+=r.position.indent.reduce((function(e,t,r){return e+(r?t+1:0)}),0)),{type:"jsx",data:t[0].data,value:this.code.slice(s.offset,o.offset),position:{start:s,end:o}}},t.prototype.combineJsxNodes=function(t,r){var n=this,s=0,o=!1,i=[],a=t.length;return t.reduce((function(t,p,l){if("jsx"===p.type){var u=p.value;if(R(u))s++,o=!0,i.push(p);else{if(C(u))s--,i.push(p);else if(J(u)||w(u)||j(u))i.push(p);else{l||(s++,o=!0);try{var c=H.normalizeJsxNode(p,r);i.push.apply(i,Array.isArray(c)?c:[c])}catch(e){if(!s){var f=p.position.start;throw Object.assign(new SyntaxError("unknown jsx node: "+JSON.stringify(u)),{lineNumber:f.line,column:f.column,index:f.offset})}i.push(p)}}if(!s){var m=i.findIndex((function(e){return"string"==typeof e.value&&R(e.value)}));-1===m?o?t.push(n.combineLeftJsxNodes(i,r)):t.push.apply(t,i):t.push.apply(t,e.__spreadArray(e.__spreadArray([],i.slice(0,m)),[n.combineLeftJsxNodes(i.slice(m),r)])),i.length=0}}}else s?i.push(p):t.push(p);return l===a-1&&i.length>0&&t.push(n.combineLeftJsxNodes(i,r)),t}),[])},t.prototype.traverse=function(e,t){if(e){var r=e.children;if(r)for(var n=e,s=0,o=r=e.children=this.combineJsxNodes(r,n);s<o.length;s++){var i=o[s];this.traverse(i,n)}this._enter(e,t)}},t}(),F=function(e,t){return new z(t).traverse(e)},X=l.default().use(p.default).freeze(),G=X().use(a.default).freeze(),M=["body","comments","tokens"],k=["export","import","jsx"],Z=["column","lineNumber"],$=[".mdx"],q=[".md"],I={comment:!0,ecmaFeatures:{jsx:!0},ecmaVersion:(new Date).getUTCFullYear(),sourceType:"module",tokens:!0,filePath:"__placeholder__.mdx",loc:!0,range:!0},D="<$>".length,W=function(){function t(){this._options=I,this.parse=this.parse.bind(this),this.parseForESLint=this.parseForESLint.bind(this)}return t.prototype.normalizeJsxNode=function(t,r,n){void 0===n&&(n=this._options);var s=t.value;if("jsx"!==t.type||J(s))return t;if(A.exec(s)){var o=[],i=t.position.start,a=i.line,p=i.column,l=i.offset,u=t.data;Object.assign(t,{data:e.__assign(e.__assign({},u),{jsxType:"JSXElementWithHTMLComments",comments:o,inline:!!r&&"root"!==r.type}),value:s.replace(P,(function(e,t,r,n,i){var u=i+e.length,c=s.slice(0,i).split("\n"),f=s.slice(0,u).split("\n"),m="{/"+"*".repeat(t.length-2)+r+"*".repeat(n.length-2)+"/}",x=c.length-1,h=f.length-1;return o.push({fixed:m,loc:{start:{line:a+x,column:_(c).length+(x?0:p-1),offset:l+i},end:{line:a+h,column:_(f).length+(h?0:p-1),offset:l+u}},origin:e}),m}))})}return this._normalizeJsxNodes(t,n)},t.prototype.parse=function(e,t){return this.parseForESLint(e,t).ast},t.prototype.parseForESLint=function(t,r){var n=this,s=i.default.extname(r.filePath),o=$.concat(r.extensions||[]).includes(s),a=q.concat(r.markdownExtensions||[]).includes(s);if(!o&&!a)return this._eslintParse(t,r);var p=(o?G:X).parse(t);return this._ast=e.__assign(e.__assign({},x(p.position)),{type:"Program",sourceType:r.sourceType||"module",body:[],comments:[],tokens:[]}),this._services={JSXElementsWithHTMLComments:[]},o&&F(p,{code:t,enter:function(e,t){if(k.includes(e.type))for(var s=n.normalizeJsxNode(e,t,r),o=0,i=s=Array.isArray(s)?s:[s];o<i.length;o++){var a=i[o];n._nodeToAst(a,r)}}}),{ast:this._ast,services:this._services}},t.prototype._eslintParse=function(e,t){var r,n;this._parsers&&t.parser===this._options.parser||(this._parsers=m(t.parser)),t.filePath&&this._options!==t&&Object.assign(this._options,t);for(var s=0,o=this._parsers;s<o.length;s++){var i=o[s];try{r=i(e,this._options);break}catch(e){n||(n=e)}}if(!r&&n)throw n;return"ast"in r&&r.ast?r:{ast:r}},t.prototype._normalizeJsxNodes=function(e,t){var r,n=e.value;try{r=this._eslintParse("<$>"+n+"</$>",t).ast}catch(t){if(h(t,Z)){var s=e.position.start;throw"index"in t?t.index+=s.offset-D:"pos"in t&&(t.pos+=s.offset-D),t.column=t.lineNumber>1?t.column:t.column+s.column-D,t.lineNumber+=s.line-1,t}return e}var o=r.body[0].expression;if(!f(o)||o.children.length<=1)return e;var i=e.position.start,a=i.line,p=i.offset,l=e.data;return o.children.reduce((function(e,t){if(!f(t))return e;var r=t.start,s=t.end,o=t.loc,i=void 0===o?{start:{column:r,line:1},end:{column:s,line:1}}:o,u=i.start,c=i.end,m=t.range,x=void 0===m?[r,s]:m,h=a+u.line-1,d=a+c.line-1,_=x[0]-D,v=x[1]-D;return e.push({type:"jsx",data:e.length>0?null:l,value:n.slice(_,v),position:{start:{line:h,column:a===h?u.column-D:u.column,offset:p+_},end:{line:d,column:a===h?c.column-D:c.column,offset:p+v}}}),e}),[])},t.prototype._nodeToAst=function(e,t){var r;e.data&&"JSXElementWithHTMLComments"===e.data.jsxType&&this._services.JSXElementsWithHTMLComments.push(e);var n=e.value,s=x(e.position),o=s.loc,i=s.start,a=s.end;if(J(n)){var p=A.exec(n)[2];this._ast.comments.push({type:"Block",value:p,loc:o,range:[i,a]})}else{var l,u=o.start.line-1;try{l=this._eslintParse(n,t).ast}catch(e){throw h(e,Z)&&(e.index+=i,e.column=e.lineNumber>1?e.column:e.column+o.start.column,e.lineNumber+=u),e}for(var c=i-l.range[0],f=0,m=M;f<m.length;f++){var _=m[f];(r=this._ast[_]).push.apply(r,l[_].map((function(e){return d(e,u,c)})))}}},t}(),H=new W,B=H.parse,U=H.parseForESLint;exports.AST_PROPS=M,exports.CLOSE_TAG_REGEX=N,exports.COMMENT_CONTENT_REGEX=A,exports.COMMENT_CONTENT_REGEX_GLOBAL=P,exports.COMMENT_REGEX=L,exports.DEFAULT_EXTENSIONS=$,exports.DEFAULT_PARSER_OPTIONS=I,exports.ES_NODE_TYPES=k,exports.FALLBACK_PARSERS=u,exports.JSX_TYPES=c,exports.LOC_ERROR_PROPERTIES=Z,exports.MARKDOWN_EXTENSIONS=q,exports.OPEN_CLOSE_TAG_REGEX=b,exports.OPEN_TAG_REGEX=T,exports.Parser=W,exports.SELF_CLOSING_TAG_REGEX=O,exports.Traverse=z,exports.closeTag=g,exports.comment=S,exports.commentClose="(-*--\x3e)",exports.commentContent="(\x3c!---*)([\\s\\S]*?)(-*--\x3e)",exports.commentOpen="(\x3c!---*)",exports.first=function(e){return e&&e[0]},exports.hasProperties=h,exports.isCloseTag=C,exports.isComment=J,exports.isJsxNode=f,exports.isOpenCloseTag=j,exports.isOpenTag=R,exports.isSelfClosingTag=w,exports.last=_,exports.mdProcessor=X,exports.mdxProcessor=G,exports.normalizeParser=m,exports.normalizePosition=x,exports.openTag=E,exports.parse=B,exports.parseForESLint=U,exports.parser=H,exports.restoreNodeLocation=d,exports.selfClosingTag=y,exports.traverse=F;

@@ -1,2 +0,1 @@

import { parse as parse$1 } from 'espree';
import path from 'path';

@@ -12,2 +11,3 @@ import remarkMdx from 'remark-mdx';

'babel-eslint',
'espree',
];

@@ -33,3 +33,3 @@ const JSX_TYPES = ['JSXElement', 'JSXFragment'];

}
const parsers = [parse$1];
const parsers = [];
// try to load FALLBACK_PARSERS automatically

@@ -48,3 +48,3 @@ for (const fallback of FALLBACK_PARSERS) {

if (parserFn) {
parsers.unshift(parserFn);
parsers.push(parserFn);
}

@@ -414,22 +414,21 @@ }

}
catch (e) {
if (hasProperties(e, LOC_ERROR_PROPERTIES)) {
catch (err) {
if (hasProperties(err, LOC_ERROR_PROPERTIES)) {
const { position: { start }, } = node;
/* istanbul ignore else */
if ('index' in e) {
e.index += start.offset - OFFSET;
if ('index' in err) {
err.index += start.offset - OFFSET;
}
else if ('pos' in e) {
e.pos += start.offset - OFFSET;
else if ('pos' in err) {
err.pos += start.offset - OFFSET;
}
e.column =
err.column =
/* istanbul ignore next */
e.lineNumber > 1 ? e.column : e.column + start.column - OFFSET;
e.lineNumber += start.line - 1;
throw e;
err.lineNumber > 1 ? err.column : err.column + start.column - OFFSET;
err.lineNumber += start.line - 1;
throw err;
}
return node;
}
const { expression } = program
.body[0];
const { expression } = program.body[0];
if (!isJsxNode(expression) || expression.children.length <= 1) {

@@ -443,10 +442,7 @@ return node;

}
const { start: nodeStart, end: nodeEnd,
/* istanbul ignore next */
loc: { start, end } = {
const { start: nodeStart, end: nodeEnd, loc: { start, end } = {
start: { column: nodeStart, line: 1 },
end: { column: nodeEnd, line: 1 },
},
/* istanbul ignore next */
range = [nodeStart, nodeEnd], } = jsNode;
}, range = [nodeStart, nodeEnd], } = jsNode;
const startLine = line + start.line - 1;

@@ -453,0 +449,0 @@ const endLine = line + end.line - 1;

@@ -1,1 +0,1 @@

import{parse as e}from"espree";import t from"path";import s from"remark-mdx";import n from"remark-parse";import o from"unified";const r=["@typescript-eslint/parser","@babel/eslint-parser","babel-eslint"],i=["JSXElement","JSXFragment"],a=e=>i.includes(e.type),c=t=>{if(t){if("string"==typeof t&&(t=require(t)),"object"==typeof t&&(t="parseForESLint"in t&&t.parseForESLint||"parse"in t&&t.parse),"function"!=typeof t)throw new TypeError(`Invalid custom parser for \`eslint-mdx\`: ${t}`);return[t]}const s=[e];for(const e of r)try{const t=require(e),n="parseForESLint"in t?t.parseForESLint:t.parse;n&&s.unshift(n)}catch(e){}return s},l=e=>{const t=e.start.offset,s=e.end.offset;return{range:[t,s],loc:e,start:t,end:s}},p=(e,t)=>"object"==typeof e&&e&&t.every((t=>t in e)),u=(e,t,s)=>{if(e&&"object"==typeof e)for(const n of Object.values(e))u(n,t,s);if(!p(e,["loc","range"]))return e;const{loc:{start:n,end:o},range:r}=e,i=r[0]+s,a=r[1]+s;return Object.assign(e,{start:i,end:a,range:[i,a],loc:{start:{line:t+n.line,column:n.column},end:{line:t+o.line,column:o.column}}})},m=e=>e&&e[0],h=e=>e&&e[e.length-1],f="(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*"+("(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"|"+"{.*}".replace(".","[\0-￿]")+")")+")?)",d="<[A-Za-z]*[A-Za-z0-9\\.\\-]*"+f+"*\\s*>",x="<\\s*\\/[A-Za-z]*[A-Za-z0-9\\.\\-]*\\s*>",g="<[A-Za-z]*[A-Za-z0-9\\.\\-]*"+f+"*\\s*\\/?>",y="\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e",b="(\x3c!---*)",_="(-*--\x3e)",v="(\x3c!---*)([\\s\\S]*?)(-*--\x3e)",E=new RegExp(`^(?:${d})$`),j=new RegExp(`^(?:${x})$`),S=new RegExp(`^(?:${d+"[^<]*"+x})$`),w=new RegExp(`^(?:${g})$`),J=new RegExp(`^(?:${y})$`),N=new RegExp("(\x3c!---*)([\\s\\S]*?)(-*--\x3e)"),$=new RegExp("(\x3c!---*)([\\s\\S]*?)(-*--\x3e)","g"),L=e=>E.test(e.trim()),z=e=>j.test(e.trim()),A=e=>J.test(e.trim()),T=e=>S.test(e.trim()),F=e=>w.test(e.trim());class O{constructor({code:e,enter:t}){this.code=e,this._enter=t}combineLeftJsxNodes(e,t){var s;const n=e[0].position.start,o=Object.assign({},h(e).position.end);return t&&(null===(s=t.position.indent)||void 0===s?void 0:s.length)>0&&(o.offset+=t.position.indent.reduce(((e,t,s)=>e+(s?t+1:0)),0)),{type:"jsx",data:e[0].data,value:this.code.slice(n.offset,o.offset),position:{start:n,end:o}}}combineJsxNodes(e,t){let s=0,n=!1;const o=[],{length:r}=e;return e.reduce(((e,i,a)=>{if("jsx"===i.type){const r=i.value;if(L(r))s++,n=!0,o.push(i);else{if(z(r))s--,o.push(i);else if(A(r)||F(r)||T(r))o.push(i);else{a||(s++,n=!0);try{const e=B.normalizeJsxNode(i,t);o.push(...Array.isArray(e)?e:[e])}catch(e){if(!s){const{start:e}=i.position;throw Object.assign(new SyntaxError("unknown jsx node: "+JSON.stringify(r)),{lineNumber:e.line,column:e.column,index:e.offset})}o.push(i)}}if(!s){const s=o.findIndex((e=>"string"==typeof e.value&&L(e.value)));-1===s?n?e.push(this.combineLeftJsxNodes(o,t)):e.push(...o):e.push(...o.slice(0,s),this.combineLeftJsxNodes(o.slice(s),t)),o.length=0}}}else s?o.push(i):e.push(i);return a===r-1&&o.length>0&&e.push(this.combineLeftJsxNodes(o,t)),e}),[])}traverse(e,t){if(!e)return;let s=e.children;if(s){const t=e;s=e.children=this.combineJsxNodes(s,t);for(const e of s)this.traverse(e,t)}this._enter(e,t)}}const k=(e,t)=>new O(t).traverse(e),P=o().use(n).freeze(),Z=P().use(s).freeze(),R=["body","comments","tokens"],X=["export","import","jsx"],C=["column","lineNumber"],H=[".mdx"],M=[".md"],W={comment:!0,ecmaFeatures:{jsx:!0},ecmaVersion:(new Date).getUTCFullYear(),sourceType:"module",tokens:!0,filePath:"__placeholder__.mdx",loc:!0,range:!0},q="<$>".length;class I{constructor(){this._options=W,this.parse=this.parse.bind(this),this.parseForESLint=this.parseForESLint.bind(this)}normalizeJsxNode(e,t,s=this._options){const n=e.value;if("jsx"!==e.type||A(n))return e;if(N.exec(n)){const s=[],{position:{start:{line:o,column:r,offset:i}},data:a}=e;Object.assign(e,{data:Object.assign(Object.assign({},a),{jsxType:"JSXElementWithHTMLComments",comments:s,inline:!!t&&"root"!==t.type}),value:n.replace($,((e,t,a,c,l)=>{const p=l+e.length,u=n.slice(0,l).split("\n"),m=n.slice(0,p).split("\n"),f=`{/${"*".repeat(t.length-2)}${a}${"*".repeat(c.length-2)}/}`,d=u.length-1,x=m.length-1;return s.push({fixed:f,loc:{start:{line:o+d,column:h(u).length+(d?0:r-1),offset:i+l},end:{line:o+x,column:h(m).length+(x?0:r-1),offset:i+p}},origin:e}),f}))})}return this._normalizeJsxNodes(e,s)}parse(e,t){return this.parseForESLint(e,t).ast}parseForESLint(e,s){const n=t.extname(s.filePath),o=H.concat(s.extensions||[]).includes(n),r=M.concat(s.markdownExtensions||[]).includes(n);if(!o&&!r)return this._eslintParse(e,s);const i=(o?Z:P).parse(e);return this._ast=Object.assign(Object.assign({},l(i.position)),{type:"Program",sourceType:s.sourceType||"module",body:[],comments:[],tokens:[]}),this._services={JSXElementsWithHTMLComments:[]},o&&k(i,{code:e,enter:(e,t)=>{if(!X.includes(e.type))return;let n=this.normalizeJsxNode(e,t,s);n=Array.isArray(n)?n:[n];for(const e of n)this._nodeToAst(e,s)}}),{ast:this._ast,services:this._services}}_eslintParse(e,t){let s,n;this._parsers&&t.parser===this._options.parser||(this._parsers=c(t.parser)),t.filePath&&this._options!==t&&Object.assign(this._options,t);for(const t of this._parsers)try{s=t(e,this._options);break}catch(e){n||(n=e)}if(!s&&n)throw n;return"ast"in s&&s.ast?s:{ast:s}}_normalizeJsxNodes(e,t){const s=e.value;let n;try{n=this._eslintParse(`<$>${s}</$>`,t).ast}catch(t){if(p(t,C)){const{position:{start:s}}=e;throw"index"in t?t.index+=s.offset-q:"pos"in t&&(t.pos+=s.offset-q),t.column=t.lineNumber>1?t.column:t.column+s.column-q,t.lineNumber+=s.line-1,t}return e}const{expression:o}=n.body[0];if(!a(o)||o.children.length<=1)return e;const{position:{start:{line:r,offset:i}},data:c}=e;return o.children.reduce(((e,t)=>{if(!a(t))return e;const{start:n,end:o,loc:{start:l,end:p}={start:{column:n,line:1},end:{column:o,line:1}},range:u=[n,o]}=t,m=r+l.line-1,h=r+p.line-1,f=u[0]-q,d=u[1]-q;return e.push({type:"jsx",data:e.length>0?null:c,value:s.slice(f,d),position:{start:{line:m,column:r===m?l.column-q:l.column,offset:i+f},end:{line:h,column:r===m?p.column-q:p.column,offset:i+d}}}),e}),[])}_nodeToAst(e,t){e.data&&"JSXElementWithHTMLComments"===e.data.jsxType&&this._services.JSXElementsWithHTMLComments.push(e);const s=e.value,{loc:n,start:o,end:r}=l(e.position);if(A(s)){const e=N.exec(s)[2];return void this._ast.comments.push({type:"Block",value:e,loc:n,range:[o,r]})}const i=n.start.line-1;let a;try{a=this._eslintParse(s,t).ast}catch(e){throw p(e,C)&&(e.index+=o,e.column=e.lineNumber>1?e.column:e.column+n.start.column,e.lineNumber+=i),e}const c=o-a.range[0];for(const e of R)this._ast[e].push(...a[e].map((e=>u(e,i,c))))}}const B=new I,{parse:D,parseForESLint:U}=B;export{R as AST_PROPS,j as CLOSE_TAG_REGEX,N as COMMENT_CONTENT_REGEX,$ as COMMENT_CONTENT_REGEX_GLOBAL,J as COMMENT_REGEX,H as DEFAULT_EXTENSIONS,W as DEFAULT_PARSER_OPTIONS,X as ES_NODE_TYPES,r as FALLBACK_PARSERS,i as JSX_TYPES,C as LOC_ERROR_PROPERTIES,M as MARKDOWN_EXTENSIONS,S as OPEN_CLOSE_TAG_REGEX,E as OPEN_TAG_REGEX,I as Parser,w as SELF_CLOSING_TAG_REGEX,O as Traverse,x as closeTag,y as comment,_ as commentClose,v as commentContent,b as commentOpen,m as first,p as hasProperties,z as isCloseTag,A as isComment,a as isJsxNode,T as isOpenCloseTag,L as isOpenTag,F as isSelfClosingTag,h as last,P as mdProcessor,Z as mdxProcessor,c as normalizeParser,l as normalizePosition,d as openTag,D as parse,U as parseForESLint,B as parser,u as restoreNodeLocation,g as selfClosingTag,k as traverse};
import e from"path";import t from"remark-mdx";import s from"remark-parse";import n from"unified";const o=["@typescript-eslint/parser","@babel/eslint-parser","babel-eslint","espree"],r=["JSXElement","JSXFragment"],i=e=>r.includes(e.type),a=e=>{if(e){if("string"==typeof e&&(e=require(e)),"object"==typeof e&&(e="parseForESLint"in e&&e.parseForESLint||"parse"in e&&e.parse),"function"!=typeof e)throw new TypeError(`Invalid custom parser for \`eslint-mdx\`: ${e}`);return[e]}const t=[];for(const e of o)try{const s=require(e),n="parseForESLint"in s?s.parseForESLint:s.parse;n&&t.push(n)}catch(e){}return t},c=e=>{const t=e.start.offset,s=e.end.offset;return{range:[t,s],loc:e,start:t,end:s}},l=(e,t)=>"object"==typeof e&&e&&t.every((t=>t in e)),p=(e,t,s)=>{if(e&&"object"==typeof e)for(const n of Object.values(e))p(n,t,s);if(!l(e,["loc","range"]))return e;const{loc:{start:n,end:o},range:r}=e,i=r[0]+s,a=r[1]+s;return Object.assign(e,{start:i,end:a,range:[i,a],loc:{start:{line:t+n.line,column:n.column},end:{line:t+o.line,column:o.column}}})},u=e=>e&&e[0],m=e=>e&&e[e.length-1],h="(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*"+("(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"|"+"{.*}".replace(".","[\0-￿]")+")")+")?)",f="<[A-Za-z]*[A-Za-z0-9\\.\\-]*"+h+"*\\s*>",d="<\\s*\\/[A-Za-z]*[A-Za-z0-9\\.\\-]*\\s*>",x="<[A-Za-z]*[A-Za-z0-9\\.\\-]*"+h+"*\\s*\\/?>",g="\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e",y="(\x3c!---*)",b="(-*--\x3e)",_="(\x3c!---*)([\\s\\S]*?)(-*--\x3e)",v=new RegExp(`^(?:${f})$`),E=new RegExp(`^(?:${d})$`),j=new RegExp(`^(?:${f+"[^<]*"+d})$`),S=new RegExp(`^(?:${x})$`),w=new RegExp(`^(?:${g})$`),J=new RegExp("(\x3c!---*)([\\s\\S]*?)(-*--\x3e)"),N=new RegExp("(\x3c!---*)([\\s\\S]*?)(-*--\x3e)","g"),$=e=>v.test(e.trim()),L=e=>E.test(e.trim()),z=e=>w.test(e.trim()),A=e=>j.test(e.trim()),T=e=>S.test(e.trim());class F{constructor({code:e,enter:t}){this.code=e,this._enter=t}combineLeftJsxNodes(e,t){var s;const n=e[0].position.start,o=Object.assign({},m(e).position.end);return t&&(null===(s=t.position.indent)||void 0===s?void 0:s.length)>0&&(o.offset+=t.position.indent.reduce(((e,t,s)=>e+(s?t+1:0)),0)),{type:"jsx",data:e[0].data,value:this.code.slice(n.offset,o.offset),position:{start:n,end:o}}}combineJsxNodes(e,t){let s=0,n=!1;const o=[],{length:r}=e;return e.reduce(((e,i,a)=>{if("jsx"===i.type){const r=i.value;if($(r))s++,n=!0,o.push(i);else{if(L(r))s--,o.push(i);else if(z(r)||T(r)||A(r))o.push(i);else{a||(s++,n=!0);try{const e=I.normalizeJsxNode(i,t);o.push(...Array.isArray(e)?e:[e])}catch(e){if(!s){const{start:e}=i.position;throw Object.assign(new SyntaxError("unknown jsx node: "+JSON.stringify(r)),{lineNumber:e.line,column:e.column,index:e.offset})}o.push(i)}}if(!s){const s=o.findIndex((e=>"string"==typeof e.value&&$(e.value)));-1===s?n?e.push(this.combineLeftJsxNodes(o,t)):e.push(...o):e.push(...o.slice(0,s),this.combineLeftJsxNodes(o.slice(s),t)),o.length=0}}}else s?o.push(i):e.push(i);return a===r-1&&o.length>0&&e.push(this.combineLeftJsxNodes(o,t)),e}),[])}traverse(e,t){if(!e)return;let s=e.children;if(s){const t=e;s=e.children=this.combineJsxNodes(s,t);for(const e of s)this.traverse(e,t)}this._enter(e,t)}}const O=(e,t)=>new F(t).traverse(e),k=n().use(s).freeze(),P=k().use(t).freeze(),Z=["body","comments","tokens"],R=["export","import","jsx"],X=["column","lineNumber"],C=[".mdx"],H=[".md"],M={comment:!0,ecmaFeatures:{jsx:!0},ecmaVersion:(new Date).getUTCFullYear(),sourceType:"module",tokens:!0,filePath:"__placeholder__.mdx",loc:!0,range:!0},W="<$>".length;class q{constructor(){this._options=M,this.parse=this.parse.bind(this),this.parseForESLint=this.parseForESLint.bind(this)}normalizeJsxNode(e,t,s=this._options){const n=e.value;if("jsx"!==e.type||z(n))return e;if(J.exec(n)){const s=[],{position:{start:{line:o,column:r,offset:i}},data:a}=e;Object.assign(e,{data:Object.assign(Object.assign({},a),{jsxType:"JSXElementWithHTMLComments",comments:s,inline:!!t&&"root"!==t.type}),value:n.replace(N,((e,t,a,c,l)=>{const p=l+e.length,u=n.slice(0,l).split("\n"),h=n.slice(0,p).split("\n"),f=`{/${"*".repeat(t.length-2)}${a}${"*".repeat(c.length-2)}/}`,d=u.length-1,x=h.length-1;return s.push({fixed:f,loc:{start:{line:o+d,column:m(u).length+(d?0:r-1),offset:i+l},end:{line:o+x,column:m(h).length+(x?0:r-1),offset:i+p}},origin:e}),f}))})}return this._normalizeJsxNodes(e,s)}parse(e,t){return this.parseForESLint(e,t).ast}parseForESLint(t,s){const n=e.extname(s.filePath),o=C.concat(s.extensions||[]).includes(n),r=H.concat(s.markdownExtensions||[]).includes(n);if(!o&&!r)return this._eslintParse(t,s);const i=(o?P:k).parse(t);return this._ast=Object.assign(Object.assign({},c(i.position)),{type:"Program",sourceType:s.sourceType||"module",body:[],comments:[],tokens:[]}),this._services={JSXElementsWithHTMLComments:[]},o&&O(i,{code:t,enter:(e,t)=>{if(!R.includes(e.type))return;let n=this.normalizeJsxNode(e,t,s);n=Array.isArray(n)?n:[n];for(const e of n)this._nodeToAst(e,s)}}),{ast:this._ast,services:this._services}}_eslintParse(e,t){let s,n;this._parsers&&t.parser===this._options.parser||(this._parsers=a(t.parser)),t.filePath&&this._options!==t&&Object.assign(this._options,t);for(const t of this._parsers)try{s=t(e,this._options);break}catch(e){n||(n=e)}if(!s&&n)throw n;return"ast"in s&&s.ast?s:{ast:s}}_normalizeJsxNodes(e,t){const s=e.value;let n;try{n=this._eslintParse(`<$>${s}</$>`,t).ast}catch(t){if(l(t,X)){const{position:{start:s}}=e;throw"index"in t?t.index+=s.offset-W:"pos"in t&&(t.pos+=s.offset-W),t.column=t.lineNumber>1?t.column:t.column+s.column-W,t.lineNumber+=s.line-1,t}return e}const{expression:o}=n.body[0];if(!i(o)||o.children.length<=1)return e;const{position:{start:{line:r,offset:a}},data:c}=e;return o.children.reduce(((e,t)=>{if(!i(t))return e;const{start:n,end:o,loc:{start:l,end:p}={start:{column:n,line:1},end:{column:o,line:1}},range:u=[n,o]}=t,m=r+l.line-1,h=r+p.line-1,f=u[0]-W,d=u[1]-W;return e.push({type:"jsx",data:e.length>0?null:c,value:s.slice(f,d),position:{start:{line:m,column:r===m?l.column-W:l.column,offset:a+f},end:{line:h,column:r===m?p.column-W:p.column,offset:a+d}}}),e}),[])}_nodeToAst(e,t){e.data&&"JSXElementWithHTMLComments"===e.data.jsxType&&this._services.JSXElementsWithHTMLComments.push(e);const s=e.value,{loc:n,start:o,end:r}=c(e.position);if(z(s)){const e=J.exec(s)[2];return void this._ast.comments.push({type:"Block",value:e,loc:n,range:[o,r]})}const i=n.start.line-1;let a;try{a=this._eslintParse(s,t).ast}catch(e){throw l(e,X)&&(e.index+=o,e.column=e.lineNumber>1?e.column:e.column+n.start.column,e.lineNumber+=i),e}const u=o-a.range[0];for(const e of Z)this._ast[e].push(...a[e].map((e=>p(e,i,u))))}}const I=new q,{parse:B,parseForESLint:D}=I;export{Z as AST_PROPS,E as CLOSE_TAG_REGEX,J as COMMENT_CONTENT_REGEX,N as COMMENT_CONTENT_REGEX_GLOBAL,w as COMMENT_REGEX,C as DEFAULT_EXTENSIONS,M as DEFAULT_PARSER_OPTIONS,R as ES_NODE_TYPES,o as FALLBACK_PARSERS,r as JSX_TYPES,X as LOC_ERROR_PROPERTIES,H as MARKDOWN_EXTENSIONS,j as OPEN_CLOSE_TAG_REGEX,v as OPEN_TAG_REGEX,q as Parser,S as SELF_CLOSING_TAG_REGEX,F as Traverse,d as closeTag,g as comment,b as commentClose,_ as commentContent,y as commentOpen,u as first,l as hasProperties,L as isCloseTag,z as isComment,i as isJsxNode,A as isOpenCloseTag,$ as isOpenTag,T as isSelfClosingTag,m as last,k as mdProcessor,P as mdxProcessor,a as normalizeParser,c as normalizePosition,f as openTag,B as parse,D as parseForESLint,I as parser,p as restoreNodeLocation,x as selfClosingTag,O as traverse};

@@ -1,2 +0,1 @@

import { parse as parse$1 } from 'espree';
import { __assign, __spreadArray } from 'tslib';

@@ -13,2 +12,3 @@ import path from 'path';

'babel-eslint',
'espree',
];

@@ -36,3 +36,3 @@ var JSX_TYPES = ['JSXElement', 'JSXFragment'];

}
var parsers = [parse$1];
var parsers = [];
// try to load FALLBACK_PARSERS automatically

@@ -52,3 +52,3 @@ for (var _i = 0, FALLBACK_PARSERS_1 = FALLBACK_PARSERS; _i < FALLBACK_PARSERS_1.length; _i++) {

if (parserFn) {
parsers.unshift(parserFn);
parsers.push(parserFn);
}

@@ -437,22 +437,21 @@ }

}
catch (e) {
if (hasProperties(e, LOC_ERROR_PROPERTIES)) {
catch (err) {
if (hasProperties(err, LOC_ERROR_PROPERTIES)) {
var start = node.position.start;
/* istanbul ignore else */
if ('index' in e) {
e.index += start.offset - OFFSET;
if ('index' in err) {
err.index += start.offset - OFFSET;
}
else if ('pos' in e) {
e.pos += start.offset - OFFSET;
else if ('pos' in err) {
err.pos += start.offset - OFFSET;
}
e.column =
err.column =
/* istanbul ignore next */
e.lineNumber > 1 ? e.column : e.column + start.column - OFFSET;
e.lineNumber += start.line - 1;
throw e;
err.lineNumber > 1 ? err.column : err.column + start.column - OFFSET;
err.lineNumber += start.line - 1;
throw err;
}
return node;
}
var expression = program
.body[0].expression;
var expression = program.body[0].expression;
if (!isJsxNode(expression) || expression.children.length <= 1) {

@@ -466,14 +465,7 @@ return node;

}
var nodeStart = jsNode.start, nodeEnd = jsNode.end,
/* istanbul ignore next */
_a = jsNode.loc,
/* istanbul ignore next */
_b = _a === void 0 ? {
var nodeStart = jsNode.start, nodeEnd = jsNode.end, _a = jsNode.loc, _b = _a === void 0 ? {
start: { column: nodeStart, line: 1 },
end: { column: nodeEnd, line: 1 },
} : _a, start = _b.start, end = _b.end,
/* istanbul ignore next */
_c = jsNode.range,
/* istanbul ignore next */
range = _c === void 0 ? [nodeStart, nodeEnd] : _c;
} : _a, start = _b.start, end = _b.end, _c = jsNode.range, range = _c === void 0 ? [nodeStart, nodeEnd] : _c;
var startLine = line + start.line - 1;

@@ -480,0 +472,0 @@ var endLine = line + end.line - 1;

@@ -1,1 +0,1 @@

import{parse as e}from"espree";import{__assign as t,__spreadArray as n}from"tslib";import r from"path";import s from"remark-mdx";import i from"remark-parse";import o from"unified";var a=["@typescript-eslint/parser","@babel/eslint-parser","babel-eslint"],u=["JSXElement","JSXFragment"],l=function(e){return u.includes(e.type)},c=function(t){if(t){if("string"==typeof t&&(t=require(t)),"object"==typeof t&&(t="parseForESLint"in t&&t.parseForESLint||"parse"in t&&t.parse),"function"!=typeof t)throw new TypeError("Invalid custom parser for `eslint-mdx`: "+t);return[t]}for(var n=[e],r=0,s=a;r<s.length;r++){var i=s[r];try{var o=require(i),u="parseForESLint"in o?o.parseForESLint:o.parse;u&&n.unshift(u)}catch(e){}}return n},p=function(e){var t=e.start.offset,n=e.end.offset;return{range:[t,n],loc:e,start:t,end:n}},f=function(e,t){return"object"==typeof e&&e&&t.every((function(t){return t in e}))},m=function(e,t,n){if(e&&"object"==typeof e)for(var r=0,s=Object.values(e);r<s.length;r++){var i=s[r];m(i,t,n)}if(!f(e,["loc","range"]))return e;var o=e.loc,a=o.start,u=o.end,l=e.range,c=l[0]+n,p=l[1]+n;return Object.assign(e,{start:c,end:p,range:[c,p],loc:{start:{line:t+a.line,column:a.column},end:{line:t+u.line,column:u.column}}})},h=function(e){return e&&e[0]},d=function(e){return e&&e[e.length-1]},v="(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*"+("(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"|"+"{.*}".replace(".","[\0-￿]")+")")+")?)",x="<[A-Za-z]*[A-Za-z0-9\\.\\-]*"+v+"*\\s*>",y="<\\s*\\/[A-Za-z]*[A-Za-z0-9\\.\\-]*\\s*>",g="<[A-Za-z]*[A-Za-z0-9\\.\\-]*"+v+"*\\s*\\/?>",_="\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e",b="(\x3c!---*)",E="(-*--\x3e)",S="(\x3c!---*)([\\s\\S]*?)(-*--\x3e)",w=new RegExp("^(?:"+x+")$"),J=new RegExp("^(?:"+y+")$"),N=new RegExp("^(?:"+x+"[^<]*"+y+")$"),j=new RegExp("^(?:"+g+")$"),L=new RegExp("^(?:"+_+")$"),z=new RegExp("(\x3c!---*)([\\s\\S]*?)(-*--\x3e)"),A=new RegExp("(\x3c!---*)([\\s\\S]*?)(-*--\x3e)","g"),T=function(e){return w.test(e.trim())},F=function(e){return J.test(e.trim())},k=function(e){return L.test(e.trim())},P=function(e){return N.test(e.trim())},Z=function(e){return j.test(e.trim())},$=function(){function e(e){var t=e.code,n=e.enter;this.code=t,this._enter=n}return e.prototype.combineLeftJsxNodes=function(e,n){var r,s=e[0].position.start,i=t({},d(e).position.end);return n&&(null===(r=n.position.indent)||void 0===r?void 0:r.length)>0&&(i.offset+=n.position.indent.reduce((function(e,t,n){return e+(n?t+1:0)}),0)),{type:"jsx",data:e[0].data,value:this.code.slice(s.offset,i.offset),position:{start:s,end:i}}},e.prototype.combineJsxNodes=function(e,t){var r=this,s=0,i=!1,o=[],a=e.length;return e.reduce((function(e,u,l){if("jsx"===u.type){var c=u.value;if(T(c))s++,i=!0,o.push(u);else{if(F(c))s--,o.push(u);else if(k(c)||Z(c)||P(c))o.push(u);else{l||(s++,i=!0);try{var p=U.normalizeJsxNode(u,t);o.push.apply(o,Array.isArray(p)?p:[p])}catch(e){if(!s){var f=u.position.start;throw Object.assign(new SyntaxError("unknown jsx node: "+JSON.stringify(c)),{lineNumber:f.line,column:f.column,index:f.offset})}o.push(u)}}if(!s){var m=o.findIndex((function(e){return"string"==typeof e.value&&T(e.value)}));-1===m?i?e.push(r.combineLeftJsxNodes(o,t)):e.push.apply(e,o):e.push.apply(e,n(n([],o.slice(0,m)),[r.combineLeftJsxNodes(o.slice(m),t)])),o.length=0}}}else s?o.push(u):e.push(u);return l===a-1&&o.length>0&&e.push(r.combineLeftJsxNodes(o,t)),e}),[])},e.prototype.traverse=function(e,t){if(e){var n=e.children;if(n)for(var r=e,s=0,i=n=e.children=this.combineJsxNodes(n,r);s<i.length;s++){var o=i[s];this.traverse(o,r)}this._enter(e,t)}},e}(),R=function(e,t){return new $(t).traverse(e)},O=o().use(i).freeze(),X=O().use(s).freeze(),C=["body","comments","tokens"],H=["export","import","jsx"],M=["column","lineNumber"],W=[".mdx"],q=[".md"],I={comment:!0,ecmaFeatures:{jsx:!0},ecmaVersion:(new Date).getUTCFullYear(),sourceType:"module",tokens:!0,filePath:"__placeholder__.mdx",loc:!0,range:!0},B="<$>".length,D=function(){function e(){this._options=I,this.parse=this.parse.bind(this),this.parseForESLint=this.parseForESLint.bind(this)}return e.prototype.normalizeJsxNode=function(e,n,r){void 0===r&&(r=this._options);var s=e.value;if("jsx"!==e.type||k(s))return e;if(z.exec(s)){var i=[],o=e.position.start,a=o.line,u=o.column,l=o.offset,c=e.data;Object.assign(e,{data:t(t({},c),{jsxType:"JSXElementWithHTMLComments",comments:i,inline:!!n&&"root"!==n.type}),value:s.replace(A,(function(e,t,n,r,o){var c=o+e.length,p=s.slice(0,o).split("\n"),f=s.slice(0,c).split("\n"),m="{/"+"*".repeat(t.length-2)+n+"*".repeat(r.length-2)+"/}",h=p.length-1,v=f.length-1;return i.push({fixed:m,loc:{start:{line:a+h,column:d(p).length+(h?0:u-1),offset:l+o},end:{line:a+v,column:d(f).length+(v?0:u-1),offset:l+c}},origin:e}),m}))})}return this._normalizeJsxNodes(e,r)},e.prototype.parse=function(e,t){return this.parseForESLint(e,t).ast},e.prototype.parseForESLint=function(e,n){var s=this,i=r.extname(n.filePath),o=W.concat(n.extensions||[]).includes(i),a=q.concat(n.markdownExtensions||[]).includes(i);if(!o&&!a)return this._eslintParse(e,n);var u=(o?X:O).parse(e);return this._ast=t(t({},p(u.position)),{type:"Program",sourceType:n.sourceType||"module",body:[],comments:[],tokens:[]}),this._services={JSXElementsWithHTMLComments:[]},o&&R(u,{code:e,enter:function(e,t){if(H.includes(e.type))for(var r=s.normalizeJsxNode(e,t,n),i=0,o=r=Array.isArray(r)?r:[r];i<o.length;i++){var a=o[i];s._nodeToAst(a,n)}}}),{ast:this._ast,services:this._services}},e.prototype._eslintParse=function(e,t){var n,r;this._parsers&&t.parser===this._options.parser||(this._parsers=c(t.parser)),t.filePath&&this._options!==t&&Object.assign(this._options,t);for(var s=0,i=this._parsers;s<i.length;s++){var o=i[s];try{n=o(e,this._options);break}catch(e){r||(r=e)}}if(!n&&r)throw r;return"ast"in n&&n.ast?n:{ast:n}},e.prototype._normalizeJsxNodes=function(e,t){var n,r=e.value;try{n=this._eslintParse("<$>"+r+"</$>",t).ast}catch(t){if(f(t,M)){var s=e.position.start;throw"index"in t?t.index+=s.offset-B:"pos"in t&&(t.pos+=s.offset-B),t.column=t.lineNumber>1?t.column:t.column+s.column-B,t.lineNumber+=s.line-1,t}return e}var i=n.body[0].expression;if(!l(i)||i.children.length<=1)return e;var o=e.position.start,a=o.line,u=o.offset,c=e.data;return i.children.reduce((function(e,t){if(!l(t))return e;var n=t.start,s=t.end,i=t.loc,o=void 0===i?{start:{column:n,line:1},end:{column:s,line:1}}:i,p=o.start,f=o.end,m=t.range,h=void 0===m?[n,s]:m,d=a+p.line-1,v=a+f.line-1,x=h[0]-B,y=h[1]-B;return e.push({type:"jsx",data:e.length>0?null:c,value:r.slice(x,y),position:{start:{line:d,column:a===d?p.column-B:p.column,offset:u+x},end:{line:v,column:a===d?f.column-B:f.column,offset:u+y}}}),e}),[])},e.prototype._nodeToAst=function(e,t){var n;e.data&&"JSXElementWithHTMLComments"===e.data.jsxType&&this._services.JSXElementsWithHTMLComments.push(e);var r=e.value,s=p(e.position),i=s.loc,o=s.start,a=s.end;if(k(r)){var u=z.exec(r)[2];this._ast.comments.push({type:"Block",value:u,loc:i,range:[o,a]})}else{var l,c=i.start.line-1;try{l=this._eslintParse(r,t).ast}catch(e){throw f(e,M)&&(e.index+=o,e.column=e.lineNumber>1?e.column:e.column+i.start.column,e.lineNumber+=c),e}for(var h=o-l.range[0],d=0,v=C;d<v.length;d++){var x=v[d];(n=this._ast[x]).push.apply(n,l[x].map((function(e){return m(e,c,h)})))}}},e}(),U=new D,V=U.parse,Y=U.parseForESLint;export{C as AST_PROPS,J as CLOSE_TAG_REGEX,z as COMMENT_CONTENT_REGEX,A as COMMENT_CONTENT_REGEX_GLOBAL,L as COMMENT_REGEX,W as DEFAULT_EXTENSIONS,I as DEFAULT_PARSER_OPTIONS,H as ES_NODE_TYPES,a as FALLBACK_PARSERS,u as JSX_TYPES,M as LOC_ERROR_PROPERTIES,q as MARKDOWN_EXTENSIONS,N as OPEN_CLOSE_TAG_REGEX,w as OPEN_TAG_REGEX,D as Parser,j as SELF_CLOSING_TAG_REGEX,$ as Traverse,y as closeTag,_ as comment,E as commentClose,S as commentContent,b as commentOpen,h as first,f as hasProperties,F as isCloseTag,k as isComment,l as isJsxNode,P as isOpenCloseTag,T as isOpenTag,Z as isSelfClosingTag,d as last,O as mdProcessor,X as mdxProcessor,c as normalizeParser,p as normalizePosition,x as openTag,V as parse,Y as parseForESLint,U as parser,m as restoreNodeLocation,g as selfClosingTag,R as traverse};
import{__assign as e,__spreadArray as t}from"tslib";import n from"path";import r from"remark-mdx";import s from"remark-parse";import i from"unified";var o=["@typescript-eslint/parser","@babel/eslint-parser","babel-eslint","espree"],a=["JSXElement","JSXFragment"],u=function(e){return a.includes(e.type)},l=function(e){if(e){if("string"==typeof e&&(e=require(e)),"object"==typeof e&&(e="parseForESLint"in e&&e.parseForESLint||"parse"in e&&e.parse),"function"!=typeof e)throw new TypeError("Invalid custom parser for `eslint-mdx`: "+e);return[e]}for(var t=[],n=0,r=o;n<r.length;n++){var s=r[n];try{var i=require(s),a="parseForESLint"in i?i.parseForESLint:i.parse;a&&t.push(a)}catch(e){}}return t},c=function(e){var t=e.start.offset,n=e.end.offset;return{range:[t,n],loc:e,start:t,end:n}},p=function(e,t){return"object"==typeof e&&e&&t.every((function(t){return t in e}))},f=function(e,t,n){if(e&&"object"==typeof e)for(var r=0,s=Object.values(e);r<s.length;r++){var i=s[r];f(i,t,n)}if(!p(e,["loc","range"]))return e;var o=e.loc,a=o.start,u=o.end,l=e.range,c=l[0]+n,m=l[1]+n;return Object.assign(e,{start:c,end:m,range:[c,m],loc:{start:{line:t+a.line,column:a.column},end:{line:t+u.line,column:u.column}}})},m=function(e){return e&&e[0]},h=function(e){return e&&e[e.length-1]},d="(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*"+("(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"|"+"{.*}".replace(".","[\0-￿]")+")")+")?)",v="<[A-Za-z]*[A-Za-z0-9\\.\\-]*"+d+"*\\s*>",x="<\\s*\\/[A-Za-z]*[A-Za-z0-9\\.\\-]*\\s*>",y="<[A-Za-z]*[A-Za-z0-9\\.\\-]*"+d+"*\\s*\\/?>",g="\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e",_="(\x3c!---*)",b="(-*--\x3e)",E="(\x3c!---*)([\\s\\S]*?)(-*--\x3e)",S=new RegExp("^(?:"+v+")$"),w=new RegExp("^(?:"+x+")$"),J=new RegExp("^(?:"+v+"[^<]*"+x+")$"),N=new RegExp("^(?:"+y+")$"),j=new RegExp("^(?:"+g+")$"),L=new RegExp("(\x3c!---*)([\\s\\S]*?)(-*--\x3e)"),z=new RegExp("(\x3c!---*)([\\s\\S]*?)(-*--\x3e)","g"),A=function(e){return S.test(e.trim())},T=function(e){return w.test(e.trim())},F=function(e){return j.test(e.trim())},k=function(e){return J.test(e.trim())},P=function(e){return N.test(e.trim())},Z=function(){function n(e){var t=e.code,n=e.enter;this.code=t,this._enter=n}return n.prototype.combineLeftJsxNodes=function(t,n){var r,s=t[0].position.start,i=e({},h(t).position.end);return n&&(null===(r=n.position.indent)||void 0===r?void 0:r.length)>0&&(i.offset+=n.position.indent.reduce((function(e,t,n){return e+(n?t+1:0)}),0)),{type:"jsx",data:t[0].data,value:this.code.slice(s.offset,i.offset),position:{start:s,end:i}}},n.prototype.combineJsxNodes=function(e,n){var r=this,s=0,i=!1,o=[],a=e.length;return e.reduce((function(e,u,l){if("jsx"===u.type){var c=u.value;if(A(c))s++,i=!0,o.push(u);else{if(T(c))s--,o.push(u);else if(F(c)||P(c)||k(c))o.push(u);else{l||(s++,i=!0);try{var p=D.normalizeJsxNode(u,n);o.push.apply(o,Array.isArray(p)?p:[p])}catch(e){if(!s){var f=u.position.start;throw Object.assign(new SyntaxError("unknown jsx node: "+JSON.stringify(c)),{lineNumber:f.line,column:f.column,index:f.offset})}o.push(u)}}if(!s){var m=o.findIndex((function(e){return"string"==typeof e.value&&A(e.value)}));-1===m?i?e.push(r.combineLeftJsxNodes(o,n)):e.push.apply(e,o):e.push.apply(e,t(t([],o.slice(0,m)),[r.combineLeftJsxNodes(o.slice(m),n)])),o.length=0}}}else s?o.push(u):e.push(u);return l===a-1&&o.length>0&&e.push(r.combineLeftJsxNodes(o,n)),e}),[])},n.prototype.traverse=function(e,t){if(e){var n=e.children;if(n)for(var r=e,s=0,i=n=e.children=this.combineJsxNodes(n,r);s<i.length;s++){var o=i[s];this.traverse(o,r)}this._enter(e,t)}},n}(),$=function(e,t){return new Z(t).traverse(e)},R=i().use(s).freeze(),O=R().use(r).freeze(),X=["body","comments","tokens"],C=["export","import","jsx"],H=["column","lineNumber"],M=[".mdx"],W=[".md"],q={comment:!0,ecmaFeatures:{jsx:!0},ecmaVersion:(new Date).getUTCFullYear(),sourceType:"module",tokens:!0,filePath:"__placeholder__.mdx",loc:!0,range:!0},I="<$>".length,B=function(){function t(){this._options=q,this.parse=this.parse.bind(this),this.parseForESLint=this.parseForESLint.bind(this)}return t.prototype.normalizeJsxNode=function(t,n,r){void 0===r&&(r=this._options);var s=t.value;if("jsx"!==t.type||F(s))return t;if(L.exec(s)){var i=[],o=t.position.start,a=o.line,u=o.column,l=o.offset,c=t.data;Object.assign(t,{data:e(e({},c),{jsxType:"JSXElementWithHTMLComments",comments:i,inline:!!n&&"root"!==n.type}),value:s.replace(z,(function(e,t,n,r,o){var c=o+e.length,p=s.slice(0,o).split("\n"),f=s.slice(0,c).split("\n"),m="{/"+"*".repeat(t.length-2)+n+"*".repeat(r.length-2)+"/}",d=p.length-1,v=f.length-1;return i.push({fixed:m,loc:{start:{line:a+d,column:h(p).length+(d?0:u-1),offset:l+o},end:{line:a+v,column:h(f).length+(v?0:u-1),offset:l+c}},origin:e}),m}))})}return this._normalizeJsxNodes(t,r)},t.prototype.parse=function(e,t){return this.parseForESLint(e,t).ast},t.prototype.parseForESLint=function(t,r){var s=this,i=n.extname(r.filePath),o=M.concat(r.extensions||[]).includes(i),a=W.concat(r.markdownExtensions||[]).includes(i);if(!o&&!a)return this._eslintParse(t,r);var u=(o?O:R).parse(t);return this._ast=e(e({},c(u.position)),{type:"Program",sourceType:r.sourceType||"module",body:[],comments:[],tokens:[]}),this._services={JSXElementsWithHTMLComments:[]},o&&$(u,{code:t,enter:function(e,t){if(C.includes(e.type))for(var n=s.normalizeJsxNode(e,t,r),i=0,o=n=Array.isArray(n)?n:[n];i<o.length;i++){var a=o[i];s._nodeToAst(a,r)}}}),{ast:this._ast,services:this._services}},t.prototype._eslintParse=function(e,t){var n,r;this._parsers&&t.parser===this._options.parser||(this._parsers=l(t.parser)),t.filePath&&this._options!==t&&Object.assign(this._options,t);for(var s=0,i=this._parsers;s<i.length;s++){var o=i[s];try{n=o(e,this._options);break}catch(e){r||(r=e)}}if(!n&&r)throw r;return"ast"in n&&n.ast?n:{ast:n}},t.prototype._normalizeJsxNodes=function(e,t){var n,r=e.value;try{n=this._eslintParse("<$>"+r+"</$>",t).ast}catch(t){if(p(t,H)){var s=e.position.start;throw"index"in t?t.index+=s.offset-I:"pos"in t&&(t.pos+=s.offset-I),t.column=t.lineNumber>1?t.column:t.column+s.column-I,t.lineNumber+=s.line-1,t}return e}var i=n.body[0].expression;if(!u(i)||i.children.length<=1)return e;var o=e.position.start,a=o.line,l=o.offset,c=e.data;return i.children.reduce((function(e,t){if(!u(t))return e;var n=t.start,s=t.end,i=t.loc,o=void 0===i?{start:{column:n,line:1},end:{column:s,line:1}}:i,p=o.start,f=o.end,m=t.range,h=void 0===m?[n,s]:m,d=a+p.line-1,v=a+f.line-1,x=h[0]-I,y=h[1]-I;return e.push({type:"jsx",data:e.length>0?null:c,value:r.slice(x,y),position:{start:{line:d,column:a===d?p.column-I:p.column,offset:l+x},end:{line:v,column:a===d?f.column-I:f.column,offset:l+y}}}),e}),[])},t.prototype._nodeToAst=function(e,t){var n;e.data&&"JSXElementWithHTMLComments"===e.data.jsxType&&this._services.JSXElementsWithHTMLComments.push(e);var r=e.value,s=c(e.position),i=s.loc,o=s.start,a=s.end;if(F(r)){var u=L.exec(r)[2];this._ast.comments.push({type:"Block",value:u,loc:i,range:[o,a]})}else{var l,m=i.start.line-1;try{l=this._eslintParse(r,t).ast}catch(e){throw p(e,H)&&(e.index+=o,e.column=e.lineNumber>1?e.column:e.column+i.start.column,e.lineNumber+=m),e}for(var h=o-l.range[0],d=0,v=X;d<v.length;d++){var x=v[d];(n=this._ast[x]).push.apply(n,l[x].map((function(e){return f(e,m,h)})))}}},t}(),D=new B,U=D.parse,V=D.parseForESLint;export{X as AST_PROPS,w as CLOSE_TAG_REGEX,L as COMMENT_CONTENT_REGEX,z as COMMENT_CONTENT_REGEX_GLOBAL,j as COMMENT_REGEX,M as DEFAULT_EXTENSIONS,q as DEFAULT_PARSER_OPTIONS,C as ES_NODE_TYPES,o as FALLBACK_PARSERS,a as JSX_TYPES,H as LOC_ERROR_PROPERTIES,W as MARKDOWN_EXTENSIONS,J as OPEN_CLOSE_TAG_REGEX,S as OPEN_TAG_REGEX,B as Parser,N as SELF_CLOSING_TAG_REGEX,Z as Traverse,x as closeTag,g as comment,b as commentClose,E as commentContent,_ as commentOpen,m as first,p as hasProperties,T as isCloseTag,F as isComment,u as isJsxNode,k as isOpenCloseTag,A as isOpenTag,P as isSelfClosingTag,h as last,R as mdProcessor,O as mdxProcessor,l as normalizeParser,c as normalizePosition,v as openTag,U as parse,V as parseForESLint,D as parser,f as restoreNodeLocation,y as selfClosingTag,$ as traverse};

@@ -1,2 +0,2 @@

export * from './helper';
export * from './helpers';
export * from './parser';

@@ -6,2 +6,1 @@ export * from './regexp';

export * from './types';
//# sourceMappingURL=index.d.ts.map

@@ -1,2 +0,2 @@

export * from './helper';
export * from './helpers';
export * from './parser';

@@ -3,0 +3,0 @@ export * from './regexp';

@@ -1,4 +0,5 @@

import { AST, Linter } from 'eslint';
import type { AST, Linter } from 'eslint';
import unified from 'unified';
import { Node, Parent, ParserOptions } from './types';
import type { Node, Parent } from 'unist';
import type { ParserOptions } from './types';
export declare const mdProcessor: unified.FrozenProcessor<unified.Settings>;

@@ -14,3 +15,3 @@ export declare const mdxProcessor: unified.FrozenProcessor<unified.Settings>;

constructor();
normalizeJsxNode(node: Node, parent?: Parent, options?: ParserOptions): import("unist").Node | import("unist").Node[];
normalizeJsxNode(node: Node, parent?: Parent, options?: ParserOptions): Node | Node[];
parse(code: string, options: ParserOptions): AST.Program;

@@ -21,2 +22,1 @@ parseForESLint(code: string, options: ParserOptions): Linter.ESLintParseResult;

export declare const parse: (code: string, options: ParserOptions) => AST.Program, parseForESLint: (code: string, options: ParserOptions) => Linter.ESLintParseResult;
//# sourceMappingURL=parser.d.ts.map

@@ -1,2 +0,1 @@

import { __assign } from "tslib";
import path from 'path';

@@ -6,13 +5,13 @@ import remarkMdx from 'remark-mdx';

import unified from 'unified';
import { hasProperties, isJsxNode, last, normalizeParser, normalizePosition, restoreNodeLocation, } from './helper';
import { hasProperties, isJsxNode, last, normalizeParser, normalizePosition, restoreNodeLocation, } from './helpers';
import { COMMENT_CONTENT_REGEX, COMMENT_CONTENT_REGEX_GLOBAL, isComment, } from './regexp';
import { traverse } from './traverse';
export var mdProcessor = unified().use(remarkParse).freeze();
export var mdxProcessor = mdProcessor().use(remarkMdx).freeze();
export var AST_PROPS = ['body', 'comments', 'tokens'];
export var ES_NODE_TYPES = ['export', 'import', 'jsx'];
export var LOC_ERROR_PROPERTIES = ['column', 'lineNumber'];
export var DEFAULT_EXTENSIONS = ['.mdx'];
export var MARKDOWN_EXTENSIONS = ['.md'];
export var DEFAULT_PARSER_OPTIONS = {
export const mdProcessor = unified().use(remarkParse).freeze();
export const mdxProcessor = mdProcessor().use(remarkMdx).freeze();
export const AST_PROPS = ['body', 'comments', 'tokens'];
export const ES_NODE_TYPES = ['export', 'import', 'jsx'];
export const LOC_ERROR_PROPERTIES = ['column', 'lineNumber'];
export const DEFAULT_EXTENSIONS = ['.mdx'];
export const MARKDOWN_EXTENSIONS = ['.md'];
export const DEFAULT_PARSER_OPTIONS = {
comment: true,

@@ -31,7 +30,7 @@ ecmaFeatures: {

};
var JSX_WRAPPER_START = '<$>';
var JSX_WRAPPER_END = '</$>';
var OFFSET = JSX_WRAPPER_START.length;
var Parser = /** @class */ (function () {
function Parser() {
const JSX_WRAPPER_START = '<$>';
const JSX_WRAPPER_END = '</$>';
const OFFSET = JSX_WRAPPER_START.length;
export class Parser {
constructor() {
// @internal

@@ -42,38 +41,37 @@ this._options = DEFAULT_PARSER_OPTIONS;

}
Parser.prototype.normalizeJsxNode = function (node, parent, options) {
if (options === void 0) { options = this._options; }
var value = node.value;
normalizeJsxNode(node, parent, options = this._options) {
const value = node.value;
if (node.type !== 'jsx' || isComment(value)) {
return node;
}
var commentContent = COMMENT_CONTENT_REGEX.exec(value);
const commentContent = COMMENT_CONTENT_REGEX.exec(value);
if (commentContent) {
var comments_1 = [];
var _a = node.position.start, line_1 = _a.line, column_1 = _a.column, startOffset_1 = _a.offset, data = node.data;
const comments = [];
const { position: { start: { line, column, offset: startOffset }, }, data, } = node;
Object.assign(node, {
data: __assign(__assign({}, data), { jsxType: 'JSXElementWithHTMLComments', comments: comments_1,
data: Object.assign(Object.assign({}, data), { jsxType: 'JSXElementWithHTMLComments', comments,
// jsx in paragraph is considered as plain html in mdx, what means html style comments are valid
// TODO: in this case, jsx style comments could be a mistake
inline: !!parent && parent.type !== 'root' }),
value: value.replace(COMMENT_CONTENT_REGEX_GLOBAL, function (matched, $0, $1, $2, offset) {
var endOffset = offset + matched.length;
var startLines = value.slice(0, offset).split('\n');
var endLines = value.slice(0, endOffset).split('\n');
var fixed = "{/" + '*'.repeat($0.length - 2) + $1 + '*'.repeat($2.length - 2) + "/}";
var startLineOffset = startLines.length - 1;
var endLineOffset = endLines.length - 1;
comments_1.push({
fixed: fixed,
value: value.replace(COMMENT_CONTENT_REGEX_GLOBAL, (matched, $0, $1, $2, offset) => {
const endOffset = offset + matched.length;
const startLines = value.slice(0, offset).split('\n');
const endLines = value.slice(0, endOffset).split('\n');
const fixed = `{/${'*'.repeat($0.length - 2)}${$1}${'*'.repeat($2.length - 2)}/}`;
const startLineOffset = startLines.length - 1;
const endLineOffset = endLines.length - 1;
comments.push({
fixed,
// ! eslint ast column is 0-indexed, but unified is 1-indexed
loc: {
start: {
line: line_1 + startLineOffset,
line: line + startLineOffset,
column: last(startLines).length +
(startLineOffset ? 0 : column_1 - 1),
offset: startOffset_1 + offset,
(startLineOffset ? 0 : column - 1),
offset: startOffset + offset,
},
end: {
line: line_1 + endLineOffset,
column: last(endLines).length + (endLineOffset ? 0 : column_1 - 1),
offset: startOffset_1 + endOffset,
line: line + endLineOffset,
column: last(endLines).length + (endLineOffset ? 0 : column - 1),
offset: startOffset + endOffset,
},

@@ -88,17 +86,16 @@ },

return this._normalizeJsxNodes(node, options);
};
Parser.prototype.parse = function (code, options) {
}
parse(code, options) {
return this.parseForESLint(code, options).ast;
};
}
// eslint-disable-next-line sonarjs/cognitive-complexity
Parser.prototype.parseForESLint = function (code, options) {
var _this = this;
var extname = path.extname(options.filePath);
var isMdx = DEFAULT_EXTENSIONS.concat(options.extensions || []).includes(extname);
var isMarkdown = MARKDOWN_EXTENSIONS.concat(options.markdownExtensions || []).includes(extname);
parseForESLint(code, options) {
const extname = path.extname(options.filePath);
const isMdx = DEFAULT_EXTENSIONS.concat(options.extensions || []).includes(extname);
const isMarkdown = MARKDOWN_EXTENSIONS.concat(options.markdownExtensions || []).includes(extname);
if (!isMdx && !isMarkdown) {
return this._eslintParse(code, options);
}
var root = (isMdx ? mdxProcessor : mdProcessor).parse(code);
this._ast = __assign(__assign({}, normalizePosition(root.position)), { type: 'Program', sourceType: options.sourceType || 'module', body: [], comments: [], tokens: [] });
const root = (isMdx ? mdxProcessor : mdProcessor).parse(code);
this._ast = Object.assign(Object.assign({}, normalizePosition(root.position)), { type: 'Program', sourceType: options.sourceType || 'module', body: [], comments: [], tokens: [] });
this._services = {

@@ -109,12 +106,11 @@ JSXElementsWithHTMLComments: [],

traverse(root, {
code: code,
enter: function (node, parent) {
code,
enter: (node, parent) => {
if (!ES_NODE_TYPES.includes(node.type)) {
return;
}
var normalized = _this.normalizeJsxNode(node, parent, options);
let normalized = this.normalizeJsxNode(node, parent, options);
normalized = Array.isArray(normalized) ? normalized : [normalized];
for (var _i = 0, normalized_1 = normalized; _i < normalized_1.length; _i++) {
var normalizedNode = normalized_1[_i];
_this._nodeToAst(normalizedNode, options);
for (const normalizedNode of normalized) {
this._nodeToAst(normalizedNode, options);
}

@@ -128,5 +124,5 @@ },

};
};
}
// @internal
Parser.prototype._eslintParse = function (code, options) {
_eslintParse(code, options) {
if (!this._parsers || options.parser !== this._options.parser) {

@@ -139,8 +135,7 @@ this._parsers = normalizeParser(options.parser);

}
var program;
var parseError;
for (var _i = 0, _a = this._parsers; _i < _a.length; _i++) {
var parser_1 = _a[_i];
let program;
let parseError;
for (const parser of this._parsers) {
try {
program = parser_1(code, this._options);
program = parser(code, this._options);
break;

@@ -161,57 +156,49 @@ }

: { ast: program });
};
}
// fix adjacent JSX nodes
// @internal
// eslint-disable-next-line sonarjs/cognitive-complexity
Parser.prototype._normalizeJsxNodes = function (node, options) {
var value = node.value;
var program;
_normalizeJsxNodes(node, options) {
const value = node.value;
let program;
try {
// wrap into single element which is valid jsx but not valid jsx in mdx, so that it won't break on adjacent JSX nodes
program = this._eslintParse("" + JSX_WRAPPER_START + value + JSX_WRAPPER_END, options).ast;
program = this._eslintParse(`${JSX_WRAPPER_START}${value}${JSX_WRAPPER_END}`, options).ast;
}
catch (e) {
if (hasProperties(e, LOC_ERROR_PROPERTIES)) {
var start = node.position.start;
catch (err) {
if (hasProperties(err, LOC_ERROR_PROPERTIES)) {
const { position: { start }, } = node;
/* istanbul ignore else */
if ('index' in e) {
e.index += start.offset - OFFSET;
if ('index' in err) {
err.index += start.offset - OFFSET;
}
else if ('pos' in e) {
e.pos += start.offset - OFFSET;
else if ('pos' in err) {
err.pos += start.offset - OFFSET;
}
e.column =
err.column =
/* istanbul ignore next */
e.lineNumber > 1 ? e.column : e.column + start.column - OFFSET;
e.lineNumber += start.line - 1;
throw e;
err.lineNumber > 1 ? err.column : err.column + start.column - OFFSET;
err.lineNumber += start.line - 1;
throw err;
}
return node;
}
var expression = program
.body[0].expression;
const { expression } = program.body[0];
if (!isJsxNode(expression) || expression.children.length <= 1) {
return node;
}
var _a = node.position.start, line = _a.line, offset = _a.offset, data = node.data;
return expression.children.reduce(function (nodes, jsNode) {
const { position: { start: { line, offset }, }, data, } = node;
return expression.children.reduce((nodes, jsNode) => {
if (!isJsxNode(jsNode)) {
return nodes;
}
var nodeStart = jsNode.start, nodeEnd = jsNode.end,
/* istanbul ignore next */
_a = jsNode.loc,
/* istanbul ignore next */
_b = _a === void 0 ? {
const { start: nodeStart, end: nodeEnd, loc: { start, end } = {
start: { column: nodeStart, line: 1 },
end: { column: nodeEnd, line: 1 },
} : _a, start = _b.start, end = _b.end,
/* istanbul ignore next */
_c = jsNode.range,
/* istanbul ignore next */
range = _c === void 0 ? [nodeStart, nodeEnd] : _c;
var startLine = line + start.line - 1;
var endLine = line + end.line - 1;
var startOffset = range[0] - OFFSET;
var endOffset = range[1] - OFFSET;
}, range = [nodeStart, nodeEnd], } = jsNode;
const startLine = line + start.line - 1;
const endLine = line + end.line - 1;
const startOffset = range[0] - OFFSET;
const endOffset = range[1] - OFFSET;
nodes.push({

@@ -236,18 +223,17 @@ type: 'jsx',

}, []);
};
}
// @internal
Parser.prototype._nodeToAst = function (node, options) {
var _a;
_nodeToAst(node, options) {
if (node.data && node.data.jsxType === 'JSXElementWithHTMLComments') {
this._services.JSXElementsWithHTMLComments.push(node);
}
var value = node.value;
var _b = normalizePosition(node.position), loc = _b.loc, start = _b.start, end = _b.end;
const value = node.value;
const { loc, start, end } = normalizePosition(node.position);
// fix #4
if (isComment(value)) {
var comment = COMMENT_CONTENT_REGEX.exec(value)[2];
const comment = COMMENT_CONTENT_REGEX.exec(value)[2];
this._ast.comments.push({
type: 'Block',
value: comment,
loc: loc,
loc,
range: [start, end],

@@ -257,4 +243,4 @@ });

}
var startLine = loc.start.line - 1; // ! line is 1-indexed, change to 0-indexed to simplify usage
var program;
const startLine = loc.start.line - 1; // ! line is 1-indexed, change to 0-indexed to simplify usage
let program;
try {

@@ -273,16 +259,12 @@ program = this._eslintParse(value, options).ast;

}
var offset = start - program.range[0];
for (var _i = 0, AST_PROPS_1 = AST_PROPS; _i < AST_PROPS_1.length; _i++) {
var prop = AST_PROPS_1[_i];
(_a = this._ast[prop]).push.apply(_a, program[prop].map(function (item) {
return restoreNodeLocation(item, startLine, offset);
}));
}
};
return Parser;
}());
export { Parser };
export var parser = new Parser();
const offset = start - program.range[0];
for (const prop of AST_PROPS)
this._ast[prop].push(
// ts doesn't understand the mixed type
...program[prop].map((item) => restoreNodeLocation(item, startLine, offset)));
}
}
export const parser = new Parser();
// eslint-disable-next-line @typescript-eslint/unbound-method
export var parse = parser.parse, parseForESLint = parser.parseForESLint;
export const { parse, parseForESLint } = parser;
//# sourceMappingURL=parser.js.map

@@ -20,2 +20,1 @@ export declare const openTag: string;

export declare const isSelfClosingTag: (text: string) => boolean;
//# sourceMappingURL=regexp.d.ts.map
// based on https://github.com/mdx-js/mdx/blob/master/packages/remark-mdx/tag.js
var dotAllPolyfill = '[\0-\uFFFF]';
var attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*';
var unquoted = '[^"\'=<>`\\u0000-\\u0020]+';
var singleQuoted = "'[^']*'";
var doubleQuoted = '"[^"]*"';
var jsProps = '{.*}'.replace('.', dotAllPolyfill);
var attributeValue = '(?:' +
const dotAllPolyfill = '[\0-\uFFFF]';
const attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*';
const unquoted = '[^"\'=<>`\\u0000-\\u0020]+';
const singleQuoted = "'[^']*'";
const doubleQuoted = '"[^"]*"';
const jsProps = '{.*}'.replace('.', dotAllPolyfill);
const attributeValue = '(?:' +
unquoted +

@@ -17,26 +17,22 @@ '|' +

')';
var attribute = '(?:\\s+' + attributeName + '(?:\\s*=\\s*' + attributeValue + ')?)';
export var openTag = '<[A-Za-z]*[A-Za-z0-9\\.\\-]*' + attribute + '*\\s*>';
export var closeTag = '<\\s*\\/[A-Za-z]*[A-Za-z0-9\\.\\-]*\\s*>';
export var selfClosingTag = '<[A-Za-z]*[A-Za-z0-9\\.\\-]*' + attribute + '*\\s*\\/?>';
export var comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';
export var commentOpen = '(<!---*)';
export var commentClose = '(-*-->)';
export var commentContent = commentOpen + "([\\s\\S]*?)" + commentClose;
export var OPEN_TAG_REGEX = new RegExp("^(?:" + openTag + ")$");
export var CLOSE_TAG_REGEX = new RegExp("^(?:" + closeTag + ")$");
export var OPEN_CLOSE_TAG_REGEX = new RegExp("^(?:" + (openTag + '[^<]*' + closeTag) + ")$");
export var SELF_CLOSING_TAG_REGEX = new RegExp("^(?:" + selfClosingTag + ")$");
export var COMMENT_REGEX = new RegExp("^(?:" + comment + ")$");
export var COMMENT_CONTENT_REGEX = new RegExp(commentContent);
export var COMMENT_CONTENT_REGEX_GLOBAL = new RegExp(commentContent, 'g');
export var isOpenTag = function (text) { return OPEN_TAG_REGEX.test(text.trim()); };
export var isCloseTag = function (text) { return CLOSE_TAG_REGEX.test(text.trim()); };
export var isComment = function (text) { return COMMENT_REGEX.test(text.trim()); };
export var isOpenCloseTag = function (text) {
return OPEN_CLOSE_TAG_REGEX.test(text.trim());
};
export var isSelfClosingTag = function (text) {
return SELF_CLOSING_TAG_REGEX.test(text.trim());
};
const attribute = '(?:\\s+' + attributeName + '(?:\\s*=\\s*' + attributeValue + ')?)';
export const openTag = '<[A-Za-z]*[A-Za-z0-9\\.\\-]*' + attribute + '*\\s*>';
export const closeTag = '<\\s*\\/[A-Za-z]*[A-Za-z0-9\\.\\-]*\\s*>';
export const selfClosingTag = '<[A-Za-z]*[A-Za-z0-9\\.\\-]*' + attribute + '*\\s*\\/?>';
export const comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';
export const commentOpen = '(<!---*)';
export const commentClose = '(-*-->)';
export const commentContent = `${commentOpen}([\\s\\S]*?)${commentClose}`;
export const OPEN_TAG_REGEX = new RegExp(`^(?:${openTag})$`);
export const CLOSE_TAG_REGEX = new RegExp(`^(?:${closeTag})$`);
export const OPEN_CLOSE_TAG_REGEX = new RegExp(`^(?:${openTag + '[^<]*' + closeTag})$`);
export const SELF_CLOSING_TAG_REGEX = new RegExp(`^(?:${selfClosingTag})$`);
export const COMMENT_REGEX = new RegExp(`^(?:${comment})$`);
export const COMMENT_CONTENT_REGEX = new RegExp(commentContent);
export const COMMENT_CONTENT_REGEX_GLOBAL = new RegExp(commentContent, 'g');
export const isOpenTag = (text) => OPEN_TAG_REGEX.test(text.trim());
export const isCloseTag = (text) => CLOSE_TAG_REGEX.test(text.trim());
export const isComment = (text) => COMMENT_REGEX.test(text.trim());
export const isOpenCloseTag = (text) => OPEN_CLOSE_TAG_REGEX.test(text.trim());
export const isSelfClosingTag = (text) => SELF_CLOSING_TAG_REGEX.test(text.trim());
//# sourceMappingURL=regexp.js.map

@@ -1,2 +0,3 @@

import { Node, Parent, TraverseOptions } from './types';
import type { Node, Parent } from 'unist';
import type { TraverseOptions } from './types';
export declare class Traverse {

@@ -6,6 +7,5 @@ code: string;

combineLeftJsxNodes(jsxNodes: Node[], parent?: Parent): Node;
combineJsxNodes(nodes: Node[], parent?: Parent): import("unist").Node[];
combineJsxNodes(nodes: Node[], parent?: Parent): Node[];
traverse(node: Node, parent?: Parent): void;
}
export declare const traverse: (root: Parent, options: TraverseOptions) => void;
//# sourceMappingURL=traverse.d.ts.map

@@ -1,18 +0,16 @@

import { __assign, __spreadArray } from "tslib";
import { last } from './helper';
import { last } from './helpers';
import { parser } from './parser';
import { isCloseTag, isComment, isOpenCloseTag, isOpenTag, isSelfClosingTag, } from './regexp';
var Traverse = /** @class */ (function () {
function Traverse(_a) {
var code = _a.code, enter = _a.enter;
export class Traverse {
constructor({ code, enter }) {
this.code = code;
this._enter = enter;
}
Traverse.prototype.combineLeftJsxNodes = function (jsxNodes, parent) {
combineLeftJsxNodes(jsxNodes, parent) {
var _a;
var start = jsxNodes[0].position.start;
var end = __assign({}, last(jsxNodes).position.end);
const start = jsxNodes[0].position.start;
const end = Object.assign({}, last(jsxNodes).position.end);
// fix #279
if (parent && ((_a = parent.position.indent) === null || _a === void 0 ? void 0 : _a.length) > 0) {
end.offset += parent.position.indent.reduce(function (acc, indent, index) { return acc + (index ? indent + 1 : 0); }, 0);
end.offset += parent.position.indent.reduce((acc, indent, index) => acc + (index ? indent + 1 : 0), 0);
}

@@ -24,18 +22,17 @@ return {

position: {
start: start,
end: end,
start,
end,
},
};
};
}
// fix #7
Traverse.prototype.combineJsxNodes = function (nodes, parent) {
var _this = this;
var offset = 0;
var hasOpenTag = false;
var jsxNodes = [];
var length = nodes.length;
combineJsxNodes(nodes, parent) {
let offset = 0;
let hasOpenTag = false;
const jsxNodes = [];
const { length } = nodes;
// eslint-disable-next-line sonarjs/cognitive-complexity
return nodes.reduce(function (acc, node, index) {
return nodes.reduce((acc, node, index) => {
if (node.type === 'jsx') {
var value = node.value;
const value = node.value;
if (isOpenTag(value)) {

@@ -64,4 +61,4 @@ offset++;

// fix #138
var nodes_1 = parser.normalizeJsxNode(node, parent);
jsxNodes.push.apply(jsxNodes, (Array.isArray(nodes_1) ? nodes_1 : [nodes_1]));
const nodes = parser.normalizeJsxNode(node, parent);
jsxNodes.push(...(Array.isArray(nodes) ? nodes : [nodes]));
}

@@ -76,3 +73,3 @@ catch (_a) {

// should never happen, just for robustness
var start = node.position.start;
const { start } = node.position;
throw Object.assign(new SyntaxError('unknown jsx node: ' + JSON.stringify(value)), {

@@ -88,13 +85,13 @@ lineNumber: start.line,

// fix #158
var firstOpenTagIndex = jsxNodes.findIndex(function (node) { return typeof node.value === 'string' && isOpenTag(node.value); });
const firstOpenTagIndex = jsxNodes.findIndex(node => typeof node.value === 'string' && isOpenTag(node.value));
if (firstOpenTagIndex === -1) {
if (hasOpenTag) {
acc.push(_this.combineLeftJsxNodes(jsxNodes, parent));
acc.push(this.combineLeftJsxNodes(jsxNodes, parent));
}
else {
acc.push.apply(acc, jsxNodes);
acc.push(...jsxNodes);
}
}
else {
acc.push.apply(acc, __spreadArray(__spreadArray([], jsxNodes.slice(0, firstOpenTagIndex)), [_this.combineLeftJsxNodes(jsxNodes.slice(firstOpenTagIndex), parent)]));
acc.push(...jsxNodes.slice(0, firstOpenTagIndex), this.combineLeftJsxNodes(jsxNodes.slice(firstOpenTagIndex), parent));
}

@@ -112,8 +109,8 @@ jsxNodes.length = 0;

if (index === length - 1 && jsxNodes.length > 0) {
acc.push(_this.combineLeftJsxNodes(jsxNodes, parent));
acc.push(this.combineLeftJsxNodes(jsxNodes, parent));
}
return acc;
}, []);
};
Traverse.prototype.traverse = function (node, parent) {
}
traverse(node, parent) {
/* istanbul ignore if */

@@ -124,19 +121,14 @@ if (!node) {

}
var children = node.children;
let children = node.children;
if (children) {
var parent_1 = node;
children = node.children = this.combineJsxNodes(children, parent_1);
for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {
var child = children_1[_i];
this.traverse(child, parent_1);
const parent = node;
children = node.children = this.combineJsxNodes(children, parent);
for (const child of children) {
this.traverse(child, parent);
}
}
this._enter(node, parent);
};
return Traverse;
}());
export { Traverse };
export var traverse = function (root, options) {
return new Traverse(options).traverse(root);
};
}
}
export const traverse = (root, options) => new Traverse(options).traverse(root);
//# sourceMappingURL=traverse.js.map

@@ -1,12 +0,7 @@

import { AST, Linter } from 'eslint';
export declare type JSXElement = import('@babel/types').JSXElement;
export declare type JSXFragment = import('@babel/types').JSXFragment;
export declare type Node = import('unist').Node;
export declare type Parent = import('unist').Parent;
export declare type Point = import('unist').Point;
import type { JSXElement, JSXFragment } from '@babel/types';
import type { AST, Linter } from 'eslint';
import type { Node, Parent, Point } from 'unist';
export declare type JsxNode = (JSXElement | JSXFragment) & {
range: [number, number];
};
export declare type JsxTypes = Readonly<[JSXElement['type'], JSXFragment['type']]>;
export declare type JsxType = JsxTypes[number];
export declare type Arrayable<T> = T[] | readonly T[];

@@ -47,2 +42,1 @@ export declare type ParserFn = (code: string, options: Linter.ParserOptions) => AST.Program | Linter.ESLintParseResult;

}
//# sourceMappingURL=types.d.ts.map
{
"name": "eslint-mdx",
"version": "1.9.1",
"version": "1.10.0",
"description": "ESLint Parser for MDX",

@@ -36,3 +36,2 @@ "repository": "git+https://github.com/mdx-js/eslint-mdx.git",

"dependencies": {
"espree": "^7.3.1",
"remark-mdx": "^1.6.22",

@@ -43,3 +42,3 @@ "remark-parse": "^8.0.3",

},
"gitHead": "171488e03fd6fd5942ce3dafdbec68de07b96481"
"gitHead": "d8bf426e39a42f935dee25ee7df9e5eb850912aa"
}

@@ -25,3 +25,4 @@ <p align="center">

> [ESLint][] Parser/Plugin for [MDX][], helps you lint all ES syntaxes excluding `code` block of course.
> [ESLint][] Parser/Plugin for [MDX][], helps you lint all ES syntaxes.
> Linting `code` blocks can be enabled with `mdx/code-blocks` setting too!
> Work perfectly with `eslint-plugin-import`, `eslint-plugin-prettier` or any other eslint plugins.

@@ -77,5 +78,9 @@ > And also can be integrated with [remark-lint][] plugins to lint markdown syntaxes.

```json
```jsonc
{
"extends": ["plugin:mdx/recommended"]
"extends": ["plugin:mdx/recommended"],
// optional, if you want to lint code blocks at the same time
"settings": {
"mdx/code-blocks": true
}
}

@@ -89,2 +94,6 @@ ```

"extends": ["plugin:mdx/recommended"],
// optional, if you want to lint code blocks at the same time
"settings": {
"mdx/code-blocks": true
},
"overrides": [

@@ -106,2 +115,6 @@ {

"extends": ["plugin:mdx/overrides"]
},
{
"files": "**/*.{md,mdx}/**",
"extends": "plugin:mdx/code-blocks"
}

@@ -119,2 +132,6 @@ ]

extends: ['plugin:mdx/recommended'],
// optional, if you want to lint code blocks at the same time
settings: {
'mdx/code-blocks': true,
},
overrides: [

@@ -133,8 +150,10 @@ {

},
Object.assign(
{
files: ['*.mdx'],
},
configs.overrides,
),
{
files: ['*.mdx'],
...configs.overrides,
},
{
files: '**/*.{md,mdx}/**',
...configs.codeBlocks,
},
],

@@ -144,6 +163,6 @@ }

2. Make sure ESLint knows to run on `.mdx` files:
2. Make sure ESLint knows to run on `.md` or `.mdx` files:
```sh
eslint . --ext js,mdx
eslint . --ext js,md,mdx
```

@@ -153,3 +172,3 @@

1. `parser` (`string | ParserConfig | ParserFn`): Custom parser for ES syntax is supported, although `@typescript-eslint/parser` or `babel-eslint` will be detected automatically what means you actually do not need to do this:
1. `parser` (`string | ParserConfig | ParserFn`): Custom parser for ES syntax is supported, although `@typescript-eslint/parser` or `@babel/eslint-parser` or `babel-eslint` will be detected automatically what means you actually do not need to do this:

@@ -177,7 +196,7 @@ ```json

Inline JSX like `Inline <Component />` is supported by [MDX][], but rule `react/no-unescaped-entities` from [eslint-plugin-react][] is incompatible with it, `mdx/no-unescaped-entities` is the replacement.
Inline JSX like `Inline <Component />` is supported by [MDX][], but rule `react/no-unescaped-entities` from [eslint-plugin-react][] is incompatible with it, `mdx/no-unescaped-entities` is the replacement, so make sure that you've turned off the original `no-unescaped-entities` rule.
### mdx/no-unused-expressions
[MDX][] can render `jsx` block automatically without exporting them, but [ESLint][] will report `no-unused-expressions` issue which could be unexpected, this rule is a replacement of it, so make sure that you've turned off the original `no-unused-expressions` rule.
[MDX][] can render `jsx` block automatically without exporting them, but [ESLint][] will report `no-unused-expressions` issue which could be unexpected, this rule is the replacement, so make sure that you've turned off the original `no-unused-expressions` rule.

@@ -190,2 +209,19 @@ ### mdx/remark

If you want to disable or change severity of some related rules, it won't work by setting rules in eslint config like `'remark-lint-no-duplicate-headings': 0`, you should change your remark config instead like following:
```jsonc
{
"plugins": [
"@1stg/remark-config",
// change to error severity, notice `[]` is required
["lint-no-duplicate-headings", [2]],
// disable following plugin
[
"lint-no-multiple-toplevel-headings",
[0] // or false
]
]
}
```
## Prettier Integration

@@ -192,0 +228,0 @@

@@ -1,75 +0,5 @@

declare module 'espree' {
import * as estree from 'estree'
// The version of espree that's loaded, like "v3.4.0".
export const version: string
// Parse the given text as javascript into an abstract syntax tree.
export function parse(text: string, opts?: Options): estree.Program
// Walk the given text and produce an array of tokens.
export function tokenize(text: string, opts?: Options): Token[]
interface Token {
type: string
value: string
start: number
end: number
}
// A map from node type to the properties on that type that contain more nodes.
export const VisitorKeys: { [kind: string]: string[] }
const node: estree.Node
// A map of node types to themselves.
export const Syntax: { [type: string]: typeof node.type }
// Options for parsing.
interface Options {
// attach range information to each node
range?: boolean
// attach line/column location information to each node
loc?: boolean
// create a top-level comments array containing all comments
comment?: boolean
// attach comments to the closest relevant node as leadingComments and
// trailingComments
attachComment?: boolean
// create a top-level tokens array containing all tokens
tokens?: true
// set to 3, 5 (default), 6, 7, or 8 to specify the version of ECMAScript
// syntax you want to use.
// You can also set to 2015 (same as 6), 2016 (same as 7), or 2017 (same as 8)
// to use the year-based naming.
ecmaVersion?: number
// specify which type of script you're parsing (script or module, default is script)
sourceType?: 'script' | 'module'
// specify additional language features
ecmaFeatures?: {
// enable JSX parsing
jsx?: boolean
// enable return in global scope
globalReturn?: boolean
// enable implied strict mode (if ecmaVersion >= 5)
impliedStrict?: boolean
// allow experimental object rest/spread
experimentalObjectRestSpread?: boolean
}
}
}
declare module 'remark-mdx' {
import * as unified from 'unified'
import type * as unified from 'unified'
const mdx: unified.Attacher
export = mdx
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc