@eslint-react/var 1.20.2-next.2 → 1.20.2-next.5
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.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +78 -78
- package/dist/index.mjs +1 -1
- package/package.json +4 -4
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as effect_Unify from 'effect/Unify';
|
|
2
|
-
import { Data, O } from '@eslint-react/
|
|
2
|
+
import { Data, O } from '@eslint-react/eff';
|
|
3
3
|
import * as _typescript_eslint_scope_manager from '@typescript-eslint/scope-manager';
|
|
4
4
|
import { Scope, Variable, ScopeManager, Definition } from '@typescript-eslint/scope-manager';
|
|
5
5
|
import { TSESTree } from '@typescript-eslint/types';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as effect_Unify from 'effect/Unify';
|
|
2
|
-
import { Data, O } from '@eslint-react/
|
|
2
|
+
import { Data, O } from '@eslint-react/eff';
|
|
3
3
|
import * as _typescript_eslint_scope_manager from '@typescript-eslint/scope-manager';
|
|
4
4
|
import { Scope, Variable, ScopeManager, Definition } from '@typescript-eslint/scope-manager';
|
|
5
5
|
import { TSESTree } from '@typescript-eslint/types';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var AST = require('@eslint-react/ast');
|
|
4
|
-
var
|
|
4
|
+
var eff = require('@eslint-react/eff');
|
|
5
5
|
var scopeManager = require('@typescript-eslint/scope-manager');
|
|
6
6
|
var types = require('@typescript-eslint/types');
|
|
7
7
|
var tsPattern = require('ts-pattern');
|
|
@@ -29,25 +29,25 @@ var AST__namespace = /*#__PURE__*/_interopNamespace(AST);
|
|
|
29
29
|
var ASTUtils__namespace = /*#__PURE__*/_interopNamespace(ASTUtils);
|
|
30
30
|
|
|
31
31
|
// src/construction.ts
|
|
32
|
-
var Construction =
|
|
32
|
+
var Construction = eff.Data.taggedEnum();
|
|
33
33
|
var ConstructionHint = {
|
|
34
34
|
None: 0n,
|
|
35
35
|
StrictCallExpression: 1n << 0n
|
|
36
36
|
};
|
|
37
37
|
function inspectConstruction(node, initialScope, hint = ConstructionHint.None) {
|
|
38
38
|
const detect = (node2) => {
|
|
39
|
-
return tsPattern.match(node2).when(AST__namespace.is(types.AST_NODE_TYPES.ArrayExpression), (node3) => Construction.Array({ node: node3, usage:
|
|
39
|
+
return tsPattern.match(node2).when(AST__namespace.is(types.AST_NODE_TYPES.ArrayExpression), (node3) => Construction.Array({ node: node3, usage: eff.O.none() })).when(AST__namespace.is(types.AST_NODE_TYPES.ObjectExpression), (node3) => Construction.ObjectExpression({ node: node3, usage: eff.O.none() })).when(AST__namespace.is(types.AST_NODE_TYPES.ClassExpression), (node3) => Construction.ClassExpression({ node: node3, usage: eff.O.none() })).when(AST__namespace.is(types.AST_NODE_TYPES.JSXElement), (node3) => Construction.JSXElement({ node: node3, usage: eff.O.none() })).when(AST__namespace.is(types.AST_NODE_TYPES.JSXFragment), (node3) => Construction.JSXFragment({ node: node3, usage: eff.O.none() })).when(AST__namespace.is(types.AST_NODE_TYPES.CallExpression), (node3) => {
|
|
40
40
|
if (hint & ConstructionHint.StrictCallExpression) {
|
|
41
|
-
return Construction.CallExpression({ node: node3, usage:
|
|
41
|
+
return Construction.CallExpression({ node: node3, usage: eff.O.none() });
|
|
42
42
|
}
|
|
43
43
|
return Construction.None();
|
|
44
|
-
}).when(AST__namespace.is(types.AST_NODE_TYPES.NewExpression), (node3) => Construction.NewExpression({ node: node3, usage:
|
|
44
|
+
}).when(AST__namespace.is(types.AST_NODE_TYPES.NewExpression), (node3) => Construction.NewExpression({ node: node3, usage: eff.O.none() })).when(
|
|
45
45
|
AST__namespace.isOneOf([
|
|
46
46
|
types.AST_NODE_TYPES.FunctionExpression,
|
|
47
47
|
types.AST_NODE_TYPES.ArrowFunctionExpression
|
|
48
48
|
]),
|
|
49
49
|
(node3) => {
|
|
50
|
-
return Construction.FunctionExpression({ node: node3, usage:
|
|
50
|
+
return Construction.FunctionExpression({ node: node3, usage: eff.O.none() });
|
|
51
51
|
}
|
|
52
52
|
).when(AST__namespace.is(types.AST_NODE_TYPES.MemberExpression), (node3) => {
|
|
53
53
|
if (!("object" in node3)) return Construction.None();
|
|
@@ -55,7 +55,7 @@ function inspectConstruction(node, initialScope, hint = ConstructionHint.None) {
|
|
|
55
55
|
if (object._tag === "None") return object;
|
|
56
56
|
return {
|
|
57
57
|
...object,
|
|
58
|
-
usage:
|
|
58
|
+
usage: eff.O.some(node3.object)
|
|
59
59
|
};
|
|
60
60
|
}).when(AST__namespace.is(types.AST_NODE_TYPES.AssignmentExpression), (node3) => {
|
|
61
61
|
if (!("right" in node3)) return Construction.None();
|
|
@@ -63,7 +63,7 @@ function inspectConstruction(node, initialScope, hint = ConstructionHint.None) {
|
|
|
63
63
|
if (right._tag === "None") return right;
|
|
64
64
|
return Construction.AssignmentExpression({
|
|
65
65
|
node: right.node,
|
|
66
|
-
usage:
|
|
66
|
+
usage: eff.O.some(node3)
|
|
67
67
|
});
|
|
68
68
|
}).when(AST__namespace.is(types.AST_NODE_TYPES.AssignmentPattern), (node3) => {
|
|
69
69
|
if (!("right" in node3)) return Construction.None();
|
|
@@ -71,7 +71,7 @@ function inspectConstruction(node, initialScope, hint = ConstructionHint.None) {
|
|
|
71
71
|
if (right._tag === "None") return right;
|
|
72
72
|
return Construction.AssignmentPattern({
|
|
73
73
|
node: right.node,
|
|
74
|
-
usage:
|
|
74
|
+
usage: eff.O.some(node3)
|
|
75
75
|
});
|
|
76
76
|
}).when(AST__namespace.is(types.AST_NODE_TYPES.LogicalExpression), (node3) => {
|
|
77
77
|
if (!("left" in node3 && "right" in node3)) return Construction.None();
|
|
@@ -79,16 +79,16 @@ function inspectConstruction(node, initialScope, hint = ConstructionHint.None) {
|
|
|
79
79
|
if (left._tag !== "None") return left;
|
|
80
80
|
return detect(node3.right);
|
|
81
81
|
}).when(AST__namespace.is(types.AST_NODE_TYPES.ConditionalExpression), (node3) => {
|
|
82
|
-
if (!("consequent" in node3 && "alternate" in node3 && !
|
|
82
|
+
if (!("consequent" in node3 && "alternate" in node3 && !eff.isNullable(node3.alternate))) {
|
|
83
83
|
return Construction.None();
|
|
84
84
|
}
|
|
85
85
|
const consequent = detect(node3.consequent);
|
|
86
86
|
if (consequent._tag !== "None") return Construction.None();
|
|
87
87
|
return detect(node3.alternate);
|
|
88
88
|
}).when(AST__namespace.is(types.AST_NODE_TYPES.Identifier), (node3) => {
|
|
89
|
-
if (!("name" in node3 &&
|
|
90
|
-
const maybeLatestDef =
|
|
91
|
-
if (
|
|
89
|
+
if (!("name" in node3 && eff.isString(node3.name))) return Construction.None();
|
|
90
|
+
const maybeLatestDef = eff.O.fromNullable(initialScope.set.get(node3.name)?.defs.at(-1));
|
|
91
|
+
if (eff.O.isNone(maybeLatestDef)) return Construction.None();
|
|
92
92
|
const latestDef = maybeLatestDef.value;
|
|
93
93
|
if (latestDef.type !== scopeManager.DefinitionType.Variable && latestDef.type !== scopeManager.DefinitionType.FunctionName) {
|
|
94
94
|
return Construction.None();
|
|
@@ -96,7 +96,7 @@ function inspectConstruction(node, initialScope, hint = ConstructionHint.None) {
|
|
|
96
96
|
if (latestDef.node.type === types.AST_NODE_TYPES.FunctionDeclaration) {
|
|
97
97
|
return Construction.FunctionDeclaration({
|
|
98
98
|
node: latestDef.node,
|
|
99
|
-
usage:
|
|
99
|
+
usage: eff.O.some(node3)
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
102
|
if (!("init" in latestDef.node) || latestDef.node.init === null) {
|
|
@@ -105,7 +105,7 @@ function inspectConstruction(node, initialScope, hint = ConstructionHint.None) {
|
|
|
105
105
|
return detect(latestDef.node.init);
|
|
106
106
|
}).when(AST__namespace.is(types.AST_NODE_TYPES.Literal), (node3) => {
|
|
107
107
|
if ("regex" in node3) {
|
|
108
|
-
return Construction.RegExpLiteral({ node: node3, usage:
|
|
108
|
+
return Construction.RegExpLiteral({ node: node3, usage: eff.O.none() });
|
|
109
109
|
}
|
|
110
110
|
return Construction.None();
|
|
111
111
|
}).when(
|
|
@@ -114,7 +114,7 @@ function inspectConstruction(node, initialScope, hint = ConstructionHint.None) {
|
|
|
114
114
|
types.AST_NODE_TYPES.TSTypeAssertion
|
|
115
115
|
]),
|
|
116
116
|
() => {
|
|
117
|
-
if (!("expression" in node2) || !
|
|
117
|
+
if (!("expression" in node2) || !eff.isObject(node2.expression)) {
|
|
118
118
|
return Construction.None();
|
|
119
119
|
}
|
|
120
120
|
return detect(node2.expression);
|
|
@@ -123,8 +123,8 @@ function inspectConstruction(node, initialScope, hint = ConstructionHint.None) {
|
|
|
123
123
|
};
|
|
124
124
|
return detect(node);
|
|
125
125
|
}
|
|
126
|
-
var findVariable2 =
|
|
127
|
-
return
|
|
126
|
+
var findVariable2 = eff.F.dual(2, (nameOrNode, initialScope) => {
|
|
127
|
+
return eff.O.fromNullable(ASTUtils__namespace.findVariable(initialScope, nameOrNode));
|
|
128
128
|
});
|
|
129
129
|
|
|
130
130
|
// src/get-child-scopes.ts
|
|
@@ -140,34 +140,34 @@ function getScope(node, scopeManager) {
|
|
|
140
140
|
return null;
|
|
141
141
|
}
|
|
142
142
|
function getStaticValue2(node, initialScope) {
|
|
143
|
-
return
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
return eff.F.pipe(
|
|
144
|
+
eff.O.fromNullable(ASTUtils__namespace.getStaticValue(node, initialScope)),
|
|
145
|
+
eff.O.map((v) => v.value)
|
|
146
146
|
);
|
|
147
147
|
}
|
|
148
148
|
function getVariableDeclaratorID(node, prev) {
|
|
149
149
|
switch (true) {
|
|
150
150
|
case (node.type === types.AST_NODE_TYPES.VariableDeclarator && node.init === prev):
|
|
151
|
-
return
|
|
151
|
+
return eff.O.some(node.id);
|
|
152
152
|
case (node.type === types.AST_NODE_TYPES.AssignmentExpression && node.right === prev):
|
|
153
|
-
return
|
|
153
|
+
return eff.O.some(node.left);
|
|
154
154
|
case (node.type === types.AST_NODE_TYPES.BlockStatement || node.type === types.AST_NODE_TYPES.Program || node.parent === node):
|
|
155
|
-
return
|
|
155
|
+
return eff.O.none();
|
|
156
156
|
default:
|
|
157
157
|
return getVariableDeclaratorID(node.parent, node);
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
function getVariableDef(at) {
|
|
161
161
|
return (variable) => {
|
|
162
|
-
return
|
|
162
|
+
return eff.O.fromNullable(variable.defs[at]);
|
|
163
163
|
};
|
|
164
164
|
}
|
|
165
165
|
function getVariableNode(at) {
|
|
166
166
|
return (variable) => {
|
|
167
|
-
return
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
167
|
+
return eff.F.pipe(
|
|
168
|
+
eff.O.some(variable),
|
|
169
|
+
eff.O.flatMap(getVariableDef(at)),
|
|
170
|
+
eff.O.flatMapNullable((def) => {
|
|
171
171
|
switch (true) {
|
|
172
172
|
case (def.type === scopeManager.DefinitionType.FunctionName && def.node.type === types.AST_NODE_TYPES.FunctionDeclaration):
|
|
173
173
|
return def.node;
|
|
@@ -194,8 +194,8 @@ function getVariables(initialScope) {
|
|
|
194
194
|
return variables.reverse();
|
|
195
195
|
}
|
|
196
196
|
function isInitializedFromSource(name, source, initialScope) {
|
|
197
|
-
const maybeLatestDef =
|
|
198
|
-
if (
|
|
197
|
+
const maybeLatestDef = eff.O.flatMapNullable(findVariable2(name, initialScope), (v) => v.defs.at(-1));
|
|
198
|
+
if (eff.O.isNone(maybeLatestDef)) return false;
|
|
199
199
|
const latestDef = maybeLatestDef.value;
|
|
200
200
|
const { node, parent } = latestDef;
|
|
201
201
|
if (node.type === types.AST_NODE_TYPES.VariableDeclarator && node.init) {
|
|
@@ -209,7 +209,7 @@ function isInitializedFromSource(name, source, initialScope) {
|
|
|
209
209
|
const maybeRequireExpression = tsPattern.match(init).with({
|
|
210
210
|
type: types.AST_NODE_TYPES.CallExpression,
|
|
211
211
|
callee: { type: types.AST_NODE_TYPES.Identifier, name: "require" }
|
|
212
|
-
}, (exp) =>
|
|
212
|
+
}, (exp) => eff.O.some(exp)).with(
|
|
213
213
|
{
|
|
214
214
|
type: types.AST_NODE_TYPES.MemberExpression,
|
|
215
215
|
object: {
|
|
@@ -217,12 +217,12 @@ function isInitializedFromSource(name, source, initialScope) {
|
|
|
217
217
|
callee: { type: types.AST_NODE_TYPES.Identifier, name: "require" }
|
|
218
218
|
}
|
|
219
219
|
},
|
|
220
|
-
({ object }) =>
|
|
221
|
-
).otherwise(
|
|
222
|
-
if (
|
|
220
|
+
({ object }) => eff.O.some(object)
|
|
221
|
+
).otherwise(eff.O.none);
|
|
222
|
+
if (eff.O.isNone(maybeRequireExpression)) return false;
|
|
223
223
|
const requireExpression = maybeRequireExpression.value;
|
|
224
224
|
const [firstArg] = requireExpression.arguments;
|
|
225
|
-
if (firstArg?.type !== types.AST_NODE_TYPES.Literal || !
|
|
225
|
+
if (firstArg?.type !== types.AST_NODE_TYPES.Literal || !eff.isString(firstArg.value)) return false;
|
|
226
226
|
return firstArg.value === source || firstArg.value.startsWith(`${source}/`);
|
|
227
227
|
}
|
|
228
228
|
return tsPattern.isMatching({ type: "ImportDeclaration", source: { value: source } }, parent);
|
|
@@ -245,46 +245,46 @@ function isNodeValueEqual(a, b, initialScopes) {
|
|
|
245
245
|
case (a.type === types.AST_NODE_TYPES.Identifier && b.type === types.AST_NODE_TYPES.Identifier): {
|
|
246
246
|
const aVar = findVariable2(a, aScope);
|
|
247
247
|
const bVar = findVariable2(b, bScope);
|
|
248
|
-
const aVarNode =
|
|
249
|
-
const bVarNode =
|
|
250
|
-
const aVarNodeParent =
|
|
251
|
-
const bVarNodeParent =
|
|
252
|
-
const aDef =
|
|
253
|
-
const bDef =
|
|
254
|
-
const aDefParentParent =
|
|
255
|
-
const bDefParentParent =
|
|
248
|
+
const aVarNode = eff.O.flatMap(aVar, getVariableNode(0));
|
|
249
|
+
const bVarNode = eff.O.flatMap(bVar, getVariableNode(0));
|
|
250
|
+
const aVarNodeParent = eff.O.flatMapNullable(aVarNode, (n) => n.parent);
|
|
251
|
+
const bVarNodeParent = eff.O.flatMapNullable(bVarNode, (n) => n.parent);
|
|
252
|
+
const aDef = eff.O.flatMap(aVar, getVariableDef(0));
|
|
253
|
+
const bDef = eff.O.flatMap(bVar, getVariableDef(0));
|
|
254
|
+
const aDefParentParent = eff.O.flatMapNullable(aDef, (d) => d.parent?.parent);
|
|
255
|
+
const bDefParentParent = eff.O.flatMapNullable(bDef, (d) => d.parent?.parent);
|
|
256
256
|
switch (true) {
|
|
257
|
-
case (
|
|
258
|
-
const hasSameCallee =
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
257
|
+
case (eff.O.exists(aVarNodeParent, AST__namespace.is(types.AST_NODE_TYPES.CallExpression)) && eff.O.exists(bVarNodeParent, AST__namespace.is(types.AST_NODE_TYPES.CallExpression)) && eff.O.exists(aVarNode, AST__namespace.isFunction) && eff.O.exists(bVarNode, AST__namespace.isFunction)): {
|
|
258
|
+
const hasSameCallee = eff.F.pipe(
|
|
259
|
+
eff.O.Do,
|
|
260
|
+
eff.O.bind("aCallee", () => eff.O.map(aVarNodeParent, (n) => n.callee)),
|
|
261
|
+
eff.O.bind("bCallee", () => eff.O.map(bVarNodeParent, (n) => n.callee)),
|
|
262
|
+
eff.O.exists(({ aCallee, bCallee }) => AST__namespace.isNodeEqual(aCallee, bCallee))
|
|
263
263
|
);
|
|
264
264
|
if (!hasSameCallee) return false;
|
|
265
|
-
return
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
265
|
+
return eff.F.pipe(
|
|
266
|
+
eff.O.Do,
|
|
267
|
+
eff.O.bind("aParams", () => eff.O.map(aVarNode, (n) => n.params)),
|
|
268
|
+
eff.O.bind("bParams", () => eff.O.map(bVarNode, (n) => n.params)),
|
|
269
|
+
eff.O.let("aPos", ({ aParams }) => aParams.findIndex(AST__namespace.isNodeEqual(a))),
|
|
270
|
+
eff.O.let("bPos", ({ bParams }) => bParams.findIndex(AST__namespace.isNodeEqual(b))),
|
|
271
|
+
eff.O.filter(({ aPos, bPos }) => aPos !== -1 && bPos !== -1),
|
|
272
|
+
eff.O.exists(({ aPos, bPos }) => aPos === bPos)
|
|
273
273
|
);
|
|
274
274
|
}
|
|
275
|
-
case (
|
|
276
|
-
return
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
275
|
+
case (eff.O.exists(aDefParentParent, AST__namespace.is(types.AST_NODE_TYPES.ForOfStatement)) && eff.O.exists(bDefParentParent, AST__namespace.is(types.AST_NODE_TYPES.ForOfStatement))): {
|
|
276
|
+
return eff.F.pipe(
|
|
277
|
+
eff.O.Do,
|
|
278
|
+
eff.O.bind("aLeft", () => eff.O.map(aDefParentParent, (d) => d.left)),
|
|
279
|
+
eff.O.bind("bLeft", () => eff.O.map(bDefParentParent, (d) => d.left)),
|
|
280
|
+
eff.O.filter(({ aLeft, bLeft }) => aLeft.type === bLeft.type),
|
|
281
|
+
eff.O.bind("aRight", () => eff.O.map(aDefParentParent, (d) => d.right)),
|
|
282
|
+
eff.O.bind("bRight", () => eff.O.map(bDefParentParent, (d) => d.right)),
|
|
283
|
+
eff.O.exists(({ aRight, bRight }) => AST__namespace.isNodeEqual(aRight, bRight))
|
|
284
284
|
);
|
|
285
285
|
}
|
|
286
286
|
default: {
|
|
287
|
-
return
|
|
287
|
+
return eff.O.isSome(aVar) && eff.O.isSome(bVar) && eff.Equal.equals(aVar, bVar);
|
|
288
288
|
}
|
|
289
289
|
}
|
|
290
290
|
}
|
|
@@ -293,19 +293,19 @@ function isNodeValueEqual(a, b, initialScopes) {
|
|
|
293
293
|
}
|
|
294
294
|
case (a.type === types.AST_NODE_TYPES.ThisExpression && b.type === types.AST_NODE_TYPES.ThisExpression): {
|
|
295
295
|
if (aScope.block === bScope.block) return true;
|
|
296
|
-
return
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
296
|
+
return eff.F.pipe(
|
|
297
|
+
eff.O.Do,
|
|
298
|
+
eff.O.bind("aFunction", () => AST__namespace.traverseUp(a, AST__namespace.isOneOf(thisBlockTypes))),
|
|
299
|
+
eff.O.bind("bFunction", () => AST__namespace.traverseUp(b, AST__namespace.isOneOf(thisBlockTypes))),
|
|
300
|
+
eff.O.exists(({ aFunction, bFunction }) => aFunction === bFunction)
|
|
301
301
|
);
|
|
302
302
|
}
|
|
303
303
|
default: {
|
|
304
|
-
return
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
304
|
+
return eff.F.pipe(
|
|
305
|
+
eff.O.Do,
|
|
306
|
+
eff.O.bind("aStatic", () => getStaticValue2(a, aScope)),
|
|
307
|
+
eff.O.bind("bStatic", () => getStaticValue2(b, bScope)),
|
|
308
|
+
eff.O.exists(({ aStatic, bStatic }) => aStatic === bStatic)
|
|
309
309
|
);
|
|
310
310
|
}
|
|
311
311
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as AST from '@eslint-react/ast';
|
|
2
|
-
import { Data, F, O, isString, Equal, isNullable, isObject } from '@eslint-react/
|
|
2
|
+
import { Data, F, O, isString, Equal, isNullable, isObject } from '@eslint-react/eff';
|
|
3
3
|
import { DefinitionType, ScopeType } from '@typescript-eslint/scope-manager';
|
|
4
4
|
import { AST_NODE_TYPES } from '@typescript-eslint/types';
|
|
5
5
|
import { match, isMatching } from 'ts-pattern';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eslint-react/var",
|
|
3
|
-
"version": "1.20.2-next.
|
|
3
|
+
"version": "1.20.2-next.5",
|
|
4
4
|
"description": "ESLint React's TSESTree AST utility module for static analysis of variables",
|
|
5
5
|
"homepage": "https://github.com/rel1cx/eslint-react",
|
|
6
6
|
"bugs": {
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"@typescript-eslint/types": "^8.18.1",
|
|
40
40
|
"@typescript-eslint/utils": "^8.18.1",
|
|
41
41
|
"ts-pattern": "^5.6.0",
|
|
42
|
-
"@eslint-react/
|
|
43
|
-
"@eslint-react/
|
|
44
|
-
"@eslint-react/
|
|
42
|
+
"@eslint-react/types": "1.20.2-next.5",
|
|
43
|
+
"@eslint-react/eff": "1.20.2-next.5",
|
|
44
|
+
"@eslint-react/ast": "1.20.2-next.5"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"string-ts": "^2.2.0",
|