{"version":3,"file":"exportParser.cjs","names":["_jsdoccomment","require","_debug","_interopRequireDefault","e","__esModule","default","debug","debugModule","createNode","props","getSymbolValue","symbol","type","value","getIdentifier","node","globals","scope","opts","simpleIdentifier","identifierLiteral","name","block","createSymbol","getSymbol","opt","obj","object","propertySymbol","property","computed","propertyValue","body","val","prototype","left","right","method","key","parent","prop","properties","includes","propVal","createBlockSymbol","isGlobal","window","special","nde","id","valueSymbol","initVariables","childNode","expression","declaration","declarations","initWindow","kind","mapVariables","isExport","ancestorsOnly","Boolean","init","exported","ANONYMOUS_DEFAULT","specifier","specifiers","local","findNode","cache","blockCache","slice","push","propval","Object","values","Array","isArray","some","exportTypes","Set","ignorableNestedTypes","getExportAncestor","idx","ignorableIfDeep","has","canBeExportedByAncestorType","canExportChildrenType","isExportByAncestor","findExportedNode","pval","isNodeExported","_globals$props$module","moduleExports","module","exports","initModuleExports","esm","parseRecursive","globalVars","parse","ast","accessibilityNodes","isPrivate","accessibility","undefined","isUncommentedExport","sourceCode","settings","exportNode","findJSDocComment","parseResult","_default"],"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 */\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/* eslint-disable complexity -- Temporary */\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  /* eslint-enable complexity -- Temporary */\n  const opts = opt || {};\n  /* c8 ignore next */\n  switch (node.type) {\n  case 'Identifier': {\n    return getIdentifier(node, globals, scope, opts);\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 10 */\n    /*\n    if (opts.createMissingProps && propertyValue) {\n      obj.props[propertyValue] = createNode();\n\n      return obj.props[propertyValue];\n    }\n    */\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 'ClassExpression': {\n    return getSymbol(\n      /** @type {import('eslint').Rule.Node} */\n      (node.body),\n      globals,\n      scope,\n      opts,\n    );\n  }\n\n  /* c8 ignore next 4 -- No longer needed? */\n  case 'TSTypeAliasDeclaration':\n  // Fallthrough\n  case 'TSEnumDeclaration':\n  case 'TSInterfaceDeclaration':\n  case 'ClassDeclaration':\n  case 'FunctionExpression': case 'FunctionDeclaration':\n  case 'ArrowFunctionExpression': {\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      if (!('key' in method)) { // StaticBlock\n        continue;\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 'ObjectExpression': {\n    const val = createNode();\n    val.type = 'object';\n    for (const prop of node.properties) {\n      if ([\n        // typescript-eslint, espree, acorn, etc.\n        'SpreadElement',\n\n        // @babel/eslint-parser\n        'ExperimentalSpreadProperty',\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').PrivateIdentifier} */\n          (\n            /** @type {import('estree').Property} */ (prop).key\n          ).name\n        ] = propVal;\n      }\n    }\n\n    return val;\n  }\n\n  case 'Literal': {\n    const val = createNode();\n    val.type = 'literal';\n    val.value = node;\n\n    return val;\n  }\n  }\n  /* c8 ignore next */\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 'FunctionDeclaration':\n  /* c8 ignore next */\n  // @ts-expect-error TS OK\n  // Fall through\n  case 'TSEnumDeclaration': case 'TSInterfaceDeclaration':\n  /* c8 ignore next */\n  // @ts-expect-error TS OK\n  // Fall through\n  case 'TSTypeAliasDeclaration': case 'ClassDeclaration': {\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 2 */\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 */\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 2 */\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 '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 'ExpressionStatement': {\n    initVariables(\n      /** @type {import('eslint').Rule.Node} */\n      (node.expression),\n      globals,\n      opts,\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  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};\n\n/* eslint-disable complexity -- Temporary */\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  /* eslint-enable complexity -- Temporary */\n  /* c8 ignore next */\n  const opts = opt || {};\n  /* c8 ignore next */\n  switch (node.type) {\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 'ExpressionStatement': {\n    mapVariables(\n      /** @type {import('eslint').Rule.Node} */\n      (node.expression),\n      globals,\n      opts,\n    );\n    break;\n  }\n\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 '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  case 'TSTypeAliasDeclaration':\n  case 'FunctionDeclaration': {\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 '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 '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  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  'ExportNamedDeclaration', 'ExportDefaultDeclaration',\n]);\nconst ignorableNestedTypes = new Set([\n  'FunctionDeclaration', 'ArrowFunctionExpression', 'FunctionExpression',\n]);\n\n/**\n * @param {import('eslint').Rule.Node} nde\n * @returns {import('eslint').Rule.Node|false}\n */\nconst getExportAncestor = function (nde) {\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  'TSPropertySignature',\n  'TSMethodSignature',\n  'ClassProperty',\n  'PropertyDefinition',\n  'Method',\n]);\n\nconst canExportChildrenType = new Set([\n  'TSInterfaceBody',\n  'TSInterfaceDeclaration',\n  'TSTypeLiteral',\n  'TSTypeAliasDeclaration',\n  'TSTypeParameterInstantiation',\n  'TSTypeReference',\n  'ClassDeclaration',\n  'ClassBody',\n  'ClassDefinition',\n  'ClassExpression',\n  'Program',\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  'PropertyDefinition',\n  'MethodDefinition',\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":[]}