eslint-plugin-jsdoc 37.8.2 → 37.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1259,33 +1259,33 @@ function quux () {}
1259
1259
  // Message: @example error (semi): Missing semicolon.
1260
1260
 
1261
1261
  /**
1262
- * @example const i = 5;
1263
- * quux2()
1262
+ * @example const j = 5;
1263
+ * quux2();
1264
1264
  */
1265
1265
  function quux2 () {
1266
1266
 
1267
1267
  }
1268
1268
  // "jsdoc/check-examples": ["error"|"warn", {"matchingFileName":"../../jsdocUtils.js"}]
1269
- // Message: @example warning (id-length): Identifier name 'i' is too short (< 2).
1269
+ // Message: @example warning (id-length): Identifier name 'j' is too short (< 2).
1270
1270
 
1271
1271
  /**
1272
- * @example const i = 5;
1273
- * quux2()
1272
+ * @example const k = 5;
1273
+ * quux2();
1274
1274
  */
1275
1275
  function quux2 () {
1276
1276
 
1277
1277
  }
1278
1278
  // "jsdoc/check-examples": ["error"|"warn", {"configFile":".eslintrc.json","matchingFileName":"../../jsdocUtils.js"}]
1279
- // Message: @example warning (id-length): Identifier name 'i' is too short (< 2).
1279
+ // Message: @example warning (id-length): Identifier name 'k' is too short (< 2).
1280
1280
 
1281
1281
  /**
1282
- * @example const i = 5;
1283
- * quux2()
1282
+ * @example const m = 5;
1283
+ * quux2();
1284
1284
  */
1285
1285
  function quux2 () {
1286
1286
 
1287
1287
  }
1288
- // Message: @example warning (id-length): Identifier name 'i' is too short (< 2).
1288
+ // Message: @example warning (id-length): Identifier name 'm' is too short (< 2).
1289
1289
 
1290
1290
  /**
1291
1291
  * @example const i = 5;
@@ -5818,6 +5818,9 @@ This rule checks the values for a handful of tags:
5818
5818
  5. `@variation` - If `numericOnlyVariation` is set, will checks that there
5819
5819
  is a value present, and that it is an integer (otherwise, jsdoc allows any
5820
5820
  value).
5821
+ 6. `@kind` - Insists that it be one of the allowed values: 'class',
5822
+ 'constant', 'event', 'external', 'file', 'function', 'member', 'mixin',
5823
+ 'module', 'namespace', 'typedef',
5821
5824
 
5822
5825
  <a name="eslint-plugin-jsdoc-rules-check-values-options-8"></a>
5823
5826
  #### Options
@@ -5857,7 +5860,7 @@ Whether to enable validation that `@variation` must be a number. Defaults to
5857
5860
  |||
5858
5861
  |---|---|
5859
5862
  |Context|everywhere|
5860
- |Tags|`@version`, `@since`, `@license`, `@author`, `@variation`|
5863
+ |Tags|`@version`, `@since`, `@kind`, `@license`, `@author`, `@variation`|
5861
5864
  |Recommended|true|
5862
5865
  |Options|`allowedAuthors`, `allowedLicenses`, `licensePattern`|
5863
5866
  |Settings|`tagNamePreference`|
@@ -5881,6 +5884,22 @@ function quux (foo) {
5881
5884
  }
5882
5885
  // Message: Invalid JSDoc @version: "3.1".
5883
5886
 
5887
+ /**
5888
+ * @kind
5889
+ */
5890
+ function quux (foo) {
5891
+
5892
+ }
5893
+ // Message: Missing JSDoc @kind value.
5894
+
5895
+ /**
5896
+ * @kind -3
5897
+ */
5898
+ function quux (foo) {
5899
+
5900
+ }
5901
+ // Message: Invalid JSDoc @kind: "-3"; must be one of: class, constant, event, external, file, function, member, mixin, module, namespace, typedef.
5902
+
5884
5903
  /**
5885
5904
  * @variation -3
5886
5905
  */
@@ -6108,6 +6127,13 @@ function quux (foo) {
6108
6127
  * @license MIT
6109
6128
  */
6110
6129
  'use strict';
6130
+
6131
+ /**
6132
+ * @kind function
6133
+ */
6134
+ function quux (foo) {
6135
+
6136
+ }
6111
6137
  ````
6112
6138
 
6113
6139
 
@@ -13,6 +13,8 @@ var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
16
+ const allowedKinds = new Set(['class', 'constant', 'event', 'external', 'file', 'function', 'member', 'mixin', 'module', 'namespace', 'typedef']);
17
+
16
18
  var _default = (0, _iterateJsdoc.default)(({
17
19
  utils,
18
20
  report,
@@ -34,6 +36,15 @@ var _default = (0, _iterateJsdoc.default)(({
34
36
  report(`Invalid JSDoc @${targetTagName}: "${utils.getTagDescription(jsdocParameter)}".`, null, jsdocParameter);
35
37
  }
36
38
  });
39
+ utils.forEachPreferredTag('kind', (jsdocParameter, targetTagName) => {
40
+ const kind = utils.getTagDescription(jsdocParameter).trim();
41
+
42
+ if (!kind) {
43
+ report(`Missing JSDoc @${targetTagName} value.`, null, jsdocParameter);
44
+ } else if (!allowedKinds.has(kind)) {
45
+ report(`Invalid JSDoc @${targetTagName}: "${utils.getTagDescription(jsdocParameter)}"; ` + `must be one of: ${[...allowedKinds].join(', ')}.`, null, jsdocParameter);
46
+ }
47
+ });
37
48
 
38
49
  if (numericOnlyVariation) {
39
50
  utils.forEachPreferredTag('variation', (jsdocParameter, targetTagName) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/checkValues.js"],"names":["utils","report","context","options","allowedLicenses","allowedAuthors","numericOnlyVariation","licensePattern","forEachPreferredTag","jsdocParameter","targetTagName","version","getTagDescription","trim","semver","valid","variation","Number","isInteger","licenseRegex","getRegexFromString","match","license","includes","join","author","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items","type","anyOf"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,KAD2B;AAE3BC,EAAAA,MAF2B;AAG3BC,EAAAA;AAH2B,CAAD,KAItB;AACJ,QAAMC,OAAO,GAAGD,OAAO,CAACC,OAAR,CAAgB,CAAhB,KAAsB,EAAtC;AACA,QAAM;AACJC,IAAAA,eAAe,GAAG,IADd;AAEJC,IAAAA,cAAc,GAAG,IAFb;AAGJC,IAAAA,oBAAoB,GAAG,KAHnB;AAIJC,IAAAA,cAAc,GAAG;AAJb,MAKFJ,OALJ;AAOAH,EAAAA,KAAK,CAACQ,mBAAN,CAA0B,SAA1B,EAAqC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACtE,UAAMC,OAAO,GAAGX,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCI,IAAxC,EAAhB;;AACA,QAAI,CAACF,OAAL,EAAc;AACZV,MAAAA,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;AAKD,KAND,MAMO,IAAI,CAACK,gBAAOC,KAAP,CAAaJ,OAAb,CAAL,EAA4B;AACjCV,MAAAA,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,CAAwC,IADzE,EAEJ,IAFI,EAGJA,cAHI,CAAN;AAKD;AACF,GAfD;;AAgBA,MAAIH,oBAAJ,EAA0B;AACxBN,IAAAA,KAAK,CAACQ,mBAAN,CAA0B,WAA1B,EAAuC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACxE,YAAMM,SAAS,GAAGhB,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCI,IAAxC,EAAlB;;AACA,UAAI,CAACG,SAAL,EAAgB;AACdf,QAAAA,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;AAKD,OAND,MAMO,IACL,CAACQ,MAAM,CAACC,SAAP,CAAiBD,MAAM,CAACD,SAAD,CAAvB,CAAD,IACAC,MAAM,CAACD,SAAD,CAAN,IAAqB,CAFhB,EAGL;AACAf,QAAAA,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,CAAwC,IADzE,EAEJ,IAFI,EAGJA,cAHI,CAAN;AAKD;AACF,KAlBD;AAmBD;;AAEDT,EAAAA,KAAK,CAACQ,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,UAAMC,OAAO,GAAGX,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCI,IAAxC,EAAhB;;AACA,QAAI,CAACF,OAAL,EAAc;AACZV,MAAAA,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;AAKD,KAND,MAMO,IAAI,CAACK,gBAAOC,KAAP,CAAaJ,OAAb,CAAL,EAA4B;AACjCV,MAAAA,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,CAAwC,IADzE,EAEJ,IAFI,EAGJA,cAHI,CAAN;AAKD;AACF,GAfD;AAgBAT,EAAAA,KAAK,CAACQ,mBAAN,CAA0B,SAA1B,EAAqC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACtE,UAAMS,YAAY,GAAGnB,KAAK,CAACoB,kBAAN,CAAyBb,cAAzB,EAAyC,GAAzC,CAArB;AACA,UAAMc,KAAK,GAAGrB,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCY,KAAxC,CAA8CF,YAA9C,CAAd;AACA,UAAMG,OAAO,GAAGD,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAd,IAAqBA,KAAK,CAAC,CAAD,CAA1C;;AACA,QAAI,CAACC,OAAO,CAACT,IAAR,EAAL,EAAqB;AACnBZ,MAAAA,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;AAKD,KAND,MAMO,IAAIL,eAAJ,EAAqB;AAC1B,UAAIA,eAAe,KAAK,IAApB,IAA4B,CAACA,eAAe,CAACmB,QAAhB,CAAyBD,OAAzB,CAAjC,EAAoE;AAClErB,QAAAA,MAAM,CACH,kBAAiBS,aAAc,MAAKY,OAAQ,sBAAqBlB,eAAe,CAACoB,IAAhB,CAAqB,IAArB,CAA2B,GADzF,EAEJ,IAFI,EAGJf,cAHI,CAAN;AAKD;AACF,KARM,MAQA;AACL,UAAI;AACF,0CAAoBa,OAApB;AACD,OAFD,CAEE,MAAM;AACNrB,QAAAA,MAAM,CACH,kBAAiBS,aAAc,MAAKY,OAAQ,0DADzC,EAEJ,IAFI,EAGJb,cAHI,CAAN;AAKD;AACF;AACF,GA7BD;AA+BAT,EAAAA,KAAK,CAACQ,mBAAN,CAA0B,QAA1B,EAAoC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACrE,UAAMe,MAAM,GAAGzB,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCI,IAAxC,EAAf;;AACA,QAAI,CAACY,MAAL,EAAa;AACXxB,MAAAA,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;AAKD,KAND,MAMO,IAAIJ,cAAc,IAAI,CAACA,cAAc,CAACkB,QAAf,CAAwBE,MAAxB,CAAvB,EAAwD;AAC7DxB,MAAAA,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,CAAwC,sBAAqBJ,cAAc,CAACmB,IAAf,CAAoB,IAApB,CAA0B,GADxH,EAEJ,IAFI,EAGJf,cAHI,CAAN;AAKD;AACF,GAfD;AAgBD,CAlHc,EAkHZ;AACDiB,EAAAA,gBAAgB,EAAE,IADjB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,oGADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACV5B,QAAAA,cAAc,EAAE;AACd6B,UAAAA,KAAK,EAAE;AACLC,YAAAA,IAAI,EAAE;AADD,WADO;AAIdA,UAAAA,IAAI,EAAE;AAJQ,SADN;AAOV/B,QAAAA,eAAe,EAAE;AACfgC,UAAAA,KAAK,EAAE,CACL;AACEF,YAAAA,KAAK,EAAE;AACLC,cAAAA,IAAI,EAAE;AADD,aADT;AAIEA,YAAAA,IAAI,EAAE;AAJR,WADK,EAOL;AACEA,YAAAA,IAAI,EAAE;AADR,WAPK;AADQ,SAPP;AAoBV5B,QAAAA,cAAc,EAAE;AACd4B,UAAAA,IAAI,EAAE;AADQ,SApBN;AAuBV7B,QAAAA,oBAAoB,EAAE;AACpB6B,UAAAA,IAAI,EAAE;AADc;AAvBZ,OAFd;AA6BEA,MAAAA,IAAI,EAAE;AA7BR,KADM,CALJ;AAsCJA,IAAAA,IAAI,EAAE;AAtCF;AAFL,CAlHY,C","sourcesContent":["import semver from 'semver';\nimport spdxExpressionParse from 'spdx-expression-parse';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n utils,\n report,\n context,\n}) => {\n const options = context.options[0] || {};\n const {\n allowedLicenses = null,\n allowedAuthors = null,\n numericOnlyVariation = false,\n licensePattern = '/([^\\n\\r]*)/gu',\n } = options;\n\n utils.forEachPreferredTag('version', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n if (numericOnlyVariation) {\n utils.forEachPreferredTag('variation', (jsdocParameter, targetTagName) => {\n const variation = utils.getTagDescription(jsdocParameter).trim();\n if (!variation) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (\n !Number.isInteger(Number(variation)) ||\n Number(variation) <= 0\n ) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n }\n\n utils.forEachPreferredTag('since', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => {\n const licenseRegex = utils.getRegexFromString(licensePattern, 'g');\n const match = utils.getTagDescription(jsdocParameter).match(licenseRegex);\n const license = match && match[1] || match[0];\n if (!license.trim()) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedLicenses) {\n if (allowedLicenses !== true && !allowedLicenses.includes(license)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected one of ${allowedLicenses.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n } else {\n try {\n spdxExpressionParse(license);\n } catch {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected SPDX expression: https://spdx.org/licenses/.`,\n null,\n jsdocParameter,\n );\n }\n }\n });\n\n utils.forEachPreferredTag('author', (jsdocParameter, targetTagName) => {\n const author = utils.getTagDescription(jsdocParameter).trim();\n if (!author) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedAuthors && !allowedAuthors.includes(author)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; expected one of ${allowedAuthors.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-values',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowedAuthors: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n allowedLicenses: {\n anyOf: [\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n {\n type: 'boolean',\n },\n ],\n },\n licensePattern: {\n type: 'string',\n },\n numericOnlyVariation: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkValues.js"}
1
+ {"version":3,"sources":["../../src/rules/checkValues.js"],"names":["allowedKinds","Set","utils","report","context","options","allowedLicenses","allowedAuthors","numericOnlyVariation","licensePattern","forEachPreferredTag","jsdocParameter","targetTagName","version","getTagDescription","trim","semver","valid","kind","has","join","variation","Number","isInteger","licenseRegex","getRegexFromString","match","license","includes","author","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items","type","anyOf"],"mappings":"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","sourcesContent":["import semver from 'semver';\nimport spdxExpressionParse from 'spdx-expression-parse';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst allowedKinds = new Set([\n 'class',\n 'constant',\n 'event',\n 'external',\n 'file',\n 'function',\n 'member',\n 'mixin',\n 'module',\n 'namespace',\n 'typedef',\n]);\n\nexport default iterateJsdoc(({\n utils,\n report,\n context,\n}) => {\n const options = context.options[0] || {};\n const {\n allowedLicenses = null,\n allowedAuthors = null,\n numericOnlyVariation = false,\n licensePattern = '/([^\\n\\r]*)/gu',\n } = options;\n\n utils.forEachPreferredTag('version', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n\n utils.forEachPreferredTag('kind', (jsdocParameter, targetTagName) => {\n const kind = utils.getTagDescription(jsdocParameter).trim();\n if (!kind) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!allowedKinds.has(kind)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; ` +\n `must be one of: ${[\n ...allowedKinds,\n ].join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n\n if (numericOnlyVariation) {\n utils.forEachPreferredTag('variation', (jsdocParameter, targetTagName) => {\n const variation = utils.getTagDescription(jsdocParameter).trim();\n if (!variation) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (\n !Number.isInteger(Number(variation)) ||\n Number(variation) <= 0\n ) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n }\n\n utils.forEachPreferredTag('since', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => {\n const licenseRegex = utils.getRegexFromString(licensePattern, 'g');\n const match = utils.getTagDescription(jsdocParameter).match(licenseRegex);\n const license = match && match[1] || match[0];\n if (!license.trim()) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedLicenses) {\n if (allowedLicenses !== true && !allowedLicenses.includes(license)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected one of ${allowedLicenses.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n } else {\n try {\n spdxExpressionParse(license);\n } catch {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected SPDX expression: https://spdx.org/licenses/.`,\n null,\n jsdocParameter,\n );\n }\n }\n });\n\n utils.forEachPreferredTag('author', (jsdocParameter, targetTagName) => {\n const author = utils.getTagDescription(jsdocParameter).trim();\n if (!author) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedAuthors && !allowedAuthors.includes(author)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; expected one of ${allowedAuthors.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-values',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowedAuthors: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n allowedLicenses: {\n anyOf: [\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n {\n type: 'boolean',\n },\n ],\n },\n licensePattern: {\n type: 'string',\n },\n numericOnlyVariation: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkValues.js"}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "url": "http://gajus.com"
6
6
  },
7
7
  "dependencies": {
8
- "@es-joy/jsdoccomment": "~0.18.0",
8
+ "@es-joy/jsdoccomment": "~0.19.0",
9
9
  "comment-parser": "1.3.0",
10
10
  "debug": "^4.3.3",
11
11
  "escape-string-regexp": "^4.0.0",
@@ -17,7 +17,7 @@
17
17
  "description": "JSDoc linting rules for ESLint.",
18
18
  "devDependencies": {
19
19
  "@babel/cli": "^7.17.0",
20
- "@babel/core": "^7.17.0",
20
+ "@babel/core": "^7.17.2",
21
21
  "@babel/eslint-parser": "^7.17.0",
22
22
  "@babel/node": "^7.16.8",
23
23
  "@babel/plugin-syntax-class-properties": "^7.12.13",
@@ -25,7 +25,7 @@
25
25
  "@babel/preset-env": "^7.16.11",
26
26
  "@babel/register": "^7.17.0",
27
27
  "@hkdobrev/run-if-changed": "^0.3.1",
28
- "@typescript-eslint/parser": "^5.10.2",
28
+ "@typescript-eslint/parser": "^5.11.0",
29
29
  "babel-plugin-add-module-exports": "^1.0.4",
30
30
  "babel-plugin-istanbul": "^6.1.1",
31
31
  "camelcase": "^6.3.0",
@@ -107,5 +107,5 @@
107
107
  "test-index": "cross-env BABEL_ENV=test mocha --recursive --require @babel/register --reporter progress --timeout 12000 test/rules/index.js",
108
108
  "test-no-cov": "cross-env BABEL_ENV=test mocha --reporter dot --recursive --require @babel/register --timeout 12000"
109
109
  },
110
- "version": "37.8.2"
110
+ "version": "37.9.0"
111
111
  }