eslint-plugin-allowed-dependencies
Version:
ESLint plugin Allowed Dependencies
2 lines (1 loc) • 2.79 kB
JavaScript
var q=Object.create;var l=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var F=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var V=(e,o)=>{for(var n in o)l(e,n,{get:o[n],enumerable:!0})},O=(e,o,n,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of E(o))!L.call(e,s)&&s!==n&&l(e,s,{get:()=>o[s],enumerable:!(i=C(o,s))||i.enumerable});return e};var g=(e,o,n)=>(n=e!=null?q(F(e)):{},O(o||!e||!e.__esModule?l(n,"default",{value:e,enumerable:!0}):n,e)),T=e=>O(l({},"__esModule",{value:!0}),e);var Q={};V(Q,{default:()=>H});module.exports=T(Q);var D=require("@typescript-eslint/utils"),t=g(require("ramda"),1);var S=require("fs"),h=require("path"),r=g(require("ramda"),1),K=r.startsWith("@"),P=e=>r.flow(e,[r.split("/"),r.take(K(e)?2:1),r.join("/")]),b=e=>JSON.parse((0,S.readFileSync)((0,h.join)(e,"package.json"),"utf8")),k=e=>{let o=s=>e.peerDependenciesMeta?.[s]?.optional===!0,[n,i]=r.partition(o,Object.keys(e.peerDependencies||{}));return{requiredPeers:i,optionalPeers:n}};var m=g(require("ramda"),1),U={oneOf:[{type:"boolean"},{type:"string",enum:["typeOnly"]}]},W=m.fromPairs(m.xprod(["production","optionalPeers","requiredPeers","development"],[U])),v={type:"object",properties:{packageDir:{type:"string"},typeOnly:{type:"array",items:{type:"string"}},ignore:{type:"array",items:{type:"string",format:"regex"}},...W},additionalProperties:!1};var z={prohibited:"Importing {{name}} is not allowed.",typeOnly:"Only 'import type' syntax is allowed for {{name}}."},c={production:!0,requiredPeers:!0,development:"typeOnly",optionalPeers:"typeOnly"},A=[!0,!1,"typeOnly"],B=e=>({packageDir:o=e.cwd,typeOnly:n=[],ignore:i=["^\\.","^node:"],production:s=c.production,development:d=c.development,requiredPeers:y=c.requiredPeers,optionalPeers:u=c.optionalPeers})=>{let p=b(o),f={production:Object.keys(p.dependencies||{}),development:Object.keys(p.devDependencies||{}),...k(p)},a={production:s,development:d,requiredPeers:y,optionalPeers:u},w=N=>t.flatten(t.values(t.mapObjIndexed((I,J)=>I===N?f[J]:[],a))),[j,M,R]=t.map(w,A);return R.push(...n),{allowed:j,prohibited:M,limited:R,ignore:i}},G=e=>{let o=t.map(t.constructN(1,RegExp),e),n=t.invoker(1,"test");return i=>t.any(n(i),o)},x=D.ESLintUtils.RuleCreator.withoutDocs({meta:{messages:z,type:"problem",schema:{type:"array",items:v}},defaultOptions:[c],create:e=>{let o=B(e),n=t.map(o,e.options.length?e.options:[{}]),[i,s,d,y]=t.map(p=>t.flatten(t.pluck(p,n)),["allowed","prohibited","limited","ignore"]),u=G(y);return{ImportDeclaration:({source:p,importKind:f})=>{if(u(p.value))return;let a=P(p.value);i.includes(a)||f==="type"&&!s.includes(a)||e.report({node:p,data:{name:a},messageId:d.includes(a)?"typeOnly":"prohibited"})}}}});var H={rules:{dependencies:x}};
;