eslint-plugin-jsdoc 38.0.6 → 38.1.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/README.md +49 -16
- package/dist/defaultTagOrder.js +2 -1
- package/dist/defaultTagOrder.js.map +1 -1
- package/dist/getDefaultTagStructureForMode.js +3 -1
- package/dist/getDefaultTagStructureForMode.js.map +1 -1
- package/dist/iterateJsdoc.js +4 -4
- package/dist/iterateJsdoc.js.map +1 -1
- package/dist/rules/checkTypes.js +166 -100
- package/dist/rules/checkTypes.js.map +1 -1
- package/dist/tagNames.js +3 -0
- package/dist/tagNames.js.map +1 -1
- package/package.json +1 -1
package/dist/rules/checkTypes.js
CHANGED
|
@@ -12,8 +12,20 @@ var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
|
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
13
|
|
|
14
14
|
const strictNativeTypes = ['undefined', 'null', 'boolean', 'number', 'bigint', 'string', 'symbol', 'object', 'Array', 'Function', 'Date', 'RegExp'];
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Adjusts the parent type node `meta` for generic matches (or type node
|
|
17
|
+
* `type` for `JsdocTypeAny`) and sets the type node `value`.
|
|
18
|
+
*
|
|
19
|
+
* @param {string} type The actual type
|
|
20
|
+
* @param {string} preferred The preferred type
|
|
21
|
+
* @param {boolean} isGenericMatch
|
|
22
|
+
* @param {string} typeNodeName
|
|
23
|
+
* @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node
|
|
24
|
+
* @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode
|
|
25
|
+
* @returns {void}
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
const adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => {
|
|
17
29
|
let ret = preferred;
|
|
18
30
|
|
|
19
31
|
if (isGenericMatch) {
|
|
@@ -35,7 +47,7 @@ const adjustNames = (type, preferred, isGenericMatch, nodeName, node, parentNode
|
|
|
35
47
|
parentNode.meta.brackets = 'angle';
|
|
36
48
|
parentNode.meta.dot = false;
|
|
37
49
|
ret = preferred.slice(0, -2);
|
|
38
|
-
} else if (parentNode.meta.brackets === 'square' && (
|
|
50
|
+
} else if (parentNode.meta.brackets === 'square' && (typeNodeName === '[]' || typeNodeName === 'Array')) {
|
|
39
51
|
parentNode.meta.brackets = 'angle';
|
|
40
52
|
parentNode.meta.dot = false;
|
|
41
53
|
}
|
|
@@ -48,7 +60,7 @@ const adjustNames = (type, preferred, isGenericMatch, nodeName, node, parentNode
|
|
|
48
60
|
node.value = ret.replace(/(?:\.|<>|\.<>|\[\])$/u, ''); // For bare pseudo-types like `<>`
|
|
49
61
|
|
|
50
62
|
if (!ret) {
|
|
51
|
-
node.value =
|
|
63
|
+
node.value = typeNodeName;
|
|
52
64
|
}
|
|
53
65
|
};
|
|
54
66
|
|
|
@@ -64,62 +76,166 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
64
76
|
return utils.tagMightHaveTypePosition(tag.tag);
|
|
65
77
|
});
|
|
66
78
|
const {
|
|
67
|
-
preferredTypes,
|
|
79
|
+
preferredTypes: preferredTypesOriginal,
|
|
68
80
|
structuredTags,
|
|
69
81
|
mode
|
|
70
82
|
} = settings;
|
|
83
|
+
const injectObjectPreferredTypes = !('Object' in preferredTypesOriginal || 'object' in preferredTypesOriginal || 'object.<>' in preferredTypesOriginal || 'Object.<>' in preferredTypesOriginal || 'object<>' in preferredTypesOriginal);
|
|
84
|
+
const preferredTypes = { ...(injectObjectPreferredTypes ? {
|
|
85
|
+
Object: 'object',
|
|
86
|
+
'object.<>': 'Object<>',
|
|
87
|
+
'Object.<>': 'Object<>',
|
|
88
|
+
'object<>': 'Object<>'
|
|
89
|
+
} : {}),
|
|
90
|
+
...preferredTypesOriginal
|
|
91
|
+
};
|
|
71
92
|
const {
|
|
72
93
|
noDefaults,
|
|
73
94
|
unifyParentAndChildTypeChecks,
|
|
74
95
|
exemptTagContexts = []
|
|
75
96
|
} = context.options[0] || {};
|
|
97
|
+
/**
|
|
98
|
+
* Gets information about the preferred type: whether there is a matching
|
|
99
|
+
* preferred type, what the type is, and whether it is a match to a generic.
|
|
100
|
+
*
|
|
101
|
+
* @param {string} _type Not currently in use
|
|
102
|
+
* @param {string} typeNodeName
|
|
103
|
+
* @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode
|
|
104
|
+
* @param {string} property
|
|
105
|
+
* @returns {[hasMatchingPreferredType: boolean, typeName: string, isGenericMatch: boolean]}
|
|
106
|
+
*/
|
|
107
|
+
|
|
108
|
+
const getPreferredTypeInfo = (_type, typeNodeName, parentNode, property) => {
|
|
109
|
+
let hasMatchingPreferredType = false;
|
|
110
|
+
let isGenericMatch = false;
|
|
111
|
+
let typeName = typeNodeName;
|
|
112
|
+
const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';
|
|
113
|
+
|
|
114
|
+
if (unifyParentAndChildTypeChecks || isNameOfGeneric) {
|
|
115
|
+
var _parentNode$meta, _parentNode$meta2;
|
|
116
|
+
|
|
117
|
+
const brackets = parentNode === null || parentNode === void 0 ? void 0 : (_parentNode$meta = parentNode.meta) === null || _parentNode$meta === void 0 ? void 0 : _parentNode$meta.brackets;
|
|
118
|
+
const dot = parentNode === null || parentNode === void 0 ? void 0 : (_parentNode$meta2 = parentNode.meta) === null || _parentNode$meta2 === void 0 ? void 0 : _parentNode$meta2.dot;
|
|
119
|
+
|
|
120
|
+
if (brackets === 'angle') {
|
|
121
|
+
const checkPostFixes = dot ? ['.', '.<>'] : ['<>'];
|
|
122
|
+
isGenericMatch = checkPostFixes.some(checkPostFix => {
|
|
123
|
+
if ((preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[typeNodeName + checkPostFix]) !== undefined) {
|
|
124
|
+
typeName += checkPostFix;
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
76
127
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
let typeName = nodeName;
|
|
81
|
-
|
|
82
|
-
if (Object.keys(preferredTypes).length) {
|
|
83
|
-
const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';
|
|
84
|
-
|
|
85
|
-
if (unifyParentAndChildTypeChecks || isNameOfGeneric) {
|
|
86
|
-
var _parentNode$meta, _parentNode$meta2;
|
|
87
|
-
|
|
88
|
-
const brackets = parentNode === null || parentNode === void 0 ? void 0 : (_parentNode$meta = parentNode.meta) === null || _parentNode$meta === void 0 ? void 0 : _parentNode$meta.brackets;
|
|
89
|
-
const dot = parentNode === null || parentNode === void 0 ? void 0 : (_parentNode$meta2 = parentNode.meta) === null || _parentNode$meta2 === void 0 ? void 0 : _parentNode$meta2.dot;
|
|
90
|
-
|
|
91
|
-
if (brackets === 'angle') {
|
|
92
|
-
const checkPostFixes = dot ? ['.', '.<>'] : ['<>'];
|
|
93
|
-
isGenericMatch = checkPostFixes.some(checkPostFix => {
|
|
94
|
-
if ((preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[nodeName + checkPostFix]) !== undefined) {
|
|
95
|
-
typeName += checkPostFix;
|
|
96
|
-
return true;
|
|
97
|
-
}
|
|
128
|
+
return false;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
98
131
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
132
|
+
if (!isGenericMatch && property) {
|
|
133
|
+
const checkPostFixes = dot ? ['.', '.<>'] : [brackets === 'angle' ? '<>' : '[]'];
|
|
134
|
+
isGenericMatch = checkPostFixes.some(checkPostFix => {
|
|
135
|
+
if ((preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[checkPostFix]) !== undefined) {
|
|
136
|
+
typeName = checkPostFix;
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
102
139
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
typeName = checkPostFix;
|
|
108
|
-
return true;
|
|
109
|
-
}
|
|
140
|
+
return false;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
110
144
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
145
|
+
const directNameMatch = (preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[typeNodeName]) !== undefined && !Object.values(preferredTypes).includes(typeNodeName);
|
|
146
|
+
const unifiedSyntaxParentMatch = property && directNameMatch && unifyParentAndChildTypeChecks;
|
|
147
|
+
isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch;
|
|
148
|
+
hasMatchingPreferredType = isGenericMatch || directNameMatch && !property;
|
|
149
|
+
return [hasMatchingPreferredType, typeName, isGenericMatch];
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Iterates strict types to see if any should be added to `invalidTypes` (and
|
|
153
|
+
* the the relevant strict type returned as the new preferred type).
|
|
154
|
+
*
|
|
155
|
+
* @param {string} typeNodeName
|
|
156
|
+
* @param {string} preferred
|
|
157
|
+
* @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode
|
|
158
|
+
* @param {string[]} invalidTypes
|
|
159
|
+
* @returns {string} The `preferred` type string, optionally changed
|
|
160
|
+
*/
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
const checkNativeTypes = (typeNodeName, preferred, parentNode, invalidTypes) => {
|
|
164
|
+
let changedPreferred = preferred;
|
|
165
|
+
|
|
166
|
+
for (const strictNativeType of strictNativeTypes) {
|
|
167
|
+
if ( // Todo: Avoid typescript condition if moving to default typescript
|
|
168
|
+
strictNativeType === 'object' && mode === 'typescript' && ( // This is not set to remap with exact type match (e.g.,
|
|
169
|
+
// `object: 'Object'`), so can ignore (including if circular)
|
|
170
|
+
!(preferredTypes !== null && preferredTypes !== void 0 && preferredTypes[typeNodeName]) || // Although present on `preferredTypes` for remapping, this is a
|
|
171
|
+
// parent object without a parent match (and not
|
|
172
|
+
// `unifyParentAndChildTypeChecks`) and we don't want
|
|
173
|
+
// `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555
|
|
174
|
+
parentNode !== null && parentNode !== void 0 && parentNode.elements.length && (parentNode === null || parentNode === void 0 ? void 0 : parentNode.left.type) === 'JsdocTypeName' && (parentNode === null || parentNode === void 0 ? void 0 : parentNode.left.value) === 'Object')) {
|
|
175
|
+
continue;
|
|
114
176
|
}
|
|
115
177
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
178
|
+
if (strictNativeType !== typeNodeName && strictNativeType.toLowerCase() === typeNodeName.toLowerCase() && ( // Don't report if user has own map for a strict native type
|
|
179
|
+
!preferredTypes || (preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[strictNativeType]) === undefined)) {
|
|
180
|
+
changedPreferred = strictNativeType;
|
|
181
|
+
invalidTypes.push([typeNodeName, changedPreferred]);
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
120
184
|
}
|
|
121
185
|
|
|
122
|
-
return
|
|
186
|
+
return changedPreferred;
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Collect invalid type info.
|
|
190
|
+
*
|
|
191
|
+
* @param {string} type
|
|
192
|
+
* @param {string} value
|
|
193
|
+
* @param {string} tagName
|
|
194
|
+
* @param {string} property
|
|
195
|
+
* @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node
|
|
196
|
+
* @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode
|
|
197
|
+
* @param {string[]} invalidTypes
|
|
198
|
+
* @returns {void}
|
|
199
|
+
*/
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
const getInvalidTypes = (type, value, tagName, property, node, parentNode, invalidTypes) => {
|
|
203
|
+
let typeNodeName = type === 'JsdocTypeAny' ? '*' : value;
|
|
204
|
+
const [hasMatchingPreferredType, typeName, isGenericMatch] = getPreferredTypeInfo(type, typeNodeName, parentNode, property);
|
|
205
|
+
let preferred;
|
|
206
|
+
let types;
|
|
207
|
+
|
|
208
|
+
if (hasMatchingPreferredType) {
|
|
209
|
+
const preferredSetting = preferredTypes[typeName];
|
|
210
|
+
typeNodeName = typeName === '[]' ? typeName : typeNodeName;
|
|
211
|
+
|
|
212
|
+
if (!preferredSetting) {
|
|
213
|
+
invalidTypes.push([typeNodeName]);
|
|
214
|
+
} else if (typeof preferredSetting === 'string') {
|
|
215
|
+
preferred = preferredSetting;
|
|
216
|
+
invalidTypes.push([typeNodeName, preferred]);
|
|
217
|
+
} else if (typeof preferredSetting === 'object') {
|
|
218
|
+
preferred = preferredSetting === null || preferredSetting === void 0 ? void 0 : preferredSetting.replacement;
|
|
219
|
+
invalidTypes.push([typeNodeName, preferred, preferredSetting === null || preferredSetting === void 0 ? void 0 : preferredSetting.message]);
|
|
220
|
+
} else {
|
|
221
|
+
utils.reportSettings('Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.');
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
} else if (Object.entries(structuredTags).some(([tag, {
|
|
225
|
+
type: typs
|
|
226
|
+
}]) => {
|
|
227
|
+
types = typs;
|
|
228
|
+
return tag === tagName && Array.isArray(types) && !types.includes(typeNodeName);
|
|
229
|
+
})) {
|
|
230
|
+
invalidTypes.push([typeNodeName, types]);
|
|
231
|
+
} else if (!noDefaults && type === 'JsdocTypeName') {
|
|
232
|
+
preferred = checkNativeTypes(typeNodeName, preferred, parentNode, invalidTypes);
|
|
233
|
+
} // For fixer
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
if (preferred) {
|
|
237
|
+
adjustNames(type, preferred, isGenericMatch, typeNodeName, node, parentNode);
|
|
238
|
+
}
|
|
123
239
|
};
|
|
124
240
|
|
|
125
241
|
for (const jsdocTag of jsdocTagsWithPossibleType) {
|
|
@@ -132,8 +248,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
132
248
|
continue;
|
|
133
249
|
}
|
|
134
250
|
|
|
135
|
-
const tagName = jsdocTag.tag;
|
|
136
|
-
|
|
251
|
+
const tagName = jsdocTag.tag;
|
|
137
252
|
(0, _jsdoccomment.traverse)(typeAst, (node, parentNode, property) => {
|
|
138
253
|
const {
|
|
139
254
|
type,
|
|
@@ -144,64 +259,15 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
144
259
|
return;
|
|
145
260
|
}
|
|
146
261
|
|
|
147
|
-
|
|
148
|
-
const [hasMatchingPreferredType, typeName, isGenericMatch] = getPreferredTypeInfo(type, nodeName, parentNode, property);
|
|
149
|
-
let preferred;
|
|
150
|
-
let types;
|
|
151
|
-
|
|
152
|
-
if (hasMatchingPreferredType) {
|
|
153
|
-
const preferredSetting = preferredTypes[typeName];
|
|
154
|
-
nodeName = typeName === '[]' ? typeName : nodeName;
|
|
155
|
-
|
|
156
|
-
if (!preferredSetting) {
|
|
157
|
-
invalidTypes.push([nodeName]);
|
|
158
|
-
} else if (typeof preferredSetting === 'string') {
|
|
159
|
-
preferred = preferredSetting;
|
|
160
|
-
invalidTypes.push([nodeName, preferred]);
|
|
161
|
-
} else if (typeof preferredSetting === 'object') {
|
|
162
|
-
preferred = preferredSetting === null || preferredSetting === void 0 ? void 0 : preferredSetting.replacement;
|
|
163
|
-
invalidTypes.push([nodeName, preferred, preferredSetting === null || preferredSetting === void 0 ? void 0 : preferredSetting.message]);
|
|
164
|
-
} else {
|
|
165
|
-
utils.reportSettings('Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.');
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
} else if (Object.entries(structuredTags).some(([tag, {
|
|
169
|
-
type: typs
|
|
170
|
-
}]) => {
|
|
171
|
-
types = typs;
|
|
172
|
-
return tag === tagName && Array.isArray(types) && !types.includes(nodeName);
|
|
173
|
-
})) {
|
|
174
|
-
invalidTypes.push([nodeName, types]);
|
|
175
|
-
} else if (!noDefaults && type === 'JsdocTypeName') {
|
|
176
|
-
for (const strictNativeType of strictNativeTypes) {
|
|
177
|
-
if ( // Todo: Avoid typescript condition if moving to default typescript
|
|
178
|
-
strictNativeType === 'object' && mode === 'typescript' && ( // This is not set to remap with exact type match (e.g.,
|
|
179
|
-
// `object: 'Object'`), so can ignore (including if circular)
|
|
180
|
-
!(preferredTypes !== null && preferredTypes !== void 0 && preferredTypes[nodeName]) || // Although present on `preferredTypes` for remapping, this is a
|
|
181
|
-
// parent object without a parent match (and not
|
|
182
|
-
// `unifyParentAndChildTypeChecks`) and we don't want
|
|
183
|
-
// `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555
|
|
184
|
-
parentNode !== null && parentNode !== void 0 && parentNode.elements.length && (parentNode === null || parentNode === void 0 ? void 0 : parentNode.left.type) === 'JsdocTypeName' && (parentNode === null || parentNode === void 0 ? void 0 : parentNode.left.value) === 'Object')) {
|
|
185
|
-
continue;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
if (strictNativeType !== nodeName && strictNativeType.toLowerCase() === nodeName.toLowerCase() && ( // Don't report if user has own map for a strict native type
|
|
189
|
-
!preferredTypes || (preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[strictNativeType]) === undefined)) {
|
|
190
|
-
preferred = strictNativeType;
|
|
191
|
-
invalidTypes.push([nodeName, preferred]);
|
|
192
|
-
break;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
} // For fixer
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
if (preferred) {
|
|
199
|
-
adjustNames(type, preferred, isGenericMatch, nodeName, node, parentNode);
|
|
200
|
-
}
|
|
262
|
+
getInvalidTypes(type, value, tagName, property, node, parentNode, invalidTypes);
|
|
201
263
|
});
|
|
202
264
|
|
|
203
265
|
if (invalidTypes.length) {
|
|
204
266
|
const fixedType = (0, _jsdoccomment.stringify)(typeAst);
|
|
267
|
+
/**
|
|
268
|
+
* @param {any} fixer The ESLint fixer
|
|
269
|
+
* @returns {string}
|
|
270
|
+
*/
|
|
205
271
|
|
|
206
272
|
const fix = fixer => {
|
|
207
273
|
return fixer.replaceText(jsdocNode, sourceCode.getText(jsdocNode).replace(`{${jsdocTag.type}}`, `{${fixedType}}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/checkTypes.js"],"names":["strictNativeTypes","adjustNames","type","preferred","isGenericMatch","nodeName","node","parentNode","ret","meta","brackets","dot","dotBracketEnd","match","slice","length","bracketEnd","endsWith","value","replace","jsdocNode","sourceCode","report","utils","settings","context","jsdocTagsWithPossibleType","filterTags","tag","tagMightHaveTypePosition","preferredTypes","structuredTags","mode","noDefaults","unifyParentAndChildTypeChecks","exemptTagContexts","options","getPreferredTypeInfo","_type","property","hasMatchingPreferredType","typeName","Object","keys","isNameOfGeneric","undefined","checkPostFixes","some","checkPostFix","directNameMatch","values","includes","unifiedSyntaxParentMatch","jsdocTag","invalidTypes","typeAst","tagName","types","preferredSetting","push","replacement","message","reportSettings","entries","typs","Array","isArray","strictNativeType","elements","left","toLowerCase","fixedType","fix","fixer","replaceText","getText","badType","preferredType","tagValue","name","JSON","stringify","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","items","oneOf"],"mappings":"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","sourcesContent":["import {\n parse,\n stringify,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\nconst adjustNames = (type, preferred, isGenericMatch, nodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n if (preferred === '[]') {\n parentNode.meta.brackets = 'square';\n parentNode.meta.dot = false;\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/u);\n if (dotBracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = true;\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n ret = preferred.slice(0, -2);\n } else if (\n parentNode.meta.brackets === 'square' &&\n (nodeName === '[]' || nodeName === 'Array')\n ) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n }\n }\n }\n } else if (type === 'JsdocTypeAny') {\n node.type = 'JsdocTypeName';\n }\n\n node.value = ret.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n node.value = nodeName;\n }\n};\n\nexport default iterateJsdoc(({\n jsdocNode,\n sourceCode,\n report,\n utils,\n settings,\n context,\n}) => {\n const jsdocTagsWithPossibleType = utils.filterTags((tag) => {\n return utils.tagMightHaveTypePosition(tag.tag);\n });\n\n const {\n preferredTypes,\n structuredTags,\n mode,\n } = settings;\n const {\n noDefaults,\n unifyParentAndChildTypeChecks,\n exemptTagContexts = [],\n } = context.options[0] || {};\n\n const getPreferredTypeInfo = (_type, nodeName, parentNode, property) => {\n let hasMatchingPreferredType;\n let isGenericMatch;\n let typeName = nodeName;\n if (Object.keys(preferredTypes).length) {\n const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';\n if (unifyParentAndChildTypeChecks || isNameOfGeneric) {\n const brackets = parentNode?.meta?.brackets;\n const dot = parentNode?.meta?.dot;\n\n if (brackets === 'angle') {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n '<>',\n ];\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[nodeName + checkPostFix] !== undefined) {\n typeName += checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n if (!isGenericMatch && property) {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n brackets === 'angle' ? '<>' : '[]',\n ];\n\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[checkPostFix] !== undefined) {\n typeName = checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n }\n\n const directNameMatch = preferredTypes?.[nodeName] !== undefined &&\n !Object.values(preferredTypes).includes(nodeName);\n const unifiedSyntaxParentMatch = property && directNameMatch && unifyParentAndChildTypeChecks;\n isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch;\n\n hasMatchingPreferredType = isGenericMatch ||\n directNameMatch && !property;\n }\n\n return [\n hasMatchingPreferredType, typeName, isGenericMatch,\n ];\n };\n\n for (const jsdocTag of jsdocTagsWithPossibleType) {\n const invalidTypes = [];\n let typeAst;\n\n try {\n typeAst = mode === 'permissive' ? tryParse(jsdocTag.type) : parse(jsdocTag.type, mode);\n } catch {\n continue;\n }\n\n const tagName = jsdocTag.tag;\n\n // eslint-disable-next-line complexity -- To refactor\n traverse(typeAst, (node, parentNode, property) => {\n const {\n type,\n value,\n } = node;\n if (![\n 'JsdocTypeName', 'JsdocTypeAny',\n ].includes(type)) {\n return;\n }\n\n let nodeName = type === 'JsdocTypeAny' ? '*' : value;\n\n const [\n hasMatchingPreferredType,\n typeName,\n isGenericMatch,\n ] = getPreferredTypeInfo(type, nodeName, parentNode, property);\n\n let preferred;\n let types;\n if (hasMatchingPreferredType) {\n const preferredSetting = preferredTypes[typeName];\n nodeName = typeName === '[]' ? typeName : nodeName;\n\n if (!preferredSetting) {\n invalidTypes.push([\n nodeName,\n ]);\n } else if (typeof preferredSetting === 'string') {\n preferred = preferredSetting;\n invalidTypes.push([\n nodeName, preferred,\n ]);\n } else if (typeof preferredSetting === 'object') {\n preferred = preferredSetting?.replacement;\n invalidTypes.push([\n nodeName,\n preferred,\n preferredSetting?.message,\n ]);\n } else {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n\n return;\n }\n } else if (Object.entries(structuredTags).some(([\n tag,\n {\n type: typs,\n },\n ]) => {\n types = typs;\n\n return tag === tagName &&\n Array.isArray(types) &&\n !types.includes(nodeName);\n })) {\n invalidTypes.push([\n nodeName, types,\n ]);\n } else if (!noDefaults && type === 'JsdocTypeName') {\n for (const strictNativeType of strictNativeTypes) {\n if (\n // Todo: Avoid typescript condition if moving to default typescript\n strictNativeType === 'object' && mode === 'typescript' &&\n (\n // This is not set to remap with exact type match (e.g.,\n // `object: 'Object'`), so can ignore (including if circular)\n !preferredTypes?.[nodeName] ||\n // Although present on `preferredTypes` for remapping, this is a\n // parent object without a parent match (and not\n // `unifyParentAndChildTypeChecks`) and we don't want\n // `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555\n parentNode?.elements.length && (\n parentNode?.left.type === 'JsdocTypeName' &&\n parentNode?.left.value === 'Object'\n )\n )\n ) {\n continue;\n }\n\n if (strictNativeType !== nodeName &&\n strictNativeType.toLowerCase() === nodeName.toLowerCase() &&\n\n // Don't report if user has own map for a strict native type\n (!preferredTypes || preferredTypes?.[strictNativeType] === undefined)\n ) {\n preferred = strictNativeType;\n invalidTypes.push([\n nodeName, preferred,\n ]);\n break;\n }\n }\n }\n\n // For fixer\n if (preferred) {\n adjustNames(type, preferred, isGenericMatch, nodeName, node, parentNode);\n }\n });\n\n if (invalidTypes.length) {\n const fixedType = stringify(typeAst);\n\n const fix = (fixer) => {\n return fixer.replaceText(\n jsdocNode,\n sourceCode.getText(jsdocNode).replace(\n `{${jsdocTag.type}}`,\n `{${fixedType}}`,\n ),\n );\n };\n\n for (const [\n badType,\n preferredType = '',\n message,\n ] of invalidTypes) {\n const tagValue = jsdocTag.name ? ` \"${jsdocTag.name}\"` : '';\n if (exemptTagContexts.some(({\n tag,\n types,\n }) => {\n return tag === tagName &&\n (types === true || types.includes(jsdocTag.type));\n })) {\n continue;\n }\n\n report(\n message ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''),\n preferredType ? fix : null,\n jsdocTag,\n message ? {\n tagName,\n tagValue,\n } : null,\n );\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid types.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n exemptTagContexts: {\n items: {\n additionalProperties: false,\n properties: {\n tag: {\n type: 'string',\n },\n types: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n noDefaults: {\n type: 'boolean',\n },\n unifyParentAndChildTypeChecks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkTypes.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/rules/checkTypes.js"],"names":["strictNativeTypes","adjustNames","type","preferred","isGenericMatch","typeNodeName","node","parentNode","ret","meta","brackets","dot","dotBracketEnd","match","slice","length","bracketEnd","endsWith","value","replace","jsdocNode","sourceCode","report","utils","settings","context","jsdocTagsWithPossibleType","filterTags","tag","tagMightHaveTypePosition","preferredTypes","preferredTypesOriginal","structuredTags","mode","injectObjectPreferredTypes","Object","noDefaults","unifyParentAndChildTypeChecks","exemptTagContexts","options","getPreferredTypeInfo","_type","property","hasMatchingPreferredType","typeName","isNameOfGeneric","undefined","checkPostFixes","some","checkPostFix","directNameMatch","values","includes","unifiedSyntaxParentMatch","checkNativeTypes","invalidTypes","changedPreferred","strictNativeType","elements","left","toLowerCase","push","getInvalidTypes","tagName","types","preferredSetting","replacement","message","reportSettings","entries","typs","Array","isArray","jsdocTag","typeAst","fixedType","fix","fixer","replaceText","getText","badType","preferredType","tagValue","name","JSON","stringify","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","items","oneOf"],"mappings":"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","sourcesContent":["import {\n parse,\n stringify,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\n/**\n * Adjusts the parent type node `meta` for generic matches (or type node\n * `type` for `JsdocTypeAny`) and sets the type node `value`.\n *\n * @param {string} type The actual type\n * @param {string} preferred The preferred type\n * @param {boolean} isGenericMatch\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @returns {void}\n */\nconst adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n if (preferred === '[]') {\n parentNode.meta.brackets = 'square';\n parentNode.meta.dot = false;\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/u);\n if (dotBracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = true;\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n ret = preferred.slice(0, -2);\n } else if (\n parentNode.meta.brackets === 'square' &&\n (typeNodeName === '[]' || typeNodeName === 'Array')\n ) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n }\n }\n }\n } else if (type === 'JsdocTypeAny') {\n node.type = 'JsdocTypeName';\n }\n\n node.value = ret.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n node.value = typeNodeName;\n }\n};\n\nexport default iterateJsdoc(({\n jsdocNode,\n sourceCode,\n report,\n utils,\n settings,\n context,\n}) => {\n const jsdocTagsWithPossibleType = utils.filterTags((tag) => {\n return utils.tagMightHaveTypePosition(tag.tag);\n });\n\n const {\n preferredTypes: preferredTypesOriginal,\n structuredTags,\n mode,\n } = settings;\n\n const injectObjectPreferredTypes = !('Object' in preferredTypesOriginal ||\n 'object' in preferredTypesOriginal ||\n 'object.<>' in preferredTypesOriginal ||\n 'Object.<>' in preferredTypesOriginal ||\n 'object<>' in preferredTypesOriginal);\n\n const preferredTypes = {\n ...injectObjectPreferredTypes ? {\n Object: 'object',\n 'object.<>': 'Object<>',\n 'Object.<>': 'Object<>',\n 'object<>': 'Object<>',\n } : {},\n ...preferredTypesOriginal,\n };\n\n const {\n noDefaults,\n unifyParentAndChildTypeChecks,\n exemptTagContexts = [],\n } = context.options[0] || {};\n\n /**\n * Gets information about the preferred type: whether there is a matching\n * preferred type, what the type is, and whether it is a match to a generic.\n *\n * @param {string} _type Not currently in use\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string} property\n * @returns {[hasMatchingPreferredType: boolean, typeName: string, isGenericMatch: boolean]}\n */\n const getPreferredTypeInfo = (_type, typeNodeName, parentNode, property) => {\n let hasMatchingPreferredType = false;\n let isGenericMatch = false;\n let typeName = typeNodeName;\n\n const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';\n if (unifyParentAndChildTypeChecks || isNameOfGeneric) {\n const brackets = parentNode?.meta?.brackets;\n const dot = parentNode?.meta?.dot;\n\n if (brackets === 'angle') {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n '<>',\n ];\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[typeNodeName + checkPostFix] !== undefined) {\n typeName += checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n if (!isGenericMatch && property) {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n brackets === 'angle' ? '<>' : '[]',\n ];\n\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[checkPostFix] !== undefined) {\n typeName = checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n }\n\n const directNameMatch = preferredTypes?.[typeNodeName] !== undefined &&\n !Object.values(preferredTypes).includes(typeNodeName);\n const unifiedSyntaxParentMatch = property && directNameMatch && unifyParentAndChildTypeChecks;\n isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch;\n\n hasMatchingPreferredType = isGenericMatch ||\n directNameMatch && !property;\n\n return [\n hasMatchingPreferredType, typeName, isGenericMatch,\n ];\n };\n\n /**\n * Iterates strict types to see if any should be added to `invalidTypes` (and\n * the the relevant strict type returned as the new preferred type).\n *\n * @param {string} typeNodeName\n * @param {string} preferred\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {string} The `preferred` type string, optionally changed\n */\n const checkNativeTypes = (typeNodeName, preferred, parentNode, invalidTypes) => {\n let changedPreferred = preferred;\n for (const strictNativeType of strictNativeTypes) {\n if (\n // Todo: Avoid typescript condition if moving to default typescript\n strictNativeType === 'object' && mode === 'typescript' &&\n (\n // This is not set to remap with exact type match (e.g.,\n // `object: 'Object'`), so can ignore (including if circular)\n !preferredTypes?.[typeNodeName] ||\n // Although present on `preferredTypes` for remapping, this is a\n // parent object without a parent match (and not\n // `unifyParentAndChildTypeChecks`) and we don't want\n // `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555\n parentNode?.elements.length && (\n parentNode?.left.type === 'JsdocTypeName' &&\n parentNode?.left.value === 'Object'\n )\n )\n ) {\n continue;\n }\n\n if (strictNativeType !== typeNodeName &&\n strictNativeType.toLowerCase() === typeNodeName.toLowerCase() &&\n\n // Don't report if user has own map for a strict native type\n (!preferredTypes || preferredTypes?.[strictNativeType] === undefined)\n ) {\n changedPreferred = strictNativeType;\n invalidTypes.push([\n typeNodeName, changedPreferred,\n ]);\n break;\n }\n }\n\n return changedPreferred;\n };\n\n /**\n * Collect invalid type info.\n *\n * @param {string} type\n * @param {string} value\n * @param {string} tagName\n * @param {string} property\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {void}\n */\n const getInvalidTypes = (type, value, tagName, property, node, parentNode, invalidTypes) => {\n let typeNodeName = type === 'JsdocTypeAny' ? '*' : value;\n\n const [\n hasMatchingPreferredType,\n typeName,\n isGenericMatch,\n ] = getPreferredTypeInfo(type, typeNodeName, parentNode, property);\n\n let preferred;\n let types;\n if (hasMatchingPreferredType) {\n const preferredSetting = preferredTypes[typeName];\n typeNodeName = typeName === '[]' ? typeName : typeNodeName;\n\n if (!preferredSetting) {\n invalidTypes.push([\n typeNodeName,\n ]);\n } else if (typeof preferredSetting === 'string') {\n preferred = preferredSetting;\n invalidTypes.push([\n typeNodeName, preferred,\n ]);\n } else if (typeof preferredSetting === 'object') {\n preferred = preferredSetting?.replacement;\n invalidTypes.push([\n typeNodeName,\n preferred,\n preferredSetting?.message,\n ]);\n } else {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n\n return;\n }\n } else if (Object.entries(structuredTags).some(([\n tag,\n {\n type: typs,\n },\n ]) => {\n types = typs;\n\n return tag === tagName &&\n Array.isArray(types) &&\n !types.includes(typeNodeName);\n })) {\n invalidTypes.push([\n typeNodeName, types,\n ]);\n } else if (!noDefaults && type === 'JsdocTypeName') {\n preferred = checkNativeTypes(typeNodeName, preferred, parentNode, invalidTypes);\n }\n\n // For fixer\n if (preferred) {\n adjustNames(type, preferred, isGenericMatch, typeNodeName, node, parentNode);\n }\n };\n\n for (const jsdocTag of jsdocTagsWithPossibleType) {\n const invalidTypes = [];\n let typeAst;\n\n try {\n typeAst = mode === 'permissive' ? tryParse(jsdocTag.type) : parse(jsdocTag.type, mode);\n } catch {\n continue;\n }\n\n const tagName = jsdocTag.tag;\n\n traverse(typeAst, (node, parentNode, property) => {\n const {\n type,\n value,\n } = node;\n if (![\n 'JsdocTypeName', 'JsdocTypeAny',\n ].includes(type)) {\n return;\n }\n\n getInvalidTypes(type, value, tagName, property, node, parentNode, invalidTypes);\n });\n\n if (invalidTypes.length) {\n const fixedType = stringify(typeAst);\n\n /**\n * @param {any} fixer The ESLint fixer\n * @returns {string}\n */\n const fix = (fixer) => {\n return fixer.replaceText(\n jsdocNode,\n sourceCode.getText(jsdocNode).replace(\n `{${jsdocTag.type}}`,\n `{${fixedType}}`,\n ),\n );\n };\n\n for (const [\n badType,\n preferredType = '',\n message,\n ] of invalidTypes) {\n const tagValue = jsdocTag.name ? ` \"${jsdocTag.name}\"` : '';\n if (exemptTagContexts.some(({\n tag,\n types,\n }) => {\n return tag === tagName &&\n (types === true || types.includes(jsdocTag.type));\n })) {\n continue;\n }\n\n report(\n message ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''),\n preferredType ? fix : null,\n jsdocTag,\n message ? {\n tagName,\n tagValue,\n } : null,\n );\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid types.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n exemptTagContexts: {\n items: {\n additionalProperties: false,\n properties: {\n tag: {\n type: 'string',\n },\n types: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n noDefaults: {\n type: 'boolean',\n },\n unifyParentAndChildTypeChecks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkTypes.js"}
|
package/dist/tagNames.js
CHANGED
|
@@ -84,6 +84,8 @@ const jsdocTags = { ...jsdocTagsUndocumented,
|
|
|
84
84
|
};
|
|
85
85
|
exports.jsdocTags = jsdocTags;
|
|
86
86
|
const typeScriptTags = { ...jsdocTags,
|
|
87
|
+
// https://www.typescriptlang.org/tsconfig/#stripInternal
|
|
88
|
+
internal: [],
|
|
87
89
|
// `@template` is also in TypeScript per:
|
|
88
90
|
// https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html#supported-jsdoc
|
|
89
91
|
template: []
|
|
@@ -108,6 +110,7 @@ const undocumentedClosureTags = {
|
|
|
108
110
|
const {
|
|
109
111
|
/* eslint-disable no-unused-vars */
|
|
110
112
|
inheritdoc,
|
|
113
|
+
internal,
|
|
111
114
|
// Will be inverted to prefer `return`
|
|
112
115
|
returns,
|
|
113
116
|
|
package/dist/tagNames.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tagNames.js"],"names":["jsdocTagsUndocumented","modifies","jsdocTags","abstract","access","alias","async","augments","author","borrows","callback","class","classdesc","constant","constructs","copyright","default","deprecated","description","enum","event","example","exports","external","file","fires","function","generator","global","hideconstructor","ignore","implements","inheritdoc","inheritDoc","inner","instance","interface","kind","lends","license","listens","member","memberof","mixes","mixin","module","name","namespace","override","package","param","private","property","protected","public","readonly","requires","returns","see","since","static","summary","this","throws","todo","tutorial","type","typedef","variation","version","yields","typeScriptTags","template","undocumentedClosureTags","closurePrimitive","customElement","expose","hidden","idGenerator","meaning","mixinClass","mixinFunction","ngInject","owner","typeSummary","wizaction","typeScriptTagsInClosure","closureTags","define","dict","export","externs","final","implicitCast","noalias","nocollapse","nocompile","noinline","nosideeffects","polymer","polymerBehavior","preserve","record","return","struct","suppress","unrestricted"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/tagNames.js"],"names":["jsdocTagsUndocumented","modifies","jsdocTags","abstract","access","alias","async","augments","author","borrows","callback","class","classdesc","constant","constructs","copyright","default","deprecated","description","enum","event","example","exports","external","file","fires","function","generator","global","hideconstructor","ignore","implements","inheritdoc","inheritDoc","inner","instance","interface","kind","lends","license","listens","member","memberof","mixes","mixin","module","name","namespace","override","package","param","private","property","protected","public","readonly","requires","returns","see","since","static","summary","this","throws","todo","tutorial","type","typedef","variation","version","yields","typeScriptTags","internal","template","undocumentedClosureTags","closurePrimitive","customElement","expose","hidden","idGenerator","meaning","mixinClass","mixinFunction","ngInject","owner","typeSummary","wizaction","typeScriptTagsInClosure","closureTags","define","dict","export","externs","final","implicitCast","noalias","nocollapse","nocompile","noinline","nosideeffects","polymer","polymerBehavior","preserve","record","return","struct","suppress","unrestricted"],"mappings":"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","sourcesContent":["const jsdocTagsUndocumented = {\n // Undocumented but present; see\n // https://github.com/jsdoc/jsdoc/issues/1283#issuecomment-516816802\n // https://github.com/jsdoc/jsdoc/blob/master/packages/jsdoc/lib/jsdoc/tag/dictionary/definitions.js#L594\n modifies: [],\n};\n\nconst jsdocTags = {\n ...jsdocTagsUndocumented,\n abstract: [\n 'virtual',\n ],\n access: [],\n alias: [],\n async: [],\n augments: [\n 'extends',\n ],\n author: [],\n borrows: [],\n callback: [],\n class: [\n 'constructor',\n ],\n classdesc: [],\n constant: [\n 'const',\n ],\n constructs: [],\n copyright: [],\n default: [\n 'defaultvalue',\n ],\n deprecated: [],\n description: [\n 'desc',\n ],\n enum: [],\n event: [],\n example: [],\n exports: [],\n external: [\n 'host',\n ],\n file: [\n 'fileoverview',\n 'overview',\n ],\n fires: [\n 'emits',\n ],\n function: [\n 'func',\n 'method',\n ],\n generator: [],\n global: [],\n hideconstructor: [],\n ignore: [],\n implements: [],\n inheritdoc: [],\n\n // Allowing casing distinct from jsdoc `definitions.js` (required in Closure)\n inheritDoc: [],\n\n inner: [],\n instance: [],\n interface: [],\n kind: [],\n lends: [],\n license: [],\n listens: [],\n member: [\n 'var',\n ],\n memberof: [],\n 'memberof!': [],\n mixes: [],\n mixin: [],\n\n module: [],\n name: [],\n namespace: [],\n override: [],\n package: [],\n param: [\n 'arg',\n 'argument',\n ],\n private: [],\n property: [\n 'prop',\n ],\n protected: [],\n public: [],\n readonly: [],\n requires: [],\n returns: [\n 'return',\n ],\n see: [],\n since: [],\n static: [],\n summary: [],\n\n this: [],\n throws: [\n 'exception',\n ],\n todo: [],\n tutorial: [],\n type: [],\n typedef: [],\n variation: [],\n version: [],\n yields: [\n 'yield',\n ],\n};\n\nconst typeScriptTags = {\n ...jsdocTags,\n\n // https://www.typescriptlang.org/tsconfig/#stripInternal\n internal: [],\n\n // `@template` is also in TypeScript per:\n // https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html#supported-jsdoc\n template: [],\n};\n\nconst undocumentedClosureTags = {\n // These are in Closure source but not in jsdoc source nor in the Closure\n // docs: https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/parsing/Annotation.java\n closurePrimitive: [],\n customElement: [],\n expose: [],\n hidden: [],\n idGenerator: [],\n meaning: [],\n mixinClass: [],\n mixinFunction: [],\n ngInject: [],\n owner: [],\n typeSummary: [],\n wizaction: [],\n};\n\nconst {\n /* eslint-disable no-unused-vars */\n inheritdoc,\n internal,\n\n // Will be inverted to prefer `return`\n returns,\n /* eslint-enable no-unused-vars */\n ...typeScriptTagsInClosure\n} = typeScriptTags;\n\nconst closureTags = {\n ...typeScriptTagsInClosure,\n ...undocumentedClosureTags,\n\n // From https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler\n // These are all recognized in https://github.com/jsdoc/jsdoc/blob/master/packages/jsdoc/lib/jsdoc/tag/dictionary/definitions.js\n // except for the experimental `noinline` and the casing differences noted below\n\n // Defined as a synonym of `const` in jsdoc `definitions.js`\n define: [],\n\n dict: [],\n export: [],\n externs: [],\n final: [],\n\n // With casing distinct from jsdoc `definitions.js`\n implicitCast: [],\n\n noalias: [],\n nocollapse: [],\n nocompile: [],\n noinline: [],\n nosideeffects: [],\n polymer: [],\n polymerBehavior: [],\n preserve: [],\n\n // Defined as a synonym of `interface` in jsdoc `definitions.js`\n record: [],\n\n return: [\n 'returns',\n ],\n\n struct: [],\n suppress: [],\n\n unrestricted: [],\n};\n\nexport {\n jsdocTags,\n closureTags,\n typeScriptTags,\n};\n"],"file":"tagNames.js"}
|
package/package.json
CHANGED