@eslint-react/var 1.17.3-beta.1 → 1.17.3-beta.2
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/dist/index.js +37 -15
- package/dist/index.mjs +37 -15
- package/package.json +7 -7
package/dist/index.js
CHANGED
|
@@ -238,24 +238,46 @@ function isNodeValueEqual(a, b, initialScopes) {
|
|
|
238
238
|
if (a.type === types.AST_NODE_TYPES.Identifier && b.type === types.AST_NODE_TYPES.Identifier) {
|
|
239
239
|
const va = findVariable(a, aScope);
|
|
240
240
|
const vb = findVariable(b, bScope);
|
|
241
|
+
const da = tools.O.flatMap(va, getVariableDef(0));
|
|
242
|
+
const db = tools.O.flatMap(vb, getVariableDef(0));
|
|
243
|
+
const dapp = tools.O.flatMapNullable(da, (d) => d.parent?.parent);
|
|
244
|
+
const dbpp = tools.O.flatMapNullable(db, (d) => d.parent?.parent);
|
|
241
245
|
const na = tools.O.flatMap(va, getVariableNode(0));
|
|
242
246
|
const nb = tools.O.flatMap(vb, getVariableNode(0));
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
247
|
+
const nap = tools.O.flatMapNullable(na, (n) => n.parent);
|
|
248
|
+
const nbp = tools.O.flatMapNullable(nb, (n) => n.parent);
|
|
249
|
+
switch (true) {
|
|
250
|
+
case (tools.O.exists(nap, AST__namespace.is(types.AST_NODE_TYPES.CallExpression)) && tools.O.exists(nbp, AST__namespace.is(types.AST_NODE_TYPES.CallExpression)) && tools.O.exists(na, AST__namespace.isFunction) && tools.O.exists(nb, AST__namespace.isFunction)): {
|
|
251
|
+
const hasSameCallee = tools.F.pipe(
|
|
252
|
+
tools.O.Do,
|
|
253
|
+
tools.O.bind("ca", () => tools.O.map(nap, (n) => n.callee)),
|
|
254
|
+
tools.O.bind("cb", () => tools.O.map(nbp, (n) => n.callee)),
|
|
255
|
+
tools.O.exists(({ ca, cb }) => AST__namespace.isNodeEqual(ca, cb))
|
|
256
|
+
);
|
|
257
|
+
if (!hasSameCallee) return false;
|
|
258
|
+
return tools.F.pipe(
|
|
259
|
+
tools.O.Do,
|
|
260
|
+
tools.O.bind("paramsA", () => tools.O.map(na, (n) => n.params)),
|
|
261
|
+
tools.O.bind("paramsB", () => tools.O.map(nb, (n) => n.params)),
|
|
262
|
+
tools.O.let("posA", ({ paramsA }) => paramsA.findIndex((p) => AST__namespace.isNodeEqual(p, a))),
|
|
263
|
+
tools.O.let("posB", ({ paramsB }) => paramsB.findIndex((p) => AST__namespace.isNodeEqual(p, b))),
|
|
264
|
+
tools.O.filter(({ posA, posB }) => posA !== -1 && posB !== -1),
|
|
265
|
+
tools.O.exists(({ posA, posB }) => posA === posB)
|
|
266
|
+
);
|
|
267
|
+
}
|
|
268
|
+
case (tools.O.exists(dapp, AST__namespace.is(types.AST_NODE_TYPES.ForOfStatement)) && tools.O.exists(dbpp, AST__namespace.is(types.AST_NODE_TYPES.ForOfStatement))): {
|
|
269
|
+
return tools.F.pipe(
|
|
270
|
+
tools.O.Do,
|
|
271
|
+
tools.O.bind("rightA", () => tools.O.map(dapp, (d) => d.right)),
|
|
272
|
+
tools.O.bind("rightB", () => tools.O.map(dbpp, (d) => d.right)),
|
|
273
|
+
tools.O.exists(({ rightA, rightB }) => AST__namespace.isNodeEqual(rightA, rightB))
|
|
274
|
+
);
|
|
275
|
+
}
|
|
276
|
+
default: {
|
|
277
|
+
if (tools.O.isNone(na) || tools.O.isNone(nb)) return false;
|
|
278
|
+
return na.value === nb.value;
|
|
279
|
+
}
|
|
257
280
|
}
|
|
258
|
-
return na.value === nb.value;
|
|
259
281
|
}
|
|
260
282
|
if (a.type === types.AST_NODE_TYPES.MemberExpression && b.type === types.AST_NODE_TYPES.MemberExpression) {
|
|
261
283
|
return AST__namespace.isNodeEqual(a.property, b.property) && isNodeValueEqual(a.object, b.object, initialScopes);
|
package/dist/index.mjs
CHANGED
|
@@ -216,24 +216,46 @@ function isNodeValueEqual(a, b, initialScopes) {
|
|
|
216
216
|
if (a.type === AST_NODE_TYPES.Identifier && b.type === AST_NODE_TYPES.Identifier) {
|
|
217
217
|
const va = findVariable(a, aScope);
|
|
218
218
|
const vb = findVariable(b, bScope);
|
|
219
|
+
const da = O.flatMap(va, getVariableDef(0));
|
|
220
|
+
const db = O.flatMap(vb, getVariableDef(0));
|
|
221
|
+
const dapp = O.flatMapNullable(da, (d) => d.parent?.parent);
|
|
222
|
+
const dbpp = O.flatMapNullable(db, (d) => d.parent?.parent);
|
|
219
223
|
const na = O.flatMap(va, getVariableNode(0));
|
|
220
224
|
const nb = O.flatMap(vb, getVariableNode(0));
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
225
|
+
const nap = O.flatMapNullable(na, (n) => n.parent);
|
|
226
|
+
const nbp = O.flatMapNullable(nb, (n) => n.parent);
|
|
227
|
+
switch (true) {
|
|
228
|
+
case (O.exists(nap, AST.is(AST_NODE_TYPES.CallExpression)) && O.exists(nbp, AST.is(AST_NODE_TYPES.CallExpression)) && O.exists(na, AST.isFunction) && O.exists(nb, AST.isFunction)): {
|
|
229
|
+
const hasSameCallee = F.pipe(
|
|
230
|
+
O.Do,
|
|
231
|
+
O.bind("ca", () => O.map(nap, (n) => n.callee)),
|
|
232
|
+
O.bind("cb", () => O.map(nbp, (n) => n.callee)),
|
|
233
|
+
O.exists(({ ca, cb }) => AST.isNodeEqual(ca, cb))
|
|
234
|
+
);
|
|
235
|
+
if (!hasSameCallee) return false;
|
|
236
|
+
return F.pipe(
|
|
237
|
+
O.Do,
|
|
238
|
+
O.bind("paramsA", () => O.map(na, (n) => n.params)),
|
|
239
|
+
O.bind("paramsB", () => O.map(nb, (n) => n.params)),
|
|
240
|
+
O.let("posA", ({ paramsA }) => paramsA.findIndex((p) => AST.isNodeEqual(p, a))),
|
|
241
|
+
O.let("posB", ({ paramsB }) => paramsB.findIndex((p) => AST.isNodeEqual(p, b))),
|
|
242
|
+
O.filter(({ posA, posB }) => posA !== -1 && posB !== -1),
|
|
243
|
+
O.exists(({ posA, posB }) => posA === posB)
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
case (O.exists(dapp, AST.is(AST_NODE_TYPES.ForOfStatement)) && O.exists(dbpp, AST.is(AST_NODE_TYPES.ForOfStatement))): {
|
|
247
|
+
return F.pipe(
|
|
248
|
+
O.Do,
|
|
249
|
+
O.bind("rightA", () => O.map(dapp, (d) => d.right)),
|
|
250
|
+
O.bind("rightB", () => O.map(dbpp, (d) => d.right)),
|
|
251
|
+
O.exists(({ rightA, rightB }) => AST.isNodeEqual(rightA, rightB))
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
default: {
|
|
255
|
+
if (O.isNone(na) || O.isNone(nb)) return false;
|
|
256
|
+
return na.value === nb.value;
|
|
257
|
+
}
|
|
235
258
|
}
|
|
236
|
-
return na.value === nb.value;
|
|
237
259
|
}
|
|
238
260
|
if (a.type === AST_NODE_TYPES.MemberExpression && b.type === AST_NODE_TYPES.MemberExpression) {
|
|
239
261
|
return AST.isNodeEqual(a.property, b.property) && isNodeValueEqual(a.object, b.object, initialScopes);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eslint-react/var",
|
|
3
|
-
"version": "1.17.3-beta.
|
|
3
|
+
"version": "1.17.3-beta.2",
|
|
4
4
|
"description": "TSESTree AST utility module for static analysis of variables",
|
|
5
5
|
"homepage": "https://github.com/rel1cx/eslint-react",
|
|
6
6
|
"bugs": {
|
|
@@ -35,13 +35,13 @@
|
|
|
35
35
|
"./package.json"
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@typescript-eslint/scope-manager": "^8.
|
|
39
|
-
"@typescript-eslint/types": "^8.
|
|
40
|
-
"@typescript-eslint/utils": "^8.
|
|
38
|
+
"@typescript-eslint/scope-manager": "^8.17.0",
|
|
39
|
+
"@typescript-eslint/types": "^8.17.0",
|
|
40
|
+
"@typescript-eslint/utils": "^8.17.0",
|
|
41
41
|
"ts-pattern": "^5.5.0",
|
|
42
|
-
"@eslint-react/ast": "1.17.3-beta.
|
|
43
|
-
"@eslint-react/types": "1.17.3-beta.
|
|
44
|
-
"@eslint-react/tools": "1.17.3-beta.
|
|
42
|
+
"@eslint-react/ast": "1.17.3-beta.2",
|
|
43
|
+
"@eslint-react/types": "1.17.3-beta.2",
|
|
44
|
+
"@eslint-react/tools": "1.17.3-beta.2"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"string-ts": "^2.2.0",
|