eslint-plugin-jsdoc 50.4.3 → 50.6.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.
@@ -15,6 +15,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
15
15
  }) => {
16
16
  var _tokenBefore$loc, _jsdocNode$loc;
17
17
  const {
18
+ checkBlockStarts,
18
19
  lines = 1,
19
20
  ignoreSameLine = true,
20
21
  excludedTags = ['type']
@@ -26,7 +27,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
26
27
  includeComments: true
27
28
  });
28
29
  const tokenBefore = tokensBefore.slice(-1)[0];
29
- if (!tokenBefore) {
30
+ if (!tokenBefore || tokenBefore.value === '{' && !checkBlockStarts) {
30
31
  return;
31
32
  }
32
33
  if (((_tokenBefore$loc = tokenBefore.loc) === null || _tokenBefore$loc === void 0 || (_tokenBefore$loc = _tokenBefore$loc.end) === null || _tokenBefore$loc === void 0 ? void 0 : _tokenBefore$loc.line) + lines >= ( /** @type {number} */(_jsdocNode$loc = jsdocNode.loc) === null || _jsdocNode$loc === void 0 || (_jsdocNode$loc = _jsdocNode$loc.start) === null || _jsdocNode$loc === void 0 ? void 0 : _jsdocNode$loc.line)) {
@@ -74,6 +75,9 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
74
75
  schema: [{
75
76
  additionalProperties: false,
76
77
  properties: {
78
+ checkBlockStarts: {
79
+ type: 'boolean'
80
+ },
77
81
  excludedTags: {
78
82
  type: 'array',
79
83
  items: {
@@ -1 +1 @@
1
- {"version":3,"file":"linesBeforeBlock.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","_default","exports","iterateJsdoc","context","jsdocNode","sourceCode","report","utils","_tokenBefore$loc","_jsdocNode$loc","lines","ignoreSameLine","excludedTags","options","hasATag","tokensBefore","getTokensBefore","includeComments","tokenBefore","slice","loc","end","line","start","_jsdocNode$loc2","_tokenBefore$loc2","startLine","sameLine","fix","fixer","indent","_jsdocNode$loc3","_tokenBefore$loc3","_jsdocNode$value$matc","spaceDiff","column","value","match","tokenPrior","startColumn","_tokenPrior","_tokenPrior$loc","pop","repeat","insertTextAfter","iterateAllJsdocs","meta","fixable","docs","description","url","schema","additionalProperties","properties","type","items","module"],"sources":["../../src/rules/linesBeforeBlock.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n jsdocNode,\n sourceCode,\n report,\n utils,\n}) => {\n const {\n lines = 1,\n ignoreSameLine = true,\n excludedTags = ['type']\n } = context.options[0] || {};\n\n if (utils.hasATag(excludedTags)) {\n return;\n }\n\n const tokensBefore = sourceCode.getTokensBefore(jsdocNode, {includeComments: true});\n const tokenBefore = tokensBefore.slice(-1)[0];\n if (!tokenBefore) {\n return;\n }\n\n if (tokenBefore.loc?.end?.line + lines >=\n /** @type {number} */\n (jsdocNode.loc?.start?.line)\n ) {\n const startLine = jsdocNode.loc?.start?.line;\n const sameLine = tokenBefore.loc?.end?.line === startLine;\n\n if (sameLine && ignoreSameLine) {\n return;\n }\n\n /** @type {import('eslint').Rule.ReportFixer} */\n const fix = (fixer) => {\n let indent = '';\n if (sameLine) {\n const spaceDiff = /** @type {number} */ (jsdocNode.loc?.start?.column) -\n /** @type {number} */ (tokenBefore.loc?.end?.column);\n // @ts-expect-error Should be a comment\n indent = /** @type {import('estree').Comment} */ (\n jsdocNode\n ).value.match(/^\\*\\n([ \\t]*) \\*/)?.[1]?.slice(spaceDiff);\n if (!indent) {\n /** @type {import('eslint').AST.Token|import('estree').Comment|undefined} */\n let tokenPrior = tokenBefore;\n let startColumn;\n while (tokenPrior && tokenPrior?.loc?.start?.line === startLine) {\n startColumn = tokenPrior.loc?.start?.column;\n tokenPrior = tokensBefore.pop();\n }\n indent = ' '.repeat(\n /* c8 ignore next */\n /** @type {number} */ (startColumn ? startColumn - 1 : 0)\n );\n }\n }\n\n return fixer.insertTextAfter(\n /** @type {import('eslint').AST.Token} */\n (tokenBefore),\n '\\n'.repeat(lines) +\n (sameLine ? '\\n' + indent : '')\n );\n };\n report(`Required ${lines} line(s) before JSDoc block`, fix);\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n fixable: 'code',\n docs: {\n description: 'Enforces minimum number of newlines before JSDoc comment blocks',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/lines-before-block.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n excludedTags: {\n type: 'array',\n items: {\n type: 'string'\n }\n },\n ignoreSameLine: {\n type: 'boolean',\n },\n lines: {\n type: 'integer'\n }\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"linesBeforeBlock.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","_default","exports","iterateJsdoc","context","jsdocNode","sourceCode","report","utils","_tokenBefore$loc","_jsdocNode$loc","checkBlockStarts","lines","ignoreSameLine","excludedTags","options","hasATag","tokensBefore","getTokensBefore","includeComments","tokenBefore","slice","value","loc","end","line","start","_jsdocNode$loc2","_tokenBefore$loc2","startLine","sameLine","fix","fixer","indent","_jsdocNode$loc3","_tokenBefore$loc3","_jsdocNode$value$matc","spaceDiff","column","match","tokenPrior","startColumn","_tokenPrior","_tokenPrior$loc","pop","repeat","insertTextAfter","iterateAllJsdocs","meta","fixable","docs","description","url","schema","additionalProperties","properties","type","items","module"],"sources":["../../src/rules/linesBeforeBlock.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n jsdocNode,\n sourceCode,\n report,\n utils,\n}) => {\n const {\n checkBlockStarts,\n lines = 1,\n ignoreSameLine = true,\n excludedTags = ['type']\n } = context.options[0] || {};\n\n if (utils.hasATag(excludedTags)) {\n return;\n }\n\n const tokensBefore = sourceCode.getTokensBefore(jsdocNode, {includeComments: true});\n const tokenBefore = tokensBefore.slice(-1)[0];\n if (!tokenBefore || (tokenBefore.value === '{' && !checkBlockStarts)) {\n return;\n }\n\n if (tokenBefore.loc?.end?.line + lines >=\n /** @type {number} */\n (jsdocNode.loc?.start?.line)\n ) {\n const startLine = jsdocNode.loc?.start?.line;\n const sameLine = tokenBefore.loc?.end?.line === startLine;\n\n if (sameLine && ignoreSameLine) {\n return;\n }\n\n /** @type {import('eslint').Rule.ReportFixer} */\n const fix = (fixer) => {\n let indent = '';\n if (sameLine) {\n const spaceDiff = /** @type {number} */ (jsdocNode.loc?.start?.column) -\n /** @type {number} */ (tokenBefore.loc?.end?.column);\n // @ts-expect-error Should be a comment\n indent = /** @type {import('estree').Comment} */ (\n jsdocNode\n ).value.match(/^\\*\\n([ \\t]*) \\*/)?.[1]?.slice(spaceDiff);\n if (!indent) {\n /** @type {import('eslint').AST.Token|import('estree').Comment|undefined} */\n let tokenPrior = tokenBefore;\n let startColumn;\n while (tokenPrior && tokenPrior?.loc?.start?.line === startLine) {\n startColumn = tokenPrior.loc?.start?.column;\n tokenPrior = tokensBefore.pop();\n }\n indent = ' '.repeat(\n /* c8 ignore next */\n /** @type {number} */ (startColumn ? startColumn - 1 : 0)\n );\n }\n }\n\n return fixer.insertTextAfter(\n /** @type {import('eslint').AST.Token} */\n (tokenBefore),\n '\\n'.repeat(lines) +\n (sameLine ? '\\n' + indent : '')\n );\n };\n report(`Required ${lines} line(s) before JSDoc block`, fix);\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n fixable: 'code',\n docs: {\n description: 'Enforces minimum number of newlines before JSDoc comment blocks',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/lines-before-block.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkBlockStarts: {\n type: 'boolean',\n },\n excludedTags: {\n type: 'array',\n items: {\n type: 'string'\n }\n },\n ignoreSameLine: {\n type: 'boolean',\n },\n lines: {\n type: 'integer'\n }\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -100,6 +100,11 @@
100
100
  "types": "./dist/getJsdocProcessorPlugin.d.ts",
101
101
  "import": "./dist/getJsdocProcessorPlugin.cjs",
102
102
  "require": "./src/getJsdocProcessorPlugin.js"
103
+ },
104
+ "./iterateJsdoc.js": {
105
+ "types": "./dist/iterateJsdoc.d.ts",
106
+ "import": "./dist/iterateJsdoc.cjs",
107
+ "require": "./src/iterateJsdoc.js"
103
108
  }
104
109
  },
105
110
  "name": "eslint-plugin-jsdoc",
@@ -129,7 +134,11 @@
129
134
  },
130
135
  "repository": {
131
136
  "type": "git",
132
- "url": "https://github.com/gajus/eslint-plugin-jsdoc"
137
+ "url": "git+https://github.com/gajus/eslint-plugin-jsdoc.git"
138
+ },
139
+ "homepage": "https://github.com/gajus/eslint-plugin-jsdoc#readme",
140
+ "bugs": {
141
+ "url": "https://github.com/gajus/eslint-plugin-jsdoc/issues"
133
142
  },
134
143
  "run-if-changed": {
135
144
  "package-lock.json": "npm run install-offline"
@@ -152,5 +161,5 @@
152
161
  "test-cov": "cross-env TIMING=1 c8 --reporter text npm run test-no-cov",
153
162
  "test-index": "npm run test-no-cov -- test/rules/index.js"
154
163
  },
155
- "version": "50.4.3"
164
+ "version": "50.6.0"
156
165
  }
@@ -8,6 +8,7 @@ export default iterateJsdoc(({
8
8
  utils,
9
9
  }) => {
10
10
  const {
11
+ checkBlockStarts,
11
12
  lines = 1,
12
13
  ignoreSameLine = true,
13
14
  excludedTags = ['type']
@@ -19,7 +20,7 @@ export default iterateJsdoc(({
19
20
 
20
21
  const tokensBefore = sourceCode.getTokensBefore(jsdocNode, {includeComments: true});
21
22
  const tokenBefore = tokensBefore.slice(-1)[0];
22
- if (!tokenBefore) {
23
+ if (!tokenBefore || (tokenBefore.value === '{' && !checkBlockStarts)) {
23
24
  return;
24
25
  }
25
26
 
@@ -80,6 +81,9 @@ export default iterateJsdoc(({
80
81
  {
81
82
  additionalProperties: false,
82
83
  properties: {
84
+ checkBlockStarts: {
85
+ type: 'boolean',
86
+ },
83
87
  excludedTags: {
84
88
  type: 'array',
85
89
  items: {