UNPKG

5.49 kBJavaScriptView Raw
1import{__assign as e,__spreadArray as r}from"tslib";import{version as t}from"eslint/package.json";import{JSX_TYPES as n,isJsxNode as s,openTag as o,DEFAULT_EXTENSIONS as i,MARKDOWN_EXTENSIONS as a}from"eslint-mdx";import c from"eslint-plugin-react/lib/rules/no-unescaped-entities";import l from"eslint/lib/rules/no-unused-expressions";import m from"path";import u from"vfile";import{cosmiconfigSync as p}from"cosmiconfig";import f from"remark-mdx";import d from"remark-parse";import g from"remark-stringify";import v from"unified";var x,h={parser:"eslint-mdx",plugins:["mdx"]},y=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{x=require("rebass")}catch(e){x=["Box","Flex","Text","Heading","Link","Button","Image","Card"]}var b=e(e({},h),{globals:y(x,{React:!1}),rules:{"lines-between-class-members":0,"react/jsx-no-undef":[2,{allowGlobals:!0}],"react/react-in-jsx-scope":0}}),k=+t.split(".").slice(0,2).join("."),j=e(e({},h),{rules:{"mdx/no-jsx-html-comments":2,"mdx/no-unescaped-entities":1,"mdx/no-unused-expressions":2,"mdx/remark":1,"no-unused-expressions":0,"react/no-unescaped-entities":0}});if(k>=6.4){var S=[{files:"*.mdx",extends:"plugin:mdx/overrides"}];try{require.resolve("prettier"),require.resolve("eslint-plugin-prettier"),S.push({files:"*.md",rules:{"prettier/prettier":[2,{parser:"markdown"}]}})}catch(e){}Object.assign(j,{overrides:S})}var q,w,C=Object.freeze({__proto__:null,base:h,overrides:b,recommended:j}),I={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 t=e.parserServices.JSXElementsWithHTMLComments;if(n.includes(r.expression.type)&&"Program"===r.parent.type&&t&&0!==t.length){var s=t.shift();if(!s.data.inline)for(var o=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)}})},i=0,a=s.data.comments;i<a.length;i++){var c=a[i];o(c.fixed,c.loc,c.origin)}}}}}},T=[{char:">",alternatives:["&gt;"]},{char:'"',alternatives:["&quot;","&ldquo;","&#34;","&rdquo;"]},{char:"'",alternatives:["&apos;","&lsquo;","&#39;","&rsquo;"]},{char:"}",alternatives:["&#125;"]}],E=e(e({},c),{create:function(e){var r,t=(e.options[0]||{}).forbid||T;return(r={})["Literal, JSXText"]=function(r){var n=r.parent,i=r.loc;if(s(n)){for(;n&&"Program"!==n.parent.type;)n=n.parent;var a=i.start,c=a.line,l=a.column,m=i.end,u=m.line,p=m.column,f=e.getSourceCode().lines,d=n.loc.start.line<c?0:f.slice(c-1,u).join("\n").search(o);d<0&&(d=0);for(var g=c;g<=u;g++){var v=f[g-1],x=0,h=v.length;g===c&&(x=l+d),g===u&&(h=p,g===c&&(h+=d)),v=v.slice(x,h);for(var y=0,b=t;y<b.length;y++)for(var k=b[y],j=0;j<v.length;j++){var S=v[j];"string"==typeof k?S===k&&e.report({loc:{line:g,column:x+j},message:"HTML entity, `"+k+"` , must be escaped.",node:r}):S===k.char&&e.report({loc:{line:g,column:x+j},message:"`"+k.char+"` can be escaped with "+k.alternatives.map((function(e){return"``".split("").join(e)})).join(", ")+".",node:r})}}}},r}}),H=e(e({},l),{create:function(e){var r=l.create(e);return{ExpressionStatement:function(e){s(e.expression)&&"Program"===e.parent.type||r.ExpressionStatement(e)}}}}),L=function(e,r,t){t&&/^\.\.?([/\\]|$)/.test(e)&&(e=m.resolve(m.dirname(t),e)),r=r.endsWith("-")?r:r+"-";for(var n,s=0,o=[e,e.startsWith("@")?e.replace("/","/"+r):r+e];s<o.length;s++){var i=o[s];try{return require(i)}catch(e){n||(n=e)}}throw n},O=function(e,t){q||(q=p("remark",{packageProp:"remarkConfig"}).search),w||(w=v().use(d).freeze());var n=q(e)||{},s=n.config||{},o=s.plugins,i=void 0===o?[]:o,a=s.settings;try{i.push([require.resolve("remark-lint-file-extension"),!1])}catch(e){}var c=w().use({settings:a}).use(g);return t&&c.use(f),i.reduce((function(e,t){var s=Array.isArray(t)?t:[t],o=s[0],i=s.slice(1);return e.use.apply(e,r(["string"==typeof o?L(o,"remark",n.filepath):o],i))}),c).freeze()},P={meta:{type:"layout",docs:{description:"Linter integration with remark plugins",category:"Stylistic Issues",recommended:!0},messages:{remarkReport:"{{ source }}:{{ ruleId }} - {{ reason }}"},fixable:"code"},create:function(r){var t=r.getFilename(),n=m.extname(t),s=r.getSourceCode(),o=r.parserOptions,c=i.concat(o.extensions||[]).includes(n),l=a.concat(o.markdownExtensions||[]).includes(n);return{Program:function(n){if(c||l){var o=s.getText(n),i=O(t,c),a=u({path:t,contents:o});try{i.processSync(a)}catch(e){a.messages.includes(e)||(a.message(e).fatal=!0)}for(var m=function(t,s,a,c,l){r.report({messageId:"remarkReport",data:{reason:s,source:t,ruleId:a},loc:{start:e(e({},c),{column:c.column-1}),end:e(e({},l),{column:l.column-1})},node:n,fix:function(e){if(null==c.offset)return null;var r=[c.offset,null==l.offset?c.offset+1:l.offset],t=o.slice.apply(o,r),n=i.processSync(t).toString();return e.replaceTextRange(r,t.endsWith("\n")?n:n.slice(0,-1))}})},p=0,f=a.messages;p<f.length;p++){var d=f[p],g=d.source,v=d.reason,x=d.ruleId,h=d.location;m(g,v,x,h.start,h.end)}}}}}},R={"no-jsx-html-comments":I,"no-unescaped-entities":E,"no-unused-expressions":H,remark:P};export{C as configs,y as getGlobals,O as getRemarkProcessor,I as noJsxHtmlComments,E as noUnescapedEntities,H as noUnusedExpressions,P as remark,L as requirePkg,R as rules};