UNPKG

eslint-plugin-jsdoc

Version:
1 lines 7.27 kB
{"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":[]}