{"version":3,"file":"exportParser.cjs","names":["debugModule","findJSDocComment"],"sources":["../src/exportParser.js"],"sourcesContent":["import {\n  findJSDocComment,\n} from '@es-joy/jsdoccomment';\nimport debugModule from 'debug';\n\nconst debug = debugModule('requireExportJsdoc');\n\n/**\n * @typedef {{\n *   value: string\n * }} ValueObject\n */\n\n/**\n * @typedef {{\n *   type?: string,\n *   value?: ValueObject|import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node,\n *   props: {\n *     [key: string]: CreatedNode|null,\n *   },\n *   special?: true,\n *   globalVars?: CreatedNode,\n *   exported?: boolean,\n *   ANONYMOUS_DEFAULT?: import('eslint').Rule.Node\n * }} CreatedNode\n */\n\n/**\n * @returns {CreatedNode}\n */\nconst createNode = function () {\n  return {\n    props: {},\n  };\n};\n\n/**\n * @param {CreatedNode|null} symbol\n * @returns {string|null}\n */\nconst getSymbolValue = function (symbol) {\n  /* c8 ignore next 3 */\n  if (!symbol) {\n    return null;\n  }\n\n  /* c8 ignore else */\n  if (symbol.type === 'literal') {\n    return /** @type {ValueObject} */ (symbol.value).value;\n  }\n  /* c8 ignore next 2 */\n  // eslint-disable-next-line @stylistic/padding-line-between-statements -- c8\n  return null;\n};\n\n/**\n *\n * @param {import('estree').Identifier} node\n * @param {CreatedNode} globals\n * @param {CreatedNode} scope\n * @param {SymbolOptions} opts\n * @returns {CreatedNode|null}\n */\nconst getIdentifier = function (node, globals, scope, opts) {\n  if (opts.simpleIdentifier) {\n    // Type is Identier for noncomputed properties\n    const identifierLiteral = createNode();\n    identifierLiteral.type = 'literal';\n    identifierLiteral.value = {\n      value: node.name,\n    };\n\n    return identifierLiteral;\n  }\n\n  /* c8 ignore next */\n  const block = scope || globals;\n\n  // As scopes are not currently supported, they are not traversed upwards recursively\n  if (block.props[node.name]) {\n    return block.props[node.name];\n  }\n\n  // Seems this will only be entered once scopes added and entered\n  /* c8 ignore next 3 */\n  if (globals.props[node.name]) {\n    return globals.props[node.name];\n  }\n\n  return null;\n};\n\n/**\n * @callback CreateSymbol\n * @param {import('eslint').Rule.Node|null} node\n * @param {CreatedNode} globals\n * @param {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node|null} value\n * @param {CreatedNode} [scope]\n * @param {boolean|SymbolOptions} [isGlobal]\n * @returns {CreatedNode|null}\n */\n\n/** @type {CreateSymbol} */\nlet createSymbol; // eslint-disable-line prefer-const\n\n/**\n * @typedef {{\n *   simpleIdentifier?: boolean\n * }} SymbolOptions\n */\n\n/**\n *\n * @param {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node} node\n * @param {CreatedNode} globals\n * @param {CreatedNode} scope\n * @param {SymbolOptions} [opt]\n * @returns {CreatedNode|null}\n */\nconst getSymbol = function (node, globals, scope, opt) {\n  const opts = opt || {};\n  /* c8 ignore next */\n  switch (node.type) {\n    /* c8 ignore next 4 -- No longer needed? */\n    case 'ArrowFunctionExpression':\n\n    // Fallthrough\n    case 'ClassDeclaration':\n\n    case 'FunctionDeclaration':\n\n    case 'FunctionExpression':\n    case 'TSEnumDeclaration':\n    case 'TSInterfaceDeclaration':\n    case 'TSTypeAliasDeclaration': {\n      const val = createNode();\n      val.props.prototype = createNode();\n      val.props.prototype.type = 'object';\n      val.type = 'object';\n      val.value = node;\n\n      return val;\n    }\n\n    case 'AssignmentExpression': {\n      return createSymbol(\n      /** @type {import('eslint').Rule.Node} */\n        (node.left),\n        globals,\n        /** @type {import('eslint').Rule.Node} */\n        (node.right),\n        scope,\n        opts,\n      );\n    }\n\n    case 'ClassBody': {\n      const val = createNode();\n      for (const method of node.body) {\n        // StaticBlock\n        if (!('key' in method)) {\n          continue;\n        }\n\n        val.props[\n        /** @type {import('estree').Identifier} */ (\n          /** @type {import('estree').MethodDefinition} */ (\n              method\n            ).key\n          ).name\n        ] = createNode();\n        /** @type {{[key: string]: CreatedNode}} */ (val.props)[\n        /** @type {import('estree').Identifier} */ (\n          /** @type {import('estree').MethodDefinition} */ (\n              method\n            ).key\n          ).name\n        ].type = 'object';\n        /** @type {{[key: string]: CreatedNode}} */ (val.props)[\n        /** @type {import('estree').Identifier} */ (\n          /** @type {import('estree').MethodDefinition} */ (\n              method\n            ).key\n          ).name\n        ].value = /** @type {import('eslint').Rule.Node} */ (\n        /** @type {import('estree').MethodDefinition} */ (method).value\n        );\n      }\n\n      val.type = 'object';\n      val.value = node.parent;\n\n      return val;\n    }\n\n    case 'ClassExpression': {\n      return getSymbol(\n      /** @type {import('eslint').Rule.Node} */\n        (node.body),\n        globals,\n        scope,\n        opts,\n      );\n    }\n\n    case 'Identifier': {\n      return getIdentifier(node, globals, scope, opts);\n    }\n\n    case 'Literal': {\n      const val = createNode();\n      val.type = 'literal';\n      val.value = node;\n\n      return val;\n    }\n\n    case 'MemberExpression': {\n      const obj = getSymbol(\n      /** @type {import('eslint').Rule.Node} */\n        (node.object),\n        globals,\n        scope,\n        opts,\n      );\n      const propertySymbol = getSymbol(\n      /** @type {import('eslint').Rule.Node} */\n        (node.property),\n        globals,\n        scope,\n        {\n          simpleIdentifier: !node.computed,\n        },\n      );\n      const propertyValue = getSymbolValue(propertySymbol);\n\n      /* c8 ignore else */\n      if (obj && propertyValue && obj.props[propertyValue]) {\n        const block = obj.props[propertyValue];\n\n        return block;\n      }\n      /* c8 ignore next 11 */\n      /*\n    if (opts.createMissingProps && propertyValue) {\n      obj.props[propertyValue] = createNode();\n\n      return obj.props[propertyValue];\n    }\n    */\n      // eslint-disable-next-line @stylistic/padding-line-between-statements -- c8\n      debug(`MemberExpression: Missing property ${\n      /** @type {import('estree').PrivateIdentifier} */ (node.property).name\n      }`);\n      /* c8 ignore next 2 */\n      return null;\n    }\n\n    case 'ObjectExpression': {\n      const val = createNode();\n      val.type = 'object';\n      for (const prop of node.properties) {\n        if ([\n        // @babel/eslint-parser\n          'ExperimentalSpreadProperty',\n\n          // typescript-eslint, espree, acorn, etc.\n          'SpreadElement',\n        ].includes(prop.type)) {\n          continue;\n        }\n\n        const propVal = getSymbol(\n        /** @type {import('eslint').Rule.Node} */ (\n          /** @type {import('estree').Property} */\n            (prop).value\n          ),\n          globals,\n          scope,\n          opts,\n        );\n        /* c8 ignore next 8 */\n        if (propVal) {\n          val.props[\n          /** @type {import('estree').Identifier} */\n            (\n            /** @type {import('estree').Property} */ (prop).key\n            ).name\n          ] = propVal;\n        }\n      }\n\n      return val;\n    }\n  }\n  /* c8 ignore next 2 */\n  // eslint-disable-next-line @stylistic/padding-line-between-statements -- c8\n  return null;\n};\n\n/**\n *\n * @param {CreatedNode} block\n * @param {string} name\n * @param {CreatedNode|null} value\n * @param {CreatedNode} globals\n * @param {boolean|SymbolOptions|undefined} isGlobal\n * @returns {void}\n */\nconst createBlockSymbol = function (block, name, value, globals, isGlobal) {\n  block.props[name] = value;\n  if (isGlobal && globals.props.window && globals.props.window.special) {\n    globals.props.window.props[name] = value;\n  }\n};\n\ncreateSymbol = function (node, globals, value, scope, isGlobal) {\n  const block = scope || globals;\n  /* c8 ignore next 3 */\n  if (!node) {\n    return null;\n  }\n\n  let symbol;\n  switch (node.type) {\n    case 'ClassDeclaration':\n      /* c8 ignore next */\n      // @ts-expect-error TS OK\n      // Fall through\n    case 'FunctionDeclaration': case 'TSEnumDeclaration':\n      /* c8 ignore next */\n      // @ts-expect-error TS OK\n      // Fall through\n    case 'TSInterfaceDeclaration': case 'TSTypeAliasDeclaration': {\n      const nde = /** @type {import('estree').ClassDeclaration} */ (node);\n      /* c8 ignore else */\n      if (nde.id && nde.id.type === 'Identifier') {\n        return createSymbol(\n        /** @type {import('eslint').Rule.Node} */ (nde.id),\n          globals,\n          node,\n          globals,\n        );\n      }\n      /* c8 ignore next 3 */\n      // eslint-disable-next-line @stylistic/padding-line-between-statements -- c8\n      break;\n    }\n\n    case 'Identifier': {\n      const nde = /** @type {import('estree').Identifier} */ (node);\n      if (value) {\n        const valueSymbol = getSymbol(value, globals, block);\n        /* c8 ignore else */\n        if (valueSymbol) {\n          createBlockSymbol(block, nde.name, valueSymbol, globals, isGlobal);\n\n          return block.props[nde.name];\n        }\n        /* c8 ignore next 2 */\n        // eslint-disable-next-line @stylistic/padding-line-between-statements -- c8\n        debug('Identifier: Missing value symbol for %s', nde.name);\n      } else {\n        createBlockSymbol(block, nde.name, createNode(), globals, isGlobal);\n\n        return block.props[nde.name];\n      }\n      /* c8 ignore next 3 */\n      // eslint-disable-next-line @stylistic/padding-line-between-statements -- c8\n      break;\n    }\n\n    case 'MemberExpression': {\n      const nde = /** @type {import('estree').MemberExpression} */ (node);\n      symbol = getSymbol(\n      /** @type {import('eslint').Rule.Node} */ (nde.object), globals, block,\n      );\n\n      const propertySymbol = getSymbol(\n      /** @type {import('eslint').Rule.Node} */ (nde.property),\n        globals,\n        block,\n        {\n          simpleIdentifier: !nde.computed,\n        },\n      );\n      const propertyValue = getSymbolValue(propertySymbol);\n      if (symbol && propertyValue) {\n        createBlockSymbol(symbol, propertyValue, getSymbol(\n        /** @type {import('eslint').Rule.Node} */\n          (value), globals, block,\n        ), globals, isGlobal);\n        return symbol.props[propertyValue];\n      }\n\n      debug(\n        'MemberExpression: Missing symbol: %s',\n        /** @type {import('estree').Identifier} */ (\n          nde.property\n        ).name,\n      );\n      break;\n    }\n  }\n\n  return null;\n};\n\n/**\n * Creates variables from variable definitions\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globals\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opts\n * @returns {void}\n */\nconst initVariables = function (node, globals, opts) {\n  switch (node.type) {\n    case 'ExportNamedDeclaration': {\n      if (node.declaration) {\n        initVariables(\n        /** @type {import('eslint').Rule.Node} */\n          (node.declaration),\n          globals,\n          opts,\n        );\n      }\n\n      break;\n    }\n\n    case 'ExpressionStatement': {\n      initVariables(\n      /** @type {import('eslint').Rule.Node} */\n        (node.expression),\n        globals,\n        opts,\n      );\n      break;\n    }\n\n    case 'Program': {\n      for (const childNode of node.body) {\n        initVariables(\n        /** @type {import('eslint').Rule.Node} */\n          (childNode),\n          globals,\n          opts,\n        );\n      }\n\n      break;\n    }\n\n    case 'VariableDeclaration': {\n      for (const declaration of node.declarations) {\n      // let and const\n        const symbol = createSymbol(\n        /** @type {import('eslint').Rule.Node} */\n          (declaration.id),\n          globals,\n          null,\n          globals,\n        );\n        if (opts.initWindow && node.kind === 'var' && globals.props.window) {\n        // If var, also add to window\n          globals.props.window.props[\n          /** @type {import('estree').Identifier} */\n            (declaration.id).name\n          ] = symbol;\n        }\n      }\n\n      break;\n    }\n  }\n};\n\n/**\n * Populates variable maps using AST\n * @param {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node} node\n * @param {CreatedNode} globals\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @param {true} [isExport]\n * @returns {boolean}\n */\nconst mapVariables = function (node, globals, opt, isExport) {\n  /* c8 ignore next */\n  const opts = opt || {};\n  /* c8 ignore next */\n  switch (node.type) {\n    case 'AssignmentExpression': {\n      createSymbol(\n      /** @type {import('eslint').Rule.Node} */\n        (node.left),\n        globals,\n        /** @type {import('eslint').Rule.Node} */\n        (node.right),\n      );\n      break;\n    }\n\n    case 'ClassDeclaration': {\n      createSymbol(\n      /** @type {import('eslint').Rule.Node|null} */ (node.id),\n        globals,\n        /** @type {import('eslint').Rule.Node} */ (node.body),\n        globals,\n      );\n      break;\n    }\n\n    case 'ExportDefaultDeclaration': {\n      const symbol = createSymbol(\n      /** @type {import('eslint').Rule.Node} */\n        (node.declaration),\n        globals,\n        /** @type {import('eslint').Rule.Node} */\n        (node.declaration),\n      );\n      if (symbol) {\n        symbol.exported = true;\n        /* c8 ignore next 6 */\n      } else {\n      // if (!node.id) {\n        globals.ANONYMOUS_DEFAULT = /** @type {import('eslint').Rule.Node} */ (\n          node.declaration\n        );\n      }\n\n      break;\n    }\n\n    case 'ExportNamedDeclaration': {\n      if (node.declaration) {\n        if (node.declaration.type === 'VariableDeclaration') {\n          mapVariables(\n          /** @type {import('eslint').Rule.Node} */\n            (node.declaration),\n            globals,\n            opts,\n            true,\n          );\n        } else {\n          const symbol = createSymbol(\n          /** @type {import('eslint').Rule.Node} */\n            (node.declaration),\n            globals,\n            /** @type {import('eslint').Rule.Node} */\n            (node.declaration),\n          );\n          /* c8 ignore next 3 */\n          if (symbol) {\n            symbol.exported = true;\n          }\n        }\n      }\n\n      for (const specifier of node.specifiers) {\n        mapVariables(\n        /** @type {import('eslint').Rule.Node} */\n          (specifier),\n          globals,\n          opts,\n        );\n      }\n\n      break;\n    }\n\n    case 'ExportSpecifier': {\n      const symbol = getSymbol(\n      /** @type {import('eslint').Rule.Node} */\n        (node.local),\n        globals,\n        globals,\n      );\n      /* c8 ignore next 3 */\n      if (symbol) {\n        symbol.exported = true;\n      }\n\n      break;\n    }\n\n    case 'ExpressionStatement': {\n      mapVariables(\n      /** @type {import('eslint').Rule.Node} */\n        (node.expression),\n        globals,\n        opts,\n      );\n      break;\n    }\n\n    case 'FunctionDeclaration':\n\n    case 'TSTypeAliasDeclaration': {\n    /* c8 ignore next 10 */\n      if (/** @type {import('estree').Identifier} */ (node.id).type === 'Identifier') {\n        createSymbol(\n        /** @type {import('eslint').Rule.Node} */\n          (node.id),\n          globals,\n          node,\n          globals,\n          true,\n        );\n      }\n\n      break;\n    }\n\n    case 'Program': {\n      if (opts.ancestorsOnly) {\n        return false;\n      }\n\n      for (const childNode of node.body) {\n        mapVariables(\n        /** @type {import('eslint').Rule.Node} */\n          (childNode),\n          globals,\n          opts,\n        );\n      }\n\n      break;\n    }\n\n    case 'VariableDeclaration': {\n      for (const declaration of node.declarations) {\n        const isGlobal = Boolean(opts.initWindow && node.kind === 'var' && globals.props.window);\n        const symbol = createSymbol(\n        /** @type {import('eslint').Rule.Node} */\n          (declaration.id),\n          globals,\n          /** @type {import('eslint').Rule.Node} */\n          (declaration.init),\n          globals,\n          isGlobal,\n        );\n        if (symbol && isExport) {\n          symbol.exported = true;\n        }\n      }\n\n      break;\n    }\n\n    default: {\n    /* c8 ignore next */\n      return false;\n    }\n  }\n\n  return true;\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode|ValueObject|string|undefined|\n *   import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node} block\n * @param {(CreatedNode|ValueObject|string|\n *   import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node)[]} [cache]\n * @returns {boolean}\n */\nconst findNode = function (node, block, cache) {\n  let blockCache = cache || [];\n  if (!block || blockCache.includes(block)) {\n    return false;\n  }\n\n  blockCache = blockCache.slice();\n  blockCache.push(block);\n\n  if (\n    typeof block === 'object' &&\n    'type' in block &&\n    (block.type === 'object' || block.type === 'MethodDefinition') &&\n    block.value === node\n  ) {\n    return true;\n  }\n\n  if (typeof block !== 'object') {\n    return false;\n  }\n\n  const props = ('props' in block && block.props) || ('body' in block && block.body);\n  for (const propval of Object.values(props || {})) {\n    if (Array.isArray(propval)) {\n      /* c8 ignore next 5 */\n      if (propval.some((val) => {\n        return findNode(node, val, blockCache);\n      })) {\n        return true;\n      }\n    } else if (findNode(node, propval, blockCache)) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\nconst exportTypes = new Set([\n  'ExportDefaultDeclaration', 'ExportNamedDeclaration',\n]);\nconst ignorableNestedTypes = new Set([\n  'ArrowFunctionExpression', 'FunctionDeclaration', 'FunctionExpression',\n]);\n\n/**\n * @param {import('eslint').Rule.Node} nde\n * @returns {import('eslint').Rule.Node|false}\n */\nconst getExportAncestor = function (nde) {\n  /** @type {import('eslint').Rule.Node|null} */\n  let node = nde;\n  let idx = 0;\n  const ignorableIfDeep = ignorableNestedTypes.has(nde?.type);\n  while (node) {\n    // Ignore functions nested more deeply than say `export default function () {}`\n    if (idx >= 2 && ignorableIfDeep) {\n      break;\n    }\n\n    if (exportTypes.has(node.type)) {\n      return node;\n    }\n\n    node = node.parent;\n    idx++;\n  }\n\n  return false;\n};\n\nconst canBeExportedByAncestorType = new Set([\n  'ClassProperty',\n  'Method',\n  'PropertyDefinition',\n  'TSMethodSignature',\n  'TSPropertySignature',\n]);\n\nconst canExportChildrenType = new Set([\n  'ClassBody',\n  'ClassDeclaration',\n  'ClassDefinition',\n  'ClassExpression',\n  'Program',\n  'TSInterfaceBody',\n  'TSInterfaceDeclaration',\n  'TSTypeAliasDeclaration',\n  'TSTypeLiteral',\n  'TSTypeParameterInstantiation',\n  'TSTypeReference',\n]);\n\n/**\n * @param {import('eslint').Rule.Node} nde\n * @returns {false|import('eslint').Rule.Node}\n */\nconst isExportByAncestor = function (nde) {\n  if (!canBeExportedByAncestorType.has(nde.type)) {\n    return false;\n  }\n\n  let node = nde.parent;\n  while (node) {\n    if (exportTypes.has(node.type)) {\n      return node;\n    }\n\n    if (!canExportChildrenType.has(node.type)) {\n      return false;\n    }\n\n    node = node.parent;\n  }\n\n  return false;\n};\n\n/**\n *\n * @param {CreatedNode} block\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode[]} [cache] Currently unused\n * @returns {boolean}\n */\nconst findExportedNode = function (block, node, cache) {\n  /* c8 ignore next 3 */\n  if (block === null) {\n    return false;\n  }\n\n  const blockCache = cache || [];\n  const {\n    props,\n  } = block;\n  for (const propval of Object.values(props)) {\n    const pval = /** @type {CreatedNode} */ (propval);\n    blockCache.push(pval);\n    if (pval.exported && (node === pval.value || findNode(node, pval.value))) {\n      return true;\n    }\n\n    // No need to check `propval` for exported nodes as ESM\n    //  exports are only global\n  }\n\n  return false;\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globals\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @returns {boolean}\n */\nconst isNodeExported = function (node, globals, opt) {\n  const moduleExports = globals.props.module?.props?.exports;\n  if (\n    opt.initModuleExports && moduleExports && findNode(node, moduleExports)\n  ) {\n    return true;\n  }\n\n  if (opt.initWindow && globals.props.window && findNode(node, globals.props.window)) {\n    return true;\n  }\n\n  if (opt.esm && findExportedNode(globals, node)) {\n    return true;\n  }\n\n  return false;\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globalVars\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opts\n * @returns {boolean}\n */\nconst parseRecursive = function (node, globalVars, opts) {\n  // Iterate from top using recursion - stop at first processed node from top\n  if (node.parent && parseRecursive(node.parent, globalVars, opts)) {\n    return true;\n  }\n\n  return mapVariables(node, globalVars, opts);\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} ast\n * @param {import('eslint').Rule.Node} node\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @returns {CreatedNode}\n */\nconst parse = function (ast, node, opt) {\n  /* c8 ignore next 6 */\n  const opts = opt || {\n    ancestorsOnly: false,\n    esm: true,\n    initModuleExports: true,\n    initWindow: true,\n  };\n\n  const globalVars = createNode();\n  if (opts.initModuleExports) {\n    globalVars.props.module = createNode();\n    globalVars.props.module.props.exports = createNode();\n    globalVars.props.exports = globalVars.props.module.props.exports;\n  }\n\n  if (opts.initWindow) {\n    globalVars.props.window = createNode();\n    globalVars.props.window.special = true;\n  }\n\n  if (opts.ancestorsOnly) {\n    parseRecursive(node, globalVars, opts);\n  } else {\n    initVariables(ast, globalVars, opts);\n    mapVariables(ast, globalVars, opts);\n  }\n\n  return {\n    globalVars,\n    props: {},\n  };\n};\n\nconst accessibilityNodes = new Set([\n  'MethodDefinition',\n  'PropertyDefinition',\n]);\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @returns {boolean}\n */\nconst isPrivate = (node) => {\n  return accessibilityNodes.has(node.type) &&\n    (\n      'accessibility' in node &&\n      node.accessibility !== 'public' && node.accessibility !== undefined\n    ) ||\n  'key' in node &&\n    node.key.type === 'PrivateIdentifier';\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {import('eslint').SourceCode} sourceCode\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @param {import('./iterateJsdoc.js').Settings} settings\n * @returns {boolean}\n */\nconst isUncommentedExport = function (node, sourceCode, opt, settings) {\n  // console.log({node});\n  // Optimize with ancestor check for esm\n  if (opt.esm) {\n    if (isPrivate(node) ||\n      node.parent && isPrivate(node.parent)) {\n      return false;\n    }\n\n    const exportNode = getExportAncestor(node);\n\n    // Is export node comment\n    if (exportNode && !findJSDocComment(exportNode, sourceCode, settings)) {\n      return true;\n    }\n\n    /**\n     * Some typescript types are not in variable map, but inherit exported (interface property and method)\n     */\n    if (\n      isExportByAncestor(node) &&\n      !findJSDocComment(node, sourceCode, settings)\n    ) {\n      return true;\n    }\n  }\n\n  const ast = /** @type {unknown} */ (sourceCode.ast);\n\n  const parseResult = parse(\n    /** @type {import('eslint').Rule.Node} */\n    (ast),\n    node,\n    opt,\n  );\n\n  return isNodeExported(\n    node, /** @type {CreatedNode} */ (parseResult.globalVars), opt,\n  );\n};\n\nexport default {\n  isUncommentedExport,\n  parse,\n};\n"],"mappings":"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","ignoreList":[]}