@less-unsound/eslint-plugin 0.0.1

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 (338) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +112 -0
  3. package/dist/cjs/index.js +355 -0
  4. package/dist/cjs/package.json +3 -0
  5. package/dist/cjs/rules/no-accidental-mutation.js +100 -0
  6. package/dist/cjs/rules/no-ambient-dom-globals.js +181 -0
  7. package/dist/cjs/rules/no-any.js +27 -0
  8. package/dist/cjs/rules/no-arguments-object.js +122 -0
  9. package/dist/cjs/rules/no-as-type-assertion.js +44 -0
  10. package/dist/cjs/rules/no-bigint.js +74 -0
  11. package/dist/cjs/rules/no-boolean-literal-compare.js +37 -0
  12. package/dist/cjs/rules/no-broad-types.js +50 -0
  13. package/dist/cjs/rules/no-buffer.js +146 -0
  14. package/dist/cjs/rules/no-class.js +39 -0
  15. package/dist/cjs/rules/no-comma-operator.js +27 -0
  16. package/dist/cjs/rules/no-conditional-type.js +27 -0
  17. package/dist/cjs/rules/no-default-parameter.js +71 -0
  18. package/dist/cjs/rules/no-enum.js +27 -0
  19. package/dist/cjs/rules/no-eval.js +33 -0
  20. package/dist/cjs/rules/no-export-default.js +45 -0
  21. package/dist/cjs/rules/no-for-in.js +27 -0
  22. package/dist/cjs/rules/no-for-let.js +39 -0
  23. package/dist/cjs/rules/no-function-constructor.js +84 -0
  24. package/dist/cjs/rules/no-function-keyword.js +48 -0
  25. package/dist/cjs/rules/no-generic-parameter-bounds.js +34 -0
  26. package/dist/cjs/rules/no-getter-setter.js +48 -0
  27. package/dist/cjs/rules/no-global-context.js +134 -0
  28. package/dist/cjs/rules/no-import-code-extension.js +70 -0
  29. package/dist/cjs/rules/no-import-rename.js +45 -0
  30. package/dist/cjs/rules/no-import-type.js +27 -0
  31. package/dist/cjs/rules/no-in-operator.js +27 -0
  32. package/dist/cjs/rules/no-indexed-access-type.js +27 -0
  33. package/dist/cjs/rules/no-indexed-object-type.js +53 -0
  34. package/dist/cjs/rules/no-inheritance.js +65 -0
  35. package/dist/cjs/rules/no-inline-tagged-object.js +95 -0
  36. package/dist/cjs/rules/no-intersection-type.js +27 -0
  37. package/dist/cjs/rules/no-json-static-method.js +158 -0
  38. package/dist/cjs/rules/no-keyof.js +27 -0
  39. package/dist/cjs/rules/no-let.js +45 -0
  40. package/dist/cjs/rules/no-mapped-object-type.js +27 -0
  41. package/dist/cjs/rules/no-never.js +27 -0
  42. package/dist/cjs/rules/no-non-null-assertion.js +27 -0
  43. package/dist/cjs/rules/no-null.js +36 -0
  44. package/dist/cjs/rules/no-object-as-map.js +138 -0
  45. package/dist/cjs/rules/no-object-spread.js +27 -0
  46. package/dist/cjs/rules/no-object-stringification-hook.js +101 -0
  47. package/dist/cjs/rules/no-optional-parameter.js +104 -0
  48. package/dist/cjs/rules/no-optional-property.js +30 -0
  49. package/dist/cjs/rules/no-overload.js +110 -0
  50. package/dist/cjs/rules/no-param-assign.js +94 -0
  51. package/dist/cjs/rules/no-prototype-access.js +79 -0
  52. package/dist/cjs/rules/no-proxy-reflect.js +112 -0
  53. package/dist/cjs/rules/no-reexport-outside-entrypoint.js +46 -0
  54. package/dist/cjs/rules/no-regular-expression.js +93 -0
  55. package/dist/cjs/rules/no-require.js +162 -0
  56. package/dist/cjs/rules/no-rest-parameter.js +38 -0
  57. package/dist/cjs/rules/no-switch.js +27 -0
  58. package/dist/cjs/rules/no-symbol.js +33 -0
  59. package/dist/cjs/rules/no-try-catch.js +30 -0
  60. package/dist/cjs/rules/no-ts-comment-directive.js +39 -0
  61. package/dist/cjs/rules/no-tuple.js +27 -0
  62. package/dist/cjs/rules/no-type-guard.js +27 -0
  63. package/dist/cjs/rules/no-typeof-operator.js +27 -0
  64. package/dist/cjs/rules/no-typeof-type.js +27 -0
  65. package/dist/cjs/rules/no-undefined-type.js +27 -0
  66. package/dist/cjs/rules/no-unknown.js +27 -0
  67. package/dist/cjs/rules/no-untagged-object-union.js +150 -0
  68. package/dist/cjs/rules/no-utility-type.js +57 -0
  69. package/dist/cjs/rules/no-var.js +27 -0
  70. package/dist/cjs/rules/no-void-operator.js +27 -0
  71. package/dist/cjs/rules/no-while.js +33 -0
  72. package/dist/cjs/rules/require-boolean-prefix.js +179 -0
  73. package/dist/cjs/rules/require-disjoint-union.js +228 -0
  74. package/dist/cjs/rules/require-function-verb.js +293 -0
  75. package/dist/cjs/rules/require-identifier-case.js +197 -0
  76. package/dist/cjs/rules/require-kebab-case-filename.js +45 -0
  77. package/dist/cjs/rules/require-named-union-branch.js +34 -0
  78. package/dist/cjs/rules/require-readonly-array.js +49 -0
  79. package/dist/cjs/rules/require-readonly-collections.js +37 -0
  80. package/dist/cjs/rules/require-readonly-object-fields.js +32 -0
  81. package/dist/cjs/rules/require-readonly-tuple.js +33 -0
  82. package/dist/cjs/rules/require-return-type.js +85 -0
  83. package/dist/cjs/rules/require-string-template-expression.js +55 -0
  84. package/dist/cjs/utils/create-rule.js +6 -0
  85. package/dist/cjs/utils/package-entrypoint.js +69 -0
  86. package/dist/cjs/utils/readonly.js +18 -0
  87. package/dist/cjs/utils/string-case.js +12 -0
  88. package/dist/cjs/utils/type-reference.js +35 -0
  89. package/dist/esm/index.d.ts +3568 -0
  90. package/dist/esm/index.js +352 -0
  91. package/dist/esm/rules/no-accidental-mutation.d.ts +3 -0
  92. package/dist/esm/rules/no-accidental-mutation.js +97 -0
  93. package/dist/esm/rules/no-ambient-dom-globals.d.ts +3 -0
  94. package/dist/esm/rules/no-ambient-dom-globals.js +178 -0
  95. package/dist/esm/rules/no-any.d.ts +3 -0
  96. package/dist/esm/rules/no-any.js +24 -0
  97. package/dist/esm/rules/no-arguments-object.d.ts +3 -0
  98. package/dist/esm/rules/no-arguments-object.js +119 -0
  99. package/dist/esm/rules/no-as-type-assertion.d.ts +3 -0
  100. package/dist/esm/rules/no-as-type-assertion.js +41 -0
  101. package/dist/esm/rules/no-bigint.d.ts +3 -0
  102. package/dist/esm/rules/no-bigint.js +71 -0
  103. package/dist/esm/rules/no-boolean-literal-compare.d.ts +3 -0
  104. package/dist/esm/rules/no-boolean-literal-compare.js +34 -0
  105. package/dist/esm/rules/no-broad-types.d.ts +3 -0
  106. package/dist/esm/rules/no-broad-types.js +47 -0
  107. package/dist/esm/rules/no-buffer.d.ts +3 -0
  108. package/dist/esm/rules/no-buffer.js +143 -0
  109. package/dist/esm/rules/no-class.d.ts +3 -0
  110. package/dist/esm/rules/no-class.js +36 -0
  111. package/dist/esm/rules/no-comma-operator.d.ts +3 -0
  112. package/dist/esm/rules/no-comma-operator.js +24 -0
  113. package/dist/esm/rules/no-conditional-type.d.ts +3 -0
  114. package/dist/esm/rules/no-conditional-type.js +24 -0
  115. package/dist/esm/rules/no-default-parameter.d.ts +3 -0
  116. package/dist/esm/rules/no-default-parameter.js +68 -0
  117. package/dist/esm/rules/no-enum.d.ts +3 -0
  118. package/dist/esm/rules/no-enum.js +24 -0
  119. package/dist/esm/rules/no-eval.d.ts +3 -0
  120. package/dist/esm/rules/no-eval.js +30 -0
  121. package/dist/esm/rules/no-export-default.d.ts +3 -0
  122. package/dist/esm/rules/no-export-default.js +42 -0
  123. package/dist/esm/rules/no-for-in.d.ts +3 -0
  124. package/dist/esm/rules/no-for-in.js +24 -0
  125. package/dist/esm/rules/no-for-let.d.ts +3 -0
  126. package/dist/esm/rules/no-for-let.js +36 -0
  127. package/dist/esm/rules/no-function-constructor.d.ts +3 -0
  128. package/dist/esm/rules/no-function-constructor.js +81 -0
  129. package/dist/esm/rules/no-function-keyword.d.ts +3 -0
  130. package/dist/esm/rules/no-function-keyword.js +45 -0
  131. package/dist/esm/rules/no-generic-parameter-bounds.d.ts +3 -0
  132. package/dist/esm/rules/no-generic-parameter-bounds.js +31 -0
  133. package/dist/esm/rules/no-getter-setter.d.ts +3 -0
  134. package/dist/esm/rules/no-getter-setter.js +45 -0
  135. package/dist/esm/rules/no-global-context.d.ts +3 -0
  136. package/dist/esm/rules/no-global-context.js +131 -0
  137. package/dist/esm/rules/no-import-code-extension.d.ts +4 -0
  138. package/dist/esm/rules/no-import-code-extension.js +67 -0
  139. package/dist/esm/rules/no-import-rename.d.ts +3 -0
  140. package/dist/esm/rules/no-import-rename.js +42 -0
  141. package/dist/esm/rules/no-import-type.d.ts +3 -0
  142. package/dist/esm/rules/no-import-type.js +24 -0
  143. package/dist/esm/rules/no-in-operator.d.ts +3 -0
  144. package/dist/esm/rules/no-in-operator.js +24 -0
  145. package/dist/esm/rules/no-indexed-access-type.d.ts +3 -0
  146. package/dist/esm/rules/no-indexed-access-type.js +24 -0
  147. package/dist/esm/rules/no-indexed-object-type.d.ts +3 -0
  148. package/dist/esm/rules/no-indexed-object-type.js +50 -0
  149. package/dist/esm/rules/no-inheritance.d.ts +3 -0
  150. package/dist/esm/rules/no-inheritance.js +62 -0
  151. package/dist/esm/rules/no-inline-tagged-object.d.ts +5 -0
  152. package/dist/esm/rules/no-inline-tagged-object.js +92 -0
  153. package/dist/esm/rules/no-intersection-type.d.ts +3 -0
  154. package/dist/esm/rules/no-intersection-type.js +24 -0
  155. package/dist/esm/rules/no-json-static-method.d.ts +3 -0
  156. package/dist/esm/rules/no-json-static-method.js +155 -0
  157. package/dist/esm/rules/no-keyof.d.ts +3 -0
  158. package/dist/esm/rules/no-keyof.js +24 -0
  159. package/dist/esm/rules/no-let.d.ts +3 -0
  160. package/dist/esm/rules/no-let.js +42 -0
  161. package/dist/esm/rules/no-mapped-object-type.d.ts +3 -0
  162. package/dist/esm/rules/no-mapped-object-type.js +24 -0
  163. package/dist/esm/rules/no-never.d.ts +3 -0
  164. package/dist/esm/rules/no-never.js +24 -0
  165. package/dist/esm/rules/no-non-null-assertion.d.ts +3 -0
  166. package/dist/esm/rules/no-non-null-assertion.js +24 -0
  167. package/dist/esm/rules/no-null.d.ts +3 -0
  168. package/dist/esm/rules/no-null.js +33 -0
  169. package/dist/esm/rules/no-object-as-map.d.ts +3 -0
  170. package/dist/esm/rules/no-object-as-map.js +135 -0
  171. package/dist/esm/rules/no-object-spread.d.ts +3 -0
  172. package/dist/esm/rules/no-object-spread.js +24 -0
  173. package/dist/esm/rules/no-object-stringification-hook.d.ts +3 -0
  174. package/dist/esm/rules/no-object-stringification-hook.js +98 -0
  175. package/dist/esm/rules/no-optional-parameter.d.ts +3 -0
  176. package/dist/esm/rules/no-optional-parameter.js +101 -0
  177. package/dist/esm/rules/no-optional-property.d.ts +3 -0
  178. package/dist/esm/rules/no-optional-property.js +27 -0
  179. package/dist/esm/rules/no-overload.d.ts +3 -0
  180. package/dist/esm/rules/no-overload.js +107 -0
  181. package/dist/esm/rules/no-param-assign.d.ts +3 -0
  182. package/dist/esm/rules/no-param-assign.js +91 -0
  183. package/dist/esm/rules/no-prototype-access.d.ts +3 -0
  184. package/dist/esm/rules/no-prototype-access.js +76 -0
  185. package/dist/esm/rules/no-proxy-reflect.d.ts +3 -0
  186. package/dist/esm/rules/no-proxy-reflect.js +109 -0
  187. package/dist/esm/rules/no-reexport-outside-entrypoint.d.ts +3 -0
  188. package/dist/esm/rules/no-reexport-outside-entrypoint.js +43 -0
  189. package/dist/esm/rules/no-regular-expression.d.ts +3 -0
  190. package/dist/esm/rules/no-regular-expression.js +90 -0
  191. package/dist/esm/rules/no-require.d.ts +3 -0
  192. package/dist/esm/rules/no-require.js +159 -0
  193. package/dist/esm/rules/no-rest-parameter.d.ts +3 -0
  194. package/dist/esm/rules/no-rest-parameter.js +35 -0
  195. package/dist/esm/rules/no-switch.d.ts +3 -0
  196. package/dist/esm/rules/no-switch.js +24 -0
  197. package/dist/esm/rules/no-symbol.d.ts +3 -0
  198. package/dist/esm/rules/no-symbol.js +30 -0
  199. package/dist/esm/rules/no-try-catch.d.ts +3 -0
  200. package/dist/esm/rules/no-try-catch.js +27 -0
  201. package/dist/esm/rules/no-ts-comment-directive.d.ts +3 -0
  202. package/dist/esm/rules/no-ts-comment-directive.js +36 -0
  203. package/dist/esm/rules/no-tuple.d.ts +3 -0
  204. package/dist/esm/rules/no-tuple.js +24 -0
  205. package/dist/esm/rules/no-type-guard.d.ts +3 -0
  206. package/dist/esm/rules/no-type-guard.js +24 -0
  207. package/dist/esm/rules/no-typeof-operator.d.ts +3 -0
  208. package/dist/esm/rules/no-typeof-operator.js +24 -0
  209. package/dist/esm/rules/no-typeof-type.d.ts +3 -0
  210. package/dist/esm/rules/no-typeof-type.js +24 -0
  211. package/dist/esm/rules/no-undefined-type.d.ts +3 -0
  212. package/dist/esm/rules/no-undefined-type.js +24 -0
  213. package/dist/esm/rules/no-unknown.d.ts +3 -0
  214. package/dist/esm/rules/no-unknown.js +24 -0
  215. package/dist/esm/rules/no-untagged-object-union.d.ts +3 -0
  216. package/dist/esm/rules/no-untagged-object-union.js +147 -0
  217. package/dist/esm/rules/no-utility-type.d.ts +3 -0
  218. package/dist/esm/rules/no-utility-type.js +54 -0
  219. package/dist/esm/rules/no-var.d.ts +3 -0
  220. package/dist/esm/rules/no-var.js +24 -0
  221. package/dist/esm/rules/no-void-operator.d.ts +3 -0
  222. package/dist/esm/rules/no-void-operator.js +24 -0
  223. package/dist/esm/rules/no-while.d.ts +3 -0
  224. package/dist/esm/rules/no-while.js +30 -0
  225. package/dist/esm/rules/require-boolean-prefix.d.ts +4 -0
  226. package/dist/esm/rules/require-boolean-prefix.js +176 -0
  227. package/dist/esm/rules/require-disjoint-union.d.ts +5 -0
  228. package/dist/esm/rules/require-disjoint-union.js +225 -0
  229. package/dist/esm/rules/require-function-verb.d.ts +4 -0
  230. package/dist/esm/rules/require-function-verb.js +290 -0
  231. package/dist/esm/rules/require-identifier-case.d.ts +4 -0
  232. package/dist/esm/rules/require-identifier-case.js +194 -0
  233. package/dist/esm/rules/require-kebab-case-filename.d.ts +4 -0
  234. package/dist/esm/rules/require-kebab-case-filename.js +42 -0
  235. package/dist/esm/rules/require-named-union-branch.d.ts +3 -0
  236. package/dist/esm/rules/require-named-union-branch.js +31 -0
  237. package/dist/esm/rules/require-readonly-array.d.ts +3 -0
  238. package/dist/esm/rules/require-readonly-array.js +46 -0
  239. package/dist/esm/rules/require-readonly-collections.d.ts +3 -0
  240. package/dist/esm/rules/require-readonly-collections.js +34 -0
  241. package/dist/esm/rules/require-readonly-object-fields.d.ts +3 -0
  242. package/dist/esm/rules/require-readonly-object-fields.js +29 -0
  243. package/dist/esm/rules/require-readonly-tuple.d.ts +3 -0
  244. package/dist/esm/rules/require-readonly-tuple.js +30 -0
  245. package/dist/esm/rules/require-return-type.d.ts +4 -0
  246. package/dist/esm/rules/require-return-type.js +79 -0
  247. package/dist/esm/rules/require-string-template-expression.d.ts +4 -0
  248. package/dist/esm/rules/require-string-template-expression.js +52 -0
  249. package/dist/esm/utils/create-rule.d.ts +4 -0
  250. package/dist/esm/utils/create-rule.js +3 -0
  251. package/dist/esm/utils/package-entrypoint.d.ts +2 -0
  252. package/dist/esm/utils/package-entrypoint.js +64 -0
  253. package/dist/esm/utils/readonly.d.ts +2 -0
  254. package/dist/esm/utils/readonly.js +14 -0
  255. package/dist/esm/utils/string-case.d.ts +3 -0
  256. package/dist/esm/utils/string-case.js +6 -0
  257. package/dist/esm/utils/type-reference.d.ts +2 -0
  258. package/dist/esm/utils/type-reference.js +31 -0
  259. package/docs/rules/no-accidental-mutation.md +39 -0
  260. package/docs/rules/no-ambient-dom-globals.md +37 -0
  261. package/docs/rules/no-any.md +23 -0
  262. package/docs/rules/no-arguments-object.md +35 -0
  263. package/docs/rules/no-as-type-assertion.md +26 -0
  264. package/docs/rules/no-bigint.md +31 -0
  265. package/docs/rules/no-boolean-literal-compare.md +31 -0
  266. package/docs/rules/no-broad-types.md +27 -0
  267. package/docs/rules/no-buffer.md +31 -0
  268. package/docs/rules/no-class.md +56 -0
  269. package/docs/rules/no-comma-operator.md +31 -0
  270. package/docs/rules/no-conditional-type.md +23 -0
  271. package/docs/rules/no-default-parameter.md +43 -0
  272. package/docs/rules/no-enum.md +31 -0
  273. package/docs/rules/no-eval.md +27 -0
  274. package/docs/rules/no-export-default.md +28 -0
  275. package/docs/rules/no-for-in.md +23 -0
  276. package/docs/rules/no-for-let.md +31 -0
  277. package/docs/rules/no-function-constructor.md +27 -0
  278. package/docs/rules/no-function-keyword.md +37 -0
  279. package/docs/rules/no-generic-parameter-bounds.md +25 -0
  280. package/docs/rules/no-getter-setter.md +55 -0
  281. package/docs/rules/no-global-context.md +50 -0
  282. package/docs/rules/no-import-code-extension.md +39 -0
  283. package/docs/rules/no-import-rename.md +31 -0
  284. package/docs/rules/no-import-type.md +25 -0
  285. package/docs/rules/no-in-operator.md +23 -0
  286. package/docs/rules/no-indexed-access-type.md +33 -0
  287. package/docs/rules/no-indexed-object-type.md +23 -0
  288. package/docs/rules/no-inheritance.md +31 -0
  289. package/docs/rules/no-inline-tagged-object.md +41 -0
  290. package/docs/rules/no-intersection-type.md +23 -0
  291. package/docs/rules/no-json-static-method.md +46 -0
  292. package/docs/rules/no-keyof.md +35 -0
  293. package/docs/rules/no-let.md +31 -0
  294. package/docs/rules/no-mapped-object-type.md +23 -0
  295. package/docs/rules/no-never.md +35 -0
  296. package/docs/rules/no-non-null-assertion.md +23 -0
  297. package/docs/rules/no-null.md +31 -0
  298. package/docs/rules/no-object-as-map.md +49 -0
  299. package/docs/rules/no-object-spread.md +31 -0
  300. package/docs/rules/no-object-stringification-hook.md +49 -0
  301. package/docs/rules/no-optional-parameter.md +39 -0
  302. package/docs/rules/no-optional-property.md +33 -0
  303. package/docs/rules/no-overload.md +29 -0
  304. package/docs/rules/no-param-assign.md +30 -0
  305. package/docs/rules/no-prototype-access.md +43 -0
  306. package/docs/rules/no-proxy-reflect.md +39 -0
  307. package/docs/rules/no-reexport-outside-entrypoint.md +35 -0
  308. package/docs/rules/no-regular-expression.md +36 -0
  309. package/docs/rules/no-require.md +29 -0
  310. package/docs/rules/no-rest-parameter.md +23 -0
  311. package/docs/rules/no-switch.md +32 -0
  312. package/docs/rules/no-symbol.md +31 -0
  313. package/docs/rules/no-try-catch.md +37 -0
  314. package/docs/rules/no-ts-comment-directive.md +25 -0
  315. package/docs/rules/no-tuple.md +29 -0
  316. package/docs/rules/no-type-guard.md +23 -0
  317. package/docs/rules/no-typeof-operator.md +23 -0
  318. package/docs/rules/no-typeof-type.md +23 -0
  319. package/docs/rules/no-undefined-type.md +30 -0
  320. package/docs/rules/no-unknown.md +23 -0
  321. package/docs/rules/no-untagged-object-union.md +25 -0
  322. package/docs/rules/no-utility-type.md +35 -0
  323. package/docs/rules/no-var.md +27 -0
  324. package/docs/rules/no-void-operator.md +27 -0
  325. package/docs/rules/no-while.md +33 -0
  326. package/docs/rules/require-boolean-prefix.md +31 -0
  327. package/docs/rules/require-disjoint-union.md +58 -0
  328. package/docs/rules/require-function-verb.md +83 -0
  329. package/docs/rules/require-identifier-case.md +54 -0
  330. package/docs/rules/require-kebab-case-filename.md +37 -0
  331. package/docs/rules/require-named-union-branch.md +35 -0
  332. package/docs/rules/require-readonly-array.md +35 -0
  333. package/docs/rules/require-readonly-collections.md +35 -0
  334. package/docs/rules/require-readonly-object-fields.md +46 -0
  335. package/docs/rules/require-readonly-tuple.md +27 -0
  336. package/docs/rules/require-return-type.md +37 -0
  337. package/docs/rules/require-string-template-expression.md +38 -0
  338. package/package.json +70 -0
@@ -0,0 +1,352 @@
1
+ import { noForLetRule } from "./rules/no-for-let.js";
2
+ import { noAccidentalMutationRule } from "./rules/no-accidental-mutation.js";
3
+ import { noAmbientDomGlobalsRule } from "./rules/no-ambient-dom-globals.js";
4
+ import { noArgumentsObjectRule } from "./rules/no-arguments-object.js";
5
+ import { noAnyRule } from "./rules/no-any.js";
6
+ import { noAsTypeAssertionRule } from "./rules/no-as-type-assertion.js";
7
+ import { noBigintRule } from "./rules/no-bigint.js";
8
+ import { noBooleanLiteralCompareRule } from "./rules/no-boolean-literal-compare.js";
9
+ import { noBufferRule } from "./rules/no-buffer.js";
10
+ import { noBroadTypesRule } from "./rules/no-broad-types.js";
11
+ import { noClassRule } from "./rules/no-class.js";
12
+ import { noCommaOperatorRule } from "./rules/no-comma-operator.js";
13
+ import { noConditionalTypeRule } from "./rules/no-conditional-type.js";
14
+ import { noDefaultParameterRule } from "./rules/no-default-parameter.js";
15
+ import { noEvalRule } from "./rules/no-eval.js";
16
+ import { noEnumRule } from "./rules/no-enum.js";
17
+ import { noExportDefaultRule } from "./rules/no-export-default.js";
18
+ import { noForInRule } from "./rules/no-for-in.js";
19
+ import { noFunctionConstructorRule } from "./rules/no-function-constructor.js";
20
+ import { noGenericParameterBoundsRule } from "./rules/no-generic-parameter-bounds.js";
21
+ import { noFunctionKeywordRule } from "./rules/no-function-keyword.js";
22
+ import { noGetterSetterRule } from "./rules/no-getter-setter.js";
23
+ import { noGlobalContextRule } from "./rules/no-global-context.js";
24
+ import { noInOperatorRule } from "./rules/no-in-operator.js";
25
+ import { noIndexedObjectTypeRule } from "./rules/no-indexed-object-type.js";
26
+ import { noIndexedAccessTypeRule } from "./rules/no-indexed-access-type.js";
27
+ import { noImportCodeExtensionRule } from "./rules/no-import-code-extension.js";
28
+ import { noImportRenameRule } from "./rules/no-import-rename.js";
29
+ import { noImportTypeRule } from "./rules/no-import-type.js";
30
+ import { noInheritanceRule } from "./rules/no-inheritance.js";
31
+ import { noInlineTaggedObjectRule } from "./rules/no-inline-tagged-object.js";
32
+ import { noIntersectionTypeRule } from "./rules/no-intersection-type.js";
33
+ import { noJsonStaticMethodRule } from "./rules/no-json-static-method.js";
34
+ import { noKeyofRule } from "./rules/no-keyof.js";
35
+ import { noLetRule } from "./rules/no-let.js";
36
+ import { noMappedObjectTypeRule } from "./rules/no-mapped-object-type.js";
37
+ import { noNeverRule } from "./rules/no-never.js";
38
+ import { noNonNullAssertionRule } from "./rules/no-non-null-assertion.js";
39
+ import { noNullRule } from "./rules/no-null.js";
40
+ import { noObjectAsMapRule } from "./rules/no-object-as-map.js";
41
+ import { noObjectSpreadRule } from "./rules/no-object-spread.js";
42
+ import { noObjectStringificationHookRule } from "./rules/no-object-stringification-hook.js";
43
+ import { noOptionalParameterRule } from "./rules/no-optional-parameter.js";
44
+ import { noOptionalPropertyRule } from "./rules/no-optional-property.js";
45
+ import { noOverloadRule } from "./rules/no-overload.js";
46
+ import { noParamAssignRule } from "./rules/no-param-assign.js";
47
+ import { noPrototypeAccessRule } from "./rules/no-prototype-access.js";
48
+ import { noProxyReflectRule } from "./rules/no-proxy-reflect.js";
49
+ import { noRequireRule } from "./rules/no-require.js";
50
+ import { noRegularExpressionRule } from "./rules/no-regular-expression.js";
51
+ import { noReexportOutsideEntrypointRule } from "./rules/no-reexport-outside-entrypoint.js";
52
+ import { noRestParameterRule } from "./rules/no-rest-parameter.js";
53
+ import { noSymbolRule } from "./rules/no-symbol.js";
54
+ import { noSwitchRule } from "./rules/no-switch.js";
55
+ import { noTryCatchRule } from "./rules/no-try-catch.js";
56
+ import { noTsCommentDirectiveRule } from "./rules/no-ts-comment-directive.js";
57
+ import { noTupleRule } from "./rules/no-tuple.js";
58
+ import { noTypeGuardRule } from "./rules/no-type-guard.js";
59
+ import { noTypeofOperatorRule } from "./rules/no-typeof-operator.js";
60
+ import { noTypeofTypeRule } from "./rules/no-typeof-type.js";
61
+ import { noUndefinedTypeRule } from "./rules/no-undefined-type.js";
62
+ import { noUnknownRule } from "./rules/no-unknown.js";
63
+ import { noUntaggedObjectUnionRule } from "./rules/no-untagged-object-union.js";
64
+ import { noUtilityTypeRule } from "./rules/no-utility-type.js";
65
+ import { noVarRule } from "./rules/no-var.js";
66
+ import { noVoidOperatorRule } from "./rules/no-void-operator.js";
67
+ import { noWhileRule } from "./rules/no-while.js";
68
+ import { requireDisjointUnionRule } from "./rules/require-disjoint-union.js";
69
+ import { requireBooleanPrefixRule } from "./rules/require-boolean-prefix.js";
70
+ import { requireFunctionVerbRule } from "./rules/require-function-verb.js";
71
+ import { requireIdentifierCaseRule } from "./rules/require-identifier-case.js";
72
+ import { requireKebabCaseFilenameRule } from "./rules/require-kebab-case-filename.js";
73
+ import { requireNamedUnionBranchRule } from "./rules/require-named-union-branch.js";
74
+ import { requireReadonlyArrayRule } from "./rules/require-readonly-array.js";
75
+ import { requireReadonlyCollectionsRule } from "./rules/require-readonly-collections.js";
76
+ import { requireReadonlyObjectFieldsRule } from "./rules/require-readonly-object-fields.js";
77
+ import { requireReturnTypeRule } from "./rules/require-return-type.js";
78
+ import { requireStringTemplateExpressionRule } from "./rules/require-string-template-expression.js";
79
+ import { requireReadonlyTupleRule } from "./rules/require-readonly-tuple.js";
80
+ export const rules = Object.freeze({
81
+ "no-for-let": noForLetRule,
82
+ "no-accidental-mutation": noAccidentalMutationRule,
83
+ "no-ambient-dom-globals": noAmbientDomGlobalsRule,
84
+ "no-arguments-object": noArgumentsObjectRule,
85
+ "no-any": noAnyRule,
86
+ "no-as-type-assertion": noAsTypeAssertionRule,
87
+ "no-bigint": noBigintRule,
88
+ "no-boolean-literal-compare": noBooleanLiteralCompareRule,
89
+ "no-buffer": noBufferRule,
90
+ "no-broad-types": noBroadTypesRule,
91
+ "no-class": noClassRule,
92
+ "no-comma-operator": noCommaOperatorRule,
93
+ "no-conditional-type": noConditionalTypeRule,
94
+ "no-default-parameter": noDefaultParameterRule,
95
+ "no-eval": noEvalRule,
96
+ "no-enum": noEnumRule,
97
+ "no-export-default": noExportDefaultRule,
98
+ "no-for-in": noForInRule,
99
+ "no-function-constructor": noFunctionConstructorRule,
100
+ "no-generic-parameter-bounds": noGenericParameterBoundsRule,
101
+ "no-function-keyword": noFunctionKeywordRule,
102
+ "no-getter-setter": noGetterSetterRule,
103
+ "no-global-context": noGlobalContextRule,
104
+ "no-in-operator": noInOperatorRule,
105
+ "no-indexed-access-type": noIndexedAccessTypeRule,
106
+ "no-indexed-object-type": noIndexedObjectTypeRule,
107
+ "no-import-code-extension": noImportCodeExtensionRule,
108
+ "no-import-rename": noImportRenameRule,
109
+ "no-import-type": noImportTypeRule,
110
+ "no-inheritance": noInheritanceRule,
111
+ "no-inline-tagged-object": noInlineTaggedObjectRule,
112
+ "no-intersection-type": noIntersectionTypeRule,
113
+ "no-json-static-method": noJsonStaticMethodRule,
114
+ "no-keyof": noKeyofRule,
115
+ "no-let": noLetRule,
116
+ "no-mapped-object-type": noMappedObjectTypeRule,
117
+ "no-never": noNeverRule,
118
+ "no-non-null-assertion": noNonNullAssertionRule,
119
+ "no-null": noNullRule,
120
+ "no-object-as-map": noObjectAsMapRule,
121
+ "no-object-spread": noObjectSpreadRule,
122
+ "no-object-stringification-hook": noObjectStringificationHookRule,
123
+ "no-optional-parameter": noOptionalParameterRule,
124
+ "no-optional-property": noOptionalPropertyRule,
125
+ "no-overload": noOverloadRule,
126
+ "no-param-assign": noParamAssignRule,
127
+ "no-prototype-access": noPrototypeAccessRule,
128
+ "no-proxy-reflect": noProxyReflectRule,
129
+ "no-require": noRequireRule,
130
+ "no-reexport-outside-entrypoint": noReexportOutsideEntrypointRule,
131
+ "no-regular-expression": noRegularExpressionRule,
132
+ "no-rest-parameter": noRestParameterRule,
133
+ "no-symbol": noSymbolRule,
134
+ "no-switch": noSwitchRule,
135
+ "no-try-catch": noTryCatchRule,
136
+ "no-ts-comment-directive": noTsCommentDirectiveRule,
137
+ "no-tuple": noTupleRule,
138
+ "no-type-guard": noTypeGuardRule,
139
+ "no-typeof-operator": noTypeofOperatorRule,
140
+ "no-typeof-type": noTypeofTypeRule,
141
+ "no-undefined-type": noUndefinedTypeRule,
142
+ "no-unknown": noUnknownRule,
143
+ "no-untagged-object-union": noUntaggedObjectUnionRule,
144
+ "no-utility-type": noUtilityTypeRule,
145
+ "no-var": noVarRule,
146
+ "no-void-operator": noVoidOperatorRule,
147
+ "no-while": noWhileRule,
148
+ "require-disjoint-union": requireDisjointUnionRule,
149
+ "require-boolean-prefix": requireBooleanPrefixRule,
150
+ "require-function-verb": requireFunctionVerbRule,
151
+ "require-identifier-case": requireIdentifierCaseRule,
152
+ "require-kebab-case-filename": requireKebabCaseFilenameRule,
153
+ "require-named-union-branch": requireNamedUnionBranchRule,
154
+ "require-readonly-array": requireReadonlyArrayRule,
155
+ "require-readonly-collections": requireReadonlyCollectionsRule,
156
+ "require-readonly-object-fields": requireReadonlyObjectFieldsRule,
157
+ "require-return-type": requireReturnTypeRule,
158
+ "require-string-template-expression": requireStringTemplateExpressionRule,
159
+ "require-readonly-tuple": requireReadonlyTupleRule
160
+ });
161
+ const namespace = "@less-unsound";
162
+ const packageName = "@less-unsound/eslint-plugin";
163
+ export const plugin = Object.freeze({
164
+ meta: Object.freeze({
165
+ name: packageName,
166
+ version: "0.0.1"
167
+ }),
168
+ rules
169
+ });
170
+ const createConfig = (entries) => {
171
+ const namespacedRules = Object.fromEntries(entries.map(([name, level]) => [namespace + "/" + name, level]));
172
+ return Object.freeze({
173
+ plugins: Object.freeze({
174
+ [namespace]: plugin
175
+ }),
176
+ rules: Object.freeze(namespacedRules)
177
+ });
178
+ };
179
+ export const mutabilityConfig = createConfig([
180
+ ["no-for-let", "error"],
181
+ ["no-accidental-mutation", "error"],
182
+ ["no-let", "error"],
183
+ ["no-param-assign", "error"],
184
+ ["no-var", "error"],
185
+ ["require-readonly-array", "error"],
186
+ ["require-readonly-collections", "error"],
187
+ ["require-readonly-object-fields", "error"],
188
+ ["require-readonly-tuple", "error"]
189
+ ]);
190
+ export const oopConfig = createConfig([
191
+ ["no-class", "error"],
192
+ ["no-getter-setter", "error"],
193
+ ["no-global-context", "error"],
194
+ ["no-inheritance", "error"],
195
+ ["no-object-stringification-hook", "error"],
196
+ ["no-prototype-access", "error"],
197
+ ["no-proxy-reflect", "error"]
198
+ ]);
199
+ export const namingConfig = createConfig([
200
+ ["require-boolean-prefix", "error"],
201
+ ["require-function-verb", "error"],
202
+ ["require-identifier-case", "error"],
203
+ ["require-kebab-case-filename", "error"]
204
+ ]);
205
+ export const typesConfig = createConfig([
206
+ ["no-any", "error"],
207
+ ["no-as-type-assertion", "error"],
208
+ ["no-broad-types", "error"],
209
+ ["no-conditional-type", "error"],
210
+ ["no-generic-parameter-bounds", "error"],
211
+ ["no-in-operator", "error"],
212
+ ["no-indexed-access-type", "error"],
213
+ ["no-indexed-object-type", "error"],
214
+ ["no-import-type", "error"],
215
+ ["no-intersection-type", "error"],
216
+ ["no-keyof", "error"],
217
+ ["no-mapped-object-type", "error"],
218
+ ["no-never", "warn"],
219
+ ["no-non-null-assertion", "error"],
220
+ ["no-tuple", "error"],
221
+ ["no-optional-property", "error"],
222
+ ["no-symbol", "error"],
223
+ ["no-overload", "error"],
224
+ ["no-ts-comment-directive", "error"],
225
+ ["no-type-guard", "error"],
226
+ ["no-typeof-operator", "error"],
227
+ ["no-typeof-type", "error"],
228
+ ["no-undefined-type", "warn"],
229
+ ["no-unknown", "error"],
230
+ ["no-utility-type", "error"],
231
+ ["require-disjoint-union", "error"],
232
+ ["require-named-union-branch", "error"],
233
+ ["require-return-type", "error"]
234
+ ]);
235
+ export const syntaxConfig = createConfig([
236
+ ["no-ambient-dom-globals", "error"],
237
+ ["no-arguments-object", "error"],
238
+ ["no-default-parameter", "error"],
239
+ ["no-eval", "error"],
240
+ ["no-enum", "error"],
241
+ ["no-export-default", "error"],
242
+ ["no-for-in", "error"],
243
+ ["no-function-constructor", "error"],
244
+ ["no-function-keyword", "error"],
245
+ ["no-boolean-literal-compare", "error"],
246
+ ["no-buffer", "error"],
247
+ ["no-comma-operator", "error"],
248
+ ["no-inline-tagged-object", "error"],
249
+ ["no-json-static-method", "error"],
250
+ ["no-import-code-extension", "error"],
251
+ ["no-import-rename", "error"],
252
+ ["no-null", "error"],
253
+ ["no-object-as-map", "error"],
254
+ ["no-object-spread", "error"],
255
+ ["no-optional-parameter", "error"],
256
+ ["no-reexport-outside-entrypoint", "error"],
257
+ ["no-require", "error"],
258
+ ["no-regular-expression", "error"],
259
+ ["no-rest-parameter", "error"],
260
+ ["no-try-catch", "error"],
261
+ ["no-void-operator", "error"],
262
+ ["no-while", "error"],
263
+ ["require-string-template-expression", "error"]
264
+ ]);
265
+ export const recommendedConfig = createConfig([
266
+ ["no-for-let", "error"],
267
+ ["no-any", "error"],
268
+ ["no-as-type-assertion", "error"],
269
+ ["no-accidental-mutation", "error"],
270
+ ["no-ambient-dom-globals", "error"],
271
+ ["no-arguments-object", "error"],
272
+ ["no-bigint", "warn"],
273
+ ["no-boolean-literal-compare", "error"],
274
+ ["no-buffer", "error"],
275
+ ["no-broad-types", "error"],
276
+ ["no-class", "error"],
277
+ ["no-comma-operator", "error"],
278
+ ["no-conditional-type", "error"],
279
+ ["no-default-parameter", "error"],
280
+ ["no-eval", "error"],
281
+ ["no-enum", "error"],
282
+ ["no-export-default", "error"],
283
+ ["no-for-in", "error"],
284
+ ["no-function-constructor", "error"],
285
+ ["no-function-keyword", "error"],
286
+ ["no-inline-tagged-object", "error"],
287
+ ["no-generic-parameter-bounds", "error"],
288
+ ["no-getter-setter", "error"],
289
+ ["no-global-context", "error"],
290
+ ["no-in-operator", "error"],
291
+ ["no-indexed-access-type", "error"],
292
+ ["no-indexed-object-type", "error"],
293
+ ["no-import-code-extension", "error"],
294
+ ["no-import-rename", "error"],
295
+ ["no-import-type", "error"],
296
+ ["no-inheritance", "error"],
297
+ ["no-intersection-type", "error"],
298
+ ["no-json-static-method", "error"],
299
+ ["no-keyof", "error"],
300
+ ["no-let", "error"],
301
+ ["no-mapped-object-type", "error"],
302
+ ["no-never", "warn"],
303
+ ["no-non-null-assertion", "error"],
304
+ ["no-null", "error"],
305
+ ["no-object-as-map", "error"],
306
+ ["no-object-spread", "error"],
307
+ ["no-object-stringification-hook", "error"],
308
+ ["no-optional-parameter", "error"],
309
+ ["no-optional-property", "error"],
310
+ ["no-overload", "error"],
311
+ ["no-param-assign", "error"],
312
+ ["no-prototype-access", "error"],
313
+ ["no-proxy-reflect", "error"],
314
+ ["no-reexport-outside-entrypoint", "error"],
315
+ ["no-require", "error"],
316
+ ["no-regular-expression", "error"],
317
+ ["no-rest-parameter", "error"],
318
+ ["no-symbol", "error"],
319
+ ["no-switch", "warn"],
320
+ ["no-try-catch", "error"],
321
+ ["no-ts-comment-directive", "error"],
322
+ ["no-tuple", "error"],
323
+ ["no-type-guard", "error"],
324
+ ["no-typeof-operator", "error"],
325
+ ["no-typeof-type", "error"],
326
+ ["no-undefined-type", "warn"],
327
+ ["no-unknown", "error"],
328
+ ["no-utility-type", "error"],
329
+ ["no-var", "error"],
330
+ ["no-void-operator", "error"],
331
+ ["no-while", "error"],
332
+ ["require-boolean-prefix", "error"],
333
+ ["require-disjoint-union", "error"],
334
+ ["require-function-verb", "error"],
335
+ ["require-identifier-case", "error"],
336
+ ["require-kebab-case-filename", "error"],
337
+ ["require-named-union-branch", "error"],
338
+ ["require-readonly-array", "error"],
339
+ ["require-readonly-collections", "error"],
340
+ ["require-readonly-object-fields", "error"],
341
+ ["require-return-type", "error"],
342
+ ["require-string-template-expression", "error"],
343
+ ["require-readonly-tuple", "off"]
344
+ ]);
345
+ export const configs = Object.freeze({
346
+ mutability: mutabilityConfig,
347
+ naming: namingConfig,
348
+ oop: oopConfig,
349
+ recommended: recommendedConfig,
350
+ syntax: syntaxConfig,
351
+ types: typesConfig
352
+ });
@@ -0,0 +1,3 @@
1
+ export declare const noAccidentalMutationRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"forbiddenAccidentalMutation", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
@@ -0,0 +1,97 @@
1
+ import { AST_NODE_TYPES } from "@typescript-eslint/utils";
2
+ import { createRule } from "../utils/create-rule.js";
3
+ const freshArrayMethods = new Set([
4
+ "concat",
5
+ "filter",
6
+ "flat",
7
+ "flatMap",
8
+ "map",
9
+ "slice",
10
+ "toReversed",
11
+ "toSorted",
12
+ "toSpliced"
13
+ ]);
14
+ const mutatingMethods = new Set(["reverse", "sort", "splice"]);
15
+ const messageIds = Object.freeze({
16
+ forbiddenAccidentalMutation: "Accidental array mutation is not allowed on non-fresh arrays unless mutability is required for performance."
17
+ });
18
+ const getMemberName = (node) => {
19
+ if (node.computed) {
20
+ return undefined;
21
+ }
22
+ if (node.property.type !== AST_NODE_TYPES.Identifier) {
23
+ return undefined;
24
+ }
25
+ return node.property.name;
26
+ };
27
+ const isArrayFactoryCall = (node) => {
28
+ if (node.callee.type !== AST_NODE_TYPES.MemberExpression) {
29
+ return false;
30
+ }
31
+ const memberName = getMemberName(node.callee);
32
+ if (memberName !== "from" && memberName !== "of") {
33
+ return false;
34
+ }
35
+ if (node.callee.object.type !== AST_NODE_TYPES.Identifier) {
36
+ return false;
37
+ }
38
+ return node.callee.object.name === "Array";
39
+ };
40
+ const isFreshArrayExpression = (node) => {
41
+ if (node.type === AST_NODE_TYPES.ArrayExpression) {
42
+ return true;
43
+ }
44
+ if (node.type === AST_NODE_TYPES.NewExpression) {
45
+ if (node.callee.type !== AST_NODE_TYPES.Identifier) {
46
+ return false;
47
+ }
48
+ return node.callee.name === "Array";
49
+ }
50
+ if (node.type !== AST_NODE_TYPES.CallExpression) {
51
+ return false;
52
+ }
53
+ if (isArrayFactoryCall(node)) {
54
+ return true;
55
+ }
56
+ if (node.callee.type !== AST_NODE_TYPES.MemberExpression) {
57
+ return false;
58
+ }
59
+ const memberName = getMemberName(node.callee);
60
+ if (memberName === undefined) {
61
+ return false;
62
+ }
63
+ return freshArrayMethods.has(memberName);
64
+ };
65
+ export const noAccidentalMutationRule = createRule({
66
+ name: "no-accidental-mutation",
67
+ meta: {
68
+ type: "problem",
69
+ docs: {
70
+ description: "Disallow in-place `.sort()`, `.reverse()`, and `.splice()` on non-fresh arrays unless mutability is required for performance."
71
+ },
72
+ schema: [],
73
+ messages: messageIds
74
+ },
75
+ defaultOptions: [],
76
+ create: (context) => ({
77
+ CallExpression: (node) => {
78
+ if (node.callee.type !== AST_NODE_TYPES.MemberExpression) {
79
+ return;
80
+ }
81
+ const memberName = getMemberName(node.callee);
82
+ if (memberName === undefined) {
83
+ return;
84
+ }
85
+ if (!mutatingMethods.has(memberName)) {
86
+ return;
87
+ }
88
+ if (isFreshArrayExpression(node.callee.object)) {
89
+ return;
90
+ }
91
+ context.report({
92
+ node,
93
+ messageId: "forbiddenAccidentalMutation"
94
+ });
95
+ }
96
+ })
97
+ });
@@ -0,0 +1,3 @@
1
+ export declare const noAmbientDomGlobalsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<string, [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
@@ -0,0 +1,178 @@
1
+ import { AST_NODE_TYPES } from "@typescript-eslint/utils";
2
+ import { createRule } from "../utils/create-rule.js";
3
+ const browserGlobals = new Set([
4
+ "addEventListener",
5
+ "blur",
6
+ "close",
7
+ "closed",
8
+ "confirm",
9
+ "defaultStatus",
10
+ "defaultstatus",
11
+ "event",
12
+ "external",
13
+ "find",
14
+ "focus",
15
+ "frameElement",
16
+ "frames",
17
+ "history",
18
+ "innerHeight",
19
+ "innerWidth",
20
+ "length",
21
+ "location",
22
+ "locationbar",
23
+ "menubar",
24
+ "moveBy",
25
+ "moveTo",
26
+ "name",
27
+ "onblur",
28
+ "onerror",
29
+ "onfocus",
30
+ "onload",
31
+ "onresize",
32
+ "onunload",
33
+ "open",
34
+ "opener",
35
+ "opera",
36
+ "outerHeight",
37
+ "outerWidth",
38
+ "pageXOffset",
39
+ "pageYOffset",
40
+ "parent",
41
+ "print",
42
+ "removeEventListener",
43
+ "resizeBy",
44
+ "resizeTo",
45
+ "screen",
46
+ "screenLeft",
47
+ "screenTop",
48
+ "screenX",
49
+ "screenY",
50
+ "scroll",
51
+ "scrollBy",
52
+ "scrollTo",
53
+ "scrollX",
54
+ "scrollY",
55
+ "scrollbars",
56
+ "status",
57
+ "statusbar",
58
+ "stop",
59
+ "toolbar",
60
+ "top"
61
+ ]);
62
+ const messageIds = Object.freeze({
63
+ forbiddenAmbientDomGlobal: "Ambient DOM globals are not allowed."
64
+ });
65
+ const isBindingIdentifier = (node) => {
66
+ const parent = node.parent;
67
+ if (parent === null) {
68
+ return false;
69
+ }
70
+ if (parent.type === AST_NODE_TYPES.VariableDeclarator) {
71
+ return parent.id === node;
72
+ }
73
+ if (parent.type === AST_NODE_TYPES.FunctionDeclaration ||
74
+ parent.type === AST_NODE_TYPES.FunctionExpression) {
75
+ return parent.id === node;
76
+ }
77
+ if (parent.type === AST_NODE_TYPES.ClassDeclaration ||
78
+ parent.type === AST_NODE_TYPES.ClassExpression ||
79
+ parent.type === AST_NODE_TYPES.TSTypeAliasDeclaration ||
80
+ parent.type === AST_NODE_TYPES.TSInterfaceDeclaration ||
81
+ parent.type === AST_NODE_TYPES.TSEnumDeclaration) {
82
+ return parent.id === node;
83
+ }
84
+ if (parent.type === AST_NODE_TYPES.TSEnumMember) {
85
+ return parent.id === node;
86
+ }
87
+ if (parent.type === AST_NODE_TYPES.ImportSpecifier ||
88
+ parent.type === AST_NODE_TYPES.ImportDefaultSpecifier ||
89
+ parent.type === AST_NODE_TYPES.ImportNamespaceSpecifier) {
90
+ return parent.local === node;
91
+ }
92
+ if (parent.type === AST_NODE_TYPES.ExportSpecifier) {
93
+ return parent.local === node || parent.exported === node;
94
+ }
95
+ if (parent.type === AST_NODE_TYPES.CatchClause) {
96
+ return parent.param === node;
97
+ }
98
+ if (parent.type === AST_NODE_TYPES.TSParameterProperty) {
99
+ return parent.parameter === node;
100
+ }
101
+ if (parent.type === AST_NODE_TYPES.MemberExpression) {
102
+ return parent.property === node && parent.computed === false;
103
+ }
104
+ if (parent.type === AST_NODE_TYPES.Property) {
105
+ if (parent.parent?.type === AST_NODE_TYPES.ObjectPattern) {
106
+ return parent.key === node && parent.computed === false;
107
+ }
108
+ if (parent.parent?.type === AST_NODE_TYPES.ObjectExpression) {
109
+ return parent.key === node && parent.computed === false;
110
+ }
111
+ return false;
112
+ }
113
+ if (parent.type === AST_NODE_TYPES.MethodDefinition) {
114
+ return parent.key === node && parent.computed === false;
115
+ }
116
+ if (parent.type === AST_NODE_TYPES.PropertyDefinition) {
117
+ return parent.key === node && parent.computed === false;
118
+ }
119
+ if (parent.type === AST_NODE_TYPES.TSPropertySignature ||
120
+ parent.type === AST_NODE_TYPES.TSMethodSignature) {
121
+ return parent.key === node;
122
+ }
123
+ if (parent.type === AST_NODE_TYPES.LabeledStatement) {
124
+ return parent.label === node;
125
+ }
126
+ if (parent.type === AST_NODE_TYPES.TSQualifiedName) {
127
+ return parent.left === node;
128
+ }
129
+ if (parent.type === AST_NODE_TYPES.TSImportEqualsDeclaration) {
130
+ return parent.id === node;
131
+ }
132
+ return false;
133
+ };
134
+ const hasDeclaredBinding = (scope, name) => {
135
+ let current = scope;
136
+ while (current !== null) {
137
+ for (const variable of current.variables) {
138
+ if (variable.name !== name) {
139
+ continue;
140
+ }
141
+ if (variable.defs.length > 0 || variable.identifiers.length > 0) {
142
+ return true;
143
+ }
144
+ }
145
+ current = current.upper;
146
+ }
147
+ return false;
148
+ };
149
+ export const noAmbientDomGlobalsRule = createRule({
150
+ name: "no-ambient-dom-globals",
151
+ meta: {
152
+ type: "problem",
153
+ docs: {
154
+ description: "Disallow the confusing ambient browser-global surface."
155
+ },
156
+ schema: [],
157
+ messages: messageIds
158
+ },
159
+ defaultOptions: [],
160
+ create: (context) => ({
161
+ Identifier: (node) => {
162
+ if (!browserGlobals.has(node.name)) {
163
+ return;
164
+ }
165
+ if (isBindingIdentifier(node)) {
166
+ return;
167
+ }
168
+ const scope = context.sourceCode.getScope(node);
169
+ if (hasDeclaredBinding(scope, node.name)) {
170
+ return;
171
+ }
172
+ context.report({
173
+ node,
174
+ messageId: "forbiddenAmbientDomGlobal"
175
+ });
176
+ }
177
+ })
178
+ });
@@ -0,0 +1,3 @@
1
+ export declare const noAnyRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"forbiddenAny", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
@@ -0,0 +1,24 @@
1
+ import { createRule } from "../utils/create-rule.js";
2
+ const messageIds = Object.freeze({
3
+ forbiddenAny: "`any` is not allowed."
4
+ });
5
+ export const noAnyRule = createRule({
6
+ name: "no-any",
7
+ meta: {
8
+ type: "problem",
9
+ docs: {
10
+ description: "Disallow the `any` type."
11
+ },
12
+ schema: [],
13
+ messages: messageIds
14
+ },
15
+ defaultOptions: [],
16
+ create: (context) => ({
17
+ TSAnyKeyword: (node) => {
18
+ context.report({
19
+ node,
20
+ messageId: "forbiddenAny"
21
+ });
22
+ }
23
+ })
24
+ });
@@ -0,0 +1,3 @@
1
+ export declare const noArgumentsObjectRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<string, [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };