eslint-plugin-mdx
Version:
ESLint Plugin for MDX
2 lines (1 loc) • 8.36 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib"),r=require("eslint/package.json"),t=require("eslint-mdx"),n=require("eslint/lib/rules/no-unused-expressions"),s=require("path"),i=require("vfile"),o=require("cosmiconfig"),a=require("remark-mdx"),c=require("remark-parse"),u=require("remark-stringify"),l=require("unified");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d,p=f(n),m=f(s),g=f(i),x=f(a),v=f(c),h=f(u),y=f(l),_={parser:"eslint-mdx",plugins:["mdx"],processor:"mdx/remark"},k={parserOptions:{ecmaFeatures:{impliedStrict:!0}},rules:{"eol-last":"off","no-undef":"off","no-unused-expressions":"off","no-unused-vars":"off","padded-blocks":"off",strict:"off","unicode-bom":"off"}},b=function(e,r){return void 0===r&&(r={}),(Array.isArray(e)?e:Object.keys(e)).reduce((function(e,r){var t;return Object.assign(e,((t={})[r]=!1,t))}),r)};try{d=require("rebass")}catch(e){d=["Box","Flex","Text","Heading","Link","Button","Image","Card"]}var j=e.__assign(e.__assign({},_),{globals:b(d,{React:!1}),rules:{"lines-between-class-members":0,"react/jsx-no-undef":[2,{allowGlobals:!0}],"react/react-in-jsx-scope":0}}),S=+r.version.split(".").slice(0,2).join("."),q=e.__assign(e.__assign({},_),{rules:{"mdx/no-jsx-html-comments":2,"mdx/no-unused-expressions":2,"mdx/remark":1,"no-unused-expressions":0}});if(S>=6.4){var E=[{files:"*.mdx",extends:"plugin:mdx/overrides"},{files:"**/*.{md,mdx}/**",extends:"plugin:mdx/code-blocks"}];try{require.resolve("prettier"),require.resolve("eslint-plugin-prettier"),E.push({files:"*.md",rules:{"prettier/prettier":[2,{parser:"markdown"}]}})}catch(e){}Object.assign(q,{overrides:E})}var w,I={base:_,"code-blocks":k,codeBlocks:k,overrides:j,recommended:q},O={meta:{type:"problem",docs:{description:"Forbid invalid html style comments in jsx block",category:"SyntaxError",recommended:!0},messages:{jsxHtmlComments:"html style comments are invalid in jsx: {{ origin }}"},fixable:"code"},create:function(e){return{ExpressionStatement:function(r){var n=e.parserServices.JSXElementsWithHTMLComments;if(t.isJsxNode(r.expression)&&"Program"===r.parent.type&&n&&0!==n.length){var s=n.shift();if(!s.data.inline)for(var i=function(t,n,s){e.report({messageId:"jsxHtmlComments",data:{origin:s},loc:n,node:r,fix:function(e){return e.replaceTextRange([n.start.offset,n.end.offset],t)}})},o=0,a=s.data.comments;o<a.length;o++){var c=a[o];i(c.fixed,c.loc,c.origin)}}}}}},C=e.__assign(e.__assign({},p.default),{create:function(e){var r=p.default.create(e);return{ExpressionStatement:function(e){t.isJsxNode(e.expression)&&"Program"===e.parent.type||r.ExpressionStatement(e)}}}}),A=function(e,r,t){t&&/^\.\.?([/\\]|$)/.test(e)&&(e=m.default.resolve(m.default.dirname(t),e)),r=r.endsWith("-")?r:r+"-";for(var n,s=0,i=[e,e.startsWith("@")?e.replace("/","/"+r):r+e];s<i.length;s++){var o=i[s];try{return require(o)}catch(e){n||(n=e)}}throw n},L=y.default().use(v.default).freeze(),N=function(r,n){var s;w||(w=o.cosmiconfigSync("remark",{packageProp:"remarkConfig"}).search);try{s=w(r)}catch(e){if("ENOTDIR"!==e.code||!/\d+_?\.[a-z]+$/.test(r))throw e;try{s=w(m.default.dirname(r))}catch(r){throw e}}var i=(null==s?void 0:s.config)||{},a=i.plugins,c=void 0===a?[]:a,u=i.settings;try{c.push([require.resolve("remark-lint-file-extension"),!1])}catch(e){}var l=L().use({settings:u}).use(h.default);return n&&l.use(x.default),c.reduce((function(r,n){var i=t.arrayify(n),o=i[0],a=i.slice(1);return r.use.apply(r,e.__spreadArray(["string"==typeof o?A(o,"remark",s.filepath):o],a))}),l).freeze()},T={meta:{type:"layout",docs:{description:"Linter integration with remark plugins",category:"Stylistic Issues",recommended:!0},fixable:"code"},create:function(r){var n=r.getFilename(),s=m.default.extname(n),i=r.getSourceCode(),o=r.parserOptions,a=t.DEFAULT_EXTENSIONS.concat(o.extensions||[]).includes(s),c=t.MARKDOWN_EXTENSIONS.concat(o.markdownExtensions||[]).includes(s);return{Program:function(t){if(a||c){var s=i.getText(t),o=N(n,a),u=g.default({path:n,contents:s});try{o.processSync(u)}catch(e){u.messages.includes(e)||(u.message(e).fatal=!0)}for(var l=function(n,i,a,c,u,l){var f=c?2:null==c?0:1;if(!f)return"continue";var d={reason:i,source:n,ruleId:a,severity:f};r.report({message:JSON.stringify(d),loc:{start:e.__assign(e.__assign({},u),{column:u.column-1}),end:e.__assign(e.__assign({},l),{column:l.column-1})},node:t,fix:function(e){if(null==u.offset)return null;var r=[u.offset,null==l.offset?u.offset+1:l.offset],t=s.slice.apply(s,r),n=o.processSync(t).toString();return e.replaceTextRange(r,t.endsWith("\n")?n:n.slice(0,-1))}})},f=0,d=u.messages;f<d.length;f++){var p=d[f],m=p.source,x=p.reason,v=p.ruleId,h=p.fatal,y=p.location;l(m,x,v,h,y.start,y.end)}}}}}},M={"no-jsx-html-comments":O,"no-unused-expressions":C,noJsxHtmlComments:O,noUnusedExpressions:C,remark:T},P=new Set(["eol-last","unicode-bom"]),J={};function B(e,r,t){if(r[e.type]&&r[e.type](e,t),void 0!==e.children)for(var n=e,s=0,i=n.children;s<i.length;s++){B(i[s],r,n)}}function H(e){var r="\x3c!--",t="--\x3e";if(e.slice(0,r.length)!==r||e.slice(-t.length)!==t)return"";var n=e.slice(r.length,-t.length);return/^(eslint\b|global\s)/u.test(n.trim())?n:""}var R=/^[>\s]*/u;function F(e){return e.position.start.offset-e.position.start.column+1}function W(e,r){return R.exec(e.slice(F(r)))[0]}function z(e,r,t){for(var n=F(r),s=e.slice(n,r.position.end.offset).split("\n"),i=W(e,r).length,o=[{js:0,md:0}],a=t.reduce((function(e,r){return e+r.length+1}),0),c=n+s[0].length+1,u=0;u+1<s.length;u++){var l=s[u+1],f=R.exec(l)[0].length,d=Math.min(i,f);o.push({js:a,md:c+d-a}),c+=l.length+1,a+=l.length-d+1}return o}var D={javascript:"js",javascriptreact:"jsx",typescript:"ts",typescriptreact:"tsx",markdown:"md",mdown:"md",mkdn:"md"};function U(e){return e&&!P.has(e.ruleId)}var X={preprocess:function(r,n){var s=L.parse(r),i=[];return J[n]=i,B(s,{code:function(t,n){var s=[];if(t.lang){for(var o=n.children.indexOf(t)-1,a=n.children[o];a&&"html"===a.type;){var c=H(a.value);if(!c)break;if("eslint-skip"===c.trim())return;s.unshift("/*"+c+"*/"),o--,a=n.children[o]}i.push(e.__assign(e.__assign({},t),{baseIndentText:W(r,t),comments:s,rangeMap:z(r,t,s)}))}}}),i.map((function(r,n){return{filename:n+"."+(s=r.lang,i=t.last(s.split(/\s/u)[0].split(".")).toLowerCase(),D[i]||i),text:e.__spreadArray(e.__spreadArray([],r.comments),[r.value,""]).join("\n")};var s,i}))},postprocess:function(r,t){var n,s=J[t]||[];return(n=[]).concat.apply(n,r.map((function(r,t){var n=s[t];if(!n)return r;var i=function(r){var t=r.comments.reduce((function(e,r){return e+r.split("\n").length}),0),n=r.position.start.line;return function(s){var i=s.line-t;if(i<1)return null;var o={line:i+n,column:s.column+r.position.indent[i-1]-1};Number.isInteger(s.endLine)&&(o.endLine=s.endLine-t+n);var a={};return s.fix&&(a.fix={range:s.fix.range.map((function(e){for(var t=1;t<r.rangeMap.length&&r.rangeMap[t].js<=e;)t++;return e+r.rangeMap[t-1].md})),text:s.fix.text.replace(/\n/gu,"\n"+r.baseIndentText)}),e.__assign(e.__assign(e.__assign({},s),o),a)}}(n);return r.map(i).filter(U)})))},supportsAutofix:!0},$={},G=Object.keys(require.cache).find((function(e){return/([/\\])eslint\1lib(?:\1linter){2}\.js$/.test(e)}));if(!G)throw new Error("Could not find ESLint Linter in require cache");var K=require(G).Linter,Q=K.prototype.verify;K.prototype.verify=function(e,r,t){var n=r&&("function"==typeof r.extractConfig?r.extractConfig(void 0===t||"string"==typeof t?t:t.filename):r).settings||{};return $.lintCodeBlocks=!0===n["mdx/code-blocks"],Q.call(this,e,r,t)};var V={supportsAutofix:!0,preprocess:function(r,t){return $.lintCodeBlocks?e.__spreadArray(e.__spreadArray([],X.preprocess(r,t)),[r]):[r]},postprocess:function(r,t){return X.postprocess(r,t).map((function(r){var t=r.message,n=r.ruleId,s=r.severity;if("mdx/remark"!==n)return r;var i=JSON.parse(t),o=i.source,a=i.ruleId,c=i.reason,u=i.severity;return e.__assign(e.__assign({},r),{ruleId:o+"-"+a,message:c,severity:Math.max(s,u)})}))}},Y={markdown:X,remark:V};exports.base=_,exports.codeBlocks=k,exports.configs=I,exports.getGlobals=b,exports.getRemarkProcessor=N,exports.noJsxHtmlComments=O,exports.noUnusedExpressions=C,exports.overrides=j,exports.processorOptions=$,exports.processors=Y,exports.recommended=q,exports.remark=T,exports.remarkProcessor=L,exports.requirePkg=A,exports.rules=M;