@typescript-eslint/eslint-plugin 6.0.0-alpha.99 → 6.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 (195) hide show
  1. package/README.md +2 -0
  2. package/dist/configs/all.js +2 -0
  3. package/dist/configs/all.js.map +1 -1
  4. package/dist/configs/disable-type-checked.js +3 -0
  5. package/dist/configs/disable-type-checked.js.map +1 -1
  6. package/dist/configs/recommended-type-checked.js +6 -0
  7. package/dist/configs/recommended-type-checked.js.map +1 -1
  8. package/dist/configs/recommended.js +2 -0
  9. package/dist/configs/recommended.js.map +1 -1
  10. package/dist/configs/strict-type-checked.js +4 -0
  11. package/dist/configs/strict-type-checked.js.map +1 -1
  12. package/dist/configs/stylistic-type-checked.js +0 -1
  13. package/dist/configs/stylistic-type-checked.js.map +1 -1
  14. package/dist/configs/stylistic.js +0 -2
  15. package/dist/configs/stylistic.js.map +1 -1
  16. package/dist/index.js +1 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/rules/array-type.js +19 -20
  19. package/dist/rules/array-type.js.map +1 -1
  20. package/dist/rules/ban-ts-comment.js +33 -35
  21. package/dist/rules/ban-ts-comment.js.map +1 -1
  22. package/dist/rules/ban-types.js +75 -14
  23. package/dist/rules/ban-types.js.map +1 -1
  24. package/dist/rules/class-literal-property-style.js +38 -21
  25. package/dist/rules/class-literal-property-style.js.map +1 -1
  26. package/dist/rules/comma-dangle.js +4 -2
  27. package/dist/rules/comma-dangle.js.map +1 -1
  28. package/dist/rules/comma-spacing.js +5 -0
  29. package/dist/rules/comma-spacing.js.map +1 -1
  30. package/dist/rules/consistent-generic-constructors.js +1 -0
  31. package/dist/rules/consistent-generic-constructors.js.map +1 -1
  32. package/dist/rules/consistent-indexed-object-style.js +1 -0
  33. package/dist/rules/consistent-indexed-object-style.js.map +1 -1
  34. package/dist/rules/consistent-type-assertions.js +49 -0
  35. package/dist/rules/consistent-type-assertions.js.map +1 -1
  36. package/dist/rules/consistent-type-definitions.js +1 -0
  37. package/dist/rules/consistent-type-definitions.js.map +1 -1
  38. package/dist/rules/consistent-type-exports.js +1 -0
  39. package/dist/rules/consistent-type-exports.js.map +1 -1
  40. package/dist/rules/consistent-type-imports.js +2 -0
  41. package/dist/rules/consistent-type-imports.js.map +1 -1
  42. package/dist/rules/enum-utils/shared.js +61 -0
  43. package/dist/rules/enum-utils/shared.js.map +1 -0
  44. package/dist/rules/explicit-function-return-type.js.map +1 -1
  45. package/dist/rules/explicit-member-accessibility.js +43 -44
  46. package/dist/rules/explicit-member-accessibility.js.map +1 -1
  47. package/dist/rules/explicit-module-boundary-types.js +1 -1
  48. package/dist/rules/explicit-module-boundary-types.js.map +1 -1
  49. package/dist/rules/func-call-spacing.js +2 -0
  50. package/dist/rules/func-call-spacing.js.map +1 -1
  51. package/dist/rules/indent.js.map +1 -1
  52. package/dist/rules/index.js +4 -0
  53. package/dist/rules/index.js.map +1 -1
  54. package/dist/rules/key-spacing.js.map +1 -1
  55. package/dist/rules/keyword-spacing.js.map +1 -1
  56. package/dist/rules/lines-around-comment.js +78 -81
  57. package/dist/rules/lines-around-comment.js.map +1 -1
  58. package/dist/rules/lines-between-class-members.js +7 -5
  59. package/dist/rules/lines-between-class-members.js.map +1 -1
  60. package/dist/rules/member-delimiter-style.js +45 -27
  61. package/dist/rules/member-delimiter-style.js.map +1 -1
  62. package/dist/rules/member-ordering.js +55 -66
  63. package/dist/rules/member-ordering.js.map +1 -1
  64. package/dist/rules/method-signature-style.js +1 -0
  65. package/dist/rules/method-signature-style.js.map +1 -1
  66. package/dist/rules/naming-convention-utils/enums.js +6 -12
  67. package/dist/rules/naming-convention-utils/enums.js.map +1 -1
  68. package/dist/rules/naming-convention-utils/schema.js +50 -25
  69. package/dist/rules/naming-convention-utils/schema.js.map +1 -1
  70. package/dist/rules/naming-convention.js.map +1 -1
  71. package/dist/rules/no-base-to-string.js +2 -2
  72. package/dist/rules/no-base-to-string.js.map +1 -1
  73. package/dist/rules/no-confusing-void-expression.js +1 -0
  74. package/dist/rules/no-confusing-void-expression.js.map +1 -1
  75. package/dist/rules/no-duplicate-type-constituents.js +161 -0
  76. package/dist/rules/no-duplicate-type-constituents.js.map +1 -0
  77. package/dist/rules/no-empty-function.js +1 -0
  78. package/dist/rules/no-empty-function.js.map +1 -1
  79. package/dist/rules/no-empty-interface.js +2 -1
  80. package/dist/rules/no-empty-interface.js.map +1 -1
  81. package/dist/rules/no-explicit-any.js +1 -1
  82. package/dist/rules/no-explicit-any.js.map +1 -1
  83. package/dist/rules/no-extraneous-class.js +2 -3
  84. package/dist/rules/no-extraneous-class.js.map +1 -1
  85. package/dist/rules/no-implied-eval.js +1 -0
  86. package/dist/rules/no-implied-eval.js.map +1 -1
  87. package/dist/rules/no-inferrable-types.js.map +1 -1
  88. package/dist/rules/no-invalid-void-type.js +1 -1
  89. package/dist/rules/no-invalid-void-type.js.map +1 -1
  90. package/dist/rules/no-loop-func.js.map +1 -1
  91. package/dist/rules/no-magic-numbers.js.map +1 -1
  92. package/dist/rules/no-misused-promises.js +3 -2
  93. package/dist/rules/no-misused-promises.js.map +1 -1
  94. package/dist/rules/no-redeclare.js +2 -1
  95. package/dist/rules/no-redeclare.js.map +1 -1
  96. package/dist/rules/no-redundant-type-constituents.js +2 -0
  97. package/dist/rules/no-redundant-type-constituents.js.map +1 -1
  98. package/dist/rules/no-restricted-imports.js +80 -21
  99. package/dist/rules/no-restricted-imports.js.map +1 -1
  100. package/dist/rules/no-shadow.js +2 -1
  101. package/dist/rules/no-shadow.js.map +1 -1
  102. package/dist/rules/no-type-alias.js +24 -15
  103. package/dist/rules/no-type-alias.js.map +1 -1
  104. package/dist/rules/no-unnecessary-condition.js +2 -2
  105. package/dist/rules/no-unnecessary-condition.js.map +1 -1
  106. package/dist/rules/no-unnecessary-qualifier.js.map +1 -1
  107. package/dist/rules/no-unnecessary-type-assertion.js +1 -0
  108. package/dist/rules/no-unnecessary-type-assertion.js.map +1 -1
  109. package/dist/rules/no-unsafe-argument.js +3 -3
  110. package/dist/rules/no-unsafe-argument.js.map +1 -1
  111. package/dist/rules/no-unsafe-declaration-merging.js +1 -1
  112. package/dist/rules/no-unsafe-declaration-merging.js.map +1 -1
  113. package/dist/rules/no-unsafe-enum-comparison.js +119 -0
  114. package/dist/rules/no-unsafe-enum-comparison.js.map +1 -0
  115. package/dist/rules/no-unused-vars.js +4 -0
  116. package/dist/rules/no-unused-vars.js.map +1 -1
  117. package/dist/rules/no-use-before-define.js +1 -0
  118. package/dist/rules/no-use-before-define.js.map +1 -1
  119. package/dist/rules/padding-line-between-statements.js +11 -3
  120. package/dist/rules/padding-line-between-statements.js.map +1 -1
  121. package/dist/rules/parameter-properties.js +29 -30
  122. package/dist/rules/parameter-properties.js.map +1 -1
  123. package/dist/rules/prefer-includes.js +21 -5
  124. package/dist/rules/prefer-includes.js.map +1 -1
  125. package/dist/rules/prefer-nullish-coalescing.js +82 -63
  126. package/dist/rules/prefer-nullish-coalescing.js.map +1 -1
  127. package/dist/rules/prefer-optional-chain-utils/PreferOptionalChainOptions.js +3 -0
  128. package/dist/rules/prefer-optional-chain-utils/PreferOptionalChainOptions.js.map +1 -0
  129. package/dist/rules/prefer-optional-chain-utils/analyzeChain.js +419 -0
  130. package/dist/rules/prefer-optional-chain-utils/analyzeChain.js.map +1 -0
  131. package/dist/rules/prefer-optional-chain-utils/compareNodes.js +318 -0
  132. package/dist/rules/prefer-optional-chain-utils/compareNodes.js.map +1 -0
  133. package/dist/rules/prefer-optional-chain-utils/gatherLogicalOperands.js +281 -0
  134. package/dist/rules/prefer-optional-chain-utils/gatherLogicalOperands.js.map +1 -0
  135. package/dist/rules/prefer-optional-chain.js +80 -391
  136. package/dist/rules/prefer-optional-chain.js.map +1 -1
  137. package/dist/rules/prefer-readonly.js +1 -1
  138. package/dist/rules/prefer-readonly.js.map +1 -1
  139. package/dist/rules/prefer-regexp-exec.js +7 -1
  140. package/dist/rules/prefer-regexp-exec.js.map +1 -1
  141. package/dist/rules/require-array-sort-compare.js +3 -2
  142. package/dist/rules/require-array-sort-compare.js.map +1 -1
  143. package/dist/rules/restrict-plus-operands.js +132 -96
  144. package/dist/rules/restrict-plus-operands.js.map +1 -1
  145. package/dist/rules/restrict-template-expressions.js +11 -6
  146. package/dist/rules/restrict-template-expressions.js.map +1 -1
  147. package/dist/rules/return-await.js +1 -0
  148. package/dist/rules/return-await.js.map +1 -1
  149. package/dist/rules/sort-type-constituents.js +1 -1
  150. package/dist/rules/sort-type-constituents.js.map +1 -1
  151. package/dist/rules/space-before-function-paren.js +4 -0
  152. package/dist/rules/space-before-function-paren.js.map +1 -1
  153. package/dist/rules/strict-boolean-expressions.js +7 -2
  154. package/dist/rules/strict-boolean-expressions.js.map +1 -1
  155. package/dist/rules/switch-exhaustiveness-check.js.map +1 -1
  156. package/dist/rules/triple-slash-reference.js +3 -0
  157. package/dist/rules/triple-slash-reference.js.map +1 -1
  158. package/dist/rules/type-annotation-spacing.js +16 -14
  159. package/dist/rules/type-annotation-spacing.js.map +1 -1
  160. package/dist/rules/typedef.js +1 -0
  161. package/dist/rules/typedef.js.map +1 -1
  162. package/dist/rules/unbound-method.js +1 -0
  163. package/dist/rules/unbound-method.js.map +1 -1
  164. package/dist/rules/unified-signatures.js +3 -3
  165. package/dist/rules/unified-signatures.js.map +1 -1
  166. package/dist/util/astUtils.js.map +1 -1
  167. package/dist/util/collectUnusedVariables.js +1 -1
  168. package/dist/util/collectUnusedVariables.js.map +1 -1
  169. package/dist/util/getOperatorPrecedence.js +112 -2
  170. package/dist/util/getOperatorPrecedence.js.map +1 -1
  171. package/dist/util/getStringLength.js +2 -2
  172. package/dist/util/getStringLength.js.map +1 -1
  173. package/dist/util/misc.js +1 -2
  174. package/dist/util/misc.js.map +1 -1
  175. package/docs/rules/README.md +2 -2
  176. package/docs/rules/ban-types.md +10 -0
  177. package/docs/rules/comma-dangle.md +1 -1
  178. package/docs/rules/explicit-module-boundary-types.md +1 -1
  179. package/docs/rules/lines-around-comment.md +3 -13
  180. package/docs/rules/naming-convention.md +63 -63
  181. package/docs/rules/no-duplicate-type-constituents.md +61 -0
  182. package/docs/rules/no-unnecessary-boolean-literal-compare.md +10 -10
  183. package/docs/rules/no-unnecessary-type-constraint.md +6 -2
  184. package/docs/rules/no-unsafe-enum-comparison.md +77 -0
  185. package/docs/rules/prefer-includes.md +1 -1
  186. package/docs/rules/prefer-nullish-coalescing.md +23 -0
  187. package/docs/rules/prefer-optional-chain.md +195 -4
  188. package/docs/rules/require-await.md +0 -2
  189. package/docs/rules/restrict-plus-operands.md +135 -25
  190. package/docs/rules/restrict-template-expressions.md +15 -3
  191. package/docs/rules/sort-type-constituents.md +3 -3
  192. package/docs/rules/triple-slash-reference.md +0 -2
  193. package/docs/rules/type-annotation-spacing.md +22 -8
  194. package/docs/rules/unified-signatures.md +0 -2
  195. package/package.json +22 -15
@@ -1 +1 @@
1
- {"version":3,"file":"prefer-nullish-coalescing.js","sourceRoot":"","sources":["../../src/rules/prefer-nullish-coalescing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prefer-nullish-coalescing.js","sourceRoot":"","sources":["../../src/rules/prefer-nullish-coalescing.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,oDAA2E;AAC3E,sDAAwC;AACxC,+CAAiC;AAEjC,8CAAgC;AAuBhC,kBAAe,IAAI,CAAC,UAAU,CAAsB;IAClD,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EACT,0FAA0F;YAC5F,WAAW,EAAE,WAAW;YACxB,oBAAoB,EAAE,IAAI;SAC3B;QACD,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,mBAAmB,EACjB,4GAA4G;YAC9G,wBAAwB,EACtB,4GAA4G;YAC9G,cAAc,EAAE,4CAA4C;YAC5D,iBAAiB,EACf,kGAAkG;SACrG;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,sDAAsD,EAAE;wBACtD,IAAI,EAAE,SAAS;qBAChB;oBACD,sBAAsB,EAAE;wBACtB,IAAI,EAAE,SAAS;qBAChB;oBACD,6BAA6B,EAAE;wBAC7B,IAAI,EAAE,SAAS;qBAChB;oBACD,gBAAgB,EAAE;wBAChB,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;4BAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;4BAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;4BAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;yBAC5B;qBACF;oBACD,kBAAkB,EAAE;wBAClB,IAAI,EAAE,SAAS;qBAChB;iBACF;gBACD,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF;IACD,cAAc,EAAE;QACd;YACE,sDAAsD,EAAE,KAAK;YAC7D,sBAAsB,EAAE,KAAK;YAC7B,kBAAkB,EAAE,KAAK;YACzB,6BAA6B,EAAE,KAAK;YACpC,gBAAgB,EAAE;gBAChB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;aACd;SACF;KACF;IACD,MAAM,CACJ,OAAO,EACP,CACE,EACE,sDAAsD,EACtD,sBAAsB,EACtB,6BAA6B,EAC7B,gBAAgB,EAChB,kBAAkB,GACnB,EACF;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACpE,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QACxD,MAAM,kBAAkB,GAAG,OAAO,CAAC,6BAA6B,CAC9D,eAAe,EACf,kBAAkB,CACnB,CAAC;QAEF,IACE,CAAC,kBAAkB;YACnB,sDAAsD,KAAK,IAAI,EAC/D;YACA,OAAO,CAAC,MAAM,CAAC;gBACb,GAAG,EAAE;oBACH,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;oBAC7B,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;iBAC5B;gBACD,SAAS,EAAE,mBAAmB;aAC/B,CAAC,CAAC;SACJ;QAED,OAAO;YACL,qBAAqB,CAAC,IAAoC;gBACxD,IAAI,kBAAkB,EAAE;oBACtB,OAAO;iBACR;gBAED,IAAI,QAAiD,CAAC;gBACtD,IAAI,yBAAyB,GAAoB,EAAE,CAAC;gBACpD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB,EAAE;oBACtD,yBAAyB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9D,IACE,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI;wBAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI;wBAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK;wBAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,EAC5B;wBACA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;qBAC/B;iBACF;qBAAM,IACL,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,iBAAiB;oBACnD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;oBACvD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB,EACxD;oBACA,yBAAyB,GAAG;wBAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;wBACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;wBACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;qBACtB,CAAC;oBACF,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;wBAC/B,IACE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK;4BACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,EAClC;4BACA,QAAQ,GAAG,KAAK,CAAC;yBAClB;6BAAM,IACL,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK;4BACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC;4BACnC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI;gCAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;4BACvC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI;gCAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,EACpC;4BACA,QAAQ,GAAG,IAAI,CAAC;yBACjB;qBACF;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;wBACtC,IACE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK;4BACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,EAClC;4BACA,QAAQ,GAAG,KAAK,CAAC;yBAClB;6BAAM,IACL,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK;4BACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC;4BACnC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI;gCAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;4BACvC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI;gCAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,EACpC;4BACA,QAAQ,GAAG,IAAI,CAAC;yBACjB;qBACF;iBACF;gBAED,IAAI,CAAC,QAAQ,EAAE;oBACb,OAAO;iBACR;gBAED,IAAI,UAAqC,CAAC;gBAC1C,IAAI,iBAAiB,GAAG,KAAK,CAAC;gBAC9B,IAAI,YAAY,GAAG,KAAK,CAAC;gBAEzB,0EAA0E;gBAC1E,KAAK,MAAM,QAAQ,IAAI,yBAAyB,EAAE;oBAChD,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;wBAChC,YAAY,GAAG,IAAI,CAAC;qBACrB;yBAAM,IAAI,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE;wBAC/C,iBAAiB,GAAG,IAAI,CAAC;qBAC1B;yBAAM,IACL,CAAC,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,IAAI,CAAC;wBACzC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,EAC3C;wBACA,UAAU,GAAG,QAAQ,CAAC;qBACvB;yBAAM,IACL,CAAC,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,IAAI,CAAC;wBACzC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAC1C;wBACA,UAAU,GAAG,QAAQ,CAAC;qBACvB;yBAAM;wBACL,OAAO;qBACR;iBACF;gBAED,IAAI,CAAC,UAAU,EAAE;oBACf,OAAO;iBACR;gBAED,MAAM,SAAS,GAAG,CAAC,GAAY,EAAE;oBAC/B,2EAA2E;oBAC3E,IAAI,iBAAiB,KAAK,YAAY,EAAE;wBACtC,OAAO,iBAAiB,CAAC;qBAC1B;oBAED,iEAAiE;oBACjE,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE;wBAC1C,OAAO,IAAI,CAAC;qBACb;oBAED,MAAM,MAAM,GAAG,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACpE,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;oBAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAEtC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;wBACrD,OAAO,KAAK,CAAC;qBACd;oBAED,MAAM,WAAW,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAEtD,uEAAuE;oBACvE,IAAI,iBAAiB,IAAI,CAAC,WAAW,EAAE;wBACrC,OAAO,IAAI,CAAC;qBACb;oBAED,MAAM,gBAAgB,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBAEhE,qEAAqE;oBACrE,OAAO,YAAY,IAAI,CAAC,gBAAgB,CAAC;gBAC3C,CAAC,CAAC,EAAE,CAAC;gBAEL,IAAI,SAAS,EAAE;oBACb,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,0BAA0B;wBACrC,OAAO,EAAE;4BACP;gCACE,SAAS,EAAE,gBAAgB;gCAC3B,GAAG,CAAC,KAAyB;oCAC3B,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GACjB,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,IAAI;wCACrC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;wCACnC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oCACxC,OAAO,KAAK,CAAC,WAAW,CACtB,IAAI,EACJ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CACtB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACb,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACd,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAC3B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EACd,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CACf,EAAE,CACJ,CAAC;gCACJ,CAAC;6BACF;yBACF;qBACF,CAAC,CAAC;iBACJ;YACH,CAAC;YAED,oCAAoC,CAClC,IAAgC;gBAEhC,MAAM,MAAM,GAAG,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtE,IAAI,CAAC,SAAS,EAAE;oBACd,OAAO;iBACR;gBAED,IAAI,sBAAsB,KAAK,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE;oBAC9D,OAAO;iBACR;gBAED,MAAM,cAAc,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;gBACtD,IAAI,6BAA6B,KAAK,IAAI,IAAI,cAAc,EAAE;oBAC5D,OAAO;iBACR;gBAED,MAAM,cAAc,GAAG;oBACrB,gBAAiB,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM;oBAC/C,gBAAiB,CAAC,OAAO,IAAI,EAAE,CAAC,SAAS,CAAC,cAAc;oBACxD,gBAAiB,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM;oBAC/C,gBAAiB,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM;iBAChD;qBACE,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;qBACpD,MAAM,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClD,IACG,IAAmC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAClD,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,cAAc,CAAC,CACzC,EACD;oBACA,OAAO;iBACR;gBAED,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CACpC,UAAU,CAAC,aAAa,CACtB,IAAI,CAAC,IAAI,EACT,KAAK,CAAC,EAAE,CACN,KAAK,CAAC,IAAI,KAAK,uBAAe,CAAC,UAAU;oBACzC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAChC,EACD,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAC3D,CAAC;gBAEF,QAAQ,CAAC,CAAC,GAAG,CACX,KAAyB;oBAEzB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;wBACxD,kFAAkF;wBAClF,IACE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,iBAAiB;4BACnD,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACzC;4BACA,MAAM,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;yBACpD;6BAAM;4BACL,MAAM,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;yBAC9C;wBACD,MAAM,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;qBAC9C;oBACD,MAAM,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;gBAChD,CAAC;gBAED,OAAO,CAAC,MAAM,CAAC;oBACb,IAAI,EAAE,cAAc;oBACpB,SAAS,EAAE,qBAAqB;oBAChC,OAAO,EAAE;wBACP;4BACE,SAAS,EAAE,gBAAgB;4BAC3B,GAAG;yBACJ;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,SAAS,iBAAiB,CAAC,IAAmB;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,OAAO,OAAO,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAErB,IACE,CAAC,OAAO,CAAC,IAAI,KAAK,sBAAc,CAAC,qBAAqB;YACpD,OAAO,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;YAChD,OAAO,CAAC,IAAI,KAAK,sBAAc,CAAC,WAAW;YAC3C,OAAO,CAAC,IAAI,KAAK,sBAAc,CAAC,YAAY;YAC5C,OAAO,CAAC,IAAI,KAAK,sBAAc,CAAC,cAAc,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EACzB;YACA,OAAO,IAAI,CAAC;SACb;QAED,IACE;YACE,sBAAc,CAAC,uBAAuB;YACtC,sBAAc,CAAC,kBAAkB;SAClC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EACxB;YACA;;;;eAIG;YACH,OAAO,KAAK,CAAC;SACd;QAED,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;KAC1B;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAgC;IAChE,MAAM,IAAI,GAAG,IAAI,GAAG,EAA6B,CAAC;IAClD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE;QAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACrB,SAAS;SACV;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElB,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,sBAAc,CAAC,iBAAiB,EAAE;YAChE,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE;gBAC7B,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE;gBACpC,sEAAsE;gBACtE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;aACzD;SACF;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=PreferOptionalChainOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PreferOptionalChainOptions.js","sourceRoot":"","sources":["../../../src/rules/prefer-optional-chain-utils/PreferOptionalChainOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,419 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.analyzeChain = void 0;
27
+ const utils_1 = require("@typescript-eslint/utils");
28
+ const ts_api_utils_1 = require("ts-api-utils");
29
+ const ts = __importStar(require("typescript"));
30
+ const util = __importStar(require("../../util"));
31
+ const compareNodes_1 = require("./compareNodes");
32
+ function includesType(parserServices, node, typeFlagIn) {
33
+ const typeFlag = typeFlagIn | ts.TypeFlags.Any | ts.TypeFlags.Unknown;
34
+ const types = (0, ts_api_utils_1.unionTypeParts)(parserServices.getTypeAtLocation(node));
35
+ for (const type of types) {
36
+ if (util.isTypeFlagSet(type, typeFlag)) {
37
+ return true;
38
+ }
39
+ }
40
+ return false;
41
+ }
42
+ const analyzeAndChainOperand = (parserServices, operand, index, chain) => {
43
+ switch (operand.comparisonType) {
44
+ case "Boolean" /* NullishComparisonType.Boolean */:
45
+ case "NotEqualNullOrUndefined" /* NullishComparisonType.NotEqualNullOrUndefined */:
46
+ return [operand];
47
+ case "NotStrictEqualNull" /* NullishComparisonType.NotStrictEqualNull */: {
48
+ // handle `x !== null && x !== undefined`
49
+ const nextOperand = chain[index + 1];
50
+ if (nextOperand?.comparisonType ===
51
+ "NotStrictEqualUndefined" /* NullishComparisonType.NotStrictEqualUndefined */ &&
52
+ (0, compareNodes_1.compareNodes)(operand.comparedName, nextOperand.comparedName) ===
53
+ "Equal" /* NodeComparisonResult.Equal */) {
54
+ return [operand, nextOperand];
55
+ }
56
+ if (includesType(parserServices, operand.comparedName, ts.TypeFlags.Undefined)) {
57
+ // we know the next operand is not an `undefined` check and that this
58
+ // operand includes `undefined` - which means that making this an
59
+ // optional chain would change the runtime behavior of the expression
60
+ return null;
61
+ }
62
+ return [operand];
63
+ }
64
+ case "NotStrictEqualUndefined" /* NullishComparisonType.NotStrictEqualUndefined */: {
65
+ // handle `x !== undefined && x !== null`
66
+ const nextOperand = chain[index + 1];
67
+ if (nextOperand?.comparisonType ===
68
+ "NotStrictEqualNull" /* NullishComparisonType.NotStrictEqualNull */ &&
69
+ (0, compareNodes_1.compareNodes)(operand.comparedName, nextOperand.comparedName) ===
70
+ "Equal" /* NodeComparisonResult.Equal */) {
71
+ return [operand, nextOperand];
72
+ }
73
+ if (includesType(parserServices, operand.comparedName, ts.TypeFlags.Null)) {
74
+ // we know the next operand is not a `null` check and that this
75
+ // operand includes `null` - which means that making this an
76
+ // optional chain would change the runtime behavior of the expression
77
+ return null;
78
+ }
79
+ return [operand];
80
+ }
81
+ default:
82
+ return null;
83
+ }
84
+ };
85
+ const analyzeOrChainOperand = (parserServices, operand, index, chain) => {
86
+ switch (operand.comparisonType) {
87
+ case "NotBoolean" /* NullishComparisonType.NotBoolean */:
88
+ case "EqualNullOrUndefined" /* NullishComparisonType.EqualNullOrUndefined */:
89
+ return [operand];
90
+ case "StrictEqualNull" /* NullishComparisonType.StrictEqualNull */: {
91
+ // handle `x === null || x === undefined`
92
+ const nextOperand = chain[index + 1];
93
+ if (nextOperand?.comparisonType ===
94
+ "StrictEqualUndefined" /* NullishComparisonType.StrictEqualUndefined */ &&
95
+ (0, compareNodes_1.compareNodes)(operand.comparedName, nextOperand.comparedName) ===
96
+ "Equal" /* NodeComparisonResult.Equal */) {
97
+ return [operand, nextOperand];
98
+ }
99
+ if (includesType(parserServices, operand.comparedName, ts.TypeFlags.Undefined)) {
100
+ // we know the next operand is not an `undefined` check and that this
101
+ // operand includes `undefined` - which means that making this an
102
+ // optional chain would change the runtime behavior of the expression
103
+ return null;
104
+ }
105
+ return [operand];
106
+ }
107
+ case "StrictEqualUndefined" /* NullishComparisonType.StrictEqualUndefined */: {
108
+ // handle `x === undefined || x === null`
109
+ const nextOperand = chain[index + 1];
110
+ if (nextOperand?.comparisonType === "StrictEqualNull" /* NullishComparisonType.StrictEqualNull */ &&
111
+ (0, compareNodes_1.compareNodes)(operand.comparedName, nextOperand.comparedName) ===
112
+ "Equal" /* NodeComparisonResult.Equal */) {
113
+ return [operand, nextOperand];
114
+ }
115
+ if (includesType(parserServices, operand.comparedName, ts.TypeFlags.Null)) {
116
+ // we know the next operand is not a `null` check and that this
117
+ // operand includes `null` - which means that making this an
118
+ // optional chain would change the runtime behavior of the expression
119
+ return null;
120
+ }
121
+ return [operand];
122
+ }
123
+ default:
124
+ return null;
125
+ }
126
+ };
127
+ function getFixer(sourceCode, parserServices, operator, options, chain) {
128
+ const lastOperand = chain[chain.length - 1];
129
+ let useSuggestionFixer;
130
+ if (options.allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing ===
131
+ true) {
132
+ // user has opted-in to the unsafe behavior
133
+ useSuggestionFixer = false;
134
+ }
135
+ else {
136
+ // optional chain specifically will union `undefined` into the final type
137
+ // so we need to make sure that there is at least one operand that includes
138
+ // `undefined`, or else we're going to change the final type - which is
139
+ // unsafe and might cause downstream type errors.
140
+ if (lastOperand.comparisonType ===
141
+ "EqualNullOrUndefined" /* NullishComparisonType.EqualNullOrUndefined */ ||
142
+ lastOperand.comparisonType ===
143
+ "NotEqualNullOrUndefined" /* NullishComparisonType.NotEqualNullOrUndefined */ ||
144
+ lastOperand.comparisonType ===
145
+ "StrictEqualUndefined" /* NullishComparisonType.StrictEqualUndefined */ ||
146
+ lastOperand.comparisonType ===
147
+ "NotStrictEqualUndefined" /* NullishComparisonType.NotStrictEqualUndefined */ ||
148
+ (operator === '||' &&
149
+ lastOperand.comparisonType === "NotBoolean" /* NullishComparisonType.NotBoolean */)) {
150
+ // we know the last operand is an equality check - so the change in types
151
+ // DOES NOT matter and will not change the runtime result or cause a type
152
+ // check error
153
+ useSuggestionFixer = false;
154
+ }
155
+ else {
156
+ useSuggestionFixer = true;
157
+ for (const operand of chain) {
158
+ if (includesType(parserServices, operand.node, ts.TypeFlags.Undefined)) {
159
+ useSuggestionFixer = false;
160
+ break;
161
+ }
162
+ }
163
+ // TODO - we could further reduce the false-positive rate of this check by
164
+ // checking for cases where the change in types don't matter like
165
+ // the test location of an if/while/etc statement.
166
+ // but it's quite complex to do this without false-negatives, so
167
+ // for now we'll just be over-eager with our matching.
168
+ //
169
+ // it's MUCH better to false-positive here and only provide a
170
+ // suggestion fixer, rather than false-negative and autofix to
171
+ // broken code.
172
+ }
173
+ }
174
+ // In its most naive form we could just slap `?.` for every single part of the
175
+ // chain. However this would be undesirable because it'd create unnecessary
176
+ // conditions in the user's code where there were none before - and it would
177
+ // cause errors with rules like our `no-unnecessary-condition`.
178
+ //
179
+ // Instead we want to include the minimum number of `?.` required to correctly
180
+ // unify the code into a single chain. Naively you might think that we can
181
+ // just take the final operand add `?.` after the locations from the previous
182
+ // operands - however this won't be correct either because earlier operands
183
+ // can include a necessary `?.` that's not needed or included in a later
184
+ // operand.
185
+ //
186
+ // So instead what we need to do is to start at the first operand and
187
+ // iteratively diff it against the next operand, and add the difference to the
188
+ // first operand.
189
+ //
190
+ // eg
191
+ // `foo && foo.bar && foo.bar.baz?.bam && foo.bar.baz.bam()`
192
+ // 1) `foo`
193
+ // 2) diff(`foo`, `foo.bar`) = `.bar`
194
+ // 3) result = `foo?.bar`
195
+ // 4) diff(`foo.bar`, `foo.bar.baz?.bam`) = `.baz?.bam`
196
+ // 5) result = `foo?.bar?.baz?.bam`
197
+ // 6) diff(`foo.bar.baz?.bam`, `foo.bar.baz.bam()`) = `()`
198
+ // 7) result = `foo?.bar?.baz?.bam?.()`
199
+ const parts = [];
200
+ for (const current of chain) {
201
+ const nextOperand = flattenChainExpression(sourceCode, current.comparedName);
202
+ const diff = nextOperand.slice(parts.length);
203
+ if (diff.length > 0) {
204
+ if (parts.length > 0) {
205
+ // we need to make the first operand of the diff optional so it matches the
206
+ // logic before merging
207
+ // foo.bar && foo.bar.baz
208
+ // diff = .baz
209
+ // result = foo.bar?.baz
210
+ diff[0].optional = true;
211
+ }
212
+ parts.push(...diff);
213
+ }
214
+ }
215
+ let newCode = parts
216
+ .map(part => {
217
+ let str = '';
218
+ if (part.optional) {
219
+ str += '?.';
220
+ }
221
+ else {
222
+ if (part.nonNull) {
223
+ str += '!';
224
+ }
225
+ if (part.requiresDot) {
226
+ str += '.';
227
+ }
228
+ }
229
+ if (part.precedence !== util.OperatorPrecedence.Invalid &&
230
+ part.precedence < util.OperatorPrecedence.Member) {
231
+ str += `(${part.text})`;
232
+ }
233
+ else {
234
+ str += part.text;
235
+ }
236
+ return str;
237
+ })
238
+ .join('');
239
+ if (lastOperand.node.type === utils_1.AST_NODE_TYPES.BinaryExpression) {
240
+ // retain the ending comparison for cases like
241
+ // x && x.a != null
242
+ // x && typeof x.a !== 'undefined'
243
+ const operator = lastOperand.node.operator;
244
+ const { left, right } = (() => {
245
+ if (lastOperand.isYoda) {
246
+ const unaryOperator = lastOperand.node.right.type === utils_1.AST_NODE_TYPES.UnaryExpression
247
+ ? lastOperand.node.right.operator + ' '
248
+ : '';
249
+ return {
250
+ left: sourceCode.getText(lastOperand.node.left),
251
+ right: unaryOperator + newCode,
252
+ };
253
+ }
254
+ else {
255
+ const unaryOperator = lastOperand.node.left.type === utils_1.AST_NODE_TYPES.UnaryExpression
256
+ ? lastOperand.node.left.operator + ' '
257
+ : '';
258
+ return {
259
+ left: unaryOperator + newCode,
260
+ right: sourceCode.getText(lastOperand.node.right),
261
+ };
262
+ }
263
+ })();
264
+ newCode = `${left} ${operator} ${right}`;
265
+ }
266
+ else if (lastOperand.comparisonType === "NotBoolean" /* NullishComparisonType.NotBoolean */) {
267
+ newCode = `!${newCode}`;
268
+ }
269
+ const fix = fixer => fixer.replaceTextRange([chain[0].node.range[0], lastOperand.node.range[1]], newCode);
270
+ return useSuggestionFixer
271
+ ? { suggest: [{ fix, messageId: 'optionalChainSuggest' }] }
272
+ : { fix };
273
+ function flattenChainExpression(sourceCode, node) {
274
+ switch (node.type) {
275
+ case utils_1.AST_NODE_TYPES.ChainExpression:
276
+ return flattenChainExpression(sourceCode, node.expression);
277
+ case utils_1.AST_NODE_TYPES.CallExpression: {
278
+ const argumentsText = (() => {
279
+ const closingParenToken = util.nullThrows(sourceCode.getLastToken(node), util.NullThrowsReasons.MissingToken('closing parenthesis', node.type));
280
+ const openingParenToken = util.nullThrows(sourceCode.getFirstTokenBetween(node.typeArguments ?? node.callee, closingParenToken, util.isOpeningParenToken), util.NullThrowsReasons.MissingToken('opening parenthesis', node.type));
281
+ return sourceCode.text.substring(openingParenToken.range[0], closingParenToken.range[1]);
282
+ })();
283
+ const typeArgumentsText = (() => {
284
+ if (node.typeArguments == null) {
285
+ return '';
286
+ }
287
+ return sourceCode.getText(node.typeArguments);
288
+ })();
289
+ return [
290
+ ...flattenChainExpression(sourceCode, node.callee),
291
+ {
292
+ nonNull: false,
293
+ optional: node.optional,
294
+ // no precedence for this
295
+ precedence: util.OperatorPrecedence.Invalid,
296
+ requiresDot: false,
297
+ text: typeArgumentsText + argumentsText,
298
+ },
299
+ ];
300
+ }
301
+ case utils_1.AST_NODE_TYPES.MemberExpression: {
302
+ const propertyText = sourceCode.getText(node.property);
303
+ return [
304
+ ...flattenChainExpression(sourceCode, node.object),
305
+ {
306
+ nonNull: node.object.type === utils_1.AST_NODE_TYPES.TSNonNullExpression,
307
+ optional: node.optional,
308
+ precedence: node.computed
309
+ ? // computed is already wrapped in [] so no need to wrap in () as well
310
+ util.OperatorPrecedence.Invalid
311
+ : util.getOperatorPrecedenceForNode(node.property),
312
+ requiresDot: !node.computed,
313
+ text: node.computed ? `[${propertyText}]` : propertyText,
314
+ },
315
+ ];
316
+ }
317
+ case utils_1.AST_NODE_TYPES.TSNonNullExpression:
318
+ return flattenChainExpression(sourceCode, node.expression);
319
+ default:
320
+ return [
321
+ {
322
+ nonNull: false,
323
+ optional: false,
324
+ precedence: util.getOperatorPrecedenceForNode(node),
325
+ requiresDot: false,
326
+ text: sourceCode.getText(node),
327
+ },
328
+ ];
329
+ }
330
+ }
331
+ }
332
+ function analyzeChain(context, sourceCode, parserServices, options, operator, chain) {
333
+ // need at least 2 operands in a chain for it to be a chain
334
+ if (chain.length <= 1 ||
335
+ /* istanbul ignore next -- previous checks make this unreachable, but keep it for exhaustiveness check */
336
+ operator === '??') {
337
+ return;
338
+ }
339
+ const analyzeOperand = (() => {
340
+ switch (operator) {
341
+ case '&&':
342
+ return analyzeAndChainOperand;
343
+ case '||':
344
+ return analyzeOrChainOperand;
345
+ }
346
+ })();
347
+ let subChain = [];
348
+ const maybeReportThenReset = (newChainSeed) => {
349
+ if (subChain.length > 1) {
350
+ context.report({
351
+ messageId: 'preferOptionalChain',
352
+ loc: {
353
+ start: subChain[0].node.loc.start,
354
+ end: subChain[subChain.length - 1].node.loc.end,
355
+ },
356
+ ...getFixer(sourceCode, parserServices, operator, options, subChain),
357
+ });
358
+ }
359
+ // we've reached the end of a chain of logical expressions
360
+ // i.e. the current operand doesn't belong to the previous chain.
361
+ //
362
+ // we don't want to throw away the current operand otherwise we will skip it
363
+ // and that can cause us to miss chains. So instead we seed the new chain
364
+ // with the current operand
365
+ //
366
+ // eg this means we can catch cases like:
367
+ // unrelated != null && foo != null && foo.bar != null;
368
+ // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ first "chain"
369
+ // ^^^^^^^^^^^ newChainSeed
370
+ // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ second chain
371
+ subChain = newChainSeed ? [...newChainSeed] : [];
372
+ };
373
+ for (let i = 0; i < chain.length; i += 1) {
374
+ const lastOperand = subChain[subChain.length - 1];
375
+ const operand = chain[i];
376
+ const validatedOperands = analyzeOperand(parserServices, operand, i, chain);
377
+ if (!validatedOperands) {
378
+ // TODO - #7170
379
+ // check if the name is a superset/equal - if it is, then it likely
380
+ // intended to be part of the chain and something we should include in the
381
+ // report, eg
382
+ // foo == null || foo.bar;
383
+ // ^^^^^^^^^^^ valid OR chain
384
+ // ^^^^^^^ invalid OR chain logical, but still part of
385
+ // the chain for combination purposes
386
+ maybeReportThenReset();
387
+ continue;
388
+ }
389
+ // in case multiple operands were consumed - make sure to correctly increment the index
390
+ i += validatedOperands.length - 1;
391
+ const currentOperand = validatedOperands[0];
392
+ if (lastOperand) {
393
+ const comparisonResult = (0, compareNodes_1.compareNodes)(lastOperand.comparedName,
394
+ // purposely inspect and push the last operand because the prior operands don't matter
395
+ // this also means we won't false-positive in cases like
396
+ // foo !== null && foo !== undefined
397
+ validatedOperands[validatedOperands.length - 1].comparedName);
398
+ if (comparisonResult === "Subset" /* NodeComparisonResult.Subset */) {
399
+ // the operands are comparable, so we can continue searching
400
+ subChain.push(currentOperand);
401
+ }
402
+ else if (comparisonResult === "Invalid" /* NodeComparisonResult.Invalid */) {
403
+ maybeReportThenReset(validatedOperands);
404
+ }
405
+ else if (comparisonResult === "Equal" /* NodeComparisonResult.Equal */) {
406
+ // purposely don't push this case because the node is a no-op and if
407
+ // we consider it then we might report on things like
408
+ // foo && foo
409
+ }
410
+ }
411
+ else {
412
+ subChain.push(currentOperand);
413
+ }
414
+ }
415
+ // check the leftovers
416
+ maybeReportThenReset();
417
+ }
418
+ exports.analyzeChain = analyzeChain;
419
+ //# sourceMappingURL=analyzeChain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzeChain.js","sourceRoot":"","sources":["../../../src/rules/prefer-optional-chain-utils/analyzeChain.ts"],"names":[],"mappings":"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"}