eslint-plugin-jsdoc 30.7.5 → 30.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -1043,6 +1043,7 @@ expression-oriented rules will be used by default as well:
|
|
|
1043
1043
|
|
|
1044
1044
|
* `quotes` - Will insist on "double".
|
|
1045
1045
|
* `semi` - Will insist on "never"
|
|
1046
|
+
* `strict` - Disabled.
|
|
1046
1047
|
* `no-unused-expressions` - Disabled.
|
|
1047
1048
|
|
|
1048
1049
|
<a name="eslint-plugin-jsdoc-rules-check-examples-options-for-determining-eslint-rule-applicability-allowinlineconfig-nodefaultexamplerules-matchingfilename-configfile-checkeslintrc-and-baseconfig-options-for-checking-other-than-example-checkdefaults-checkparams-or-checkproperties"></a>
|
|
@@ -76,7 +76,8 @@ const defaultMdRules = {
|
|
|
76
76
|
const defaultExpressionRules = { ...defaultMdRules,
|
|
77
77
|
'no-unused-expressions': 'off',
|
|
78
78
|
quotes: ['error', 'double'],
|
|
79
|
-
semi: ['error', 'never']
|
|
79
|
+
semi: ['error', 'never'],
|
|
80
|
+
strict: 'off'
|
|
80
81
|
};
|
|
81
82
|
|
|
82
83
|
var _default = (0, _iterateJsdoc.default)(({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/checkExamples.js"],"names":["zeroBasedLineIndexAdjust","likelyNestedJSDocIndentSpace","preTagSpaceLength","firstLinePrefixLength","hasCaptionRegex","escapeStringRegexp","str","replace","countChars","ch","match","RegExp","length","getRegexFromString","regexString","flags","regex","uniqueFlags","Set","join","defaultMdRules","defaultExpressionRules","quotes","semi","report","utils","context","globalState","has","set","Map","matchingFileNameMap","get","options","exampleCodeRegex","rejectExampleCodeRegex","checkDefaults","checkParams","checkProperties","noDefaultExampleRules","checkEslintrc","matchingFileName","matchingFileNameDefaults","matchingFileNameParams","matchingFileNameProperties","paddedIndent","baseConfig","configFile","allowInlineConfig","reportUnusedDisableDirectives","captionRequired","rulePaths","mdRules","undefined","expressionRules","checkSource","filename","defaultFileName","rules","skipInit","source","targetTagName","sources","tag","line","push","nonJSPrefacingCols","nonJSPrefacingLines","string","checkRules","cliConfig","useEslintrc","cliConfigStr","JSON","stringify","src","fileNameMapKey","file","cliFile","cli","CLIEngine","config","getConfigForFile","results","messages","executeOnText","codeStartLine","codeStartCol","forEach","message","column","severity","ruleId","startLine","startCol","getFilenameInfo","ext","jsFileName","getFilename","includes","filenameInfo","forEachPreferredTag","description","trim","default","tagName","getPreferredTagName","hasTag","matchingFilenameInfo","test","startingIndex","lastStringCount","exampleCode","lastIndex","exec","index","n0","n1","preMatch","slice","preMatchLines","colDelta","lastIndexOf","nonJSPreface","nonJSPrefaceLineCount","idx","indexOf","charsInLastLine","global","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","type","noTrim"],"mappings":";;;;;;;AAGA;;AAGA;;;;AANA;AACA;AACA;AAMA,MAAMA,wBAAwB,GAAG,CAAC,CAAlC;AACA,MAAMC,4BAA4B,GAAG,CAArC;AACA,MAAMC,iBAAiB,GAAG,CAA1B,C,CAEA;;AACA,MAAMC,qBAAqB,GAAGD,iBAA9B;AAEA,MAAME,eAAe,GAAG,gCAAxB;;AAEA,MAAMC,kBAAkB,GAAIC,GAAD,IAAS;AAClC,SAAOA,GAAG,CAACC,OAAJ,CAAY,sBAAZ,EAAoC,MAApC,CAAP;AACD,CAFD;;AAGA,MAAMC,UAAU,GAAG,CAACF,GAAD,EAAMG,EAAN,KAAa;AAC9B,SAAO,CAACH,GAAG,CAACI,KAAJ,CAAU,IAAIC,MAAJ,CAAWN,kBAAkB,CAACI,EAAD,CAA7B,EAAmC,IAAnC,CAAV,KAAuD,EAAxD,EAA4DG,MAAnE;AACD,CAFD;;AAIA,MAAMC,kBAAkB,GAAIC,WAAD,IAAiB;AAC1C,QAAMJ,KAAK,GAAGI,WAAW,CAACJ,KAAZ,CAAkB,wBAAlB,CAAd;AACA,MAAIK,KAAK,GAAG,GAAZ;AACA,MAAIC,KAAK,GAAGF,WAAZ;;AACA,MAAIJ,KAAJ,EAAW;AACT,OAAGM,KAAH,EAAUD,KAAV,IAAmBL,KAAnB;;AACA,QAAI,CAACK,KAAL,EAAY;AACVA,MAAAA,KAAK,GAAG,GAAR;AACD;;AACD,UAAME,WAAW,GAAG,CAAC,GAAG,IAAIC,GAAJ,CAAQH,KAAR,CAAJ,CAApB;AACAA,IAAAA,KAAK,GAAGE,WAAW,CAACE,IAAZ,CAAiB,EAAjB,CAAR;AACD;;AAED,SAAO,IAAIR,MAAJ,CAAWK,KAAX,EAAkBD,KAAlB,CAAP;AACD,CAdD;;AAgBA,MAAMK,cAAc,GAAG;AACrB;AACA,cAAY,CAFS;AAIrB;AACA,0BAAwB,CALH;AAOrB;AACA,wBAAsB,CARD;AAUrB,iCAA+B,CAVV;AAYrB;AACA,yBAAuB,CAbF;AAerB;AACA,gBAAc,CAhBO;AAkBrB;AACA;AACA,6BAA2B,CApBN;AAsBrB;AACA,cAAY,CAvBS;AAyBrB;AACA,oBAAkB,CA1BG;AA4BrB;AACA,4BAA0B,CA7BL;AA8BrB,6BAA2B,CA9BN;AAgCrB;AACA,mBAAiB;AAjCI,CAAvB;AAoCA,MAAMC,sBAAsB,GAAG,EAC7B,GAAGD,cAD0B;AAE7B,2BAAyB,KAFI;AAG7BE,EAAAA,MAAM,EAAE,CAAC,OAAD,EAAU,QAAV,CAHqB;AAI7BC,EAAAA,IAAI,EAAE,CAAC,OAAD,EAAU,OAAV;AAJuB,CAA/B;;eAOe,2BAAa,CAAC;AAC3BC,EAAAA,MAD2B;AAE3BC,EAAAA,KAF2B;AAG3BC,EAAAA,OAH2B;AAI3BC,EAAAA;AAJ2B,CAAD,KAKtB;AACJ,MAAI,CAACA,WAAW,CAACC,GAAZ,CAAgB,gCAAhB,CAAL,EAAwD;AACtDD,IAAAA,WAAW,CAACE,GAAZ,CAAgB,gCAAhB,EAAkD,IAAIC,GAAJ,EAAlD;AACD;;AACD,QAAMC,mBAAmB,GAAGJ,WAAW,CAACK,GAAZ,CAAgB,gCAAhB,CAA5B;AAEA,QAAMC,OAAO,GAAGP,OAAO,CAACO,OAAR,CAAgB,CAAhB,KAAsB,EAAtC;AACA,MAAI;AACFC,IAAAA,gBAAgB,GAAG,IADjB;AAEFC,IAAAA,sBAAsB,GAAG;AAFvB,MAGAF,OAHJ;AAIA,QAAM;AACJG,IAAAA,aAAa,GAAG,KADZ;AAEJC,IAAAA,WAAW,GAAG,KAFV;AAGJC,IAAAA,eAAe,GAAG,KAHd;AAIJC,IAAAA,qBAAqB,GAAG,KAJpB;AAKJC,IAAAA,aAAa,GAAG,IALZ;AAMJC,IAAAA,gBAAgB,GAAG,IANf;AAOJC,IAAAA,wBAAwB,GAAG,IAPvB;AAQJC,IAAAA,sBAAsB,GAAG,IARrB;AASJC,IAAAA,0BAA0B,GAAG,IATzB;AAUJC,IAAAA,YAAY,GAAG,CAVX;AAWJC,IAAAA,UAAU,GAAG,EAXT;AAYJC,IAAAA,UAZI;AAaJC,IAAAA,iBAAiB,GAAG,IAbhB;AAcJC,IAAAA,6BAA6B,GAAG,IAd5B;AAeJC,IAAAA,eAAe,GAAG;AAfd,MAgBFjB,OAhBJ,CAXI,CA6BJ;;AACA,QAAMkB,SAAS,GAAG,EAAlB;AAEA,QAAMC,OAAO,GAAGb,qBAAqB,GAAGc,SAAH,GAAejC,cAApD;AAEA,QAAMkC,eAAe,GAAGf,qBAAqB,GAAGc,SAAH,GAAehC,sBAA5D;;AAEA,MAAIa,gBAAJ,EAAsB;AACpBA,IAAAA,gBAAgB,GAAGrB,kBAAkB,CAACqB,gBAAD,CAArC;AACD;;AACD,MAAIC,sBAAJ,EAA4B;AAC1BA,IAAAA,sBAAsB,GAAGtB,kBAAkB,CAACsB,sBAAD,CAA3C;AACD;;AAED,QAAMoB,WAAW,GAAG,CAAC;AACnBC,IAAAA,QADmB;AACTC,IAAAA,eADS;AAEnBC,IAAAA,KAAK,GAAGJ,eAFW;AAGnBK,IAAAA,QAHmB;AAGTC,IAAAA,MAHS;AAGDC,IAAAA,aAHC;AAGcC,IAAAA,OAAO,GAAG,EAHxB;AAG4BC,IAAAA,GAAG,GAAG;AAACC,MAAAA,IAAI,EAAE;AAAP;AAHlC,GAAD,KAId;AACJ,QAAI,CAACL,QAAL,EAAe;AACbG,MAAAA,OAAO,CAACG,IAAR,CAAa;AACXC,QAAAA,kBAAkB,EAAE,CADT;AAEXC,QAAAA,mBAAmB,EAAE,CAFV;AAGXC,QAAAA,MAAM,EAAER;AAHG,OAAb;AAKD,KAPG,CASJ;AACA;;;AACA,UAAMS,UAAU,GAAG,UAAU;AAC3BH,MAAAA,kBAD2B;AAE3BC,MAAAA,mBAF2B;AAG3BC,MAAAA;AAH2B,KAAV,EAIhB;AACD,YAAME,SAAS,GAAG;AAChBtB,QAAAA,iBADgB;AAEhBF,QAAAA,UAFgB;AAGhBC,QAAAA,UAHgB;AAIhBE,QAAAA,6BAJgB;AAKhBE,QAAAA,SALgB;AAMhBO,QAAAA,KANgB;AAOhBa,QAAAA,WAAW,EAAE/B;AAPG,OAAlB;AASA,YAAMgC,YAAY,GAAGC,IAAI,CAACC,SAAL,CAAeJ,SAAf,CAArB;AAEA,YAAMK,GAAG,GAAG9B,YAAY,GACtBuB,MAAM,CAAC7D,OAAP,CAAe,IAAII,MAAJ,CAAY,WAAUkC,YAAa,QAAnC,EAA4C,IAA5C,CAAf,EAAkE,IAAlE,CADsB,GAEtBuB,MAFF,CAZC,CAgBD;;AACA,YAAMQ,cAAc,GAAGpB,QAAQ,GAC7B,MAAMgB,YAAN,GAAqBhB,QADQ,GAE7B,MAAMgB,YAAN,GAAqBf,eAFvB;AAGA,YAAMoB,IAAI,GAAGrB,QAAQ,IAAIC,eAAzB;AACA,UAAIqB,OAAJ;;AACA,UAAI/C,mBAAmB,CAACH,GAApB,CAAwBgD,cAAxB,CAAJ,EAA6C;AAC3CE,QAAAA,OAAO,GAAG/C,mBAAmB,CAACC,GAApB,CAAwB4C,cAAxB,CAAV;AACD,OAFD,MAEO;AACL,cAAMG,GAAG,GAAG,IAAIC,iBAAJ,CAAcV,SAAd,CAAZ;AACA,YAAIW,MAAJ;;AACA,YAAIzB,QAAQ,IAAIhB,aAAhB,EAA+B;AAC7ByC,UAAAA,MAAM,GAAGF,GAAG,CAACG,gBAAJ,CAAqBL,IAArB,CAAT;AACD,SALI,CAOL;AACA;AACA;;;AACAC,QAAAA,OAAO,GAAG,IAAIE,iBAAJ,CAAc;AACtBhC,UAAAA,iBADsB;AAEtBF,UAAAA,UAAU,EAAE,EACV,GAAGA,UADO;AAEV,eAAGmC;AAFO,WAFU;AAMtBlC,UAAAA,UANsB;AAOtBE,UAAAA,6BAPsB;AAQtBE,UAAAA,SARsB;AAStBO,UAAAA,KATsB;AAUtBa,UAAAA,WAAW,EAAE;AAVS,SAAd,CAAV;AAYAxC,QAAAA,mBAAmB,CAACF,GAApB,CAAwB+C,cAAxB,EAAwCE,OAAxC;AACD;;AAED,YAAM;AAACK,QAAAA,OAAO,EAAE,CAAC;AAACC,UAAAA;AAAD,SAAD;AAAV,UACJN,OAAO,CAACO,aAAR,CAAsBV,GAAtB,CADF,CAjDC,CAoDD;;AACA,YAAMW,aAAa,GAAGvB,GAAG,CAACC,IAAJ,GAAWG,mBAAjC;AACA,YAAMoB,YAAY,GAAGtF,4BAArB;AAEAmF,MAAAA,QAAQ,CAACI,OAAT,CAAiB,CAAC;AAACC,QAAAA,OAAD;AAAUzB,QAAAA,IAAV;AAAgB0B,QAAAA,MAAhB;AAAwBC,QAAAA,QAAxB;AAAkCC,QAAAA;AAAlC,OAAD,KAA+C;AAC9D,cAAMC,SAAS,GAAGP,aAAa,GAAGtB,IAAhB,GAAuBhE,wBAAzC;AACA,cAAM8F,QAAQ,GAAGP,YAAY,KAE3B;AACAvB,QAAAA,IAAI,IAAI,CAAR,GAAYE,kBAAkB,GAAG/D,qBAAjC,GAAyDD,iBAH9B,CAAZ,GAIbwF,MAJJ;AAMAlE,QAAAA,MAAM,CACJ,MAAMqC,aAAN,GAAsB,GAAtB,IAA6B8B,QAAQ,KAAK,CAAb,GAAiB,OAAjB,GAA2B,SAAxD,KACGC,MAAM,GAAG,OAAOA,MAAP,GAAgB,GAAnB,GAAyB,EADlC,IACwC,IADxC,GAEEH,OAHE,EAIJ,IAJI,EAKJ;AACEC,UAAAA,MAAM,EAAEI,QADV;AAEE9B,UAAAA,IAAI,EAAE6B;AAFR,SALI,CAAN;AAUD,OAlBD;AAmBD,KA/ED;;AAiFA/B,IAAAA,OAAO,CAAC0B,OAAR,CAAgBnB,UAAhB;AACD,GAjGD;;AAmGA,QAAM0B,eAAe,GAAG,CAACvC,QAAD,EAAWwC,GAAG,GAAG,IAAjB,KAA0B;AAChD,QAAIvC,eAAJ;;AACA,QAAI,CAACD,QAAL,EAAe;AACb,YAAMyC,UAAU,GAAGvE,OAAO,CAACwE,WAAR,EAAnB;;AACA,UAAI,OAAOD,UAAP,KAAsB,QAAtB,IAAkCA,UAAU,CAACE,QAAX,CAAoB,GAApB,CAAtC,EAAgE;AAC9D1C,QAAAA,eAAe,GAAGwC,UAAU,CAAC1F,OAAX,CAAmB,QAAnB,EAA8B,IAAGyF,GAAI,EAArC,CAAlB;AACD,OAFD,MAEO;AACLvC,QAAAA,eAAe,GAAI,SAAQuC,GAAI,EAA/B;AACD;AACF;;AAED,WAAO;AACLvC,MAAAA,eADK;AAELD,MAAAA;AAFK,KAAP;AAID,GAfD;;AAiBA,MAAIpB,aAAJ,EAAmB;AACjB,UAAMgE,YAAY,GAAGL,eAAe,CAACrD,wBAAD,EAA2B,gBAA3B,CAApC;AACAjB,IAAAA,KAAK,CAAC4E,mBAAN,CAA0B,SAA1B,EAAqC,CAACtC,GAAD,EAAMF,aAAN,KAAwB;AAC3D,UAAI,CAACE,GAAG,CAACuC,WAAJ,CAAgBC,IAAhB,EAAL,EAA6B;AAC3B;AACD;;AACDhD,MAAAA,WAAW,CAAC;AACVK,QAAAA,MAAM,EAAG,IAAGG,GAAG,CAACuC,WAAY,GADlB;AAEVzC,QAAAA,aAFU;AAGV,WAAGuC;AAHO,OAAD,CAAX;AAKD,KATD;AAUD;;AACD,MAAI/D,WAAJ,EAAiB;AACf,UAAM+D,YAAY,GAAGL,eAAe,CAACpD,sBAAD,EAAyB,cAAzB,CAApC;AACAlB,IAAAA,KAAK,CAAC4E,mBAAN,CAA0B,OAA1B,EAAmC,CAACtC,GAAD,EAAMF,aAAN,KAAwB;AACzD,UAAI,CAACE,GAAG,CAACyC,OAAL,IAAgB,CAACzC,GAAG,CAACyC,OAAJ,CAAYD,IAAZ,EAArB,EAAyC;AACvC;AACD;;AACDhD,MAAAA,WAAW,CAAC;AACVK,QAAAA,MAAM,EAAG,IAAGG,GAAG,CAACyC,OAAQ,GADd;AAEV3C,QAAAA,aAFU;AAGV,WAAGuC;AAHO,OAAD,CAAX;AAKD,KATD;AAUD;;AACD,MAAI9D,eAAJ,EAAqB;AACnB,UAAM8D,YAAY,GAAGL,eAAe,CAACnD,0BAAD,EAA6B,kBAA7B,CAApC;AACAnB,IAAAA,KAAK,CAAC4E,mBAAN,CAA0B,UAA1B,EAAsC,CAACtC,GAAD,EAAMF,aAAN,KAAwB;AAC5D,UAAI,CAACE,GAAG,CAACyC,OAAL,IAAgB,CAACzC,GAAG,CAACyC,OAAJ,CAAYD,IAAZ,EAArB,EAAyC;AACvC;AACD;;AACDhD,MAAAA,WAAW,CAAC;AACVK,QAAAA,MAAM,EAAG,IAAGG,GAAG,CAACyC,OAAQ,GADd;AAEV3C,QAAAA,aAFU;AAGV,WAAGuC;AAHO,OAAD,CAAX;AAKD,KATD;AAUD;;AAED,QAAMK,OAAO,GAAGhF,KAAK,CAACiF,mBAAN,CAA0B;AAACD,IAAAA,OAAO,EAAE;AAAV,GAA1B,CAAhB;;AACA,MAAI,CAAChF,KAAK,CAACkF,MAAN,CAAaF,OAAb,CAAL,EAA4B;AAC1B;AACD;;AAED,QAAMG,oBAAoB,GAAGb,eAAe,CAACtD,gBAAD,CAA5C;AAEAhB,EAAAA,KAAK,CAAC4E,mBAAN,CAA0B,SAA1B,EAAqC,CAACtC,GAAD,EAAMF,aAAN,KAAwB;AAC3D,QAAID,MAAM,GAAGG,GAAG,CAACuC,WAAjB;AACA,UAAM5F,KAAK,GAAGkD,MAAM,CAAClD,KAAP,CAAaN,eAAb,CAAd;;AAEA,QAAI8C,eAAe,KAAK,CAACxC,KAAD,IAAU,CAACA,KAAK,CAAC,CAAD,CAAL,CAAS6F,IAAT,EAAhB,CAAnB,EAAqD;AACnD/E,MAAAA,MAAM,CAAC,mCAAD,EAAsC,IAAtC,EAA4CuC,GAA5C,CAAN;AACD,KAN0D,CAQ3D;;;AACAH,IAAAA,MAAM,GAAGA,MAAM,CAACrD,OAAP,CAAeH,eAAf,EAAgC,EAAhC,CAAT;;AAEA,QAAI8B,gBAAgB,IAAI,CAACA,gBAAgB,CAAC2E,IAAjB,CAAsBjD,MAAtB,CAArB,IACFzB,sBAAsB,IAAIA,sBAAsB,CAAC0E,IAAvB,CAA4BjD,MAA5B,CAD5B,EAEE;AACA;AACD;;AAED,UAAME,OAAO,GAAG,EAAhB;AACA,QAAIH,QAAQ,GAAG,KAAf;;AACA,QAAIzB,gBAAJ,EAAsB;AACpB,UAAIgC,kBAAkB,GAAG,CAAzB;AACA,UAAIC,mBAAmB,GAAG,CAA1B;AAEA,UAAI2C,aAAa,GAAG,CAApB;AACA,UAAIC,eAAe,GAAG,CAAtB;AAEA,UAAIC,WAAJ;AACA9E,MAAAA,gBAAgB,CAAC+E,SAAjB,GAA6B,CAA7B;;AACA,aAAO,CAACD,WAAW,GAAG9E,gBAAgB,CAACgF,IAAjB,CAAsBtD,MAAtB,CAAf,MAAkD,IAAzD,EAA+D;AAC7D,cAAM;AAACuD,UAAAA,KAAD;AAAQ,aAAGC,EAAX;AAAe,aAAGC;AAAlB,YAAwBL,WAA9B,CAD6D,CAG7D;;AACA,cAAMM,QAAQ,GAAG1D,MAAM,CAAC2D,KAAP,CAAaT,aAAb,EAA4BK,KAA5B,CAAjB;AAEA,cAAMK,aAAa,GAAGhH,UAAU,CAAC8G,QAAD,EAAW,IAAX,CAAhC;AAEA,cAAMG,QAAQ,GAAGD,aAAa,GAC5BF,QAAQ,CAACC,KAAT,CAAeD,QAAQ,CAACI,WAAT,CAAqB,IAArB,IAA6B,CAA5C,EAA+C9G,MADnB,GAE5B0G,QAAQ,CAAC1G,MAFX;AAIA,YAAI+G,YAAJ;AACA,YAAIC,qBAAJ;;AACA,YAAIP,EAAJ,EAAQ;AACN,gBAAMQ,GAAG,GAAGT,EAAE,CAACU,OAAH,CAAWT,EAAX,CAAZ;AACAM,UAAAA,YAAY,GAAGP,EAAE,CAACG,KAAH,CAAS,CAAT,EAAYM,GAAZ,CAAf;AACAD,UAAAA,qBAAqB,GAAGpH,UAAU,CAACmH,YAAD,EAAe,IAAf,CAAlC;AACD,SAJD,MAIO;AACLA,UAAAA,YAAY,GAAG,EAAf;AACAC,UAAAA,qBAAqB,GAAG,CAAxB;AACD;;AAEDzD,QAAAA,mBAAmB,IAAI4C,eAAe,GAAGS,aAAlB,GAAkCI,qBAAzD,CAvB6D,CAyB7D;;AACA,YAAIA,qBAAJ,EAA2B;AACzB,gBAAMG,eAAe,GAAGJ,YAAY,CAACJ,KAAb,CAAmBI,YAAY,CAACD,WAAb,CAAyB,IAAzB,IAAiC,CAApD,EAAuD9G,MAA/E;AAEAsD,UAAAA,kBAAkB,IAAI6D,eAAtB;AACD,SAJD,MAIO;AACL7D,UAAAA,kBAAkB,IAAIuD,QAAQ,GAAGE,YAAY,CAAC/G,MAA9C;AACD;;AAED,cAAMwD,MAAM,GAAGiD,EAAE,IAAID,EAArB;AACAtD,QAAAA,OAAO,CAACG,IAAR,CAAa;AACXC,UAAAA,kBADW;AAEXC,UAAAA,mBAFW;AAGXC,UAAAA;AAHW,SAAb;AAKA0C,QAAAA,aAAa,GAAG5E,gBAAgB,CAAC+E,SAAjC;AACAF,QAAAA,eAAe,GAAGvG,UAAU,CAAC4D,MAAD,EAAS,IAAT,CAA5B;;AACA,YAAI,CAAClC,gBAAgB,CAAC8F,MAAtB,EAA8B;AAC5B;AACD;AACF;;AACDrE,MAAAA,QAAQ,GAAG,IAAX;AACD;;AAEDJ,IAAAA,WAAW,CAAC;AACVG,MAAAA,KAAK,EAAEN,OADG;AAEVO,MAAAA,QAFU;AAGVC,MAAAA,MAHU;AAIVE,MAAAA,OAJU;AAKVC,MAAAA,GALU;AAMVF,MAAAA,aANU;AAOV,SAAG+C;AAPO,KAAD,CAAX;AASD,GAtFD;AAuFD,CA1Sc,EA0SZ;AACDqB,EAAAA,gBAAgB,EAAE,IADjB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJ7B,MAAAA,WAAW,EAAE,yEADT;AAEJ8B,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVvF,QAAAA,iBAAiB,EAAE;AACjBwD,UAAAA,OAAO,EAAE,IADQ;AAEjBgC,UAAAA,IAAI,EAAE;AAFW,SADT;AAKV1F,QAAAA,UAAU,EAAE;AACV0F,UAAAA,IAAI,EAAE;AADI,SALF;AAQVtF,QAAAA,eAAe,EAAE;AACfsD,UAAAA,OAAO,EAAE,KADM;AAEfgC,UAAAA,IAAI,EAAE;AAFS,SARP;AAYVpG,QAAAA,aAAa,EAAE;AACboE,UAAAA,OAAO,EAAE,KADI;AAEbgC,UAAAA,IAAI,EAAE;AAFO,SAZL;AAgBVhG,QAAAA,aAAa,EAAE;AACbgE,UAAAA,OAAO,EAAE,IADI;AAEbgC,UAAAA,IAAI,EAAE;AAFO,SAhBL;AAoBVnG,QAAAA,WAAW,EAAE;AACXmE,UAAAA,OAAO,EAAE,KADE;AAEXgC,UAAAA,IAAI,EAAE;AAFK,SApBH;AAwBVlG,QAAAA,eAAe,EAAE;AACfkE,UAAAA,OAAO,EAAE,KADM;AAEfgC,UAAAA,IAAI,EAAE;AAFS,SAxBP;AA4BVzF,QAAAA,UAAU,EAAE;AACVyF,UAAAA,IAAI,EAAE;AADI,SA5BF;AA+BVtG,QAAAA,gBAAgB,EAAE;AAChBsG,UAAAA,IAAI,EAAE;AADU,SA/BR;AAkCV/F,QAAAA,gBAAgB,EAAE;AAChB+F,UAAAA,IAAI,EAAE;AADU,SAlCR;AAqCV9F,QAAAA,wBAAwB,EAAE;AACxB8F,UAAAA,IAAI,EAAE;AADkB,SArChB;AAwCV7F,QAAAA,sBAAsB,EAAE;AACtB6F,UAAAA,IAAI,EAAE;AADgB,SAxCd;AA2CV5F,QAAAA,0BAA0B,EAAE;AAC1B4F,UAAAA,IAAI,EAAE;AADoB,SA3ClB;AA8CVjG,QAAAA,qBAAqB,EAAE;AACrBiE,UAAAA,OAAO,EAAE,KADY;AAErBgC,UAAAA,IAAI,EAAE;AAFe,SA9Cb;AAkDV3F,QAAAA,YAAY,EAAE;AACZ2D,UAAAA,OAAO,EAAE,CADG;AAEZgC,UAAAA,IAAI,EAAE;AAFM,SAlDJ;AAsDVrG,QAAAA,sBAAsB,EAAE;AACtBqG,UAAAA,IAAI,EAAE;AADgB,SAtDd;AAyDVvF,QAAAA,6BAA6B,EAAE;AAC7BuD,UAAAA,OAAO,EAAE,IADoB;AAE7BgC,UAAAA,IAAI,EAAE;AAFuB;AAzDrB,OAFd;AAgEEA,MAAAA,IAAI,EAAE;AAhER,KADM,CALJ;AAyEJA,IAAAA,IAAI,EAAE;AAzEF,GAFL;AA6EDC,EAAAA,MAAM,EAAE;AA7EP,CA1SY,C","sourcesContent":["// Todo: When peerDeps bump to ESLint 7, see about replacing `CLIEngine`\n// with non-deprecated `ESLint` class:\n// https://github.com/eslint/eslint/blob/master/docs/user-guide/migrating-to-7.0.0.md#-the-cliengine-class-has-been-deprecated\nimport {\n CLIEngine,\n} from 'eslint';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst zeroBasedLineIndexAdjust = -1;\nconst likelyNestedJSDocIndentSpace = 1;\nconst preTagSpaceLength = 1;\n\n// If a space is present, we should ignore it\nconst firstLinePrefixLength = preTagSpaceLength;\n\nconst hasCaptionRegex = /^\\s*<caption>(.*?)<\\/caption>/u;\n\nconst escapeStringRegexp = (str) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/gu, '\\\\$&');\n};\nconst countChars = (str, ch) => {\n return (str.match(new RegExp(escapeStringRegexp(ch), 'gu')) || []).length;\n};\n\nconst getRegexFromString = (regexString) => {\n const match = regexString.match(/^\\/(.*)\\/([gimyus]*)$/u);\n let flags = 'u';\n let regex = regexString;\n if (match) {\n [, regex, flags] = match;\n if (!flags) {\n flags = 'u';\n }\n const uniqueFlags = [...new Set(flags)];\n flags = uniqueFlags.join('');\n }\n\n return new RegExp(regex, flags);\n};\n\nconst defaultMdRules = {\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n 'jsdoc/require-file-overview': 0,\n\n // The end of a multiline comment would end the comment the example is in.\n 'jsdoc/require-jsdoc': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n};\n\nconst defaultExpressionRules = {\n ...defaultMdRules,\n 'no-unused-expressions': 'off',\n quotes: ['error', 'double'],\n semi: ['error', 'never'],\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n context,\n globalState,\n}) => {\n if (!globalState.has('checkExamples-matchingFileName')) {\n globalState.set('checkExamples-matchingFileName', new Map());\n }\n const matchingFileNameMap = globalState.get('checkExamples-matchingFileName');\n\n const options = context.options[0] || {};\n let {\n exampleCodeRegex = null,\n rejectExampleCodeRegex = null,\n } = options;\n const {\n checkDefaults = false,\n checkParams = false,\n checkProperties = false,\n noDefaultExampleRules = false,\n checkEslintrc = true,\n matchingFileName = null,\n matchingFileNameDefaults = null,\n matchingFileNameParams = null,\n matchingFileNameProperties = null,\n paddedIndent = 0,\n baseConfig = {},\n configFile,\n allowInlineConfig = true,\n reportUnusedDisableDirectives = true,\n captionRequired = false,\n } = options;\n\n // Make this configurable?\n const rulePaths = [];\n\n const mdRules = noDefaultExampleRules ? undefined : defaultMdRules;\n\n const expressionRules = noDefaultExampleRules ? undefined : defaultExpressionRules;\n\n if (exampleCodeRegex) {\n exampleCodeRegex = getRegexFromString(exampleCodeRegex);\n }\n if (rejectExampleCodeRegex) {\n rejectExampleCodeRegex = getRegexFromString(rejectExampleCodeRegex);\n }\n\n const checkSource = ({\n filename, defaultFileName,\n rules = expressionRules,\n skipInit, source, targetTagName, sources = [], tag = {line: 0},\n }) => {\n if (!skipInit) {\n sources.push({\n nonJSPrefacingCols: 0,\n nonJSPrefacingLines: 0,\n string: source,\n });\n }\n\n // Todo: Make fixable\n // Todo: Fix whitespace indent\n const checkRules = function ({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n }) {\n const cliConfig = {\n allowInlineConfig,\n baseConfig,\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: checkEslintrc,\n };\n const cliConfigStr = JSON.stringify(cliConfig);\n\n const src = paddedIndent ?\n string.replace(new RegExp(`(^|\\n) {${paddedIndent}}(?!$)`, 'gu'), '\\n') :\n string;\n\n // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api\n const fileNameMapKey = filename ?\n 'a' + cliConfigStr + filename :\n 'b' + cliConfigStr + defaultFileName;\n const file = filename || defaultFileName;\n let cliFile;\n if (matchingFileNameMap.has(fileNameMapKey)) {\n cliFile = matchingFileNameMap.get(fileNameMapKey);\n } else {\n const cli = new CLIEngine(cliConfig);\n let config;\n if (filename || checkEslintrc) {\n config = cli.getConfigForFile(file);\n }\n\n // We need a new instance to ensure that the rules that may only\n // be available to `file` (if it has its own `.eslintrc`),\n // will be defined.\n cliFile = new CLIEngine({\n allowInlineConfig,\n baseConfig: {\n ...baseConfig,\n ...config,\n },\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: false,\n });\n matchingFileNameMap.set(fileNameMapKey, cliFile);\n }\n\n const {results: [{messages}]} =\n cliFile.executeOnText(src);\n\n // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`\n const codeStartLine = tag.line + nonJSPrefacingLines;\n const codeStartCol = likelyNestedJSDocIndentSpace;\n\n messages.forEach(({message, line, column, severity, ruleId}) => {\n const startLine = codeStartLine + line + zeroBasedLineIndexAdjust;\n const startCol = codeStartCol + (\n\n // This might not work for line 0, but line 0 is unlikely for examples\n line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength\n ) + column;\n\n report(\n '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n message,\n null,\n {\n column: startCol,\n line: startLine,\n },\n );\n });\n };\n\n sources.forEach(checkRules);\n };\n\n const getFilenameInfo = (filename, ext = 'md') => {\n let defaultFileName;\n if (!filename) {\n const jsFileName = context.getFilename();\n if (typeof jsFileName === 'string' && jsFileName.includes('.')) {\n defaultFileName = jsFileName.replace(/\\..*?$/, `.${ext}`);\n } else {\n defaultFileName = `dummy.${ext}`;\n }\n }\n\n return {\n defaultFileName,\n filename,\n };\n };\n\n if (checkDefaults) {\n const filenameInfo = getFilenameInfo(matchingFileNameDefaults, 'jsdoc-defaults');\n utils.forEachPreferredTag('default', (tag, targetTagName) => {\n if (!tag.description.trim()) {\n return;\n }\n checkSource({\n source: `(${tag.description})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n if (checkParams) {\n const filenameInfo = getFilenameInfo(matchingFileNameParams, 'jsdoc-params');\n utils.forEachPreferredTag('param', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n if (checkProperties) {\n const filenameInfo = getFilenameInfo(matchingFileNameProperties, 'jsdoc-properties');\n utils.forEachPreferredTag('property', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n const tagName = utils.getPreferredTagName({tagName: 'example'});\n if (!utils.hasTag(tagName)) {\n return;\n }\n\n const matchingFilenameInfo = getFilenameInfo(matchingFileName);\n\n utils.forEachPreferredTag('example', (tag, targetTagName) => {\n let source = tag.description;\n const match = source.match(hasCaptionRegex);\n\n if (captionRequired && (!match || !match[1].trim())) {\n report('Caption is expected for examples.', null, tag);\n }\n\n // If we allow newlines in hasCaptionRegex, we should add to line count\n source = source.replace(hasCaptionRegex, '');\n\n if (exampleCodeRegex && !exampleCodeRegex.test(source) ||\n rejectExampleCodeRegex && rejectExampleCodeRegex.test(source)\n ) {\n return;\n }\n\n const sources = [];\n let skipInit = false;\n if (exampleCodeRegex) {\n let nonJSPrefacingCols = 0;\n let nonJSPrefacingLines = 0;\n\n let startingIndex = 0;\n let lastStringCount = 0;\n\n let exampleCode;\n exampleCodeRegex.lastIndex = 0;\n while ((exampleCode = exampleCodeRegex.exec(source)) !== null) {\n const {index, 0: n0, 1: n1} = exampleCode;\n\n // Count anything preceding user regex match (can affect line numbering)\n const preMatch = source.slice(startingIndex, index);\n\n const preMatchLines = countChars(preMatch, '\\n');\n\n const colDelta = preMatchLines ?\n preMatch.slice(preMatch.lastIndexOf('\\n') + 1).length :\n preMatch.length;\n\n let nonJSPreface;\n let nonJSPrefaceLineCount;\n if (n1) {\n const idx = n0.indexOf(n1);\n nonJSPreface = n0.slice(0, idx);\n nonJSPrefaceLineCount = countChars(nonJSPreface, '\\n');\n } else {\n nonJSPreface = '';\n nonJSPrefaceLineCount = 0;\n }\n\n nonJSPrefacingLines += lastStringCount + preMatchLines + nonJSPrefaceLineCount;\n\n // Ignore `preMatch` delta if newlines here\n if (nonJSPrefaceLineCount) {\n const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\\n') + 1).length;\n\n nonJSPrefacingCols += charsInLastLine;\n } else {\n nonJSPrefacingCols += colDelta + nonJSPreface.length;\n }\n\n const string = n1 || n0;\n sources.push({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n });\n startingIndex = exampleCodeRegex.lastIndex;\n lastStringCount = countChars(string, '\\n');\n if (!exampleCodeRegex.global) {\n break;\n }\n }\n skipInit = true;\n }\n\n checkSource({\n rules: mdRules,\n skipInit,\n source,\n sources,\n tag,\n targetTagName,\n ...matchingFilenameInfo,\n });\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Ensures that (JavaScript) examples within JSDoc adhere to ESLint rules.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-examples',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowInlineConfig: {\n default: true,\n type: 'boolean',\n },\n baseConfig: {\n type: 'object',\n },\n captionRequired: {\n default: false,\n type: 'boolean',\n },\n checkDefaults: {\n default: false,\n type: 'boolean',\n },\n checkEslintrc: {\n default: true,\n type: 'boolean',\n },\n checkParams: {\n default: false,\n type: 'boolean',\n },\n checkProperties: {\n default: false,\n type: 'boolean',\n },\n configFile: {\n type: 'string',\n },\n exampleCodeRegex: {\n type: 'string',\n },\n matchingFileName: {\n type: 'string',\n },\n matchingFileNameDefaults: {\n type: 'string',\n },\n matchingFileNameParams: {\n type: 'string',\n },\n matchingFileNameProperties: {\n type: 'string',\n },\n noDefaultExampleRules: {\n default: false,\n type: 'boolean',\n },\n paddedIndent: {\n default: 0,\n type: 'integer',\n },\n rejectExampleCodeRegex: {\n type: 'string',\n },\n reportUnusedDisableDirectives: {\n default: true,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n noTrim: true,\n});\n"],"file":"checkExamples.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/rules/checkExamples.js"],"names":["zeroBasedLineIndexAdjust","likelyNestedJSDocIndentSpace","preTagSpaceLength","firstLinePrefixLength","hasCaptionRegex","escapeStringRegexp","str","replace","countChars","ch","match","RegExp","length","getRegexFromString","regexString","flags","regex","uniqueFlags","Set","join","defaultMdRules","defaultExpressionRules","quotes","semi","strict","report","utils","context","globalState","has","set","Map","matchingFileNameMap","get","options","exampleCodeRegex","rejectExampleCodeRegex","checkDefaults","checkParams","checkProperties","noDefaultExampleRules","checkEslintrc","matchingFileName","matchingFileNameDefaults","matchingFileNameParams","matchingFileNameProperties","paddedIndent","baseConfig","configFile","allowInlineConfig","reportUnusedDisableDirectives","captionRequired","rulePaths","mdRules","undefined","expressionRules","checkSource","filename","defaultFileName","rules","skipInit","source","targetTagName","sources","tag","line","push","nonJSPrefacingCols","nonJSPrefacingLines","string","checkRules","cliConfig","useEslintrc","cliConfigStr","JSON","stringify","src","fileNameMapKey","file","cliFile","cli","CLIEngine","config","getConfigForFile","results","messages","executeOnText","codeStartLine","codeStartCol","forEach","message","column","severity","ruleId","startLine","startCol","getFilenameInfo","ext","jsFileName","getFilename","includes","filenameInfo","forEachPreferredTag","description","trim","default","tagName","getPreferredTagName","hasTag","matchingFilenameInfo","test","startingIndex","lastStringCount","exampleCode","lastIndex","exec","index","n0","n1","preMatch","slice","preMatchLines","colDelta","lastIndexOf","nonJSPreface","nonJSPrefaceLineCount","idx","indexOf","charsInLastLine","global","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","type","noTrim"],"mappings":"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","sourcesContent":["// Todo: When peerDeps bump to ESLint 7, see about replacing `CLIEngine`\n// with non-deprecated `ESLint` class:\n// https://github.com/eslint/eslint/blob/master/docs/user-guide/migrating-to-7.0.0.md#-the-cliengine-class-has-been-deprecated\nimport {\n CLIEngine,\n} from 'eslint';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst zeroBasedLineIndexAdjust = -1;\nconst likelyNestedJSDocIndentSpace = 1;\nconst preTagSpaceLength = 1;\n\n// If a space is present, we should ignore it\nconst firstLinePrefixLength = preTagSpaceLength;\n\nconst hasCaptionRegex = /^\\s*<caption>(.*?)<\\/caption>/u;\n\nconst escapeStringRegexp = (str) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/gu, '\\\\$&');\n};\nconst countChars = (str, ch) => {\n return (str.match(new RegExp(escapeStringRegexp(ch), 'gu')) || []).length;\n};\n\nconst getRegexFromString = (regexString) => {\n const match = regexString.match(/^\\/(.*)\\/([gimyus]*)$/u);\n let flags = 'u';\n let regex = regexString;\n if (match) {\n [, regex, flags] = match;\n if (!flags) {\n flags = 'u';\n }\n const uniqueFlags = [...new Set(flags)];\n flags = uniqueFlags.join('');\n }\n\n return new RegExp(regex, flags);\n};\n\nconst defaultMdRules = {\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n 'jsdoc/require-file-overview': 0,\n\n // The end of a multiline comment would end the comment the example is in.\n 'jsdoc/require-jsdoc': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n};\n\nconst defaultExpressionRules = {\n ...defaultMdRules,\n 'no-unused-expressions': 'off',\n quotes: ['error', 'double'],\n semi: ['error', 'never'],\n strict: 'off',\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n context,\n globalState,\n}) => {\n if (!globalState.has('checkExamples-matchingFileName')) {\n globalState.set('checkExamples-matchingFileName', new Map());\n }\n const matchingFileNameMap = globalState.get('checkExamples-matchingFileName');\n\n const options = context.options[0] || {};\n let {\n exampleCodeRegex = null,\n rejectExampleCodeRegex = null,\n } = options;\n const {\n checkDefaults = false,\n checkParams = false,\n checkProperties = false,\n noDefaultExampleRules = false,\n checkEslintrc = true,\n matchingFileName = null,\n matchingFileNameDefaults = null,\n matchingFileNameParams = null,\n matchingFileNameProperties = null,\n paddedIndent = 0,\n baseConfig = {},\n configFile,\n allowInlineConfig = true,\n reportUnusedDisableDirectives = true,\n captionRequired = false,\n } = options;\n\n // Make this configurable?\n const rulePaths = [];\n\n const mdRules = noDefaultExampleRules ? undefined : defaultMdRules;\n\n const expressionRules = noDefaultExampleRules ? undefined : defaultExpressionRules;\n\n if (exampleCodeRegex) {\n exampleCodeRegex = getRegexFromString(exampleCodeRegex);\n }\n if (rejectExampleCodeRegex) {\n rejectExampleCodeRegex = getRegexFromString(rejectExampleCodeRegex);\n }\n\n const checkSource = ({\n filename, defaultFileName,\n rules = expressionRules,\n skipInit, source, targetTagName, sources = [], tag = {line: 0},\n }) => {\n if (!skipInit) {\n sources.push({\n nonJSPrefacingCols: 0,\n nonJSPrefacingLines: 0,\n string: source,\n });\n }\n\n // Todo: Make fixable\n // Todo: Fix whitespace indent\n const checkRules = function ({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n }) {\n const cliConfig = {\n allowInlineConfig,\n baseConfig,\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: checkEslintrc,\n };\n const cliConfigStr = JSON.stringify(cliConfig);\n\n const src = paddedIndent ?\n string.replace(new RegExp(`(^|\\n) {${paddedIndent}}(?!$)`, 'gu'), '\\n') :\n string;\n\n // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api\n const fileNameMapKey = filename ?\n 'a' + cliConfigStr + filename :\n 'b' + cliConfigStr + defaultFileName;\n const file = filename || defaultFileName;\n let cliFile;\n if (matchingFileNameMap.has(fileNameMapKey)) {\n cliFile = matchingFileNameMap.get(fileNameMapKey);\n } else {\n const cli = new CLIEngine(cliConfig);\n let config;\n if (filename || checkEslintrc) {\n config = cli.getConfigForFile(file);\n }\n\n // We need a new instance to ensure that the rules that may only\n // be available to `file` (if it has its own `.eslintrc`),\n // will be defined.\n cliFile = new CLIEngine({\n allowInlineConfig,\n baseConfig: {\n ...baseConfig,\n ...config,\n },\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: false,\n });\n matchingFileNameMap.set(fileNameMapKey, cliFile);\n }\n\n const {results: [{messages}]} =\n cliFile.executeOnText(src);\n\n // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`\n const codeStartLine = tag.line + nonJSPrefacingLines;\n const codeStartCol = likelyNestedJSDocIndentSpace;\n\n messages.forEach(({message, line, column, severity, ruleId}) => {\n const startLine = codeStartLine + line + zeroBasedLineIndexAdjust;\n const startCol = codeStartCol + (\n\n // This might not work for line 0, but line 0 is unlikely for examples\n line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength\n ) + column;\n\n report(\n '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n message,\n null,\n {\n column: startCol,\n line: startLine,\n },\n );\n });\n };\n\n sources.forEach(checkRules);\n };\n\n const getFilenameInfo = (filename, ext = 'md') => {\n let defaultFileName;\n if (!filename) {\n const jsFileName = context.getFilename();\n if (typeof jsFileName === 'string' && jsFileName.includes('.')) {\n defaultFileName = jsFileName.replace(/\\..*?$/, `.${ext}`);\n } else {\n defaultFileName = `dummy.${ext}`;\n }\n }\n\n return {\n defaultFileName,\n filename,\n };\n };\n\n if (checkDefaults) {\n const filenameInfo = getFilenameInfo(matchingFileNameDefaults, 'jsdoc-defaults');\n utils.forEachPreferredTag('default', (tag, targetTagName) => {\n if (!tag.description.trim()) {\n return;\n }\n checkSource({\n source: `(${tag.description})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n if (checkParams) {\n const filenameInfo = getFilenameInfo(matchingFileNameParams, 'jsdoc-params');\n utils.forEachPreferredTag('param', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n if (checkProperties) {\n const filenameInfo = getFilenameInfo(matchingFileNameProperties, 'jsdoc-properties');\n utils.forEachPreferredTag('property', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n const tagName = utils.getPreferredTagName({tagName: 'example'});\n if (!utils.hasTag(tagName)) {\n return;\n }\n\n const matchingFilenameInfo = getFilenameInfo(matchingFileName);\n\n utils.forEachPreferredTag('example', (tag, targetTagName) => {\n let source = tag.description;\n const match = source.match(hasCaptionRegex);\n\n if (captionRequired && (!match || !match[1].trim())) {\n report('Caption is expected for examples.', null, tag);\n }\n\n // If we allow newlines in hasCaptionRegex, we should add to line count\n source = source.replace(hasCaptionRegex, '');\n\n if (exampleCodeRegex && !exampleCodeRegex.test(source) ||\n rejectExampleCodeRegex && rejectExampleCodeRegex.test(source)\n ) {\n return;\n }\n\n const sources = [];\n let skipInit = false;\n if (exampleCodeRegex) {\n let nonJSPrefacingCols = 0;\n let nonJSPrefacingLines = 0;\n\n let startingIndex = 0;\n let lastStringCount = 0;\n\n let exampleCode;\n exampleCodeRegex.lastIndex = 0;\n while ((exampleCode = exampleCodeRegex.exec(source)) !== null) {\n const {index, 0: n0, 1: n1} = exampleCode;\n\n // Count anything preceding user regex match (can affect line numbering)\n const preMatch = source.slice(startingIndex, index);\n\n const preMatchLines = countChars(preMatch, '\\n');\n\n const colDelta = preMatchLines ?\n preMatch.slice(preMatch.lastIndexOf('\\n') + 1).length :\n preMatch.length;\n\n let nonJSPreface;\n let nonJSPrefaceLineCount;\n if (n1) {\n const idx = n0.indexOf(n1);\n nonJSPreface = n0.slice(0, idx);\n nonJSPrefaceLineCount = countChars(nonJSPreface, '\\n');\n } else {\n nonJSPreface = '';\n nonJSPrefaceLineCount = 0;\n }\n\n nonJSPrefacingLines += lastStringCount + preMatchLines + nonJSPrefaceLineCount;\n\n // Ignore `preMatch` delta if newlines here\n if (nonJSPrefaceLineCount) {\n const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\\n') + 1).length;\n\n nonJSPrefacingCols += charsInLastLine;\n } else {\n nonJSPrefacingCols += colDelta + nonJSPreface.length;\n }\n\n const string = n1 || n0;\n sources.push({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n });\n startingIndex = exampleCodeRegex.lastIndex;\n lastStringCount = countChars(string, '\\n');\n if (!exampleCodeRegex.global) {\n break;\n }\n }\n skipInit = true;\n }\n\n checkSource({\n rules: mdRules,\n skipInit,\n source,\n sources,\n tag,\n targetTagName,\n ...matchingFilenameInfo,\n });\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Ensures that (JavaScript) examples within JSDoc adhere to ESLint rules.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-examples',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowInlineConfig: {\n default: true,\n type: 'boolean',\n },\n baseConfig: {\n type: 'object',\n },\n captionRequired: {\n default: false,\n type: 'boolean',\n },\n checkDefaults: {\n default: false,\n type: 'boolean',\n },\n checkEslintrc: {\n default: true,\n type: 'boolean',\n },\n checkParams: {\n default: false,\n type: 'boolean',\n },\n checkProperties: {\n default: false,\n type: 'boolean',\n },\n configFile: {\n type: 'string',\n },\n exampleCodeRegex: {\n type: 'string',\n },\n matchingFileName: {\n type: 'string',\n },\n matchingFileNameDefaults: {\n type: 'string',\n },\n matchingFileNameParams: {\n type: 'string',\n },\n matchingFileNameProperties: {\n type: 'string',\n },\n noDefaultExampleRules: {\n default: false,\n type: 'boolean',\n },\n paddedIndent: {\n default: 0,\n type: 'integer',\n },\n rejectExampleCodeRegex: {\n type: 'string',\n },\n reportUnusedDisableDirectives: {\n default: true,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n noTrim: true,\n});\n"],"file":"checkExamples.js"}
|
package/package.json
CHANGED