@api-extractor-tools/eslint-plugin 0.1.0-alpha.0 → 0.1.0-alpha.1
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/ARCHITECTURE.md +201 -0
- package/CHANGELOG.md +24 -0
- package/README.md +306 -10
- package/api-extractor.json +1 -0
- package/dist/configs/recommended.d.ts +1 -1
- package/dist/configs/recommended.d.ts.map +1 -1
- package/dist/configs/recommended.js +7 -1
- package/dist/configs/recommended.js.map +1 -1
- package/dist/index.d.ts +9 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -15
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +28 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +41 -0
- package/dist/node.js.map +1 -0
- package/dist/rules/extra-release-tag.d.ts +24 -0
- package/dist/rules/extra-release-tag.d.ts.map +1 -0
- package/dist/rules/extra-release-tag.js +141 -0
- package/dist/rules/extra-release-tag.js.map +1 -0
- package/dist/rules/forgotten-export.d.ts +24 -0
- package/dist/rules/forgotten-export.d.ts.map +1 -0
- package/dist/rules/forgotten-export.js +212 -0
- package/dist/rules/forgotten-export.js.map +1 -0
- package/dist/rules/incompatible-release-tags.d.ts +25 -0
- package/dist/rules/incompatible-release-tags.d.ts.map +1 -0
- package/dist/rules/incompatible-release-tags.js +237 -0
- package/dist/rules/incompatible-release-tags.js.map +1 -0
- package/dist/rules/index.d.ts +2 -6
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +13 -1
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/missing-release-tag.d.ts +4 -0
- package/dist/rules/missing-release-tag.d.ts.map +1 -1
- package/dist/rules/missing-release-tag.js +14 -21
- package/dist/rules/missing-release-tag.js.map +1 -1
- package/dist/rules/override-keyword.d.ts +4 -0
- package/dist/rules/override-keyword.d.ts.map +1 -1
- package/dist/rules/override-keyword.js +9 -11
- package/dist/rules/override-keyword.js.map +1 -1
- package/dist/rules/package-documentation.d.ts +1 -1
- package/dist/rules/package-documentation.d.ts.map +1 -1
- package/dist/rules/package-documentation.js +7 -28
- package/dist/rules/package-documentation.js.map +1 -1
- package/dist/rules/public-on-non-exported.d.ts +24 -0
- package/dist/rules/public-on-non-exported.d.ts.map +1 -0
- package/dist/rules/public-on-non-exported.js +191 -0
- package/dist/rules/public-on-non-exported.js.map +1 -0
- package/dist/rules/public-on-private-member.d.ts +24 -0
- package/dist/rules/public-on-private-member.d.ts.map +1 -0
- package/dist/rules/public-on-private-member.js +111 -0
- package/dist/rules/public-on-private-member.js.map +1 -0
- package/dist/rules/valid-enum-type.d.ts +17 -0
- package/dist/rules/valid-enum-type.d.ts.map +1 -0
- package/dist/rules/valid-enum-type.js +206 -0
- package/dist/rules/valid-enum-type.js.map +1 -0
- package/dist/types.d.ts +63 -35
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/tsdoc-parser.d.ts +35 -0
- package/dist/utils/tsdoc-parser.d.ts.map +1 -1
- package/dist/utils/tsdoc-parser.js +40 -0
- package/dist/utils/tsdoc-parser.js.map +1 -1
- package/docs/rules/valid-enum-type.md +153 -0
- package/package.json +22 -8
- package/src/configs/recommended.ts +7 -1
- package/src/index.ts +21 -15
- package/src/node.ts +50 -0
- package/src/rules/extra-release-tag.ts +201 -0
- package/src/rules/forgotten-export.ts +274 -0
- package/src/rules/incompatible-release-tags.ts +331 -0
- package/src/rules/index.ts +13 -1
- package/src/rules/missing-release-tag.ts +11 -26
- package/src/rules/override-keyword.ts +6 -8
- package/src/rules/package-documentation.ts +5 -31
- package/src/rules/public-on-non-exported.ts +265 -0
- package/src/rules/public-on-private-member.ts +157 -0
- package/src/rules/valid-enum-type.ts +252 -0
- package/src/types.ts +60 -17
- package/src/utils/config-loader.ts +1 -0
- package/src/utils/entry-point.ts +1 -0
- package/src/utils/tsdoc-parser.ts +67 -0
- package/temp/eslint-plugin.api.md +96 -47
- package/test/index.test.ts +1 -0
- package/test/rules/extra-release-tag.test.ts +276 -0
- package/test/rules/forgotten-export.test.ts +190 -0
- package/test/rules/incompatible-release-tags.test.ts +340 -0
- package/test/rules/missing-release-tag.test.ts +2 -1
- package/test/rules/override-keyword.test.ts +2 -1
- package/test/rules/package-documentation.test.ts +8 -6
- package/test/rules/public-on-non-exported.test.ts +201 -0
- package/test/rules/public-on-private-member.test.ts +207 -0
- package/test/rules/valid-enum-type.test.ts +409 -0
- package/test/types.test-d.ts +20 -0
- package/test/utils/config-loader.test.ts +1 -0
- package/test/utils/tsdoc-parser.test.ts +117 -9
- package/tsconfig.json +1 -0
- package/vitest.config.mts +1 -0
- package/dist/utils/index.d.ts +0 -8
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -21
- package/dist/utils/index.js.map +0 -1
- package/src/utils/index.ts +0 -17
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
extractReleaseTag,
|
|
5
5
|
hasOverrideTag,
|
|
6
6
|
hasPackageDocumentation,
|
|
7
|
+
extractEnumType,
|
|
7
8
|
} from '../../src/utils/tsdoc-parser'
|
|
8
9
|
|
|
9
10
|
describe('tsdoc-parser', () => {
|
|
@@ -33,7 +34,7 @@ describe('tsdoc-parser', () => {
|
|
|
33
34
|
* @public
|
|
34
35
|
*/`
|
|
35
36
|
const result = parseTSDocComment(comment)
|
|
36
|
-
const tag = extractReleaseTag(result.docComment
|
|
37
|
+
const tag = extractReleaseTag(result.docComment)
|
|
37
38
|
expect(tag).toBe('public')
|
|
38
39
|
})
|
|
39
40
|
|
|
@@ -42,7 +43,7 @@ describe('tsdoc-parser', () => {
|
|
|
42
43
|
* @beta
|
|
43
44
|
*/`
|
|
44
45
|
const result = parseTSDocComment(comment)
|
|
45
|
-
const tag = extractReleaseTag(result.docComment
|
|
46
|
+
const tag = extractReleaseTag(result.docComment)
|
|
46
47
|
expect(tag).toBe('beta')
|
|
47
48
|
})
|
|
48
49
|
|
|
@@ -51,7 +52,7 @@ describe('tsdoc-parser', () => {
|
|
|
51
52
|
* @alpha
|
|
52
53
|
*/`
|
|
53
54
|
const result = parseTSDocComment(comment)
|
|
54
|
-
const tag = extractReleaseTag(result.docComment
|
|
55
|
+
const tag = extractReleaseTag(result.docComment)
|
|
55
56
|
expect(tag).toBe('alpha')
|
|
56
57
|
})
|
|
57
58
|
|
|
@@ -60,7 +61,7 @@ describe('tsdoc-parser', () => {
|
|
|
60
61
|
* @internal
|
|
61
62
|
*/`
|
|
62
63
|
const result = parseTSDocComment(comment)
|
|
63
|
-
const tag = extractReleaseTag(result.docComment
|
|
64
|
+
const tag = extractReleaseTag(result.docComment)
|
|
64
65
|
expect(tag).toBe('internal')
|
|
65
66
|
})
|
|
66
67
|
|
|
@@ -69,7 +70,7 @@ describe('tsdoc-parser', () => {
|
|
|
69
70
|
* Just a description.
|
|
70
71
|
*/`
|
|
71
72
|
const result = parseTSDocComment(comment)
|
|
72
|
-
const tag = extractReleaseTag(result.docComment
|
|
73
|
+
const tag = extractReleaseTag(result.docComment)
|
|
73
74
|
expect(tag).toBeUndefined()
|
|
74
75
|
})
|
|
75
76
|
})
|
|
@@ -80,7 +81,7 @@ describe('tsdoc-parser', () => {
|
|
|
80
81
|
* @override
|
|
81
82
|
*/`
|
|
82
83
|
const result = parseTSDocComment(comment)
|
|
83
|
-
expect(hasOverrideTag(result.docComment
|
|
84
|
+
expect(hasOverrideTag(result.docComment)).toBe(true)
|
|
84
85
|
})
|
|
85
86
|
|
|
86
87
|
it('should return false when no @override tag', () => {
|
|
@@ -88,7 +89,7 @@ describe('tsdoc-parser', () => {
|
|
|
88
89
|
* Just a comment.
|
|
89
90
|
*/`
|
|
90
91
|
const result = parseTSDocComment(comment)
|
|
91
|
-
expect(hasOverrideTag(result.docComment
|
|
92
|
+
expect(hasOverrideTag(result.docComment)).toBe(false)
|
|
92
93
|
})
|
|
93
94
|
})
|
|
94
95
|
|
|
@@ -99,7 +100,7 @@ describe('tsdoc-parser', () => {
|
|
|
99
100
|
* @packageDocumentation
|
|
100
101
|
*/`
|
|
101
102
|
const result = parseTSDocComment(comment)
|
|
102
|
-
expect(hasPackageDocumentation(result.docComment
|
|
103
|
+
expect(hasPackageDocumentation(result.docComment)).toBe(true)
|
|
103
104
|
})
|
|
104
105
|
|
|
105
106
|
it('should return false when no @packageDocumentation tag', () => {
|
|
@@ -107,7 +108,114 @@ describe('tsdoc-parser', () => {
|
|
|
107
108
|
* Just a comment.
|
|
108
109
|
*/`
|
|
109
110
|
const result = parseTSDocComment(comment)
|
|
110
|
-
expect(hasPackageDocumentation(result.docComment
|
|
111
|
+
expect(hasPackageDocumentation(result.docComment)).toBe(false)
|
|
112
|
+
})
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
describe('extractEnumType', () => {
|
|
116
|
+
it('should extract @enumType open', () => {
|
|
117
|
+
const comment = `/**
|
|
118
|
+
* @enumType open
|
|
119
|
+
*/`
|
|
120
|
+
const result = extractEnumType(comment)
|
|
121
|
+
expect(result.found).toBe(true)
|
|
122
|
+
expect(result.count).toBe(1)
|
|
123
|
+
expect(result.value).toBe('open')
|
|
124
|
+
expect(result.isValid).toBe(true)
|
|
125
|
+
expect(result.rawValue).toBe('open')
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
it('should extract @enumType closed', () => {
|
|
129
|
+
const comment = `/**
|
|
130
|
+
* @enumType closed
|
|
131
|
+
*/`
|
|
132
|
+
const result = extractEnumType(comment)
|
|
133
|
+
expect(result.found).toBe(true)
|
|
134
|
+
expect(result.count).toBe(1)
|
|
135
|
+
expect(result.value).toBe('closed')
|
|
136
|
+
expect(result.isValid).toBe(true)
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
it('should handle case-insensitive values (Open)', () => {
|
|
140
|
+
const comment = `/**
|
|
141
|
+
* @enumType Open
|
|
142
|
+
*/`
|
|
143
|
+
const result = extractEnumType(comment)
|
|
144
|
+
expect(result.found).toBe(true)
|
|
145
|
+
expect(result.value).toBe('open')
|
|
146
|
+
expect(result.isValid).toBe(true)
|
|
147
|
+
expect(result.rawValue).toBe('Open')
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
it('should handle case-insensitive values (CLOSED)', () => {
|
|
151
|
+
const comment = `/**
|
|
152
|
+
* @enumType CLOSED
|
|
153
|
+
*/`
|
|
154
|
+
const result = extractEnumType(comment)
|
|
155
|
+
expect(result.found).toBe(true)
|
|
156
|
+
expect(result.value).toBe('closed')
|
|
157
|
+
expect(result.isValid).toBe(true)
|
|
158
|
+
expect(result.rawValue).toBe('CLOSED')
|
|
159
|
+
})
|
|
160
|
+
|
|
161
|
+
it('should detect invalid value', () => {
|
|
162
|
+
const comment = `/**
|
|
163
|
+
* @enumType foo
|
|
164
|
+
*/`
|
|
165
|
+
const result = extractEnumType(comment)
|
|
166
|
+
expect(result.found).toBe(true)
|
|
167
|
+
expect(result.count).toBe(1)
|
|
168
|
+
expect(result.value).toBe('foo')
|
|
169
|
+
expect(result.isValid).toBe(false)
|
|
170
|
+
expect(result.rawValue).toBe('foo')
|
|
171
|
+
})
|
|
172
|
+
|
|
173
|
+
it('should detect missing value', () => {
|
|
174
|
+
const comment = `/**
|
|
175
|
+
* @enumType
|
|
176
|
+
* @public
|
|
177
|
+
*/`
|
|
178
|
+
const result = extractEnumType(comment)
|
|
179
|
+
expect(result.found).toBe(true)
|
|
180
|
+
expect(result.count).toBe(1)
|
|
181
|
+
expect(result.rawValue).toBeUndefined()
|
|
182
|
+
expect(result.isValid).toBe(false)
|
|
183
|
+
})
|
|
184
|
+
|
|
185
|
+
it('should detect multiple @enumType tags', () => {
|
|
186
|
+
const comment = `/**
|
|
187
|
+
* @enumType open
|
|
188
|
+
* @enumType closed
|
|
189
|
+
*/`
|
|
190
|
+
const result = extractEnumType(comment)
|
|
191
|
+
expect(result.found).toBe(true)
|
|
192
|
+
expect(result.count).toBe(2)
|
|
193
|
+
// First value is captured
|
|
194
|
+
expect(result.value).toBe('open')
|
|
195
|
+
})
|
|
196
|
+
|
|
197
|
+
it('should return not found when no @enumType tag', () => {
|
|
198
|
+
const comment = `/**
|
|
199
|
+
* Just a comment.
|
|
200
|
+
* @public
|
|
201
|
+
*/`
|
|
202
|
+
const result = extractEnumType(comment)
|
|
203
|
+
expect(result.found).toBe(false)
|
|
204
|
+
expect(result.count).toBe(0)
|
|
205
|
+
expect(result.value).toBeUndefined()
|
|
206
|
+
expect(result.isValid).toBe(false)
|
|
207
|
+
})
|
|
208
|
+
|
|
209
|
+
it('should handle @enumType with other tags', () => {
|
|
210
|
+
const comment = `/**
|
|
211
|
+
* Description of the enum.
|
|
212
|
+
* @enumType open
|
|
213
|
+
* @public
|
|
214
|
+
*/`
|
|
215
|
+
const result = extractEnumType(comment)
|
|
216
|
+
expect(result.found).toBe(true)
|
|
217
|
+
expect(result.value).toBe('open')
|
|
218
|
+
expect(result.isValid).toBe(true)
|
|
111
219
|
})
|
|
112
220
|
})
|
|
113
221
|
})
|
package/tsconfig.json
CHANGED
package/vitest.config.mts
CHANGED
package/dist/utils/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utility module exports.
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
export { resolveConfig, getMessageLogLevel } from './config-loader';
|
|
6
|
-
export { parseTSDocComment, extractReleaseTag, hasOverrideTag, hasPackageDocumentation, getLeadingTSDocComment, findAllTSDocComments, } from './tsdoc-parser';
|
|
7
|
-
export { findPackageJson, isEntryPoint } from './entry-point';
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA"}
|
package/dist/utils/index.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Utility module exports.
|
|
4
|
-
* @internal
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.isEntryPoint = exports.findPackageJson = exports.findAllTSDocComments = exports.getLeadingTSDocComment = exports.hasPackageDocumentation = exports.hasOverrideTag = exports.extractReleaseTag = exports.parseTSDocComment = exports.getMessageLogLevel = exports.resolveConfig = void 0;
|
|
8
|
-
var config_loader_1 = require("./config-loader");
|
|
9
|
-
Object.defineProperty(exports, "resolveConfig", { enumerable: true, get: function () { return config_loader_1.resolveConfig; } });
|
|
10
|
-
Object.defineProperty(exports, "getMessageLogLevel", { enumerable: true, get: function () { return config_loader_1.getMessageLogLevel; } });
|
|
11
|
-
var tsdoc_parser_1 = require("./tsdoc-parser");
|
|
12
|
-
Object.defineProperty(exports, "parseTSDocComment", { enumerable: true, get: function () { return tsdoc_parser_1.parseTSDocComment; } });
|
|
13
|
-
Object.defineProperty(exports, "extractReleaseTag", { enumerable: true, get: function () { return tsdoc_parser_1.extractReleaseTag; } });
|
|
14
|
-
Object.defineProperty(exports, "hasOverrideTag", { enumerable: true, get: function () { return tsdoc_parser_1.hasOverrideTag; } });
|
|
15
|
-
Object.defineProperty(exports, "hasPackageDocumentation", { enumerable: true, get: function () { return tsdoc_parser_1.hasPackageDocumentation; } });
|
|
16
|
-
Object.defineProperty(exports, "getLeadingTSDocComment", { enumerable: true, get: function () { return tsdoc_parser_1.getLeadingTSDocComment; } });
|
|
17
|
-
Object.defineProperty(exports, "findAllTSDocComments", { enumerable: true, get: function () { return tsdoc_parser_1.findAllTSDocComments; } });
|
|
18
|
-
var entry_point_1 = require("./entry-point");
|
|
19
|
-
Object.defineProperty(exports, "findPackageJson", { enumerable: true, get: function () { return entry_point_1.findPackageJson; } });
|
|
20
|
-
Object.defineProperty(exports, "isEntryPoint", { enumerable: true, get: function () { return entry_point_1.isEntryPoint; } });
|
|
21
|
-
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iDAAmE;AAA1D,8GAAA,aAAa,OAAA;AAAE,mHAAA,kBAAkB,OAAA;AAE1C,+CAOuB;AANrB,iHAAA,iBAAiB,OAAA;AACjB,iHAAA,iBAAiB,OAAA;AACjB,8GAAA,cAAc,OAAA;AACd,uHAAA,uBAAuB,OAAA;AACvB,sHAAA,sBAAsB,OAAA;AACtB,oHAAA,oBAAoB,OAAA;AAGtB,6CAA6D;AAApD,8GAAA,eAAe,OAAA;AAAE,2GAAA,YAAY,OAAA"}
|
package/src/utils/index.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utility module exports.
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export { resolveConfig, getMessageLogLevel } from './config-loader'
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
parseTSDocComment,
|
|
10
|
-
extractReleaseTag,
|
|
11
|
-
hasOverrideTag,
|
|
12
|
-
hasPackageDocumentation,
|
|
13
|
-
getLeadingTSDocComment,
|
|
14
|
-
findAllTSDocComments,
|
|
15
|
-
} from './tsdoc-parser'
|
|
16
|
-
|
|
17
|
-
export { findPackageJson, isEntryPoint } from './entry-point'
|