UNPKG

32.8 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/iterateJsdoc.js"],"names":["skipSeeLink","parser","str","data","tag","match","parseComment","commentNode","indent","trim","value","parsers","commentParser","PARSERS","parse_tag","parse_type","includes","parse_name","errors","length","result","description","undefined","source","getUtils","node","jsdoc","jsdocNode","tagNamePreference","overrideReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","mode","report","context","ancestors","getAncestors","sourceCode","getSourceCode","utils","stringify","tagBlock","jsdocUtils","getIndent","slice","reportJSDoc","msg","handler","fixer","replacement","replaceText","getFunctionParameterNames","isConstructor","parent","kind","isSetter","getJsdocParameterNamesDeep","param","getPreferredTagName","tagName","getJsdocParameterNames","skipReportingBlockedTag","allowObjectReturn","defaultMessage","ret","isObject","hasTag","blocked","message","getTags","isValidTag","name","definedTags","hasATag","avoidDocs","classHasTag","exemptedBy","_","get","getPresentTags","tagMustHaveEitherTypeOrNamePosition","tagMightHaveEitherTypeOrNamePosition","tagMustHaveNamePosition","tagMightHaveNamePosition","tagMustHaveTypePosition","tagMightHaveTypePosition","isNamepathDefiningTag","hasDefinedTypeReturnTag","hasReturnValue","isAsync","async","filterTags","item","tagList","filter","tags","getTagsByType","hasOptionTag","Boolean","getClassNode","reverse","find","type","getClassJsdoc","classNode","classJsdocNode","repeat","loc","start","column","classJsdoc","forEachPreferredTag","arrayHandler","targetTagName","matchingJsdocTags","forEach","matchingJsdocTag","reportSettings","line","getSettings","settings","ignorePrivate","Number","preferredTypes","makeReport","fix","jsdocLoc","lineNumber","end","colNumber","iterateAllJsdocs","iterator","ruleConfig","trackedJsdocs","callIterator","jsdocNodes","lines","test","getText","sourceLine","charAt","noTrim","create","reducedNode","comment","push","allJsdocs","getAllComments","untrackedJSdoc","meta","iterateJsdoc","metaType","TypeError","checkJsdoc","contextDefaults","contexts","enforcedContexts","getContextObject","ArrowFunctionExpression","FunctionDeclaration","FunctionExpression"],"mappings":";;;;;;;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAJA;AAMA,MAAMA,WAAW,GAAIC,MAAD,IAAY;AAC9B,SAAO,CAACC,GAAD,EAAMC,IAAN,KAAe;AACpB,QAAIA,IAAI,CAACC,GAAL,KAAa,KAAb,IAAsBF,GAAG,CAACG,KAAJ,CAAU,eAAV,CAA1B,EAAsD;AACpD,aAAO,IAAP;AACD;;AAED,WAAOJ,MAAM,CAACC,GAAD,EAAMC,IAAN,CAAb;AACD,GAND;AAOD,CARD;AAUA;;;;;;;;;AAOA,MAAMG,YAAY,GAAG,CAACC,WAAD,EAAcC,MAAd,EAAsBC,IAAI,GAAG,IAA7B,KAAsC;AACzD;AACA,SAAO,4BAAe,GAAED,MAAO,KAAID,WAAW,CAACG,KAAM,GAAEF,MAAO,IAAvD,EAA4D;AACjE;AACAG,IAAAA,OAAO,EAAE,CACPC,uBAAcC,OAAd,CAAsBC,SADf,EAEPd,WAAW,CAACY,uBAAcC,OAAd,CAAsBE,UAAvB,CAFJ,EAGPf,WAAW,CACT,CAACE,GAAD,EAAMC,IAAN,KAAe;AACb,UAAI,CACF,SADE,EACS,QADT,EACmB,SADnB,EAC8B,QAD9B,EACwC,WADxC,EAEF,QAFE,EAEQ,SAFR,EAEmB,OAFnB,EAE4B,SAF5B,EAEuC,QAFvC,EAGFa,QAHE,CAGOb,IAAI,CAACC,GAHZ,CAAJ,EAGsB;AACpB,eAAO,IAAP;AACD;;AAED,aAAOQ,uBAAcC,OAAd,CAAsBI,UAAtB,CAAiCf,GAAjC,EAAsCC,IAAtC,CAAP;AACD,KAVQ,CAHJ,EAgBP;AACA,KAACD,GAAD,EAAMC,IAAN,KAAe;AACb;AACA;AACA;;AACA;AACA,UAAIA,IAAI,CAACe,MAAL,IAAef,IAAI,CAACe,MAAL,CAAYC,MAA/B,EAAuC;AACrC,eAAO,IAAP;AACD,OAPY,CASb;;;AACA,YAAMC,MAAM,GAAGlB,GAAG,CAACG,KAAJ,CAAU,gBAAV,CAAf,CAVa,CAYb;;AACA;;AACA,UAAIe,MAAJ,EAAY;AACV,eAAO;AACLjB,UAAAA,IAAI,EAAE;AACJkB,YAAAA,WAAW,EAAED,MAAM,CAAC,CAAD,CAAN,KAAcE,SAAd,GAA0B,EAA1B,GAA+BF,MAAM,CAAC,CAAD;AAD9C,WADD;AAILG,UAAAA,MAAM,EAAEH,MAAM,CAAC,CAAD;AAJT,SAAP;AAMD,OArBY,CAuBb;;AACA;;;AACA,aAAO,IAAP;AACD,KA3CM,CAFwD;AA+CjEX,IAAAA;AA/CiE,GAA5D,EAgDJ,CAhDI,KAgDE,EAhDT;AAiDD,CAnDD;;;;AAqDA,MAAMe,QAAQ,GAAG,CACfC,IADe,EAEfC,KAFe,EAGfC,SAHe,EAIf;AACEC,EAAAA,iBADF;AAEEC,EAAAA,oBAFF;AAGEC,EAAAA,sBAHF;AAIEC,EAAAA,2BAJF;AAKEC,EAAAA,QALF;AAMEC,EAAAA,QANF;AAOEC,EAAAA;AAPF,CAJe,EAafC,MAbe,EAcfC,OAde,KAeZ;AACH,QAAMC,SAAS,GAAGD,OAAO,CAACE,YAAR,EAAlB;AACA,QAAMC,UAAU,GAAGH,OAAO,CAACI,aAAR,EAAnB;AAEA,QAAMC,KAAK,GAAG,EAAd;;AAEAA,EAAAA,KAAK,CAACC,SAAN,GAAmBC,QAAD,IAAc;AAC9B,UAAMnC,MAAM,GAAGoC,oBAAWC,SAAX,CAAqBN,UAArB,CAAf;;AAEA,WAAO,8BAAiB,CAACI,QAAD,CAAjB,EAA6B;AAACnC,MAAAA;AAAD,KAA7B,EAAuCsC,KAAvC,CAA6CtC,MAAM,CAACW,MAAP,GAAgB,CAA7D,CAAP;AACD,GAJD;;AAMAsB,EAAAA,KAAK,CAACM,WAAN,GAAoB,CAACC,GAAD,EAAM5C,GAAN,EAAW6C,OAAX,KAAuB;AACzCd,IAAAA,MAAM,CAACa,GAAD,EAAMC,OAAO,GAAIC,KAAD,IAAW;AAC/BD,MAAAA,OAAO;AACP,YAAME,WAAW,GAAGV,KAAK,CAACC,SAAN,CAAgBhB,KAAhB,CAApB;AAEA,aAAOwB,KAAK,CAACE,WAAN,CAAkBzB,SAAlB,EAA6BwB,WAA7B,CAAP;AACD,KALkB,GAKf,IALE,EAKI/C,GALJ,CAAN;AAMD,GAPD;;AASAqC,EAAAA,KAAK,CAACY,yBAAN,GAAkC,MAAM;AACtC,WAAOT,oBAAWS,yBAAX,CAAqC5B,IAArC,CAAP;AACD,GAFD;;AAIAgB,EAAAA,KAAK,CAACa,aAAN,GAAsB,MAAM;AAC1B,WAAO7B,IAAI,CAAC8B,MAAL,IAAe9B,IAAI,CAAC8B,MAAL,CAAYC,IAAZ,KAAqB,aAA3C;AACD,GAFD;;AAIAf,EAAAA,KAAK,CAACgB,QAAN,GAAiB,MAAM;AACrB,WAAOhC,IAAI,CAAC8B,MAAL,CAAYC,IAAZ,KAAqB,KAA5B;AACD,GAFD;;AAIAf,EAAAA,KAAK,CAACiB,0BAAN,GAAmC,MAAM;AACvC,UAAMC,KAAK,GAAGlB,KAAK,CAACmB,mBAAN,CAA0B;AAACC,MAAAA,OAAO,EAAE;AAAV,KAA1B,CAAd;;AACA,QAAI,CAACF,KAAL,EAAY;AACV,aAAO,KAAP;AACD;;AAED,WAAOf,oBAAWc,0BAAX,CAAsChC,KAAtC,EAA6CiC,KAA7C,CAAP;AACD,GAPD;;AASAlB,EAAAA,KAAK,CAACqB,sBAAN,GAA+B,MAAM;AACnC,UAAMH,KAAK,GAAGlB,KAAK,CAACmB,mBAAN,CAA0B;AAACC,MAAAA,OAAO,EAAE;AAAV,KAA1B,CAAd;;AACA,QAAI,CAACF,KAAL,EAAY;AACV,aAAO,KAAP;AACD;;AAED,WAAOf,oBAAWkB,sBAAX,CAAkCpC,KAAlC,EAAyCiC,KAAzC,CAAP;AACD,GAPD;;AASAlB,EAAAA,KAAK,CAACmB,mBAAN,GAA4B,CAAC;AAACC,IAAAA,OAAD;AAAUE,IAAAA,uBAAuB,GAAG,KAApC;AAA2CC,IAAAA,iBAAiB,GAAG,KAA/D;AAAsEC,IAAAA,cAAc,GAAI,qBAAoBJ,OAAQ;AAApH,GAAD,KAA8H;AACxJ,UAAMK,GAAG,GAAGtB,oBAAWgB,mBAAX,CAA+BxB,OAA/B,EAAwCF,IAAxC,EAA8C2B,OAA9C,EAAuDjC,iBAAvD,CAAZ;;AACA,UAAMuC,QAAQ,GAAGD,GAAG,IAAI,OAAOA,GAAP,KAAe,QAAvC;;AACA,QAAIzB,KAAK,CAAC2B,MAAN,CAAaP,OAAb,MAA0BK,GAAG,KAAK,KAAR,IAAiBC,QAAQ,IAAI,CAACD,GAAG,CAACf,WAA5D,CAAJ,EAA8E;AAC5E,UAAIY,uBAAJ,EAA6B;AAC3B,eAAO;AACLM,UAAAA,OAAO,EAAE,IADJ;AAELR,UAAAA;AAFK,SAAP;AAID;;AACD,YAAMS,OAAO,GAAGH,QAAQ,IAAID,GAAG,CAACI,OAAhB,IAA2BL,cAA3C;AACA9B,MAAAA,MAAM,CAACmC,OAAD,EAAU,IAAV,EAAgB7B,KAAK,CAAC8B,OAAN,CAAcV,OAAd,EAAuB,CAAvB,CAAhB,CAAN;AAEA,aAAO,KAAP;AACD;;AAED,WAAOM,QAAQ,IAAI,CAACH,iBAAb,GAAiCE,GAAG,CAACf,WAArC,GAAmDe,GAA1D;AACD,GAjBD;;AAmBAzB,EAAAA,KAAK,CAAC+B,UAAN,GAAmB,CAACC,IAAD,EAAOC,WAAP,KAAuB;AACxC,WAAO9B,oBAAW4B,UAAX,CAAsBpC,OAAtB,EAA+BF,IAA/B,EAAqCuC,IAArC,EAA2CC,WAA3C,CAAP;AACD,GAFD;;AAIAjC,EAAAA,KAAK,CAACkC,OAAN,GAAiBF,IAAD,IAAU;AACxB,WAAO7B,oBAAW+B,OAAX,CAAmBjD,KAAnB,EAA0B+C,IAA1B,CAAP;AACD,GAFD;;AAIAhC,EAAAA,KAAK,CAAC2B,MAAN,GAAgBK,IAAD,IAAU;AACvB,WAAO7B,oBAAWwB,MAAX,CAAkB1C,KAAlB,EAAyB+C,IAAzB,CAAP;AACD,GAFD;;AAIAhC,EAAAA,KAAK,CAACmC,SAAN,GAAkB,MAAM;AACtB,QACE/C,oBAAoB,KAAK,KAAzB,KACGY,KAAK,CAAC2B,MAAN,CAAa,UAAb,KAA4B3B,KAAK,CAACoC,WAAN,CAAkB,UAAlB,CAD/B,KAEA/C,sBAAsB,KAAK,KAA3B,KACGW,KAAK,CAAC2B,MAAN,CAAa,YAAb,KAA8B3B,KAAK,CAACoC,WAAN,CAAkB,YAAlB,CADjC,CAFA,IAKA;AACApC,IAAAA,KAAK,CAAC2B,MAAN,CAAa,YAAb,CANA,IAQArC,2BAA2B,KACxBU,KAAK,CAACkC,OAAN,CAAc,CAAC,UAAD,EAAa,SAAb,CAAd,KACClC,KAAK,CAACoC,WAAN,CAAkB,UAAlB,CADD,IAEGpC,KAAK,CAACoC,WAAN,CAAkB,SAAlB,CAHqB,CAT7B,EAYuC;AACrC,aAAO,IAAP;AACD;;AAED,UAAMC,UAAU,GAAGC,gBAAEC,GAAF,CAAM5C,OAAN,EAAe,uBAAf,CAAnB;;AACA,QAAI0C,UAAU,IAAIA,UAAU,CAAC3D,MAAzB,IAAmCsB,KAAK,CAACwC,cAAN,CAAqBH,UAArB,EAAiC3D,MAAxE,EAAgF;AAC9E,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD,GAvBD;;AAyBAsB,EAAAA,KAAK,CAACyC,mCAAN,GAA6CrB,OAAD,IAAa;AACvD,WAAOjB,oBAAWsC,mCAAX,CAA+CrB,OAA/C,CAAP;AACD,GAFD;;AAIApB,EAAAA,KAAK,CAAC0C,oCAAN,GAA8CtB,OAAD,IAAa;AACxD,WAAOjB,oBAAWuC,oCAAX,CAAgDjD,IAAhD,EAAsD2B,OAAtD,CAAP;AACD,GAFD;;AAIApB,EAAAA,KAAK,CAAC2C,uBAAN,GAAiCvB,OAAD,IAAa;AAC3C,WAAOjB,oBAAWwC,uBAAX,CAAmCvB,OAAnC,CAAP;AACD,GAFD;;AAIApB,EAAAA,KAAK,CAAC4C,wBAAN,GAAkCxB,OAAD,IAAa;AAC5C,WAAOjB,oBAAWyC,wBAAX,CAAoCxB,OAApC,CAAP;AACD,GAFD;;AAIApB,EAAAA,KAAK,CAAC6C,uBAAN,GAAiCzB,OAAD,IAAa;AAC3C,WAAOjB,oBAAW0C,uBAAX,CAAmCpD,IAAnC,EAAyC2B,OAAzC,CAAP;AACD,GAFD;;AAIApB,EAAAA,KAAK,CAAC8C,wBAAN,GAAkC1B,OAAD,IAAa;AAC5C,WAAOjB,oBAAW2C,wBAAX,CAAoCrD,IAApC,EAA0C2B,OAA1C,CAAP;AACD,GAFD;;AAIApB,EAAAA,KAAK,CAAC+C,qBAAN,GAA+B3B,OAAD,IAAa;AACzC,WAAOjB,oBAAW4C,qBAAX,CAAiC3B,OAAjC,CAAP;AACD,GAFD;;AAIApB,EAAAA,KAAK,CAACgD,uBAAN,GAAiCrF,GAAD,IAAS;AACvC,WAAOwC,oBAAW6C,uBAAX,CAAmCrF,GAAnC,CAAP;AACD,GAFD;;AAIAqC,EAAAA,KAAK,CAACiD,cAAN,GAAuB,MAAM;AAC3B,WAAO9C,oBAAW8C,cAAX,CAA0BjE,IAA1B,CAAP;AACD,GAFD;;AAIAgB,EAAAA,KAAK,CAACkD,OAAN,GAAgB,MAAM;AACpB,WAAOlE,IAAI,CAACmE,KAAZ;AACD,GAFD;;AAIAnD,EAAAA,KAAK,CAAC8B,OAAN,GAAiBV,OAAD,IAAa;AAC3B,WAAOpB,KAAK,CAACoD,UAAN,CAAkBC,IAAD,IAAU;AAChC,aAAOA,IAAI,CAAC1F,GAAL,KAAayD,OAApB;AACD,KAFM,CAAP;AAGD,GAJD;;AAMApB,EAAAA,KAAK,CAACwC,cAAN,GAAwBc,OAAD,IAAa;AAClC,WAAOtD,KAAK,CAACoD,UAAN,CAAkBzF,GAAD,IAAS;AAC/B,aAAO2F,OAAO,CAAC/E,QAAR,CAAiBZ,GAAG,CAACA,GAArB,CAAP;AACD,KAFM,CAAP;AAGD,GAJD;;AAMAqC,EAAAA,KAAK,CAACoD,UAAN,GAAoBG,MAAD,IAAY;AAC7B,WAAOpD,oBAAWiD,UAAX,CAAsBnE,KAAK,CAACuE,IAA5B,EAAkCD,MAAlC,CAAP;AACD,GAFD;;AAIAvD,EAAAA,KAAK,CAACyD,aAAN,GAAuBD,IAAD,IAAU;AAC9B,WAAOrD,oBAAWsD,aAAX,CAAyB9D,OAAzB,EAAkCF,IAAlC,EAAwC+D,IAAxC,EAA8CrE,iBAA9C,CAAP;AACD,GAFD;;AAIAa,EAAAA,KAAK,CAAC0D,YAAN,GAAsBtC,OAAD,IAAa;AAChC,UAAMoC,IAAI,GAAGlB,gBAAEC,GAAF,CAAM5C,OAAN,EAAe,iBAAf,CAAb;;AAEA,WAAOgE,OAAO,CAACH,IAAI,IAAIA,IAAI,CAACjF,QAAL,CAAc6C,OAAd,CAAT,CAAd;AACD,GAJD;;AAMApB,EAAAA,KAAK,CAAC4D,YAAN,GAAqB,MAAM;AACzB,WAAO,CAAC,GAAGhE,SAAJ,EAAeZ,IAAf,EAAqB6E,OAArB,GAA+BC,IAA/B,CAAqChD,MAAD,IAAY;AACrD,aAAOA,MAAM,IAAI,CAAC,kBAAD,EAAqB,iBAArB,EAAwCvC,QAAxC,CAAiDuC,MAAM,CAACiD,IAAxD,CAAjB;AACD,KAFM,KAED,IAFN;AAGD,GAJD;;AAMA/D,EAAAA,KAAK,CAACgE,aAAN,GAAsB,MAAM;AAC1B,UAAMC,SAAS,GAAGjE,KAAK,CAAC4D,YAAN,EAAlB;;AAEA,QAAI,CAACK,SAAL,EAAgB;AACd,aAAO,IAAP;AACD;;AAED,UAAMC,cAAc,GAAG,8BAAgBpE,UAAhB,EAA4BmE,SAA5B,EAAuC;AAC5D1E,MAAAA,QAD4D;AAE5DC,MAAAA;AAF4D,KAAvC,CAAvB;;AAKA,QAAI0E,cAAJ,EAAoB;AAClB,YAAMnG,MAAM,GAAG,IAAIoG,MAAJ,CAAWD,cAAc,CAACE,GAAf,CAAmBC,KAAnB,CAAyBC,MAApC,CAAf;AAEA,aAAOzG,YAAY,CAACqG,cAAD,EAAiBnG,MAAjB,CAAnB;AACD;;AAED,WAAO,IAAP;AACD,GAnBD;;AAqBAiC,EAAAA,KAAK,CAACoC,WAAN,GAAqBhB,OAAD,IAAa;AAC/B,UAAMmD,UAAU,GAAGvE,KAAK,CAACgE,aAAN,EAAnB;AAEA,WAAOL,OAAO,CAACY,UAAD,CAAP,IAAuBpE,oBAAWwB,MAAX,CAAkB4C,UAAlB,EAA8BnD,OAA9B,CAA9B;AACD,GAJD;;AAMApB,EAAAA,KAAK,CAACwE,mBAAN,GAA4B,CAACpD,OAAD,EAAUqD,YAAV,EAAwBnD,uBAAuB,GAAG,KAAlD,KAA4D;AACtF,UAAMoD,aAAa,GAAG1E,KAAK,CAACmB,mBAAN,CAA0B;AAC9CG,MAAAA,uBAD8C;AAE9CF,MAAAA;AAF8C,KAA1B,CAAtB;;AAIA,QAAI,CAACsD,aAAD,IACFpD,uBAAuB,IAAIoD,aAA3B,IAA4C,OAAOA,aAAP,KAAyB,QADvE,EAEE;AACA;AACD;;AACD,UAAMC,iBAAiB,GAAGrC,gBAAEiB,MAAF,CAAStE,KAAK,CAACuE,IAAN,IAAc,EAAvB,EAA2B;AACnD7F,MAAAA,GAAG,EAAE+G;AAD8C,KAA3B,CAA1B;;AAIAC,IAAAA,iBAAiB,CAACC,OAAlB,CAA2BC,gBAAD,IAAsB;AAC9CJ,MAAAA,YAAY,CAACI,gBAAD,EAAmBH,aAAnB,CAAZ;AACD,KAFD;AAGD,GAjBD;;AAmBA1E,EAAAA,KAAK,CAAC8E,cAAN,GAAwBjD,OAAD,IAAa;AAClClC,IAAAA,OAAO,CAACD,MAAR,CAAe;AACb0E,MAAAA,GAAG,EAAE;AACHC,QAAAA,KAAK,EAAE;AACLC,UAAAA,MAAM,EAAE,CADH;AAELS,UAAAA,IAAI,EAAE;AAFD;AADJ,OADQ;AAOblD,MAAAA;AAPa,KAAf;AASD,GAVD;;AAYA,SAAO7B,KAAP;AACD,CA7PD;;AA+PA,MAAMgF,WAAW,GAAIrF,OAAD,IAAa;AAC/B,QAAMsF,QAAQ,GAAG,EAAjB,CAD+B,CAG/B;;AACAA,EAAAA,QAAQ,CAACC,aAAT,GAAyBvB,OAAO,CAACrB,gBAAEC,GAAF,CAAM5C,OAAN,EAAe,8BAAf,CAAD,CAAhC;AACAsF,EAAAA,QAAQ,CAACzF,QAAT,GAAoB2F,MAAM,CAAC7C,gBAAEC,GAAF,CAAM5C,OAAN,EAAe,yBAAf,EAA0C,CAA1C,CAAD,CAA1B;AACAsF,EAAAA,QAAQ,CAAC1F,QAAT,GAAoB4F,MAAM,CAAC7C,gBAAEC,GAAF,CAAM5C,OAAN,EAAe,yBAAf,EAA0C,CAA1C,CAAD,CAA1B,CAN+B,CAQ/B;;AACAsF,EAAAA,QAAQ,CAAC9F,iBAAT,GAA6BmD,gBAAEC,GAAF,CAAM5C,OAAN,EAAe,kCAAf,KAAsD,EAAnF,CAT+B,CAW/B;;AACAsF,EAAAA,QAAQ,CAACG,cAAT,GAA0B9C,gBAAEC,GAAF,CAAM5C,OAAN,EAAe,+BAAf,KAAmD,EAA7E,CAZ+B,CAc/B;;AACAsF,EAAAA,QAAQ,CAAC7F,oBAAT,GAAgCkD,gBAAEC,GAAF,CAAM5C,OAAN,EAAe,qCAAf,CAAhC;AACAsF,EAAAA,QAAQ,CAAC5F,sBAAT,GAAkCiD,gBAAEC,GAAF,CAAM5C,OAAN,EAAe,uCAAf,CAAlC;AACAsF,EAAAA,QAAQ,CAAC3F,2BAAT,GAAuCgD,gBAAEC,GAAF,CAAM5C,OAAN,EAAe,4CAAf,CAAvC,CAjB+B,CAmB/B;;AACAsF,EAAAA,QAAQ,CAACxF,IAAT,GAAgB6C,gBAAEC,GAAF,CAAM5C,OAAN,EAAe,qBAAf,KAAyC,OAAzD;AAEA,SAAOsF,QAAP;AACD,CAvBD;AAyBA;;;;;;;;;;AAMA,MAAMI,UAAU,GAAG,CAAC1F,OAAD,EAAU7B,WAAV,KAA0B;AAC3C,QAAM4B,MAAM,GAAG,CAACmC,OAAD,EAAUyD,GAAG,GAAG,IAAhB,EAAsBC,QAAQ,GAAG,IAAjC,EAAuC7H,IAAI,GAAG,IAA9C,KAAuD;AACpE,QAAI0G,GAAJ;;AAEA,QAAImB,QAAJ,EAAc;AACZ,YAAMC,UAAU,GAAG1H,WAAW,CAACsG,GAAZ,CAAgBC,KAAhB,CAAsBU,IAAtB,GAA6BQ,QAAQ,CAACR,IAAzD;AAEAX,MAAAA,GAAG,GAAG;AACJqB,QAAAA,GAAG,EAAE;AAACV,UAAAA,IAAI,EAAES;AAAP,SADD;AAEJnB,QAAAA,KAAK,EAAE;AAACU,UAAAA,IAAI,EAAES;AAAP;AAFH,OAAN;;AAIA,UAAID,QAAQ,CAACjB,MAAb,EAAqB;AACnB,cAAMoB,SAAS,GAAG5H,WAAW,CAACsG,GAAZ,CAAgBC,KAAhB,CAAsBC,MAAtB,GAA+BiB,QAAQ,CAACjB,MAA1D;AAEAF,QAAAA,GAAG,CAACqB,GAAJ,CAAQnB,MAAR,GAAiBoB,SAAjB;AACAtB,QAAAA,GAAG,CAACC,KAAJ,CAAUC,MAAV,GAAmBoB,SAAnB;AACD;AACF;;AAED/F,IAAAA,OAAO,CAACD,MAAR,CAAe;AACbhC,MAAAA,IADa;AAEb4H,MAAAA,GAFa;AAGblB,MAAAA,GAHa;AAIbvC,MAAAA,OAJa;AAKb7C,MAAAA,IAAI,EAAElB;AALO,KAAf;AAOD,GAzBD;;AA2BA,SAAO4B,MAAP;AACD,CA7BD;AA+BA;;;;;;;;;;;;;;;;;;AAkBA;;;;;;;;;AAOA,MAAMiG,gBAAgB,GAAG,CAACC,QAAD,EAAWC,UAAX,KAA0B;AACjD,QAAMC,aAAa,GAAG,EAAtB;;AAEA,QAAMC,YAAY,GAAG,CAACpG,OAAD,EAAUX,IAAV,EAAgBgH,UAAhB,KAA+B;AAClD,UAAMlG,UAAU,GAAGH,OAAO,CAACI,aAAR,EAAnB;AACA,UAAMkF,QAAQ,GAAGD,WAAW,CAACrF,OAAD,CAA5B;AAFkD,UAG3CsG,KAH2C,GAGlCnG,UAHkC,CAG3CmG,KAH2C;AAIlDD,IAAAA,UAAU,CAACpB,OAAX,CAAoB1F,SAAD,IAAe;AAChC,UAAI,CAAE,WAAD,CAAcgH,IAAd,CAAmBpG,UAAU,CAACqG,OAAX,CAAmBjH,SAAnB,CAAnB,CAAL,EAAwD;AACtD;AACD;;AACD,YAAMkH,UAAU,GAAGH,KAAK,CAAC/G,SAAS,CAACkF,GAAV,CAAcC,KAAd,CAAoBU,IAApB,GAA2B,CAA5B,CAAxB;AACA,YAAMhH,MAAM,GAAGqI,UAAU,CAACC,MAAX,CAAkB,CAAlB,EAAqBlC,MAArB,CAA4BjF,SAAS,CAACkF,GAAV,CAAcC,KAAd,CAAoBC,MAAhD,CAAf;AACA,YAAMrF,KAAK,GAAGpB,YAAY,CAACqB,SAAD,EAAYnB,MAAZ,EAAoB,CAAC8H,UAAU,CAACS,MAAhC,CAA1B;AACA,YAAM5G,MAAM,GAAG2F,UAAU,CAAC1F,OAAD,EAAUT,SAAV,CAAzB;AAEA0G,MAAAA,QAAQ,CAAC;AACPjG,QAAAA,OADO;AAEP5B,QAAAA,MAFO;AAGPkB,QAAAA,KAHO;AAIPC,QAAAA,SAJO;AAKPF,QAAAA,IALO;AAMPU,QAAAA,MANO;AAOPuF,QAAAA,QAPO;AAQPnF,QAAAA,UARO;AASPE,QAAAA,KAAK,EAAEjB,QAAQ,CAACC,IAAD,EAAOC,KAAP,EAAcC,SAAd,EAAyB+F,QAAzB,EAAmCvF,MAAnC,EAA2CC,OAA3C;AATR,OAAD,CAAR;AAWD,KApBD;AAqBD,GAzBD;;AA2BA,SAAO;AACL4G,IAAAA,MAAM,CAAE5G,OAAF,EAAW;AACf,YAAMG,UAAU,GAAGH,OAAO,CAACI,aAAR,EAAnB;AACA,YAAMkF,QAAQ,GAAGD,WAAW,CAACrF,OAAD,CAA5B;AAEA,aAAO;AACL,yBAAkBX,IAAlB,EAAwB;AACtB,gBAAMwH,WAAW,GAAG,wCAAkBxH,IAAlB,EAAwBc,UAAxB,CAApB;;AAEA,cAAId,IAAI,KAAKwH,WAAb,EAA0B;AACxB;AACD;;AAED,gBAAMC,OAAO,GAAG,8BAAgB3G,UAAhB,EAA4Bd,IAA5B,EAAkCiG,QAAlC,CAAhB;;AACA,cAAI,CAACwB,OAAD,IAAYX,aAAa,CAACvH,QAAd,CAAuBkI,OAAvB,CAAhB,EAAiD;AAC/C;AACD;;AAEDX,UAAAA,aAAa,CAACY,IAAd,CAAmBD,OAAnB;AACAV,UAAAA,YAAY,CAACpG,OAAD,EAAUX,IAAV,EAAgB,CAACyH,OAAD,CAAhB,CAAZ;AACD,SAfI;;AAgBL,yBAAkB;AAChB,gBAAME,SAAS,GAAG7G,UAAU,CAAC8G,cAAX,EAAlB;AACA,gBAAMC,cAAc,GAAGF,SAAS,CAACpD,MAAV,CAAkBvE,IAAD,IAAU;AAChD,mBAAO,CAAC8G,aAAa,CAACvH,QAAd,CAAuBS,IAAvB,CAAR;AACD,WAFsB,CAAvB;AAIA+G,UAAAA,YAAY,CAACpG,OAAD,EAAU,IAAV,EAAgBkH,cAAhB,CAAZ;AACD;;AAvBI,OAAP;AAyBD,KA9BI;;AA+BLC,IAAAA,IAAI,EAAEjB,UAAU,CAACiB;AA/BZ,GAAP;AAiCD,CA/DD;;AAsEA;;;;;;;;AAQe,SAASC,YAAT,CAAuBnB,QAAvB,EAAiCC,UAAjC,EAA6C;AAC1D,QAAMmB,QAAQ,GAAG1E,gBAAEC,GAAF,CAAMsD,UAAN,EAAkB,WAAlB,CAAjB;;AACA,MAAI,CAACmB,QAAD,IAAa,CAAC,CAAC,SAAD,EAAY,YAAZ,EAA0B,QAA1B,EAAoCzI,QAApC,CAA6CyI,QAA7C,CAAlB,EAA0E;AACxE,UAAM,IAAIC,SAAJ,CAAc,wFAAd,CAAN;AACD;;AACD,MAAI,OAAOrB,QAAP,KAAoB,UAAxB,EAAoC;AAClC,UAAM,IAAIqB,SAAJ,CAAc,2CAAd,CAAN;AACD;;AAED,MAAIpB,UAAU,CAACF,gBAAf,EAAiC;AAC/B,WAAOA,gBAAgB,CAACC,QAAD,EAAW;AAChCkB,MAAAA,IAAI,EAAEjB,UAAU,CAACiB,IADe;AAEhCR,MAAAA,MAAM,EAAET,UAAU,CAACS;AAFa,KAAX,CAAvB;AAID;;AAED,SAAO;AACL;;;;;;;;;AASAC,IAAAA,MAAM,CAAE5G,OAAF,EAAW;AACf,YAAMG,UAAU,GAAGH,OAAO,CAACI,aAAR,EAAnB;AAEA,YAAMkF,QAAQ,GAAGD,WAAW,CAACrF,OAAD,CAA5B;;AAEA,YAAMuH,UAAU,GAAIlI,IAAD,IAAU;AAC3B,cAAME,SAAS,GAAG,8BAAgBY,UAAhB,EAA4Bd,IAA5B,EAAkCiG,QAAlC,CAAlB;;AAEA,YAAI,CAAC/F,SAAL,EAAgB;AACd;AACD;;AAED,cAAMkH,UAAU,GAAGtG,UAAU,CAACmG,KAAX,CAAiB/G,SAAS,CAACkF,GAAV,CAAcC,KAAd,CAAoBU,IAApB,GAA2B,CAA5C,CAAnB;AAEA,cAAMhH,MAAM,GAAGqI,UAAU,CAACC,MAAX,CAAkB,CAAlB,EAAqBlC,MAArB,CAA4BjF,SAAS,CAACkF,GAAV,CAAcC,KAAd,CAAoBC,MAAhD,CAAf;AAEA,cAAMrF,KAAK,GAAGpB,YAAY,CAACqB,SAAD,EAAYnB,MAAZ,CAA1B;AAEA,cAAM2B,MAAM,GAAG2F,UAAU,CAAC1F,OAAD,EAAUT,SAAV,CAAzB;AAEA,cAAMc,KAAK,GAAGjB,QAAQ,CACpBC,IADoB,EAEpBC,KAFoB,EAGpBC,SAHoB,EAIpB+F,QAJoB,EAKpBvF,MALoB,EAMpBC,OANoB,CAAtB;;AASA,YACEsF,QAAQ,CAACC,aAAT,IACAlF,KAAK,CAAC2B,MAAN,CAAa,SAAb,CAFF,EAGE;AACA;AACD;;AAEDiE,QAAAA,QAAQ,CAAC;AACPjG,UAAAA,OADO;AAEP5B,UAAAA,MAFO;AAGPkB,UAAAA,KAHO;AAIPC,UAAAA,SAJO;AAKPF,UAAAA,IALO;AAMPU,UAAAA,MANO;AAOPuF,UAAAA,QAPO;AAQPnF,UAAAA,UARO;AASPE,UAAAA;AATO,SAAD,CAAR;AAWD,OA1CD;;AA4CA,UAAI6F,UAAU,CAACsB,eAAf,EAAgC;AAC9B,cAAMC,QAAQ,GAAGjH,oBAAWkH,gBAAX,CAA4B1H,OAA5B,EAAqCkG,UAAU,CAACsB,eAAhD,CAAjB;;AAEA,eAAOhH,oBAAWmH,gBAAX,CAA4BF,QAA5B,EAAsCF,UAAtC,CAAP;AACD;;AAED,aAAO;AACLK,QAAAA,uBAAuB,EAAEL,UADpB;AAELM,QAAAA,mBAAmB,EAAEN,UAFhB;AAGLO,QAAAA,kBAAkB,EAAEP;AAHf,OAAP;AAKD,KAtEI;;AAuELJ,IAAAA,IAAI,EAAEjB,UAAU,CAACiB;AAvEZ,GAAP;AAyED","sourcesContent":["// eslint-disable-next-line import/no-named-default\nimport {default as commentParser, stringify as commentStringify} from 'comment-parser';\nimport _ from 'lodash';\nimport jsdocUtils from './jsdocUtils';\nimport getJSDocComment, {getReducedASTNode} from './eslint/getJSDocComment';\n\nconst skipSeeLink = (parser) => {\n return (str, data) => {\n if (data.tag === 'see' && str.match(/\\{@link.+?\\}/u)) {\n return null;\n }\n\n return parser(str, data);\n };\n};\n\n/**\n *\n * @param {object} commentNode\n * @param {string} indent Whitespace\n * @param {boolean} [trim=true]\n * @returns {object}\n */\nconst parseComment = (commentNode, indent, trim = true) => {\n // Preserve JSDoc block start/end indentation.\n return commentParser(`${indent}/*${commentNode.value}${indent}*/`, {\n // @see https://github.com/yavorskiy/comment-parser/issues/21\n parsers: [\n commentParser.PARSERS.parse_tag,\n skipSeeLink(commentParser.PARSERS.parse_type),\n skipSeeLink(\n (str, data) => {\n if ([\n 'example', 'return', 'returns', 'throws', 'exception',\n 'access', 'version', 'since', 'license', 'author',\n ].includes(data.tag)) {\n return null;\n }\n\n return commentParser.PARSERS.parse_name(str, data);\n },\n ),\n\n // parse_description\n (str, data) => {\n // Only expected throw in previous step is if bad name (i.e.,\n // missing end bracket on optional name), but `@example`\n // skips name parsing\n /* istanbul ignore next */\n if (data.errors && data.errors.length) {\n return null;\n }\n\n // Tweak original regex to capture only single optional space\n const result = str.match(/^ ?((.|\\s)+)?/u);\n\n // Always has at least whitespace due to `indent` we've added\n /* istanbul ignore next */\n if (result) {\n return {\n data: {\n description: result[1] === undefined ? '' : result[1],\n },\n source: result[0],\n };\n }\n\n // Always has at least whitespace due to `indent` we've added\n /* istanbul ignore next */\n return null;\n },\n ],\n trim,\n })[0] || {};\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n {\n tagNamePreference,\n overrideReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n mode,\n },\n report,\n context,\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = {};\n\n utils.stringify = (tagBlock) => {\n const indent = jsdocUtils.getIndent(sourceCode);\n\n return commentStringify([tagBlock], {indent}).slice(indent.length - 1);\n };\n\n utils.reportJSDoc = (msg, tag, handler) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag);\n };\n\n utils.getFunctionParameterNames = () => {\n return jsdocUtils.getFunctionParameterNames(node);\n };\n\n utils.isConstructor = () => {\n return node.parent && node.parent.kind === 'constructor';\n };\n\n utils.isSetter = () => {\n return node.parent.kind === 'set';\n };\n\n utils.getJsdocParameterNamesDeep = () => {\n const param = utils.getPreferredTagName({tagName: 'param'});\n if (!param) {\n return false;\n }\n\n return jsdocUtils.getJsdocParameterNamesDeep(jsdoc, param);\n };\n\n utils.getJsdocParameterNames = () => {\n const param = utils.getPreferredTagName({tagName: 'param'});\n if (!param) {\n return false;\n }\n\n return jsdocUtils.getJsdocParameterNames(jsdoc, param);\n };\n\n utils.getPreferredTagName = ({tagName, skipReportingBlockedTag = false, allowObjectReturn = false, defaultMessage = `Unexpected tag \\`@${tagName}\\``}) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(context, mode, name, definedTags);\n };\n\n utils.hasATag = (name) => {\n return jsdocUtils.hasATag(jsdoc, name);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.avoidDocs = () => {\n if (\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n // inheritdoc implies that all documentation is inherited; see https://jsdoc.app/tags-inheritdoc.html\n utils.hasTag('inheritdoc') ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag(['augments', 'extends']) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n const exemptedBy = _.get(context, 'options[0].exemptedBy');\n if (exemptedBy && exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n utils.tagMustHaveEitherTypeOrNamePosition = (tagName) => {\n return jsdocUtils.tagMustHaveEitherTypeOrNamePosition(tagName);\n };\n\n utils.tagMightHaveEitherTypeOrNamePosition = (tagName) => {\n return jsdocUtils.tagMightHaveEitherTypeOrNamePosition(mode, tagName);\n };\n\n utils.tagMustHaveNamePosition = (tagName) => {\n return jsdocUtils.tagMustHaveNamePosition(tagName);\n };\n\n utils.tagMightHaveNamePosition = (tagName) => {\n return jsdocUtils.tagMightHaveNamePosition(tagName);\n };\n\n utils.tagMustHaveTypePosition = (tagName) => {\n return jsdocUtils.tagMustHaveTypePosition(mode, tagName);\n };\n\n utils.tagMightHaveTypePosition = (tagName) => {\n return jsdocUtils.tagMightHaveTypePosition(mode, tagName);\n };\n\n utils.isNamepathDefiningTag = (tagName) => {\n return jsdocUtils.isNamepathDefiningTag(tagName);\n };\n\n utils.hasDefinedTypeReturnTag = (tag) => {\n return jsdocUtils.hasDefinedTypeReturnTag(tag);\n };\n\n utils.hasReturnValue = () => {\n return jsdocUtils.hasReturnValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(context, mode, tags, tagNamePreference);\n };\n\n utils.hasOptionTag = (tagName) => {\n const tags = _.get(context, 'options[0].tags');\n\n return Boolean(tags && tags.includes(tagName));\n };\n\n utils.getClassNode = () => {\n return [...ancestors, node].reverse().find((parent) => {\n return parent && ['ClassDeclaration', 'ClassExpression'].includes(parent.type);\n }) || null;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n\n if (!classNode) {\n return null;\n }\n\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n const indent = ' '.repeat(classJsdocNode.loc.start.column);\n\n return parseComment(classJsdocNode, indent);\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return Boolean(classJsdoc) && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n const matchingJsdocTags = _.filter(jsdoc.tags || [], {\n tag: targetTagName,\n });\n\n matchingJsdocTags.forEach((matchingJsdocTag) => {\n arrayHandler(matchingJsdocTag, targetTagName);\n });\n };\n\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n const settings = {};\n\n // All rules\n settings.ignorePrivate = Boolean(_.get(context, 'settings.jsdoc.ignorePrivate'));\n settings.minLines = Number(_.get(context, 'settings.jsdoc.minLines', 0));\n settings.maxLines = Number(_.get(context, 'settings.jsdoc.maxLines', 1));\n\n // `check-tag-names` and many returns/param rules\n settings.tagNamePreference = _.get(context, 'settings.jsdoc.tagNamePreference') || {};\n\n // `check-types` and `no-undefined-types`\n settings.preferredTypes = _.get(context, 'settings.jsdoc.preferredTypes') || {};\n\n // `require-param`, `require-description`, `require-example`, `require-returns`\n settings.overrideReplacesDocs = _.get(context, 'settings.jsdoc.overrideReplacesDocs');\n settings.implementsReplacesDocs = _.get(context, 'settings.jsdoc.implementsReplacesDocs');\n settings.augmentsExtendsReplacesDocs = _.get(context, 'settings.jsdoc.augmentsExtendsReplacesDocs');\n\n // Many rules, e.g., `check-tag-names`\n settings.mode = _.get(context, 'settings.jsdoc.mode') || 'jsdoc';\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {line: lineNumber},\n start: {line: lineNumber},\n };\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: object,\n * sourceCode: object,\n * indent: string,\n * jsdoc: object,\n * jsdocNode: object,\n * node: object | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n */\nconst iterateAllJsdocs = (iterator, ruleConfig) => {\n const trackedJsdocs = [];\n\n const callIterator = (context, node, jsdocNodes) => {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n const {lines} = sourceCode;\n jsdocNodes.forEach((jsdocNode) => {\n if (!(/^\\/\\*\\*\\s/).test(sourceCode.getText(jsdocNode))) {\n return;\n }\n const sourceLine = lines[jsdocNode.loc.start.line - 1];\n const indent = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n const jsdoc = parseComment(jsdocNode, indent, !ruleConfig.noTrim);\n const report = makeReport(context, jsdocNode);\n\n iterator({\n context,\n indent,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n utils: getUtils(node, jsdoc, jsdocNode, settings, report, context),\n });\n });\n };\n\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n\n return {\n '*:not(Program)' (node) {\n const reducedNode = getReducedASTNode(node, sourceCode);\n\n if (node !== reducedNode) {\n return;\n }\n\n const comment = getJSDocComment(sourceCode, node, settings);\n if (!comment || trackedJsdocs.includes(comment)) {\n return;\n }\n\n trackedJsdocs.push(comment);\n callIterator(context, node, [comment]);\n },\n 'Program:exit' () {\n const allJsdocs = sourceCode.getAllComments();\n const untrackedJSdoc = allJsdocs.filter((node) => {\n return !trackedJsdocs.includes(node);\n });\n\n callIterator(context, null, untrackedJSdoc);\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {{\n * meta: any,\n * contextDefaults?: true | string[],\n * iterateAllJsdocs?: true,\n * }} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = _.get(ruleConfig, 'meta.type');\n if (!metaType || !['problem', 'suggestion', 'layout'].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, {\n meta: ruleConfig.meta,\n noTrim: ruleConfig.noTrim,\n });\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const sourceCode = context.getSourceCode();\n\n const settings = getSettings(context);\n\n const checkJsdoc = (node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n\n if (!jsdocNode) {\n return;\n }\n\n const sourceLine = sourceCode.lines[jsdocNode.loc.start.line - 1];\n\n const indent = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n\n const jsdoc = parseComment(jsdocNode, indent);\n\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n );\n\n if (\n settings.ignorePrivate &&\n utils.hasTag('private')\n ) {\n return;\n }\n\n iterator({\n context,\n indent,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n utils,\n });\n };\n\n if (ruleConfig.contextDefaults) {\n const contexts = jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n return jsdocUtils.getContextObject(contexts, checkJsdoc);\n }\n\n return {\n ArrowFunctionExpression: checkJsdoc,\n FunctionDeclaration: checkJsdoc,\n FunctionExpression: checkJsdoc,\n };\n },\n meta: ruleConfig.meta,\n };\n}\n"],"file":"iterateJsdoc.js"}
\No newline at end of file