eslint-plugin-jsdoc 39.2.8 → 39.2.9
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 +45 -0
- package/dist/rules/checkValues.js +25 -12
- package/dist/rules/checkValues.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6122,6 +6122,25 @@ function quux (foo) {
|
|
|
6122
6122
|
}
|
|
6123
6123
|
// "jsdoc/check-values": ["error"|"warn", {"numericOnlyVariation":true}]
|
|
6124
6124
|
// Message: Invalid JSDoc @variation: "5.2".
|
|
6125
|
+
|
|
6126
|
+
/**
|
|
6127
|
+
* @license license-prefix Oops
|
|
6128
|
+
*/
|
|
6129
|
+
function quux (foo) {
|
|
6130
|
+
|
|
6131
|
+
}
|
|
6132
|
+
// "jsdoc/check-values": ["error"|"warn", {"licensePattern":"(?<=license-prefix ).*"}]
|
|
6133
|
+
// Message: Invalid JSDoc @license: "Oops"; expected SPDX expression: https://spdx.org/licenses/.
|
|
6134
|
+
|
|
6135
|
+
/**
|
|
6136
|
+
* @license Oops
|
|
6137
|
+
* Copyright 2022
|
|
6138
|
+
*/
|
|
6139
|
+
function quux (foo) {
|
|
6140
|
+
|
|
6141
|
+
}
|
|
6142
|
+
// "jsdoc/check-values": ["error"|"warn", {"licensePattern":"^([^\n]+)\nCopyright"}]
|
|
6143
|
+
// Message: Invalid JSDoc @license: "Oops"; expected SPDX expression: https://spdx.org/licenses/.
|
|
6125
6144
|
````
|
|
6126
6145
|
|
|
6127
6146
|
The following patterns are not considered problems:
|
|
@@ -6244,6 +6263,32 @@ function quux (foo) {
|
|
|
6244
6263
|
function quux (foo) {
|
|
6245
6264
|
|
|
6246
6265
|
}
|
|
6266
|
+
|
|
6267
|
+
/**
|
|
6268
|
+
* @license license-prefix MIT
|
|
6269
|
+
*/
|
|
6270
|
+
function quux (foo) {
|
|
6271
|
+
|
|
6272
|
+
}
|
|
6273
|
+
// "jsdoc/check-values": ["error"|"warn", {"licensePattern":"(?<=license-prefix )MIT|GPL3.0"}]
|
|
6274
|
+
|
|
6275
|
+
/**
|
|
6276
|
+
* @license
|
|
6277
|
+
* Copyright 2022
|
|
6278
|
+
*/
|
|
6279
|
+
function quux (foo) {
|
|
6280
|
+
|
|
6281
|
+
}
|
|
6282
|
+
// "jsdoc/check-values": ["error"|"warn", {"licensePattern":"^([^\n]+)(?!\nCopyright)"}]
|
|
6283
|
+
|
|
6284
|
+
/**
|
|
6285
|
+
* @license MIT
|
|
6286
|
+
* Copyright 2022
|
|
6287
|
+
*/
|
|
6288
|
+
function quux (foo) {
|
|
6289
|
+
|
|
6290
|
+
}
|
|
6291
|
+
// "jsdoc/check-values": ["error"|"warn", {"licensePattern":"^([^\n]+)\nCopyright"}]
|
|
6247
6292
|
````
|
|
6248
6293
|
|
|
6249
6294
|
|
|
@@ -69,20 +69,33 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
69
69
|
});
|
|
70
70
|
utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => {
|
|
71
71
|
const licenseRegex = utils.getRegexFromString(licensePattern, 'g');
|
|
72
|
-
const
|
|
73
|
-
|
|
72
|
+
const matches = utils.getTagDescription(jsdocParameter).matchAll(licenseRegex);
|
|
73
|
+
let positiveMatch = false;
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (
|
|
79
|
-
|
|
75
|
+
for (const match of matches) {
|
|
76
|
+
const license = match[1] || match[0];
|
|
77
|
+
|
|
78
|
+
if (license) {
|
|
79
|
+
positiveMatch = true;
|
|
80
80
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
|
|
82
|
+
if (!license.trim()) {
|
|
83
|
+
// Avoid reporting again as empty match
|
|
84
|
+
if (positiveMatch) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
report(`Missing JSDoc @${targetTagName} value.`, null, jsdocParameter);
|
|
89
|
+
} else if (allowedLicenses) {
|
|
90
|
+
if (allowedLicenses !== true && !allowedLicenses.includes(license)) {
|
|
91
|
+
report(`Invalid JSDoc @${targetTagName}: "${license}"; expected one of ${allowedLicenses.join(', ')}.`, null, jsdocParameter);
|
|
92
|
+
}
|
|
93
|
+
} else {
|
|
94
|
+
try {
|
|
95
|
+
(0, _spdxExpressionParse.default)(license);
|
|
96
|
+
} catch {
|
|
97
|
+
report(`Invalid JSDoc @${targetTagName}: "${license}"; expected SPDX expression: https://spdx.org/licenses/.`, null, jsdocParameter);
|
|
98
|
+
}
|
|
86
99
|
}
|
|
87
100
|
}
|
|
88
101
|
});
|
|
@@ -1 +1 @@
|
|
|
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":";;;;;;;AAAA;;AACA;;AACA;;;;AAEA,MAAMA,YAAY,GAAG,IAAIC,GAAJ,CAAQ,CAC3B,OAD2B,EAE3B,UAF2B,EAG3B,OAH2B,EAI3B,UAJ2B,EAK3B,MAL2B,EAM3B,UAN2B,EAO3B,QAP2B,EAQ3B,OAR2B,EAS3B,QAT2B,EAU3B,WAV2B,EAW3B,SAX2B,CAAR,CAArB;;eAce,2BAAa,CAAC;AAC3BC,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;AAiBAT,EAAAA,KAAK,CAACQ,mBAAN,CAA0B,MAA1B,EAAkC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACnE,UAAMM,IAAI,GAAGhB,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCI,IAAxC,EAAb;;AACA,QAAI,CAACG,IAAL,EAAW;AACTf,MAAAA,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;AAKD,KAND,MAMO,IAAI,CAACX,YAAY,CAACmB,GAAb,CAAiBD,IAAjB,CAAL,EAA6B;AAClCf,MAAAA,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,CAAwC,KAA7E,GACC,mBAAkB,CACjB,GAAGX,YADc,EAEjBoB,IAFiB,CAEZ,IAFY,CAEN,GAJT,EAKJ,IALI,EAMJT,cANI,CAAN;AAQD;AACF,GAlBD;;AAoBA,MAAIH,oBAAJ,EAA0B;AACxBN,IAAAA,KAAK,CAACQ,mBAAN,CAA0B,WAA1B,EAAuC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACxE,YAAMS,SAAS,GAAGnB,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCI,IAAxC,EAAlB;;AACA,UAAI,CAACM,SAAL,EAAgB;AACdlB,QAAAA,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;AAKD,OAND,MAMO,IACL,CAACW,MAAM,CAACC,SAAP,CAAiBD,MAAM,CAACD,SAAD,CAAvB,CAAD,IACAC,MAAM,CAACD,SAAD,CAAN,IAAqB,CAFhB,EAGL;AACAlB,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,UAAMY,YAAY,GAAGtB,KAAK,CAACuB,kBAAN,CAAyBhB,cAAzB,EAAyC,GAAzC,CAArB;AACA,UAAMiB,KAAK,GAAGxB,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCe,KAAxC,CAA8CF,YAA9C,CAAd;AACA,UAAMG,OAAO,GAAGD,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAd,IAAqBA,KAAK,CAAC,CAAD,CAA1C;;AACA,QAAI,CAACC,OAAO,CAACZ,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,CAACsB,QAAhB,CAAyBD,OAAzB,CAAjC,EAAoE;AAClExB,QAAAA,MAAM,CACH,kBAAiBS,aAAc,MAAKe,OAAQ,sBAAqBrB,eAAe,CAACc,IAAhB,CAAqB,IAArB,CAA2B,GADzF,EAEJ,IAFI,EAGJT,cAHI,CAAN;AAKD;AACF,KARM,MAQA;AACL,UAAI;AACF,0CAAoBgB,OAApB;AACD,OAFD,CAEE,MAAM;AACNxB,QAAAA,MAAM,CACH,kBAAiBS,aAAc,MAAKe,OAAQ,0DADzC,EAEJ,IAFI,EAGJhB,cAHI,CAAN;AAKD;AACF;AACF,GA7BD;AA+BAT,EAAAA,KAAK,CAACQ,mBAAN,CAA0B,QAA1B,EAAoC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACrE,UAAMiB,MAAM,GAAG3B,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCI,IAAxC,EAAf;;AACA,QAAI,CAACc,MAAL,EAAa;AACX1B,MAAAA,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;AAKD,KAND,MAMO,IAAIJ,cAAc,IAAI,CAACA,cAAc,CAACqB,QAAf,CAAwBC,MAAxB,CAAvB,EAAwD;AAC7D1B,MAAAA,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,CAAwC,sBAAqBJ,cAAc,CAACa,IAAf,CAAoB,IAApB,CAA0B,GADxH,EAEJ,IAFI,EAGJT,cAHI,CAAN;AAKD;AACF,GAfD;AAgBD,CAvIc,EAuIZ;AACDmB,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;AACV9B,QAAAA,cAAc,EAAE;AACd+B,UAAAA,KAAK,EAAE;AACLC,YAAAA,IAAI,EAAE;AADD,WADO;AAIdA,UAAAA,IAAI,EAAE;AAJQ,SADN;AAOVjC,QAAAA,eAAe,EAAE;AACfkC,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;AAoBV9B,QAAAA,cAAc,EAAE;AACd8B,UAAAA,IAAI,EAAE;AADQ,SApBN;AAuBV/B,QAAAA,oBAAoB,EAAE;AACpB+B,UAAAA,IAAI,EAAE;AADc;AAvBZ,OAFd;AA6BEA,MAAAA,IAAI,EAAE;AA7BR,KADM,CALJ;AAsCJA,IAAAA,IAAI,EAAE;AAtCF;AAFL,CAvIY,C","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"}
|
|
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","matches","matchAll","positiveMatch","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 matches = utils.getTagDescription(jsdocParameter).matchAll(licenseRegex);\n let positiveMatch = false;\n for (const match of matches) {\n const license = match[1] || match[0];\n if (license) {\n positiveMatch = true;\n }\n\n if (!license.trim()) {\n // Avoid reporting again as empty match\n if (positiveMatch) {\n return;\n }\n\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\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