@typeonce/oxlint-plugin-effect-machine 0.32.0 → 0.33.0
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/README.md
CHANGED
|
@@ -84,7 +84,7 @@ Resolver-only reentry uses `.reenter()`:
|
|
|
84
84
|
|
|
85
85
|
```ts
|
|
86
86
|
// Before
|
|
87
|
-
to.local.Ready().resolve(({ target }) => target.from()
|
|
87
|
+
to.local.Ready().reenter().resolve(({ target }) => target.from())
|
|
88
88
|
|
|
89
89
|
// After `oxlint --fix`
|
|
90
90
|
to.local.Ready().reenter()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noRedundantResolve.d.ts","sourceRoot":"","sources":["../../../src/internal/rules/noRedundantResolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,IAAI,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"noRedundantResolve.d.ts","sourceRoot":"","sources":["../../../src/internal/rules/noRedundantResolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAuDnD,eAAO,MAAM,kBAAkB,EAAE,IAwDhC,CAAA"}
|
|
@@ -34,18 +34,9 @@ const isDefaultTargetConstruction = (node, binding) => node?.type === "CallExpre
|
|
|
34
34
|
node.callee.object.type === "Identifier" &&
|
|
35
35
|
node.callee.object.name === binding;
|
|
36
36
|
const isEmptyResolver = (node) => node.body?.type === "BlockStatement" && node.body.body.length === 0;
|
|
37
|
-
const isTargetlessReceiver = (node) => node.type === "MemberExpression" && staticMemberName(node) === "none"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return false;
|
|
41
|
-
const property = node.properties[0];
|
|
42
|
-
return property?.type === "Property" &&
|
|
43
|
-
!property.computed &&
|
|
44
|
-
property.key.type === "Identifier" &&
|
|
45
|
-
property.key.name === "reenter" &&
|
|
46
|
-
property.value.type === "Literal" &&
|
|
47
|
-
property.value.value === true;
|
|
48
|
-
};
|
|
37
|
+
const isTargetlessReceiver = (node) => (node.type === "MemberExpression" && staticMemberName(node) === "none") ||
|
|
38
|
+
(node.type === "CallExpression" && node.arguments.length === 0 && node.callee.type === "MemberExpression" &&
|
|
39
|
+
staticMemberName(node.callee) === "reenter" && isTargetlessReceiver(node.callee.object));
|
|
49
40
|
export const noRedundantResolve = {
|
|
50
41
|
meta: {
|
|
51
42
|
type: "suggestion",
|
|
@@ -57,8 +48,7 @@ export const noRedundantResolve = {
|
|
|
57
48
|
schema: [],
|
|
58
49
|
messages: {
|
|
59
50
|
redundantResolver: "Remove this resolver. The selected target already applies default construction, so use the target selector directly.",
|
|
60
|
-
|
|
61
|
-
redundantTargetlessResolver: "Remove this empty resolver. A targetless transition performs the same work as to.none; use to.none directly."
|
|
51
|
+
redundantTargetlessResolver: "Remove this empty resolver. Use the targetless selector directly, preserving its modifiers."
|
|
62
52
|
}
|
|
63
53
|
},
|
|
64
54
|
create(context) {
|
|
@@ -67,7 +57,7 @@ export const noRedundantResolve = {
|
|
|
67
57
|
ImportDeclaration: (node) => recordMachineImport(bindings, node),
|
|
68
58
|
CallExpression(node) {
|
|
69
59
|
if (!hasMachineImport(bindings) ||
|
|
70
|
-
|
|
60
|
+
node.arguments.length !== 1 ||
|
|
71
61
|
node.callee.type !== "MemberExpression" ||
|
|
72
62
|
staticMemberName(node.callee) !== "resolve")
|
|
73
63
|
return;
|
|
@@ -86,18 +76,8 @@ export const noRedundantResolve = {
|
|
|
86
76
|
const targetless = isTargetlessReceiver(receiver) && isEmptyResolver(callback);
|
|
87
77
|
if (!defaultConstruction && !targetless)
|
|
88
78
|
return;
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
return;
|
|
92
|
-
const reenter = options === undefined ? false : isReenterOnlyOptions(options);
|
|
93
|
-
if (options !== undefined && !reenter)
|
|
94
|
-
return;
|
|
95
|
-
const messageId = reenter
|
|
96
|
-
? "redundantReenterResolver"
|
|
97
|
-
: targetless
|
|
98
|
-
? "redundantTargetlessResolver"
|
|
99
|
-
: "redundantResolver";
|
|
100
|
-
const replacement = `${context.sourceCode.getText(receiver)}${reenter ? ".reenter()" : ""}`;
|
|
79
|
+
const messageId = targetless ? "redundantTargetlessResolver" : "redundantResolver";
|
|
80
|
+
const replacement = context.sourceCode.getText(receiver);
|
|
101
81
|
context.report({
|
|
102
82
|
node,
|
|
103
83
|
messageId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noRedundantResolve.js","sourceRoot":"","sources":["../../../src/internal/rules/noRedundantResolve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnD,MAAM,kBAAkB,GAAG,CACzB,IAAsD,EAChB,EAAE;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IACxC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAC,IAAI,CAAA;IACzD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACjF,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;AACnC,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CACpB,IAAsD,EAClC,EAAE;IACtB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAChC,IAAI,SAAS,EAAE,IAAI,KAAK,eAAe,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7E,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACxC,IACE,QAAQ,EAAE,IAAI,KAAK,UAAU;QAC7B,QAAQ,CAAC,QAAQ;QACjB,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY;QAClC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ;QAC9B,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY;QACpC,OAAO,SAAS,CAAA;IAClB,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAA;AAC5B,CAAC,CAAA;AAED,MAAM,2BAA2B,GAAG,CAClC,IAA0C,EAC1C,OAAe,EACN,EAAE,CACX,IAAI,EAAE,IAAI,KAAK,gBAAgB;IAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB;IACvC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM;IACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;IACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAA;AAErC,MAAM,eAAe,GAAG,CACtB,IAAsD,EAC7C,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAA;AAEjF,MAAM,oBAAoB,GAAG,CAAC,IAAuB,EAAW,EAAE,CAChE,IAAI,CAAC,IAAI,KAAK,kBAAkB,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"noRedundantResolve.js","sourceRoot":"","sources":["../../../src/internal/rules/noRedundantResolve.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -49,18 +49,9 @@ const isEmptyResolver = (
|
|
|
49
49
|
): boolean => node.body?.type === "BlockStatement" && node.body.body.length === 0
|
|
50
50
|
|
|
51
51
|
const isTargetlessReceiver = (node: ESTree.Expression): boolean =>
|
|
52
|
-
node.type === "MemberExpression" && staticMemberName(node) === "none"
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (node?.type !== "ObjectExpression" || node.properties.length !== 1) return false
|
|
56
|
-
const property = node.properties[0]
|
|
57
|
-
return property?.type === "Property" &&
|
|
58
|
-
!property.computed &&
|
|
59
|
-
property.key.type === "Identifier" &&
|
|
60
|
-
property.key.name === "reenter" &&
|
|
61
|
-
property.value.type === "Literal" &&
|
|
62
|
-
property.value.value === true
|
|
63
|
-
}
|
|
52
|
+
(node.type === "MemberExpression" && staticMemberName(node) === "none") ||
|
|
53
|
+
(node.type === "CallExpression" && node.arguments.length === 0 && node.callee.type === "MemberExpression" &&
|
|
54
|
+
staticMemberName(node.callee) === "reenter" && isTargetlessReceiver(node.callee.object))
|
|
64
55
|
|
|
65
56
|
export const noRedundantResolve: Rule = {
|
|
66
57
|
meta: {
|
|
@@ -74,10 +65,8 @@ export const noRedundantResolve: Rule = {
|
|
|
74
65
|
messages: {
|
|
75
66
|
redundantResolver:
|
|
76
67
|
"Remove this resolver. The selected target already applies default construction, so use the target selector directly.",
|
|
77
|
-
redundantReenterResolver:
|
|
78
|
-
"Replace this resolver with .reenter(). It applies the same default construction while explicitly reentering the selected state.",
|
|
79
68
|
redundantTargetlessResolver:
|
|
80
|
-
"Remove this empty resolver.
|
|
69
|
+
"Remove this empty resolver. Use the targetless selector directly, preserving its modifiers."
|
|
81
70
|
}
|
|
82
71
|
},
|
|
83
72
|
create(context) {
|
|
@@ -87,7 +76,7 @@ export const noRedundantResolve: Rule = {
|
|
|
87
76
|
CallExpression(node) {
|
|
88
77
|
if (
|
|
89
78
|
!hasMachineImport(bindings) ||
|
|
90
|
-
|
|
79
|
+
node.arguments.length !== 1 ||
|
|
91
80
|
node.callee.type !== "MemberExpression" ||
|
|
92
81
|
staticMemberName(node.callee) !== "resolve"
|
|
93
82
|
) return
|
|
@@ -107,17 +96,8 @@ export const noRedundantResolve: Rule = {
|
|
|
107
96
|
const targetless = isTargetlessReceiver(receiver) && isEmptyResolver(callback)
|
|
108
97
|
if (!defaultConstruction && !targetless) return
|
|
109
98
|
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
const reenter = options === undefined ? false : isReenterOnlyOptions(options)
|
|
113
|
-
if (options !== undefined && !reenter) return
|
|
114
|
-
|
|
115
|
-
const messageId = reenter
|
|
116
|
-
? "redundantReenterResolver"
|
|
117
|
-
: targetless
|
|
118
|
-
? "redundantTargetlessResolver"
|
|
119
|
-
: "redundantResolver"
|
|
120
|
-
const replacement = `${context.sourceCode.getText(receiver)}${reenter ? ".reenter()" : ""}`
|
|
99
|
+
const messageId = targetless ? "redundantTargetlessResolver" : "redundantResolver"
|
|
100
|
+
const replacement = context.sourceCode.getText(receiver)
|
|
121
101
|
context.report({
|
|
122
102
|
node,
|
|
123
103
|
messageId,
|