eslint-plugin-jsdoc 60.8.0 → 60.8.2
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/dist/cjs/iterateJsdoc.d.ts +3 -0
- package/dist/cjs/jsdocUtils.d.ts +12 -0
- package/dist/generateOptions.cjs +7 -5
- package/dist/generateOptions.cjs.map +1 -1
- package/dist/iterateJsdoc.cjs +6 -3
- package/dist/iterateJsdoc.cjs.map +1 -1
- package/dist/iterateJsdoc.d.ts +3 -0
- package/dist/jsdocUtils.cjs +26 -2
- package/dist/jsdocUtils.cjs.map +1 -1
- package/dist/jsdocUtils.d.ts +12 -0
- package/dist/rules/noUndefinedTypes.cjs +16 -0
- package/dist/rules/noUndefinedTypes.cjs.map +1 -1
- package/dist/rules/validTypes.cjs +21 -2
- package/dist/rules/validTypes.cjs.map +1 -1
- package/package.json +4 -4
- package/src/iterateJsdoc.js +7 -2
- package/src/jsdocUtils.js +33 -0
- package/src/rules/noUndefinedTypes.js +19 -0
- package/src/rules/validTypes.js +27 -4
|
@@ -47,6 +47,7 @@ export type BasicUtils = {
|
|
|
47
47
|
isNamepathReferencingTag: IsNamepathX;
|
|
48
48
|
isNamepathOrUrlReferencingTag: IsNamepathX;
|
|
49
49
|
tagMightHaveNameOrNamepath: IsNamepathX;
|
|
50
|
+
tagMightHaveName: IsNamepathX;
|
|
50
51
|
};
|
|
51
52
|
export type IsIteratingFunction = () => boolean;
|
|
52
53
|
export type IsVirtualFunction = () => boolean;
|
|
@@ -197,6 +198,8 @@ export type Utils = BasicUtils & {
|
|
|
197
198
|
isNamepathReferencingTag: IsNamepathX;
|
|
198
199
|
isNamepathOrUrlReferencingTag: IsNamepathX;
|
|
199
200
|
tagMightHaveNameOrNamepath: IsNamepathX;
|
|
201
|
+
tagMightHaveName: IsNamepathX;
|
|
202
|
+
tagMightHaveNamepath: IsNamepathX;
|
|
200
203
|
getTagStructureForMode: GetTagStructureForMode;
|
|
201
204
|
mayBeUndefinedTypeTag: MayBeUndefinedTypeTag;
|
|
202
205
|
hasValueOrExecutorHasNonEmptyResolveValue: HasValueOrExecutorHasNonEmptyResolveValue;
|
package/dist/cjs/jsdocUtils.d.ts
CHANGED
|
@@ -433,12 +433,24 @@ export const strictNativeTypes: string[];
|
|
|
433
433
|
* @returns {boolean}
|
|
434
434
|
*/
|
|
435
435
|
export function tagMightHaveEitherTypeOrNamePosition(tag: string, tagMap: import("./getDefaultTagStructureForMode.js").TagStructure): boolean;
|
|
436
|
+
/**
|
|
437
|
+
* @param {string} tag
|
|
438
|
+
* @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap
|
|
439
|
+
* @returns {boolean}
|
|
440
|
+
*/
|
|
441
|
+
export function tagMightHaveName(tag: string, tagMap?: import("./getDefaultTagStructureForMode.js").TagStructure): boolean;
|
|
436
442
|
/**
|
|
437
443
|
* @param {string} tag
|
|
438
444
|
* @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap
|
|
439
445
|
* @returns {boolean}
|
|
440
446
|
*/
|
|
441
447
|
export function tagMightHaveNameOrNamepath(tag: string, tagMap?: import("./getDefaultTagStructureForMode.js").TagStructure): boolean;
|
|
448
|
+
/**
|
|
449
|
+
* @param {string} tag
|
|
450
|
+
* @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap
|
|
451
|
+
* @returns {boolean}
|
|
452
|
+
*/
|
|
453
|
+
export function tagMightHaveNamepath(tag: string, tagMap?: import("./getDefaultTagStructureForMode.js").TagStructure): boolean;
|
|
442
454
|
/**
|
|
443
455
|
* @param {string} tag
|
|
444
456
|
* @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap
|
package/dist/generateOptions.cjs
CHANGED
|
@@ -21,11 +21,13 @@ for (const file of dirContents) {
|
|
|
21
21
|
});
|
|
22
22
|
const results = _esquery.default.query(ast, 'ExportDefaultDeclaration[declaration.callee.name="iterateJsdoc"]' + ' Property[key.name="meta"] Property[key.name="schema"]');
|
|
23
23
|
if (results[0]?.value) {
|
|
24
|
-
const schema = (0, _escodegen.generate)(results[0]?.value
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
const schema = (0, _escodegen.generate)(results[0]?.value, {
|
|
25
|
+
format: {
|
|
26
|
+
json: true,
|
|
27
|
+
quotes: 'double'
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const parsed = JSON.parse(schema);
|
|
29
31
|
let initial = '';
|
|
30
32
|
if (Array.isArray(parsed)) {
|
|
31
33
|
if (!parsed.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateOptions.cjs","names":["_escodegen","require","_decamelize","_interopRequireDefault","_espree","_esquery","_promises","_path","e","__esModule","default","rulesDir","dirContents","readdir","file","endsWith","fileContents","readFile","join","ast","parse","ecmaVersion","sourceType","results","esquery","query","value","schema","generate","json","
|
|
1
|
+
{"version":3,"file":"generateOptions.cjs","names":["_escodegen","require","_decamelize","_interopRequireDefault","_espree","_esquery","_promises","_path","e","__esModule","default","rulesDir","dirContents","readdir","file","endsWith","fileContents","readFile","join","ast","parse","ecmaVersion","sourceType","results","esquery","query","value","schema","generate","format","json","quotes","parsed","JSON","initial","Array","isArray","length","console","log","type","enum","map","item","shift","obj","hyphenatedRule","decamelize","separator","replace","docPath","ruleDocs","Object","keys","properties","key","writeFile"],"sources":["../src/bin/generateOptions.js"],"sourcesContent":["import {\n generate,\n} from '@es-joy/escodegen';\nimport decamelize from 'decamelize';\nimport {\n parse,\n} from 'espree';\nimport esquery from 'esquery';\nimport {\n readdir,\n readFile,\n writeFile,\n} from 'fs/promises';\nimport {\n join,\n} from 'path';\n\nconst rulesDir = './src/rules';\n\nconst dirContents = await readdir(rulesDir);\n\nfor (const file of dirContents) {\n if (!file.endsWith('.js')) {\n continue;\n }\n\n const fileContents = await readFile(join(rulesDir, file), 'utf8');\n // console.log('file', file);\n const ast = parse(fileContents, {\n ecmaVersion: 2_024,\n sourceType: 'module',\n });\n const results = esquery.query(\n ast,\n 'ExportDefaultDeclaration[declaration.callee.name=\"iterateJsdoc\"]' +\n ' Property[key.name=\"meta\"] Property[key.name=\"schema\"]',\n );\n if (results[0]?.value) {\n const schema = generate(results[0]?.value, {\n format: {\n json: true,\n quotes: 'double',\n },\n });\n const parsed = JSON.parse(schema);\n\n let initial = '';\n if (Array.isArray(parsed)) {\n if (!parsed.length) {\n // eslint-disable-next-line no-console -- CLI\n console.log('skipping no options', file);\n continue;\n }\n\n if (parsed.length >= 2) {\n if (parsed.length >= 3 || parsed[0].type !== 'string') {\n // eslint-disable-next-line no-console -- CLI\n console.log('unexpectedly large schema', file);\n continue;\n // throw new Error('Unexpected long schema array');\n }\n\n initial = `string (${parsed[0].enum.map((item) => {\n return `\"${item}\"`;\n }).join(', ')}) followed by object with `;\n parsed.shift();\n }\n }\n\n const obj = Array.isArray(parsed) ? parsed[0] : parsed;\n\n const hyphenatedRule = decamelize(file, {\n separator: '-',\n }).replace(/\\.js$/v, '.md');\n const docPath = join('.README/rules', hyphenatedRule);\n\n const ruleDocs = (await readFile(docPath, 'utf8'))\n .replace(/(\\|\\s*Options\\s*\\|)([^\\|]*)(\\|)?/v, `$1${\n initial +\n Object.keys(obj.properties).map((key) => {\n return `\\`${key}\\``;\n }).join(', ')\n }$3`);\n\n await writeFile(docPath, ruleDocs);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/iterateJsdoc.cjs
CHANGED
|
@@ -103,6 +103,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
103
103
|
* isNamepathReferencingTag: IsNamepathX,
|
|
104
104
|
* isNamepathOrUrlReferencingTag: IsNamepathX,
|
|
105
105
|
* tagMightHaveNameOrNamepath: IsNamepathX,
|
|
106
|
+
* tagMightHaveName: IsNamepathX
|
|
106
107
|
* }} BasicUtils
|
|
107
108
|
*/
|
|
108
109
|
|
|
@@ -537,6 +538,8 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
537
538
|
* isNamepathReferencingTag: IsNamepathX,
|
|
538
539
|
* isNamepathOrUrlReferencingTag: IsNamepathX,
|
|
539
540
|
* tagMightHaveNameOrNamepath: IsNamepathX,
|
|
541
|
+
* tagMightHaveName: IsNamepathX,
|
|
542
|
+
* tagMightHaveNamepath: IsNamepathX,
|
|
540
543
|
* getTagStructureForMode: GetTagStructureForMode,
|
|
541
544
|
* mayBeUndefinedTypeTag: MayBeUndefinedTypeTag,
|
|
542
545
|
* hasValueOrExecutorHasNonEmptyResolveValue: HasValueOrExecutorHasNonEmptyResolveValue,
|
|
@@ -619,11 +622,11 @@ const getBasicUtils = (context, {
|
|
|
619
622
|
}) => {
|
|
620
623
|
/** @type {BasicUtils} */
|
|
621
624
|
const utils = {};
|
|
622
|
-
for (const method of ['isNameOrNamepathDefiningTag', 'isNamepathReferencingTag', 'isNamepathOrUrlReferencingTag', 'tagMightHaveNameOrNamepath']) {
|
|
625
|
+
for (const method of ['isNameOrNamepathDefiningTag', 'isNamepathReferencingTag', 'isNamepathOrUrlReferencingTag', 'tagMightHaveNameOrNamepath', 'tagMightHaveName', 'tagMightHaveNamepath']) {
|
|
623
626
|
/** @type {IsNamepathX} */
|
|
624
|
-
utils[(/** @type {"isNameOrNamepathDefiningTag"|"isNamepathReferencingTag"|"isNamepathOrUrlReferencingTag"|"tagMightHaveNameOrNamepath"} */
|
|
627
|
+
utils[(/** @type {"isNameOrNamepathDefiningTag"|"isNamepathReferencingTag"|"isNamepathOrUrlReferencingTag"|"tagMightHaveNameOrNamepath"|"tagMightHaveName"} */
|
|
625
628
|
method)] = tagName => {
|
|
626
|
-
return jsdocUtils[(/** @type {"isNameOrNamepathDefiningTag"|"isNamepathReferencingTag"|"isNamepathOrUrlReferencingTag"|"tagMightHaveNameOrNamepath"} */
|
|
629
|
+
return jsdocUtils[(/** @type {"isNameOrNamepathDefiningTag"|"isNamepathReferencingTag"|"isNamepathOrUrlReferencingTag"|"tagMightHaveNameOrNamepath"|"tagMightHaveName"} */
|
|
627
630
|
method)](tagName);
|
|
628
631
|
};
|
|
629
632
|
}
|