{"version":3,"file":"convertToJsdocComments.cjs","names":["getSettings","getReducedASTNode","getDecorator","getIndent","getNonJsdocComment","getFollowingComment","getContextObject","enforcedContexts"],"sources":["../../src/rules/convertToJsdocComments.js"],"sourcesContent":["import {\n  getSettings,\n} from '../iterateJsdoc.js';\nimport {\n  enforcedContexts,\n  getContextObject,\n  getIndent,\n} from '../jsdocUtils.js';\nimport {\n  getDecorator,\n  getFollowingComment,\n  getNonJsdocComment,\n  getReducedASTNode,\n} from '@es-joy/jsdoccomment';\n\n/** @type {import('eslint').Rule.RuleModule} */\nexport default {\n  create (context) {\n    /**\n     * @typedef {import('eslint').AST.Token | import('estree').Comment | {\n     *   type: import('eslint').AST.TokenType|\"Line\"|\"Block\"|\"Shebang\",\n     *   range: [number, number],\n     *   value: string\n     * }} Token\n     */\n\n    /**\n     * @callback AddComment\n     * @param {boolean|undefined} inlineCommentBlock\n     * @param {Token} comment\n     * @param {string} indent\n     * @param {number} lines\n     * @param {import('eslint').Rule.RuleFixer} fixer\n     */\n\n    /* c8 ignore next -- Fallback to deprecated method */\n    const {\n      // @ts-expect-error ESLint < 10\n      sourceCode = context.getSourceCode(),\n    } = context;\n    const settings = getSettings(context);\n    if (!settings) {\n      return {};\n    }\n\n    const {\n      allowedPrefixes = [\n        '@ts-', 'istanbul ', 'c8 ', 'v8 ', 'eslint', 'prettier-',\n      ],\n      contexts = settings.contexts || [],\n      contextsAfter = /** @type {string[]} */ ([]),\n      contextsBeforeAndAfter = [\n        'VariableDeclarator', 'TSPropertySignature', 'PropertyDefinition',\n      ],\n      enableFixer = true,\n      enforceJsdocLineStyle = 'multi',\n      lineOrBlockStyle = 'both',\n    } = context.options[0] ?? {};\n\n    let reportingNonJsdoc = false;\n\n    /**\n     * @param {string} messageId\n     * @param {import('estree').Comment|Token} comment\n     * @param {import('eslint').Rule.Node} node\n     * @param {import('eslint').Rule.ReportFixer} fixer\n     */\n    const report = (messageId, comment, node, fixer) => {\n      const loc = {\n        end: {\n          column: 0,\n          /* c8 ignore next 2 -- Guard */\n          // @ts-expect-error Ok\n          line: (comment.loc?.start?.line ?? 1),\n        },\n        start: {\n          column: 0,\n          /* c8 ignore next 2 -- Guard */\n          // @ts-expect-error Ok\n          line: (comment.loc?.start?.line ?? 1),\n        },\n      };\n\n      context.report({\n        fix: enableFixer ? fixer : null,\n        loc,\n        messageId,\n        node,\n      });\n    };\n\n    /**\n     * @param {import('eslint').Rule.Node} node\n     * @param {import('eslint').AST.Token | import('estree').Comment | {\n     *   type: import('eslint').AST.TokenType|\"Line\"|\"Block\"|\"Shebang\",\n     *   range: [number, number],\n     *   value: string\n     * }} comment\n     * @param {AddComment} addComment\n     * @param {import('../iterateJsdoc.js').Context[]} ctxts\n     */\n    const getFixer = (node, comment, addComment, ctxts) => {\n      return /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n        // Default to one line break if the `minLines`/`maxLines` settings allow\n        const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n        let baseNode =\n          /**\n           * @type {import('@typescript-eslint/types').TSESTree.Node|import('eslint').Rule.Node}\n           */ (\n            getReducedASTNode(node, sourceCode)\n          );\n\n        const decorator = getDecorator(\n          /** @type {import('eslint').Rule.Node} */\n          (baseNode),\n        );\n        if (decorator) {\n          baseNode = /** @type {import('@typescript-eslint/types').TSESTree.Decorator} */ (\n            decorator\n          );\n        }\n\n        const indent = getIndent({\n          text: sourceCode.getText(\n            /** @type {import('eslint').Rule.Node} */ (baseNode),\n            /** @type {import('eslint').AST.SourceLocation} */\n            (\n              /** @type {import('eslint').Rule.Node} */ (baseNode).loc\n            ).start.column,\n          ),\n        });\n\n        const {\n          inlineCommentBlock,\n        } =\n          /**\n           * @type {{\n           *     context: string,\n           *     inlineCommentBlock: boolean,\n           *     minLineCount: import('../iterateJsdoc.js').Integer\n           *   }[]}\n           */ (ctxts).find((contxt) => {\n            if (typeof contxt === 'string') {\n              return false;\n            }\n\n            const {\n              context: ctxt,\n            } = contxt;\n            return ctxt === node.type;\n          }) || {};\n\n        return addComment(inlineCommentBlock, comment, indent, lines, fixer);\n      };\n    };\n\n    /**\n     * @param {import('eslint').AST.Token | import('estree').Comment | {\n     *   type: import('eslint').AST.TokenType|\"Line\"|\"Block\"|\"Shebang\",\n     *   range: [number, number],\n     *   value: string\n     * }} comment\n     * @param {import('eslint').Rule.Node} node\n     * @param {AddComment} addComment\n     * @param {import('../iterateJsdoc.js').Context[]} ctxts\n     */\n    const reportings = (comment, node, addComment, ctxts) => {\n      const fixer = getFixer(node, comment, addComment, ctxts);\n\n      if (comment.type === 'Block') {\n        if (lineOrBlockStyle === 'line') {\n          return;\n        }\n\n        report('blockCommentsJsdocStyle', comment, node, fixer);\n        return;\n      }\n\n      if (comment.type === 'Line') {\n        if (lineOrBlockStyle === 'block') {\n          return;\n        }\n\n        report('lineCommentsJsdocStyle', comment, node, fixer);\n      }\n    };\n\n    /**\n     * @type {import('../iterateJsdoc.js').CheckJsdoc}\n     */\n    const checkNonJsdoc = (_info, _handler, node) => {\n      const comment = getNonJsdocComment(sourceCode, node, settings);\n\n      if (\n        !comment ||\n        /** @type {string[]} */\n        (allowedPrefixes).some((prefix) => {\n          return comment.value.trimStart().startsWith(prefix);\n        })\n      ) {\n        return;\n      }\n\n      reportingNonJsdoc = true;\n\n      /** @type {AddComment} */\n      const addComment = (inlineCommentBlock, commentToAdd, indent, lines, fixer) => {\n        const insertion = (\n          inlineCommentBlock || enforceJsdocLineStyle === 'single' ?\n            `/** ${commentToAdd.value.trim()} ` :\n            `/**\\n${indent}*${commentToAdd.value.trimEnd()}\\n${indent}`\n        ) +\n            `*/${'\\n'.repeat((lines || 1) - 1)}`;\n\n        return fixer.replaceText(\n          /** @type {import('eslint').AST.Token} */\n          (commentToAdd),\n          insertion,\n        );\n      };\n\n      reportings(comment, node, addComment, contexts);\n    };\n\n    /**\n     * @param {import('eslint').Rule.Node} node\n     * @param {import('../iterateJsdoc.js').Context[]} ctxts\n     */\n    const checkNonJsdocAfter = (node, ctxts) => {\n      const comment = getFollowingComment(sourceCode, node);\n\n      if (\n        !comment ||\n        comment.value.startsWith('*') ||\n        /** @type {string[]} */\n        (allowedPrefixes).some((prefix) => {\n          return comment.value.trimStart().startsWith(prefix);\n        })\n      ) {\n        return;\n      }\n\n      /** @type {AddComment} */\n      const addComment = (inlineCommentBlock, commentToAdd, indent, lines, fixer) => {\n        const insertion = (\n          inlineCommentBlock || enforceJsdocLineStyle === 'single' ?\n            `/** ${commentToAdd.value.trim()} ` :\n            `/**\\n${indent}*${commentToAdd.value.trimEnd()}\\n${indent}`\n        ) +\n            `*/${'\\n'.repeat((lines || 1) - 1)}${lines ? `\\n${indent.slice(1)}` : ' '}`;\n\n        return [\n          fixer.remove(\n          /** @type {import('eslint').AST.Token} */\n            (commentToAdd),\n          ), fixer.insertTextBefore(\n            node.type === 'VariableDeclarator' ? node.parent : node,\n            insertion,\n          ),\n        ];\n      };\n\n      reportings(comment, node, addComment, ctxts);\n    };\n\n    // Todo: add contexts to check after (and handle if want both before and after)\n    return {\n      ...getContextObject(\n        enforcedContexts(context, true, settings),\n        checkNonJsdoc,\n      ),\n      ...getContextObject(\n        contextsAfter,\n        (_info, _handler, node) => {\n          checkNonJsdocAfter(node, contextsAfter);\n        },\n      ),\n      ...getContextObject(\n        contextsBeforeAndAfter,\n        (_info, _handler, node) => {\n          checkNonJsdoc({}, null, node);\n          if (!reportingNonJsdoc) {\n            checkNonJsdocAfter(node, contextsBeforeAndAfter);\n          }\n        },\n      ),\n    };\n  },\n  meta: {\n    docs: {\n      description: 'Converts non-JSDoc comments preceding or following nodes into JSDoc ones',\n      url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/convert-to-jsdoc-comments.md#repos-sticky-header',\n    },\n\n    fixable: 'code',\n\n    messages: {\n      blockCommentsJsdocStyle: 'Block comments should be JSDoc-style.',\n      lineCommentsJsdocStyle: 'Line comments should be JSDoc-style.',\n    },\n    schema: [\n      {\n        additionalProperties: false,\n        properties: {\n          allowedPrefixes: {\n            description: `An array of prefixes to allow at the beginning of a comment.\n\nDefaults to \\`['@ts-', 'istanbul ', 'c8 ', 'v8 ', 'eslint', 'prettier-']\\`.\n\nSupplying your own value overrides the defaults.`,\n            items: {\n              type: 'string',\n            },\n            type: 'array',\n          },\n          contexts: {\n            description: `The contexts array which will be checked for preceding content.\n\nCan either be strings or an object with a \\`context\\` string and an optional, default \\`false\\` \\`inlineCommentBlock\\` boolean.\n\nDefaults to \\`ArrowFunctionExpression\\`, \\`FunctionDeclaration\\`,\n\\`FunctionExpression\\`, \\`TSDeclareFunction\\`.`,\n            items: {\n              anyOf: [\n                {\n                  type: 'string',\n                },\n                {\n                  additionalProperties: false,\n                  properties: {\n                    context: {\n                      type: 'string',\n                    },\n                    inlineCommentBlock: {\n                      type: 'boolean',\n                    },\n                  },\n                  type: 'object',\n                },\n              ],\n            },\n            type: 'array',\n          },\n          contextsAfter: {\n            description: `The contexts array which will be checked for content on the same line after.\n\nCan either be strings or an object with a \\`context\\` string and an optional, default \\`false\\` \\`inlineCommentBlock\\` boolean.\n\nDefaults to an empty array.`,\n            items: {\n              anyOf: [\n                {\n                  type: 'string',\n                },\n                {\n                  additionalProperties: false,\n                  properties: {\n                    context: {\n                      type: 'string',\n                    },\n                    inlineCommentBlock: {\n                      type: 'boolean',\n                    },\n                  },\n                  type: 'object',\n                },\n              ],\n            },\n            type: 'array',\n          },\n          contextsBeforeAndAfter: {\n            description: `The contexts array which will be checked for content before and on the same\nline after.\n\nCan either be strings or an object with a \\`context\\` string and an optional, default \\`false\\` \\`inlineCommentBlock\\` boolean.\n\nDefaults to \\`VariableDeclarator\\`, \\`TSPropertySignature\\`, \\`PropertyDefinition\\`.`,\n            items: {\n              anyOf: [\n                {\n                  type: 'string',\n                },\n                {\n                  additionalProperties: false,\n                  properties: {\n                    context: {\n                      type: 'string',\n                    },\n                    inlineCommentBlock: {\n                      type: 'boolean',\n                    },\n                  },\n                  type: 'object',\n                },\n              ],\n            },\n            type: 'array',\n          },\n          enableFixer: {\n            description: 'Set to `false` to disable fixing.',\n            type: 'boolean',\n          },\n          enforceJsdocLineStyle: {\n            description: `What policy to enforce on the conversion of non-JSDoc comments without\nline breaks. (Non-JSDoc (mulitline) comments with line breaks will always\nbe converted to \\`multi\\` style JSDoc comments.)\n\n- \\`multi\\` - Convert to multi-line style\n\\`\\`\\`js\n/**\n * Some text\n */\n\\`\\`\\`\n- \\`single\\` - Convert to single-line style\n\\`\\`\\`js\n/** Some text */\n\\`\\`\\`\n\nDefaults to \\`multi\\`.`,\n            enum: [\n              'multi', 'single',\n            ],\n            type: 'string',\n          },\n          lineOrBlockStyle: {\n            description: `What style of comments to which to apply JSDoc conversion.\n\n- \\`block\\` - Applies to block-style comments (\\`/* ... */\\`)\n- \\`line\\` - Applies to line-style comments (\\`// ...\\`)\n- \\`both\\` - Applies to both block and line-style comments\n\nDefaults to \\`both\\`.`,\n            enum: [\n              'block', 'line', 'both',\n            ],\n            type: 'string',\n          },\n        },\n        type: 'object',\n      },\n    ],\n    type: 'suggestion',\n  },\n};\n"],"mappings":"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","ignoreList":[]}