eslint-plugin-qwik 1.3.2 → 1.3.4
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 +4 -4
- package/package.json +5 -5
package/index.js
CHANGED
|
@@ -228,8 +228,8 @@ export default component$((props) => {
|
|
|
228
228
|
)}>Hello world</div>;
|
|
229
229
|
});`.trim();var fl={meta:{type:"problem",docs:{description:"Detect unused server$() functions.",recommended:!0,url:"https://qwik.builder.io/docs/advanced/eslint/#unused-server"},messages:{unusedServer:`Unused server$(). Seems like you are declaring a new server$ function, but you are never calling it. You might want to do:
|
|
230
230
|
|
|
231
|
-
{{ suggestion }}`}},create(r){return{CallExpression(e){if(e.callee.type!=="Identifier")return;if(e.callee.name==="server$"){let n=!1;
|
|
232
|
-
await serverFn(...)
|
|
231
|
+
{{ suggestion }}`}},create(r){return{CallExpression(e){if(e.callee.type!=="Identifier")return;if(e.callee.name==="server$"){let n=!1;(e.parent.type==="ExpressionStatement"||e.parent.type==="AwaitExpression"&&e.parent.parent.type==="ExpressionStatement")&&(n=!0),n&&r.report({node:e.callee,messageId:"unusedServer",data:{suggestion:`const serverFn = server$(...);
|
|
232
|
+
await serverFn(...);`}})}}}}},jx=`
|
|
233
233
|
import { component$ } from '@builder.io/qwik';
|
|
234
234
|
import { server$ } from '@builder.io/qwik-city';
|
|
235
235
|
|
|
@@ -286,7 +286,7 @@ Did you mean to wrap it in \`$()\`?
|
|
|
286
286
|
|
|
287
287
|
{{solution}}
|
|
288
288
|
Check out https://qwik.builder.io/docs/advanced/dollar/ for more details.`,mutableIdentifier:`Mutating let "{{varName}}" within the ({{dollarName}}) closure is not allowed, instead create an object/store/signal and mutate one of its properties.
|
|
289
|
-
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.sourceCode.scopeManager,o=Sn.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 V=p.identifier,ke=i.get(V),R=l;for(;R&&!u.has(R);)R=R.upper;if(R!==S){V.parent&&V.parent.type==="AssignmentExpression"&&V.parent.left===V&&r.report({messageId:"mutableIdentifier",node:p.identifier,data:{varName:p.identifier.name,dollarName:O}});let ce=gv(r,a,ke,p.identifier,t);ce&&r.report({messageId:"referencesOutside",node:p.identifier,data:{varName:p.identifier.name,dollarName:O,reason:vv(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
|
|
289
|
+
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.sourceCode.scopeManager,o=Sn.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 V=p.identifier,ke=i.get(V),R=l;for(;R&&!u.has(R);)R=R.upper;if(R!==S){V.parent&&V.parent.type==="AssignmentExpression"&&V.parent.left===V&&r.report({messageId:"mutableIdentifier",node:p.identifier,data:{varName:p.identifier.name,dollarName:O}});let ce=gv(r,a,ke,p.identifier,t);ce&&r.report({messageId:"referencesOutside",node:p.identifier,data:{varName:p.identifier.name,dollarName:O,reason:vv(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 QRL`}});else{if(h.symbol.name==="PropFnInterface")return;r.report({messageId:"invalidJsxDollar",node:l.expression,data:{varName:l.expression.name,solution:`const ${l.expression.name} = $(
|
|
290
290
|
${bl(h.symbol,r.sourceCode.text)}
|
|
291
291
|
);
|
|
292
292
|
`}})}}}}},Program(f){let p=i.get(f),g=a.getSymbolAtLocation(p);g&&(c=a.getExportsOfModule(g))},"Program:exit"(){y(n.globalScope)}}}});function gv(r,e,t,n,o){let i=e.getTypeAtLocation(t);return hv(r,e,i,t,n,o,new Set)}function vv(r){let e="";return r.location?e+=`"${r.location}" `:e+="it ",e+=`${r.reason}`,e}function hv(r,e,t,n,o,i,a){let u=_e(r,e,t,n,i,0,a);if(u){let c=u.location;return c&&(u.location=`${o.name}.${c}`),u}return u}function _e(r,e,t,n,o,i,a){if(a.has(t)||(a.add(t),t.getProperty("__no_serialize__")||t.getProperty("__qwik_serializable__")))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,7 +295,7 @@ ${bl(t.symbol,r.sourceCode.text)}
|
|
|
295
295
|
Did you mean to wrap it in \`$()\`?
|
|
296
296
|
|
|
297
297
|
${d}
|
|
298
|
-
`}return{type:t,typeStr:e.typeToString(t),reason:l}}if(t.isUnion()){for(let g of t.types){let l=_e(r,e,g,n,o,i+1,a);if(l)return l}return}if((t.flags&N.default.TypeFlags.Object)!==0){let g=xv(t,e);if(g)return _e(r,e,g,n,o,i+1,a);let l=Sv(t,e);if(l){for(let h of l){let S=_e(r,e,h,n,o,i+1,a);if(S)return S}return}let d=t.symbol.name;if(t.getProperty("nextElementSibling")||t.getProperty("activeElement")||d in Ev)return;if(t.isClass())return{type:t,typeStr:e.typeToString(t),reason:`is an instance of the "${t.symbol.name}" class, which is not serializable. Use a simple object literal instead`};let x=t.getProperty("prototype");if(x){let h=e.getTypeOfSymbolAtLocation(x,n);if(h.isClass())return{type:h,typeStr:e.typeToString(h),reason:"is a class constructor, which is not serializable"}}if(!d.startsWith("__")&&t.symbol.valueDeclaration)return{type:t,typeStr:e.typeToString(t),reason:`is an instance of the "${t.symbol.name}" class, which is not serializable`};for(let h of t.getProperties()){let S=bv(r,e,h,n,o,i+1,a);if(S){let O=S.location;return S.location=`${h.name}${O?`.${O}`:""}`,S}}}}function bv(r,e,t,n,o,i,a){let u=e.getTypeOfSymbolAtLocation(t,n);return _e(r,e,u,n,o,i,a)}function xv(r,e){return e.getElementTypeOfArrayType(r)}function Sv(r,e){return e.isTupleType(r)?e.getTypeArguments(r):void 0}function hl(r){return!!(r.flags&N.default.TypeFlags.Any)||!!r.getProperty("__brand__QRL__")}function bl(r,e){if(r.declarations&&r.declarations.length>0){let t=r.declarations[0],n=e.slice(t.pos,t.end).replace(/^\s*$/gm,"");return xn(n,2)}return""}var Ev={Promise:!0,URL:!0,RegExp:!0,Date:!0,FormData:!0,URLSearchParams:!0,Error:!0,Set:!0,Map:!0},Yx=`
|
|
298
|
+
`}return{type:t,typeStr:e.typeToString(t),reason:l}}if(t.isUnion()){for(let g of t.types){let l=_e(r,e,g,n,o,i+1,a);if(l)return l}return}if((t.flags&N.default.TypeFlags.Object)!==0){let g=xv(t,e);if(g)return _e(r,e,g,n,o,i+1,a);let l=Sv(t,e);if(l){for(let h of l){let S=_e(r,e,h,n,o,i+1,a);if(S)return S}return}let d=t.symbol.name;if(t.getProperty("nextElementSibling")||t.getProperty("activeElement")||d in Ev)return;if(t.isClass())return{type:t,typeStr:e.typeToString(t),reason:`is an instance of the "${t.symbol.name}" class, which is not serializable. Use a simple object literal instead`};let x=t.getProperty("prototype");if(x){let h=e.getTypeOfSymbolAtLocation(x,n);if(h.isClass())return{type:h,typeStr:e.typeToString(h),reason:"is a class constructor, which is not serializable"}}if(!d.startsWith("__")&&t.symbol.valueDeclaration)return{type:t,typeStr:e.typeToString(t),reason:`is an instance of the "${t.symbol.name}" class, which is not serializable`};for(let h of t.getProperties()){let S=bv(r,e,h,n,o,i+1,a);if(S){let O=S.location;return S.location=`${h.name}${O?`.${O}`:""}`,S}}}}function bv(r,e,t,n,o,i,a){let u=e.getTypeOfSymbolAtLocation(t,n);return _e(r,e,u,n,o,i,a)}function xv(r,e){return e.getElementTypeOfArrayType(r)}function Sv(r,e){return e.isTupleType(r)?e.getTypeArguments(r):void 0}function hl(r){return!!(r.flags&N.default.TypeFlags.Any)||!!r.getNonNullableType().getProperty("__brand__QRL__")}function bl(r,e){if(r.declarations&&r.declarations.length>0){let t=r.declarations[0],n=e.slice(t.pos,t.end).replace(/^\s*$/gm,"");return xn(n,2)}return""}var Ev={Promise:!0,URL:!0,RegExp:!0,Date:!0,FormData:!0,URLSearchParams:!0,Error:!0,Set:!0,Map:!0},Yx=`
|
|
299
299
|
import { component$, useTask$, $ } from '@builder.io/qwik';
|
|
300
300
|
|
|
301
301
|
export const HelloWorld = component$(() => {
|
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.3.
|
|
4
|
+
"version": "1.3.4",
|
|
5
5
|
"author": "Builder Team",
|
|
6
6
|
"bugs": "https://github.com/BuilderIO/qwik/issues",
|
|
7
7
|
"dependencies": {
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
},
|
|
10
10
|
"devDependencies": {
|
|
11
11
|
"@builder.io/qwik": "workspace:*",
|
|
12
|
-
"@types/eslint": "^8.
|
|
12
|
+
"@types/eslint": "^8.56.1",
|
|
13
13
|
"@types/estree": "^1.0.2",
|
|
14
|
-
"@typescript-eslint/rule-tester": "^6.
|
|
15
|
-
"@typescript-eslint/utils": "^6.
|
|
14
|
+
"@typescript-eslint/rule-tester": "^6.18.1",
|
|
15
|
+
"@typescript-eslint/utils": "^6.18.1",
|
|
16
16
|
"redent": "^4.0.0"
|
|
17
17
|
},
|
|
18
18
|
"engines": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"license": "MIT",
|
|
28
28
|
"main": "index.js",
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"eslint": "^8.
|
|
30
|
+
"eslint": "^8.56.0"
|
|
31
31
|
},
|
|
32
32
|
"repository": {
|
|
33
33
|
"type": "git",
|