eslint-plugin-jsdoc 38.1.6 → 39.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +15 -1
- package/README.md +31 -6
- package/dist/iterateJsdoc.js +26 -28
- package/dist/iterateJsdoc.js.map +1 -1
- package/dist/jsdocUtils.js +4 -4
- package/dist/jsdocUtils.js.map +1 -1
- package/dist/rules/noMissingSyntax.js +6 -14
- package/dist/rules/noMissingSyntax.js.map +1 -1
- package/dist/rules/noRestrictedSyntax.js +2 -4
- package/dist/rules/noRestrictedSyntax.js.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.js +2 -7
- package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
- package/dist/rules/requireExample.js +8 -1
- package/dist/rules/requireExample.js.map +1 -1
- package/dist/rules/requireJsdoc.js +4 -6
- package/dist/rules/requireJsdoc.js.map +1 -1
- package/dist/rules/requireParam.js +2 -2
- package/dist/rules/requireParam.js.map +1 -1
- package/package.json +6 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireDescriptionCompleteSentence.js"],"names":["otherDescriptiveTags","Set","extractParagraphs","text","split","extractSentences","abbreviationsRegex","txt","replace","sentenceEndGrouping","puncts","RegExtras","map","punct","sentence","idx","test","isNewLinePrecededByAPeriod","lastLineEndsSentence","lines","some","line","isCapitalized","str","toUpperCase","isTable","charAt","capitalize","slice","validateDescription","description","reportOrig","jsdocNode","sourceCode","tag","newlineBeforeCapsAssumesBadSentenceEnd","paragraphs","paragraph","parIdx","sentences","fix","fixer","getText","pop","RegExp","filter","sentence_","beginning","reg","_$0","$1","replaceText","report","msg","tagObj","source","number","column","paragraphNoAbbreviations","context","jsdoc","utils","options","abbreviations","length","abbreviation","join","getDescription","forEachPreferredTag","matchingJsdocTag","desc","name","getTagDescription","trim","tagsWithNames","getTagsByType","tags","tagsWithoutNames","filterTags","tagName","has","hasOptionTag","trimEnd","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items","type"],"mappings":";;;;;;;AAAA;;AACA;;AAGA;;;;AAEA,MAAMA,oBAAoB,GAAG,IAAIC,GAAJ,CAAQ,CACnC;AACA;AACA;AACA,SAJmC,EAIxB,MAJwB,EAIhB,cAJgB,EAIA,UAJA,EAIY,WAJZ,EAIyB,MAJzB,EAKnC,YALmC,EAKrB,QALqB,EAKX,WALW,EAKE,QALF,EAKY,OALZ,CAAR,CAA7B;;AAQA,MAAMC,iBAAiB,GAAIC,IAAD,IAAU;AAClC,SAAOA,IAAI,CAACC,KAAL,CAAW,gBAAX,CAAP;AACD,CAFD;;AAIA,MAAMC,gBAAgB,GAAG,CAACF,IAAD,EAAOG,kBAAP,KAA8B;AACrD,QAAMC,GAAG,GAAGJ,IAAI,CAEd;AAFc,GAGbK,OAHS,CAGD,mBAHC,EAGoB,EAHpB,EAKV;AALU,GAMTA,OANS,CAMDF,kBANC,EAMmB,EANnB,CAAZ;AAQA,QAAMG,mBAAmB,GAAG,mBAA5B,CATqD,CAWrD;;AACA,QAAMC,MAAM,GAAG,IAAIC,kBAAJ,CAAcF,mBAAd,EAAmCG,GAAnC,CAAuCL,GAAvC,EAA6CM,KAAD,IAAW;AACpE,WAAOA,KAAP;AACD,GAFc,CAAf;AAIA,SAAON,GAAG,CAEPH,KAFI,CAEE,iBAFF,EAIL;AAJK,GAKJQ,GALI,CAKA,CAACE,QAAD,EAAWC,GAAX,KAAmB;AACtB,WAAO,SAASC,IAAT,CAAcF,QAAd,IAA0BA,QAA1B,GAAsC,GAAEA,QAAS,GAAEJ,MAAM,CAACK,GAAD,CAAN,IAAe,EAAG,EAA5E;AACD,GAPI,CAAP;AAQD,CAxBD;;AA0BA,MAAME,0BAA0B,GAAId,IAAD,IAAU;AAC3C,MAAIe,oBAAJ;AAEA,QAAMC,KAAK,GAAGhB,IAAI,CAACC,KAAL,CAAW,IAAX,CAAd;AAEA,SAAO,CAACe,KAAK,CAACC,IAAN,CAAYC,IAAD,IAAU;AAC3B,QAAIH,oBAAoB,KAAK,KAAzB,IAAkC,eAAeF,IAAf,CAAoBK,IAApB,CAAtC,EAAiE;AAC/D,aAAO,IAAP;AACD;;AAEDH,IAAAA,oBAAoB,GAAG,YAAYF,IAAZ,CAAiBK,IAAjB,CAAvB;AAEA,WAAO,KAAP;AACD,GARO,CAAR;AASD,CAdD;;AAgBA,MAAMC,aAAa,GAAIC,GAAD,IAAS;AAC7B,SAAOA,GAAG,CAAC,CAAD,CAAH,KAAWA,GAAG,CAAC,CAAD,CAAH,CAAOC,WAAP,EAAlB;AACD,CAFD;;AAIA,MAAMC,OAAO,GAAIF,GAAD,IAAS;AACvB,SAAOA,GAAG,CAACG,MAAJ,OAAiB,GAAxB;AACD,CAFD;;AAIA,MAAMC,UAAU,GAAIJ,GAAD,IAAS;AAC1B,SAAOA,GAAG,CAACG,MAAJ,CAAW,CAAX,EAAcF,WAAd,KAA8BD,GAAG,CAACK,KAAJ,CAAU,CAAV,CAArC;AACD,CAFD;;AAIA,MAAMC,mBAAmB,GAAG,CAC1BC,WAD0B,EACbC,UADa,EACDC,SADC,EACU1B,kBADV,EAE1B2B,UAF0B,EAEdC,GAFc,EAETC,sCAFS,KAGvB;AACH,MAAI,CAACL,WAAD,IAAiB,QAAD,CAAWd,IAAX,CAAgBc,WAAhB,CAApB,EAAkD;AAChD,WAAO,KAAP;AACD;;AAED,QAAMM,UAAU,GAAGlC,iBAAiB,CAAC4B,WAAD,CAApC;AAEA,SAAOM,UAAU,CAAChB,IAAX,CAAgB,CAACiB,SAAD,EAAYC,MAAZ,KAAuB;AAC5C,UAAMC,SAAS,GAAGlC,gBAAgB,CAACgC,SAAD,EAAY/B,kBAAZ,CAAlC;;AAEA,UAAMkC,GAAG,GAAIC,KAAD,IAAW;AACrB,UAAItC,IAAI,GAAG8B,UAAU,CAACS,OAAX,CAAmBV,SAAnB,CAAX;;AAEA,UAAI,CAAC,WAAWhB,IAAX,CAAgBqB,SAAhB,CAAL,EAAiC;AAC/B,cAAMhB,IAAI,GAAGgB,SAAS,CAACjC,KAAV,CAAgB,IAAhB,EAAsBuC,GAAtB,EAAb;AAEAxC,QAAAA,IAAI,GAAGA,IAAI,CAACK,OAAL,CAAa,IAAIoC,MAAJ,CAAY,GAAE,iCAAmBvB,IAAnB,CAAyB,GAAvC,EAA2C,IAA3C,CAAb,EAAgE,GAAEA,IAAK,GAAvE,CAAP;AACD;;AAED,WAAK,MAAMP,QAAX,IAAuByB,SAAS,CAACM,MAAV,CAAkBC,SAAD,IAAe;AACrD,eAAO,CAAE,QAAD,CAAW9B,IAAX,CAAgB8B,SAAhB,CAAD,IAA+B,CAACxB,aAAa,CAACwB,SAAD,CAA7C,IACL,CAACrB,OAAO,CAACqB,SAAD,CADV;AAED,OAHsB,CAAvB,EAGI;AACF,cAAMC,SAAS,GAAGjC,QAAQ,CAACV,KAAT,CAAe,IAAf,EAAqB,CAArB,CAAlB;;AAEA,YAAI8B,GAAG,CAACA,GAAR,EAAa;AACX,gBAAMc,GAAG,GAAG,IAAIJ,MAAJ,CAAY,KAAI,iCAAmBV,GAAG,CAACA,GAAvB,CAA4B,MAAK,iCAAmBa,SAAnB,CAA8B,EAA/E,EAAkF,GAAlF,CAAZ;AAEA5C,UAAAA,IAAI,GAAGA,IAAI,CAACK,OAAL,CAAawC,GAAb,EAAkB,CAACC,GAAD,EAAMC,EAAN,KAAa;AACpC,mBAAOA,EAAE,GAAGvB,UAAU,CAACoB,SAAD,CAAtB;AACD,WAFM,CAAP;AAGD,SAND,MAMO;AACL5C,UAAAA,IAAI,GAAGA,IAAI,CAACK,OAAL,CAAa,IAAIoC,MAAJ,CAAW,4BAA4B,iCAAmBG,SAAnB,CAAvC,EAAsE,GAAtE,CAAb,EAAyF,OAAOpB,UAAU,CAACoB,SAAD,CAA1G,CAAP;AACD;AACF;;AAED,aAAON,KAAK,CAACU,WAAN,CAAkBnB,SAAlB,EAA6B7B,IAA7B,CAAP;AACD,KA3BD;;AA6BA,UAAMiD,MAAM,GAAG,CAACC,GAAD,EAAMZ,KAAN,EAAaa,MAAb,KAAwB;AACrC,UAAI,UAAUA,MAAd,EAAsB;AACpBA,QAAAA,MAAM,CAACjC,IAAP,IAAeiB,MAAM,GAAG,CAAxB;AACD,OAFD,MAEO;AACLgB,QAAAA,MAAM,CAACC,MAAP,CAAc,CAAd,EAAiBC,MAAjB,IAA2BlB,MAAM,GAAG,CAApC;AACD,OALoC,CAOrC;;;AACAgB,MAAAA,MAAM,CAACG,MAAP,GAAgB,CAAhB;AACA1B,MAAAA,UAAU,CAACsB,GAAD,EAAMZ,KAAN,EAAaa,MAAb,CAAV;AACD,KAVD;;AAYA,QAAIf,SAAS,CAACnB,IAAV,CAAgBN,QAAD,IAAc;AAC/B,aAAO,CAAE,QAAD,CAAWE,IAAX,CAAgBF,QAAhB,CAAD,IAA8B,CAACQ,aAAa,CAACR,QAAD,CAA5C,IAA0D,CAACW,OAAO,CAACX,QAAD,CAAzE;AACD,KAFG,CAAJ,EAEI;AACFsC,MAAAA,MAAM,CAAC,oDAAD,EAAuDZ,GAAvD,EAA4DN,GAA5D,CAAN;AACD;;AAED,UAAMwB,wBAAwB,GAAGrB,SAAS,CAAC7B,OAAV,CAAkBF,kBAAlB,EAAsC,EAAtC,CAAjC;;AAEA,QAAI,CAAC,cAAcU,IAAd,CAAmB0C,wBAAnB,CAAL,EAAmD;AACjDN,MAAAA,MAAM,CAAC,kCAAD,EAAqCZ,GAArC,EAA0CN,GAA1C,CAAN;AAEA,aAAO,IAAP;AACD;;AAED,QAAIC,sCAAsC,IAAI,CAAClB,0BAA0B,CAACyC,wBAAD,CAAzE,EAAqG;AACnGN,MAAAA,MAAM,CAAC,sGAAD,EAAyG,IAAzG,EAA+GlB,GAA/G,CAAN;AAEA,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD,GAjEM,CAAP;AAkED,CA5ED;;eA8Ee,2BAAa,CAAC;AAC3BD,EAAAA,UAD2B;AAE3B0B,EAAAA,OAF2B;AAG3BC,EAAAA,KAH2B;AAI3BR,EAAAA,MAJ2B;AAK3BpB,EAAAA,SAL2B;AAM3B6B,EAAAA;AAN2B,CAAD,KAOtB;AACJ,QAAMC,OAAO,GAAGH,OAAO,CAACG,OAAR,CAAgB,CAAhB,KAAsB,EAAtC;AACA,QAAM;AACJC,IAAAA,aAAa,GAAG,EADZ;AAEJ5B,IAAAA,sCAAsC,GAAG;AAFrC,MAGF2B,OAHJ;AAKA,QAAMxD,kBAAkB,GAAGyD,aAAa,CAACC,MAAd,GACzB,IAAIpB,MAAJ,CAAW,QAAQmB,aAAa,CAACnD,GAAd,CAAmBqD,YAAD,IAAkB;AACrD,WAAO,iCAAmBA,YAAY,CAACzD,OAAb,CAAqB,OAArB,EAA8B,EAA9B,IAAoC,GAAvD,CAAP;AACD,GAFkB,EAEhB0D,IAFgB,CAEX,GAFW,CAAR,GAEI,WAFf,EAE4B,IAF5B,CADyB,GAIzB,EAJF;AAMA,QAAM;AACJpC,IAAAA;AADI,MAEF+B,KAAK,CAACM,cAAN,EAFJ;;AAIA,MAAItC,mBAAmB,CAACC,WAAD,EAAcsB,MAAd,EAAsBpB,SAAtB,EAAiC1B,kBAAjC,EAAqD2B,UAArD,EAAiE;AACtFZ,IAAAA,IAAI,EAAEuC,KAAK,CAACL,MAAN,CAAa,CAAb,EAAgBC,MAAhB,GAAyB;AADuD,GAAjE,EAEpBrB,sCAFoB,CAAvB,EAE4C;AAC1C;AACD;;AAED0B,EAAAA,KAAK,CAACO,mBAAN,CAA0B,aAA1B,EAA0CC,gBAAD,IAAsB;AAC7D,UAAMC,IAAI,GAAI,GAAED,gBAAgB,CAACE,IAAK,IAAGV,KAAK,CAACW,iBAAN,CAAwBH,gBAAxB,CAA0C,EAAtE,CAAwEI,IAAxE,EAAb;AACA5C,IAAAA,mBAAmB,CAACyC,IAAD,EAAOlB,MAAP,EAAepB,SAAf,EAA0B1B,kBAA1B,EAA8C2B,UAA9C,EAA0DoC,gBAA1D,EAA4ElC,sCAA5E,CAAnB;AACD,GAHD,EAGG,IAHH;AAKA,QAAM;AACJuC,IAAAA;AADI,MAEFb,KAAK,CAACc,aAAN,CAAoBf,KAAK,CAACgB,IAA1B,CAFJ;AAGA,QAAMC,gBAAgB,GAAGhB,KAAK,CAACiB,UAAN,CAAiB,CAAC;AACzC5C,IAAAA,GAAG,EAAE6C;AADoC,GAAD,KAEpC;AACJ,WAAO/E,oBAAoB,CAACgF,GAArB,CAAyBD,OAAzB,KACLlB,KAAK,CAACoB,YAAN,CAAmBF,OAAnB,KAA+B,CAACL,aAAa,CAACtD,IAAd,CAAmB,CAAC;AAClDc,MAAAA;AADkD,KAAD,KAE7C;AACJ;AACA;AACA,aAAOA,GAAG,KAAK6C,OAAf;AACD,KAN+B,CADlC;AAQD,GAXwB,CAAzB;AAaAL,EAAAA,aAAa,CAACtD,IAAd,CAAoBc,GAAD,IAAS;AAC1B,UAAMoC,IAAI,GAAGT,KAAK,CAACW,iBAAN,CAAwBtC,GAAxB,EAA6B1B,OAA7B,CAAqC,MAArC,EAA6C,EAA7C,EAAiD0E,OAAjD,EAAb;AAEA,WAAOrD,mBAAmB,CAACyC,IAAD,EAAOlB,MAAP,EAAepB,SAAf,EAA0B1B,kBAA1B,EAA8C2B,UAA9C,EAA0DC,GAA1D,EAA+DC,sCAA/D,CAA1B;AACD,GAJD;AAMA0C,EAAAA,gBAAgB,CAACzD,IAAjB,CAAuBc,GAAD,IAAS;AAC7B,UAAMoC,IAAI,GAAI,GAAEpC,GAAG,CAACqC,IAAK,IAAGV,KAAK,CAACW,iBAAN,CAAwBtC,GAAxB,CAA6B,EAA5C,CAA8CuC,IAA9C,EAAb;AAEA,WAAO5C,mBAAmB,CAACyC,IAAD,EAAOlB,MAAP,EAAepB,SAAf,EAA0B1B,kBAA1B,EAA8C2B,UAA9C,EAA0DC,GAA1D,EAA+DC,sCAA/D,CAA1B;AACD,GAJD;AAKD,CA9Dc,EA8DZ;AACDgD,EAAAA,gBAAgB,EAAE,IADjB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJvD,MAAAA,WAAW,EAAE,uIADT;AAEJwD,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,MALL;AAMJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACV3B,QAAAA,aAAa,EAAE;AACb4B,UAAAA,KAAK,EAAE;AACLC,YAAAA,IAAI,EAAE;AADD,WADM;AAIbA,UAAAA,IAAI,EAAE;AAJO,SADL;AAOVzD,QAAAA,sCAAsC,EAAE;AACtCyD,UAAAA,IAAI,EAAE;AADgC,SAP9B;AAUVhB,QAAAA,IAAI,EAAE;AACJe,UAAAA,KAAK,EAAE;AACLC,YAAAA,IAAI,EAAE;AADD,WADH;AAIJA,UAAAA,IAAI,EAAE;AAJF;AAVI,OAFd;AAmBEA,MAAAA,IAAI,EAAE;AAnBR,KADM,CANJ;AA6BJA,IAAAA,IAAI,EAAE;AA7BF;AAFL,CA9DY,C","sourcesContent":["import escapeStringRegexp from 'escape-string-regexp';\nimport {\n RegExtras,\n} from 'regextras/dist/main-umd';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst otherDescriptiveTags = new Set([\n // 'copyright' and 'see' might be good addition, but as the former may be\n // sensitive text, and the latter may have just a link, they are not\n // included by default\n 'summary', 'file', 'fileoverview', 'overview', 'classdesc', 'todo',\n 'deprecated', 'throws', 'exception', 'yields', 'yield',\n]);\n\nconst extractParagraphs = (text) => {\n return text.split(/(?<![;:])\\n\\n/u);\n};\n\nconst extractSentences = (text, abbreviationsRegex) => {\n const txt = text\n\n // Remove all {} tags.\n .replace(/\\{[\\s\\S]*?\\}\\s*/gu, '')\n\n // Remove custom abbreviations\n .replace(abbreviationsRegex, '');\n\n const sentenceEndGrouping = /([.?!])(?:\\s+|$)/u;\n\n // eslint-disable-next-line unicorn/no-array-method-this-argument\n const puncts = new RegExtras(sentenceEndGrouping).map(txt, (punct) => {\n return punct;\n });\n\n return txt\n\n .split(/[.?!](?:\\s+|$)/u)\n\n // Re-add the dot.\n .map((sentence, idx) => {\n return /^\\s*$/u.test(sentence) ? sentence : `${sentence}${puncts[idx] || ''}`;\n });\n};\n\nconst isNewLinePrecededByAPeriod = (text) => {\n let lastLineEndsSentence;\n\n const lines = text.split('\\n');\n\n return !lines.some((line) => {\n if (lastLineEndsSentence === false && /^[A-Z][a-z]/u.test(line)) {\n return true;\n }\n\n lastLineEndsSentence = /[.:?!|]$/u.test(line);\n\n return false;\n });\n};\n\nconst isCapitalized = (str) => {\n return str[0] === str[0].toUpperCase();\n};\n\nconst isTable = (str) => {\n return str.charAt() === '|';\n};\n\nconst capitalize = (str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nconst validateDescription = (\n description, reportOrig, jsdocNode, abbreviationsRegex,\n sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd,\n) => {\n if (!description || (/^\\n+$/u).test(description)) {\n return false;\n }\n\n const paragraphs = extractParagraphs(description);\n\n return paragraphs.some((paragraph, parIdx) => {\n const sentences = extractSentences(paragraph, abbreviationsRegex);\n\n const fix = (fixer) => {\n let text = sourceCode.getText(jsdocNode);\n\n if (!/[.:?!]$/u.test(paragraph)) {\n const line = paragraph.split('\\n').pop();\n\n text = text.replace(new RegExp(`${escapeStringRegexp(line)}$`, 'mu'), `${line}.`);\n }\n\n for (const sentence of sentences.filter((sentence_) => {\n return !(/^\\s*$/u).test(sentence_) && !isCapitalized(sentence_) &&\n !isTable(sentence_);\n })) {\n const beginning = sentence.split('\\n')[0];\n\n if (tag.tag) {\n const reg = new RegExp(`(@${escapeStringRegexp(tag.tag)}.*)${escapeStringRegexp(beginning)}`, 'u');\n\n text = text.replace(reg, (_$0, $1) => {\n return $1 + capitalize(beginning);\n });\n } else {\n text = text.replace(new RegExp('((?:[.!?]|\\\\*|\\\\})\\\\s*)' + escapeStringRegexp(beginning), 'u'), '$1' + capitalize(beginning));\n }\n }\n\n return fixer.replaceText(jsdocNode, text);\n };\n\n const report = (msg, fixer, tagObj) => {\n if ('line' in tagObj) {\n tagObj.line += parIdx * 2;\n } else {\n tagObj.source[0].number += parIdx * 2;\n }\n\n // Avoid errors if old column doesn't exist here\n tagObj.column = 0;\n reportOrig(msg, fixer, tagObj);\n };\n\n if (sentences.some((sentence) => {\n return !(/^\\s*$/u).test(sentence) && !isCapitalized(sentence) && !isTable(sentence);\n })) {\n report('Sentence should start with an uppercase character.', fix, tag);\n }\n\n const paragraphNoAbbreviations = paragraph.replace(abbreviationsRegex, '');\n\n if (!/[.!?|]\\s*$/u.test(paragraphNoAbbreviations)) {\n report('Sentence must end with a period.', fix, tag);\n\n return true;\n }\n\n if (newlineBeforeCapsAssumesBadSentenceEnd && !isNewLinePrecededByAPeriod(paragraphNoAbbreviations)) {\n report('A line of text is started with an uppercase character, but preceding line does not end the sentence.', null, tag);\n\n return true;\n }\n\n return false;\n });\n};\n\nexport default iterateJsdoc(({\n sourceCode,\n context,\n jsdoc,\n report,\n jsdocNode,\n utils,\n}) => {\n const options = context.options[0] || {};\n const {\n abbreviations = [],\n newlineBeforeCapsAssumesBadSentenceEnd = false,\n } = options;\n\n const abbreviationsRegex = abbreviations.length ?\n new RegExp('\\\\b' + abbreviations.map((abbreviation) => {\n return escapeStringRegexp(abbreviation.replace(/\\.$/ug, '') + '.');\n }).join('|') + '(?:$|\\\\s)', 'gu') :\n '';\n\n const {\n description,\n } = utils.getDescription();\n\n if (validateDescription(description, report, jsdocNode, abbreviationsRegex, sourceCode, {\n line: jsdoc.source[0].number + 1,\n }, newlineBeforeCapsAssumesBadSentenceEnd)) {\n return;\n }\n\n utils.forEachPreferredTag('description', (matchingJsdocTag) => {\n const desc = `${matchingJsdocTag.name} ${utils.getTagDescription(matchingJsdocTag)}`.trim();\n validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, matchingJsdocTag, newlineBeforeCapsAssumesBadSentenceEnd);\n }, true);\n\n const {\n tagsWithNames,\n } = utils.getTagsByType(jsdoc.tags);\n const tagsWithoutNames = utils.filterTags(({\n tag: tagName,\n }) => {\n return otherDescriptiveTags.has(tagName) ||\n utils.hasOptionTag(tagName) && !tagsWithNames.some(({\n tag,\n }) => {\n // If user accidentally adds tags with names (or like `returns`\n // get parsed as having names), do not add to this list\n return tag === tagName;\n });\n });\n\n tagsWithNames.some((tag) => {\n const desc = utils.getTagDescription(tag).replace(/^- /u, '').trimEnd();\n\n return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);\n });\n\n tagsWithoutNames.some((tag) => {\n const desc = `${tag.name} ${utils.getTagDescription(tag)}`.trim();\n\n return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description-complete-sentence',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n abbreviations: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n newlineBeforeCapsAssumesBadSentenceEnd: {\n type: 'boolean',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireDescriptionCompleteSentence.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireDescriptionCompleteSentence.js"],"names":["otherDescriptiveTags","Set","extractParagraphs","text","split","extractSentences","abbreviationsRegex","txt","replace","sentenceEndGrouping","puncts","matchAll","map","sentence","idx","test","isNewLinePrecededByAPeriod","lastLineEndsSentence","lines","some","line","isCapitalized","str","toUpperCase","isTable","charAt","capitalize","slice","validateDescription","description","reportOrig","jsdocNode","sourceCode","tag","newlineBeforeCapsAssumesBadSentenceEnd","paragraphs","paragraph","parIdx","sentences","fix","fixer","getText","pop","RegExp","filter","sentence_","beginning","reg","_$0","$1","replaceText","report","msg","tagObj","source","number","column","paragraphNoAbbreviations","context","jsdoc","utils","options","abbreviations","length","abbreviation","join","getDescription","forEachPreferredTag","matchingJsdocTag","desc","name","getTagDescription","trim","tagsWithNames","getTagsByType","tags","tagsWithoutNames","filterTags","tagName","has","hasOptionTag","trimEnd","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items","type"],"mappings":"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","sourcesContent":["import escapeStringRegexp from 'escape-string-regexp';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst otherDescriptiveTags = new Set([\n // 'copyright' and 'see' might be good addition, but as the former may be\n // sensitive text, and the latter may have just a link, they are not\n // included by default\n 'summary', 'file', 'fileoverview', 'overview', 'classdesc', 'todo',\n 'deprecated', 'throws', 'exception', 'yields', 'yield',\n]);\n\nconst extractParagraphs = (text) => {\n return text.split(/(?<![;:])\\n\\n/u);\n};\n\nconst extractSentences = (text, abbreviationsRegex) => {\n const txt = text\n\n // Remove all {} tags.\n .replace(/\\{[\\s\\S]*?\\}\\s*/gu, '')\n\n // Remove custom abbreviations\n .replace(abbreviationsRegex, '');\n\n const sentenceEndGrouping = /([.?!])(?:\\s+|$)/ug;\n\n const puncts = txt.matchAll(sentenceEndGrouping);\n\n return txt\n\n .split(/[.?!](?:\\s+|$)/u)\n\n // Re-add the dot.\n .map((sentence, idx) => {\n return /^\\s*$/u.test(sentence) ? sentence : `${sentence}${puncts[idx] || ''}`;\n });\n};\n\nconst isNewLinePrecededByAPeriod = (text) => {\n let lastLineEndsSentence;\n\n const lines = text.split('\\n');\n\n return !lines.some((line) => {\n if (lastLineEndsSentence === false && /^[A-Z][a-z]/u.test(line)) {\n return true;\n }\n\n lastLineEndsSentence = /[.:?!|]$/u.test(line);\n\n return false;\n });\n};\n\nconst isCapitalized = (str) => {\n return str[0] === str[0].toUpperCase();\n};\n\nconst isTable = (str) => {\n return str.charAt() === '|';\n};\n\nconst capitalize = (str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nconst validateDescription = (\n description, reportOrig, jsdocNode, abbreviationsRegex,\n sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd,\n) => {\n if (!description || (/^\\n+$/u).test(description)) {\n return false;\n }\n\n const paragraphs = extractParagraphs(description);\n\n return paragraphs.some((paragraph, parIdx) => {\n const sentences = extractSentences(paragraph, abbreviationsRegex);\n\n const fix = (fixer) => {\n let text = sourceCode.getText(jsdocNode);\n\n if (!/[.:?!]$/u.test(paragraph)) {\n const line = paragraph.split('\\n').pop();\n\n text = text.replace(new RegExp(`${escapeStringRegexp(line)}$`, 'mu'), `${line}.`);\n }\n\n for (const sentence of sentences.filter((sentence_) => {\n return !(/^\\s*$/u).test(sentence_) && !isCapitalized(sentence_) &&\n !isTable(sentence_);\n })) {\n const beginning = sentence.split('\\n')[0];\n\n if (tag.tag) {\n const reg = new RegExp(`(@${escapeStringRegexp(tag.tag)}.*)${escapeStringRegexp(beginning)}`, 'u');\n\n text = text.replace(reg, (_$0, $1) => {\n return $1 + capitalize(beginning);\n });\n } else {\n text = text.replace(new RegExp('((?:[.!?]|\\\\*|\\\\})\\\\s*)' + escapeStringRegexp(beginning), 'u'), '$1' + capitalize(beginning));\n }\n }\n\n return fixer.replaceText(jsdocNode, text);\n };\n\n const report = (msg, fixer, tagObj) => {\n if ('line' in tagObj) {\n tagObj.line += parIdx * 2;\n } else {\n tagObj.source[0].number += parIdx * 2;\n }\n\n // Avoid errors if old column doesn't exist here\n tagObj.column = 0;\n reportOrig(msg, fixer, tagObj);\n };\n\n if (sentences.some((sentence) => {\n return !(/^\\s*$/u).test(sentence) && !isCapitalized(sentence) && !isTable(sentence);\n })) {\n report('Sentence should start with an uppercase character.', fix, tag);\n }\n\n const paragraphNoAbbreviations = paragraph.replace(abbreviationsRegex, '');\n\n if (!/[.!?|]\\s*$/u.test(paragraphNoAbbreviations)) {\n report('Sentence must end with a period.', fix, tag);\n\n return true;\n }\n\n if (newlineBeforeCapsAssumesBadSentenceEnd && !isNewLinePrecededByAPeriod(paragraphNoAbbreviations)) {\n report('A line of text is started with an uppercase character, but preceding line does not end the sentence.', null, tag);\n\n return true;\n }\n\n return false;\n });\n};\n\nexport default iterateJsdoc(({\n sourceCode,\n context,\n jsdoc,\n report,\n jsdocNode,\n utils,\n}) => {\n const options = context.options[0] || {};\n const {\n abbreviations = [],\n newlineBeforeCapsAssumesBadSentenceEnd = false,\n } = options;\n\n const abbreviationsRegex = abbreviations.length ?\n new RegExp('\\\\b' + abbreviations.map((abbreviation) => {\n return escapeStringRegexp(abbreviation.replace(/\\.$/ug, '') + '.');\n }).join('|') + '(?:$|\\\\s)', 'gu') :\n '';\n\n const {\n description,\n } = utils.getDescription();\n\n if (validateDescription(description, report, jsdocNode, abbreviationsRegex, sourceCode, {\n line: jsdoc.source[0].number + 1,\n }, newlineBeforeCapsAssumesBadSentenceEnd)) {\n return;\n }\n\n utils.forEachPreferredTag('description', (matchingJsdocTag) => {\n const desc = `${matchingJsdocTag.name} ${utils.getTagDescription(matchingJsdocTag)}`.trim();\n validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, matchingJsdocTag, newlineBeforeCapsAssumesBadSentenceEnd);\n }, true);\n\n const {\n tagsWithNames,\n } = utils.getTagsByType(jsdoc.tags);\n const tagsWithoutNames = utils.filterTags(({\n tag: tagName,\n }) => {\n return otherDescriptiveTags.has(tagName) ||\n utils.hasOptionTag(tagName) && !tagsWithNames.some(({\n tag,\n }) => {\n // If user accidentally adds tags with names (or like `returns`\n // get parsed as having names), do not add to this list\n return tag === tagName;\n });\n });\n\n tagsWithNames.some((tag) => {\n const desc = utils.getTagDescription(tag).replace(/^- /u, '').trimEnd();\n\n return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);\n });\n\n tagsWithoutNames.some((tag) => {\n const desc = `${tag.name} ${utils.getTagDescription(tag)}`.trim();\n\n return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description-complete-sentence',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n abbreviations: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n newlineBeforeCapsAssumesBadSentenceEnd: {\n type: 'boolean',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireDescriptionCompleteSentence.js"}
|
|
@@ -20,6 +20,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
const {
|
|
23
|
+
enableFixer = true,
|
|
23
24
|
exemptNoArguments = false
|
|
24
25
|
} = context.options[0] || {};
|
|
25
26
|
const targetTagName = 'example';
|
|
@@ -35,7 +36,9 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
utils.reportJSDoc(`Missing JSDoc @${targetTagName} declaration.`, null, () => {
|
|
38
|
-
|
|
39
|
+
if (enableFixer) {
|
|
40
|
+
utils.addTag(targetTagName);
|
|
41
|
+
}
|
|
39
42
|
});
|
|
40
43
|
return;
|
|
41
44
|
}
|
|
@@ -89,6 +92,10 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
89
92
|
},
|
|
90
93
|
type: 'array'
|
|
91
94
|
},
|
|
95
|
+
enableFixer: {
|
|
96
|
+
default: true,
|
|
97
|
+
type: 'boolean'
|
|
98
|
+
},
|
|
92
99
|
exemptedBy: {
|
|
93
100
|
items: {
|
|
94
101
|
type: 'string'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireExample.js"],"names":["context","jsdoc","report","utils","avoidDocs","exemptNoArguments","options","targetTagName","functionExamples","tags","filter","tag","length","isIteratingFunction","hasParams","reportJSDoc","addTag","example","exampleContent","name","getTagDescription","trim","split","Boolean","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,OAD2B;AAE3BC,EAAAA,KAF2B;AAG3BC,EAAAA,MAH2B;AAI3BC,EAAAA;AAJ2B,CAAD,KAKtB;AACJ,MAAIA,KAAK,CAACC,SAAN,EAAJ,EAAuB;AACrB;AACD;;AAED,QAAM;AACJC,IAAAA,iBAAiB,GAAG;
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireExample.js"],"names":["context","jsdoc","report","utils","avoidDocs","enableFixer","exemptNoArguments","options","targetTagName","functionExamples","tags","filter","tag","length","isIteratingFunction","hasParams","reportJSDoc","addTag","example","exampleContent","name","getTagDescription","trim","split","Boolean","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n utils,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n\n const {\n enableFixer = true,\n exemptNoArguments = false,\n } = context.options[0] || {};\n\n const targetTagName = 'example';\n\n const functionExamples = jsdoc.tags.filter(({\n tag,\n }) => {\n return tag === targetTagName;\n });\n\n if (!functionExamples.length) {\n if (exemptNoArguments && utils.isIteratingFunction() &&\n !utils.hasParams()\n ) {\n return;\n }\n\n utils.reportJSDoc(`Missing JSDoc @${targetTagName} declaration.`, null, () => {\n if (enableFixer) {\n utils.addTag(targetTagName);\n }\n });\n\n return;\n }\n\n for (const example of functionExamples) {\n const exampleContent = `${example.name} ${utils.getTagDescription(example)}`\n .trim()\n .split('\\n')\n .filter(Boolean);\n\n if (!exampleContent.length) {\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 examples.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-example',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\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 enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n exemptNoArguments: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireExample.js"}
|
|
@@ -270,13 +270,11 @@ var _default = {
|
|
|
270
270
|
};
|
|
271
271
|
|
|
272
272
|
if (publicOnly) {
|
|
273
|
-
var _publicOnly$ancestors, _publicOnly$esm, _publicOnly$cjs, _publicOnly$window;
|
|
274
|
-
|
|
275
273
|
const opt = {
|
|
276
|
-
ancestorsOnly: Boolean((
|
|
277
|
-
esm: Boolean((
|
|
278
|
-
initModuleExports: Boolean((
|
|
279
|
-
initWindow: Boolean((
|
|
274
|
+
ancestorsOnly: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.ancestorsOnly) ?? false),
|
|
275
|
+
esm: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.esm) ?? true),
|
|
276
|
+
initModuleExports: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.cjs) ?? true),
|
|
277
|
+
initWindow: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.window) ?? false)
|
|
280
278
|
};
|
|
281
279
|
|
|
282
280
|
const exported = _exportParser.default.isUncommentedExport(node, sourceCode, opt, settings);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireJsdoc.js"],"names":["OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","default","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","options","getOptions","baseObj","prop","Object","keys","opt","create","sourceCode","getSourceCode","settings","requireOption","checkJsDoc","info","handler","node","jsDocNode","jsdocUtils","exemptSpeciaMethods","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","length","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","decorator","indent","getIndent","text","getText","loc","start","column","find","ctxt","insertion","repeat","slice","insertTextBefore","report","end","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","some","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","description","recommended","url","fixable","messages","missingJsDoc","schema"],"mappings":"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","sourcesContent":["import {\n getJSDocComment,\n getReducedASTNode,\n getDecorator,\n} from '@es-joy/jsdoccomment';\nimport exportParser from '../exportParser';\nimport {\n getSettings,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptEmptyConstructors: {\n default: false,\n type: 'boolean',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n fixerMessage: {\n default: '',\n type: 'string',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return baseObject.properties[key].default;\n};\n\nconst getOptions = (context) => {\n const {\n publicOnly,\n contexts = [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'require', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\nexport default {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const {\n require: requireOption,\n contexts,\n publicOnly,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n } = getOptions(context);\n\n const checkJsDoc = (info, handler, node) => {\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (jsdocUtils.exemptSpeciaMethods(\n {\n tags: [],\n }, node, context, [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && jsdocUtils.isConstructor(node)\n ) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node)) {\n return;\n }\n }\n\n const fix = (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(baseNode);\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = jsdocUtils.getIndent({\n text: sourceCode.getText(\n baseNode,\n baseNode.loc.start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === node.type;\n }) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const loc = {\n end: node.loc.start + 1,\n start: node.loc.start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...jsdocUtils.getContextObject(\n jsdocUtils.enforcedContexts(context, []),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (hasOption('MethodDefinition') && node.parent.type === 'MethodDefinition') {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n\n return;\n }\n\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n };\n },\n meta: {\n docs: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: 'true',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n};\n"],"file":"requireJsdoc.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireJsdoc.js"],"names":["OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","default","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","options","getOptions","baseObj","prop","Object","keys","opt","create","sourceCode","getSourceCode","settings","requireOption","checkJsDoc","info","handler","node","jsDocNode","jsdocUtils","exemptSpeciaMethods","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","length","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","decorator","indent","getIndent","text","getText","loc","start","column","find","ctxt","insertion","repeat","slice","insertTextBefore","report","end","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","some","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","description","recommended","url","fixable","messages","missingJsDoc","schema"],"mappings":"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","sourcesContent":["import {\n getJSDocComment,\n getReducedASTNode,\n getDecorator,\n} from '@es-joy/jsdoccomment';\nimport exportParser from '../exportParser';\nimport {\n getSettings,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptEmptyConstructors: {\n default: false,\n type: 'boolean',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n fixerMessage: {\n default: '',\n type: 'string',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return baseObject.properties[key].default;\n};\n\nconst getOptions = (context) => {\n const {\n publicOnly,\n contexts = [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'require', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\nexport default {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const {\n require: requireOption,\n contexts,\n publicOnly,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n } = getOptions(context);\n\n const checkJsDoc = (info, handler, node) => {\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (jsdocUtils.exemptSpeciaMethods(\n {\n tags: [],\n }, node, context, [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && jsdocUtils.isConstructor(node)\n ) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node)) {\n return;\n }\n }\n\n const fix = (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(baseNode);\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = jsdocUtils.getIndent({\n text: sourceCode.getText(\n baseNode,\n baseNode.loc.start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === node.type;\n }) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const loc = {\n end: node.loc.start + 1,\n start: node.loc.start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...jsdocUtils.getContextObject(\n jsdocUtils.enforcedContexts(context, []),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (hasOption('MethodDefinition') && node.parent.type === 'MethodDefinition') {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n\n return;\n }\n\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n };\n },\n meta: {\n docs: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: 'true',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n};\n"],"file":"requireJsdoc.js"}
|
|
@@ -313,7 +313,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
313
313
|
postType: type ? ' ' : '',
|
|
314
314
|
start: jsdoc.source[sourceIndex].tokens.start,
|
|
315
315
|
tag: `@${preferredTagName}`,
|
|
316
|
-
type: type
|
|
316
|
+
type: type ?? ''
|
|
317
317
|
}
|
|
318
318
|
};
|
|
319
319
|
jsdoc.tags.splice(tagIndex, spliceCount, {
|
|
@@ -321,7 +321,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
321
321
|
newAdd: true,
|
|
322
322
|
source: [tokens],
|
|
323
323
|
tag: preferredTagName,
|
|
324
|
-
type: type
|
|
324
|
+
type: type ?? ''
|
|
325
325
|
});
|
|
326
326
|
const firstNumber = jsdoc.source[0].number;
|
|
327
327
|
jsdoc.source.splice(sourceIndex, spliceCount, tokens);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireParam.js"],"names":["rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","jsdoc","utils","context","preferredTagName","getPreferredTagName","tagName","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","checkTypesRegex","getRegexFromString","missingTags","functionParameterNames","getFunctionParameterNames","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","entries","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","functionParameterIdx","functionParameterName","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","default","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * @template T\n * @param {string[]} desiredRoots\n * @param {number} currentIndex\n * @returns {[string, boolean, () => T]}\n */\nconst rootNamer = (desiredRoots, currentIndex) => {\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = desiredRoots.shift();\n }\n\n return [\n name, incremented, () => {\n return rootNamer(desiredRoots, idx);\n },\n ];\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n const preferredTagName = utils.getPreferredTagName({\n tagName: 'param',\n });\n if (!preferredTagName) {\n return;\n }\n\n const jsdocParameterNames = utils.getJsdocTagsDeep(preferredTagName);\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {\n ...tag,\n idx,\n };\n });\n\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const {\n autoIncrementBase = 0,\n checkRestProperty = false,\n checkDestructured = true,\n checkDestructuredRoots = true,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = true,\n enableRootFixer = true,\n enableRestElementFixer = true,\n unnamedRootBase = [\n 'root',\n ],\n useDefaultObjectProperties = false,\n } = context.options[0] || {};\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n const missingTags = [];\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n const paramIndex = {};\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n\n for (const [\n idx,\n cur,\n ] of flattenedRoots.entries()) {\n setParamIndex(cur, idx);\n }\n\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({\n name,\n newAdd,\n }) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return remainingRoot[1].names.includes(name);\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({\n tag,\n }) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {\n source,\n } of tags) {\n for (const {\n tokens: {\n end,\n },\n } of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [\n nextRootName,\n incremented,\n namer,\n ] = rootNamer([\n ...unnamedRootBase,\n ], autoIncrementBase);\n\n for (const [\n functionParameterIdx,\n functionParameterName,\n ] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||\n jsdocParameterNames[functionParameterIdx];\n\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [\n nextRootName,\n incremented,\n namer,\n ] = namer();\n }\n\n const {\n hasRestElement,\n hasPropertyRest,\n rests,\n names,\n } = functionParameterName[1];\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [\n idx,\n paramName,\n ] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({\n name,\n }) => {\n return name === rootName;\n }) && !missingTags.find(({\n functionParameterName: fpn,\n }) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({\n name,\n }) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({\n name,\n type: paramType,\n }) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = functionParameterName.name;\n type = '{...any}';\n } else {\n funcParamName = functionParameterName;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return name === funcParamName;\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n const fix = ({\n functionParameterIdx,\n functionParameterName,\n remove,\n inc,\n type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n jsdoc.tags.splice(tagIndex, spliceCount, {\n name: functionParameterName,\n newAdd: true,\n source: [\n tokens,\n ],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({\n tokens: {\n tag,\n end,\n },\n }) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {\n functionParameterName,\n } of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\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 enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireParam.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireParam.js"],"names":["rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","jsdoc","utils","context","preferredTagName","getPreferredTagName","tagName","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","checkTypesRegex","getRegexFromString","missingTags","functionParameterNames","getFunctionParameterNames","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","entries","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","functionParameterIdx","functionParameterName","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","default","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,SAAS,GAAG,CAACC,YAAD,EAAeC,YAAf,KAAgC;AAChD,MAAIC,IAAJ;AACA,MAAIC,GAAG,GAAGF,YAAV;AACA,QAAMG,WAAW,GAAGJ,YAAY,CAACK,MAAb,IAAuB,CAA3C;;AACA,MAAID,WAAJ,EAAiB;AACf,UAAME,IAAI,GAAGN,YAAY,CAAC,CAAD,CAAzB;AACA,UAAMO,MAAM,GAAGJ,GAAG,EAAlB;AACAD,IAAAA,IAAI,GAAI,GAAEI,IAAK,GAAEC,MAAO,EAAxB;AACD,GAJD,MAIO;AACLL,IAAAA,IAAI,GAAGF,YAAY,CAACQ,KAAb,EAAP;AACD;;AAED,SAAO,CACLN,IADK,EACCE,WADD,EACc,MAAM;AACvB,WAAOL,SAAS,CAACC,YAAD,EAAeG,GAAf,CAAhB;AACD,GAHI,CAAP;AAKD,CAjBD,C,CAmBA;;;eACe,2BAAa,CAAC;AAC3BM,EAAAA,KAD2B;AAE3BC,EAAAA,KAF2B;AAG3BC,EAAAA;AAH2B,CAAD,KAItB;AACJ,QAAMC,gBAAgB,GAAGF,KAAK,CAACG,mBAAN,CAA0B;AACjDC,IAAAA,OAAO,EAAE;AADwC,GAA1B,CAAzB;;AAGA,MAAI,CAACF,gBAAL,EAAuB;AACrB;AACD;;AAED,QAAMG,mBAAmB,GAAGL,KAAK,CAACM,gBAAN,CAAuBJ,gBAAvB,CAA5B;AAEA,QAAMK,0BAA0B,GAAGF,mBAAmB,CAACG,MAApB,CAA4BC,GAAD,IAAS;AACrE,WAAO,CAACA,GAAG,CAACjB,IAAJ,CAASkB,QAAT,CAAkB,GAAlB,CAAR;AACD,GAFkC,EAEhCC,GAFgC,CAE5B,CAACF,GAAD,EAAMhB,GAAN,KAAc;AACnB,WAAO,EACL,GAAGgB,GADE;AAELhB,MAAAA;AAFK,KAAP;AAID,GAPkC,CAAnC;;AASA,MAAIO,KAAK,CAACY,SAAN,EAAJ,EAAuB;AACrB;AACD,GArBG,CAuBJ;;;AACA,MAAIZ,KAAK,CAACa,MAAN,CAAa,MAAb,CAAJ,EAA0B;AACxB;AACD;;AAED,QAAM;AACJC,IAAAA,iBAAiB,GAAG,CADhB;AAEJC,IAAAA,iBAAiB,GAAG,KAFhB;AAGJC,IAAAA,iBAAiB,GAAG,IAHhB;AAIJC,IAAAA,sBAAsB,GAAG,IAJrB;AAKJC,IAAAA,iBAAiB,GAAG,gEALhB;AAMJC,IAAAA,WAAW,GAAG,IANV;AAOJC,IAAAA,eAAe,GAAG,IAPd;AAQJC,IAAAA,sBAAsB,GAAG,IARrB;AASJC,IAAAA,eAAe,GAAG,CAChB,MADgB,CATd;AAYJC,IAAAA,0BAA0B,GAAG;AAZzB,MAaFtB,OAAO,CAACuB,OAAR,CAAgB,CAAhB,KAAsB,EAb1B;AAeA,QAAMC,eAAe,GAAGzB,KAAK,CAAC0B,kBAAN,CAAyBR,iBAAzB,CAAxB;AAEA,QAAMS,WAAW,GAAG,EAApB;AACA,QAAMC,sBAAsB,GAAG5B,KAAK,CAAC6B,yBAAN,CAAgCN,0BAAhC,CAA/B;AACA,QAAMO,cAAc,GAAG9B,KAAK,CAAC+B,YAAN,CAAmBH,sBAAnB,EAA2CI,KAAlE;AAEA,QAAMC,UAAU,GAAG,EAAnB;;AACA,QAAMC,aAAa,GAAIC,GAAD,IAAS;AAC7B,WAAOnC,KAAK,CAACoC,qBAAN,CAA4BC,MAAM,CAACF,GAAD,CAAlC,KAA4CF,UAAnD;AACD,GAFD;;AAIA,QAAMK,aAAa,GAAIH,GAAD,IAAS;AAC7B,WAAOF,UAAU,CAACjC,KAAK,CAACoC,qBAAN,CAA4BC,MAAM,CAACF,GAAD,CAAlC,CAAD,CAAjB;AACD,GAFD;;AAIA,QAAMI,aAAa,GAAG,CAACJ,GAAD,EAAM1C,GAAN,KAAc;AAClCwC,IAAAA,UAAU,CAACjC,KAAK,CAACoC,qBAAN,CAA4BC,MAAM,CAACF,GAAD,CAAlC,CAAD,CAAV,GAAuD1C,GAAvD;AACD,GAFD;;AAIA,OAAK,MAAM,CACTA,GADS,EAET0C,GAFS,CAAX,IAGKL,cAAc,CAACU,OAAf,EAHL,EAG+B;AAC7BD,IAAAA,aAAa,CAACJ,GAAD,EAAM1C,GAAN,CAAb;AACD;;AAED,QAAMgD,iBAAiB,GAAG,CAACC,SAAD,EAAYC,qBAAZ,KAAsC;AAC9D,UAAMC,cAAc,GAAGhB,sBAAsB,CAACiB,KAAvB,CAA6BF,qBAAqB,IAAI,CAAtD,CAAvB;AACA,UAAMG,UAAU,GAAGJ,SAAS,CAACK,SAAV,CAAoB,CAAC;AACtCvD,MAAAA,IADsC;AAEtCwD,MAAAA;AAFsC,KAAD,KAGjC;AACJ,aAAO,CAACA,MAAD,IAAWJ,cAAc,CAACK,IAAf,CAAqBC,aAAD,IAAmB;AACvD,YAAIC,KAAK,CAACC,OAAN,CAAcF,aAAd,CAAJ,EAAkC;AAChC,iBAAOA,aAAa,CAAC,CAAD,CAAb,CAAiBlB,KAAjB,CAAuBtB,QAAvB,CAAgClB,IAAhC,CAAP;AACD;;AAED,YAAI,OAAO0D,aAAP,KAAyB,QAA7B,EAAuC;AACrC,iBAAO1D,IAAI,KAAK0D,aAAa,CAAC1D,IAA9B;AACD;;AAED,eAAOA,IAAI,KAAK0D,aAAhB;AACD,OAViB,CAAlB;AAWD,KAfkB,CAAnB;AAiBA,UAAMG,IAAI,GAAGP,UAAU,GAAG,CAAC,CAAd,GACXJ,SAAS,CAACG,KAAV,CAAgB,CAAhB,EAAmBC,UAAnB,CADW,GAEXJ,SAAS,CAAClC,MAAV,CAAiB,CAAC;AAChBC,MAAAA;AADgB,KAAD,KAEX;AACJ,aAAOA,GAAG,KAAKP,gBAAf;AACD,KAJD,CAFF;AAQA,QAAIoD,YAAY,GAAG,CAAnB;;AACA,SAAK,MAAM;AACTC,MAAAA;AADS,KAAX,IAEKF,IAFL,EAEW;AACT,WAAK,MAAM;AACTG,QAAAA,MAAM,EAAE;AACNC,UAAAA;AADM;AADC,OAAX,IAIKF,MAJL,EAIa;AACX,YAAI,CAACE,GAAL,EAAU;AACRH,UAAAA,YAAY;AACb;AACF;AACF;;AAED,WAAOA,YAAP;AACD,GA3CD;;AA6CA,MAAI,CACFI,YADE,EAEFhE,WAFE,EAGFiE,KAHE,IAIAtE,SAAS,CAAC,CACZ,GAAGiC,eADS,CAAD,EAEVR,iBAFU,CAJb;;AAQA,OAAK,MAAM,CACT8C,oBADS,EAETC,qBAFS,CAAX,IAGKjC,sBAAsB,CAACY,OAAvB,EAHL,EAGuC;AACrC,QAAIsB,GAAJ;;AACA,QAAIX,KAAK,CAACC,OAAN,CAAcS,qBAAd,CAAJ,EAA0C;AACxC,YAAME,YAAY,GAAGxD,0BAA0B,CAACqD,oBAAD,CAA1B,IACnBvD,mBAAmB,CAACuD,oBAAD,CADrB;AAGA,UAAII,QAAJ;;AACA,UAAIH,qBAAqB,CAAC,CAAD,CAAzB,EAA8B;AAC5BG,QAAAA,QAAQ,GAAGH,qBAAqB,CAAC,CAAD,CAAhC;AACD,OAFD,MAEO,IAAIE,YAAY,IAAIA,YAAY,CAACvE,IAAjC,EAAuC;AAC5CwE,QAAAA,QAAQ,GAAGD,YAAY,CAACvE,IAAxB;;AACA,YAAIuE,YAAY,CAACE,IAAb,IAAqBF,YAAY,CAACE,IAAb,CAAkBC,MAAlB,CAAyBzC,eAAzB,MAA8C,CAAC,CAAxE,EAA2E;AACzE;AACD;AACF,OALM,MAKA;AACLuC,QAAAA,QAAQ,GAAGN,YAAX;AACAI,QAAAA,GAAG,GAAGpE,WAAN;AACA,SACEgE,YADF,EAEEhE,WAFF,EAGEiE,KAHF,IAIIA,KAAK,EAJT;AAKD;;AAED,YAAM;AACJQ,QAAAA,cADI;AAEJC,QAAAA,eAFI;AAGJC,QAAAA,KAHI;AAIJrC,QAAAA;AAJI,UAKF6B,qBAAqB,CAAC,CAAD,CALzB;AAMA,YAAMS,gBAAgB,GAAG,EAAzB;;AACA,UAAI,CAACjD,sBAAD,IAA2B8C,cAA/B,EAA+C;AAC7C;AACD;;AAED,UAAI,CAAClD,sBAAL,EAA6B;AAC3B;AACD;;AAED,WAAK,MAAM,CACTxB,GADS,EAET8E,SAFS,CAAX,IAGKvC,KAAK,CAACQ,OAAN,EAHL,EAGsB;AACpB;AACA;AACA,YAAI,CAACnC,mBAAmB,CAACmE,IAApB,CAAyB,CAAC;AAC7BhF,UAAAA;AAD6B,SAAD,KAExB;AACJ,iBAAOA,IAAI,KAAKwE,QAAhB;AACD,SAJI,CAAD,IAIE,CAACrC,WAAW,CAAC6C,IAAZ,CAAiB,CAAC;AACvBX,UAAAA,qBAAqB,EAAEY;AADA,SAAD,KAElB;AACJ,iBAAOA,GAAG,KAAKT,QAAf;AACD,SAJM,CAJP,EAQI;AACF,gBAAMU,aAAa,GAAGrE,mBAAmB,CAAC0C,SAApB,CAA8B,CAAC;AACnDvD,YAAAA;AADmD,WAAD,KAE9C;AACJ,mBAAO,CAACA,IAAR;AACD,WAJqB,CAAtB;;AAMA,cAAIkF,aAAa,GAAG,CAAC,CAArB,EAAwB;AACtB/C,YAAAA,WAAW,CAACgD,IAAZ,CAAiB;AACff,cAAAA,oBAAoB,EAAEc,aADP;AAEfb,cAAAA,qBAAqB,EAAEG,QAFR;AAGfF,cAAAA,GAHe;AAIfc,cAAAA,MAAM,EAAE;AAJO,aAAjB;AAMD,WAPD,MAOO;AACLjD,YAAAA,WAAW,CAACgD,IAAZ,CAAiB;AACff,cAAAA,oBAAoB,EAAE1B,aAAa,CAAC8B,QAAD,CAAb,GACpB1B,aAAa,CAAC0B,QAAD,CADO,GAEpB1B,aAAa,CAACiC,SAAD,CAHA;AAIfV,cAAAA,qBAAqB,EAAEG,QAJR;AAKfF,cAAAA;AALe,aAAjB;AAOD;AACF;;AAED,YAAI,CAAC9C,iBAAL,EAAwB;AACtB;AACD;;AAED,YAAI,CAACD,iBAAD,IAAsBsD,KAAK,CAAC5E,GAAD,CAA/B,EAAsC;AACpC;AACD;;AAED,cAAMoF,aAAa,GAAI,GAAEb,QAAS,IAAGO,SAAU,EAA/C;AAEA,cAAMO,eAAe,GAAGzE,mBAAmB,CAACmE,IAApB,CAAyB,CAAC;AAChDhF,UAAAA,IADgD;AAEhDyE,UAAAA,IAAI,EAAEc;AAF0C,SAAD,KAG3C;AACJ,iBAAO/E,KAAK,CAACgF,YAAN,CAAmBxF,IAAnB,EAAyBqF,aAAzB,KAA2CE,SAAS,CAACb,MAAV,CAAiBzC,eAAjB,MAAsC,CAAC,CAAlF,IAAuFsD,SAAS,KAAK,EAA5G;AACD,SALuB,CAAxB;;AAOA,YAAID,eAAe,KAAKG,SAAxB,EAAmC;AACjCX,UAAAA,gBAAgB,CAACK,IAAjB,CAAsBG,eAAe,CAACtF,IAAtC;AACD;;AAED,YAAI8E,gBAAgB,CAACE,IAAjB,CAAuBhF,IAAD,IAAU;AAClC,iBAAOqF,aAAa,CAACK,UAAd,CAAyB1F,IAAzB,CAAP;AACD,SAFG,CAAJ,EAEI;AACF;AACD;;AAED,YAAIa,mBAAmB,IAAI,CAACA,mBAAmB,CAACmE,IAApB,CAAyB,CAAC;AACpDhF,UAAAA;AADoD,SAAD,KAE/C;AACJ,iBAAOQ,KAAK,CAACgF,YAAN,CAAmBxF,IAAnB,EAAyBqF,aAAzB,CAAP;AACD,SAJ2B,CAA5B,EAII;AACFlD,UAAAA,WAAW,CAACgD,IAAZ,CAAiB;AACff,YAAAA,oBAAoB,EAAEtB,aAAa,CACjCuB,qBAAqB,CAAC,CAAD,CAArB,GAA2BgB,aAA3B,GAA2CN,SADV,CADpB;AAIfV,YAAAA,qBAAqB,EAAEgB,aAJR;AAKff,YAAAA,GALe;AAMfG,YAAAA,IAAI,EAAEE,cAAc,IAAI,CAACC,eAAnB,GAAqC,UAArC,GAAkDa;AANzC,WAAjB;AAQD;AACF;;AAED;AACD;;AAED,QAAIE,aAAJ;AACA,QAAIlB,IAAJ;;AACA,QAAI,OAAOJ,qBAAP,KAAiC,QAArC,EAA+C;AAC7C,UAAI,CAACxC,sBAAD,IAA2BwC,qBAAqB,CAACuB,WAArD,EAAkE;AAChE;AACD;;AAEDD,MAAAA,aAAa,GAAGtB,qBAAqB,CAACrE,IAAtC;AACAyE,MAAAA,IAAI,GAAG,UAAP;AACD,KAPD,MAOO;AACLkB,MAAAA,aAAa,GAAGtB,qBAAhB;AACD;;AAED,QAAIxD,mBAAmB,IAAI,CAACA,mBAAmB,CAACmE,IAApB,CAAyB,CAAC;AACpDhF,MAAAA;AADoD,KAAD,KAE/C;AACJ,aAAOA,IAAI,KAAK2F,aAAhB;AACD,KAJ2B,CAA5B,EAII;AACFxD,MAAAA,WAAW,CAACgD,IAAZ,CAAiB;AACff,QAAAA,oBAAoB,EAAEtB,aAAa,CAAC6C,aAAD,CADpB;AAEftB,QAAAA,qBAAqB,EAAEsB,aAFR;AAGfrB,QAAAA,GAHe;AAIfG,QAAAA;AAJe,OAAjB;AAMD;AACF;;AAED,QAAMoB,GAAG,GAAG,CAAC;AACXzB,IAAAA,oBADW;AAEXC,IAAAA,qBAFW;AAGXe,IAAAA,MAHW;AAIXd,IAAAA,GAJW;AAKXG,IAAAA;AALW,GAAD,KAMN;AACJ,QAAIH,GAAG,IAAI,CAAC1C,eAAZ,EAA6B;AAC3B;AACD;;AAED,UAAMkE,YAAY,GAAG,CAACC,QAAD,EAAWC,WAAX,EAAwBC,WAAxB,KAAwC;AAC3D;AACA,YAAMjC,MAAM,GAAG;AACbkC,QAAAA,MAAM,EAAEF,WAAW,GAAG,CADT;AAEbhC,QAAAA,MAAM,EAAE;AACNmC,UAAAA,SAAS,EAAE,GADL;AAENC,UAAAA,WAAW,EAAE,EAFP;AAGNnC,UAAAA,GAAG,EAAE,EAHC;AAINoC,UAAAA,OAAO,EAAE,EAJH;AAKNrG,UAAAA,IAAI,EAAEqE,qBALA;AAMNb,UAAAA,MAAM,EAAE,IANF;AAON8C,UAAAA,aAAa,EAAE,GAPT;AAQNC,UAAAA,QAAQ,EAAE,EARJ;AASNC,UAAAA,OAAO,EAAE,GATH;AAUNC,UAAAA,QAAQ,EAAEhC,IAAI,GAAG,GAAH,GAAS,EAVjB;AAWNiC,UAAAA,KAAK,EAAEnG,KAAK,CAACwD,MAAN,CAAaiC,WAAb,EAA0BhC,MAA1B,CAAiC0C,KAXlC;AAYNzF,UAAAA,GAAG,EAAG,IAAGP,gBAAiB,EAZpB;AAaN+D,UAAAA,IAAI,EAAEA,IAAI,IAAI;AAbR;AAFK,OAAf;AAkBAlE,MAAAA,KAAK,CAACsD,IAAN,CAAW8C,MAAX,CAAkBZ,QAAlB,EAA4BE,WAA5B,EAAyC;AACvCjG,QAAAA,IAAI,EAAEqE,qBADiC;AAEvCb,QAAAA,MAAM,EAAE,IAF+B;AAGvCO,QAAAA,MAAM,EAAE,CACNC,MADM,CAH+B;AAMvC/C,QAAAA,GAAG,EAAEP,gBANkC;AAOvC+D,QAAAA,IAAI,EAAEA,IAAI,IAAI;AAPyB,OAAzC;AASA,YAAMmC,WAAW,GAAGrG,KAAK,CAACwD,MAAN,CAAa,CAAb,EAAgBmC,MAApC;AACA3F,MAAAA,KAAK,CAACwD,MAAN,CAAa4C,MAAb,CAAoBX,WAApB,EAAiCC,WAAjC,EAA8CjC,MAA9C;;AACA,WAAK,MAAM,CACT/D,GADS,EAET4G,GAFS,CAAX,IAGKtG,KAAK,CAACwD,MAAN,CAAaV,KAAb,CAAmB2C,WAAnB,EAAgChD,OAAhC,EAHL,EAGgD;AAC9C6D,QAAAA,GAAG,CAACX,MAAJ,GAAaU,WAAW,GAAGZ,WAAd,GAA4B/F,GAAzC;AACD;AACF,KArCD;;AAuCA,UAAM6G,MAAM,GAAGvG,KAAK,CAACwD,MAAN,CAAaR,SAAb,CAAuB,CAAC;AACrCS,MAAAA,MAAM,EAAE;AACN/C,QAAAA,GADM;AAENgD,QAAAA;AAFM;AAD6B,KAAD,KAKhC;AACJ,aAAOhD,GAAG,IAAIgD,GAAd;AACD,KAPc,CAAf;;AAQA,QAAImB,MAAJ,EAAY;AACVU,MAAAA,YAAY,CAAC1B,oBAAD,EAAuB0C,MAAM,GAAG1C,oBAAhC,EAAsD,CAAtD,CAAZ;AACD,KAFD,MAEO;AACL,YAAM2C,WAAW,GAAG9D,iBAAiB,CAAC1C,KAAK,CAACsD,IAAP,EAAaO,oBAAb,CAArC;AACA0B,MAAAA,YAAY,CAACiB,WAAD,EAAcD,MAAM,GAAGC,WAAvB,EAAoC,CAApC,CAAZ;AACD;AACF,GAhED;;AAkEA,QAAMC,KAAK,GAAG,MAAM;AAClB,SAAK,MAAMC,UAAX,IAAyB9E,WAAzB,EAAsC;AACpC0D,MAAAA,GAAG,CAACoB,UAAD,CAAH;AACD;AACF,GAJD;;AAMA,MAAI9E,WAAW,CAAChC,MAAZ,IAAsBI,KAAK,CAACwD,MAAN,CAAa5D,MAAb,KAAwB,CAAlD,EAAqD;AACnDK,IAAAA,KAAK,CAAC0G,aAAN;AACD;;AAED,OAAK,MAAM;AACT7C,IAAAA;AADS,GAAX,IAEKlC,WAFL,EAEkB;AAChB3B,IAAAA,KAAK,CAAC2G,WAAN,CACG,kBAAiBzG,gBAAiB,KAAI2D,qBAAsB,gBAD/D,EAEE,IAFF,EAGE1C,WAAW,GAAGqF,KAAH,GAAW,IAHxB;AAKD;AACF,CA7Wc,EA6WZ;AACDI,EAAAA,eAAe,EAAE,IADhB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJlB,MAAAA,WAAW,EAAE,uDADT;AAEJmB,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,MALL;AAMJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVrG,QAAAA,iBAAiB,EAAE;AACjBsG,UAAAA,OAAO,EAAE,CADQ;AAEjBnD,UAAAA,IAAI,EAAE;AAFW,SADT;AAKVoD,QAAAA,iBAAiB,EAAE;AACjBD,UAAAA,OAAO,EAAE,IADQ;AAEjBnD,UAAAA,IAAI,EAAE;AAFW,SALT;AASVjD,QAAAA,iBAAiB,EAAE;AACjBoG,UAAAA,OAAO,EAAE,IADQ;AAEjBnD,UAAAA,IAAI,EAAE;AAFW,SATT;AAaVhD,QAAAA,sBAAsB,EAAE;AACtBmG,UAAAA,OAAO,EAAE,IADa;AAEtBnD,UAAAA,IAAI,EAAE;AAFgB,SAbd;AAiBVqD,QAAAA,YAAY,EAAE;AACZF,UAAAA,OAAO,EAAE,KADG;AAEZnD,UAAAA,IAAI,EAAE;AAFM,SAjBJ;AAqBVlD,QAAAA,iBAAiB,EAAE;AACjBqG,UAAAA,OAAO,EAAE,KADQ;AAEjBnD,UAAAA,IAAI,EAAE;AAFW,SArBT;AAyBVsD,QAAAA,YAAY,EAAE;AACZH,UAAAA,OAAO,EAAE,KADG;AAEZnD,UAAAA,IAAI,EAAE;AAFM,SAzBJ;AA6BV/C,QAAAA,iBAAiB,EAAE;AACjB+C,UAAAA,IAAI,EAAE;AADW,SA7BT;AAgCVuD,QAAAA,QAAQ,EAAE;AACRC,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACEzD,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEiD,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVQ,gBAAAA,OAAO,EAAE;AACP1D,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIVhE,gBAAAA,OAAO,EAAE;AACPgE,kBAAAA,IAAI,EAAE;AADC;AAJC,eAFd;AAUEA,cAAAA,IAAI,EAAE;AAVR,aAJK;AADF,WADC;AAoBRA,UAAAA,IAAI,EAAE;AApBE,SAhCA;AAsDV9C,QAAAA,WAAW,EAAE;AACX8C,UAAAA,IAAI,EAAE;AADK,SAtDH;AAyDV5C,QAAAA,sBAAsB,EAAE;AACtB4C,UAAAA,IAAI,EAAE;AADgB,SAzDd;AA4DV7C,QAAAA,eAAe,EAAE;AACf6C,UAAAA,IAAI,EAAE;AADS,SA5DP;AA+DV2D,QAAAA,UAAU,EAAE;AACVH,UAAAA,KAAK,EAAE;AACLxD,YAAAA,IAAI,EAAE;AADD,WADG;AAIVA,UAAAA,IAAI,EAAE;AAJI,SA/DF;AAqEV3C,QAAAA,eAAe,EAAE;AACfmG,UAAAA,KAAK,EAAE;AACLxD,YAAAA,IAAI,EAAE;AADD,WADQ;AAIfA,UAAAA,IAAI,EAAE;AAJS,SArEP;AA2EV1C,QAAAA,0BAA0B,EAAE;AAC1B0C,UAAAA,IAAI,EAAE;AADoB;AA3ElB,OAFd;AAiFEA,MAAAA,IAAI,EAAE;AAjFR,KADM,CANJ;AA2FJA,IAAAA,IAAI,EAAE;AA3FF;AAFL,CA7WY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * @template T\n * @param {string[]} desiredRoots\n * @param {number} currentIndex\n * @returns {[string, boolean, () => T]}\n */\nconst rootNamer = (desiredRoots, currentIndex) => {\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = desiredRoots.shift();\n }\n\n return [\n name, incremented, () => {\n return rootNamer(desiredRoots, idx);\n },\n ];\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n const preferredTagName = utils.getPreferredTagName({\n tagName: 'param',\n });\n if (!preferredTagName) {\n return;\n }\n\n const jsdocParameterNames = utils.getJsdocTagsDeep(preferredTagName);\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {\n ...tag,\n idx,\n };\n });\n\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const {\n autoIncrementBase = 0,\n checkRestProperty = false,\n checkDestructured = true,\n checkDestructuredRoots = true,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = true,\n enableRootFixer = true,\n enableRestElementFixer = true,\n unnamedRootBase = [\n 'root',\n ],\n useDefaultObjectProperties = false,\n } = context.options[0] || {};\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n const missingTags = [];\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n const paramIndex = {};\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n\n for (const [\n idx,\n cur,\n ] of flattenedRoots.entries()) {\n setParamIndex(cur, idx);\n }\n\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({\n name,\n newAdd,\n }) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return remainingRoot[1].names.includes(name);\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({\n tag,\n }) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {\n source,\n } of tags) {\n for (const {\n tokens: {\n end,\n },\n } of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [\n nextRootName,\n incremented,\n namer,\n ] = rootNamer([\n ...unnamedRootBase,\n ], autoIncrementBase);\n\n for (const [\n functionParameterIdx,\n functionParameterName,\n ] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||\n jsdocParameterNames[functionParameterIdx];\n\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [\n nextRootName,\n incremented,\n namer,\n ] = namer();\n }\n\n const {\n hasRestElement,\n hasPropertyRest,\n rests,\n names,\n } = functionParameterName[1];\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [\n idx,\n paramName,\n ] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({\n name,\n }) => {\n return name === rootName;\n }) && !missingTags.find(({\n functionParameterName: fpn,\n }) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({\n name,\n }) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({\n name,\n type: paramType,\n }) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = functionParameterName.name;\n type = '{...any}';\n } else {\n funcParamName = functionParameterName;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return name === funcParamName;\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n const fix = ({\n functionParameterIdx,\n functionParameterName,\n remove,\n inc,\n type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n jsdoc.tags.splice(tagIndex, spliceCount, {\n name: functionParameterName,\n newAdd: true,\n source: [\n tokens,\n ],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({\n tokens: {\n tag,\n end,\n },\n }) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {\n functionParameterName,\n } of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\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 enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireParam.js"}
|
package/package.json
CHANGED
|
@@ -10,14 +10,13 @@
|
|
|
10
10
|
"debug": "^4.3.4",
|
|
11
11
|
"escape-string-regexp": "^4.0.0",
|
|
12
12
|
"esquery": "^1.4.0",
|
|
13
|
-
"
|
|
14
|
-
"semver": "^7.3.5",
|
|
13
|
+
"semver": "^7.3.6",
|
|
15
14
|
"spdx-expression-parse": "^3.0.1"
|
|
16
15
|
},
|
|
17
16
|
"description": "JSDoc linting rules for ESLint.",
|
|
18
17
|
"devDependencies": {
|
|
19
18
|
"@babel/cli": "^7.17.6",
|
|
20
|
-
"@babel/core": "^7.17.
|
|
19
|
+
"@babel/core": "^7.17.9",
|
|
21
20
|
"@babel/eslint-parser": "^7.17.0",
|
|
22
21
|
"@babel/node": "^7.16.8",
|
|
23
22
|
"@babel/plugin-syntax-class-properties": "^7.12.13",
|
|
@@ -26,7 +25,7 @@
|
|
|
26
25
|
"@babel/register": "^7.17.7",
|
|
27
26
|
"@es-joy/jsdoc-eslint-parser": "^0.8.2",
|
|
28
27
|
"@hkdobrev/run-if-changed": "^0.3.1",
|
|
29
|
-
"@typescript-eslint/parser": "^5.
|
|
28
|
+
"@typescript-eslint/parser": "^5.18.0",
|
|
30
29
|
"babel-plugin-add-module-exports": "^1.0.4",
|
|
31
30
|
"babel-plugin-istanbul": "^6.1.1",
|
|
32
31
|
"camelcase": "^6.3.0",
|
|
@@ -34,7 +33,7 @@
|
|
|
34
33
|
"cross-env": "^7.0.3",
|
|
35
34
|
"decamelize": "^5.0.1",
|
|
36
35
|
"eslint": "^8.12.0",
|
|
37
|
-
"eslint-config-canonical": "
|
|
36
|
+
"eslint-config-canonical": "~33.0.1",
|
|
38
37
|
"gitdown": "^3.1.5",
|
|
39
38
|
"glob": "^7.2.0",
|
|
40
39
|
"husky": "^7.0.4",
|
|
@@ -48,7 +47,7 @@
|
|
|
48
47
|
"typescript": "^4.6.3"
|
|
49
48
|
},
|
|
50
49
|
"engines": {
|
|
51
|
-
"node": "^
|
|
50
|
+
"node": "^14 || ^16 || ^17"
|
|
52
51
|
},
|
|
53
52
|
"keywords": [
|
|
54
53
|
"eslint",
|
|
@@ -117,5 +116,5 @@
|
|
|
117
116
|
"test-cov": "cross-env TIMING=1 nyc --reporter text npm run test-no-cov",
|
|
118
117
|
"test-index": "npm run test-no-cov -- test/rules/index.js"
|
|
119
118
|
},
|
|
120
|
-
"version": "
|
|
119
|
+
"version": "39.1.0"
|
|
121
120
|
}
|