@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(), { reenter: true })
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;AAgEnD,eAAO,MAAM,kBAAkB,EAAE,IAmEhC,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
- const isReenterOnlyOptions = (node) => {
39
- if (node?.type !== "ObjectExpression" || node.properties.length !== 1)
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
- redundantReenterResolver: "Replace this resolver with .reenter(). It applies the same default construction while explicitly reentering the selected state.",
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
- (node.arguments.length !== 1 && node.arguments.length !== 2) ||
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 options = node.arguments[1];
90
- if (options?.type === "SpreadElement")
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":"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"}
1
+ {"version":3,"file":"noRedundantResolve.js","sourceRoot":"","sources":["../../../src/internal/rules/noRedundantResolve.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typeonce/oxlint-plugin-effect-machine",
3
- "version": "0.32.0",
3
+ "version": "0.33.0",
4
4
  "description": "Oxlint rules for Effect Machine models",
5
5
  "author": "Sandro Maglione",
6
6
  "repository": {
@@ -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
- const isReenterOnlyOptions = (node: ESTree.Expression | undefined): boolean => {
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. A targetless transition performs the same work as to.none; use to.none directly."
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
- (node.arguments.length !== 1 && node.arguments.length !== 2) ||
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 options = node.arguments[1]
111
- if (options?.type === "SpreadElement") return
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,