@alexlit/lint-kit 176.0.0 → 177.0.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.
Files changed (295) hide show
  1. package/package.json +1 -1
  2. package/packages/config-eslint/package.json +1 -1
  3. package/packages/config-eslint/plugins/vue.js +6 -0
  4. package/packages/config-stylelint/package.json +5 -5
  5. package/packages/config-stylelint/plugins/color-format.js +1 -5
  6. package/packages/config-stylelint/plugins/logical-css.js +1 -4
  7. package/packages/config-eslint/node_modules/@eslint/core/LICENSE +0 -201
  8. package/packages/config-eslint/node_modules/@eslint/core/README.md +0 -29
  9. package/packages/config-eslint/node_modules/@eslint/core/dist/cjs/types.d.cts +0 -1179
  10. package/packages/config-eslint/node_modules/@eslint/core/dist/esm/types.d.ts +0 -1179
  11. package/packages/config-eslint/node_modules/@eslint/core/package.json +0 -49
  12. package/packages/config-eslint/node_modules/@eslint/plugin-kit/LICENSE +0 -201
  13. package/packages/config-eslint/node_modules/@eslint/plugin-kit/README.md +0 -273
  14. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/cjs/index.cjs +0 -884
  15. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/cjs/index.d.cts +0 -328
  16. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/cjs/types.cts +0 -7
  17. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/esm/index.d.ts +0 -328
  18. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/esm/index.js +0 -879
  19. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/esm/types.d.ts +0 -6
  20. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/esm/types.ts +0 -7
  21. package/packages/config-eslint/node_modules/@eslint/plugin-kit/package.json +0 -61
  22. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/configs/flat-config-base.js +0 -9
  23. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/index.d.ts +0 -17
  24. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/index.js +0 -91
  25. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/license +0 -9
  26. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/globals.json +0 -3345
  27. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/index.d.ts +0 -3452
  28. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/index.js +0 -2
  29. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/license +0 -9
  30. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/package.json +0 -117
  31. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/readme.md +0 -42
  32. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/package.json +0 -128
  33. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/readme.md +0 -261
  34. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/call-or-new-expression.js +0 -120
  35. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/function-types.js +0 -7
  36. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/index.js +0 -30
  37. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-arrow-function-body.js +0 -3
  38. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-directive.js +0 -4
  39. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-empty-array-expression.js +0 -5
  40. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-empty-node.js +0 -17
  41. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-expression-statement.js +0 -7
  42. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-function.js +0 -5
  43. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-member-expression.js +0 -98
  44. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-method-call.js +0 -62
  45. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-negative-one.js +0 -8
  46. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-reference-identifier.js +0 -159
  47. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-static-require.js +0 -10
  48. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-tagged-template-literal.js +0 -24
  49. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-undefined.js +0 -3
  50. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/literal.js +0 -24
  51. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/better-regex.js +0 -146
  52. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/catch-error-name.js +0 -138
  53. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-assert.js +0 -98
  54. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-date-clone.js +0 -54
  55. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-destructuring.js +0 -168
  56. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-empty-array-spread.js +0 -127
  57. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-existence-index-check.js +0 -137
  58. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-function-scoping.js +0 -265
  59. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/custom-error-definition.js +0 -218
  60. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/empty-brace-spaces.js +0 -62
  61. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/error-message.js +0 -98
  62. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/escape-case.js +0 -86
  63. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/expiring-todo-comments.js +0 -584
  64. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/explicit-length-check.js +0 -236
  65. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/filename-case.js +0 -276
  66. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/add-parenthesizes-to-return-or-throw-expression.js +0 -29
  67. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/append-argument.js +0 -30
  68. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/extend-fix-range.js +0 -11
  69. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/fix-space-around-keywords.js +0 -43
  70. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/index.js +0 -23
  71. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-argument.js +0 -40
  72. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-expression-statement.js +0 -34
  73. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-method-call.js +0 -28
  74. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-object-property.js +0 -21
  75. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-parentheses.js +0 -19
  76. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-spaces-after.js +0 -22
  77. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-specifier.js +0 -59
  78. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/rename-variable.js +0 -8
  79. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-argument.js +0 -17
  80. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-member-expression-property.js +0 -25
  81. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-node-or-token-and-spaces-before.js +0 -31
  82. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-reference-identifier.js +0 -32
  83. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-string-raw.js +0 -12
  84. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-template-element.js +0 -10
  85. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/switch-call-expression-to-new-expression.js +0 -29
  86. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/switch-new-expression-to-call-expression.js +0 -42
  87. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/import-style.js +0 -375
  88. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/index.js +0 -143
  89. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/new-for-builtins.js +0 -112
  90. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-abusive-eslint-disable.js +0 -63
  91. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-accessor-recursion.js +0 -160
  92. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-anonymous-default-export.js +0 -210
  93. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-callback-reference.js +0 -285
  94. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-for-each.js +0 -496
  95. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-method-this-argument.js +0 -223
  96. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-reduce.js +0 -128
  97. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-reverse.js +0 -6
  98. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-sort.js +0 -6
  99. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-await-expression-member.js +0 -85
  100. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-await-in-promise-methods.js +0 -69
  101. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-console-spaces.js +0 -89
  102. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-document-cookie.js +0 -27
  103. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-empty-file.js +0 -58
  104. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-for-loop.js +0 -419
  105. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-hex-escape.js +0 -54
  106. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-immediate-mutation.js +0 -778
  107. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-instanceof-builtins.js +0 -216
  108. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-invalid-fetch-options.js +0 -112
  109. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-invalid-remove-event-listener.js +0 -61
  110. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-keyword-prefix.js +0 -202
  111. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-lonely-if.js +0 -155
  112. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-magic-array-flat-depth.js +0 -55
  113. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-named-default.js +0 -101
  114. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-negated-condition.js +0 -145
  115. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-negation-in-equality-check.js +0 -99
  116. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-nested-ternary.js +0 -60
  117. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-new-array.js +0 -106
  118. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-new-buffer.js +0 -100
  119. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-null.js +0 -153
  120. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-object-as-default-parameter.js +0 -52
  121. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-process-exit.js +0 -106
  122. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-single-promise-in-promise-methods.js +0 -179
  123. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-static-only-class.js +0 -226
  124. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-thenable.js +0 -194
  125. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-this-assignment.js +0 -40
  126. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-typeof-undefined.js +0 -146
  127. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-array-flat-depth.js +0 -49
  128. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-array-splice-count.js +0 -23
  129. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-await.js +0 -110
  130. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-polyfills.js +0 -174
  131. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-slice-end.js +0 -22
  132. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unreadable-array-destructuring.js +0 -85
  133. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unreadable-iife.js +0 -43
  134. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unused-properties.js +0 -240
  135. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-collection-argument.js +0 -101
  136. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-error-capture-stack-trace.js +0 -146
  137. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-fallback-in-spread.js +0 -66
  138. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-length-check.js +0 -150
  139. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-promise-resolve-reject.js +0 -210
  140. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-spread.js +0 -389
  141. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-switch-case.js +0 -59
  142. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-undefined.js +0 -275
  143. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-zero-fractions.js +0 -81
  144. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/number-literal-case.js +0 -82
  145. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/numeric-separators-style.js +0 -189
  146. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-add-event-listener.js +0 -191
  147. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-find.js +0 -458
  148. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-flat-map.js +0 -86
  149. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-flat.js +0 -279
  150. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-index-of.js +0 -34
  151. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-some.js +0 -219
  152. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-at.js +0 -380
  153. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-bigint-literals.js +0 -129
  154. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-blob-reading-methods.js +0 -47
  155. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-class-fields.js +0 -158
  156. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-classlist-toggle.js +0 -255
  157. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-code-point.js +0 -56
  158. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-date-now.js +0 -133
  159. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-default-parameters.js +0 -218
  160. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-dom-node-append.js +0 -50
  161. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-dom-node-dataset.js +0 -135
  162. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-dom-node-remove.js +0 -124
  163. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-dom-node-text-content.js +0 -77
  164. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-event-target.js +0 -119
  165. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-export-from.js +0 -367
  166. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-global-this.js +0 -222
  167. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-import-meta-properties.js +0 -320
  168. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-includes.js +0 -111
  169. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-json-parse-buffer.js +0 -161
  170. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-keyboard-event-key.js +0 -188
  171. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-logical-operator-over-ternary.js +0 -162
  172. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-math-min-max.js +0 -205
  173. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-math-trunc.js +0 -111
  174. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-modern-dom-apis.js +0 -145
  175. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-modern-math-apis.js +0 -210
  176. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-module.js +0 -377
  177. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-native-coercion-functions.js +0 -187
  178. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-negative-index.js +0 -211
  179. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-node-protocol.js +0 -86
  180. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-number-properties.js +0 -142
  181. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-object-from-entries.js +0 -256
  182. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-optional-catch-binding.js +0 -77
  183. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-prototype-methods.js +0 -162
  184. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-query-selector.js +0 -170
  185. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-reflect-apply.js +0 -99
  186. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-regexp-test.js +0 -155
  187. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-response-static-json.js +0 -85
  188. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-set-has.js +0 -181
  189. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-set-size.js +0 -106
  190. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-single-call.js +0 -188
  191. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-spread.js +0 -521
  192. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-raw.js +0 -149
  193. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-replace-all.js +0 -180
  194. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-slice.js +0 -180
  195. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-starts-ends-with.js +0 -201
  196. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-trim-start-end.js +0 -46
  197. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-structured-clone.js +0 -149
  198. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-switch.js +0 -357
  199. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-ternary.js +0 -288
  200. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-top-level-await.js +0 -154
  201. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-type-error.js +0 -169
  202. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prevent-abbreviations.js +0 -655
  203. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/relative-url-style.js +0 -171
  204. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-array-join-separator.js +0 -65
  205. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-module-attributes.js +0 -120
  206. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-module-specifiers.js +0 -158
  207. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-number-to-fixed-digits-argument.js +0 -55
  208. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-post-message-target-origin.js +0 -74
  209. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/get-documentation-url.js +0 -9
  210. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/index.js +0 -9
  211. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-create.js +0 -51
  212. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-listener.js +0 -40
  213. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-problem.js +0 -38
  214. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-rule-fixer.js +0 -49
  215. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-rule.js +0 -38
  216. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-rules.js +0 -13
  217. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/unicorn-context.js +0 -36
  218. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/unicorn-listeners.js +0 -65
  219. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/utilities.js +0 -27
  220. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/abbreviations.js +0 -270
  221. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/builtin-errors.js +0 -14
  222. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/dom-events.js +0 -275
  223. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/event-keys.js +0 -54
  224. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/negative-index.js +0 -52
  225. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/no-array-mutate-rule.js +0 -139
  226. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/no-unnecessary-length-or-infinity-rule.js +0 -80
  227. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/package-json.js +0 -42
  228. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/simple-array-search-rule.js +0 -126
  229. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/typed-array.js +0 -17
  230. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/string-content.js +0 -192
  231. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/switch-case-braces.js +0 -114
  232. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/template-indent.js +0 -219
  233. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/text-encoding-identifier-case.js +0 -130
  234. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/throw-new-error.js +0 -60
  235. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/array-or-object-prototype-property.js +0 -57
  236. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/assert-token.js +0 -29
  237. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/boolean.js +0 -88
  238. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/builtins.js +0 -30
  239. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/cartesian-product-samples.js +0 -22
  240. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/create-deprecated-rules.js +0 -29
  241. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/escape-string.js +0 -24
  242. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/escape-template-element-raw.js +0 -6
  243. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-ancestor.js +0 -15
  244. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-available-variable-name.js +0 -147
  245. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-builtin-rule.js +0 -5
  246. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-call-expression-arguments-text.js +0 -36
  247. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-call-or-new-expression-tokens.js +0 -67
  248. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-class-head-location.js +0 -22
  249. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-documentation-url.js +0 -9
  250. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-indent-string.js +0 -18
  251. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-references.js +0 -5
  252. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-scopes.js +0 -12
  253. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-sibling-node.js +0 -38
  254. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-switch-case-head-location.js +0 -22
  255. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-token-store.js +0 -24
  256. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-variable-identifiers.js +0 -7
  257. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/global-reference-tracker.js +0 -68
  258. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/has-optional-chain-element.js +0 -17
  259. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/has-same-range.js +0 -7
  260. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/index.js +0 -59
  261. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-function-self-used-inside.js +0 -39
  262. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-left-hand-side.js +0 -20
  263. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-logical-expression.js +0 -14
  264. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-method-named.js +0 -7
  265. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-new-expression-with-parentheses.js +0 -28
  266. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-node-matches.js +0 -58
  267. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-node-value-not-dom-node.js +0 -20
  268. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-node-value-not-function.js +0 -40
  269. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-number.js +0 -224
  270. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-object-method.js +0 -10
  271. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-on-same-line.js +0 -7
  272. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-same-identifier.js +0 -5
  273. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-same-reference.js +0 -170
  274. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-shorthand-export-local.js +0 -8
  275. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-shorthand-import-local.js +0 -8
  276. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-shorthand-property-assignment-pattern-left.js +0 -8
  277. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-shorthand-property-value.js +0 -6
  278. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-unresolved-variable.js +0 -14
  279. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-value-not-usable.js +0 -5
  280. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/needs-semicolon.js +0 -118
  281. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/numeric.js +0 -49
  282. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/parentheses.js +0 -71
  283. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/resolve-variable-name.js +0 -18
  284. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/rule.js +0 -27
  285. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-await-expression-argument.js +0 -17
  286. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-call-expression-callee.js +0 -18
  287. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-conditional-expression-child.js +0 -13
  288. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-expression-statement-expression.js +0 -22
  289. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-logical-expression-child.js +0 -43
  290. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-member-expression-object.js +0 -47
  291. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-new-expression-callee.js +0 -28
  292. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-unary-expression.js +0 -24
  293. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/singular.js +0 -16
  294. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/string-cases.js +0 -2
  295. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/to-location.js +0 -25
@@ -1,584 +0,0 @@
1
- import path from 'node:path';
2
- import {isRegExp} from 'node:util/types';
3
- import semver from 'semver';
4
- import * as ci from 'ci-info';
5
- import getBuiltinRule from './utils/get-builtin-rule.js';
6
- import {readPackageJson} from './shared/package-json.js';
7
-
8
- const baseRule = getBuiltinRule('no-warning-comments');
9
-
10
- // `unicorn/` prefix is added to avoid conflicts with core rule
11
- const MESSAGE_ID_AVOID_MULTIPLE_DATES = 'unicorn/avoidMultipleDates';
12
- const MESSAGE_ID_EXPIRED_TODO = 'unicorn/expiredTodo';
13
- const MESSAGE_ID_AVOID_MULTIPLE_PACKAGE_VERSIONS
14
- = 'unicorn/avoidMultiplePackageVersions';
15
- const MESSAGE_ID_REACHED_PACKAGE_VERSION = 'unicorn/reachedPackageVersion';
16
- const MESSAGE_ID_HAVE_PACKAGE = 'unicorn/havePackage';
17
- const MESSAGE_ID_DONT_HAVE_PACKAGE = 'unicorn/dontHavePackage';
18
- const MESSAGE_ID_VERSION_MATCHES = 'unicorn/versionMatches';
19
- const MESSAGE_ID_ENGINE_MATCHES = 'unicorn/engineMatches';
20
- const MESSAGE_ID_REMOVE_WHITESPACE = 'unicorn/removeWhitespaces';
21
- const MESSAGE_ID_MISSING_AT_SYMBOL = 'unicorn/missingAtSymbol';
22
-
23
- // Override of core rule message with a more specific one - no prefix
24
- const MESSAGE_ID_CORE_RULE_UNEXPECTED_COMMENT = 'unexpectedComment';
25
- const messages = {
26
- [MESSAGE_ID_AVOID_MULTIPLE_DATES]:
27
- 'Avoid using multiple expiration dates in TODO: {{expirationDates}}. {{message}}',
28
- [MESSAGE_ID_EXPIRED_TODO]:
29
- 'There is a TODO that is past due date: {{expirationDate}}. {{message}}',
30
- [MESSAGE_ID_REACHED_PACKAGE_VERSION]:
31
- 'There is a TODO that is past due package version: {{comparison}}. {{message}}',
32
- [MESSAGE_ID_AVOID_MULTIPLE_PACKAGE_VERSIONS]:
33
- 'Avoid using multiple package versions in TODO: {{versions}}. {{message}}',
34
- [MESSAGE_ID_HAVE_PACKAGE]:
35
- 'There is a TODO that is deprecated since you installed: {{package}}. {{message}}',
36
- [MESSAGE_ID_DONT_HAVE_PACKAGE]:
37
- 'There is a TODO that is deprecated since you uninstalled: {{package}}. {{message}}',
38
- [MESSAGE_ID_VERSION_MATCHES]:
39
- 'There is a TODO match for package version: {{comparison}}. {{message}}',
40
- [MESSAGE_ID_ENGINE_MATCHES]:
41
- 'There is a TODO match for Node.js version: {{comparison}}. {{message}}',
42
- [MESSAGE_ID_REMOVE_WHITESPACE]:
43
- 'Avoid using whitespace on TODO argument. On \'{{original}}\' use \'{{fix}}\'. {{message}}',
44
- [MESSAGE_ID_MISSING_AT_SYMBOL]:
45
- 'Missing \'@\' on TODO argument. On \'{{original}}\' use \'{{fix}}\'. {{message}}',
46
- ...baseRule.meta.messages,
47
- [MESSAGE_ID_CORE_RULE_UNEXPECTED_COMMENT]:
48
- 'Unexpected \'{{matchedTerm}}\' comment without any conditions: \'{{comment}}\'.',
49
- };
50
-
51
- /** @param {string} dirname */
52
- function getPackageHelpers(dirname) {
53
- const packageJsonResult = readPackageJson(dirname);
54
- const packageJson = packageJsonResult?.packageJson ?? {};
55
- const hasPackage = Boolean(packageJsonResult);
56
-
57
- const packageDependencies = {
58
- ...packageJson.dependencies,
59
- ...packageJson.devDependencies,
60
- };
61
-
62
- function parseTodoWithArguments(string, {terms}) {
63
- const lowerCaseString = string.toLowerCase();
64
- const lowerCaseTerms = terms.map(term => term.toLowerCase());
65
- const hasTerm = lowerCaseTerms.some(term => lowerCaseString.includes(term));
66
-
67
- if (!hasTerm) {
68
- return false;
69
- }
70
-
71
- const TODO_ARGUMENT_RE = /\[(?<rawArguments>[^}]+)]/i;
72
- const result = TODO_ARGUMENT_RE.exec(string);
73
-
74
- if (!result) {
75
- return false;
76
- }
77
-
78
- const {rawArguments} = result.groups;
79
-
80
- const parsedArguments = rawArguments
81
- .split(',')
82
- .map(argument => parseArgument(argument.trim()));
83
-
84
- return createArgumentGroup(parsedArguments);
85
- }
86
-
87
- function parseArgument(argumentString, dirname) {
88
- const {hasPackage} = getPackageHelpers(dirname);
89
- if (ISO8601_DATE.test(argumentString)) {
90
- return {
91
- type: 'dates',
92
- value: argumentString,
93
- };
94
- }
95
-
96
- if (hasPackage && DEPENDENCY_INCLUSION_RE.test(argumentString)) {
97
- const condition = argumentString[0] === '+' ? 'in' : 'out';
98
- const name = argumentString.slice(1).trim();
99
-
100
- return {
101
- type: 'dependencies',
102
- value: {
103
- name,
104
- condition,
105
- },
106
- };
107
- }
108
-
109
- if (hasPackage && VERSION_COMPARISON_RE.test(argumentString)) {
110
- const {groups} = VERSION_COMPARISON_RE.exec(argumentString);
111
- const name = groups.name.trim();
112
- const condition = groups.condition.trim();
113
- const version = groups.version.trim();
114
-
115
- const hasEngineKeyword = name.indexOf('engine:') === 0;
116
- const isNodeEngine = hasEngineKeyword && name === 'engine:node';
117
-
118
- if (hasEngineKeyword && isNodeEngine) {
119
- return {
120
- type: 'engines',
121
- value: {
122
- condition,
123
- version,
124
- },
125
- };
126
- }
127
-
128
- if (!hasEngineKeyword) {
129
- return {
130
- type: 'dependencies',
131
- value: {
132
- name,
133
- condition,
134
- version,
135
- },
136
- };
137
- }
138
- }
139
-
140
- if (hasPackage && PKG_VERSION_RE.test(argumentString)) {
141
- const result = PKG_VERSION_RE.exec(argumentString);
142
- const {condition, version} = result.groups;
143
-
144
- return {
145
- type: 'packageVersions',
146
- value: {
147
- condition: condition.trim(),
148
- version: version.trim(),
149
- },
150
- };
151
- }
152
-
153
- // Currently being ignored as integration tests pointed
154
- // some TODO comments have `[random data like this]`
155
- return {
156
- type: 'unknowns',
157
- value: argumentString,
158
- };
159
- }
160
-
161
- function parseTodoMessage(todoString) {
162
- // @example "TODO [...]: message here"
163
- // @example "TODO [...] message here"
164
- const argumentsEnd = todoString.indexOf(']');
165
-
166
- const afterArguments = todoString.slice(argumentsEnd + 1).trim();
167
-
168
- // Check if have to skip colon
169
- // @example "TODO [...]: message here"
170
- const dropColon = afterArguments[0] === ':';
171
- if (dropColon) {
172
- return afterArguments.slice(1).trim();
173
- }
174
-
175
- return afterArguments;
176
- }
177
-
178
- return {
179
- packageResult: packageJsonResult,
180
- hasPackage,
181
- packageJson,
182
- packageDependencies,
183
- parseArgument,
184
- parseTodoMessage,
185
- parseTodoWithArguments,
186
- };
187
- }
188
-
189
- const DEPENDENCY_INCLUSION_RE = /^[+-]\s*@?\S+\/?\S+/;
190
- const VERSION_COMPARISON_RE = /^(?<name>@?\S\/?\S+)@(?<condition>>|>=)(?<version>\d+(?:\.\d+){0,2}(?:-[\da-z-]+(?:\.[\da-z-]+)*)?(?:\+[\da-z-]+(?:\.[\da-z-]+)*)?)/i;
191
- const PKG_VERSION_RE = /^(?<condition>>|>=)(?<version>\d+(?:\.\d+){0,2}(?:-[\da-z-]+(?:\.[\da-z-]+)*)?(?:\+[\da-z-]+(?:\.[\da-z-]+)*)?)\s*$/;
192
- const ISO8601_DATE = /\d{4}-\d{2}-\d{2}/;
193
-
194
- function createArgumentGroup(arguments_) {
195
- const groups = {};
196
- for (const {value, type} of arguments_) {
197
- groups[type] ??= [];
198
- groups[type].push(value);
199
- }
200
-
201
- return groups;
202
- }
203
-
204
- function reachedDate(past, now) {
205
- return Date.parse(past) < Date.parse(now);
206
- }
207
-
208
- function tryToCoerceVersion(rawVersion) {
209
- // `version` in `package.json` and comment can't be empty
210
- /* c8 ignore next 3 */
211
- if (!rawVersion) {
212
- return false;
213
- }
214
-
215
- let version = String(rawVersion);
216
-
217
- // Remove leading things like `^1.0.0`, `>1.0.0`
218
- const leadingNoises = [
219
- '>=',
220
- '<=',
221
- '>',
222
- '<',
223
- '~',
224
- '^',
225
- ];
226
- const foundTrailingNoise = leadingNoises.find(noise => version.startsWith(noise));
227
- if (foundTrailingNoise) {
228
- version = version.slice(foundTrailingNoise.length);
229
- }
230
-
231
- // Get only the first member for cases such as `1.0.0 - 2.9999.9999`
232
- const parts = version.split(' ');
233
- // We don't have this `package.json` to test
234
- /* c8 ignore next 3 */
235
- if (parts.length > 1) {
236
- version = parts[0];
237
- }
238
-
239
- // We don't have this `package.json` to test
240
- /* c8 ignore next 3 */
241
- if (semver.valid(version)) {
242
- return version;
243
- }
244
-
245
- try {
246
- // Try to semver.parse a perfect match while semver.coerce tries to fix errors
247
- // But coerce can't parse pre-releases.
248
- return semver.parse(version) || semver.coerce(version);
249
- } catch {
250
- // We don't have this `package.json` to test
251
- /* c8 ignore next 3 */
252
- return false;
253
- }
254
- }
255
-
256
- function semverComparisonForOperator(operator) {
257
- return {
258
- '>': semver.gt,
259
- '>=': semver.gte,
260
- }[operator];
261
- }
262
-
263
- const DEFAULT_OPTIONS = {
264
- terms: ['todo', 'fixme', 'xxx'],
265
- ignore: [],
266
- ignoreDatesOnPullRequests: true,
267
- allowWarningComments: true,
268
- };
269
-
270
- /** @param {import('eslint').Rule.RuleContext} context */
271
- const create = context => {
272
- const options = {
273
- ...DEFAULT_OPTIONS,
274
- date: new Date().toISOString().slice(0, 10),
275
- ...context.options[0],
276
- };
277
-
278
- const ignoreRegexes = options.ignore.map(
279
- pattern => isRegExp(pattern) ? pattern : new RegExp(pattern, 'u'),
280
- );
281
-
282
- const dirname = path.dirname(context.filename);
283
- const {packageJson, packageDependencies, parseArgument, parseTodoMessage, parseTodoWithArguments} = getPackageHelpers(dirname);
284
-
285
- const {sourceCode} = context;
286
- const comments = sourceCode.getAllComments();
287
- const unusedComments = comments
288
- .filter(token => token.type !== 'Shebang')
289
- // Block comments come as one.
290
- // Split for situations like this:
291
- // /*
292
- // * TODO [2999-01-01]: Validate this
293
- // * TODO [2999-01-01]: And this
294
- // * TODO [2999-01-01]: Also this
295
- // */
296
- .flatMap(comment =>
297
- comment.value.split('\n').map(line => ({
298
- ...comment,
299
- value: line,
300
- })),
301
- ).filter(comment => processComment(comment));
302
-
303
- // This is highly dependable on ESLint's `no-warning-comments` implementation.
304
- // What we do is patch the parts we know the rule will use, `getAllComments`.
305
- // Since we have priority, we leave only the comments that we didn't use.
306
- const fakeContext = new Proxy(context, {
307
- get(target, property, receiver) {
308
- if (property === 'sourceCode') {
309
- return {
310
- ...sourceCode,
311
- getAllComments: () => options.allowWarningComments ? [] : unusedComments,
312
- };
313
- }
314
-
315
- return Reflect.get(target, property, receiver);
316
- },
317
- });
318
- const rules = baseRule.create(fakeContext);
319
-
320
- // eslint-disable-next-line complexity
321
- function processComment(comment) {
322
- if (ignoreRegexes.some(ignore => ignore.test(comment.value))) {
323
- return;
324
- }
325
-
326
- const parsed = parseTodoWithArguments(comment.value, options);
327
-
328
- if (!parsed) {
329
- return true;
330
- }
331
-
332
- // Count if there are valid properties.
333
- // Otherwise, it's a useless TODO and falls back to `no-warning-comments`.
334
- let uses = 0;
335
-
336
- const {
337
- packageVersions = [],
338
- dates = [],
339
- dependencies = [],
340
- engines = [],
341
- unknowns = [],
342
- } = parsed;
343
-
344
- if (dates.length > 1) {
345
- uses++;
346
- context.report({
347
- loc: sourceCode.getLoc(comment),
348
- messageId: MESSAGE_ID_AVOID_MULTIPLE_DATES,
349
- data: {
350
- expirationDates: dates.join(', '),
351
- message: parseTodoMessage(comment.value),
352
- },
353
- });
354
- } else if (dates.length === 1) {
355
- uses++;
356
- const [expirationDate] = dates;
357
-
358
- const shouldIgnore = options.ignoreDatesOnPullRequests && ci.isPR;
359
- if (!shouldIgnore && reachedDate(expirationDate, options.date)) {
360
- context.report({
361
- loc: sourceCode.getLoc(comment),
362
- messageId: MESSAGE_ID_EXPIRED_TODO,
363
- data: {
364
- expirationDate,
365
- message: parseTodoMessage(comment.value),
366
- },
367
- });
368
- }
369
- }
370
-
371
- if (packageVersions.length > 1) {
372
- uses++;
373
- context.report({
374
- loc: sourceCode.getLoc(comment),
375
- messageId: MESSAGE_ID_AVOID_MULTIPLE_PACKAGE_VERSIONS,
376
- data: {
377
- versions: packageVersions
378
- .map(({condition, version}) => `${condition}${version}`)
379
- .join(', '),
380
- message: parseTodoMessage(comment.value),
381
- },
382
- });
383
- } else if (packageVersions.length === 1) {
384
- uses++;
385
- const [{condition, version}] = packageVersions;
386
-
387
- const packageVersion = tryToCoerceVersion(packageJson.version);
388
- const decidedPackageVersion = tryToCoerceVersion(version);
389
-
390
- const compare = semverComparisonForOperator(condition);
391
- if (packageVersion && compare(packageVersion, decidedPackageVersion)) {
392
- context.report({
393
- loc: sourceCode.getLoc(comment),
394
- messageId: MESSAGE_ID_REACHED_PACKAGE_VERSION,
395
- data: {
396
- comparison: `${condition}${version}`,
397
- message: parseTodoMessage(comment.value),
398
- },
399
- });
400
- }
401
- }
402
-
403
- // Inclusion: 'in', 'out'
404
- // Comparison: '>', '>='
405
- for (const dependency of dependencies) {
406
- uses++;
407
- const targetPackageRawVersion = packageDependencies[dependency.name];
408
- const hasTargetPackage = Boolean(targetPackageRawVersion);
409
-
410
- const isInclusion = ['in', 'out'].includes(dependency.condition);
411
- if (isInclusion) {
412
- const [trigger, messageId]
413
- = dependency.condition === 'in'
414
- ? [hasTargetPackage, MESSAGE_ID_HAVE_PACKAGE]
415
- : [!hasTargetPackage, MESSAGE_ID_DONT_HAVE_PACKAGE];
416
-
417
- if (trigger) {
418
- context.report({
419
- loc: sourceCode.getLoc(comment),
420
- messageId,
421
- data: {
422
- package: dependency.name,
423
- message: parseTodoMessage(comment.value),
424
- },
425
- });
426
- }
427
-
428
- continue;
429
- }
430
-
431
- const todoVersion = tryToCoerceVersion(dependency.version);
432
- const targetPackageVersion = tryToCoerceVersion(targetPackageRawVersion);
433
-
434
- /* c8 ignore start */
435
- if (!hasTargetPackage || !targetPackageVersion) {
436
- // Can't compare `¯\_(ツ)_/¯`
437
- continue;
438
- }
439
- /* c8 ignore end */
440
-
441
- const compare = semverComparisonForOperator(dependency.condition);
442
-
443
- if (compare(targetPackageVersion, todoVersion)) {
444
- context.report({
445
- loc: sourceCode.getLoc(comment),
446
- messageId: MESSAGE_ID_VERSION_MATCHES,
447
- data: {
448
- comparison: `${dependency.name} ${dependency.condition} ${dependency.version}`,
449
- message: parseTodoMessage(comment.value),
450
- },
451
- });
452
- }
453
- }
454
-
455
- const packageEngines = packageJson.engines || {};
456
-
457
- for (const engine of engines) {
458
- uses++;
459
-
460
- const targetPackageRawEngineVersion = packageEngines.node;
461
- const hasTargetEngine = Boolean(targetPackageRawEngineVersion);
462
-
463
- /* c8 ignore next 3 */
464
- if (!hasTargetEngine) {
465
- continue;
466
- }
467
-
468
- const todoEngine = tryToCoerceVersion(engine.version);
469
- const targetPackageEngineVersion = tryToCoerceVersion(
470
- targetPackageRawEngineVersion,
471
- );
472
-
473
- const compare = semverComparisonForOperator(engine.condition);
474
-
475
- if (compare(targetPackageEngineVersion, todoEngine)) {
476
- context.report({
477
- loc: sourceCode.getLoc(comment),
478
- messageId: MESSAGE_ID_ENGINE_MATCHES,
479
- data: {
480
- comparison: `node${engine.condition}${engine.version}`,
481
- message: parseTodoMessage(comment.value),
482
- },
483
- });
484
- }
485
- }
486
-
487
- for (const unknown of unknowns) {
488
- // In this case, check if there's just an '@' missing before a '>' or '>='.
489
- const hasAt = unknown.includes('@');
490
- const comparisonIndex = unknown.indexOf('>');
491
-
492
- if (!hasAt && comparisonIndex !== -1) {
493
- const testString = `${unknown.slice(
494
- 0,
495
- comparisonIndex,
496
- )}@${unknown.slice(comparisonIndex)}`;
497
-
498
- if (parseArgument(testString).type !== 'unknowns') {
499
- uses++;
500
- context.report({
501
- loc: sourceCode.getLoc(comment),
502
- messageId: MESSAGE_ID_MISSING_AT_SYMBOL,
503
- data: {
504
- original: unknown,
505
- fix: testString,
506
- message: parseTodoMessage(comment.value),
507
- },
508
- });
509
- continue;
510
- }
511
- }
512
-
513
- const withoutWhitespace = unknown.replaceAll(' ', '');
514
-
515
- if (parseArgument(withoutWhitespace).type !== 'unknowns') {
516
- uses++;
517
- context.report({
518
- loc: sourceCode.getLoc(comment),
519
- messageId: MESSAGE_ID_REMOVE_WHITESPACE,
520
- data: {
521
- original: unknown,
522
- fix: withoutWhitespace,
523
- message: parseTodoMessage(comment.value),
524
- },
525
- });
526
- continue;
527
- }
528
- }
529
-
530
- return uses === 0;
531
- }
532
-
533
- return {
534
- Program() {
535
- rules.Program(); // eslint-disable-line new-cap
536
- },
537
- };
538
- };
539
-
540
- const schema = [
541
- {
542
- type: 'object',
543
- additionalProperties: false,
544
- properties: {
545
- terms: {
546
- type: 'array',
547
- items: {
548
- type: 'string',
549
- },
550
- },
551
- ignore: {
552
- type: 'array',
553
- uniqueItems: true,
554
- },
555
- ignoreDatesOnPullRequests: {
556
- type: 'boolean',
557
- },
558
- allowWarningComments: {
559
- type: 'boolean',
560
- },
561
- date: {
562
- type: 'string',
563
- format: 'date',
564
- },
565
- },
566
- },
567
- ];
568
-
569
- /** @type {import('eslint').Rule.RuleModule} */
570
- const config = {
571
- create,
572
- meta: {
573
- type: 'suggestion',
574
- docs: {
575
- description: 'Add expiration conditions to TODO comments.',
576
- recommended: 'unopinionated',
577
- },
578
- schema,
579
- defaultOptions: [{...DEFAULT_OPTIONS}],
580
- messages,
581
- },
582
- };
583
-
584
- export default config;