@codeperfect/eslint-plugin 1.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 (248) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +128 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts +16 -0
  5. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -0
  6. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +131 -0
  7. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +48 -0
  8. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -0
  9. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.js +126 -0
  10. package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +40 -0
  11. package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +1 -0
  12. package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +90 -0
  13. package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts +11 -0
  14. package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -0
  15. package/dist/architecture/consistent-barrel-files/exports-only-rule.js +218 -0
  16. package/dist/architecture/consistent-barrel-files/index.d.ts +5 -0
  17. package/dist/architecture/consistent-barrel-files/index.d.ts.map +1 -0
  18. package/dist/architecture/consistent-barrel-files/index.js +4 -0
  19. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts +11 -0
  20. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -0
  21. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +100 -0
  22. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +40 -0
  23. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +1 -0
  24. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +90 -0
  25. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts +65 -0
  26. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -0
  27. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +154 -0
  28. package/dist/architecture/consistent-barrel-files/rule.d.ts +11 -0
  29. package/dist/architecture/consistent-barrel-files/rule.d.ts.map +1 -0
  30. package/dist/architecture/consistent-barrel-files/rule.js +58 -0
  31. package/dist/architecture/consistent-barrel-files/test-helpers.d.ts +141 -0
  32. package/dist/architecture/consistent-barrel-files/test-helpers.d.ts.map +1 -0
  33. package/dist/architecture/consistent-barrel-files/test-helpers.js +229 -0
  34. package/dist/architecture/consistent-barrel-files/types.d.ts +25 -0
  35. package/dist/architecture/consistent-barrel-files/types.d.ts.map +1 -0
  36. package/dist/architecture/consistent-barrel-files/types.js +2 -0
  37. package/dist/architecture/index.d.ts +2 -0
  38. package/dist/architecture/index.d.ts.map +1 -0
  39. package/dist/architecture/index.js +2 -0
  40. package/dist/benchmark-rules.d.ts +83 -0
  41. package/dist/benchmark-rules.d.ts.map +1 -0
  42. package/dist/benchmark-rules.js +175 -0
  43. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  44. package/dist/codeperfect-plugin.d.ts +46 -0
  45. package/dist/codeperfect-plugin.d.ts.map +1 -0
  46. package/dist/codeperfect-plugin.js +29 -0
  47. package/dist/core/index.d.ts +3 -0
  48. package/dist/core/index.d.ts.map +1 -0
  49. package/dist/core/index.js +3 -0
  50. package/dist/core/no-multiple-declarators/index.d.ts +2 -0
  51. package/dist/core/no-multiple-declarators/index.d.ts.map +1 -0
  52. package/dist/core/no-multiple-declarators/index.js +2 -0
  53. package/dist/core/no-multiple-declarators/rule.d.ts +4 -0
  54. package/dist/core/no-multiple-declarators/rule.d.ts.map +1 -0
  55. package/dist/core/no-multiple-declarators/rule.js +100 -0
  56. package/dist/core/prefer-interface-types/index.d.ts +2 -0
  57. package/dist/core/prefer-interface-types/index.d.ts.map +1 -0
  58. package/dist/core/prefer-interface-types/index.js +2 -0
  59. package/dist/core/prefer-interface-types/rule.d.ts +5 -0
  60. package/dist/core/prefer-interface-types/rule.d.ts.map +1 -0
  61. package/dist/core/prefer-interface-types/rule.js +145 -0
  62. package/dist/core/prefer-interface-types/test-helpers.d.ts +110 -0
  63. package/dist/core/prefer-interface-types/test-helpers.d.ts.map +1 -0
  64. package/dist/core/prefer-interface-types/test-helpers.js +116 -0
  65. package/dist/custom-rule-documentation.d.ts +36 -0
  66. package/dist/custom-rule-documentation.d.ts.map +1 -0
  67. package/dist/custom-rule-documentation.js +35 -0
  68. package/dist/custom-rules.d.ts +61 -0
  69. package/dist/custom-rules.d.ts.map +1 -0
  70. package/dist/custom-rules.js +70 -0
  71. package/dist/docs/index.d.ts +4 -0
  72. package/dist/docs/index.d.ts.map +1 -0
  73. package/dist/docs/index.js +4 -0
  74. package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts +89 -0
  75. package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +1 -0
  76. package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.js +129 -0
  77. package/dist/docs/no-interface-member-docs/comment-utilities.d.ts +48 -0
  78. package/dist/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -0
  79. package/dist/docs/no-interface-member-docs/comment-utilities.js +146 -0
  80. package/dist/docs/no-interface-member-docs/index.d.ts +2 -0
  81. package/dist/docs/no-interface-member-docs/index.d.ts.map +1 -0
  82. package/dist/docs/no-interface-member-docs/index.js +2 -0
  83. package/dist/docs/no-interface-member-docs/parameter-tags.d.ts +13 -0
  84. package/dist/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -0
  85. package/dist/docs/no-interface-member-docs/parameter-tags.js +101 -0
  86. package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts +24 -0
  87. package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -0
  88. package/dist/docs/no-interface-member-docs/parameter-utilities.js +125 -0
  89. package/dist/docs/no-interface-member-docs/rule.d.ts +5 -0
  90. package/dist/docs/no-interface-member-docs/rule.d.ts.map +1 -0
  91. package/dist/docs/no-interface-member-docs/rule.js +168 -0
  92. package/dist/docs/no-interface-member-docs/test-helpers.d.ts +103 -0
  93. package/dist/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
  94. package/dist/docs/no-interface-member-docs/test-helpers.js +157 -0
  95. package/dist/docs/no-interface-member-docs/types.d.ts +30 -0
  96. package/dist/docs/no-interface-member-docs/types.d.ts.map +1 -0
  97. package/dist/docs/no-interface-member-docs/types.js +2 -0
  98. package/dist/docs/require-example-language/empty-fence-fixes.d.ts +29 -0
  99. package/dist/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -0
  100. package/dist/docs/require-example-language/empty-fence-fixes.js +169 -0
  101. package/dist/docs/require-example-language/example-utilities.d.ts +70 -0
  102. package/dist/docs/require-example-language/example-utilities.d.ts.map +1 -0
  103. package/dist/docs/require-example-language/example-utilities.js +76 -0
  104. package/dist/docs/require-example-language/examples.d.ts +36 -0
  105. package/dist/docs/require-example-language/examples.d.ts.map +1 -0
  106. package/dist/docs/require-example-language/examples.js +181 -0
  107. package/dist/docs/require-example-language/fixes.d.ts +49 -0
  108. package/dist/docs/require-example-language/fixes.d.ts.map +1 -0
  109. package/dist/docs/require-example-language/fixes.js +182 -0
  110. package/dist/docs/require-example-language/index.d.ts +3 -0
  111. package/dist/docs/require-example-language/index.d.ts.map +1 -0
  112. package/dist/docs/require-example-language/index.js +2 -0
  113. package/dist/docs/require-example-language/reporting.d.ts +60 -0
  114. package/dist/docs/require-example-language/reporting.d.ts.map +1 -0
  115. package/dist/docs/require-example-language/reporting.js +145 -0
  116. package/dist/docs/require-example-language/rule.d.ts +7 -0
  117. package/dist/docs/require-example-language/rule.d.ts.map +1 -0
  118. package/dist/docs/require-example-language/rule.js +34 -0
  119. package/dist/docs/require-example-language/types.d.ts +22 -0
  120. package/dist/docs/require-example-language/types.d.ts.map +1 -0
  121. package/dist/docs/require-example-language/types.js +2 -0
  122. package/dist/docs/single-line-jsdoc/index.d.ts +2 -0
  123. package/dist/docs/single-line-jsdoc/index.d.ts.map +1 -0
  124. package/dist/docs/single-line-jsdoc/index.js +2 -0
  125. package/dist/docs/single-line-jsdoc/rule.d.ts +5 -0
  126. package/dist/docs/single-line-jsdoc/rule.d.ts.map +1 -0
  127. package/dist/docs/single-line-jsdoc/rule.js +196 -0
  128. package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts +16 -0
  129. package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -0
  130. package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.js +95 -0
  131. package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts +25 -0
  132. package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -0
  133. package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +140 -0
  134. package/dist/docs/test-helpers.d.ts +50 -0
  135. package/dist/docs/test-helpers.d.ts.map +1 -0
  136. package/dist/docs/test-helpers.js +107 -0
  137. package/dist/index.d.ts +6 -0
  138. package/dist/index.d.ts.map +1 -0
  139. package/dist/index.js +6 -0
  140. package/dist/presets.d.ts +10 -0
  141. package/dist/presets.d.ts.map +1 -0
  142. package/dist/presets.js +50 -0
  143. package/dist/rules/index.d.ts +5 -0
  144. package/dist/rules/index.d.ts.map +1 -0
  145. package/dist/rules/index.js +6 -0
  146. package/dist/testing/aaa/analyzer.d.ts +36 -0
  147. package/dist/testing/aaa/analyzer.d.ts.map +1 -0
  148. package/dist/testing/aaa/analyzer.js +490 -0
  149. package/dist/testing/aaa/index.d.ts +3 -0
  150. package/dist/testing/aaa/index.d.ts.map +1 -0
  151. package/dist/testing/aaa/index.js +2 -0
  152. package/dist/testing/aaa/types.d.ts +31 -0
  153. package/dist/testing/aaa/types.d.ts.map +1 -0
  154. package/dist/testing/aaa/types.js +2 -0
  155. package/dist/testing/assert-actual-expected-names/index.d.ts +2 -0
  156. package/dist/testing/assert-actual-expected-names/index.d.ts.map +1 -0
  157. package/dist/testing/assert-actual-expected-names/index.js +2 -0
  158. package/dist/testing/assert-actual-expected-names/rule.d.ts +4 -0
  159. package/dist/testing/assert-actual-expected-names/rule.d.ts.map +1 -0
  160. package/dist/testing/assert-actual-expected-names/rule.js +54 -0
  161. package/dist/testing/enforce-aaa-phase-purity/index.d.ts +2 -0
  162. package/dist/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -0
  163. package/dist/testing/enforce-aaa-phase-purity/index.js +2 -0
  164. package/dist/testing/enforce-aaa-phase-purity/rule.d.ts +4 -0
  165. package/dist/testing/enforce-aaa-phase-purity/rule.d.ts.map +1 -0
  166. package/dist/testing/enforce-aaa-phase-purity/rule.js +110 -0
  167. package/dist/testing/enforce-aaa-structure/index.d.ts +2 -0
  168. package/dist/testing/enforce-aaa-structure/index.d.ts.map +1 -0
  169. package/dist/testing/enforce-aaa-structure/index.js +2 -0
  170. package/dist/testing/enforce-aaa-structure/rule.d.ts +4 -0
  171. package/dist/testing/enforce-aaa-structure/rule.d.ts.map +1 -0
  172. package/dist/testing/enforce-aaa-structure/rule.js +48 -0
  173. package/dist/testing/index.d.ts +9 -0
  174. package/dist/testing/index.d.ts.map +1 -0
  175. package/dist/testing/index.js +9 -0
  176. package/dist/testing/prefer-vi-mocked-import/fix.d.ts +16 -0
  177. package/dist/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -0
  178. package/dist/testing/prefer-vi-mocked-import/fix.js +224 -0
  179. package/dist/testing/prefer-vi-mocked-import/index.d.ts +2 -0
  180. package/dist/testing/prefer-vi-mocked-import/index.d.ts.map +1 -0
  181. package/dist/testing/prefer-vi-mocked-import/index.js +2 -0
  182. package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts +16 -0
  183. package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -0
  184. package/dist/testing/prefer-vi-mocked-import/match-bindings.js +52 -0
  185. package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts +16 -0
  186. package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -0
  187. package/dist/testing/prefer-vi-mocked-import/match-declarations.js +99 -0
  188. package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts +66 -0
  189. package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +1 -0
  190. package/dist/testing/prefer-vi-mocked-import/match-helpers.js +102 -0
  191. package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts +17 -0
  192. package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -0
  193. package/dist/testing/prefer-vi-mocked-import/match-imports.js +156 -0
  194. package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts +42 -0
  195. package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -0
  196. package/dist/testing/prefer-vi-mocked-import/match-rewrites.js +119 -0
  197. package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts +13 -0
  198. package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts.map +1 -0
  199. package/dist/testing/prefer-vi-mocked-import/match-walk.js +62 -0
  200. package/dist/testing/prefer-vi-mocked-import/match.d.ts +15 -0
  201. package/dist/testing/prefer-vi-mocked-import/match.d.ts.map +1 -0
  202. package/dist/testing/prefer-vi-mocked-import/match.js +193 -0
  203. package/dist/testing/prefer-vi-mocked-import/rule.d.ts +5 -0
  204. package/dist/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -0
  205. package/dist/testing/prefer-vi-mocked-import/rule.js +32 -0
  206. package/dist/testing/prefer-vi-mocked-import/types.d.ts +83 -0
  207. package/dist/testing/prefer-vi-mocked-import/types.d.ts.map +1 -0
  208. package/dist/testing/prefer-vi-mocked-import/types.js +2 -0
  209. package/dist/testing/require-aaa-sections/index.d.ts +2 -0
  210. package/dist/testing/require-aaa-sections/index.d.ts.map +1 -0
  211. package/dist/testing/require-aaa-sections/index.js +2 -0
  212. package/dist/testing/require-aaa-sections/rule.d.ts +4 -0
  213. package/dist/testing/require-aaa-sections/rule.d.ts.map +1 -0
  214. package/dist/testing/require-aaa-sections/rule.js +111 -0
  215. package/dist/testing/require-act-result-capture/index.d.ts +2 -0
  216. package/dist/testing/require-act-result-capture/index.d.ts.map +1 -0
  217. package/dist/testing/require-act-result-capture/index.js +2 -0
  218. package/dist/testing/require-act-result-capture/rule.d.ts +4 -0
  219. package/dist/testing/require-act-result-capture/rule.d.ts.map +1 -0
  220. package/dist/testing/require-act-result-capture/rule.js +34 -0
  221. package/dist/testing/require-test-companion/index.d.ts +3 -0
  222. package/dist/testing/require-test-companion/index.d.ts.map +1 -0
  223. package/dist/testing/require-test-companion/index.js +3 -0
  224. package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts +16 -0
  225. package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -0
  226. package/dist/testing/require-test-companion/require-test-companion-listeners.js +145 -0
  227. package/dist/testing/require-test-companion/require-test-companion-options.d.ts +54 -0
  228. package/dist/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -0
  229. package/dist/testing/require-test-companion/require-test-companion-options.js +112 -0
  230. package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts +51 -0
  231. package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +1 -0
  232. package/dist/testing/require-test-companion/require-test-companion-test-helpers.js +183 -0
  233. package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts +28 -0
  234. package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts.map +1 -0
  235. package/dist/testing/require-test-companion/require-test-companion-utilities.js +26 -0
  236. package/dist/testing/require-test-companion/rule.d.ts +5 -0
  237. package/dist/testing/require-test-companion/rule.d.ts.map +1 -0
  238. package/dist/testing/require-test-companion/rule.js +57 -0
  239. package/dist/testing/require-test-companion/types.d.ts +11 -0
  240. package/dist/testing/require-test-companion/types.d.ts.map +1 -0
  241. package/dist/testing/require-test-companion/types.js +2 -0
  242. package/dist/testing/single-act-statement/index.d.ts +2 -0
  243. package/dist/testing/single-act-statement/index.d.ts.map +1 -0
  244. package/dist/testing/single-act-statement/index.js +2 -0
  245. package/dist/testing/single-act-statement/rule.d.ts +4 -0
  246. package/dist/testing/single-act-statement/rule.d.ts.map +1 -0
  247. package/dist/testing/single-act-statement/rule.js +33 -0
  248. package/package.json +106 -0
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Checks isJsdocComment.
3
+ * @param comment Input comment value.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * isJsdocComment();
8
+ * ```
9
+ */
10
+ const isJsdocComment = (comment) => comment.type === "Block" && comment.value.startsWith("*");
11
+ /**
12
+ * Gets getCommentEnd.
13
+ * @param comment Input comment value.
14
+ * @returns Return value output.
15
+ * @example
16
+ * ```typescript
17
+ * getCommentEnd();
18
+ * ```
19
+ */
20
+ const getCommentEnd = (comment) => {
21
+ const commentEnd = comment.range?.[1];
22
+ return typeof commentEnd === "number" ? commentEnd : void 0;
23
+ };
24
+ /**
25
+ * Finds the closest JSDoc comment before a node.
26
+ * @param comments Comment list to search.
27
+ * @param nodeStart Start offset of the node.
28
+ * @returns The closest JSDoc comment when present.
29
+ * @example
30
+ * ```typescript
31
+ * const comment = findClosestComment(comments, nodeStart);
32
+ * ```
33
+ */
34
+ const findClosestComment = (comments, nodeStart) => {
35
+ let closest = void 0;
36
+ let closestEnd = -1;
37
+ for (const comment of comments) {
38
+ const commentEnd = getCommentEnd(comment);
39
+ const shouldConsider = isJsdocComment(comment) && commentEnd !== void 0;
40
+ if (shouldConsider && commentEnd <= nodeStart && commentEnd > closestEnd) {
41
+ closest = comment;
42
+ closestEnd = commentEnd;
43
+ }
44
+ }
45
+ return closest;
46
+ };
47
+ /**
48
+ * Gets the closest JSDoc comment for a node.
49
+ * @param sourceCode Source code wrapper.
50
+ * @param node Node to inspect.
51
+ * @returns The closest JSDoc comment when present.
52
+ * @example
53
+ * ```typescript
54
+ * const comment = getJsdocComment(sourceCode, node);
55
+ * ```
56
+ */
57
+ const getJsdocComment = (sourceCode, node) => {
58
+ const comments = sourceCode.getAllComments();
59
+ const nodeStart = node.range?.[0];
60
+ if (comments.length === 0 || typeof nodeStart !== "number") {
61
+ return void 0;
62
+ }
63
+ return findClosestComment(comments, nodeStart);
64
+ };
65
+ /**
66
+ * Extracts the full text for a comment range.
67
+ * @param sourceCode Source code wrapper.
68
+ * @param comment Comment to read.
69
+ * @returns Comment contents from the source.
70
+ * @example
71
+ * ```typescript
72
+ * const text = getCommentText(sourceCode, comment);
73
+ * ```
74
+ */
75
+ const getCommentText = (sourceCode, comment) => {
76
+ const start = comment.range?.[0];
77
+ const end = comment.range?.[1];
78
+ if (typeof start !== "number" || typeof end !== "number") {
79
+ return "";
80
+ }
81
+ return sourceCode.text.slice(start, end);
82
+ };
83
+ /**
84
+ * Gets getCommentLines.
85
+ * @param commentText Input commentText value.
86
+ * @returns Return value output.
87
+ * @example
88
+ * ```typescript
89
+ * getCommentLines();
90
+ * ```
91
+ */
92
+ const getCommentLines = (commentText) => {
93
+ const lines = commentText.split(/\r?\n/u);
94
+ const results = [];
95
+ let offset = 0;
96
+ for (const line of lines) {
97
+ const lineEnd = offset + line.length;
98
+ const nextSlice = commentText.slice(lineEnd, lineEnd + 2);
99
+ const lineBreakLength = nextSlice.startsWith("\r\n")
100
+ ? 2
101
+ : nextSlice.startsWith("\n")
102
+ ? 1
103
+ : 0;
104
+ results.push({
105
+ end: lineEnd,
106
+ lineBreakLength,
107
+ start: offset,
108
+ text: line,
109
+ });
110
+ offset = lineEnd + lineBreakLength;
111
+ }
112
+ return results;
113
+ };
114
+ /**
115
+ * Builds a removal range for the specified comment line.
116
+ * @param commentStart Comment start offset in the source.
117
+ * @param commentText Full comment text.
118
+ * @param line Line metadata for the comment.
119
+ * @returns The range to remove.
120
+ * @example
121
+ * ```typescript
122
+ * const range = buildRemovalRange(0, commentText, line);
123
+ * ```
124
+ */
125
+ const buildRemovalRange = (commentStart, commentText, line) => {
126
+ if (line.lineBreakLength > 0) {
127
+ return [
128
+ commentStart + line.start,
129
+ commentStart + line.end + line.lineBreakLength,
130
+ ];
131
+ }
132
+ if (line.start > 0) {
133
+ const previousChar = commentText[line.start - 1];
134
+ const previousIsLineBreak = previousChar === "\n";
135
+ if (previousIsLineBreak) {
136
+ const lineBreakLength = line.start > 1 && commentText[line.start - 2] === "\r" ? 2 : 1;
137
+ return [
138
+ commentStart + line.start - lineBreakLength,
139
+ commentStart + line.end,
140
+ ];
141
+ }
142
+ }
143
+ return [commentStart + line.start, commentStart + line.end];
144
+ };
145
+ export { buildRemovalRange, getCommentLines, getCommentText, getJsdocComment };
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZG9jcy9uby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MvY29tbWVudC11dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQWdCLEVBQVcsRUFBRSxDQUNuRCxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUU1RDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBZ0IsRUFBc0IsRUFBRTtJQUM3RCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdEMsT0FBTyxPQUFPLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxDQUN6QixRQUFtQixFQUNuQixTQUFpQixFQUNJLEVBQUU7SUFDdkIsSUFBSSxPQUFPLEdBQXdCLEtBQUssQ0FBQyxDQUFDO0lBQzFDLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRXBCLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLEtBQUssS0FBSyxDQUFDLENBQUM7UUFFeEUsSUFBSSxjQUFjLElBQUksVUFBVSxJQUFJLFNBQVMsSUFBSSxVQUFVLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDekUsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUNsQixVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsVUFBMEMsRUFDMUMsSUFBZSxFQUNNLEVBQUU7SUFDdkIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzNELE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sa0JBQWtCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sY0FBYyxHQUFHLENBQ3JCLFVBQTBDLEVBQzFDLE9BQWdCLEVBQ1IsRUFBRTtJQUNWLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFL0IsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGVBQWUsR0FBRyxDQUFDLFdBQW1CLEVBQWlCLEVBQUU7SUFDN0QsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxNQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBQ2xDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVmLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDckMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ2xELENBQUMsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUMxQixDQUFDLENBQUMsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRVIsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNYLEdBQUcsRUFBRSxPQUFPO1lBQ1osZUFBZTtZQUNmLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDLENBQUM7UUFFSCxNQUFNLEdBQUcsT0FBTyxHQUFHLGVBQWUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsWUFBb0IsRUFDcEIsV0FBbUIsRUFDbkIsSUFBaUIsRUFDQyxFQUFFO0lBQ3BCLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPO1lBQ0wsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLO1lBQ3pCLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlO1NBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sbUJBQW1CLEdBQUcsWUFBWSxLQUFLLElBQUksQ0FBQztRQUVsRCxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakUsT0FBTztnQkFDTCxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlO2dCQUMzQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUc7YUFDeEIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29tbWVudCwgQ29tbWVudExpbmUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIENoZWNrcyBpc0pzZG9jQ29tbWVudC5cbiAqIEBwYXJhbSBjb21tZW50IElucHV0IGNvbW1lbnQgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzSnNkb2NDb21tZW50KCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNKc2RvY0NvbW1lbnQgPSAoY29tbWVudDogQ29tbWVudCk6IGJvb2xlYW4gPT5cbiAgY29tbWVudC50eXBlID09PSBcIkJsb2NrXCIgJiYgY29tbWVudC52YWx1ZS5zdGFydHNXaXRoKFwiKlwiKTtcblxuLyoqXG4gKiBHZXRzIGdldENvbW1lbnRFbmQuXG4gKiBAcGFyYW0gY29tbWVudCBJbnB1dCBjb21tZW50IHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRDb21tZW50RW5kKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0Q29tbWVudEVuZCA9IChjb21tZW50OiBDb21tZW50KTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgY29tbWVudEVuZCA9IGNvbW1lbnQucmFuZ2U/LlsxXTtcblxuICByZXR1cm4gdHlwZW9mIGNvbW1lbnRFbmQgPT09IFwibnVtYmVyXCIgPyBjb21tZW50RW5kIDogdm9pZCAwO1xufTtcblxuLyoqXG4gKiBGaW5kcyB0aGUgY2xvc2VzdCBKU0RvYyBjb21tZW50IGJlZm9yZSBhIG5vZGUuXG4gKiBAcGFyYW0gY29tbWVudHMgQ29tbWVudCBsaXN0IHRvIHNlYXJjaC5cbiAqIEBwYXJhbSBub2RlU3RhcnQgU3RhcnQgb2Zmc2V0IG9mIHRoZSBub2RlLlxuICogQHJldHVybnMgVGhlIGNsb3Nlc3QgSlNEb2MgY29tbWVudCB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY29tbWVudCA9IGZpbmRDbG9zZXN0Q29tbWVudChjb21tZW50cywgbm9kZVN0YXJ0KTtcbiAqIGBgYFxuICovXG5jb25zdCBmaW5kQ2xvc2VzdENvbW1lbnQgPSAoXG4gIGNvbW1lbnRzOiBDb21tZW50W10sXG4gIG5vZGVTdGFydDogbnVtYmVyLFxuKTogQ29tbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGxldCBjbG9zZXN0OiBDb21tZW50IHwgdW5kZWZpbmVkID0gdm9pZCAwO1xuICBsZXQgY2xvc2VzdEVuZCA9IC0xO1xuXG4gIGZvciAoY29uc3QgY29tbWVudCBvZiBjb21tZW50cykge1xuICAgIGNvbnN0IGNvbW1lbnRFbmQgPSBnZXRDb21tZW50RW5kKGNvbW1lbnQpO1xuICAgIGNvbnN0IHNob3VsZENvbnNpZGVyID0gaXNKc2RvY0NvbW1lbnQoY29tbWVudCkgJiYgY29tbWVudEVuZCAhPT0gdm9pZCAwO1xuXG4gICAgaWYgKHNob3VsZENvbnNpZGVyICYmIGNvbW1lbnRFbmQgPD0gbm9kZVN0YXJ0ICYmIGNvbW1lbnRFbmQgPiBjbG9zZXN0RW5kKSB7XG4gICAgICBjbG9zZXN0ID0gY29tbWVudDtcbiAgICAgIGNsb3Nlc3RFbmQgPSBjb21tZW50RW5kO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbG9zZXN0O1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBjbG9zZXN0IEpTRG9jIGNvbW1lbnQgZm9yIGEgbm9kZS5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZSBjb2RlIHdyYXBwZXIuXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUaGUgY2xvc2VzdCBKU0RvYyBjb21tZW50IHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb21tZW50ID0gZ2V0SnNkb2NDb21tZW50KHNvdXJjZUNvZGUsIG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldEpzZG9jQ29tbWVudCA9IChcbiAgc291cmNlQ29kZTogUnVsZS5SdWxlQ29udGV4dFtcInNvdXJjZUNvZGVcIl0sXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IENvbW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBjb21tZW50cyA9IHNvdXJjZUNvZGUuZ2V0QWxsQ29tbWVudHMoKTtcbiAgY29uc3Qgbm9kZVN0YXJ0ID0gbm9kZS5yYW5nZT8uWzBdO1xuXG4gIGlmIChjb21tZW50cy5sZW5ndGggPT09IDAgfHwgdHlwZW9mIG5vZGVTdGFydCAhPT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4gZmluZENsb3Nlc3RDb21tZW50KGNvbW1lbnRzLCBub2RlU3RhcnQpO1xufTtcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgZnVsbCB0ZXh0IGZvciBhIGNvbW1lbnQgcmFuZ2UuXG4gKiBAcGFyYW0gc291cmNlQ29kZSBTb3VyY2UgY29kZSB3cmFwcGVyLlxuICogQHBhcmFtIGNvbW1lbnQgQ29tbWVudCB0byByZWFkLlxuICogQHJldHVybnMgQ29tbWVudCBjb250ZW50cyBmcm9tIHRoZSBzb3VyY2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9IGdldENvbW1lbnRUZXh0KHNvdXJjZUNvZGUsIGNvbW1lbnQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldENvbW1lbnRUZXh0ID0gKFxuICBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0W1wic291cmNlQ29kZVwiXSxcbiAgY29tbWVudDogQ29tbWVudCxcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHN0YXJ0ID0gY29tbWVudC5yYW5nZT8uWzBdO1xuICBjb25zdCBlbmQgPSBjb21tZW50LnJhbmdlPy5bMV07XG5cbiAgaWYgKHR5cGVvZiBzdGFydCAhPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgZW5kICE9PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICByZXR1cm4gc291cmNlQ29kZS50ZXh0LnNsaWNlKHN0YXJ0LCBlbmQpO1xufTtcblxuLyoqXG4gKiBHZXRzIGdldENvbW1lbnRMaW5lcy5cbiAqIEBwYXJhbSBjb21tZW50VGV4dCBJbnB1dCBjb21tZW50VGV4dCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0Q29tbWVudExpbmVzKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0Q29tbWVudExpbmVzID0gKGNvbW1lbnRUZXh0OiBzdHJpbmcpOiBDb21tZW50TGluZVtdID0+IHtcbiAgY29uc3QgbGluZXMgPSBjb21tZW50VGV4dC5zcGxpdCgvXFxyP1xcbi91KTtcbiAgY29uc3QgcmVzdWx0czogQ29tbWVudExpbmVbXSA9IFtdO1xuICBsZXQgb2Zmc2V0ID0gMDtcblxuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBjb25zdCBsaW5lRW5kID0gb2Zmc2V0ICsgbGluZS5sZW5ndGg7XG4gICAgY29uc3QgbmV4dFNsaWNlID0gY29tbWVudFRleHQuc2xpY2UobGluZUVuZCwgbGluZUVuZCArIDIpO1xuICAgIGNvbnN0IGxpbmVCcmVha0xlbmd0aCA9IG5leHRTbGljZS5zdGFydHNXaXRoKFwiXFxyXFxuXCIpXG4gICAgICA/IDJcbiAgICAgIDogbmV4dFNsaWNlLnN0YXJ0c1dpdGgoXCJcXG5cIilcbiAgICAgICAgPyAxXG4gICAgICAgIDogMDtcblxuICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICBlbmQ6IGxpbmVFbmQsXG4gICAgICBsaW5lQnJlYWtMZW5ndGgsXG4gICAgICBzdGFydDogb2Zmc2V0LFxuICAgICAgdGV4dDogbGluZSxcbiAgICB9KTtcblxuICAgIG9mZnNldCA9IGxpbmVFbmQgKyBsaW5lQnJlYWtMZW5ndGg7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgcmVtb3ZhbCByYW5nZSBmb3IgdGhlIHNwZWNpZmllZCBjb21tZW50IGxpbmUuXG4gKiBAcGFyYW0gY29tbWVudFN0YXJ0IENvbW1lbnQgc3RhcnQgb2Zmc2V0IGluIHRoZSBzb3VyY2UuXG4gKiBAcGFyYW0gY29tbWVudFRleHQgRnVsbCBjb21tZW50IHRleHQuXG4gKiBAcGFyYW0gbGluZSBMaW5lIG1ldGFkYXRhIGZvciB0aGUgY29tbWVudC5cbiAqIEByZXR1cm5zIFRoZSByYW5nZSB0byByZW1vdmUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmFuZ2UgPSBidWlsZFJlbW92YWxSYW5nZSgwLCBjb21tZW50VGV4dCwgbGluZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgYnVpbGRSZW1vdmFsUmFuZ2UgPSAoXG4gIGNvbW1lbnRTdGFydDogbnVtYmVyLFxuICBjb21tZW50VGV4dDogc3RyaW5nLFxuICBsaW5lOiBDb21tZW50TGluZSxcbik6IFtudW1iZXIsIG51bWJlcl0gPT4ge1xuICBpZiAobGluZS5saW5lQnJlYWtMZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQsXG4gICAgICBjb21tZW50U3RhcnQgKyBsaW5lLmVuZCArIGxpbmUubGluZUJyZWFrTGVuZ3RoLFxuICAgIF07XG4gIH1cblxuICBpZiAobGluZS5zdGFydCA+IDApIHtcbiAgICBjb25zdCBwcmV2aW91c0NoYXIgPSBjb21tZW50VGV4dFtsaW5lLnN0YXJ0IC0gMV07XG4gICAgY29uc3QgcHJldmlvdXNJc0xpbmVCcmVhayA9IHByZXZpb3VzQ2hhciA9PT0gXCJcXG5cIjtcblxuICAgIGlmIChwcmV2aW91c0lzTGluZUJyZWFrKSB7XG4gICAgICBjb25zdCBsaW5lQnJlYWtMZW5ndGggPVxuICAgICAgICBsaW5lLnN0YXJ0ID4gMSAmJiBjb21tZW50VGV4dFtsaW5lLnN0YXJ0IC0gMl0gPT09IFwiXFxyXCIgPyAyIDogMTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQgLSBsaW5lQnJlYWtMZW5ndGgsXG4gICAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuZW5kLFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2NvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQsIGNvbW1lbnRTdGFydCArIGxpbmUuZW5kXTtcbn07XG5cbmV4cG9ydCB7IGJ1aWxkUmVtb3ZhbFJhbmdlLCBnZXRDb21tZW50TGluZXMsIGdldENvbW1lbnRUZXh0LCBnZXRKc2RvY0NvbW1lbnQgfTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { noInterfaceMemberDocumentationRule } from "./rule";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/docs/no-interface-member-docs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { noInterfaceMemberDocumentationRule } from "./rule";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZG9jcy9uby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgbm9JbnRlcmZhY2VNZW1iZXJEb2N1bWVudGF0aW9uUnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import type { CommentLine, ParameterMemberTag } from "./types";
2
+ /**
3
+ * Parses a `@param` tag line into a member tag when applicable.
4
+ * @param line Comment line metadata.
5
+ * @returns Parsed parameter member tag when present.
6
+ * @example
7
+ * ```typescript
8
+ * const tag = parseParameterTagLine(line);
9
+ * ```
10
+ */
11
+ declare const parseParameterTagLine: (line: CommentLine) => ParameterMemberTag | undefined;
12
+ export { parseParameterTagLine };
13
+ //# sourceMappingURL=parameter-tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-tags.d.ts","sourceRoot":"","sources":["../../../src/docs/no-interface-member-docs/parameter-tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAoG/D;;;;;;;;GAQG;AACH,QAAA,MAAM,qBAAqB,GACzB,MAAM,WAAW,KAChB,kBAAkB,GAAG,SAmBvB,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,101 @@
1
+ /** Extracts the parameter name from an `@param` tag line. */
2
+ const parameterTagPattern = /@param\s+(?:\{[^}]*\}\s+)?(?<name>[^\s-]+)/u;
3
+ /**
4
+ * Defines stripJsdocLine.
5
+ * @param line Input line value.
6
+ * @returns Return value output.
7
+ * @example
8
+ * ```typescript
9
+ * stripJsdocLine();
10
+ * ```
11
+ */
12
+ const stripJsdocLine = (line) => line.replace(/^\s*\/?\**\s?/u, "").trim();
13
+ /**
14
+ * Defines stripDefaultValue.
15
+ * @param rawName Input rawName value.
16
+ * @returns Return value output.
17
+ * @example
18
+ * ```typescript
19
+ * stripDefaultValue();
20
+ * ```
21
+ */
22
+ const stripDefaultValue = (rawName) => {
23
+ const [head = ""] = rawName.split("=");
24
+ return head;
25
+ };
26
+ /**
27
+ * Normalizes normalizeParameterName.
28
+ * @param rawName Input rawName value.
29
+ * @returns Return value output.
30
+ * @example
31
+ * ```typescript
32
+ * normalizeParameterName();
33
+ * ```
34
+ */
35
+ const normalizeParameterName = (rawName) => stripDefaultValue(rawName)
36
+ .replace(/^\[/u, "")
37
+ .replace(/\]$/u, "")
38
+ .replace(/\?$/u, "");
39
+ /**
40
+ * Gets getParameterName.
41
+ * @param content Input content value.
42
+ * @returns Return value output.
43
+ * @example
44
+ * ```typescript
45
+ * getParameterName();
46
+ * ```
47
+ */
48
+ const getParameterName = (content) => {
49
+ if (!content.startsWith("@param")) {
50
+ return void 0;
51
+ }
52
+ const match = parameterTagPattern.exec(content);
53
+ const rawName = match?.groups?.["name"] ?? "";
54
+ const normalized = normalizeParameterName(rawName);
55
+ return normalized.length > 0 ? normalized : void 0;
56
+ };
57
+ /**
58
+ * Extracts member path details from a normalized parameter name.
59
+ * @param normalized Normalized parameter name.
60
+ * @returns Member path details when available.
61
+ * @example
62
+ * ```typescript
63
+ * const member = getMemberName("props.title");
64
+ * ```
65
+ */
66
+ const getMemberName = (normalized) => {
67
+ const dotIndex = normalized.indexOf(".");
68
+ if (dotIndex <= 0) {
69
+ return void 0;
70
+ }
71
+ const baseName = normalized.slice(0, dotIndex);
72
+ const memberPath = normalized.slice(dotIndex + 1).trim();
73
+ return memberPath.length > 0 ? { baseName, memberPath } : void 0;
74
+ };
75
+ /**
76
+ * Parses a `@param` tag line into a member tag when applicable.
77
+ * @param line Comment line metadata.
78
+ * @returns Parsed parameter member tag when present.
79
+ * @example
80
+ * ```typescript
81
+ * const tag = parseParameterTagLine(line);
82
+ * ```
83
+ */
84
+ const parseParameterTagLine = (line) => {
85
+ const content = stripJsdocLine(line.text);
86
+ const normalized = getParameterName(content);
87
+ if (normalized === void 0) {
88
+ return void 0;
89
+ }
90
+ const member = getMemberName(normalized);
91
+ if (member === void 0) {
92
+ return void 0;
93
+ }
94
+ return {
95
+ baseName: member.baseName,
96
+ fullName: normalized,
97
+ line,
98
+ };
99
+ };
100
+ export { parseParameterTagLine };
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXRhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZG9jcy9uby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MvcGFyYW1ldGVyLXRhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsNkRBQTZEO0FBQzdELE1BQU0sbUJBQW1CLEdBQUcsNkNBQTZDLENBQUM7QUFFMUU7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFLENBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFFNUM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUU7SUFDcEQsTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZDLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHNCQUFzQixHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUUsQ0FDekQsaUJBQWlCLENBQUMsT0FBTyxDQUFDO0tBQ3ZCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO0tBQ25CLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO0tBQ25CLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFFekI7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsT0FBZSxFQUFzQixFQUFFO0lBQy9ELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUMsTUFBTSxVQUFVLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbkQsT0FBTyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQ3BCLFVBQWtCLEVBU2QsRUFBRTtJQUNOLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFekMsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEIsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0MsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFekQsT0FBTyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25FLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixJQUFpQixFQUNlLEVBQUU7SUFDbEMsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU3QyxJQUFJLFVBQVUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV6QyxJQUFJLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU87UUFDTCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDekIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsSUFBSTtLQUNMLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tbWVudExpbmUsIFBhcmFtZXRlck1lbWJlclRhZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKiBFeHRyYWN0cyB0aGUgcGFyYW1ldGVyIG5hbWUgZnJvbSBhbiBgQHBhcmFtYCB0YWcgbGluZS4gKi9cbmNvbnN0IHBhcmFtZXRlclRhZ1BhdHRlcm4gPSAvQHBhcmFtXFxzKyg/Olxce1tefV0qXFx9XFxzKyk/KD88bmFtZT5bXlxccy1dKykvdTtcblxuLyoqXG4gKiBEZWZpbmVzIHN0cmlwSnNkb2NMaW5lLlxuICogQHBhcmFtIGxpbmUgSW5wdXQgbGluZSB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogc3RyaXBKc2RvY0xpbmUoKTtcbiAqIGBgYFxuICovXG5jb25zdCBzdHJpcEpzZG9jTGluZSA9IChsaW5lOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgbGluZS5yZXBsYWNlKC9eXFxzKlxcLz9cXCoqXFxzPy91LCBcIlwiKS50cmltKCk7XG5cbi8qKlxuICogRGVmaW5lcyBzdHJpcERlZmF1bHRWYWx1ZS5cbiAqIEBwYXJhbSByYXdOYW1lIElucHV0IHJhd05hbWUgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHN0cmlwRGVmYXVsdFZhbHVlKCk7XG4gKiBgYGBcbiAqL1xuY29uc3Qgc3RyaXBEZWZhdWx0VmFsdWUgPSAocmF3TmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgW2hlYWQgPSBcIlwiXSA9IHJhd05hbWUuc3BsaXQoXCI9XCIpO1xuXG4gIHJldHVybiBoZWFkO1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIG5vcm1hbGl6ZVBhcmFtZXRlck5hbWUuXG4gKiBAcGFyYW0gcmF3TmFtZSBJbnB1dCByYXdOYW1lIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBub3JtYWxpemVQYXJhbWV0ZXJOYW1lKCk7XG4gKiBgYGBcbiAqL1xuY29uc3Qgbm9ybWFsaXplUGFyYW1ldGVyTmFtZSA9IChyYXdOYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgc3RyaXBEZWZhdWx0VmFsdWUocmF3TmFtZSlcbiAgICAucmVwbGFjZSgvXlxcWy91LCBcIlwiKVxuICAgIC5yZXBsYWNlKC9cXF0kL3UsIFwiXCIpXG4gICAgLnJlcGxhY2UoL1xcPyQvdSwgXCJcIik7XG5cbi8qKlxuICogR2V0cyBnZXRQYXJhbWV0ZXJOYW1lLlxuICogQHBhcmFtIGNvbnRlbnQgSW5wdXQgY29udGVudCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0UGFyYW1ldGVyTmFtZSgpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFBhcmFtZXRlck5hbWUgPSAoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFjb250ZW50LnN0YXJ0c1dpdGgoXCJAcGFyYW1cIikpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgbWF0Y2ggPSBwYXJhbWV0ZXJUYWdQYXR0ZXJuLmV4ZWMoY29udGVudCk7XG4gIGNvbnN0IHJhd05hbWUgPSBtYXRjaD8uZ3JvdXBzPy5bXCJuYW1lXCJdID8/IFwiXCI7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVQYXJhbWV0ZXJOYW1lKHJhd05hbWUpO1xuXG4gIHJldHVybiBub3JtYWxpemVkLmxlbmd0aCA+IDAgPyBub3JtYWxpemVkIDogdm9pZCAwO1xufTtcblxuLyoqXG4gKiBFeHRyYWN0cyBtZW1iZXIgcGF0aCBkZXRhaWxzIGZyb20gYSBub3JtYWxpemVkIHBhcmFtZXRlciBuYW1lLlxuICogQHBhcmFtIG5vcm1hbGl6ZWQgTm9ybWFsaXplZCBwYXJhbWV0ZXIgbmFtZS5cbiAqIEByZXR1cm5zIE1lbWJlciBwYXRoIGRldGFpbHMgd2hlbiBhdmFpbGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWVtYmVyID0gZ2V0TWVtYmVyTmFtZShcInByb3BzLnRpdGxlXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldE1lbWJlck5hbWUgPSAoXG4gIG5vcm1hbGl6ZWQ6IHN0cmluZyxcbik6XG4gIHwgdW5kZWZpbmVkXG4gIHwge1xuICAgICAgLyoqIEJhc2VOYW1lIGZpZWxkIHZhbHVlLiAqL1xuICAgICAgYmFzZU5hbWU6IHN0cmluZztcblxuICAgICAgLyoqIE1lbWJlclBhdGggZmllbGQgdmFsdWUuICovXG4gICAgICBtZW1iZXJQYXRoOiBzdHJpbmc7XG4gICAgfSA9PiB7XG4gIGNvbnN0IGRvdEluZGV4ID0gbm9ybWFsaXplZC5pbmRleE9mKFwiLlwiKTtcblxuICBpZiAoZG90SW5kZXggPD0gMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBiYXNlTmFtZSA9IG5vcm1hbGl6ZWQuc2xpY2UoMCwgZG90SW5kZXgpO1xuICBjb25zdCBtZW1iZXJQYXRoID0gbm9ybWFsaXplZC5zbGljZShkb3RJbmRleCArIDEpLnRyaW0oKTtcblxuICByZXR1cm4gbWVtYmVyUGF0aC5sZW5ndGggPiAwID8geyBiYXNlTmFtZSwgbWVtYmVyUGF0aCB9IDogdm9pZCAwO1xufTtcblxuLyoqXG4gKiBQYXJzZXMgYSBgQHBhcmFtYCB0YWcgbGluZSBpbnRvIGEgbWVtYmVyIHRhZyB3aGVuIGFwcGxpY2FibGUuXG4gKiBAcGFyYW0gbGluZSBDb21tZW50IGxpbmUgbWV0YWRhdGEuXG4gKiBAcmV0dXJucyBQYXJzZWQgcGFyYW1ldGVyIG1lbWJlciB0YWcgd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHRhZyA9IHBhcnNlUGFyYW1ldGVyVGFnTGluZShsaW5lKTtcbiAqIGBgYFxuICovXG5jb25zdCBwYXJzZVBhcmFtZXRlclRhZ0xpbmUgPSAoXG4gIGxpbmU6IENvbW1lbnRMaW5lLFxuKTogUGFyYW1ldGVyTWVtYmVyVGFnIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgY29udGVudCA9IHN0cmlwSnNkb2NMaW5lKGxpbmUudGV4dCk7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBnZXRQYXJhbWV0ZXJOYW1lKGNvbnRlbnQpO1xuXG4gIGlmIChub3JtYWxpemVkID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgbWVtYmVyID0gZ2V0TWVtYmVyTmFtZShub3JtYWxpemVkKTtcblxuICBpZiAobWVtYmVyID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBiYXNlTmFtZTogbWVtYmVyLmJhc2VOYW1lLFxuICAgIGZ1bGxOYW1lOiBub3JtYWxpemVkLFxuICAgIGxpbmUsXG4gIH07XG59O1xuXG5leHBvcnQgeyBwYXJzZVBhcmFtZXRlclRhZ0xpbmUgfTtcbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import type { Rule } from "eslint";
2
+ import type { TypeAnnotationNode } from "./types";
3
+ /**
4
+ * Builds a lookup of parameter names to type annotations.
5
+ * @param node Function-like node.
6
+ * @returns Lookup of parameter names to annotations.
7
+ * @example
8
+ * ```typescript
9
+ * const lookup = getParameterTypeLookup(node);
10
+ * ```
11
+ */
12
+ declare const getParameterTypeLookup: (node: Rule.Node) => Map<string, TypeAnnotationNode>;
13
+ /**
14
+ * Checks whether a type annotation is a named type reference.
15
+ * @param typeAnnotation Type annotation to inspect.
16
+ * @returns True when the annotation is a named reference.
17
+ * @example
18
+ * ```typescript
19
+ * const ok = isNamedTypeReference(annotation);
20
+ * ```
21
+ */
22
+ declare const isNamedTypeReference: (typeAnnotation: TypeAnnotationNode | undefined) => boolean;
23
+ export { getParameterTypeLookup, isNamedTypeReference };
24
+ //# sourceMappingURL=parameter-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-utilities.d.ts","sourceRoot":"","sources":["../../../src/docs/no-interface-member-docs/parameter-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AA0KlD;;;;;;;;GAQG;AACH,QAAA,MAAM,sBAAsB,GAC1B,MAAM,IAAI,CAAC,IAAI,KACd,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAYhC,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,oBAAoB,GACxB,gBAAgB,kBAAkB,GAAG,SAAS,KAC7C,OAAqD,CAAC;AAEzD,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Gets a type annotation node from an identifier.
3
+ * @param node Identifier node to inspect.
4
+ * @returns The type annotation node when present.
5
+ * @example
6
+ * ```typescript
7
+ * const annotation = getTypeAnnotationNode(identifier);
8
+ * ```
9
+ */
10
+ const getTypeAnnotationNode = (node) => node.typeAnnotation?.typeAnnotation;
11
+ /**
12
+ * Defines resolveParameterNode.
13
+ * @param node Input node value.
14
+ * @returns Return value output.
15
+ * @example
16
+ * ```typescript
17
+ * resolveParameterNode();
18
+ * ```
19
+ */
20
+ const resolveParameterNode = (node) => {
21
+ if (node === null || typeof node !== "object") {
22
+ return node;
23
+ }
24
+ const container = node;
25
+ if (container.argument !== void 0) {
26
+ return container.argument;
27
+ }
28
+ if (container.parameter !== void 0) {
29
+ return container.parameter;
30
+ }
31
+ if (container.type === "AssignmentPattern" && container.left !== void 0) {
32
+ return container.left;
33
+ }
34
+ return node;
35
+ };
36
+ /**
37
+ * Gets the parameter identifier for a parameter node.
38
+ * @param node Parameter node to inspect.
39
+ * @returns The identifier node when present.
40
+ * @example
41
+ * ```typescript
42
+ * const identifier = getParameterIdentifier(node);
43
+ * ```
44
+ */
45
+ const getParameterIdentifier = (node) => {
46
+ const resolved = resolveParameterNode(node);
47
+ if (resolved === null || typeof resolved !== "object") {
48
+ return void 0;
49
+ }
50
+ const identifier = resolved;
51
+ const { name } = identifier;
52
+ if (identifier.type !== "Identifier" || typeof name !== "string") {
53
+ return void 0;
54
+ }
55
+ return { ...identifier, name };
56
+ };
57
+ /**
58
+ * Gets parameter info for the given node.
59
+ * @param node Parameter node to inspect.
60
+ * @returns Parameter info when available.
61
+ * @example
62
+ * ```typescript
63
+ * const info = getParameterInfo(node);
64
+ * ```
65
+ */
66
+ const getParameterInfo = (node) => {
67
+ const identifier = getParameterIdentifier(node);
68
+ if (identifier === void 0) {
69
+ return void 0;
70
+ }
71
+ const typeAnnotation = getTypeAnnotationNode(identifier);
72
+ return typeAnnotation === void 0
73
+ ? { name: identifier.name }
74
+ : {
75
+ name: identifier.name,
76
+ typeAnnotation,
77
+ };
78
+ };
79
+ /**
80
+ * Gets getParameters.
81
+ * @param node Input node value.
82
+ * @returns Return value output.
83
+ * @example
84
+ * ```typescript
85
+ * getParameters();
86
+ * ```
87
+ */
88
+ const getParameters = (node) => {
89
+ if (node === null || typeof node !== "object") {
90
+ return [];
91
+ }
92
+ const typedNode = node;
93
+ return Array.isArray(typedNode.params) ? typedNode.params : [];
94
+ };
95
+ /**
96
+ * Builds a lookup of parameter names to type annotations.
97
+ * @param node Function-like node.
98
+ * @returns Lookup of parameter names to annotations.
99
+ * @example
100
+ * ```typescript
101
+ * const lookup = getParameterTypeLookup(node);
102
+ * ```
103
+ */
104
+ const getParameterTypeLookup = (node) => {
105
+ const lookup = new Map();
106
+ for (const parameter of getParameters(node)) {
107
+ const info = getParameterInfo(parameter);
108
+ if (info !== void 0 && info.typeAnnotation !== void 0) {
109
+ lookup.set(info.name, info.typeAnnotation);
110
+ }
111
+ }
112
+ return lookup;
113
+ };
114
+ /**
115
+ * Checks whether a type annotation is a named type reference.
116
+ * @param typeAnnotation Type annotation to inspect.
117
+ * @returns True when the annotation is a named reference.
118
+ * @example
119
+ * ```typescript
120
+ * const ok = isNamedTypeReference(annotation);
121
+ * ```
122
+ */
123
+ const isNamedTypeReference = (typeAnnotation) => typeAnnotation?.type === "TSTypeReference";
124
+ export { getParameterTypeLookup, isNamedTypeReference };
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb2NzL25vLWludGVyZmFjZS1tZW1iZXItZG9jcy9wYXJhbWV0ZXItdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVEQTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0scUJBQXFCLEdBQUcsQ0FDNUIsSUFBb0IsRUFDWSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUM7QUFFekU7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBYSxFQUFXLEVBQUU7SUFDdEQsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQTBCLENBQUM7SUFFN0MsSUFBSSxTQUFTLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxtQkFBbUIsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDeEUsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRyxDQUM3QixJQUFhLEVBQ29CLEVBQUU7SUFDbkMsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFNUMsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RELE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLFFBQTBCLENBQUM7SUFDOUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQztJQUU1QixJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2pFLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sRUFBRSxHQUFHLFVBQVUsRUFBRSxJQUFJLEVBQXlCLENBQUM7QUFDeEQsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBYSxFQUE2QixFQUFFO0lBQ3BFLE1BQU0sVUFBVSxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWhELElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFekQsT0FBTyxjQUFjLEtBQUssS0FBSyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFO1FBQzNCLENBQUMsQ0FBQztZQUNFLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtZQUNyQixjQUFjO1NBQ2YsQ0FBQztBQUNSLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFhLEVBQWEsRUFBRTtJQUNqRCxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBd0IsQ0FBQztJQUUzQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDakUsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHNCQUFzQixHQUFHLENBQzdCLElBQWUsRUFDa0IsRUFBRTtJQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztJQUVyRCxLQUFLLE1BQU0sU0FBUyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXpDLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQzNCLGNBQThDLEVBQ3JDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxLQUFLLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgdHlwZSB7IFR5cGVBbm5vdGF0aW9uTm9kZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBGdW5jdGlvbkxpa2VOb2RlIHtcbiAgLyoqIFBhcmFtcyBoZWxwZXIgdmFsdWUuICovXG4gIHBhcmFtcz86IHVua25vd25bXTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIElkZW50aWZpZXJOb2RlIHtcbiAgLyoqIE5hbWUgaGVscGVyIHZhbHVlLiAqL1xuICBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBUeXBlIGhlbHBlciB2YWx1ZS4gKi9cbiAgdHlwZT86IHN0cmluZztcblxuICAvKiogVHlwZUFubm90YXRpb24gaGVscGVyIHZhbHVlLiAqL1xuICB0eXBlQW5ub3RhdGlvbj86IHtcbiAgICAvKiogVHlwZUFubm90YXRpb24gaGVscGVyIHZhbHVlLiAqL1xuICAgIHR5cGVBbm5vdGF0aW9uPzogVHlwZUFubm90YXRpb25Ob2RlO1xuICB9O1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgTmFtZWRJZGVudGlmaWVyTm9kZSBleHRlbmRzIElkZW50aWZpZXJOb2RlIHtcbiAgLyoqIE5hbWUgZmllbGQgdmFsdWUuICovXG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFBhcmFtZXRlckNvbnRhaW5lciB7XG4gIC8qKiBBcmd1bWVudCBoZWxwZXIgdmFsdWUuICovXG4gIGFyZ3VtZW50PzogdW5rbm93bjtcblxuICAvKiogTGVmdCBoZWxwZXIgdmFsdWUuICovXG4gIGxlZnQ/OiB1bmtub3duO1xuXG4gIC8qKiBQYXJhbWV0ZXIgaGVscGVyIHZhbHVlLiAqL1xuICBwYXJhbWV0ZXI/OiB1bmtub3duO1xuXG4gIC8qKiBUeXBlIGhlbHBlciB2YWx1ZS4gKi9cbiAgdHlwZT86IHN0cmluZztcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFBhcmFtZXRlckluZm8ge1xuICAvKiogTmFtZSBmaWVsZCB2YWx1ZS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBUeXBlQW5ub3RhdGlvbiBoZWxwZXIgdmFsdWUuICovXG4gIHR5cGVBbm5vdGF0aW9uPzogVHlwZUFubm90YXRpb25Ob2RlO1xufVxuXG4vKipcbiAqIEdldHMgYSB0eXBlIGFubm90YXRpb24gbm9kZSBmcm9tIGFuIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gbm9kZSBJZGVudGlmaWVyIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRoZSB0eXBlIGFubm90YXRpb24gbm9kZSB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYW5ub3RhdGlvbiA9IGdldFR5cGVBbm5vdGF0aW9uTm9kZShpZGVudGlmaWVyKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRUeXBlQW5ub3RhdGlvbk5vZGUgPSAoXG4gIG5vZGU6IElkZW50aWZpZXJOb2RlLFxuKTogVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkID0+IG5vZGUudHlwZUFubm90YXRpb24/LnR5cGVBbm5vdGF0aW9uO1xuXG4vKipcbiAqIERlZmluZXMgcmVzb2x2ZVBhcmFtZXRlck5vZGUuXG4gKiBAcGFyYW0gbm9kZSBJbnB1dCBub2RlIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXNvbHZlUGFyYW1ldGVyTm9kZSgpO1xuICogYGBgXG4gKi9cbmNvbnN0IHJlc29sdmVQYXJhbWV0ZXJOb2RlID0gKG5vZGU6IHVua25vd24pOiB1bmtub3duID0+IHtcbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgdHlwZW9mIG5vZGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IG5vZGUgYXMgUGFyYW1ldGVyQ29udGFpbmVyO1xuXG4gIGlmIChjb250YWluZXIuYXJndW1lbnQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBjb250YWluZXIuYXJndW1lbnQ7XG4gIH1cblxuICBpZiAoY29udGFpbmVyLnBhcmFtZXRlciAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5wYXJhbWV0ZXI7XG4gIH1cblxuICBpZiAoY29udGFpbmVyLnR5cGUgPT09IFwiQXNzaWdubWVudFBhdHRlcm5cIiAmJiBjb250YWluZXIubGVmdCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5sZWZ0O1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHBhcmFtZXRlciBpZGVudGlmaWVyIGZvciBhIHBhcmFtZXRlciBub2RlLlxuICogQHBhcmFtIG5vZGUgUGFyYW1ldGVyIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRoZSBpZGVudGlmaWVyIG5vZGUgd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGlkZW50aWZpZXIgPSBnZXRQYXJhbWV0ZXJJZGVudGlmaWVyKG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFBhcmFtZXRlcklkZW50aWZpZXIgPSAoXG4gIG5vZGU6IHVua25vd24sXG4pOiBOYW1lZElkZW50aWZpZXJOb2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlUGFyYW1ldGVyTm9kZShub2RlKTtcblxuICBpZiAocmVzb2x2ZWQgPT09IG51bGwgfHwgdHlwZW9mIHJlc29sdmVkICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGlkZW50aWZpZXIgPSByZXNvbHZlZCBhcyBJZGVudGlmaWVyTm9kZTtcbiAgY29uc3QgeyBuYW1lIH0gPSBpZGVudGlmaWVyO1xuXG4gIGlmIChpZGVudGlmaWVyLnR5cGUgIT09IFwiSWRlbnRpZmllclwiIHx8IHR5cGVvZiBuYW1lICE9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiB7IC4uLmlkZW50aWZpZXIsIG5hbWUgfSBhcyBOYW1lZElkZW50aWZpZXJOb2RlO1xufTtcblxuLyoqXG4gKiBHZXRzIHBhcmFtZXRlciBpbmZvIGZvciB0aGUgZ2l2ZW4gbm9kZS5cbiAqIEBwYXJhbSBub2RlIFBhcmFtZXRlciBub2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBQYXJhbWV0ZXIgaW5mbyB3aGVuIGF2YWlsYWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpbmZvID0gZ2V0UGFyYW1ldGVySW5mbyhub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRQYXJhbWV0ZXJJbmZvID0gKG5vZGU6IHVua25vd24pOiBQYXJhbWV0ZXJJbmZvIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgaWRlbnRpZmllciA9IGdldFBhcmFtZXRlcklkZW50aWZpZXIobm9kZSk7XG5cbiAgaWYgKGlkZW50aWZpZXIgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCB0eXBlQW5ub3RhdGlvbiA9IGdldFR5cGVBbm5vdGF0aW9uTm9kZShpZGVudGlmaWVyKTtcblxuICByZXR1cm4gdHlwZUFubm90YXRpb24gPT09IHZvaWQgMFxuICAgID8geyBuYW1lOiBpZGVudGlmaWVyLm5hbWUgfVxuICAgIDoge1xuICAgICAgICBuYW1lOiBpZGVudGlmaWVyLm5hbWUsXG4gICAgICAgIHR5cGVBbm5vdGF0aW9uLFxuICAgICAgfTtcbn07XG5cbi8qKlxuICogR2V0cyBnZXRQYXJhbWV0ZXJzLlxuICogQHBhcmFtIG5vZGUgSW5wdXQgbm9kZSB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0UGFyYW1ldGVycygpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFBhcmFtZXRlcnMgPSAobm9kZTogdW5rbm93bik6IHVua25vd25bXSA9PiB7XG4gIGlmIChub2RlID09PSBudWxsIHx8IHR5cGVvZiBub2RlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgdHlwZWROb2RlID0gbm9kZSBhcyBGdW5jdGlvbkxpa2VOb2RlO1xuXG4gIHJldHVybiBBcnJheS5pc0FycmF5KHR5cGVkTm9kZS5wYXJhbXMpID8gdHlwZWROb2RlLnBhcmFtcyA6IFtdO1xufTtcblxuLyoqXG4gKiBCdWlsZHMgYSBsb29rdXAgb2YgcGFyYW1ldGVyIG5hbWVzIHRvIHR5cGUgYW5ub3RhdGlvbnMuXG4gKiBAcGFyYW0gbm9kZSBGdW5jdGlvbi1saWtlIG5vZGUuXG4gKiBAcmV0dXJucyBMb29rdXAgb2YgcGFyYW1ldGVyIG5hbWVzIHRvIGFubm90YXRpb25zLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGxvb2t1cCA9IGdldFBhcmFtZXRlclR5cGVMb29rdXAobm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UGFyYW1ldGVyVHlwZUxvb2t1cCA9IChcbiAgbm9kZTogUnVsZS5Ob2RlLFxuKTogTWFwPHN0cmluZywgVHlwZUFubm90YXRpb25Ob2RlPiA9PiB7XG4gIGNvbnN0IGxvb2t1cCA9IG5ldyBNYXA8c3RyaW5nLCBUeXBlQW5ub3RhdGlvbk5vZGU+KCk7XG5cbiAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgZ2V0UGFyYW1ldGVycyhub2RlKSkge1xuICAgIGNvbnN0IGluZm8gPSBnZXRQYXJhbWV0ZXJJbmZvKHBhcmFtZXRlcik7XG5cbiAgICBpZiAoaW5mbyAhPT0gdm9pZCAwICYmIGluZm8udHlwZUFubm90YXRpb24gIT09IHZvaWQgMCkge1xuICAgICAgbG9va3VwLnNldChpbmZvLm5hbWUsIGluZm8udHlwZUFubm90YXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsb29rdXA7XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdHlwZSBhbm5vdGF0aW9uIGlzIGEgbmFtZWQgdHlwZSByZWZlcmVuY2UuXG4gKiBAcGFyYW0gdHlwZUFubm90YXRpb24gVHlwZSBhbm5vdGF0aW9uIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGFubm90YXRpb24gaXMgYSBuYW1lZCByZWZlcmVuY2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb2sgPSBpc05hbWVkVHlwZVJlZmVyZW5jZShhbm5vdGF0aW9uKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc05hbWVkVHlwZVJlZmVyZW5jZSA9IChcbiAgdHlwZUFubm90YXRpb246IFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCxcbik6IGJvb2xlYW4gPT4gdHlwZUFubm90YXRpb24/LnR5cGUgPT09IFwiVFNUeXBlUmVmZXJlbmNlXCI7XG5cbmV4cG9ydCB7IGdldFBhcmFtZXRlclR5cGVMb29rdXAsIGlzTmFtZWRUeXBlUmVmZXJlbmNlIH07XG4iXX0=
@@ -0,0 +1,5 @@
1
+ import type { Rule } from "eslint";
2
+ /** ESLint rule disallowing interface member documentation in `@param` tags. */
3
+ declare const noInterfaceMemberDocumentationRule: Rule.RuleModule;
4
+ export { noInterfaceMemberDocumentationRule };
5
+ //# sourceMappingURL=rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/docs/no-interface-member-docs/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAiPnC,+EAA+E;AAC/E,QAAA,MAAM,kCAAkC,EAAE,IAAI,CAAC,UA8B9C,CAAC;AAEF,OAAO,EAAE,kCAAkC,EAAE,CAAC"}