eslint-plugin-qwik 1.2.8 → 1.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +2 -2
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import {{importName}} from '{{importSrc}}';
|
|
7
7
|
<{{importName}} />
|
|
8
8
|
|
|
9
|
-
See https://qwik.builder.io/docs/
|
|
9
|
+
See https://qwik.builder.io/docs/integrations/image-optimization/#responsive-images`,noWidthHeight:`Missing "width" or "height" attribute.
|
|
10
10
|
For performance reasons, always provide width and height attributes for <img> elements, it will prevent layout shifts, boosting performance and UX.`}},create(r){return{JSXElement(e){if(e.openingElement.name.type==="JSXIdentifier"&&e.openingElement.name.name==="img"&&!e.openingElement.attributes.some(n=>n.type==="JSXSpreadAttribute")){let n=e.openingElement.attributes.find(a=>a.type==="JSXAttribute"&&a.name.type==="JSXIdentifier"&&a.name.name==="src");if(n&&n.value){let a=n.value.type==="Literal"?n.value:n.value.type==="JSXExpressionContainer"&&n.value.expression.type==="Literal"?n.value.expression:void 0;if(a&&typeof a.value=="string"&&a.value.startsWith("/")){let c=`~/media${a.value}?jsx`,y=$l(a.value);r.report({node:n,messageId:"noLocalSrc",data:{importSrc:c,importName:y}});return}}let o=e.openingElement.attributes.some(a=>a.type==="JSXAttribute"&&a.name.type==="JSXIdentifier"&&a.name.name==="width"),i=e.openingElement.attributes.some(a=>a.type==="JSXAttribute"&&a.name.type==="JSXIdentifier"&&a.name.name==="height");(!o||!i)&&r.report({node:e,messageId:"noWidthHeight"})}}}}}),Cv=`
|
|
11
11
|
import Image from '~/media/image.png';
|
|
12
12
|
<Image />`.trim(),_v=`
|
|
@@ -291,7 +291,7 @@ Check out https://qwik.builder.io/docs/advanced/dollar/ for more details.`,mutab
|
|
|
291
291
|
Check out https://qwik.builder.io/docs/advanced/dollar/ for more details.`}},create(r){var m;let t={allowAny:((m=r.options[0])==null?void 0:m.allowAny)??!0},n=r.getSourceCode().scopeManager,o=bn.ESLintUtils.getParserServices(r),i=o.esTreeNodeToTSNodeMap,a=o.program.getTypeChecker(),u=new Map,c=[];function y(f){f.references.forEach(p=>{var d,x;let g=p.resolved,l=(d=p.resolved)==null?void 0:d.scope;if(g&&l){let h=(x=g.defs.at(0))==null?void 0:x.type;if(h==="Type"||h==="ImportBinding")return;let S=p.from,O;for(;S&&(O=u.get(S),!O);)S=S.upper;if(S&&O){let j=l.type;if(j==="global"||j==="module")return;let U=p.identifier,_e=i.get(U),R=l;for(;R&&!u.has(R);)R=R.upper;if(R!==S){U.parent&&U.parent.type==="AssignmentExpression"&&U.parent.left===U&&r.report({messageId:"mutableIdentifier",node:p.identifier,data:{varName:p.identifier.name,dollarName:O}});let ce=cv(r,a,_e,p.identifier,t);ce&&r.report({messageId:"referencesOutside",node:p.identifier,data:{varName:p.identifier.name,dollarName:O,reason:fv(ce)}})}}}}),f.childScopes.forEach(y)}return{CallExpression(f){if(f.callee.type==="Identifier"&&f.callee.name.endsWith("$")){let p=f.arguments.at(0);if(p&&p.type==="ArrowFunctionExpression"){let g=n.acquire(p);g&&u.set(g,f.callee.name)}}},JSXAttribute(f){let p=f.name,g=p.type==="JSXIdentifier"?p.name:p.name.name;if(g.endsWith("$")){let l=f.value;if(l&&l.type==="JSXExpressionContainer"){let d=n.acquire(l.expression);if(d)u.set(d,g);else if(l.expression.type==="Identifier"){let x=i.get(l.expression),h=a.getTypeAtLocation(x);if(!hl(h))if(h.isUnionOrIntersection())h.types.every(S=>S.symbol?S.symbol.name==="PropFnInterface":!!(S.flags&(N.default.TypeFlags.Undefined|N.default.TypeFlags.Null)))||r.report({messageId:"invalidJsxDollar",node:l.expression,data:{varName:l.expression.name,solution:`Fix the type of ${l.expression.name} to be PropFunction`}});else{if(h.symbol.name==="PropFnInterface")return;r.report({messageId:"invalidJsxDollar",node:l.expression,data:{varName:l.expression.name,solution:`const ${l.expression.name} = $(
|
|
292
292
|
${bl(h.symbol,r.getSourceCode().text)}
|
|
293
293
|
);
|
|
294
|
-
`}})}}}}},Program(f){let p=i.get(f),g=a.getSymbolAtLocation(p);g&&(c=a.getExportsOfModule(g))},"Program:exit"(){y(n.globalScope)}}}});function cv(r,e,t,n,o){let i=e.getTypeAtLocation(t);return dv(r,e,i,t,n,o,new Set)}function fv(r){let e="";return r.location?e+=`"${r.location}" `:e+="it ",e+=`${r.reason}`,e}function dv(r,e,t,n,o,i,a){let u=Ce(r,e,t,n,i,0,a);if(u){let c=u.location;return c&&(u.location=`${o.name}.${c}`),u}return u}function Ce(r,e,t,n,o,i,a){if(a.has(t)||(a.add(t),t.getProperty("__no_serialize__")))return;if(t.flags&N.default.TypeFlags.Unknown)return{type:t,typeStr:e.typeToString(t),reason:"is unknown, which could be serializable or not, please make the type for specific"};let c=t.flags&N.default.TypeFlags.Any;if(!o.allowAny&&c)return{type:t,typeStr:e.typeToString(t),reason:"is any, which is not serializable"};if(t.flags&N.default.TypeFlags.ESSymbolLike)return{type:t,typeStr:e.typeToString(t),reason:"is Symbol, which is not serializable"};if(t.flags&N.default.TypeFlags.Enum)return{type:t,typeStr:e.typeToString(t),reason:"is an enum, use an string or a number instead"};if(hl(t))return;if(t.getCallSignatures().length>0){let g=t.symbol.name;if(g==="PropFnInterface"||g==="RefFnInterface"||g==="bivarianceHack")return;let l="is a function, which is not serializable";if(i===0&&N.default.isIdentifier(n)){let d=`const ${n.text} = $(
|
|
294
|
+
`}})}}}}},Program(f){let p=i.get(f),g=a.getSymbolAtLocation(p);g&&(c=a.getExportsOfModule(g))},"Program:exit"(){y(n.globalScope)}}}});function cv(r,e,t,n,o){let i=e.getTypeAtLocation(t);return dv(r,e,i,t,n,o,new Set)}function fv(r){let e="";return r.location?e+=`"${r.location}" `:e+="it ",e+=`${r.reason}`,e}function dv(r,e,t,n,o,i,a){let u=Ce(r,e,t,n,i,0,a);if(u){let c=u.location;return c&&(u.location=`${o.name}.${c}`),u}return u}function Ce(r,e,t,n,o,i,a){if(a.has(t)||(a.add(t),t.getProperty("__no_serialize__")))return;if(t.flags&N.default.TypeFlags.Unknown)return{type:t,typeStr:e.typeToString(t),reason:"is unknown, which could be serializable or not, please make the type for specific"};let c=t.flags&N.default.TypeFlags.Any;if(!o.allowAny&&c)return{type:t,typeStr:e.typeToString(t),reason:"is any, which is not serializable"};if(t.flags&N.default.TypeFlags.ESSymbolLike)return{type:t,typeStr:e.typeToString(t),reason:"is Symbol, which is not serializable"};if(t.flags&N.default.TypeFlags.Enum)return{type:t,typeStr:e.typeToString(t),reason:"is an enum, use an string or a number instead"};if(hl(t))return;if(t.getCallSignatures().length>0){let g=t.symbol.name;if(g==="PropFnInterface"||g==="RefFnInterface"||g==="bivarianceHack"||g==="FunctionComponent")return;let l="is a function, which is not serializable";if(i===0&&N.default.isIdentifier(n)){let d=`const ${n.text} = $(
|
|
295
295
|
${bl(t.symbol,r.getSourceCode().text)}
|
|
296
296
|
);`;l+=`.
|
|
297
297
|
Did you mean to wrap it in \`$()\`?
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-qwik",
|
|
3
3
|
"description": "An Open-Source sub-framework designed with a focus on server-side-rendering, lazy-loading, and styling/animation.",
|
|
4
|
-
"version": "1.2.
|
|
4
|
+
"version": "1.2.9",
|
|
5
5
|
"author": "Builder Team",
|
|
6
6
|
"bugs": "https://github.com/BuilderIO/qwik/issues",
|
|
7
7
|
"dependencies": {
|