eslint-plugin-jsdoc 37.0.0 → 37.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.
Files changed (78) hide show
  1. package/README.md +22 -0
  2. package/dist/alignTransform.js +3 -1
  3. package/dist/alignTransform.js.map +1 -1
  4. package/dist/bin/generateRule.js +2 -4
  5. package/dist/bin/generateRule.js.map +1 -1
  6. package/dist/exportParser.js +32 -18
  7. package/dist/exportParser.js.map +1 -1
  8. package/dist/generateRule.js +2 -4
  9. package/dist/generateRule.js.map +1 -1
  10. package/dist/iterateJsdoc.js +50 -40
  11. package/dist/iterateJsdoc.js.map +1 -1
  12. package/dist/jsdocUtils.js +36 -24
  13. package/dist/jsdocUtils.js.map +1 -1
  14. package/dist/rules/checkAccess.js.map +1 -1
  15. package/dist/rules/checkExamples.js +9 -6
  16. package/dist/rules/checkExamples.js.map +1 -1
  17. package/dist/rules/checkIndentation.js +4 -4
  18. package/dist/rules/checkIndentation.js.map +1 -1
  19. package/dist/rules/checkLineAlignment.js +6 -4
  20. package/dist/rules/checkLineAlignment.js.map +1 -1
  21. package/dist/rules/checkParamNames.js +17 -12
  22. package/dist/rules/checkParamNames.js.map +1 -1
  23. package/dist/rules/checkPropertyNames.js.map +1 -1
  24. package/dist/rules/checkTagNames.js +6 -6
  25. package/dist/rules/checkTagNames.js.map +1 -1
  26. package/dist/rules/checkTypes.js +10 -9
  27. package/dist/rules/checkTypes.js.map +1 -1
  28. package/dist/rules/checkValues.js.map +1 -1
  29. package/dist/rules/emptyTags.js +3 -2
  30. package/dist/rules/emptyTags.js.map +1 -1
  31. package/dist/rules/matchDescription.js +1 -1
  32. package/dist/rules/matchDescription.js.map +1 -1
  33. package/dist/rules/matchName.js +6 -4
  34. package/dist/rules/matchName.js.map +1 -1
  35. package/dist/rules/multilineBlocks.js +4 -2
  36. package/dist/rules/multilineBlocks.js.map +1 -1
  37. package/dist/rules/newlineAfterDescription.js +2 -4
  38. package/dist/rules/newlineAfterDescription.js.map +1 -1
  39. package/dist/rules/noBadBlocks.js +3 -3
  40. package/dist/rules/noBadBlocks.js.map +1 -1
  41. package/dist/rules/noDefaults.js +9 -6
  42. package/dist/rules/noDefaults.js.map +1 -1
  43. package/dist/rules/noMissingSyntax.js.map +1 -1
  44. package/dist/rules/noMultiAsterisks.js +1 -1
  45. package/dist/rules/noMultiAsterisks.js.map +1 -1
  46. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  47. package/dist/rules/noTypes.js +6 -3
  48. package/dist/rules/noTypes.js.map +1 -1
  49. package/dist/rules/noUndefinedTypes.js +14 -16
  50. package/dist/rules/noUndefinedTypes.js.map +1 -1
  51. package/dist/rules/requireAsteriskPrefix.js.map +1 -1
  52. package/dist/rules/requireDescription.js +10 -12
  53. package/dist/rules/requireDescription.js.map +1 -1
  54. package/dist/rules/requireDescriptionCompleteSentence.js +7 -8
  55. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  56. package/dist/rules/requireExample.js +7 -8
  57. package/dist/rules/requireExample.js.map +1 -1
  58. package/dist/rules/requireFileOverview.js.map +1 -1
  59. package/dist/rules/requireHyphenBeforeParamDescription.js +10 -7
  60. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  61. package/dist/rules/requireJsdoc.js +12 -9
  62. package/dist/rules/requireJsdoc.js.map +1 -1
  63. package/dist/rules/requireParam.js +35 -31
  64. package/dist/rules/requireParam.js.map +1 -1
  65. package/dist/rules/requireProperty.js +3 -3
  66. package/dist/rules/requireProperty.js.map +1 -1
  67. package/dist/rules/requireReturns.js +1 -1
  68. package/dist/rules/requireReturns.js.map +1 -1
  69. package/dist/rules/requireReturnsCheck.js.map +1 -1
  70. package/dist/rules/requireThrows.js +4 -5
  71. package/dist/rules/requireThrows.js.map +1 -1
  72. package/dist/rules/requireYields.js +2 -4
  73. package/dist/rules/requireYields.js.map +1 -1
  74. package/dist/rules/tagLines.js +11 -8
  75. package/dist/rules/tagLines.js.map +1 -1
  76. package/dist/rules/validTypes.js +15 -13
  77. package/dist/rules/validTypes.js.map +1 -1
  78. package/package.json +51 -48
@@ -17,23 +17,26 @@ var _default = (0, _iterateJsdoc.default)(({
17
17
  noOptionalParamNames
18
18
  } = context.options[0] || {};
19
19
  const paramTags = utils.getPresentTags(['param', 'arg', 'argument']);
20
- paramTags.forEach(tag => {
20
+
21
+ for (const tag of paramTags) {
21
22
  if (noOptionalParamNames && tag.optional) {
22
23
  utils.reportJSDoc(`Optional param names are not permitted on @${tag.tag}.`, tag, () => {
23
24
  utils.changeTag(tag, {
24
- name: tag.name.replace(/([^=]*)(=.+)?/, '$1')
25
+ name: tag.name.replace(/([^=]*)(=.+)?/u, '$1')
25
26
  });
26
27
  });
27
28
  } else if (tag.default) {
28
29
  utils.reportJSDoc(`Defaults are not permitted on @${tag.tag}.`, tag, () => {
29
30
  utils.changeTag(tag, {
30
- name: tag.name.replace(/([^=]*)(=.+)?/, '[$1]')
31
+ name: tag.name.replace(/([^=]*)(=.+)?/u, '[$1]')
31
32
  });
32
33
  });
33
34
  }
34
- });
35
+ }
36
+
35
37
  const defaultTags = utils.getPresentTags(['default', 'defaultvalue']);
36
- defaultTags.forEach(tag => {
38
+
39
+ for (const tag of defaultTags) {
37
40
  if (tag.description.trim()) {
38
41
  utils.reportJSDoc(`Default values are not permitted on @${tag.tag}.`, tag, () => {
39
42
  utils.changeTag(tag, {
@@ -42,7 +45,7 @@ var _default = (0, _iterateJsdoc.default)(({
42
45
  });
43
46
  });
44
47
  }
45
- });
48
+ }
46
49
  }, {
47
50
  contextDefaults: true,
48
51
  meta: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noDefaults.js"],"names":["context","utils","noOptionalParamNames","options","paramTags","getPresentTags","forEach","tag","optional","reportJSDoc","changeTag","name","replace","default","defaultTags","description","trim","postTag","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","type","comment"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n utils,\n}) => {\n const {noOptionalParamNames} = context.options[0] || {};\n const paramTags = utils.getPresentTags(['param', 'arg', 'argument']);\n paramTags.forEach((tag) => {\n if (noOptionalParamNames && tag.optional) {\n utils.reportJSDoc(`Optional param names are not permitted on @${tag.tag}.`, tag, () => {\n utils.changeTag(tag, {\n name: tag.name.replace(/([^=]*)(=.+)?/, '$1'),\n });\n });\n } else if (tag.default) {\n utils.reportJSDoc(`Defaults are not permitted on @${tag.tag}.`, tag, () => {\n utils.changeTag(tag, {\n name: tag.name.replace(/([^=]*)(=.+)?/, '[$1]'),\n });\n });\n }\n });\n const defaultTags = utils.getPresentTags(['default', 'defaultvalue']);\n defaultTags.forEach((tag) => {\n if (tag.description.trim()) {\n utils.reportJSDoc(`Default values are not permitted on @${tag.tag}.`, tag, () => {\n utils.changeTag(tag, {\n description: '',\n postTag: '',\n });\n });\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'This rule reports defaults being used on the relevant portion of `@param` or `@default`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-defaults',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n noOptionalParamNames: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noDefaults.js"}
1
+ {"version":3,"sources":["../../src/rules/noDefaults.js"],"names":["context","utils","noOptionalParamNames","options","paramTags","getPresentTags","tag","optional","reportJSDoc","changeTag","name","replace","default","defaultTags","description","trim","postTag","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","type","comment"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,OAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJ,QAAM;AAACC,IAAAA;AAAD,MAAyBF,OAAO,CAACG,OAAR,CAAgB,CAAhB,KAAsB,EAArD;AACA,QAAMC,SAAS,GAAGH,KAAK,CAACI,cAAN,CAAqB,CAAC,OAAD,EAAU,KAAV,EAAiB,UAAjB,CAArB,CAAlB;;AACA,OAAK,MAAMC,GAAX,IAAkBF,SAAlB,EAA6B;AAC3B,QAAIF,oBAAoB,IAAII,GAAG,CAACC,QAAhC,EAA0C;AACxCN,MAAAA,KAAK,CAACO,WAAN,CAAmB,8CAA6CF,GAAG,CAACA,GAAI,GAAxE,EAA4EA,GAA5E,EAAiF,MAAM;AACrFL,QAAAA,KAAK,CAACQ,SAAN,CAAgBH,GAAhB,EAAqB;AACnBI,UAAAA,IAAI,EAAEJ,GAAG,CAACI,IAAJ,CAASC,OAAT,CAAiB,gBAAjB,EAAmC,IAAnC;AADa,SAArB;AAGD,OAJD;AAKD,KAND,MAMO,IAAIL,GAAG,CAACM,OAAR,EAAiB;AACtBX,MAAAA,KAAK,CAACO,WAAN,CAAmB,kCAAiCF,GAAG,CAACA,GAAI,GAA5D,EAAgEA,GAAhE,EAAqE,MAAM;AACzEL,QAAAA,KAAK,CAACQ,SAAN,CAAgBH,GAAhB,EAAqB;AACnBI,UAAAA,IAAI,EAAEJ,GAAG,CAACI,IAAJ,CAASC,OAAT,CAAiB,gBAAjB,EAAmC,MAAnC;AADa,SAArB;AAGD,OAJD;AAKD;AACF;;AAED,QAAME,WAAW,GAAGZ,KAAK,CAACI,cAAN,CAAqB,CAAC,SAAD,EAAY,cAAZ,CAArB,CAApB;;AACA,OAAK,MAAMC,GAAX,IAAkBO,WAAlB,EAA+B;AAC7B,QAAIP,GAAG,CAACQ,WAAJ,CAAgBC,IAAhB,EAAJ,EAA4B;AAC1Bd,MAAAA,KAAK,CAACO,WAAN,CAAmB,wCAAuCF,GAAG,CAACA,GAAI,GAAlE,EAAsEA,GAAtE,EAA2E,MAAM;AAC/EL,QAAAA,KAAK,CAACQ,SAAN,CAAgBH,GAAhB,EAAqB;AACnBQ,UAAAA,WAAW,EAAE,EADM;AAEnBE,UAAAA,OAAO,EAAE;AAFU,SAArB;AAID,OALD;AAMD;AACF;AACF,CAjCc,EAiCZ;AACDC,EAAAA,eAAe,EAAE,IADhB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJL,MAAAA,WAAW,EAAE,0FADT;AAEJM,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,MALL;AAMJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVC,QAAAA,QAAQ,EAAE;AACRC,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACEC,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEL,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVK,gBAAAA,OAAO,EAAE;AACPD,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIV5B,gBAAAA,OAAO,EAAE;AACP4B,kBAAAA,IAAI,EAAE;AADC;AAJC,eAFd;AAUEA,cAAAA,IAAI,EAAE;AAVR,aAJK;AADF,WADC;AAoBRA,UAAAA,IAAI,EAAE;AApBE,SADA;AAuBV1B,QAAAA,oBAAoB,EAAE;AACpB0B,UAAAA,IAAI,EAAE;AADc;AAvBZ,OAFd;AA6BEA,MAAAA,IAAI,EAAE;AA7BR,KADM,CANJ;AAuCJA,IAAAA,IAAI,EAAE;AAvCF;AAFL,CAjCY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n utils,\n}) => {\n const {noOptionalParamNames} = context.options[0] || {};\n const paramTags = utils.getPresentTags(['param', 'arg', 'argument']);\n for (const tag of paramTags) {\n if (noOptionalParamNames && tag.optional) {\n utils.reportJSDoc(`Optional param names are not permitted on @${tag.tag}.`, tag, () => {\n utils.changeTag(tag, {\n name: tag.name.replace(/([^=]*)(=.+)?/u, '$1'),\n });\n });\n } else if (tag.default) {\n utils.reportJSDoc(`Defaults are not permitted on @${tag.tag}.`, tag, () => {\n utils.changeTag(tag, {\n name: tag.name.replace(/([^=]*)(=.+)?/u, '[$1]'),\n });\n });\n }\n }\n\n const defaultTags = utils.getPresentTags(['default', 'defaultvalue']);\n for (const tag of defaultTags) {\n if (tag.description.trim()) {\n utils.reportJSDoc(`Default values are not permitted on @${tag.tag}.`, tag, () => {\n utils.changeTag(tag, {\n description: '',\n postTag: '',\n });\n });\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'This rule reports defaults being used on the relevant portion of `@param` or `@default`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-defaults',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n noOptionalParamNames: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noDefaults.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noMissingSyntax.js"],"names":["setDefaults","state","selectorMap","incrementSelector","selector","comment","info","contextSelected","exit","context","options","length","report","loc","start","column","line","message","contexts","some","cntxt","contextStr","contextKey","undefined","minimum","Object","values","every","cmmnt","data","end","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,WAAW,GAAIC,KAAD,IAAW;AAC7B,MAAI,CAACA,KAAK,CAACC,WAAX,EAAwB;AACtBD,IAAAA,KAAK,CAACC,WAAN,GAAoB,EAApB;AACD;AACF,CAJD;;AAMA,MAAMC,iBAAiB,GAAG,CAACF,KAAD,EAAQG,QAAR,EAAkBC,OAAlB,KAA8B;AACtD,MAAI,CAACJ,KAAK,CAACC,WAAN,CAAkBE,QAAlB,CAAL,EAAkC;AAChCH,IAAAA,KAAK,CAACC,WAAN,CAAkBE,QAAlB,IAA8B,EAA9B;AACD;;AACD,MAAI,CAACH,KAAK,CAACC,WAAN,CAAkBE,QAAlB,EAA4BC,OAA5B,CAAL,EAA2C;AACzCJ,IAAAA,KAAK,CAACC,WAAN,CAAkBE,QAAlB,EAA4BC,OAA5B,IAAuC,CAAvC;AACD;;AACDJ,EAAAA,KAAK,CAACC,WAAN,CAAkBE,QAAlB,EAA4BC,OAA5B;AACD,CARD;;eAUe,2BAAa,CAAC;AAC3BC,EAAAA,IAAI,EAAE;AAACF,IAAAA,QAAD;AAAWC,IAAAA;AAAX,GADqB;AAE3BJ,EAAAA;AAF2B,CAAD,KAGtB;AACJD,EAAAA,WAAW,CAACC,KAAD,CAAX;AAEAE,EAAAA,iBAAiB,CAACF,KAAD,EAAQG,QAAR,EAAkBC,OAAlB,CAAjB;AACD,CAPc,EAOZ;AACDE,EAAAA,eAAe,EAAE,IADhB;;AAEDC,EAAAA,IAAI,CAAE;AACJC,IAAAA,OADI;AACKR,IAAAA;AADL,GAAF,EAED;AACD,QAAI,CAACQ,OAAO,CAACC,OAAR,CAAgBC,MAArB,EAA6B;AAC3BF,MAAAA,OAAO,CAACG,MAAR,CAAe;AACbC,QAAAA,GAAG,EAAE;AACHC,UAAAA,KAAK,EAAE;AACLC,YAAAA,MAAM,EAAE,CADH;AAELC,YAAAA,IAAI,EAAE;AAFD;AADJ,SADQ;AAObC,QAAAA,OAAO,EAAE;AAPI,OAAf;AAUA;AACD;;AACDjB,IAAAA,WAAW,CAACC,KAAD,CAAX;AAEA,UAAM;AACJiB,MAAAA;AADI,QAEFT,OAAO,CAACC,OAAR,CAAgB,CAAhB,CAFJ,CAhBC,CAoBD;;AACAQ,IAAAA,QAAQ,CAACC,IAAT,CAAeC,KAAD,IAAW;AAAA;;AACvB,YAAMC,UAAU,GAAG,OAAOD,KAAP,KAAiB,QAAjB,qBAA4BA,KAAK,CAACX,OAAlC,2DAA6C,KAA7C,GAAqDW,KAAxE;AACA,YAAMf,OAAO,qBAAGe,KAAH,aAAGA,KAAH,uBAAGA,KAAK,CAAEf,OAAV,2DAAqB,EAAlC;AAEA,YAAMiB,UAAU,GAAGD,UAAU,KAAK,KAAf,GAAuBE,SAAvB,GAAmCF,UAAtD;;AAEA,UACE,CAAC,CAACpB,KAAK,CAACC,WAAN,CAAkBoB,UAAlB,CAAD,IACD,CAACrB,KAAK,CAACC,WAAN,CAAkBoB,UAAlB,EAA8BjB,OAA9B,CADA,IAEDJ,KAAK,CAACC,WAAN,CAAkBoB,UAAlB,EAA8BjB,OAA9B,uBAA0Ce,KAA1C,aAA0CA,KAA1C,uBAA0CA,KAAK,CAAEI,OAAjD,2DAA4D,CAA5D,CAFA,MAGCH,UAAU,KAAK,KAAf,IAAwBI,MAAM,CAACC,MAAP,CAAczB,KAAK,CAACC,WAApB,EAAiCyB,KAAjC,CAAwCC,KAAD,IAAW;AAAA;;AACzE,eAAO,CAACA,KAAK,CAACvB,OAAD,CAAN,IAAmBuB,KAAK,CAACvB,OAAD,CAAL,uBAAkBe,KAAlB,aAAkBA,KAAlB,uBAAkBA,KAAK,CAAEI,OAAzB,6DAAoC,CAApC,CAA1B;AACD,OAFwB,CAHzB,CADF,EAOE;AAAA;;AACA,cAAMP,OAAO,qBAAGG,KAAH,aAAGA,KAAH,uBAAGA,KAAK,CAAEH,OAAV,2DAAqB,qCAC/BZ,OAAO,GAAG,mBAAH,GAAyB,EADD,CAAlC;AAEAI,QAAAA,OAAO,CAACG,MAAR,CAAe;AACbiB,UAAAA,IAAI,EAAE;AACJxB,YAAAA,OADI;AAEJI,YAAAA,OAAO,EAAEY;AAFL,WADO;AAKbR,UAAAA,GAAG,EAAE;AACHiB,YAAAA,GAAG,EAAE;AAACd,cAAAA,IAAI,EAAE;AAAP,aADF;AAEHF,YAAAA,KAAK,EAAE;AAACE,cAAAA,IAAI,EAAE;AAAP;AAFJ,WALQ;AASbC,UAAAA;AATa,SAAf;AAYA,eAAO,IAAP;AACD;;AAED,aAAO,KAAP;AACD,KAhCD;AAiCD,GA1DA;;AA2DDc,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,8DADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,MALL;AAMJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVpB,QAAAA,QAAQ,EAAE;AACRqB,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACEC,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEJ,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVjC,gBAAAA,OAAO,EAAE;AACPoC,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIVhC,gBAAAA,OAAO,EAAE;AACPgC,kBAAAA,IAAI,EAAE;AADC,iBAJC;AAOVxB,gBAAAA,OAAO,EAAE;AACPwB,kBAAAA,IAAI,EAAE;AADC,iBAPC;AAUVjB,gBAAAA,OAAO,EAAE;AACPiB,kBAAAA,IAAI,EAAE;AADC;AAVC,eAFd;AAgBEA,cAAAA,IAAI,EAAE;AAhBR,aAJK;AADF,WADC;AA0BRA,UAAAA,IAAI,EAAE;AA1BE;AADA,OAFd;AAgCEA,MAAAA,IAAI,EAAE;AAhCR,KADM,CANJ;AA0CJA,IAAAA,IAAI,EAAE;AA1CF;AA3DL,CAPY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst setDefaults = (state) => {\n if (!state.selectorMap) {\n state.selectorMap = {};\n }\n};\n\nconst incrementSelector = (state, selector, comment) => {\n if (!state.selectorMap[selector]) {\n state.selectorMap[selector] = {};\n }\n if (!state.selectorMap[selector][comment]) {\n state.selectorMap[selector][comment] = 0;\n }\n state.selectorMap[selector][comment]++;\n};\n\nexport default iterateJsdoc(({\n info: {selector, comment},\n state,\n}) => {\n setDefaults(state);\n\n incrementSelector(state, selector, comment);\n}, {\n contextSelected: true,\n exit ({\n context, state,\n }) {\n if (!context.options.length) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: 'Rule `no-missing-syntax` is missing a `context` option.',\n });\n\n return;\n }\n setDefaults(state);\n\n const {\n contexts,\n } = context.options[0];\n\n // Report when MISSING\n contexts.some((cntxt) => {\n const contextStr = typeof cntxt === 'object' ? cntxt.context ?? 'any' : cntxt;\n const comment = cntxt?.comment ?? '';\n\n const contextKey = contextStr === 'any' ? undefined : contextStr;\n\n if (\n (!state.selectorMap[contextKey] ||\n !state.selectorMap[contextKey][comment] ||\n state.selectorMap[contextKey][comment] < (cntxt?.minimum ?? 1)) &&\n (contextStr !== 'any' || Object.values(state.selectorMap).every((cmmnt) => {\n return !cmmnt[comment] || cmmnt[comment] < (cntxt?.minimum ?? 1);\n }))\n ) {\n const message = cntxt?.message ?? 'Syntax is required: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n context.report({\n data: {\n comment,\n context: contextStr,\n },\n loc: {\n end: {line: 1},\n start: {line: 1},\n },\n message,\n });\n\n return true;\n }\n\n return false;\n });\n },\n meta: {\n docs: {\n description: 'Reports when certain comment structures are always expected.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-missing-syntax',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n minimum: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noMissingSyntax.js"}
1
+ {"version":3,"sources":["../../src/rules/noMissingSyntax.js"],"names":["setDefaults","state","selectorMap","incrementSelector","selector","comment","info","contextSelected","exit","context","options","length","report","loc","start","column","line","message","contexts","some","cntxt","contextStr","contextKey","undefined","minimum","Object","values","every","cmmnt","data","end","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst setDefaults = (state) => {\n if (!state.selectorMap) {\n state.selectorMap = {};\n }\n};\n\nconst incrementSelector = (state, selector, comment) => {\n if (!state.selectorMap[selector]) {\n state.selectorMap[selector] = {};\n }\n\n if (!state.selectorMap[selector][comment]) {\n state.selectorMap[selector][comment] = 0;\n }\n\n state.selectorMap[selector][comment]++;\n};\n\nexport default iterateJsdoc(({\n info: {selector, comment},\n state,\n}) => {\n setDefaults(state);\n\n incrementSelector(state, selector, comment);\n}, {\n contextSelected: true,\n exit ({\n context, state,\n }) {\n if (!context.options.length) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: 'Rule `no-missing-syntax` is missing a `context` option.',\n });\n\n return;\n }\n\n setDefaults(state);\n\n const {\n contexts,\n } = context.options[0];\n\n // Report when MISSING\n contexts.some((cntxt) => {\n const contextStr = typeof cntxt === 'object' ? cntxt.context ?? 'any' : cntxt;\n const comment = cntxt?.comment ?? '';\n\n const contextKey = contextStr === 'any' ? undefined : contextStr;\n\n if (\n (!state.selectorMap[contextKey] ||\n !state.selectorMap[contextKey][comment] ||\n state.selectorMap[contextKey][comment] < (cntxt?.minimum ?? 1)) &&\n (contextStr !== 'any' || Object.values(state.selectorMap).every((cmmnt) => {\n return !cmmnt[comment] || cmmnt[comment] < (cntxt?.minimum ?? 1);\n }))\n ) {\n const message = cntxt?.message ?? 'Syntax is required: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n context.report({\n data: {\n comment,\n context: contextStr,\n },\n loc: {\n end: {line: 1},\n start: {line: 1},\n },\n message,\n });\n\n return true;\n }\n\n return false;\n });\n },\n meta: {\n docs: {\n description: 'Reports when certain comment structures are always expected.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-missing-syntax',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n minimum: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noMissingSyntax.js"}
@@ -9,7 +9,7 @@ var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
 
12
- const middleAsterisks = /^[* \t]+/u;
12
+ const middleAsterisks = /^([\t ]|\*(?!\*))+/u;
13
13
 
14
14
  var _default = (0, _iterateJsdoc.default)(({
15
15
  context,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noMultiAsterisks.js"],"names":["middleAsterisks","context","jsdoc","utils","preventAtEnd","preventAtMiddleLines","options","source","some","tokens","number","delimiter","tag","name","type","description","end","test","fix","replace","reportJSDoc","line","isSingleLineBlock","delim","endAsterisks","endingAsterisksAndSpaces","match","trim","endFix","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperies","properties"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst middleAsterisks = /^[* \\t]+/u;\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n preventAtEnd = true,\n preventAtMiddleLines = true,\n } = context.options[0] || {};\n\n jsdoc.source.some(({tokens, number}) => {\n const {\n delimiter, tag, name, type, description, end,\n } = tokens;\n if (\n preventAtMiddleLines &&\n !end && !tag && !type && !name && middleAsterisks.test(description)\n ) {\n const fix = () => {\n tokens.description = description.replace(middleAsterisks, '');\n };\n utils.reportJSDoc(\n 'Should be no multiple asterisks on middle lines.',\n {\n line: number,\n },\n fix,\n true,\n );\n\n return true;\n }\n\n if (!preventAtEnd || !end) {\n return false;\n }\n\n const isSingleLineBlock = delimiter === '/**';\n const delim = isSingleLineBlock ? '*' : delimiter;\n const endAsterisks = isSingleLineBlock ?\n /\\*((?:\\*|(?: |\\t))*)\\*$/u :\n /((?:\\*|(?: |\\t))*)\\*$/u;\n\n const endingAsterisksAndSpaces = (description + delim).match(\n endAsterisks,\n );\n\n if (\n !endingAsterisksAndSpaces ||\n !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()\n ) {\n return false;\n }\n\n const endFix = () => {\n if (!isSingleLineBlock) {\n tokens.delimiter = '';\n }\n tokens.description = (description + delim).replace(endAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on end lines.',\n {\n line: number,\n },\n endFix,\n true,\n );\n\n return true;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-multi-asterisks',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n preventAtEnd: {\n type: 'boolean',\n },\n preventAtMiddleLines: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noMultiAsterisks.js"}
1
+ {"version":3,"sources":["../../src/rules/noMultiAsterisks.js"],"names":["middleAsterisks","context","jsdoc","utils","preventAtEnd","preventAtMiddleLines","options","source","some","tokens","number","delimiter","tag","name","type","description","end","test","fix","replace","reportJSDoc","line","isSingleLineBlock","delim","endAsterisks","endingAsterisksAndSpaces","match","trim","endFix","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperies","properties"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst middleAsterisks = /^([\\t ]|\\*(?!\\*))+/u;\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n preventAtEnd = true,\n preventAtMiddleLines = true,\n } = context.options[0] || {};\n\n jsdoc.source.some(({tokens, number}) => {\n const {\n delimiter, tag, name, type, description, end,\n } = tokens;\n if (\n preventAtMiddleLines &&\n !end && !tag && !type && !name && middleAsterisks.test(description)\n ) {\n const fix = () => {\n tokens.description = description.replace(middleAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on middle lines.',\n {\n line: number,\n },\n fix,\n true,\n );\n\n return true;\n }\n\n if (!preventAtEnd || !end) {\n return false;\n }\n\n const isSingleLineBlock = delimiter === '/**';\n const delim = isSingleLineBlock ? '*' : delimiter;\n const endAsterisks = isSingleLineBlock ?\n /\\*((?:\\*|(?: |\\t))*)\\*$/u :\n /((?:\\*|(?: |\\t))*)\\*$/u;\n\n const endingAsterisksAndSpaces = (description + delim).match(\n endAsterisks,\n );\n\n if (\n !endingAsterisksAndSpaces ||\n !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()\n ) {\n return false;\n }\n\n const endFix = () => {\n if (!isSingleLineBlock) {\n tokens.delimiter = '';\n }\n\n tokens.description = (description + delim).replace(endAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on end lines.',\n {\n line: number,\n },\n endFix,\n true,\n );\n\n return true;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-multi-asterisks',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n preventAtEnd: {\n type: 'boolean',\n },\n preventAtMiddleLines: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noMultiAsterisks.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noRestrictedSyntax.js"],"names":["context","info","selector","comment","report","options","length","contexts","foundContext","find","cntxt","contextStr","message","contextSelected","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type","required"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,OAD2B;AAE3BC,EAAAA,IAAI,EAAE;AAACC,IAAAA,QAAD;AAAWC,IAAAA;AAAX,GAFqB;AAG3BC,EAAAA;AAH2B,CAAD,KAItB;AAAA;;AACJ,MAAI,CAACJ,OAAO,CAACK,OAAR,CAAgBC,MAArB,EAA6B;AAC3BF,IAAAA,MAAM,CAAC,4DAAD,CAAN;AAEA;AACD;;AACD,QAAM;AAACG,IAAAA;AAAD,MAAaP,OAAO,CAACK,OAAR,CAAgB,CAAhB,CAAnB;AAEA,QAAMG,YAAY,GAAGD,QAAQ,CAACE,IAAT,CAAeC,KAAD,IAAW;AAC5C,WAAOA,KAAK,KAAKR,QAAV,IACL,OAAOQ,KAAP,KAAiB,QAAjB,KACC,CAACA,KAAK,CAACV,OAAP,IAAkBU,KAAK,CAACV,OAAN,KAAkB,KAApC,IAA6CE,QAAQ,KAAKQ,KAAK,CAACV,OADjE,KAEEG,OAAO,KAAKO,KAAK,CAACP,OAHtB;AAID,GALoB,CAArB;AAOA,QAAMQ,UAAU,GAAG,OAAOH,YAAP,KAAwB,QAAxB,4BACjBA,YAAY,CAACR,OADI,yEACO,KADP,GAEjBQ,YAFF;AAGA,QAAMI,OAAO,4BAAGJ,YAAH,aAAGA,YAAH,uBAAGA,YAAY,CAAEI,OAAjB,yEACX,oCADF;AAGAR,EAAAA,MAAM,CAACQ,OAAD,EAAU,IAAV,EAAgB,IAAhB,EAAsB;AAC1BZ,IAAAA,OAAO,EAAEW;AADiB,GAAtB,CAAN;AAGD,CA5Bc,EA4BZ;AACDE,EAAAA,eAAe,EAAE,IADhB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,sDADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,MALL;AAMJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVd,QAAAA,QAAQ,EAAE;AACRe,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACEC,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEJ,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVlB,gBAAAA,OAAO,EAAE;AACPqB,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIVxB,gBAAAA,OAAO,EAAE;AACPwB,kBAAAA,IAAI,EAAE;AADC,iBAJC;AAOVZ,gBAAAA,OAAO,EAAE;AACPY,kBAAAA,IAAI,EAAE;AADC;AAPC,eAFd;AAaEA,cAAAA,IAAI,EAAE;AAbR,aAJK;AADF,WADC;AAuBRA,UAAAA,IAAI,EAAE;AAvBE;AADA,OAFd;AA6BEC,MAAAA,QAAQ,EAAE,CAAC,UAAD,CA7BZ;AA8BED,MAAAA,IAAI,EAAE;AA9BR,KADM,CANJ;AAwCJA,IAAAA,IAAI,EAAE;AAxCF;AAFL,CA5BY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n info: {selector, comment},\n report,\n}) => {\n if (!context.options.length) {\n report('Rule `no-restricted-syntax` is missing a `context` option.');\n\n return;\n }\n const {contexts} = context.options[0];\n\n const foundContext = contexts.find((cntxt) => {\n return cntxt === selector ||\n typeof cntxt === 'object' &&\n (!cntxt.context || cntxt.context === 'any' || selector === cntxt.context) &&\n comment === cntxt.comment;\n });\n\n const contextStr = typeof foundContext === 'object' ?\n foundContext.context ?? 'any' :\n foundContext;\n const message = foundContext?.message ??\n 'Syntax is restricted: {{context}}.';\n\n report(message, null, null, {\n context: contextStr,\n });\n}, {\n contextSelected: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are present.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-restricted-syntax',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n required: ['contexts'],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noRestrictedSyntax.js"}
1
+ {"version":3,"sources":["../../src/rules/noRestrictedSyntax.js"],"names":["context","info","selector","comment","report","options","length","contexts","foundContext","find","cntxt","contextStr","message","contextSelected","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type","required"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,OAD2B;AAE3BC,EAAAA,IAAI,EAAE;AAACC,IAAAA,QAAD;AAAWC,IAAAA;AAAX,GAFqB;AAG3BC,EAAAA;AAH2B,CAAD,KAItB;AAAA;;AACJ,MAAI,CAACJ,OAAO,CAACK,OAAR,CAAgBC,MAArB,EAA6B;AAC3BF,IAAAA,MAAM,CAAC,4DAAD,CAAN;AAEA;AACD;;AAED,QAAM;AAACG,IAAAA;AAAD,MAAaP,OAAO,CAACK,OAAR,CAAgB,CAAhB,CAAnB;AAEA,QAAMG,YAAY,GAAGD,QAAQ,CAACE,IAAT,CAAeC,KAAD,IAAW;AAC5C,WAAOA,KAAK,KAAKR,QAAV,IACL,OAAOQ,KAAP,KAAiB,QAAjB,KACC,CAACA,KAAK,CAACV,OAAP,IAAkBU,KAAK,CAACV,OAAN,KAAkB,KAApC,IAA6CE,QAAQ,KAAKQ,KAAK,CAACV,OADjE,KAEEG,OAAO,KAAKO,KAAK,CAACP,OAHtB;AAID,GALoB,CAArB;AAOA,QAAMQ,UAAU,GAAG,OAAOH,YAAP,KAAwB,QAAxB,4BACjBA,YAAY,CAACR,OADI,yEACO,KADP,GAEjBQ,YAFF;AAGA,QAAMI,OAAO,4BAAGJ,YAAH,aAAGA,YAAH,uBAAGA,YAAY,CAAEI,OAAjB,yEACX,oCADF;AAGAR,EAAAA,MAAM,CAACQ,OAAD,EAAU,IAAV,EAAgB,IAAhB,EAAsB;AAC1BZ,IAAAA,OAAO,EAAEW;AADiB,GAAtB,CAAN;AAGD,CA7Bc,EA6BZ;AACDE,EAAAA,eAAe,EAAE,IADhB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,sDADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,MALL;AAMJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVd,QAAAA,QAAQ,EAAE;AACRe,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACEC,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEJ,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVlB,gBAAAA,OAAO,EAAE;AACPqB,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIVxB,gBAAAA,OAAO,EAAE;AACPwB,kBAAAA,IAAI,EAAE;AADC,iBAJC;AAOVZ,gBAAAA,OAAO,EAAE;AACPY,kBAAAA,IAAI,EAAE;AADC;AAPC,eAFd;AAaEA,cAAAA,IAAI,EAAE;AAbR,aAJK;AADF,WADC;AAuBRA,UAAAA,IAAI,EAAE;AAvBE;AADA,OAFd;AA6BEC,MAAAA,QAAQ,EAAE,CAAC,UAAD,CA7BZ;AA8BED,MAAAA,IAAI,EAAE;AA9BR,KADM,CANJ;AAwCJA,IAAAA,IAAI,EAAE;AAxCF;AAFL,CA7BY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n info: {selector, comment},\n report,\n}) => {\n if (!context.options.length) {\n report('Rule `no-restricted-syntax` is missing a `context` option.');\n\n return;\n }\n\n const {contexts} = context.options[0];\n\n const foundContext = contexts.find((cntxt) => {\n return cntxt === selector ||\n typeof cntxt === 'object' &&\n (!cntxt.context || cntxt.context === 'any' || selector === cntxt.context) &&\n comment === cntxt.comment;\n });\n\n const contextStr = typeof foundContext === 'object' ?\n foundContext.context ?? 'any' :\n foundContext;\n const message = foundContext?.message ??\n 'Syntax is restricted: {{context}}.';\n\n report(message, null, null, {\n context: contextStr,\n });\n}, {\n contextSelected: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are present.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-restricted-syntax',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n required: ['contexts'],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noRestrictedSyntax.js"}
@@ -24,13 +24,16 @@ var _default = (0, _iterateJsdoc.default)(({
24
24
  }
25
25
 
26
26
  const tags = utils.getPresentTags(['param', 'arg', 'argument', 'returns', 'return']);
27
- tags.forEach(tag => {
27
+
28
+ for (const tag of tags) {
28
29
  if (tag.type) {
29
30
  utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {
30
- tag.source.forEach(removeType);
31
+ for (const source of tag.source) {
32
+ removeType(source);
33
+ }
31
34
  });
32
35
  }
33
- });
36
+ }
34
37
  }, {
35
38
  contextDefaults: true,
36
39
  meta: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noTypes.js"],"names":["removeType","tokens","postTag","type","utils","isIteratingFunction","isVirtualFunction","tags","getPresentTags","forEach","tag","reportJSDoc","source","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","comment","context"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,UAAU,GAAG,CAAC;AAACC,EAAAA;AAAD,CAAD,KAAc;AAC/BA,EAAAA,MAAM,CAACC,OAAP,GAAiB,EAAjB;AACAD,EAAAA,MAAM,CAACE,IAAP,GAAc,EAAd;AACD,CAHD;;eAKe,2BAAa,CAAC;AAC3BC,EAAAA;AAD2B,CAAD,KAEtB;AACJ,MAAI,CAACA,KAAK,CAACC,mBAAN,EAAD,IAAgC,CAACD,KAAK,CAACE,iBAAN,EAArC,EAAgE;AAC9D;AACD;;AAED,QAAMC,IAAI,GAAGH,KAAK,CAACI,cAAN,CAAqB,CAAC,OAAD,EAAU,KAAV,EAAiB,UAAjB,EAA6B,SAA7B,EAAwC,QAAxC,CAArB,CAAb;AAEAD,EAAAA,IAAI,CAACE,OAAL,CAAcC,GAAD,IAAS;AACpB,QAAIA,GAAG,CAACP,IAAR,EAAc;AACZC,MAAAA,KAAK,CAACO,WAAN,CAAmB,+BAA8BD,GAAG,CAACA,GAAI,GAAzD,EAA6DA,GAA7D,EAAkE,MAAM;AACtEA,QAAAA,GAAG,CAACE,MAAJ,CAAWH,OAAX,CAAmBT,UAAnB;AACD,OAFD;AAGD;AACF,GAND;AAOD,CAhBc,EAgBZ;AACDa,EAAAA,eAAe,EAAE,IADhB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,+DADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,MALL;AAMJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVC,QAAAA,QAAQ,EAAE;AACRC,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACErB,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEiB,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVI,gBAAAA,OAAO,EAAE;AACPtB,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIVuB,gBAAAA,OAAO,EAAE;AACPvB,kBAAAA,IAAI,EAAE;AADC;AAJC,eAFd;AAUEA,cAAAA,IAAI,EAAE;AAVR,aAJK;AADF,WADC;AAoBRA,UAAAA,IAAI,EAAE;AApBE;AADA,OAFd;AA0BEA,MAAAA,IAAI,EAAE;AA1BR,KADM,CANJ;AAoCJA,IAAAA,IAAI,EAAE;AApCF;AAFL,CAhBY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst removeType = ({tokens}) => {\n tokens.postTag = '';\n tokens.type = '';\n};\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n if (!utils.isIteratingFunction() && !utils.isVirtualFunction()) {\n return;\n }\n\n const tags = utils.getPresentTags(['param', 'arg', 'argument', 'returns', 'return']);\n\n tags.forEach((tag) => {\n if (tag.type) {\n utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {\n tag.source.forEach(removeType);\n });\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'This rule reports types being used on `@param` or `@returns`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noTypes.js"}
1
+ {"version":3,"sources":["../../src/rules/noTypes.js"],"names":["removeType","tokens","postTag","type","utils","isIteratingFunction","isVirtualFunction","tags","getPresentTags","tag","reportJSDoc","source","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","comment","context"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,UAAU,GAAG,CAAC;AAACC,EAAAA;AAAD,CAAD,KAAc;AAC/BA,EAAAA,MAAM,CAACC,OAAP,GAAiB,EAAjB;AACAD,EAAAA,MAAM,CAACE,IAAP,GAAc,EAAd;AACD,CAHD;;eAKe,2BAAa,CAAC;AAC3BC,EAAAA;AAD2B,CAAD,KAEtB;AACJ,MAAI,CAACA,KAAK,CAACC,mBAAN,EAAD,IAAgC,CAACD,KAAK,CAACE,iBAAN,EAArC,EAAgE;AAC9D;AACD;;AAED,QAAMC,IAAI,GAAGH,KAAK,CAACI,cAAN,CAAqB,CAAC,OAAD,EAAU,KAAV,EAAiB,UAAjB,EAA6B,SAA7B,EAAwC,QAAxC,CAArB,CAAb;;AAEA,OAAK,MAAMC,GAAX,IAAkBF,IAAlB,EAAwB;AACtB,QAAIE,GAAG,CAACN,IAAR,EAAc;AACZC,MAAAA,KAAK,CAACM,WAAN,CAAmB,+BAA8BD,GAAG,CAACA,GAAI,GAAzD,EAA6DA,GAA7D,EAAkE,MAAM;AACtE,aAAK,MAAME,MAAX,IAAqBF,GAAG,CAACE,MAAzB,EAAiC;AAC/BX,UAAAA,UAAU,CAACW,MAAD,CAAV;AACD;AACF,OAJD;AAKD;AACF;AACF,CAlBc,EAkBZ;AACDC,EAAAA,eAAe,EAAE,IADhB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,+DADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,MALL;AAMJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVC,QAAAA,QAAQ,EAAE;AACRC,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACEpB,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEgB,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVI,gBAAAA,OAAO,EAAE;AACPrB,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIVsB,gBAAAA,OAAO,EAAE;AACPtB,kBAAAA,IAAI,EAAE;AADC;AAJC,eAFd;AAUEA,cAAAA,IAAI,EAAE;AAVR,aAJK;AADF,WADC;AAoBRA,UAAAA,IAAI,EAAE;AApBE;AADA,OAFd;AA0BEA,MAAAA,IAAI,EAAE;AA1BR,KADM,CANJ;AAoCJA,IAAAA,IAAI,EAAE;AApCF;AAFL,CAlBY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst removeType = ({tokens}) => {\n tokens.postTag = '';\n tokens.type = '';\n};\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n if (!utils.isIteratingFunction() && !utils.isVirtualFunction()) {\n return;\n }\n\n const tags = utils.getPresentTags(['param', 'arg', 'argument', 'returns', 'return']);\n\n for (const tag of tags) {\n if (tag.type) {\n utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {\n for (const source of tag.source) {\n removeType(source);\n }\n });\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'This rule reports types being used on `@param` or `@returns`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noTypes.js"}
@@ -9,18 +9,16 @@ var _jsdoccomment = require("@es-joy/jsdoccomment");
9
9
 
10
10
  var _jsdocTypePrattParser = require("jsdoc-type-pratt-parser");
11
11
 
12
- var _lodash = _interopRequireDefault(require("lodash"));
13
-
14
12
  var _iterateJsdoc = _interopRequireWildcard(require("../iterateJsdoc"));
15
13
 
16
14
  var _jsdocUtils = _interopRequireDefault(require("../jsdocUtils"));
17
15
 
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
18
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
19
 
20
20
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
21
 
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
22
  const extraTypes = ['null', 'undefined', 'void', 'string', 'boolean', 'object', 'function', 'symbol', 'number', 'bigint', 'NaN', 'Infinity', 'any', '*', 'this', 'true', 'false', 'Array', 'Object', 'RegExp', 'Date', 'Function'];
25
23
 
26
24
  const stripPseudoTypes = str => {
@@ -74,7 +72,7 @@ var _default = (0, _iterateJsdoc.default)(({
74
72
  });
75
73
  }
76
74
 
77
- const typedefDeclarations = (0, _lodash.default)(context.getAllComments()).filter(comment => {
75
+ const typedefDeclarations = context.getAllComments().filter(comment => {
78
76
  return comment.value.startsWith('*');
79
77
  }).map(commentNode => {
80
78
  return (0, _iterateJsdoc.parseComment)(commentNode, '');
@@ -86,7 +84,7 @@ var _default = (0, _iterateJsdoc.default)(({
86
84
  });
87
85
  }).map(tag => {
88
86
  return tag.name;
89
- }).value();
87
+ });
90
88
  const ancestorNodes = [];
91
89
  let currentScope = scopeManager.acquire(node);
92
90
 
@@ -97,7 +95,7 @@ var _default = (0, _iterateJsdoc.default)(({
97
95
  // we look to present tags instead
98
96
 
99
97
 
100
- let templateTags = ancestorNodes.length ? (0, _lodash.default)(ancestorNodes).flatMap(ancestorNode => {
98
+ let templateTags = ancestorNodes.length ? ancestorNodes.flatMap(ancestorNode => {
101
99
  const commentNode = (0, _jsdoccomment.getJSDocComment)(sourceCode, ancestorNode, settings);
102
100
 
103
101
  if (!commentNode) {
@@ -106,9 +104,9 @@ var _default = (0, _iterateJsdoc.default)(({
106
104
 
107
105
  const jsdoc = (0, _iterateJsdoc.parseComment)(commentNode, '');
108
106
  return _jsdocUtils.default.filterTags(jsdoc.tags, tag => {
109
- return 'template' === tag.tag;
107
+ return tag.tag === 'template';
110
108
  });
111
- }).value() : utils.getPresentTags('template');
109
+ }) : utils.getPresentTags('template');
112
110
  const classJsdoc = utils.getClassJsdoc();
113
111
 
114
112
  if (classJsdoc !== null && classJsdoc !== void 0 && classJsdoc.tags) {
@@ -119,23 +117,22 @@ var _default = (0, _iterateJsdoc.default)(({
119
117
  }));
120
118
  }
121
119
 
122
- const closureGenericTypes = _lodash.default.flatMap(templateTags, tag => {
120
+ const closureGenericTypes = templateTags.flatMap(tag => {
123
121
  return utils.parseClosureTemplateTag(tag);
124
122
  }); // In modules, including Node, there is a global scope at top with the
125
123
  // Program scope inside
126
124
 
127
-
128
125
  const cjsOrESMScope = ((_globalScope$childSco = globalScope.childScopes[0]) === null || _globalScope$childSco === void 0 ? void 0 : _globalScope$childSco.block.type) === 'Program';
129
126
  const allDefinedTypes = new Set(globalScope.variables.map(({
130
127
  name
131
128
  }) => {
132
129
  return name;
133
130
  }) // If the file is a module, concat the variables from the module scope.
134
- .concat(cjsOrESMScope ? _lodash.default.flatMap(globalScope.childScopes, ({
131
+ .concat(cjsOrESMScope ? globalScope.childScopes.flatMap(({
135
132
  variables
136
133
  }) => {
137
134
  return variables;
138
- }, []).map(({
135
+ }).map(({
139
136
  name
140
137
  }) => {
141
138
  return name;
@@ -145,14 +142,15 @@ var _default = (0, _iterateJsdoc.default)(({
145
142
  }) => {
146
143
  return utils.tagMightHaveTypePosition(tag);
147
144
  });
148
- jsdocTagsWithPossibleType.forEach(tag => {
145
+
146
+ for (const tag of jsdocTagsWithPossibleType) {
149
147
  let parsedType;
150
148
 
151
149
  try {
152
150
  parsedType = mode === 'permissive' ? (0, _jsdocTypePrattParser.tryParse)(tag.type) : (0, _jsdocTypePrattParser.parse)(tag.type, mode);
153
151
  } catch {
154
152
  // On syntax error, will be handled by valid-types.
155
- return;
153
+ continue;
156
154
  }
157
155
 
158
156
  (0, _jsdocTypePrattParser.traverse)(parsedType, ({
@@ -171,7 +169,7 @@ var _default = (0, _iterateJsdoc.default)(({
171
169
  }
172
170
  }
173
171
  });
174
- });
172
+ }
175
173
  }, {
176
174
  iterateAllJsdocs: true,
177
175
  meta: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noUndefinedTypes.js"],"names":["extraTypes","stripPseudoTypes","str","replace","context","node","report","settings","sourceCode","utils","scopeManager","globalScope","definedTypes","options","definedPreferredTypes","preferredTypes","structuredTags","mode","Object","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","typedefDeclarations","getAllComments","comment","value","startsWith","commentNode","flatMap","doc","tags","tag","isNamepathDefiningTag","name","ancestorNodes","currentScope","acquire","block","type","push","upper","templateTags","ancestorNode","jsdoc","jsdocUtils","filterTags","getPresentTags","classJsdoc","getClassJsdoc","concat","closureGenericTypes","_","parseClosureTemplateTag","cjsOrESMScope","childScopes","allDefinedTypes","Set","variables","jsdocTagsWithPossibleType","tagMightHaveTypePosition","forEach","parsedType","structuredTypes","has","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items"],"mappings":"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","sourcesContent":["import {\n getJSDocComment,\n} from '@es-joy/jsdoccomment';\nimport {\n traverse, parse as parseType, tryParse as tryParseType,\n} from 'jsdoc-type-pratt-parser';\nimport _ from 'lodash';\nimport iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {scopeManager} = sourceCode;\n const {globalScope} = scopeManager;\n\n const {definedTypes = []} = context.options[0] || {};\n\n let definedPreferredTypes = [];\n const {preferredTypes, structuredTags, mode} = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n if (!preferredType) {\n return undefined;\n }\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n }).filter((preferredType) => {\n return preferredType;\n });\n }\n\n const typedefDeclarations = _(context.getAllComments())\n .filter((comment) => {\n return comment.value.startsWith('*');\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n })\n .flatMap((doc) => {\n return doc.tags.filter(({tag}) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n })\n .value();\n\n const ancestorNodes = [];\n let currentScope = scopeManager.acquire(node);\n\n while (currentScope && currentScope.block.type !== 'Program') {\n ancestorNodes.push(currentScope.block);\n currentScope = currentScope.upper;\n }\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n let templateTags = ancestorNodes.length ?\n _(ancestorNodes).flatMap((ancestorNode) => {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdocUtils.filterTags(jsdoc.tags, (tag) => {\n return 'template' === tag.tag;\n });\n }).value() :\n utils.getPresentTags('template');\n\n const classJsdoc = utils.getClassJsdoc();\n if (classJsdoc?.tags) {\n templateTags = templateTags.concat(\n classJsdoc.tags\n .filter(({tag}) => {\n return tag === 'template';\n }),\n );\n }\n\n const closureGenericTypes = _.flatMap(templateTags, (tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block.type === 'Program';\n\n const allDefinedTypes = new Set(globalScope.variables.map(({name}) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n _.flatMap(globalScope.childScopes, ({variables}) => {\n return variables;\n }, []).map(({name}) => {\n return name;\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(definedPreferredTypes)\n .concat(settings.mode === 'jsdoc' ? [] : closureGenericTypes));\n\n const jsdocTagsWithPossibleType = utils.filterTags(({tag}) => {\n return utils.tagMightHaveTypePosition(tag);\n });\n\n jsdocTagsWithPossibleType.forEach((tag) => {\n let parsedType;\n\n try {\n parsedType = mode === 'permissive' ? tryParseType(tag.type) : parseType(tag.type, mode);\n } catch {\n // On syntax error, will be handled by valid-types.\n return;\n }\n\n traverse(parsedType, ({type, value}) => {\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n report(`The type '${value}' is undefined.`, null, tag);\n } else if (!extraTypes.includes(value)) {\n context.markVariableAsUsed(value);\n }\n }\n });\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-undefined-types',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noUndefinedTypes.js"}
1
+ {"version":3,"sources":["../../src/rules/noUndefinedTypes.js"],"names":["extraTypes","stripPseudoTypes","str","replace","context","node","report","settings","sourceCode","utils","scopeManager","globalScope","definedTypes","options","definedPreferredTypes","preferredTypes","structuredTags","mode","Object","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","typedefDeclarations","getAllComments","comment","value","startsWith","commentNode","flatMap","doc","tags","tag","isNamepathDefiningTag","name","ancestorNodes","currentScope","acquire","block","type","push","upper","templateTags","ancestorNode","jsdoc","jsdocUtils","filterTags","getPresentTags","classJsdoc","getClassJsdoc","concat","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","allDefinedTypes","Set","variables","jsdocTagsWithPossibleType","tagMightHaveTypePosition","parsedType","structuredTypes","has","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items"],"mappings":"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","sourcesContent":["import {\n getJSDocComment,\n} from '@es-joy/jsdoccomment';\nimport {\n traverse, parse as parseType, tryParse as tryParseType,\n} from 'jsdoc-type-pratt-parser';\nimport iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {scopeManager} = sourceCode;\n const {globalScope} = scopeManager;\n\n const {definedTypes = []} = context.options[0] || {};\n\n let definedPreferredTypes = [];\n const {preferredTypes, structuredTags, mode} = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter((preferredType) => {\n return preferredType;\n });\n }\n\n const typedefDeclarations = context.getAllComments()\n .filter((comment) => {\n return comment.value.startsWith('*');\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n })\n .flatMap((doc) => {\n return doc.tags.filter(({tag}) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n const ancestorNodes = [];\n let currentScope = scopeManager.acquire(node);\n\n while (currentScope && currentScope.block.type !== 'Program') {\n ancestorNodes.push(currentScope.block);\n currentScope = currentScope.upper;\n }\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n let templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdocUtils.filterTags(jsdoc.tags, (tag) => {\n return tag.tag === 'template';\n });\n }) :\n utils.getPresentTags('template');\n\n const classJsdoc = utils.getClassJsdoc();\n if (classJsdoc?.tags) {\n templateTags = templateTags.concat(\n classJsdoc.tags\n .filter(({tag}) => {\n return tag === 'template';\n }),\n );\n }\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block.type === 'Program';\n\n const allDefinedTypes = new Set(globalScope.variables.map(({name}) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({variables}) => {\n return variables;\n }).map(({name}) => {\n return name;\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(definedPreferredTypes)\n .concat(settings.mode === 'jsdoc' ? [] : closureGenericTypes));\n\n const jsdocTagsWithPossibleType = utils.filterTags(({tag}) => {\n return utils.tagMightHaveTypePosition(tag);\n });\n\n for (const tag of jsdocTagsWithPossibleType) {\n let parsedType;\n\n try {\n parsedType = mode === 'permissive' ? tryParseType(tag.type) : parseType(tag.type, mode);\n } catch {\n // On syntax error, will be handled by valid-types.\n continue;\n }\n\n traverse(parsedType, ({type, value}) => {\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n report(`The type '${value}' is undefined.`, null, tag);\n } else if (!extraTypes.includes(value)) {\n context.markVariableAsUsed(value);\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-undefined-types',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noUndefinedTypes.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireAsteriskPrefix.js"],"names":["context","jsdoc","utils","indent","defaultRequireValue","tags","tagMap","options","source","always","never","currentTag","some","number","tokens","delimiter","tag","end","description","neverFix","postDelimiter","checkNever","checkValue","includes","reportJSDoc","column","line","alwaysFix","start","checkAlways","slice","any","iterateAllJsdocs","meta","fixable","schema","enum","type","additionalProperties","properties","items"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n indent,\n}) => {\n const [defaultRequireValue = 'always', {\n tags: tagMap = {},\n } = {}] = context.options;\n\n const {source} = jsdoc;\n\n const always = defaultRequireValue === 'always';\n const never = defaultRequireValue === 'never';\n\n let currentTag;\n source.some(({number, tokens}) => {\n const {delimiter, tag, end, description} = tokens;\n\n const neverFix = () => {\n tokens.delimiter = '';\n tokens.postDelimiter = '';\n };\n const checkNever = (checkValue) => {\n if (delimiter && delimiter !== '/**' && (\n never && !tagMap.always?.includes(checkValue) ||\n tagMap.never?.includes(checkValue)\n )) {\n utils.reportJSDoc('Expected JSDoc line to have no prefix.', {\n column: 0,\n line: number,\n }, neverFix);\n\n return true;\n }\n\n return false;\n };\n\n const alwaysFix = () => {\n if (!tokens.start) {\n tokens.start = indent + ' ';\n }\n tokens.delimiter = '*';\n tokens.postDelimiter = tag || description ? ' ' : '';\n };\n const checkAlways = (checkValue) => {\n if (\n !delimiter && (\n always && !tagMap.never?.includes(checkValue) ||\n tagMap.always?.includes(checkValue)\n )\n ) {\n utils.reportJSDoc('Expected JSDoc line to have the prefix.', {\n column: 0,\n line: number,\n }, alwaysFix);\n\n return true;\n }\n\n return false;\n };\n\n if (tag) {\n // Remove at sign\n currentTag = tag.slice(1);\n }\n\n if (\n // If this is the end but has a tag, the delimiter will also be\n // populated and will be safely ignored later\n end && !tag\n ) {\n return false;\n }\n\n if (!currentTag) {\n if (tagMap.any?.includes('*description')) {\n return false;\n }\n if (checkNever('*description')) {\n return true;\n }\n if (checkAlways('*description')) {\n return true;\n }\n\n return false;\n }\n\n if (tagMap.any?.includes(currentTag)) {\n return false;\n }\n\n if (checkNever(currentTag)) {\n return true;\n }\n\n if (checkAlways(currentTag)) {\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n fixable: 'code',\n schema: [\n {\n enum: ['always', 'never', 'any'],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n properties: {\n always: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n any: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n never: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"file":"requireAsteriskPrefix.js"}
1
+ {"version":3,"sources":["../../src/rules/requireAsteriskPrefix.js"],"names":["context","jsdoc","utils","indent","defaultRequireValue","tags","tagMap","options","source","always","never","currentTag","some","number","tokens","delimiter","tag","end","description","neverFix","postDelimiter","checkNever","checkValue","includes","reportJSDoc","column","line","alwaysFix","start","checkAlways","slice","any","iterateAllJsdocs","meta","fixable","schema","enum","type","additionalProperties","properties","items"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n indent,\n}) => {\n const [defaultRequireValue = 'always', {\n tags: tagMap = {},\n } = {}] = context.options;\n\n const {source} = jsdoc;\n\n const always = defaultRequireValue === 'always';\n const never = defaultRequireValue === 'never';\n\n let currentTag;\n source.some(({number, tokens}) => {\n const {delimiter, tag, end, description} = tokens;\n\n const neverFix = () => {\n tokens.delimiter = '';\n tokens.postDelimiter = '';\n };\n\n const checkNever = (checkValue) => {\n if (delimiter && delimiter !== '/**' && (\n never && !tagMap.always?.includes(checkValue) ||\n tagMap.never?.includes(checkValue)\n )) {\n utils.reportJSDoc('Expected JSDoc line to have no prefix.', {\n column: 0,\n line: number,\n }, neverFix);\n\n return true;\n }\n\n return false;\n };\n\n const alwaysFix = () => {\n if (!tokens.start) {\n tokens.start = indent + ' ';\n }\n\n tokens.delimiter = '*';\n tokens.postDelimiter = tag || description ? ' ' : '';\n };\n\n const checkAlways = (checkValue) => {\n if (\n !delimiter && (\n always && !tagMap.never?.includes(checkValue) ||\n tagMap.always?.includes(checkValue)\n )\n ) {\n utils.reportJSDoc('Expected JSDoc line to have the prefix.', {\n column: 0,\n line: number,\n }, alwaysFix);\n\n return true;\n }\n\n return false;\n };\n\n if (tag) {\n // Remove at sign\n currentTag = tag.slice(1);\n }\n\n if (\n // If this is the end but has a tag, the delimiter will also be\n // populated and will be safely ignored later\n end && !tag\n ) {\n return false;\n }\n\n if (!currentTag) {\n if (tagMap.any?.includes('*description')) {\n return false;\n }\n\n if (checkNever('*description')) {\n return true;\n }\n\n if (checkAlways('*description')) {\n return true;\n }\n\n return false;\n }\n\n if (tagMap.any?.includes(currentTag)) {\n return false;\n }\n\n if (checkNever(currentTag)) {\n return true;\n }\n\n if (checkAlways(currentTag)) {\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n fixable: 'code',\n schema: [\n {\n enum: ['always', 'never', 'any'],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n properties: {\n always: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n any: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n never: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"file":"requireAsteriskPrefix.js"}
@@ -5,12 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _lodash = _interopRequireDefault(require("lodash"));
9
-
10
8
  var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
11
9
 
12
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
11
 
12
+ const checkDescription = description => {
13
+ return description.trim().split('\n').filter(Boolean).length;
14
+ };
15
+
14
16
  var _default = (0, _iterateJsdoc.default)(({
15
17
  jsdoc,
16
18
  report,
@@ -43,12 +45,6 @@ var _default = (0, _iterateJsdoc.default)(({
43
45
  targetTagName = targetTagName.tagName;
44
46
  }
45
47
 
46
- const checkDescription = description => {
47
- const exampleContent = _lodash.default.compact(description.trim().split('\n'));
48
-
49
- return exampleContent.length;
50
- };
51
-
52
48
  if (descriptionStyle !== 'tag') {
53
49
  const {
54
50
  description
@@ -74,8 +70,10 @@ var _default = (0, _iterateJsdoc.default)(({
74
70
  }
75
71
  }
76
72
 
77
- const functionExamples = isBlocked ? [] : _lodash.default.filter(jsdoc.tags, {
78
- tag: targetTagName
73
+ const functionExamples = isBlocked ? [] : jsdoc.tags.filter(({
74
+ tag
75
+ }) => {
76
+ return tag === targetTagName;
79
77
  });
80
78
 
81
79
  if (!functionExamples.length) {
@@ -83,11 +81,11 @@ var _default = (0, _iterateJsdoc.default)(({
83
81
  return;
84
82
  }
85
83
 
86
- functionExamples.forEach(example => {
84
+ for (const example of functionExamples) {
87
85
  if (!checkDescription(`${example.name} ${utils.getTagDescription(example)}`)) {
88
86
  report(`Missing JSDoc @${targetTagName} description.`, null, example);
89
87
  }
90
- });
88
+ }
91
89
  }, {
92
90
  contextDefaults: true,
93
91
  meta: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireDescription.js"],"names":["jsdoc","report","utils","context","avoidDocs","descriptionStyle","options","targetTagName","getPreferredTagName","skipReportingBlockedTag","tagName","isBlocked","blocked","checkDescription","description","exampleContent","_","compact","trim","split","length","getDescription","descTags","getPresentTags","tag","functionExamples","filter","tags","forEach","example","name","getTagDescription","contextDefaults","meta","docs","url","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","checkSetters","contexts","items","anyOf","comment","enum","exemptedBy"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n const {descriptionStyle = 'body'} = context.options[0] || {};\n\n let targetTagName = utils.getPreferredTagName({\n // We skip reporting except when `@description` is essential to the rule,\n // so user can block the tag and still meaningfully use this rule\n // even if the tag is present (and `check-tag-names` is the one to\n // normally report the fact that it is blocked but present)\n skipReportingBlockedTag: descriptionStyle !== 'tag',\n tagName: 'description',\n });\n if (!targetTagName) {\n return;\n }\n const isBlocked = typeof targetTagName === 'object' && targetTagName.blocked;\n if (isBlocked) {\n targetTagName = targetTagName.tagName;\n }\n\n const checkDescription = (description) => {\n const exampleContent = _.compact(description.trim().split('\\n'));\n\n return exampleContent.length;\n };\n\n if (descriptionStyle !== 'tag') {\n const {description} = utils.getDescription();\n if (checkDescription(description || '')) {\n return;\n }\n\n if (descriptionStyle === 'body') {\n const descTags = utils.getPresentTags(['desc', 'description']);\n if (descTags.length) {\n const [{tag: tagName}] = descTags;\n report(`Remove the @${tagName} tag to leave a plain block description or add additional description text above the @${tagName} line.`);\n } else {\n report('Missing JSDoc block description.');\n }\n\n return;\n }\n }\n\n const functionExamples = isBlocked ?\n [] :\n _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n if (!functionExamples.length) {\n report(\n descriptionStyle === 'any' ?\n `Missing JSDoc block description or @${targetTagName} declaration.` :\n `Missing JSDoc @${targetTagName} declaration.`,\n );\n\n return;\n }\n\n functionExamples.forEach((example) => {\n if (!checkDescription(`${example.name} ${utils.getTagDescription(example)}`)) {\n report(`Missing JSDoc @${targetTagName} description.`, null, example);\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all functions have a description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: true,\n type: 'boolean',\n },\n checkSetters: {\n default: true,\n type: 'boolean',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n descriptionStyle: {\n enum: ['body', 'tag', 'any'],\n type: 'string',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireDescription.js"}
1
+ {"version":3,"sources":["../../src/rules/requireDescription.js"],"names":["checkDescription","description","trim","split","filter","Boolean","length","jsdoc","report","utils","context","avoidDocs","descriptionStyle","options","targetTagName","getPreferredTagName","skipReportingBlockedTag","tagName","isBlocked","blocked","getDescription","descTags","getPresentTags","tag","functionExamples","tags","example","name","getTagDescription","contextDefaults","meta","docs","url","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","checkSetters","contexts","items","anyOf","comment","enum","exemptedBy"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst checkDescription = (description) => {\n return description\n .trim()\n .split('\\n')\n .filter(Boolean)\n .length;\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n\n const {descriptionStyle = 'body'} = context.options[0] || {};\n\n let targetTagName = utils.getPreferredTagName({\n // We skip reporting except when `@description` is essential to the rule,\n // so user can block the tag and still meaningfully use this rule\n // even if the tag is present (and `check-tag-names` is the one to\n // normally report the fact that it is blocked but present)\n skipReportingBlockedTag: descriptionStyle !== 'tag',\n tagName: 'description',\n });\n if (!targetTagName) {\n return;\n }\n\n const isBlocked = typeof targetTagName === 'object' && targetTagName.blocked;\n if (isBlocked) {\n targetTagName = targetTagName.tagName;\n }\n\n if (descriptionStyle !== 'tag') {\n const {description} = utils.getDescription();\n if (checkDescription(description || '')) {\n return;\n }\n\n if (descriptionStyle === 'body') {\n const descTags = utils.getPresentTags(['desc', 'description']);\n if (descTags.length) {\n const [{tag: tagName}] = descTags;\n report(`Remove the @${tagName} tag to leave a plain block description or add additional description text above the @${tagName} line.`);\n } else {\n report('Missing JSDoc block description.');\n }\n\n return;\n }\n }\n\n const functionExamples = isBlocked ?\n [] :\n jsdoc.tags.filter(({tag}) => {\n return tag === targetTagName;\n });\n\n if (!functionExamples.length) {\n report(\n descriptionStyle === 'any' ?\n `Missing JSDoc block description or @${targetTagName} declaration.` :\n `Missing JSDoc @${targetTagName} declaration.`,\n );\n\n return;\n }\n\n for (const example of functionExamples) {\n if (!checkDescription(`${example.name} ${utils.getTagDescription(example)}`)) {\n report(`Missing JSDoc @${targetTagName} description.`, null, example);\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all functions have a description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: true,\n type: 'boolean',\n },\n checkSetters: {\n default: true,\n type: 'boolean',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n descriptionStyle: {\n enum: ['body', 'tag', 'any'],\n type: 'string',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireDescription.js"}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _lodash = _interopRequireDefault(require("lodash"));
8
+ var _escapeStringRegexp = _interopRequireDefault(require("escape-string-regexp"));
9
9
 
10
10
  var _mainUmd = require("regextras/dist/main-umd");
11
11
 
@@ -28,7 +28,7 @@ const extractSentences = (text, abbreviationsRegex) => {
28
28
  .replace(abbreviationsRegex, '');
29
29
  const sentenceEndGrouping = /([.?!])(?:\s+|$)/u; // eslint-disable-next-line unicorn/no-array-method-this-argument
30
30
 
31
- const puncts = (0, _mainUmd.RegExtras)(sentenceEndGrouping).map(txt, punct => {
31
+ const puncts = new _mainUmd.RegExtras(sentenceEndGrouping).map(txt, punct => {
32
32
  return punct;
33
33
  });
34
34
  return txt.split(/[.?!](?:\s+|$)/u) // Re-add the dot.
@@ -76,7 +76,7 @@ const validateDescription = (description, reportOrig, jsdocNode, abbreviationsRe
76
76
 
77
77
  if (!/[.:?!]$/u.test(paragraph)) {
78
78
  const line = paragraph.split('\n').pop();
79
- text = text.replace(new RegExp(`${_lodash.default.escapeRegExp(line)}$`, 'mu'), `${line}.`);
79
+ text = text.replace(new RegExp(`${(0, _escapeStringRegexp.default)(line)}$`, 'mu'), `${line}.`);
80
80
  }
81
81
 
82
82
  for (const sentence of sentences.filter(sentence_ => {
@@ -85,12 +85,12 @@ const validateDescription = (description, reportOrig, jsdocNode, abbreviationsRe
85
85
  const beginning = sentence.split('\n')[0];
86
86
 
87
87
  if (tag.tag) {
88
- const reg = new RegExp(`(@${_lodash.default.escapeRegExp(tag.tag)}.*)${_lodash.default.escapeRegExp(beginning)}`, 'u');
88
+ const reg = new RegExp(`(@${(0, _escapeStringRegexp.default)(tag.tag)}.*)${(0, _escapeStringRegexp.default)(beginning)}`, 'u');
89
89
  text = text.replace(reg, (_$0, $1) => {
90
90
  return $1 + capitalize(beginning);
91
91
  });
92
92
  } else {
93
- text = text.replace(new RegExp('((?:[.!?]|\\*|\\})\\s*)' + _lodash.default.escapeRegExp(beginning), 'u'), '$1' + capitalize(beginning));
93
+ text = text.replace(new RegExp('((?:[.!?]|\\*|\\})\\s*)' + (0, _escapeStringRegexp.default)(beginning), 'u'), '$1' + capitalize(beginning));
94
94
  }
95
95
  }
96
96
 
@@ -145,7 +145,7 @@ var _default = (0, _iterateJsdoc.default)(({
145
145
  newlineBeforeCapsAssumesBadSentenceEnd = false
146
146
  } = options;
147
147
  const abbreviationsRegex = abbreviations.length ? new RegExp('\\b' + abbreviations.map(abbreviation => {
148
- return _lodash.default.escapeRegExp(abbreviation.replace(/\.$/g, '') + '.');
148
+ return (0, _escapeStringRegexp.default)(abbreviation.replace(/\.$/ug, '') + '.');
149
149
  }).join('|') + '(?:$|\\s)', 'gu') : '';
150
150
  const {
151
151
  description
@@ -176,8 +176,7 @@ var _default = (0, _iterateJsdoc.default)(({
176
176
  });
177
177
  });
178
178
  tagsWithNames.some(tag => {
179
- const desc = _lodash.default.trimStart(utils.getTagDescription(tag), '- ').trimEnd();
180
-
179
+ const desc = utils.getTagDescription(tag).replace(/^- /u, '').trimEnd();
181
180
  return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);
182
181
  });
183
182
  tagsWithoutNames.some(tag => {