eslint-plugin-runtime-cleanup 1.2.9 → 1.2.10

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.
Files changed (143) hide show
  1. package/dist/_internal/ast-node.d.ts +5 -1
  2. package/dist/_internal/ast-node.d.ts.map +1 -1
  3. package/dist/_internal/ast-node.js +2 -1
  4. package/dist/_internal/ast-node.js.map +1 -1
  5. package/dist/_internal/bounded-cache.d.ts.map +1 -1
  6. package/dist/_internal/bounded-cache.js +2 -1
  7. package/dist/_internal/bounded-cache.js.map +1 -1
  8. package/dist/_internal/expression-boolean-memoizer.d.ts.map +1 -1
  9. package/dist/_internal/expression-boolean-memoizer.js +2 -1
  10. package/dist/_internal/expression-boolean-memoizer.js.map +1 -1
  11. package/dist/_internal/filter-callback.d.ts +5 -1
  12. package/dist/_internal/filter-callback.d.ts.map +1 -1
  13. package/dist/_internal/filter-callback.js +9 -10
  14. package/dist/_internal/filter-callback.js.map +1 -1
  15. package/dist/_internal/floating-resource.d.ts +8 -0
  16. package/dist/_internal/floating-resource.d.ts.map +1 -1
  17. package/dist/_internal/floating-resource.js +42 -36
  18. package/dist/_internal/floating-resource.js.map +1 -1
  19. package/dist/_internal/normalize-expression-text.d.ts +6 -1
  20. package/dist/_internal/normalize-expression-text.d.ts.map +1 -1
  21. package/dist/_internal/normalize-expression-text.js +30 -28
  22. package/dist/_internal/normalize-expression-text.js.map +1 -1
  23. package/dist/_internal/nullish-comparison.d.ts +1 -1
  24. package/dist/_internal/nullish-comparison.d.ts.map +1 -1
  25. package/dist/_internal/nullish-comparison.js +16 -11
  26. package/dist/_internal/nullish-comparison.js.map +1 -1
  27. package/dist/_internal/plugin-settings.d.ts +2 -1
  28. package/dist/_internal/plugin-settings.d.ts.map +1 -1
  29. package/dist/_internal/plugin-settings.js +3 -2
  30. package/dist/_internal/plugin-settings.js.map +1 -1
  31. package/dist/_internal/report-adapter.d.ts +5 -4
  32. package/dist/_internal/report-adapter.d.ts.map +1 -1
  33. package/dist/_internal/report-adapter.js +3 -2
  34. package/dist/_internal/report-adapter.js.map +1 -1
  35. package/dist/_internal/rule-catalog.d.ts.map +1 -1
  36. package/dist/_internal/rule-catalog.js +3 -2
  37. package/dist/_internal/rule-catalog.js.map +1 -1
  38. package/dist/_internal/rule-docs-metadata.d.ts +2 -1
  39. package/dist/_internal/rule-docs-metadata.d.ts.map +1 -1
  40. package/dist/_internal/rule-docs-metadata.js +36 -33
  41. package/dist/_internal/rule-docs-metadata.js.map +1 -1
  42. package/dist/_internal/rules-registry.d.ts +2 -1
  43. package/dist/_internal/rules-registry.d.ts.map +1 -1
  44. package/dist/_internal/rules-registry.js.map +1 -1
  45. package/dist/_internal/runtime-cleanup-config-references.d.ts +2 -1
  46. package/dist/_internal/runtime-cleanup-config-references.d.ts.map +1 -1
  47. package/dist/_internal/runtime-cleanup-config-references.js +2 -1
  48. package/dist/_internal/runtime-cleanup-config-references.js.map +1 -1
  49. package/dist/_internal/scope-variable.d.ts.map +1 -1
  50. package/dist/_internal/scope-variable.js +5 -4
  51. package/dist/_internal/scope-variable.js.map +1 -1
  52. package/dist/_internal/type-checker.d.ts +2 -2
  53. package/dist/_internal/type-checker.d.ts.map +1 -1
  54. package/dist/_internal/type-checker.js +10 -8
  55. package/dist/_internal/type-checker.js.map +1 -1
  56. package/dist/_internal/type-predicate-autofix-safety.d.ts +5 -1
  57. package/dist/_internal/type-predicate-autofix-safety.d.ts.map +1 -1
  58. package/dist/_internal/type-predicate-autofix-safety.js +9 -10
  59. package/dist/_internal/type-predicate-autofix-safety.js.map +1 -1
  60. package/dist/_internal/type-reference-node.d.ts +7 -5
  61. package/dist/_internal/type-reference-node.d.ts.map +1 -1
  62. package/dist/_internal/type-reference-node.js +6 -6
  63. package/dist/_internal/type-reference-node.js.map +1 -1
  64. package/dist/_internal/typed-rule.d.ts +2 -1
  65. package/dist/_internal/typed-rule.d.ts.map +1 -1
  66. package/dist/_internal/typed-rule.js +6 -5
  67. package/dist/_internal/typed-rule.js.map +1 -1
  68. package/dist/_internal/value-rewrite-autofix-safety.d.ts +5 -1
  69. package/dist/_internal/value-rewrite-autofix-safety.d.ts.map +1 -1
  70. package/dist/_internal/value-rewrite-autofix-safety.js +10 -18
  71. package/dist/_internal/value-rewrite-autofix-safety.js.map +1 -1
  72. package/dist/plugin.cjs +565 -656
  73. package/dist/plugin.cjs.map +4 -4
  74. package/dist/plugin.d.cts +2 -1
  75. package/dist/plugin.d.ts +2 -1
  76. package/dist/plugin.d.ts.map +1 -1
  77. package/dist/plugin.js +8 -7
  78. package/dist/plugin.js.map +1 -1
  79. package/dist/rules/no-floating-abort-controllers.d.ts.map +1 -1
  80. package/dist/rules/no-floating-abort-controllers.js +24 -52
  81. package/dist/rules/no-floating-abort-controllers.js.map +1 -1
  82. package/dist/rules/no-floating-audio-contexts.d.ts.map +1 -1
  83. package/dist/rules/no-floating-audio-contexts.js +7 -6
  84. package/dist/rules/no-floating-audio-contexts.js.map +1 -1
  85. package/dist/rules/no-floating-broadcast-channels.d.ts.map +1 -1
  86. package/dist/rules/no-floating-broadcast-channels.js +31 -59
  87. package/dist/rules/no-floating-broadcast-channels.js.map +1 -1
  88. package/dist/rules/no-floating-child-processes.d.ts.map +1 -1
  89. package/dist/rules/no-floating-child-processes.js +43 -45
  90. package/dist/rules/no-floating-child-processes.js.map +1 -1
  91. package/dist/rules/no-floating-disposable-stacks.d.ts.map +1 -1
  92. package/dist/rules/no-floating-disposable-stacks.js +37 -38
  93. package/dist/rules/no-floating-disposable-stacks.js.map +1 -1
  94. package/dist/rules/no-floating-file-watchers.d.ts.map +1 -1
  95. package/dist/rules/no-floating-file-watchers.js +40 -42
  96. package/dist/rules/no-floating-file-watchers.js.map +1 -1
  97. package/dist/rules/no-floating-geolocation-watches.js +20 -20
  98. package/dist/rules/no-floating-geolocation-watches.js.map +1 -1
  99. package/dist/rules/no-floating-infinite-animations.d.ts.map +1 -1
  100. package/dist/rules/no-floating-infinite-animations.js +4 -3
  101. package/dist/rules/no-floating-infinite-animations.js.map +1 -1
  102. package/dist/rules/no-floating-media-streams.d.ts.map +1 -1
  103. package/dist/rules/no-floating-media-streams.js +24 -24
  104. package/dist/rules/no-floating-media-streams.js.map +1 -1
  105. package/dist/rules/no-floating-message-channels.js +30 -30
  106. package/dist/rules/no-floating-message-channels.js.map +1 -1
  107. package/dist/rules/no-floating-network-connections.d.ts.map +1 -1
  108. package/dist/rules/no-floating-network-connections.js +36 -36
  109. package/dist/rules/no-floating-network-connections.js.map +1 -1
  110. package/dist/rules/no-floating-object-urls.d.ts.map +1 -1
  111. package/dist/rules/no-floating-object-urls.js +4 -3
  112. package/dist/rules/no-floating-object-urls.js.map +1 -1
  113. package/dist/rules/no-floating-observers.d.ts.map +1 -1
  114. package/dist/rules/no-floating-observers.js +33 -34
  115. package/dist/rules/no-floating-observers.js.map +1 -1
  116. package/dist/rules/no-floating-servers.d.ts.map +1 -1
  117. package/dist/rules/no-floating-servers.js +50 -52
  118. package/dist/rules/no-floating-servers.js.map +1 -1
  119. package/dist/rules/no-floating-streams.d.ts.map +1 -1
  120. package/dist/rules/no-floating-streams.js +28 -29
  121. package/dist/rules/no-floating-streams.js.map +1 -1
  122. package/dist/rules/no-floating-timers.d.ts.map +1 -1
  123. package/dist/rules/no-floating-timers.js +7 -47
  124. package/dist/rules/no-floating-timers.js.map +1 -1
  125. package/dist/rules/no-floating-wake-locks.js +20 -20
  126. package/dist/rules/no-floating-wake-locks.js.map +1 -1
  127. package/dist/rules/no-floating-web-stream-locks.d.ts.map +1 -1
  128. package/dist/rules/no-floating-web-stream-locks.js +4 -3
  129. package/dist/rules/no-floating-web-stream-locks.js.map +1 -1
  130. package/dist/rules/no-floating-workers.d.ts.map +1 -1
  131. package/dist/rules/no-floating-workers.js +39 -40
  132. package/dist/rules/no-floating-workers.js.map +1 -1
  133. package/dist/rules/no-unmanaged-event-listeners.d.ts.map +1 -1
  134. package/dist/rules/no-unmanaged-event-listeners.js +23 -23
  135. package/dist/rules/no-unmanaged-event-listeners.js.map +1 -1
  136. package/docs/rules/no-floating-audio-contexts.md +1 -2
  137. package/docs/rules/no-floating-media-streams.md +1 -1
  138. package/docs/rules/no-floating-object-urls.md +3 -3
  139. package/docs/rules/no-floating-observers.md +1 -1
  140. package/docs/rules/no-floating-servers.md +1 -1
  141. package/docs/rules/no-floating-wake-locks.md +1 -1
  142. package/docs/rules/no-floating-web-stream-locks.md +1 -2
  143. package/package.json +7 -4
@@ -3,6 +3,7 @@
3
3
  * Require observer instances to be retained so they can be disconnected.
4
4
  */
5
5
  import { AST_NODE_TYPES, } from "@typescript-eslint/utils";
6
+ import { isDefined, setHas } from "ts-extras";
6
7
  import { getParentNode } from "../_internal/ast-node.js";
7
8
  import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
8
9
  import { getVariableInScopeChain } from "../_internal/scope-variable.js";
@@ -21,8 +22,8 @@ const globalReceiverNames = [
21
22
  ];
22
23
  const globalReceiverNameSet = new Set(globalReceiverNames);
23
24
  const observerConstructorNameSet = new Set(observerConstructorNames);
24
- const isGlobalReceiverName = (name) => globalReceiverNameSet.has(name);
25
- const isObserverConstructorName = (name) => observerConstructorNameSet.has(name);
25
+ const isGlobalReceiverName = (name) => setHas(globalReceiverNameSet, name);
26
+ const isObserverConstructorName = (name) => setHas(observerConstructorNameSet, name);
26
27
  const getTransparentWrappedExpression = (node) => {
27
28
  if (node.type === AST_NODE_TYPES.ChainExpression) {
28
29
  return node.expression;
@@ -71,47 +72,45 @@ const getObserverConstructorName = (context, callee) => getDirectObserverConstru
71
72
  const isObserveMethodCallReceiver = (node) => {
72
73
  let current = node;
73
74
  let parent = getParentNode(current);
74
- while (parent !== undefined) {
75
+ while (isDefined(parent)) {
75
76
  const wrappedExpression = getTransparentWrappedExpression(parent);
76
- if (wrappedExpression === current) {
77
- current = parent;
78
- parent = getParentNode(current);
79
- continue;
77
+ if (wrappedExpression !== current) {
78
+ if (parent.type !== AST_NODE_TYPES.MemberExpression ||
79
+ parent.object !== current ||
80
+ parent.computed ||
81
+ parent.property.type !== AST_NODE_TYPES.Identifier ||
82
+ parent.property.name !== "observe") {
83
+ return false;
84
+ }
85
+ const callExpression = getParentNode(parent);
86
+ return (callExpression?.type === AST_NODE_TYPES.CallExpression &&
87
+ callExpression.callee === parent);
80
88
  }
81
- if (parent.type !== AST_NODE_TYPES.MemberExpression ||
82
- parent.object !== current ||
83
- parent.computed ||
84
- parent.property.type !== AST_NODE_TYPES.Identifier ||
85
- parent.property.name !== "observe") {
86
- return false;
87
- }
88
- const callExpression = getParentNode(parent);
89
- return (callExpression?.type === AST_NODE_TYPES.CallExpression &&
90
- callExpression.callee === parent);
89
+ current = parent;
90
+ parent = getParentNode(current);
91
91
  }
92
92
  return false;
93
93
  };
94
94
  const isDiscardedObserverInstance = (node) => {
95
95
  let current = node;
96
96
  let parent = getParentNode(current);
97
- while (parent !== undefined) {
97
+ while (isDefined(parent)) {
98
98
  const wrappedExpression = getTransparentWrappedExpression(parent);
99
- if (wrappedExpression === current) {
100
- current = parent;
101
- parent = getParentNode(current);
102
- continue;
103
- }
104
- if (parent.type === AST_NODE_TYPES.ExpressionStatement &&
105
- parent.expression === current) {
106
- return true;
107
- }
108
- if (parent.type === AST_NODE_TYPES.UnaryExpression &&
109
- parent.operator === "void" &&
110
- parent.argument === current) {
111
- const unaryParent = getParentNode(parent);
112
- return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;
99
+ if (wrappedExpression !== current) {
100
+ if (parent.type === AST_NODE_TYPES.ExpressionStatement &&
101
+ parent.expression === current) {
102
+ return true;
103
+ }
104
+ if (parent.type === AST_NODE_TYPES.UnaryExpression &&
105
+ parent.operator === "void" &&
106
+ parent.argument === current) {
107
+ const unaryParent = getParentNode(parent);
108
+ return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;
109
+ }
110
+ return false;
113
111
  }
114
- return false;
112
+ current = parent;
113
+ parent = getParentNode(current);
115
114
  }
116
115
  return false;
117
116
  };
@@ -121,7 +120,7 @@ const noFloatingObservers = createTypedRule({
121
120
  return {
122
121
  NewExpression(node) {
123
122
  const observerName = getObserverConstructorName(context, node.callee);
124
- if (observerName === undefined ||
123
+ if (!isDefined(observerName) ||
125
124
  (!isDiscardedObserverInstance(node) &&
126
125
  !isObserveMethodCallReceiver(node))) {
127
126
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"no-floating-observers.js","sourceRoot":"","sources":["../../src/rules/no-floating-observers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-floating-observers.js","sourceRoot":"","sources":["../../src/rules/no-floating-observers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-floating-servers.d.ts","sourceRoot":"","sources":["../../src/rules/no-floating-servers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEH,KAAK,QAAQ,EAEhB,MAAM,0BAA0B,CAAC;AA0YlC,qEAAqE;AACrE,QAAA,MAAM,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CACxC,gBAAgB,EAChB,SAAS,EAAE,CA6Cb,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"no-floating-servers.d.ts","sourceRoot":"","sources":["../../src/rules/no-floating-servers.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EAEH,KAAK,QAAQ,EAEhB,MAAM,0BAA0B,CAAC;AAuYlC,qEAAqE;AACrE,QAAA,MAAM,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CACxC,gBAAgB,EAChB,SAAS,EAAE,CA6Cb,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * Require Node.js server handles to be retained so they can be closed.
4
4
  */
5
5
  import { AST_NODE_TYPES, } from "@typescript-eslint/utils";
6
+ import { arrayFirst, isDefined, setHas } from "ts-extras";
6
7
  import { getParentNode } from "../_internal/ast-node.js";
7
8
  import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
8
9
  import { getVariableInScopeChain } from "../_internal/scope-variable.js";
@@ -29,11 +30,11 @@ const http2OnlyServerFactoryNameSet = new Set(http2OnlyServerFactoryNames);
29
30
  const serverModuleNameSet = new Set(serverModuleNames);
30
31
  const http2ServerModuleNameSet = new Set(http2ServerModuleNames);
31
32
  const immediateCleanupMethodNameSet = new Set(immediateCleanupMethodNames);
32
- const isServerFactoryName = (name) => serverFactoryNameSet.has(name);
33
- const isHttp2OnlyServerFactoryName = (name) => http2OnlyServerFactoryNameSet.has(name);
34
- const isServerModuleSource = (source) => source !== undefined && serverModuleNameSet.has(source);
35
- const isHttp2ServerModuleSource = (source) => source !== undefined && http2ServerModuleNameSet.has(source);
36
- const isImmediateCleanupMethodName = (name) => immediateCleanupMethodNameSet.has(name);
33
+ const isServerFactoryName = (name) => setHas(serverFactoryNameSet, name);
34
+ const isHttp2OnlyServerFactoryName = (name) => setHas(http2OnlyServerFactoryNameSet, name);
35
+ const isServerModuleSource = (source) => isDefined(source) && setHas(serverModuleNameSet, source);
36
+ const isHttp2ServerModuleSource = (source) => isDefined(source) && setHas(http2ServerModuleNameSet, source);
37
+ const isImmediateCleanupMethodName = (name) => setHas(immediateCleanupMethodNameSet, name);
37
38
  const isValidServerFactoryForSource = (source, factoryName) => isServerModuleSource(source) &&
38
39
  isServerFactoryName(factoryName) &&
39
40
  (!isHttp2OnlyServerFactoryName(factoryName) ||
@@ -100,35 +101,34 @@ const getDefinitionModuleSource = (node) => {
100
101
  const getDefinitionForIdentifier = (context, identifier) => {
101
102
  const scope = context.sourceCode.getScope(identifier);
102
103
  const variable = getVariableInScopeChain(scope, identifier.name);
103
- return variable?.defs[0];
104
+ return arrayFirst(variable?.defs ?? []);
104
105
  };
105
106
  const getImportedSpecifierName = (node) => getStaticPropertyName(node.imported);
106
107
  const getObjectPatternPropertyNameForIdentifier = (objectPattern, identifierName) => {
107
108
  for (const property of objectPattern.properties) {
108
- if (property.type !== AST_NODE_TYPES.Property ||
109
- property.value.type !== AST_NODE_TYPES.Identifier ||
110
- property.value.name !== identifierName) {
111
- continue;
109
+ if (property.type === AST_NODE_TYPES.Property &&
110
+ property.value.type === AST_NODE_TYPES.Identifier &&
111
+ property.value.name === identifierName) {
112
+ return getStaticPropertyName(property.key);
112
113
  }
113
- return getStaticPropertyName(property.key);
114
114
  }
115
115
  return undefined;
116
116
  };
117
117
  const getModuleSourceForBinding = (context, identifier) => {
118
118
  const definition = getDefinitionForIdentifier(context, identifier);
119
- return definition === undefined
120
- ? undefined
121
- : getDefinitionModuleSource(definition.node);
119
+ return isDefined(definition)
120
+ ? getDefinitionModuleSource(definition.node)
121
+ : undefined;
122
122
  };
123
123
  const getNamedServerFactoryBindingName = (context, identifier) => {
124
124
  const definition = getDefinitionForIdentifier(context, identifier);
125
- if (definition === undefined) {
125
+ if (!isDefined(definition)) {
126
126
  return undefined;
127
127
  }
128
128
  const source = getDefinitionModuleSource(definition.node);
129
129
  if (definition.node.type === AST_NODE_TYPES.ImportSpecifier) {
130
130
  const importedName = getImportedSpecifierName(definition.node);
131
- return importedName !== undefined &&
131
+ return isDefined(importedName) &&
132
132
  isValidServerFactoryForSource(source, importedName)
133
133
  ? importedName
134
134
  : undefined;
@@ -136,7 +136,7 @@ const getNamedServerFactoryBindingName = (context, identifier) => {
136
136
  if (definition.node.type === AST_NODE_TYPES.VariableDeclarator &&
137
137
  definition.node.id.type === AST_NODE_TYPES.ObjectPattern) {
138
138
  const propertyName = getObjectPatternPropertyNameForIdentifier(definition.node.id, identifier.name);
139
- return propertyName !== undefined &&
139
+ return isDefined(propertyName) &&
140
140
  isValidServerFactoryForSource(source, propertyName)
141
141
  ? propertyName
142
142
  : undefined;
@@ -181,55 +181,53 @@ const getServerFactoryName = (context, callee) => {
181
181
  const isDiscardedExpression = (node) => {
182
182
  let current = node;
183
183
  let parent = getParentNode(current);
184
- while (parent !== undefined) {
184
+ while (isDefined(parent)) {
185
185
  const wrappedExpression = getTransparentWrappedExpression(parent);
186
- if (wrappedExpression === current) {
187
- current = parent;
188
- parent = getParentNode(current);
189
- continue;
190
- }
191
- if (parent.type === AST_NODE_TYPES.ExpressionStatement &&
192
- parent.expression === current) {
193
- return true;
186
+ if (wrappedExpression !== current) {
187
+ if (parent.type === AST_NODE_TYPES.ExpressionStatement &&
188
+ parent.expression === current) {
189
+ return true;
190
+ }
191
+ if (parent.type === AST_NODE_TYPES.UnaryExpression &&
192
+ parent.operator === "void" &&
193
+ parent.argument === current) {
194
+ const unaryParent = getParentNode(parent);
195
+ return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;
196
+ }
197
+ return false;
194
198
  }
195
- if (parent.type === AST_NODE_TYPES.UnaryExpression &&
196
- parent.operator === "void" &&
197
- parent.argument === current) {
198
- const unaryParent = getParentNode(parent);
199
- return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;
200
- }
201
- return false;
199
+ current = parent;
200
+ parent = getParentNode(current);
202
201
  }
203
202
  return false;
204
203
  };
205
204
  const getImmediateServerMethodCall = (node) => {
206
205
  let current = node;
207
206
  let parent = getParentNode(current);
208
- while (parent !== undefined) {
207
+ while (isDefined(parent)) {
209
208
  const wrappedExpression = getTransparentWrappedExpression(parent);
210
- if (wrappedExpression === current) {
211
- current = parent;
212
- parent = getParentNode(current);
213
- continue;
214
- }
215
- if (parent.type !== AST_NODE_TYPES.MemberExpression ||
216
- parent.object !== current ||
217
- parent.computed ||
218
- parent.property.type !== AST_NODE_TYPES.Identifier ||
219
- isImmediateCleanupMethodName(parent.property.name)) {
220
- return undefined;
209
+ if (wrappedExpression !== current) {
210
+ if (parent.type !== AST_NODE_TYPES.MemberExpression ||
211
+ parent.object !== current ||
212
+ parent.computed ||
213
+ parent.property.type !== AST_NODE_TYPES.Identifier ||
214
+ isImmediateCleanupMethodName(parent.property.name)) {
215
+ return undefined;
216
+ }
217
+ const callExpression = getParentNode(parent);
218
+ return callExpression?.type === AST_NODE_TYPES.CallExpression &&
219
+ callExpression.callee === parent
220
+ ? callExpression
221
+ : undefined;
221
222
  }
222
- const callExpression = getParentNode(parent);
223
- return callExpression?.type === AST_NODE_TYPES.CallExpression &&
224
- callExpression.callee === parent
225
- ? callExpression
226
- : undefined;
223
+ current = parent;
224
+ parent = getParentNode(current);
227
225
  }
228
226
  return undefined;
229
227
  };
230
228
  const isDiscardedImmediateServerMethodChain = (node) => {
231
229
  let currentCall = getImmediateServerMethodCall(node);
232
- while (currentCall !== undefined) {
230
+ while (isDefined(currentCall)) {
233
231
  if (isDiscardedExpression(currentCall)) {
234
232
  return true;
235
233
  }
@@ -244,7 +242,7 @@ const noFloatingServers = createTypedRule({
244
242
  return {
245
243
  CallExpression(node) {
246
244
  const factoryName = getServerFactoryName(context, node.callee);
247
- if (factoryName === undefined ||
245
+ if (!isDefined(factoryName) ||
248
246
  !isDiscardedServerHandle(node)) {
249
247
  return;
250
248
  }
@@ -1 +1 @@
1
- {"version":3,"file":"no-floating-servers.js","sourceRoot":"","sources":["../../src/rules/no-floating-servers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-floating-servers.js","sourceRoot":"","sources":["../../src/rules/no-floating-servers.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EACH,cAAc,GAGjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACH,eAAe,GAElB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,kBAAkB,GAAG;IACvB,oBAAoB;IACpB,cAAc;CACR,CAAC;AACX,MAAM,2BAA2B,GAAG,CAAC,oBAAoB,CAAU,CAAC;AACpE,MAAM,iBAAiB,GAAG;IACtB,MAAM;IACN,OAAO;IACP,OAAO;IACP,KAAK;IACL,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,UAAU;CACJ,CAAC;AACX,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,YAAY,CAAU,CAAC;AAChE,MAAM,2BAA2B,GAAG,CAAC,OAAO,CAAU,CAAC;AAIvD,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC9E,MAAM,6BAA6B,GAAwB,IAAI,GAAG,CAC9D,2BAA2B,CAC9B,CAAC;AACF,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC5E,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CACzD,sBAAsB,CACzB,CAAC;AACF,MAAM,6BAA6B,GAAwB,IAAI,GAAG,CAC9D,2BAA2B,CAC9B,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAA6B,EAAE,CACpE,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AAEvC,MAAM,4BAA4B,GAAG,CAAC,IAAY,EAAW,EAAE,CAC3D,MAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;AAEhD,MAAM,oBAAoB,GAAG,CAAC,MAA0B,EAAW,EAAE,CACjE,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAE7D,MAAM,yBAAyB,GAAG,CAAC,MAA0B,EAAW,EAAE,CACtE,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;AAElE,MAAM,4BAA4B,GAAG,CAAC,IAAY,EAAW,EAAE,CAC3D,MAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;AAEhD,MAAM,6BAA6B,GAAG,CAClC,MAA0B,EAC1B,WAAmB,EACa,EAAE,CAClC,oBAAoB,CAAC,MAAM,CAAC;IAC5B,mBAAmB,CAAC,WAAW,CAAC;IAChC,CAAC,CAAC,4BAA4B,CAAC,WAAW,CAAC;QACvC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;AAE3C,MAAM,+BAA+B,GAAG,CACpC,IAA6B,EACM,EAAE;IACrC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,mBAAmB,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,qBAAqB,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC1B,IAAqC,EACnB,EAAE;IACpB,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,IACI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;QACpC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAChC,CAAC;QACC,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CACzB,IAA6B,EACX,EAAE;IACpB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAEnC,IACI,MAAM,EAAE,IAAI,KAAK,cAAc,CAAC,iBAAiB;QACjD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,EACzC,CAAC;QACC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC1B,UAAgD,EAC9B,EAAE;IACpB,IACI,UAAU,EAAE,IAAI,KAAK,cAAc,CAAC,cAAc;QAClD,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;QACpD,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EACtC,CAAC;QACC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC;IAEtC,OAAO,MAAM,EAAE,IAAI,KAAK,cAAc,CAAC,OAAO;QAC1C,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAChC,CAAC,CAAC,MAAM,CAAC,KAAK;QACd,CAAC,CAAC,SAAS,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAC9B,IAA6B,EACX,EAAE;IACpB,IACI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,sBAAsB;QACnD,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,wBAAwB;QACrD,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe,EAC9C,CAAC;QACC,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,kBAAkB,EAAE,CAAC;QAClD,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAC/B,OAAyB,EACzB,UAAyC,EAC3C,EAAE;IACA,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAEjE,OAAO,UAAU,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAC7B,IAAwC,EACtB,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE9D,MAAM,yCAAyC,GAAG,CAC9C,aAA+C,EAC/C,cAAsB,EACJ,EAAE;IACpB,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;QAC9C,IACI,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ;YACzC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;YACjD,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,EACxC,CAAC;YACC,OAAO,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAC9B,OAAyB,EACzB,UAAyC,EACvB,EAAE;IACpB,MAAM,UAAU,GAAG,0BAA0B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAEnE,OAAO,SAAS,CAAC,UAAU,CAAC;QACxB,CAAC,CAAC,yBAAyB,CAAC,UAAU,CAAC,IAAI,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,gCAAgC,GAAG,CACrC,OAAyB,EACzB,UAAyC,EACZ,EAAE;IAC/B,MAAM,UAAU,GAAG,0BAA0B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAEnE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAE1D,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAG,wBAAwB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE/D,OAAO,SAAS,CAAC,YAAY,CAAC;YAC1B,6BAA6B,CAAC,MAAM,EAAE,YAAY,CAAC;YACnD,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,SAAS,CAAC;IACpB,CAAC;IAED,IACI,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,kBAAkB;QAC1D,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa,EAC1D,CAAC;QACC,MAAM,YAAY,GAAG,yCAAyC,CAC1D,UAAU,CAAC,IAAI,CAAC,EAAE,EAClB,UAAU,CAAC,IAAI,CAClB,CAAC;QAEF,OAAO,SAAS,CAAC,YAAY,CAAC;YAC1B,6BAA6B,CAAC,MAAM,EAAE,YAAY,CAAC;YACnD,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,SAAS,CAAC;IACpB,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,2BAA2B,GAAG,CAChC,MAAmD,EACtB,EAAE;IAC/B,IACI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB;QAC/C,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;QAClD,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc,EACtD,CAAC;QACC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAEzC,OAAO,6BAA6B,CAAC,MAAM,EAAE,WAAW,CAAC;QACrD,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,SAAS,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAC/B,OAAyB,EACzB,MAAmD,EACtB,EAAE;IAC/B,IACI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB;QAC/C,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;QAChD,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EACpD,CAAC;QACC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAEzC,OAAO,6BAA6B,CAAC,MAAM,EAAE,WAAW,CAAC;QACrD,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,SAAS,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CACzB,OAAyB,EACzB,MAAmD,EACtB,EAAE;IAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EAAE,CAAC;QAC5C,OAAO,gCAAgC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CACH,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC;QAC3C,2BAA2B,CAAC,MAAM,CAAC,CACtC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,IAA6B,EAAW,EAAE;IACrE,IAAI,OAAO,GAA4B,IAAI,CAAC;IAC5C,IAAI,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,MAAM,iBAAiB,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAElE,IAAI,iBAAiB,KAAK,OAAO,EAAE,CAAC;YAChC,IACI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,mBAAmB;gBAClD,MAAM,CAAC,UAAU,KAAK,OAAO,EAC/B,CAAC;gBACC,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IACI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;gBAC9C,MAAM,CAAC,QAAQ,KAAK,MAAM;gBAC1B,MAAM,CAAC,QAAQ,KAAK,OAAO,EAC7B,CAAC;gBACC,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;gBAE1C,OAAO,WAAW,EAAE,IAAI,KAAK,cAAc,CAAC,mBAAmB,CAAC;YACpE,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,GAAG,MAAM,CAAC;QACjB,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,4BAA4B,GAAG,CACjC,IAA6B,EACM,EAAE;IACrC,IAAI,OAAO,GAA4B,IAAI,CAAC;IAC5C,IAAI,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,MAAM,iBAAiB,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAElE,IAAI,iBAAiB,KAAK,OAAO,EAAE,CAAC;YAChC,IACI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB;gBAC/C,MAAM,CAAC,MAAM,KAAK,OAAO;gBACzB,MAAM,CAAC,QAAQ;gBACf,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;gBAClD,4BAA4B,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpD,CAAC;gBACC,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YAE7C,OAAO,cAAc,EAAE,IAAI,KAAK,cAAc,CAAC,cAAc;gBACzD,cAAc,CAAC,MAAM,KAAK,MAAM;gBAChC,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,SAAS,CAAC;QACpB,CAAC;QAED,OAAO,GAAG,MAAM,CAAC;QACjB,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,qCAAqC,GAAG,CAC1C,IAAuC,EAChC,EAAE;IACT,IAAI,WAAW,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAErD,OAAO,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,WAAW,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAC5B,IAAuC,EAChC,EAAE,CACT,qBAAqB,CAAC,IAAI,CAAC,IAAI,qCAAqC,CAAC,IAAI,CAAC,CAAC;AAE/E,qEAAqE;AACrE,MAAM,iBAAiB,GAGnB,eAAe,CAAC;IAChB,MAAM,CAAC,OAAO;QACV,OAAO;YACH,cAAc,CAAC,IAAuC;gBAClD,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAE/D,IACI,CAAC,SAAS,CAAC,WAAW,CAAC;oBACvB,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAChC,CAAC;oBACC,OAAO;gBACX,CAAC;gBAED,OAAO,CAAC,MAAM,CAAC;oBACX,IAAI,EAAE,EAAE,WAAW,EAAE;oBACrB,SAAS,EAAE,gBAAgB;oBAC3B,IAAI;iBACP,CAAC,CAAC;YACP,CAAC;SACJ,CAAC;IACN,CAAC;IACD,cAAc,EAAE,EAAE;IAClB,IAAI,EAAE;QACF,IAAI,EAAE;YACF,WAAW,EACP,sEAAsE;YAC1E,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,KAAK;YAC3B,qBAAqB,EAAE;gBACnB,qCAAqC;gBACrC,kDAAkD;gBAClD,gCAAgC;gBAChC,6BAA6B;aAChC;YACD,GAAG,EAAE,iBAAiB,CAAC,qBAAqB,CAAC;SAChD;QACD,QAAQ,EAAE;YACN,cAAc,EACV,wFAAwF;SAC/F;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,qBAAqB;CAC9B,CAAC,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-floating-streams.d.ts","sourceRoot":"","sources":["../../src/rules/no-floating-streams.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEH,KAAK,QAAQ,EAEhB,MAAM,0BAA0B,CAAC;AA6SlC,qEAAqE;AACrE,QAAA,MAAM,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAgDpE,CAAC;AAEP,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"no-floating-streams.d.ts","sourceRoot":"","sources":["../../src/rules/no-floating-streams.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EAEH,KAAK,QAAQ,EAEhB,MAAM,0BAA0B,CAAC;AA2SlC,qEAAqE;AACrE,QAAA,MAAM,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAgDpE,CAAC;AAEP,eAAe,iBAAiB,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * Require Node.js file stream handles to be retained so they can be closed during cleanup.
4
4
  */
5
5
  import { AST_NODE_TYPES, } from "@typescript-eslint/utils";
6
+ import { arrayFirst, isDefined, setHas } from "ts-extras";
6
7
  import { getParentNode } from "../_internal/ast-node.js";
7
8
  import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
8
9
  import { getVariableInScopeChain } from "../_internal/scope-variable.js";
@@ -14,7 +15,7 @@ const fileStreamFactoryNames = [
14
15
  const fsModuleNames = ["fs", "node:fs"];
15
16
  const fileStreamFactoryNameSet = new Set(fileStreamFactoryNames);
16
17
  const fsModuleNameSet = new Set(fsModuleNames);
17
- const isFileStreamFactoryName = (name) => fileStreamFactoryNameSet.has(name);
18
+ const isFileStreamFactoryName = (name) => setHas(fileStreamFactoryNameSet, name);
18
19
  const getTransparentWrappedExpression = (node) => {
19
20
  if (node.type === AST_NODE_TYPES.ChainExpression) {
20
21
  return node.expression;
@@ -77,29 +78,28 @@ const getDefinitionModuleSource = (node) => {
77
78
  const getImportedSpecifierName = (node) => getStaticPropertyName(node.imported);
78
79
  const getObjectPatternPropertyNameForIdentifier = (objectPattern, identifierName) => {
79
80
  for (const property of objectPattern.properties) {
80
- if (property.type !== AST_NODE_TYPES.Property ||
81
- property.value.type !== AST_NODE_TYPES.Identifier ||
82
- property.value.name !== identifierName) {
83
- continue;
81
+ if (property.type === AST_NODE_TYPES.Property &&
82
+ property.value.type === AST_NODE_TYPES.Identifier &&
83
+ property.value.name === identifierName) {
84
+ return getStaticPropertyName(property.key);
84
85
  }
85
- return getStaticPropertyName(property.key);
86
86
  }
87
87
  return undefined;
88
88
  };
89
- const isFsModuleSource = (source) => source !== undefined && fsModuleNameSet.has(source);
89
+ const isFsModuleSource = (source) => isDefined(source) && setHas(fsModuleNameSet, source);
90
90
  const getDefinitionForIdentifier = (context, identifier) => {
91
91
  const scope = context.sourceCode.getScope(identifier);
92
92
  const variable = getVariableInScopeChain(scope, identifier.name);
93
- return variable?.defs[0];
93
+ return arrayFirst(variable?.defs ?? []);
94
94
  };
95
95
  const isFsModuleBinding = (context, identifier) => {
96
96
  const definition = getDefinitionForIdentifier(context, identifier);
97
- return (definition !== undefined &&
97
+ return (isDefined(definition) &&
98
98
  isFsModuleSource(getDefinitionModuleSource(definition.node)));
99
99
  };
100
100
  const getNamedFileStreamFactoryBindingName = (context, identifier) => {
101
101
  const definition = getDefinitionForIdentifier(context, identifier);
102
- if (definition === undefined) {
102
+ if (!isDefined(definition)) {
103
103
  return undefined;
104
104
  }
105
105
  const source = getDefinitionModuleSource(definition.node);
@@ -108,7 +108,7 @@ const getNamedFileStreamFactoryBindingName = (context, identifier) => {
108
108
  }
109
109
  if (definition.node.type === AST_NODE_TYPES.ImportSpecifier) {
110
110
  const importedName = getImportedSpecifierName(definition.node);
111
- return importedName !== undefined &&
111
+ return isDefined(importedName) &&
112
112
  isFileStreamFactoryName(importedName)
113
113
  ? importedName
114
114
  : undefined;
@@ -116,7 +116,7 @@ const getNamedFileStreamFactoryBindingName = (context, identifier) => {
116
116
  if (definition.node.type === AST_NODE_TYPES.VariableDeclarator &&
117
117
  definition.node.id.type === AST_NODE_TYPES.ObjectPattern) {
118
118
  const propertyName = getObjectPatternPropertyNameForIdentifier(definition.node.id, identifier.name);
119
- return propertyName !== undefined &&
119
+ return isDefined(propertyName) &&
120
120
  isFileStreamFactoryName(propertyName)
121
121
  ? propertyName
122
122
  : undefined;
@@ -157,24 +157,23 @@ const getFileStreamFactoryName = (context, callee) => {
157
157
  const isDiscardedFileStreamHandle = (node) => {
158
158
  let current = node;
159
159
  let parent = getParentNode(current);
160
- while (parent !== undefined) {
160
+ while (isDefined(parent)) {
161
161
  const wrappedExpression = getTransparentWrappedExpression(parent);
162
- if (wrappedExpression === current) {
163
- current = parent;
164
- parent = getParentNode(current);
165
- continue;
162
+ if (wrappedExpression !== current) {
163
+ if (parent.type === AST_NODE_TYPES.ExpressionStatement &&
164
+ parent.expression === current) {
165
+ return true;
166
+ }
167
+ if (parent.type === AST_NODE_TYPES.UnaryExpression &&
168
+ parent.operator === "void" &&
169
+ parent.argument === current) {
170
+ const unaryParent = getParentNode(parent);
171
+ return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;
172
+ }
173
+ return false;
166
174
  }
167
- if (parent.type === AST_NODE_TYPES.ExpressionStatement &&
168
- parent.expression === current) {
169
- return true;
170
- }
171
- if (parent.type === AST_NODE_TYPES.UnaryExpression &&
172
- parent.operator === "void" &&
173
- parent.argument === current) {
174
- const unaryParent = getParentNode(parent);
175
- return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;
176
- }
177
- return false;
175
+ current = parent;
176
+ parent = getParentNode(current);
178
177
  }
179
178
  return false;
180
179
  };
@@ -184,7 +183,7 @@ const noFloatingStreams = createTypedRule({
184
183
  return {
185
184
  CallExpression(node) {
186
185
  const factoryName = getFileStreamFactoryName(context, node.callee);
187
- if (factoryName === undefined ||
186
+ if (!isDefined(factoryName) ||
188
187
  !isDiscardedFileStreamHandle(node)) {
189
188
  return;
190
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"no-floating-streams.js","sourceRoot":"","sources":["../../src/rules/no-floating-streams.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-floating-streams.js","sourceRoot":"","sources":["../../src/rules/no-floating-streams.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-floating-timers.d.ts","sourceRoot":"","sources":["../../src/rules/no-floating-timers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEH,KAAK,QAAQ,EAEhB,MAAM,0BAA0B,CAAC;AAiJlC,oEAAoE;AACpE,QAAA,MAAM,gBAAgB,EAAE,QAAQ,CAAC,UAAU,CACvC,eAAe,EACf,SAAS,EAAE,CA8Db,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"no-floating-timers.d.ts","sourceRoot":"","sources":["../../src/rules/no-floating-timers.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EAEH,KAAK,QAAQ,EAEhB,MAAM,0BAA0B,CAAC;AAsFlC,oEAAoE;AACpE,QAAA,MAAM,gBAAgB,EAAE,QAAQ,CAAC,UAAU,CACvC,eAAe,EACf,SAAS,EAAE,CA8Db,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
@@ -3,7 +3,8 @@
3
3
  * Require timer handles to be retained so they can be cleared during cleanup.
4
4
  */
5
5
  import { AST_NODE_TYPES, } from "@typescript-eslint/utils";
6
- import { getParentNode } from "../_internal/ast-node.js";
6
+ import { isDefined, setHas } from "ts-extras";
7
+ import { isDiscardedResourceExpression } from "../_internal/floating-resource.js";
7
8
  import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
8
9
  import { getVariableInScopeChain } from "../_internal/scope-variable.js";
9
10
  import { createTypedRule, } from "../_internal/typed-rule.js";
@@ -22,50 +23,9 @@ const globalReceiverNames = [
22
23
  ];
23
24
  const timerFunctionNameSet = new Set(timerFunctionNames);
24
25
  const globalReceiverNameSet = new Set(globalReceiverNames);
25
- const isTimerFunctionName = (name) => timerFunctionNameSet.has(name);
26
- const isGlobalReceiverName = (name) => globalReceiverNameSet.has(name);
27
- const getTransparentWrappedExpression = (node) => {
28
- if (node.type === AST_NODE_TYPES.ChainExpression) {
29
- return node.expression;
30
- }
31
- if (node.type === AST_NODE_TYPES.TSAsExpression) {
32
- return node.expression;
33
- }
34
- if (node.type === AST_NODE_TYPES.TSNonNullExpression) {
35
- return node.expression;
36
- }
37
- if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {
38
- return node.expression;
39
- }
40
- if (node.type === AST_NODE_TYPES.TSTypeAssertion) {
41
- return node.expression;
42
- }
43
- return undefined;
44
- };
45
- const isDiscardedTimerHandle = (node) => {
46
- let current = node;
47
- let parent = getParentNode(current);
48
- while (parent !== undefined) {
49
- const wrappedExpression = getTransparentWrappedExpression(parent);
50
- if (wrappedExpression === current) {
51
- current = parent;
52
- parent = getParentNode(current);
53
- continue;
54
- }
55
- if (parent.type === AST_NODE_TYPES.ExpressionStatement &&
56
- parent.expression === current) {
57
- return true;
58
- }
59
- if (parent.type === AST_NODE_TYPES.UnaryExpression &&
60
- parent.operator === "void" &&
61
- parent.argument === current) {
62
- const unaryParent = getParentNode(parent);
63
- return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;
64
- }
65
- return false;
66
- }
67
- return false;
68
- };
26
+ const isTimerFunctionName = (name) => setHas(timerFunctionNameSet, name);
27
+ const isGlobalReceiverName = (name) => setHas(globalReceiverNameSet, name);
28
+ const isDiscardedTimerHandle = (node) => isDiscardedResourceExpression(node);
69
29
  const isShadowedIdentifier = (context, identifier) => {
70
30
  const scope = context.sourceCode.getScope(identifier);
71
31
  const variable = getVariableInScopeChain(scope, identifier.name);
@@ -107,13 +67,13 @@ const noFloatingTimers = createTypedRule({
107
67
  return {
108
68
  'CallExpression[callee.type="Identifier"]'(node) {
109
69
  const timerName = getDirectTimerName(context, node.callee);
110
- if (timerName !== undefined) {
70
+ if (isDefined(timerName)) {
111
71
  reportFloatingTimer(node, timerName);
112
72
  }
113
73
  },
114
74
  'CallExpression[callee.type="MemberExpression"]'(node) {
115
75
  const timerName = getMemberTimerName(node.callee);
116
- if (timerName !== undefined) {
76
+ if (isDefined(timerName)) {
117
77
  reportFloatingTimer(node, timerName);
118
78
  }
119
79
  },