eslint-plugin-jsdoc 37.2.8 → 37.3.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
CHANGED
|
@@ -20561,6 +20561,27 @@ parseArray = function(parser) {
|
|
|
20561
20561
|
};
|
|
20562
20562
|
// Settings: {"jsdoc":{"mode":"closure"}}
|
|
20563
20563
|
// Message: Syntax error in namepath: R<~
|
|
20564
|
+
|
|
20565
|
+
/**
|
|
20566
|
+
* @suppress
|
|
20567
|
+
*/
|
|
20568
|
+
function quux () {}
|
|
20569
|
+
// Settings: {"jsdoc":{"mode":"closure"}}
|
|
20570
|
+
// Message: Tag @suppress must have a type in "closure" mode.
|
|
20571
|
+
|
|
20572
|
+
/**
|
|
20573
|
+
* @suppress {visibility} sth
|
|
20574
|
+
*/
|
|
20575
|
+
function quux () {}
|
|
20576
|
+
// Settings: {"jsdoc":{"mode":"closure"}}
|
|
20577
|
+
// Message: @suppress should not have a name in "closure" mode.
|
|
20578
|
+
|
|
20579
|
+
/**
|
|
20580
|
+
* @suppress {visibility|blah}
|
|
20581
|
+
*/
|
|
20582
|
+
function quux () {}
|
|
20583
|
+
// Settings: {"jsdoc":{"mode":"closure"}}
|
|
20584
|
+
// Message: Syntax error in supresss type: blah
|
|
20564
20585
|
````
|
|
20565
20586
|
|
|
20566
20587
|
The following patterns are not considered problems:
|
|
@@ -20876,6 +20897,13 @@ type ComplicatedType<T, U, V, W, X> = never
|
|
|
20876
20897
|
*/
|
|
20877
20898
|
class quux {}
|
|
20878
20899
|
// Settings: {"jsdoc":{"mode":"typescript"}}
|
|
20900
|
+
|
|
20901
|
+
/**
|
|
20902
|
+
* @suppress {visibility|underscore}
|
|
20903
|
+
*/
|
|
20904
|
+
function quux() {
|
|
20905
|
+
}
|
|
20906
|
+
// Settings: {"jsdoc":{"mode":"closure"}}
|
|
20879
20907
|
````
|
|
20880
20908
|
|
|
20881
20909
|
|
|
@@ -140,7 +140,7 @@ const getDefaultTagStructureForMode = mode => {
|
|
|
140
140
|
['typeAllowed', true]])], ['see', new Map([// Signature allows for "namepath" or text, so user must configure to
|
|
141
141
|
// 'namepath-referencing' to enforce checks
|
|
142
142
|
['nameContents', 'text']])], ['static', new Map([// Does not show a signature nor show curly brackets in the example
|
|
143
|
-
['typeAllowed', isClosureOrPermissive]])], ['template', new Map([['nameContents', isJsdoc ? 'text' : 'namepath-referencing'], // Though defines `nameContents: 'namepath-defining'` in a sense, it is
|
|
143
|
+
['typeAllowed', isClosureOrPermissive]])], ['suppress', new Map([['nameContents', !isClosure], ['typeRequired', isClosure]])], ['template', new Map([['nameContents', isJsdoc ? 'text' : 'namepath-referencing'], // Though defines `nameContents: 'namepath-defining'` in a sense, it is
|
|
144
144
|
// not parseable in the same way for template (e.g., allowing commas),
|
|
145
145
|
// so not adding
|
|
146
146
|
['typeAllowed', isTypescriptOrClosure || isPermissive]])], ['this', new Map([// Signature seems to require a "namepath" (and no counter-examples)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/getDefaultTagStructureForMode.js"],"names":["getDefaultTagStructureForMode","mode","isJsdoc","isClosure","isTypescript","isPermissive","isJsdocOrTypescript","isTypescriptOrClosure","isClosureOrPermissive","isJsdocTypescriptOrPermissive","Map"],"mappings":"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","sourcesContent":["const getDefaultTagStructureForMode = (mode) => {\n const isJsdoc = mode === 'jsdoc';\n const isClosure = mode === 'closure';\n const isTypescript = mode === 'typescript';\n const isPermissive = mode === 'permissive';\n\n const isJsdocOrTypescript = isJsdoc || isTypescript;\n const isTypescriptOrClosure = isTypescript || isClosure;\n const isClosureOrPermissive = isClosure || isPermissive;\n const isJsdocTypescriptOrPermissive = isJsdocOrTypescript || isPermissive;\n\n // Properties:\n // `nameContents` - 'namepath-referencing'|'namepath-defining'|'text'|false\n // `typeAllowed` - boolean\n // `nameRequired` - boolean\n // `typeRequired` - boolean\n // `typeOrNameRequired` - boolean\n\n // All of `typeAllowed` have a signature with \"type\" except for\n // `augments`/`extends` (\"namepath\")\n // `param`/`arg`/`argument` (no signature)\n // `property`/`prop` (no signature)\n // `modifies` (undocumented)\n\n // None of the `nameContents: 'namepath-defining'` show as having curly\n // brackets for their name/namepath\n\n // Among `namepath-defining` and `namepath-referencing`, these do not seem\n // to allow curly brackets in their doc signature or examples (`modifies`\n // references namepaths within its type brackets and `param` is\n // name-defining but not namepath-defining, so not part of these groups)\n\n // Todo: Should support special processing for \"name\" as distinct from\n // \"namepath\" (e.g., param can't define a namepath)\n\n // Once checking inline tags:\n // Todo: Re: `typeOrNameRequired`, `@link` (or @linkcode/@linkplain) seems\n // to require a namepath OR URL and might be checked as such.\n // Todo: Should support a `tutorialID` type (for `@tutorial` block and\n // inline)\n\n return new Map([\n ['alias', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['arg', new Map([\n ['nameContents', 'namepath-defining'],\n\n // See `param`\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['argument', new Map([\n ['nameContents', 'namepath-defining'],\n\n // See `param`\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['augments', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n ['nameContents', 'namepath-referencing'],\n\n // Does not show curly brackets in either the signature or examples\n ['typeAllowed', true],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['borrows', new Map([\n // `borrows` has a different format, however, so needs special parsing;\n // seems to require both, and as \"namepath\"'s\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['callback', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n ['nameContents', 'namepath-defining'],\n\n // \"namepath\"\n ['nameRequired', true],\n ])],\n\n ['class', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n ['typeAllowed', true],\n ])],\n\n ['const', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n ['typeAllowed', true],\n ])],\n ['constant', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n ['typeAllowed', true],\n ])],\n ['constructor', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n ['typeAllowed', true],\n ])],\n\n ['define', new Map([\n ['typeRequired', isClosure],\n ])],\n\n ['emits', new Map([\n // Signature seems to require a \"name\" (of an event) and no counter-examples\n ['nameContents', 'namepath-referencing'],\n ])],\n\n ['enum', new Map([\n // Has example showing curly brackets but not in doc signature\n ['typeAllowed', true],\n ])],\n\n ['event', new Map([\n // The doc signature of `event` seems to require a \"name\"\n ['nameRequired', true],\n\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n ['nameContents', 'namepath-defining'],\n ])],\n\n ['exception', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n\n ['export', new Map([\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['extends', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n ['nameContents', 'namepath-referencing'],\n\n // Does not show curly brackets in either the signature or examples\n ['typeAllowed', isTypescriptOrClosure || isPermissive],\n\n ['nameRequired', isJsdoc],\n\n // \"namepath\"\n ['typeOrNameRequired', isTypescriptOrClosure || isPermissive],\n ])],\n\n ['external', new Map([\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n ['nameContents', 'namepath-defining'],\n\n // \"name\" (and a special syntax for the `external` name)\n ['nameRequired', true],\n ])],\n\n ['fires', new Map([\n // Signature seems to require a \"name\" (of an event) and no\n // counter-examples\n ['nameContents', 'namepath-referencing'],\n ])],\n\n ['function', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n ])],\n ['func', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n ])],\n\n ['host', new Map([\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n ['nameContents', 'namepath-defining'],\n\n // See `external`\n ['nameRequired', true],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['interface', new Map([\n // Allows for \"name\" in signature, but indicates as optional\n [\n 'nameContents',\n isJsdocTypescriptOrPermissive ? 'namepath-defining' : false,\n ],\n ])],\n\n ['implements', new Map([\n // Shows curly brackets in the doc signature and examples\n // \"typeExpression\"\n ['typeRequired', true],\n ])],\n\n ['lends', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['listens', new Map([\n // Signature seems to require a \"name\" (of an event) and no\n // counter-examples\n ['nameContents', 'namepath-referencing'],\n ])],\n\n ['member', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n // Has example showing curly brackets but not in doc signature\n ['typeAllowed', true],\n ])],\n\n ['memberof', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n ['memberof!', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['method', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n ])],\n ['mixes', new Map([\n // Signature seems to require a \"OtherObjectPath\" with no\n // counter-examples\n ['nameContents', 'namepath-referencing'],\n\n // \"OtherObjectPath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['mixin', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n ])],\n\n ['modifies', new Map([\n // Has no documentation, but test example has curly brackets, and\n // \"name\" would be suggested rather than \"namepath\" based on example;\n // not sure if name is required\n ['typeAllowed', true],\n ])],\n\n ['module', new Map([\n // Optional \"name\" and no curly brackets\n // this block impacts `no-undefined-types` and `valid-types` (search for\n // \"isNamepathDefiningTag|tagMightHaveNamepath|tagMightHaveEitherTypeOrNamePosition\")\n ['nameContents', isJsdoc ? 'namepath-defining' : 'text'],\n\n // Shows the signature with curly brackets but not in the example\n ['typeAllowed', true],\n ])],\n\n ['name', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n ['nameContents', 'namepath-defining'],\n\n // \"namepath\"\n ['nameRequired', true],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['namespace', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n // Shows the signature with curly brackets but not in the example\n ['typeAllowed', true],\n ])],\n ['package', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['param', new Map([\n ['nameContents', 'namepath-defining'],\n\n // Though no signature provided requiring, per\n // https://jsdoc.app/tags-param.html:\n // \"The @param tag requires you to specify the name of the parameter you\n // are documenting.\"\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['private', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['prop', new Map([\n ['nameContents', 'namepath-defining'],\n\n // See `property`\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['property', new Map([\n ['nameContents', 'namepath-defining'],\n\n // No docs indicate required, but since parallel to `param`, we treat as\n // such:\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['protected', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['public', new Map([\n // Does not show a signature nor show curly brackets in the example\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['returns', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n ['return', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n\n ['see', new Map([\n // Signature allows for \"namepath\" or text, so user must configure to\n // 'namepath-referencing' to enforce checks\n ['nameContents', 'text'],\n ])],\n\n ['static', new Map([\n // Does not show a signature nor show curly brackets in the example\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['template', new Map([\n ['nameContents', isJsdoc ? 'text' : 'namepath-referencing'],\n\n // Though defines `nameContents: 'namepath-defining'` in a sense, it is\n // not parseable in the same way for template (e.g., allowing commas),\n // so not adding\n ['typeAllowed', isTypescriptOrClosure || isPermissive],\n ])],\n\n ['this', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n // Not used with namepath in Closure/TypeScript, however\n ['nameContents', isJsdoc ? 'namepath-referencing' : false],\n\n ['typeRequired', isTypescriptOrClosure],\n\n // namepath\n ['typeOrNameRequired', isJsdoc],\n ])],\n\n ['throws', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n\n ['type', new Map([\n // Shows curly brackets in the doc signature and examples\n // \"typeName\"\n ['typeRequired', true],\n ])],\n\n ['typedef', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n ['nameContents', 'namepath-defining'],\n\n // \"namepath\"\n ['nameRequired', isJsdocTypescriptOrPermissive],\n\n // Has example showing curly brackets but not in doc signature\n ['typeAllowed', true],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['var', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n // Has example showing curly brackets but not in doc signature\n ['typeAllowed', true],\n ])],\n\n ['yields', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n ['yield', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n ]);\n};\n\nexport default getDefaultTagStructureForMode;\n"],"file":"getDefaultTagStructureForMode.js"}
|
|
1
|
+
{"version":3,"sources":["../src/getDefaultTagStructureForMode.js"],"names":["getDefaultTagStructureForMode","mode","isJsdoc","isClosure","isTypescript","isPermissive","isJsdocOrTypescript","isTypescriptOrClosure","isClosureOrPermissive","isJsdocTypescriptOrPermissive","Map"],"mappings":"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","sourcesContent":["const getDefaultTagStructureForMode = (mode) => {\n const isJsdoc = mode === 'jsdoc';\n const isClosure = mode === 'closure';\n const isTypescript = mode === 'typescript';\n const isPermissive = mode === 'permissive';\n\n const isJsdocOrTypescript = isJsdoc || isTypescript;\n const isTypescriptOrClosure = isTypescript || isClosure;\n const isClosureOrPermissive = isClosure || isPermissive;\n const isJsdocTypescriptOrPermissive = isJsdocOrTypescript || isPermissive;\n\n // Properties:\n // `nameContents` - 'namepath-referencing'|'namepath-defining'|'text'|false\n // `typeAllowed` - boolean\n // `nameRequired` - boolean\n // `typeRequired` - boolean\n // `typeOrNameRequired` - boolean\n\n // All of `typeAllowed` have a signature with \"type\" except for\n // `augments`/`extends` (\"namepath\")\n // `param`/`arg`/`argument` (no signature)\n // `property`/`prop` (no signature)\n // `modifies` (undocumented)\n\n // None of the `nameContents: 'namepath-defining'` show as having curly\n // brackets for their name/namepath\n\n // Among `namepath-defining` and `namepath-referencing`, these do not seem\n // to allow curly brackets in their doc signature or examples (`modifies`\n // references namepaths within its type brackets and `param` is\n // name-defining but not namepath-defining, so not part of these groups)\n\n // Todo: Should support special processing for \"name\" as distinct from\n // \"namepath\" (e.g., param can't define a namepath)\n\n // Once checking inline tags:\n // Todo: Re: `typeOrNameRequired`, `@link` (or @linkcode/@linkplain) seems\n // to require a namepath OR URL and might be checked as such.\n // Todo: Should support a `tutorialID` type (for `@tutorial` block and\n // inline)\n\n return new Map([\n ['alias', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['arg', new Map([\n ['nameContents', 'namepath-defining'],\n\n // See `param`\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['argument', new Map([\n ['nameContents', 'namepath-defining'],\n\n // See `param`\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['augments', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n ['nameContents', 'namepath-referencing'],\n\n // Does not show curly brackets in either the signature or examples\n ['typeAllowed', true],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['borrows', new Map([\n // `borrows` has a different format, however, so needs special parsing;\n // seems to require both, and as \"namepath\"'s\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['callback', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n ['nameContents', 'namepath-defining'],\n\n // \"namepath\"\n ['nameRequired', true],\n ])],\n\n ['class', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n ['typeAllowed', true],\n ])],\n\n ['const', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n ['typeAllowed', true],\n ])],\n ['constant', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n ['typeAllowed', true],\n ])],\n ['constructor', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n ['typeAllowed', true],\n ])],\n\n ['define', new Map([\n ['typeRequired', isClosure],\n ])],\n\n ['emits', new Map([\n // Signature seems to require a \"name\" (of an event) and no counter-examples\n ['nameContents', 'namepath-referencing'],\n ])],\n\n ['enum', new Map([\n // Has example showing curly brackets but not in doc signature\n ['typeAllowed', true],\n ])],\n\n ['event', new Map([\n // The doc signature of `event` seems to require a \"name\"\n ['nameRequired', true],\n\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n ['nameContents', 'namepath-defining'],\n ])],\n\n ['exception', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n\n ['export', new Map([\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['extends', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n ['nameContents', 'namepath-referencing'],\n\n // Does not show curly brackets in either the signature or examples\n ['typeAllowed', isTypescriptOrClosure || isPermissive],\n\n ['nameRequired', isJsdoc],\n\n // \"namepath\"\n ['typeOrNameRequired', isTypescriptOrClosure || isPermissive],\n ])],\n\n ['external', new Map([\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n ['nameContents', 'namepath-defining'],\n\n // \"name\" (and a special syntax for the `external` name)\n ['nameRequired', true],\n ])],\n\n ['fires', new Map([\n // Signature seems to require a \"name\" (of an event) and no\n // counter-examples\n ['nameContents', 'namepath-referencing'],\n ])],\n\n ['function', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n ])],\n ['func', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n ])],\n\n ['host', new Map([\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n ['nameContents', 'namepath-defining'],\n\n // See `external`\n ['nameRequired', true],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['interface', new Map([\n // Allows for \"name\" in signature, but indicates as optional\n [\n 'nameContents',\n isJsdocTypescriptOrPermissive ? 'namepath-defining' : false,\n ],\n ])],\n\n ['implements', new Map([\n // Shows curly brackets in the doc signature and examples\n // \"typeExpression\"\n ['typeRequired', true],\n ])],\n\n ['lends', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['listens', new Map([\n // Signature seems to require a \"name\" (of an event) and no\n // counter-examples\n ['nameContents', 'namepath-referencing'],\n ])],\n\n ['member', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n // Has example showing curly brackets but not in doc signature\n ['typeAllowed', true],\n ])],\n\n ['memberof', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n ['memberof!', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['method', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n ])],\n ['mixes', new Map([\n // Signature seems to require a \"OtherObjectPath\" with no\n // counter-examples\n ['nameContents', 'namepath-referencing'],\n\n // \"OtherObjectPath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['mixin', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n ])],\n\n ['modifies', new Map([\n // Has no documentation, but test example has curly brackets, and\n // \"name\" would be suggested rather than \"namepath\" based on example;\n // not sure if name is required\n ['typeAllowed', true],\n ])],\n\n ['module', new Map([\n // Optional \"name\" and no curly brackets\n // this block impacts `no-undefined-types` and `valid-types` (search for\n // \"isNamepathDefiningTag|tagMightHaveNamepath|tagMightHaveEitherTypeOrNamePosition\")\n ['nameContents', isJsdoc ? 'namepath-defining' : 'text'],\n\n // Shows the signature with curly brackets but not in the example\n ['typeAllowed', true],\n ])],\n\n ['name', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n ['nameContents', 'namepath-defining'],\n\n // \"namepath\"\n ['nameRequired', true],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['namespace', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n // Shows the signature with curly brackets but not in the example\n ['typeAllowed', true],\n ])],\n ['package', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['param', new Map([\n ['nameContents', 'namepath-defining'],\n\n // Though no signature provided requiring, per\n // https://jsdoc.app/tags-param.html:\n // \"The @param tag requires you to specify the name of the parameter you\n // are documenting.\"\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['private', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['prop', new Map([\n ['nameContents', 'namepath-defining'],\n\n // See `property`\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['property', new Map([\n ['nameContents', 'namepath-defining'],\n\n // No docs indicate required, but since parallel to `param`, we treat as\n // such:\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['protected', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['public', new Map([\n // Does not show a signature nor show curly brackets in the example\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['returns', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n ['return', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n\n ['see', new Map([\n // Signature allows for \"namepath\" or text, so user must configure to\n // 'namepath-referencing' to enforce checks\n ['nameContents', 'text'],\n ])],\n\n ['static', new Map([\n // Does not show a signature nor show curly brackets in the example\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['suppress', new Map([\n ['nameContents', !isClosure],\n ['typeRequired', isClosure],\n ])],\n\n ['template', new Map([\n ['nameContents', isJsdoc ? 'text' : 'namepath-referencing'],\n\n // Though defines `nameContents: 'namepath-defining'` in a sense, it is\n // not parseable in the same way for template (e.g., allowing commas),\n // so not adding\n ['typeAllowed', isTypescriptOrClosure || isPermissive],\n ])],\n\n ['this', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n // Not used with namepath in Closure/TypeScript, however\n ['nameContents', isJsdoc ? 'namepath-referencing' : false],\n\n ['typeRequired', isTypescriptOrClosure],\n\n // namepath\n ['typeOrNameRequired', isJsdoc],\n ])],\n\n ['throws', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n\n ['type', new Map([\n // Shows curly brackets in the doc signature and examples\n // \"typeName\"\n ['typeRequired', true],\n ])],\n\n ['typedef', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n ['nameContents', 'namepath-defining'],\n\n // \"namepath\"\n ['nameRequired', isJsdocTypescriptOrPermissive],\n\n // Has example showing curly brackets but not in doc signature\n ['typeAllowed', true],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['var', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n // Has example showing curly brackets but not in doc signature\n ['typeAllowed', true],\n ])],\n\n ['yields', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n ['yield', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n ]);\n};\n\nexport default getDefaultTagStructureForMode;\n"],"file":"getDefaultTagStructureForMode.js"}
|
package/dist/rules/validTypes.js
CHANGED
|
@@ -12,6 +12,10 @@ var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
|
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
13
|
|
|
14
14
|
const asExpression = /as\s+/u;
|
|
15
|
+
const suppressTypes = new Set([// https://github.com/google/closure-compiler/wiki/@suppress-annotations
|
|
16
|
+
// https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/parsing/ParserConfig.properties#L154
|
|
17
|
+
'accessControls', 'checkDebuggerStatement', 'checkPrototypalTypes', 'checkRegExp', 'checkTypes', 'checkVars', 'closureDepMethodUsageChecks', 'const', 'constantProperty', 'deprecated', 'duplicate', 'es5Strict', 'externsValidation', 'extraProvide', 'extraRequire', 'globalThis', 'invalidCasts', 'lateProvide', 'legacyGoogScopeRequire', 'lintChecks', 'messageConventions', 'misplacedTypeAnnotation', 'missingOverride', 'missingPolyfill', 'missingProperties', 'missingProvide', 'missingRequire', 'missingSourcesWarnings', 'moduleLoad', 'nonStandardJsDocs', 'partialAlias', 'polymer', 'reportUnknownTypes', 'strictMissingProperties', 'strictModuleDepCheck', 'strictPrimitiveOperators', 'suspiciousCode', // Not documented in enum
|
|
18
|
+
'switch', 'transitionalSuspiciousCodeWarnings', 'undefinedNames', 'undefinedVars', 'underscore', 'unknownDefines', 'untranspilableFeatures', 'unusedLocalVariables', 'unusedPrivateMembers', 'useOfGoogProvide', 'uselessCode', 'visibility', 'with']);
|
|
15
19
|
|
|
16
20
|
const tryParsePathIgnoreError = path => {
|
|
17
21
|
try {
|
|
@@ -120,6 +124,27 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
120
124
|
continue;
|
|
121
125
|
}
|
|
122
126
|
|
|
127
|
+
if (tag.tag === 'suppress' && mode === 'closure') {
|
|
128
|
+
let parsedTypes;
|
|
129
|
+
|
|
130
|
+
try {
|
|
131
|
+
parsedTypes = (0, _jsdocTypePrattParser.tryParse)(tag.type);
|
|
132
|
+
} catch {// Ignore
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (parsedTypes) {
|
|
136
|
+
(0, _jsdocTypePrattParser.traverse)(parsedTypes, node => {
|
|
137
|
+
const {
|
|
138
|
+
value: type
|
|
139
|
+
} = node;
|
|
140
|
+
|
|
141
|
+
if (type !== undefined && !suppressTypes.has(type)) {
|
|
142
|
+
report(`Syntax error in supresss type: ${type}`, null, tag);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
123
148
|
const otherModeMaps = ['jsdoc', 'typescript', 'closure', 'permissive'].filter(mde => {
|
|
124
149
|
return mde !== mode;
|
|
125
150
|
}).map(mde => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/validTypes.js"],"names":["asExpression","tryParsePathIgnoreError","path","jsdoc","report","utils","context","settings","allowEmptyNamepaths","options","mode","tag","tags","validNamepathParsing","namepath","tagName","handled","startsWith","endChar","slice","includes","startChar","charAt","validTypeParsing","type","thisNamepath","getTagDescription","replace","trim","test","thatNamepath","name","otherModeMaps","filter","mde","map","getTagStructureForMode","tagMightHaveNamePosition","modeInfo","mightHaveTypePosition","tagMightHaveTypePosition","tagMustHaveNamePosition","mustHaveTypePosition","tagMustHaveTypePosition","tagMissingRequiredTypeOrNamepath","hasTypePosition","Boolean","hasNameOrNamepathPosition","tagMightHaveNamepath","parseClosureTemplateTag","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperies","properties","default"],"mappings":"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","sourcesContent":["import {\n tryParse, parse,\n} from 'jsdoc-type-pratt-parser';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst asExpression = /as\\s+/u;\n\nconst tryParsePathIgnoreError = (path) => {\n try {\n tryParse(path);\n\n return true;\n } catch {\n // Keep the original error for including the whole type\n }\n\n return false;\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n settings,\n}) => {\n const {\n allowEmptyNamepaths = false,\n } = context.options[0] || {};\n const {mode} = settings;\n\n for (const tag of jsdoc.tags) {\n const validNamepathParsing = function (namepath, tagName) {\n if (tryParsePathIgnoreError(namepath)) {\n return true;\n }\n\n let handled = false;\n\n if (tagName) {\n // eslint-disable-next-line default-case\n switch (tagName) {\n case 'module': {\n if (!namepath.startsWith('module:')) {\n handled = tryParsePathIgnoreError(`module:${namepath}`);\n }\n\n break;\n }\n\n case 'memberof': case 'memberof!': {\n const endChar = namepath.slice(-1);\n if (['#', '.', '~'].includes(endChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(0, -1));\n }\n\n break;\n }\n\n case 'borrows': {\n const startChar = namepath.charAt();\n if (['#', '.', '~'].includes(startChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(1));\n }\n }\n }\n }\n\n if (!handled) {\n report(`Syntax error in namepath: ${namepath}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n const validTypeParsing = function (type) {\n try {\n if (mode === 'permissive') {\n tryParse(type);\n } else {\n parse(type, mode);\n }\n } catch {\n report(`Syntax error in type: ${type}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n if (tag.tag === 'borrows') {\n const thisNamepath = utils.getTagDescription(tag).replace(asExpression, '')\n .trim();\n\n if (!asExpression.test(utils.getTagDescription(tag)) || !thisNamepath) {\n report(`@borrows must have an \"as\" expression. Found \"${utils.getTagDescription(tag)}\"`, null, tag);\n\n continue;\n }\n\n if (validNamepathParsing(thisNamepath, 'borrows')) {\n const thatNamepath = tag.name;\n\n validNamepathParsing(thatNamepath);\n }\n\n continue;\n }\n\n const otherModeMaps = ['jsdoc', 'typescript', 'closure', 'permissive'].filter(\n (mde) => {\n return mde !== mode;\n },\n ).map((mde) => {\n return utils.getTagStructureForMode(mde);\n });\n\n const tagMightHaveNamePosition = utils.tagMightHaveNamePosition(tag.tag, otherModeMaps);\n if (tagMightHaveNamePosition !== true && tag.name) {\n const modeInfo = tagMightHaveNamePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a name${modeInfo}.`, null, tag);\n\n continue;\n }\n\n const mightHaveTypePosition = utils.tagMightHaveTypePosition(tag.tag, otherModeMaps);\n if (mightHaveTypePosition !== true && tag.type) {\n const modeInfo = mightHaveTypePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a bracketed type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED NAME\n const tagMustHaveNamePosition = utils.tagMustHaveNamePosition(tag.tag, otherModeMaps);\n\n // Don't handle `@param` here though it does require name as handled by\n // `require-param-name` (`@property` would similarly seem to require one,\n // but is handled by `require-property-name`)\n if (tagMustHaveNamePosition !== false && !tag.name && !allowEmptyNamepaths && ![\n 'param', 'arg', 'argument',\n 'property', 'prop',\n ].includes(tag.tag) &&\n (tag.tag !== 'see' || !utils.getTagDescription(tag).includes('{@link'))\n ) {\n const modeInfo = tagMustHaveNamePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a name/namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE\n const mustHaveTypePosition = utils.tagMustHaveTypePosition(tag.tag, otherModeMaps);\n if (mustHaveTypePosition !== false && !tag.type) {\n const modeInfo = mustHaveTypePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE OR NAME/NAMEPATH\n const tagMissingRequiredTypeOrNamepath = utils.tagMissingRequiredTypeOrNamepath(tag, otherModeMaps);\n if (tagMissingRequiredTypeOrNamepath !== false && !allowEmptyNamepaths) {\n const modeInfo = tagMissingRequiredTypeOrNamepath === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have either a type or namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // VALID TYPE\n const hasTypePosition = mightHaveTypePosition === true && Boolean(tag.type);\n if (hasTypePosition) {\n validTypeParsing(tag.type);\n }\n\n // VALID NAME/NAMEPATH\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition !== false ||\n utils.tagMightHaveNamepath(tag.tag)\n ) && Boolean(tag.name);\n\n if (hasNameOrNamepathPosition) {\n if (mode !== 'jsdoc' && tag.tag === 'template') {\n for (const namepath of utils.parseClosureTemplateTag(tag)) {\n validNamepathParsing(namepath);\n }\n } else {\n validNamepathParsing(tag.name, tag.tag);\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires all types to be valid JSDoc or Closure compiler types without syntax errors.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-valid-types',\n },\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowEmptyNamepaths: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"validTypes.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/rules/validTypes.js"],"names":["asExpression","suppressTypes","Set","tryParsePathIgnoreError","path","jsdoc","report","utils","context","settings","allowEmptyNamepaths","options","mode","tag","tags","validNamepathParsing","namepath","tagName","handled","startsWith","endChar","slice","includes","startChar","charAt","validTypeParsing","type","thisNamepath","getTagDescription","replace","trim","test","thatNamepath","name","parsedTypes","node","value","undefined","has","otherModeMaps","filter","mde","map","getTagStructureForMode","tagMightHaveNamePosition","modeInfo","mightHaveTypePosition","tagMightHaveTypePosition","tagMustHaveNamePosition","mustHaveTypePosition","tagMustHaveTypePosition","tagMissingRequiredTypeOrNamepath","hasTypePosition","Boolean","hasNameOrNamepathPosition","tagMightHaveNamepath","parseClosureTemplateTag","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperies","properties","default"],"mappings":"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","sourcesContent":["import {\n tryParse, parse, traverse,\n} from 'jsdoc-type-pratt-parser';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst asExpression = /as\\s+/u;\n\nconst suppressTypes = new Set([\n // https://github.com/google/closure-compiler/wiki/@suppress-annotations\n // https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/parsing/ParserConfig.properties#L154\n 'accessControls',\n 'checkDebuggerStatement',\n 'checkPrototypalTypes',\n 'checkRegExp',\n 'checkTypes',\n 'checkVars',\n 'closureDepMethodUsageChecks',\n 'const',\n 'constantProperty',\n 'deprecated',\n 'duplicate',\n 'es5Strict',\n 'externsValidation',\n 'extraProvide',\n 'extraRequire',\n 'globalThis',\n 'invalidCasts',\n 'lateProvide',\n 'legacyGoogScopeRequire',\n 'lintChecks',\n 'messageConventions',\n 'misplacedTypeAnnotation',\n 'missingOverride',\n 'missingPolyfill',\n 'missingProperties',\n 'missingProvide',\n 'missingRequire',\n 'missingSourcesWarnings',\n 'moduleLoad',\n 'nonStandardJsDocs',\n 'partialAlias',\n 'polymer',\n 'reportUnknownTypes',\n 'strictMissingProperties',\n 'strictModuleDepCheck',\n 'strictPrimitiveOperators',\n 'suspiciousCode',\n\n // Not documented in enum\n 'switch',\n 'transitionalSuspiciousCodeWarnings',\n 'undefinedNames',\n 'undefinedVars',\n 'underscore',\n 'unknownDefines',\n 'untranspilableFeatures',\n 'unusedLocalVariables',\n 'unusedPrivateMembers',\n 'useOfGoogProvide',\n 'uselessCode',\n 'visibility',\n 'with',\n]);\n\nconst tryParsePathIgnoreError = (path) => {\n try {\n tryParse(path);\n\n return true;\n } catch {\n // Keep the original error for including the whole type\n }\n\n return false;\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n settings,\n}) => {\n const {\n allowEmptyNamepaths = false,\n } = context.options[0] || {};\n const {mode} = settings;\n\n for (const tag of jsdoc.tags) {\n const validNamepathParsing = function (namepath, tagName) {\n if (tryParsePathIgnoreError(namepath)) {\n return true;\n }\n\n let handled = false;\n\n if (tagName) {\n // eslint-disable-next-line default-case\n switch (tagName) {\n case 'module': {\n if (!namepath.startsWith('module:')) {\n handled = tryParsePathIgnoreError(`module:${namepath}`);\n }\n\n break;\n }\n\n case 'memberof': case 'memberof!': {\n const endChar = namepath.slice(-1);\n if (['#', '.', '~'].includes(endChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(0, -1));\n }\n\n break;\n }\n\n case 'borrows': {\n const startChar = namepath.charAt();\n if (['#', '.', '~'].includes(startChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(1));\n }\n }\n }\n }\n\n if (!handled) {\n report(`Syntax error in namepath: ${namepath}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n const validTypeParsing = function (type) {\n try {\n if (mode === 'permissive') {\n tryParse(type);\n } else {\n parse(type, mode);\n }\n } catch {\n report(`Syntax error in type: ${type}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n if (tag.tag === 'borrows') {\n const thisNamepath = utils.getTagDescription(tag).replace(asExpression, '')\n .trim();\n\n if (!asExpression.test(utils.getTagDescription(tag)) || !thisNamepath) {\n report(`@borrows must have an \"as\" expression. Found \"${utils.getTagDescription(tag)}\"`, null, tag);\n\n continue;\n }\n\n if (validNamepathParsing(thisNamepath, 'borrows')) {\n const thatNamepath = tag.name;\n\n validNamepathParsing(thatNamepath);\n }\n\n continue;\n }\n\n if (tag.tag === 'suppress' && mode === 'closure') {\n let parsedTypes;\n\n try {\n parsedTypes = tryParse(tag.type);\n } catch {\n // Ignore\n }\n\n if (parsedTypes) {\n traverse(parsedTypes, (node) => {\n const {value: type} = node;\n if (type !== undefined && !suppressTypes.has(type)) {\n report(`Syntax error in supresss type: ${type}`, null, tag);\n }\n });\n }\n }\n\n const otherModeMaps = ['jsdoc', 'typescript', 'closure', 'permissive'].filter(\n (mde) => {\n return mde !== mode;\n },\n ).map((mde) => {\n return utils.getTagStructureForMode(mde);\n });\n\n const tagMightHaveNamePosition = utils.tagMightHaveNamePosition(tag.tag, otherModeMaps);\n if (tagMightHaveNamePosition !== true && tag.name) {\n const modeInfo = tagMightHaveNamePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a name${modeInfo}.`, null, tag);\n\n continue;\n }\n\n const mightHaveTypePosition = utils.tagMightHaveTypePosition(tag.tag, otherModeMaps);\n if (mightHaveTypePosition !== true && tag.type) {\n const modeInfo = mightHaveTypePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a bracketed type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED NAME\n const tagMustHaveNamePosition = utils.tagMustHaveNamePosition(tag.tag, otherModeMaps);\n\n // Don't handle `@param` here though it does require name as handled by\n // `require-param-name` (`@property` would similarly seem to require one,\n // but is handled by `require-property-name`)\n if (tagMustHaveNamePosition !== false && !tag.name && !allowEmptyNamepaths && ![\n 'param', 'arg', 'argument',\n 'property', 'prop',\n ].includes(tag.tag) &&\n (tag.tag !== 'see' || !utils.getTagDescription(tag).includes('{@link'))\n ) {\n const modeInfo = tagMustHaveNamePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a name/namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE\n const mustHaveTypePosition = utils.tagMustHaveTypePosition(tag.tag, otherModeMaps);\n if (mustHaveTypePosition !== false && !tag.type) {\n const modeInfo = mustHaveTypePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE OR NAME/NAMEPATH\n const tagMissingRequiredTypeOrNamepath = utils.tagMissingRequiredTypeOrNamepath(tag, otherModeMaps);\n if (tagMissingRequiredTypeOrNamepath !== false && !allowEmptyNamepaths) {\n const modeInfo = tagMissingRequiredTypeOrNamepath === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have either a type or namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // VALID TYPE\n const hasTypePosition = mightHaveTypePosition === true && Boolean(tag.type);\n if (hasTypePosition) {\n validTypeParsing(tag.type);\n }\n\n // VALID NAME/NAMEPATH\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition !== false ||\n utils.tagMightHaveNamepath(tag.tag)\n ) && Boolean(tag.name);\n\n if (hasNameOrNamepathPosition) {\n if (mode !== 'jsdoc' && tag.tag === 'template') {\n for (const namepath of utils.parseClosureTemplateTag(tag)) {\n validNamepathParsing(namepath);\n }\n } else {\n validNamepathParsing(tag.name, tag.tag);\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires all types to be valid JSDoc or Closure compiler types without syntax errors.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-valid-types',\n },\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowEmptyNamepaths: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"validTypes.js"}
|
package/package.json
CHANGED
|
@@ -107,5 +107,5 @@
|
|
|
107
107
|
"test-index": "cross-env BABEL_ENV=test mocha --recursive --require @babel/register --reporter progress --timeout 12000 test/rules/index.js",
|
|
108
108
|
"test-no-cov": "cross-env BABEL_ENV=test mocha --reporter dot --recursive --require @babel/register --timeout 12000"
|
|
109
109
|
},
|
|
110
|
-
"version": "37.
|
|
110
|
+
"version": "37.3.0"
|
|
111
111
|
}
|