{"version":3,"file":"importsAsDependencies.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdoccomment","_fs","_nodeModule","_path","e","__esModule","default","deps","setDeps","pkg","JSON","parse","readFileSync","join","process","cwd","Set","dependencies","Object","keys","devDependencies","error","console","log","moduleCheck","Map","_default","exports","iterateJsdoc","jsdoc","settings","utils","undefined","mode","tag","tags","typeAst","tryParse","type","traverse","nde","mod","element","value","replace","test","isBuiltinModule","has","types","typings","set","get","reportJSDoc","iterateAllJsdocs","meta","docs","description","url","module"],"sources":["../../src/rules/importsAsDependencies.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n  parse,\n  traverse,\n  tryParse,\n} from '@es-joy/jsdoccomment';\nimport {\n  readFileSync,\n} from 'fs';\nimport {isBuiltin as isBuiltinModule} from 'node:module';\nimport {\n  join,\n} from 'path';\n\n/**\n * @type {Set<string>|null}\n */\nlet deps;\n\nconst setDeps = function () {\n  try {\n    const pkg = JSON.parse(\n      // @ts-expect-error It's ok\n      readFileSync(join(process.cwd(), './package.json')),\n    );\n    deps = new Set([\n      ...(pkg.dependencies ?\n        /* c8 ignore next 2 */\n        Object.keys(pkg.dependencies) :\n        []),\n      ...(pkg.devDependencies ?\n        /* c8 ignore next 2 */\n        Object.keys(pkg.devDependencies) :\n        []),\n    ]);\n  /* c8 ignore next -- our package.json exists */\n  } catch (error) {\n    /* c8 ignore next -- our package.json exists */\n    deps = null;\n    /* c8 ignore next 4 -- our package.json exists */\n    /* eslint-disable no-console -- Inform user */\n    console.log(error);\n    /* eslint-enable no-console -- Inform user */\n  }\n};\n\nconst moduleCheck = new Map();\n\nexport default iterateJsdoc(({\n  jsdoc,\n  settings,\n  utils,\n}) => {\n  if (deps === undefined) {\n    setDeps();\n  }\n\n  /* c8 ignore next 3 -- our package.json exists */\n  if (deps === null) {\n    return;\n  }\n\n  const {\n    mode,\n  } = settings;\n\n  for (const tag of jsdoc.tags) {\n    let typeAst;\n    try {\n      typeAst = mode === 'permissive' ? tryParse(tag.type) : parse(tag.type, mode);\n    } catch {\n      continue;\n    }\n\n    // eslint-disable-next-line no-loop-func -- Safe\n    traverse(typeAst, (nde) => {\n      /* c8 ignore next 3 -- TS guard */\n      if (deps === null) {\n        return;\n      }\n\n      if (nde.type === 'JsdocTypeImport') {\n        let mod = nde.element.value.replace(\n          /^(@[^/]+\\/[^/]+|[^/]+).*$/u, '$1',\n        );\n\n        if ((/^[./]/u).test(mod)) {\n          return;\n        }\n\n        if (isBuiltinModule(mod)) {\n          // mod = '@types/node';\n          // moduleCheck.set(mod, !deps.has(mod));\n          return;\n        } else if (!moduleCheck.has(mod)) {\n          let pkg;\n          try {\n            pkg = JSON.parse(\n              // @ts-expect-error It's ok\n              readFileSync(join(process.cwd(), 'node_modules', mod, './package.json')),\n            );\n          } catch {\n            // Ignore\n          }\n\n          if (!pkg || (!pkg.types && !pkg.typings)) {\n            mod = `@types/${mod}`;\n          }\n\n          moduleCheck.set(mod, !deps.has(mod));\n        }\n\n        if (moduleCheck.get(mod)) {\n          utils.reportJSDoc(\n            'import points to package which is not found in dependencies',\n            tag,\n          );\n        }\n      }\n    });\n  }\n}, {\n  iterateAllJsdocs: true,\n  meta: {\n    docs: {\n      description: 'Reports if JSDoc `import()` statements point to a package which is not listed in `dependencies` or `devDependencies`',\n      url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/imports-as-dependencies.md#repos-sticky-header',\n    },\n    type: 'suggestion',\n  },\n});\n"],"mappings":"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","ignoreList":[]}