@alexlit/lint-kit 176.0.1 → 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 (293) hide show
  1. package/package.json +1 -1
  2. package/packages/config-stylelint/package.json +5 -5
  3. package/packages/config-stylelint/plugins/color-format.js +1 -5
  4. package/packages/config-stylelint/plugins/logical-css.js +1 -4
  5. package/packages/config-eslint/node_modules/@eslint/core/LICENSE +0 -201
  6. package/packages/config-eslint/node_modules/@eslint/core/README.md +0 -29
  7. package/packages/config-eslint/node_modules/@eslint/core/dist/cjs/types.d.cts +0 -1179
  8. package/packages/config-eslint/node_modules/@eslint/core/dist/esm/types.d.ts +0 -1179
  9. package/packages/config-eslint/node_modules/@eslint/core/package.json +0 -49
  10. package/packages/config-eslint/node_modules/@eslint/plugin-kit/LICENSE +0 -201
  11. package/packages/config-eslint/node_modules/@eslint/plugin-kit/README.md +0 -273
  12. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/cjs/index.cjs +0 -884
  13. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/cjs/index.d.cts +0 -328
  14. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/cjs/types.cts +0 -7
  15. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/esm/index.d.ts +0 -328
  16. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/esm/index.js +0 -879
  17. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/esm/types.d.ts +0 -6
  18. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/esm/types.ts +0 -7
  19. package/packages/config-eslint/node_modules/@eslint/plugin-kit/package.json +0 -61
  20. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/configs/flat-config-base.js +0 -9
  21. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/index.d.ts +0 -17
  22. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/index.js +0 -91
  23. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/license +0 -9
  24. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/globals.json +0 -3345
  25. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/index.d.ts +0 -3452
  26. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/index.js +0 -2
  27. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/license +0 -9
  28. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/package.json +0 -117
  29. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/readme.md +0 -42
  30. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/package.json +0 -128
  31. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/readme.md +0 -261
  32. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/call-or-new-expression.js +0 -120
  33. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/function-types.js +0 -7
  34. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/index.js +0 -30
  35. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-arrow-function-body.js +0 -3
  36. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-directive.js +0 -4
  37. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-empty-array-expression.js +0 -5
  38. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-empty-node.js +0 -17
  39. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-expression-statement.js +0 -7
  40. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-function.js +0 -5
  41. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-member-expression.js +0 -98
  42. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-method-call.js +0 -62
  43. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-negative-one.js +0 -8
  44. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-reference-identifier.js +0 -159
  45. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-static-require.js +0 -10
  46. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-tagged-template-literal.js +0 -24
  47. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-undefined.js +0 -3
  48. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/literal.js +0 -24
  49. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/better-regex.js +0 -146
  50. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/catch-error-name.js +0 -138
  51. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-assert.js +0 -98
  52. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-date-clone.js +0 -54
  53. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-destructuring.js +0 -168
  54. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-empty-array-spread.js +0 -127
  55. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-existence-index-check.js +0 -137
  56. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-function-scoping.js +0 -265
  57. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/custom-error-definition.js +0 -218
  58. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/empty-brace-spaces.js +0 -62
  59. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/error-message.js +0 -98
  60. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/escape-case.js +0 -86
  61. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/expiring-todo-comments.js +0 -584
  62. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/explicit-length-check.js +0 -236
  63. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/filename-case.js +0 -276
  64. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/add-parenthesizes-to-return-or-throw-expression.js +0 -29
  65. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/append-argument.js +0 -30
  66. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/extend-fix-range.js +0 -11
  67. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/fix-space-around-keywords.js +0 -43
  68. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/index.js +0 -23
  69. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-argument.js +0 -40
  70. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-expression-statement.js +0 -34
  71. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-method-call.js +0 -28
  72. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-object-property.js +0 -21
  73. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-parentheses.js +0 -19
  74. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-spaces-after.js +0 -22
  75. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-specifier.js +0 -59
  76. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/rename-variable.js +0 -8
  77. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-argument.js +0 -17
  78. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-member-expression-property.js +0 -25
  79. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-node-or-token-and-spaces-before.js +0 -31
  80. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-reference-identifier.js +0 -32
  81. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-string-raw.js +0 -12
  82. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-template-element.js +0 -10
  83. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/switch-call-expression-to-new-expression.js +0 -29
  84. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/switch-new-expression-to-call-expression.js +0 -42
  85. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/import-style.js +0 -375
  86. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/index.js +0 -143
  87. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/new-for-builtins.js +0 -112
  88. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-abusive-eslint-disable.js +0 -63
  89. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-accessor-recursion.js +0 -160
  90. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-anonymous-default-export.js +0 -210
  91. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-callback-reference.js +0 -285
  92. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-for-each.js +0 -496
  93. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-method-this-argument.js +0 -223
  94. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-reduce.js +0 -128
  95. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-reverse.js +0 -6
  96. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-sort.js +0 -6
  97. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-await-expression-member.js +0 -85
  98. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-await-in-promise-methods.js +0 -69
  99. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-console-spaces.js +0 -89
  100. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-document-cookie.js +0 -27
  101. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-empty-file.js +0 -58
  102. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-for-loop.js +0 -419
  103. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-hex-escape.js +0 -54
  104. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-immediate-mutation.js +0 -778
  105. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-instanceof-builtins.js +0 -216
  106. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-invalid-fetch-options.js +0 -112
  107. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-invalid-remove-event-listener.js +0 -61
  108. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-keyword-prefix.js +0 -202
  109. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-lonely-if.js +0 -155
  110. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-magic-array-flat-depth.js +0 -55
  111. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-named-default.js +0 -101
  112. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-negated-condition.js +0 -145
  113. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-negation-in-equality-check.js +0 -99
  114. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-nested-ternary.js +0 -60
  115. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-new-array.js +0 -106
  116. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-new-buffer.js +0 -100
  117. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-null.js +0 -153
  118. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-object-as-default-parameter.js +0 -52
  119. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-process-exit.js +0 -106
  120. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-single-promise-in-promise-methods.js +0 -179
  121. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-static-only-class.js +0 -226
  122. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-thenable.js +0 -194
  123. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-this-assignment.js +0 -40
  124. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-typeof-undefined.js +0 -146
  125. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-array-flat-depth.js +0 -49
  126. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-array-splice-count.js +0 -23
  127. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-await.js +0 -110
  128. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-polyfills.js +0 -174
  129. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-slice-end.js +0 -22
  130. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unreadable-array-destructuring.js +0 -85
  131. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unreadable-iife.js +0 -43
  132. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unused-properties.js +0 -240
  133. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-collection-argument.js +0 -101
  134. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-error-capture-stack-trace.js +0 -146
  135. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-fallback-in-spread.js +0 -66
  136. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-length-check.js +0 -150
  137. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-promise-resolve-reject.js +0 -210
  138. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-spread.js +0 -389
  139. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-switch-case.js +0 -59
  140. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-undefined.js +0 -275
  141. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-zero-fractions.js +0 -81
  142. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/number-literal-case.js +0 -82
  143. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/numeric-separators-style.js +0 -189
  144. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-add-event-listener.js +0 -191
  145. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-find.js +0 -458
  146. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-flat-map.js +0 -86
  147. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-flat.js +0 -279
  148. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-index-of.js +0 -34
  149. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-some.js +0 -219
  150. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-at.js +0 -380
  151. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-bigint-literals.js +0 -129
  152. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-blob-reading-methods.js +0 -47
  153. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-class-fields.js +0 -158
  154. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-classlist-toggle.js +0 -255
  155. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-code-point.js +0 -56
  156. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-date-now.js +0 -133
  157. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-default-parameters.js +0 -218
  158. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-dom-node-append.js +0 -50
  159. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-dom-node-dataset.js +0 -135
  160. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-dom-node-remove.js +0 -124
  161. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-dom-node-text-content.js +0 -77
  162. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-event-target.js +0 -119
  163. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-export-from.js +0 -367
  164. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-global-this.js +0 -222
  165. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-import-meta-properties.js +0 -320
  166. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-includes.js +0 -111
  167. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-json-parse-buffer.js +0 -161
  168. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-keyboard-event-key.js +0 -188
  169. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-logical-operator-over-ternary.js +0 -162
  170. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-math-min-max.js +0 -205
  171. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-math-trunc.js +0 -111
  172. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-modern-dom-apis.js +0 -145
  173. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-modern-math-apis.js +0 -210
  174. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-module.js +0 -377
  175. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-native-coercion-functions.js +0 -187
  176. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-negative-index.js +0 -211
  177. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-node-protocol.js +0 -86
  178. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-number-properties.js +0 -142
  179. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-object-from-entries.js +0 -256
  180. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-optional-catch-binding.js +0 -77
  181. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-prototype-methods.js +0 -162
  182. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-query-selector.js +0 -170
  183. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-reflect-apply.js +0 -99
  184. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-regexp-test.js +0 -155
  185. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-response-static-json.js +0 -85
  186. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-set-has.js +0 -181
  187. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-set-size.js +0 -106
  188. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-single-call.js +0 -188
  189. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-spread.js +0 -521
  190. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-raw.js +0 -149
  191. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-replace-all.js +0 -180
  192. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-slice.js +0 -180
  193. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-starts-ends-with.js +0 -201
  194. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-trim-start-end.js +0 -46
  195. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-structured-clone.js +0 -149
  196. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-switch.js +0 -357
  197. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-ternary.js +0 -288
  198. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-top-level-await.js +0 -154
  199. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-type-error.js +0 -169
  200. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prevent-abbreviations.js +0 -655
  201. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/relative-url-style.js +0 -171
  202. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-array-join-separator.js +0 -65
  203. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-module-attributes.js +0 -120
  204. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-module-specifiers.js +0 -158
  205. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-number-to-fixed-digits-argument.js +0 -55
  206. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-post-message-target-origin.js +0 -74
  207. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/get-documentation-url.js +0 -9
  208. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/index.js +0 -9
  209. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-create.js +0 -51
  210. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-listener.js +0 -40
  211. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-problem.js +0 -38
  212. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-rule-fixer.js +0 -49
  213. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-rule.js +0 -38
  214. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-rules.js +0 -13
  215. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/unicorn-context.js +0 -36
  216. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/unicorn-listeners.js +0 -65
  217. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/utilities.js +0 -27
  218. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/abbreviations.js +0 -270
  219. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/builtin-errors.js +0 -14
  220. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/dom-events.js +0 -275
  221. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/event-keys.js +0 -54
  222. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/negative-index.js +0 -52
  223. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/no-array-mutate-rule.js +0 -139
  224. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/no-unnecessary-length-or-infinity-rule.js +0 -80
  225. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/package-json.js +0 -42
  226. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/simple-array-search-rule.js +0 -126
  227. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/typed-array.js +0 -17
  228. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/string-content.js +0 -192
  229. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/switch-case-braces.js +0 -114
  230. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/template-indent.js +0 -219
  231. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/text-encoding-identifier-case.js +0 -130
  232. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/throw-new-error.js +0 -60
  233. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/array-or-object-prototype-property.js +0 -57
  234. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/assert-token.js +0 -29
  235. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/boolean.js +0 -88
  236. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/builtins.js +0 -30
  237. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/cartesian-product-samples.js +0 -22
  238. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/create-deprecated-rules.js +0 -29
  239. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/escape-string.js +0 -24
  240. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/escape-template-element-raw.js +0 -6
  241. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-ancestor.js +0 -15
  242. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-available-variable-name.js +0 -147
  243. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-builtin-rule.js +0 -5
  244. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-call-expression-arguments-text.js +0 -36
  245. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-call-or-new-expression-tokens.js +0 -67
  246. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-class-head-location.js +0 -22
  247. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-documentation-url.js +0 -9
  248. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-indent-string.js +0 -18
  249. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-references.js +0 -5
  250. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-scopes.js +0 -12
  251. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-sibling-node.js +0 -38
  252. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-switch-case-head-location.js +0 -22
  253. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-token-store.js +0 -24
  254. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-variable-identifiers.js +0 -7
  255. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/global-reference-tracker.js +0 -68
  256. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/has-optional-chain-element.js +0 -17
  257. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/has-same-range.js +0 -7
  258. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/index.js +0 -59
  259. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-function-self-used-inside.js +0 -39
  260. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-left-hand-side.js +0 -20
  261. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-logical-expression.js +0 -14
  262. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-method-named.js +0 -7
  263. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-new-expression-with-parentheses.js +0 -28
  264. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-node-matches.js +0 -58
  265. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-node-value-not-dom-node.js +0 -20
  266. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-node-value-not-function.js +0 -40
  267. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-number.js +0 -224
  268. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-object-method.js +0 -10
  269. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-on-same-line.js +0 -7
  270. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-same-identifier.js +0 -5
  271. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-same-reference.js +0 -170
  272. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-shorthand-export-local.js +0 -8
  273. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-shorthand-import-local.js +0 -8
  274. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-shorthand-property-assignment-pattern-left.js +0 -8
  275. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-shorthand-property-value.js +0 -6
  276. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-unresolved-variable.js +0 -14
  277. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-value-not-usable.js +0 -5
  278. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/needs-semicolon.js +0 -118
  279. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/numeric.js +0 -49
  280. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/parentheses.js +0 -71
  281. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/resolve-variable-name.js +0 -18
  282. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/rule.js +0 -27
  283. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-await-expression-argument.js +0 -17
  284. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-call-expression-callee.js +0 -18
  285. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-conditional-expression-child.js +0 -13
  286. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-expression-statement-expression.js +0 -22
  287. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-logical-expression-child.js +0 -43
  288. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-member-expression-object.js +0 -47
  289. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-new-expression-callee.js +0 -28
  290. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-unary-expression.js +0 -24
  291. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/singular.js +0 -16
  292. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/string-cases.js +0 -2
  293. 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;