@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.
- package/LICENSE +21 -0
- package/README.md +128 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts +16 -0
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +131 -0
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +48 -0
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.js +126 -0
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +40 -0
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +90 -0
- package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts +11 -0
- package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/exports-only-rule.js +218 -0
- package/dist/architecture/consistent-barrel-files/index.d.ts +5 -0
- package/dist/architecture/consistent-barrel-files/index.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/index.js +4 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts +11 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +100 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +40 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +90 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts +65 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +154 -0
- package/dist/architecture/consistent-barrel-files/rule.d.ts +11 -0
- package/dist/architecture/consistent-barrel-files/rule.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/rule.js +58 -0
- package/dist/architecture/consistent-barrel-files/test-helpers.d.ts +141 -0
- package/dist/architecture/consistent-barrel-files/test-helpers.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/test-helpers.js +229 -0
- package/dist/architecture/consistent-barrel-files/types.d.ts +25 -0
- package/dist/architecture/consistent-barrel-files/types.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/types.js +2 -0
- package/dist/architecture/index.d.ts +2 -0
- package/dist/architecture/index.d.ts.map +1 -0
- package/dist/architecture/index.js +2 -0
- package/dist/benchmark-rules.d.ts +83 -0
- package/dist/benchmark-rules.d.ts.map +1 -0
- package/dist/benchmark-rules.js +175 -0
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/codeperfect-plugin.d.ts +46 -0
- package/dist/codeperfect-plugin.d.ts.map +1 -0
- package/dist/codeperfect-plugin.js +29 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +3 -0
- package/dist/core/no-multiple-declarators/index.d.ts +2 -0
- package/dist/core/no-multiple-declarators/index.d.ts.map +1 -0
- package/dist/core/no-multiple-declarators/index.js +2 -0
- package/dist/core/no-multiple-declarators/rule.d.ts +4 -0
- package/dist/core/no-multiple-declarators/rule.d.ts.map +1 -0
- package/dist/core/no-multiple-declarators/rule.js +100 -0
- package/dist/core/prefer-interface-types/index.d.ts +2 -0
- package/dist/core/prefer-interface-types/index.d.ts.map +1 -0
- package/dist/core/prefer-interface-types/index.js +2 -0
- package/dist/core/prefer-interface-types/rule.d.ts +5 -0
- package/dist/core/prefer-interface-types/rule.d.ts.map +1 -0
- package/dist/core/prefer-interface-types/rule.js +145 -0
- package/dist/core/prefer-interface-types/test-helpers.d.ts +110 -0
- package/dist/core/prefer-interface-types/test-helpers.d.ts.map +1 -0
- package/dist/core/prefer-interface-types/test-helpers.js +116 -0
- package/dist/custom-rule-documentation.d.ts +36 -0
- package/dist/custom-rule-documentation.d.ts.map +1 -0
- package/dist/custom-rule-documentation.js +35 -0
- package/dist/custom-rules.d.ts +61 -0
- package/dist/custom-rules.d.ts.map +1 -0
- package/dist/custom-rules.js +70 -0
- package/dist/docs/index.d.ts +4 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +4 -0
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts +89 -0
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.js +129 -0
- package/dist/docs/no-interface-member-docs/comment-utilities.d.ts +48 -0
- package/dist/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/comment-utilities.js +146 -0
- package/dist/docs/no-interface-member-docs/index.d.ts +2 -0
- package/dist/docs/no-interface-member-docs/index.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/index.js +2 -0
- package/dist/docs/no-interface-member-docs/parameter-tags.d.ts +13 -0
- package/dist/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/parameter-tags.js +101 -0
- package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts +24 -0
- package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/parameter-utilities.js +125 -0
- package/dist/docs/no-interface-member-docs/rule.d.ts +5 -0
- package/dist/docs/no-interface-member-docs/rule.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/rule.js +168 -0
- package/dist/docs/no-interface-member-docs/test-helpers.d.ts +103 -0
- package/dist/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/test-helpers.js +157 -0
- package/dist/docs/no-interface-member-docs/types.d.ts +30 -0
- package/dist/docs/no-interface-member-docs/types.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/types.js +2 -0
- package/dist/docs/require-example-language/empty-fence-fixes.d.ts +29 -0
- package/dist/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -0
- package/dist/docs/require-example-language/empty-fence-fixes.js +169 -0
- package/dist/docs/require-example-language/example-utilities.d.ts +70 -0
- package/dist/docs/require-example-language/example-utilities.d.ts.map +1 -0
- package/dist/docs/require-example-language/example-utilities.js +76 -0
- package/dist/docs/require-example-language/examples.d.ts +36 -0
- package/dist/docs/require-example-language/examples.d.ts.map +1 -0
- package/dist/docs/require-example-language/examples.js +181 -0
- package/dist/docs/require-example-language/fixes.d.ts +49 -0
- package/dist/docs/require-example-language/fixes.d.ts.map +1 -0
- package/dist/docs/require-example-language/fixes.js +182 -0
- package/dist/docs/require-example-language/index.d.ts +3 -0
- package/dist/docs/require-example-language/index.d.ts.map +1 -0
- package/dist/docs/require-example-language/index.js +2 -0
- package/dist/docs/require-example-language/reporting.d.ts +60 -0
- package/dist/docs/require-example-language/reporting.d.ts.map +1 -0
- package/dist/docs/require-example-language/reporting.js +145 -0
- package/dist/docs/require-example-language/rule.d.ts +7 -0
- package/dist/docs/require-example-language/rule.d.ts.map +1 -0
- package/dist/docs/require-example-language/rule.js +34 -0
- package/dist/docs/require-example-language/types.d.ts +22 -0
- package/dist/docs/require-example-language/types.d.ts.map +1 -0
- package/dist/docs/require-example-language/types.js +2 -0
- package/dist/docs/single-line-jsdoc/index.d.ts +2 -0
- package/dist/docs/single-line-jsdoc/index.d.ts.map +1 -0
- package/dist/docs/single-line-jsdoc/index.js +2 -0
- package/dist/docs/single-line-jsdoc/rule.d.ts +5 -0
- package/dist/docs/single-line-jsdoc/rule.d.ts.map +1 -0
- package/dist/docs/single-line-jsdoc/rule.js +196 -0
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts +16 -0
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -0
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.js +95 -0
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts +25 -0
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -0
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +140 -0
- package/dist/docs/test-helpers.d.ts +50 -0
- package/dist/docs/test-helpers.d.ts.map +1 -0
- package/dist/docs/test-helpers.js +107 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/presets.d.ts +10 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +50 -0
- package/dist/rules/index.d.ts +5 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +6 -0
- package/dist/testing/aaa/analyzer.d.ts +36 -0
- package/dist/testing/aaa/analyzer.d.ts.map +1 -0
- package/dist/testing/aaa/analyzer.js +490 -0
- package/dist/testing/aaa/index.d.ts +3 -0
- package/dist/testing/aaa/index.d.ts.map +1 -0
- package/dist/testing/aaa/index.js +2 -0
- package/dist/testing/aaa/types.d.ts +31 -0
- package/dist/testing/aaa/types.d.ts.map +1 -0
- package/dist/testing/aaa/types.js +2 -0
- package/dist/testing/assert-actual-expected-names/index.d.ts +2 -0
- package/dist/testing/assert-actual-expected-names/index.d.ts.map +1 -0
- package/dist/testing/assert-actual-expected-names/index.js +2 -0
- package/dist/testing/assert-actual-expected-names/rule.d.ts +4 -0
- package/dist/testing/assert-actual-expected-names/rule.d.ts.map +1 -0
- package/dist/testing/assert-actual-expected-names/rule.js +54 -0
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts +2 -0
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -0
- package/dist/testing/enforce-aaa-phase-purity/index.js +2 -0
- package/dist/testing/enforce-aaa-phase-purity/rule.d.ts +4 -0
- package/dist/testing/enforce-aaa-phase-purity/rule.d.ts.map +1 -0
- package/dist/testing/enforce-aaa-phase-purity/rule.js +110 -0
- package/dist/testing/enforce-aaa-structure/index.d.ts +2 -0
- package/dist/testing/enforce-aaa-structure/index.d.ts.map +1 -0
- package/dist/testing/enforce-aaa-structure/index.js +2 -0
- package/dist/testing/enforce-aaa-structure/rule.d.ts +4 -0
- package/dist/testing/enforce-aaa-structure/rule.d.ts.map +1 -0
- package/dist/testing/enforce-aaa-structure/rule.js +48 -0
- package/dist/testing/index.d.ts +9 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +9 -0
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts +16 -0
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/fix.js +224 -0
- package/dist/testing/prefer-vi-mocked-import/index.d.ts +2 -0
- package/dist/testing/prefer-vi-mocked-import/index.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/index.js +2 -0
- package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts +16 -0
- package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match-bindings.js +52 -0
- package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts +16 -0
- package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match-declarations.js +99 -0
- package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts +66 -0
- package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match-helpers.js +102 -0
- package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts +17 -0
- package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match-imports.js +156 -0
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts +42 -0
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.js +119 -0
- package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts +13 -0
- package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match-walk.js +62 -0
- package/dist/testing/prefer-vi-mocked-import/match.d.ts +15 -0
- package/dist/testing/prefer-vi-mocked-import/match.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match.js +193 -0
- package/dist/testing/prefer-vi-mocked-import/rule.d.ts +5 -0
- package/dist/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/rule.js +32 -0
- package/dist/testing/prefer-vi-mocked-import/types.d.ts +83 -0
- package/dist/testing/prefer-vi-mocked-import/types.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/types.js +2 -0
- package/dist/testing/require-aaa-sections/index.d.ts +2 -0
- package/dist/testing/require-aaa-sections/index.d.ts.map +1 -0
- package/dist/testing/require-aaa-sections/index.js +2 -0
- package/dist/testing/require-aaa-sections/rule.d.ts +4 -0
- package/dist/testing/require-aaa-sections/rule.d.ts.map +1 -0
- package/dist/testing/require-aaa-sections/rule.js +111 -0
- package/dist/testing/require-act-result-capture/index.d.ts +2 -0
- package/dist/testing/require-act-result-capture/index.d.ts.map +1 -0
- package/dist/testing/require-act-result-capture/index.js +2 -0
- package/dist/testing/require-act-result-capture/rule.d.ts +4 -0
- package/dist/testing/require-act-result-capture/rule.d.ts.map +1 -0
- package/dist/testing/require-act-result-capture/rule.js +34 -0
- package/dist/testing/require-test-companion/index.d.ts +3 -0
- package/dist/testing/require-test-companion/index.d.ts.map +1 -0
- package/dist/testing/require-test-companion/index.js +3 -0
- package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts +16 -0
- package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -0
- package/dist/testing/require-test-companion/require-test-companion-listeners.js +145 -0
- package/dist/testing/require-test-companion/require-test-companion-options.d.ts +54 -0
- package/dist/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -0
- package/dist/testing/require-test-companion/require-test-companion-options.js +112 -0
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts +51 -0
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +1 -0
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.js +183 -0
- package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts +28 -0
- package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts.map +1 -0
- package/dist/testing/require-test-companion/require-test-companion-utilities.js +26 -0
- package/dist/testing/require-test-companion/rule.d.ts +5 -0
- package/dist/testing/require-test-companion/rule.d.ts.map +1 -0
- package/dist/testing/require-test-companion/rule.js +57 -0
- package/dist/testing/require-test-companion/types.d.ts +11 -0
- package/dist/testing/require-test-companion/types.d.ts.map +1 -0
- package/dist/testing/require-test-companion/types.js +2 -0
- package/dist/testing/single-act-statement/index.d.ts +2 -0
- package/dist/testing/single-act-statement/index.d.ts.map +1 -0
- package/dist/testing/single-act-statement/index.js +2 -0
- package/dist/testing/single-act-statement/rule.d.ts +4 -0
- package/dist/testing/single-act-statement/rule.d.ts.map +1 -0
- package/dist/testing/single-act-statement/rule.js +33 -0
- 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 @@
|
|
|
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"}
|