eslint-plugin-jsdoc 50.6.8 → 50.6.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,13 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _nodePath = require("node:path");
8
8
  var _nodeUrl = require("node:url");
9
- var _synckit = require("synckit");
10
9
  var _semver = _interopRequireDefault(require("semver"));
11
10
  var _spdxExpressionParse = _interopRequireDefault(require("spdx-expression-parse"));
11
+ var _parseImportsExports = require("parse-imports-exports");
12
12
  var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
14
  const _dirname = (0, _nodePath.dirname)((0, _nodeUrl.fileURLToPath)(require('url').pathToFileURL(__filename).toString()));
15
- const pathName = (0, _nodePath.join)(_dirname, '../import-worker.mjs');
16
15
  const allowedKinds = new Set(['class', 'constant', 'event', 'external', 'file', 'function', 'member', 'mixin', 'module', 'namespace', 'typedef']);
17
16
  var _default = exports.default = (0, _iterateJsdoc.default)(({
18
17
  utils,
@@ -98,8 +97,8 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
98
97
  } = tag;
99
98
  const typePart = type ? `{${type}} ` : '';
100
99
  const imprt = 'import ' + (description ? `${typePart}${name} ${description}` : `${typePart}${name}`);
101
- const getImports = (0, _synckit.createSyncFn)(pathName);
102
- if (!getImports(imprt)) {
100
+ const importsExports = (0, _parseImportsExports.parseImportsExports)(imprt);
101
+ if (importsExports.errors) {
103
102
  report(`Bad @import tag`, null, tag);
104
103
  }
105
104
  });
@@ -1 +1 @@
1
- {"version":3,"file":"checkValues.cjs","names":["_nodePath","require","_nodeUrl","_synckit","_semver","_interopRequireDefault","_spdxExpressionParse","_iterateJsdoc","e","__esModule","default","__dirname","dirname","fileURLToPath","pathToFileURL","__filename","toString","pathName","join","allowedKinds","Set","_default","exports","iterateJsdoc","utils","report","context","settings","options","allowedLicenses","allowedAuthors","numericOnlyVariation","licensePattern","forEachPreferredTag","jsdocParameter","targetTagName","version","getTagDescription","trim","semver","valid","kind","has","variation","Number","isInteger","licenseRegex","getRegexFromString","matches","matchAll","positiveMatch","match","license","includes","spdxExpressionParse","mode","tag","type","name","description","typePart","imprt","getImports","createSyncFn","author","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","items","anyOf","module"],"sources":["../../src/rules/checkValues.js"],"sourcesContent":["import { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport { createSyncFn } from 'synckit';\nimport semver from 'semver';\nimport spdxExpressionParse from 'spdx-expression-parse';\nimport iterateJsdoc from '../iterateJsdoc.js';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst pathName = join(__dirname, '../import-worker.mjs');\n\nconst allowedKinds = new Set([\n 'class',\n 'constant',\n 'event',\n 'external',\n 'file',\n 'function',\n 'member',\n 'mixin',\n 'module',\n 'namespace',\n 'typedef',\n]);\n\nexport default iterateJsdoc(({\n utils,\n report,\n context,\n settings,\n}) => {\n const options = context.options[0] || {};\n const {\n allowedLicenses = null,\n allowedAuthors = null,\n numericOnlyVariation = false,\n licensePattern = '/([^\\n\\r]*)/gu',\n } = options;\n\n utils.forEachPreferredTag('version', (jsdocParameter, targetTagName) => {\n const version = /** @type {string} */ (\n utils.getTagDescription(jsdocParameter)\n ).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n\n utils.forEachPreferredTag('kind', (jsdocParameter, targetTagName) => {\n const kind = /** @type {string} */ (\n utils.getTagDescription(jsdocParameter)\n ).trim();\n if (!kind) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!allowedKinds.has(kind)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; ` +\n `must be one of: ${[\n ...allowedKinds,\n ].join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n\n if (numericOnlyVariation) {\n utils.forEachPreferredTag('variation', (jsdocParameter, targetTagName) => {\n const variation = /** @type {string} */ (\n utils.getTagDescription(jsdocParameter)\n ).trim();\n if (!variation) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (\n !Number.isInteger(Number(variation)) ||\n Number(variation) <= 0\n ) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n }\n\n utils.forEachPreferredTag('since', (jsdocParameter, targetTagName) => {\n const version = /** @type {string} */ (\n utils.getTagDescription(jsdocParameter)\n ).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => {\n const licenseRegex = utils.getRegexFromString(licensePattern, 'g');\n const matches = /** @type {string} */ (\n utils.getTagDescription(jsdocParameter)\n ).matchAll(licenseRegex);\n let positiveMatch = false;\n for (const match of matches) {\n const license = match[1] || match[0];\n if (license) {\n positiveMatch = true;\n }\n\n if (!license.trim()) {\n // Avoid reporting again as empty match\n if (positiveMatch) {\n return;\n }\n\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedLicenses) {\n if (allowedLicenses !== true && !allowedLicenses.includes(license)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected one of ${allowedLicenses.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n } else {\n try {\n spdxExpressionParse(license);\n } catch {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected SPDX expression: https://spdx.org/licenses/.`,\n null,\n jsdocParameter,\n );\n }\n }\n }\n });\n\n if (settings.mode === 'typescript') {\n utils.forEachPreferredTag('import', (tag) => {\n const {\n type, name, description\n } = tag;\n const typePart = type ? `{${type}} `: '';\n const imprt = 'import ' + (description\n ? `${typePart}${name} ${description}`\n : `${typePart}${name}`);\n\n const getImports = createSyncFn(pathName);\n if (!getImports(imprt)) {\n report(\n `Bad @import tag`,\n null,\n tag,\n );\n }\n });\n }\n\n utils.forEachPreferredTag('author', (jsdocParameter, targetTagName) => {\n const author = /** @type {string} */ (\n utils.getTagDescription(jsdocParameter)\n ).trim();\n if (!author) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedAuthors && !allowedAuthors.includes(author)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; expected one of ${allowedAuthors.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-values.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowedAuthors: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n allowedLicenses: {\n anyOf: [\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n {\n type: 'boolean',\n },\n ],\n },\n licensePattern: {\n type: 'string',\n },\n numericOnlyVariation: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"checkValues.cjs","names":["_nodePath","require","_nodeUrl","_semver","_interopRequireDefault","_spdxExpressionParse","_parseImportsExports","_iterateJsdoc","e","__esModule","default","__dirname","dirname","fileURLToPath","pathToFileURL","__filename","toString","allowedKinds","Set","_default","exports","iterateJsdoc","utils","report","context","settings","options","allowedLicenses","allowedAuthors","numericOnlyVariation","licensePattern","forEachPreferredTag","jsdocParameter","targetTagName","version","getTagDescription","trim","semver","valid","kind","has","join","variation","Number","isInteger","licenseRegex","getRegexFromString","matches","matchAll","positiveMatch","match","license","includes","spdxExpressionParse","mode","tag","type","name","description","typePart","imprt","importsExports","parseImportsExports","errors","author","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","items","anyOf","module"],"sources":["../../src/rules/checkValues.js"],"sourcesContent":["import { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport semver from 'semver';\nimport spdxExpressionParse from 'spdx-expression-parse';\nimport {parseImportsExports} from 'parse-imports-exports';\nimport iterateJsdoc from '../iterateJsdoc.js';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst allowedKinds = new Set([\n 'class',\n 'constant',\n 'event',\n 'external',\n 'file',\n 'function',\n 'member',\n 'mixin',\n 'module',\n 'namespace',\n 'typedef',\n]);\n\nexport default iterateJsdoc(({\n utils,\n report,\n context,\n settings,\n}) => {\n const options = context.options[0] || {};\n const {\n allowedLicenses = null,\n allowedAuthors = null,\n numericOnlyVariation = false,\n licensePattern = '/([^\\n\\r]*)/gu',\n } = options;\n\n utils.forEachPreferredTag('version', (jsdocParameter, targetTagName) => {\n const version = /** @type {string} */ (\n utils.getTagDescription(jsdocParameter)\n ).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n\n utils.forEachPreferredTag('kind', (jsdocParameter, targetTagName) => {\n const kind = /** @type {string} */ (\n utils.getTagDescription(jsdocParameter)\n ).trim();\n if (!kind) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!allowedKinds.has(kind)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; ` +\n `must be one of: ${[\n ...allowedKinds,\n ].join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n\n if (numericOnlyVariation) {\n utils.forEachPreferredTag('variation', (jsdocParameter, targetTagName) => {\n const variation = /** @type {string} */ (\n utils.getTagDescription(jsdocParameter)\n ).trim();\n if (!variation) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (\n !Number.isInteger(Number(variation)) ||\n Number(variation) <= 0\n ) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n }\n\n utils.forEachPreferredTag('since', (jsdocParameter, targetTagName) => {\n const version = /** @type {string} */ (\n utils.getTagDescription(jsdocParameter)\n ).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => {\n const licenseRegex = utils.getRegexFromString(licensePattern, 'g');\n const matches = /** @type {string} */ (\n utils.getTagDescription(jsdocParameter)\n ).matchAll(licenseRegex);\n let positiveMatch = false;\n for (const match of matches) {\n const license = match[1] || match[0];\n if (license) {\n positiveMatch = true;\n }\n\n if (!license.trim()) {\n // Avoid reporting again as empty match\n if (positiveMatch) {\n return;\n }\n\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedLicenses) {\n if (allowedLicenses !== true && !allowedLicenses.includes(license)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected one of ${allowedLicenses.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n } else {\n try {\n spdxExpressionParse(license);\n } catch {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected SPDX expression: https://spdx.org/licenses/.`,\n null,\n jsdocParameter,\n );\n }\n }\n }\n });\n\n if (settings.mode === 'typescript') {\n utils.forEachPreferredTag('import', (tag) => {\n const {\n type, name, description\n } = tag;\n const typePart = type ? `{${type}} `: '';\n const imprt = 'import ' + (description\n ? `${typePart}${name} ${description}`\n : `${typePart}${name}`);\n\n const importsExports = parseImportsExports(imprt);\n\n if (importsExports.errors) {\n report(\n `Bad @import tag`,\n null,\n tag,\n );\n }\n });\n }\n\n utils.forEachPreferredTag('author', (jsdocParameter, targetTagName) => {\n const author = /** @type {string} */ (\n utils.getTagDescription(jsdocParameter)\n ).trim();\n if (!author) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedAuthors && !allowedAuthors.includes(author)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; expected one of ${allowedAuthors.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-values.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowedAuthors: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n allowedLicenses: {\n anyOf: [\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n {\n type: 'boolean',\n },\n ],\n },\n licensePattern: {\n type: 'string',\n },\n numericOnlyVariation: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -6,13 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _path = require("path");
8
8
  var _url = require("url");
9
- var _synckit = require("synckit");
9
+ var _parseImportsExports = require("parse-imports-exports");
10
10
  var _jsdoccomment = require("@es-joy/jsdoccomment");
11
11
  var _iterateJsdoc = _interopRequireWildcard(require("../iterateJsdoc.cjs"));
12
12
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
13
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
14
  const _dirname = (0, _path.dirname)((0, _url.fileURLToPath)(require('url').pathToFileURL(__filename).toString()));
15
- const pathName = (0, _path.join)(_dirname, '../import-worker.mjs');
16
15
  const extraTypes = ['null', 'undefined', 'void', 'string', 'boolean', 'object', 'function', 'symbol', 'number', 'bigint', 'NaN', 'Infinity', 'any', '*', 'never', 'unknown', 'const', 'this', 'true', 'false', 'Array', 'Object', 'RegExp', 'Date', 'Function'];
17
16
  const typescriptGlobals = [
18
17
  // https://www.typescriptlang.org/docs/handbook/utility-types.html
@@ -98,6 +97,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
98
97
  return tag === 'import';
99
98
  });
100
99
  }).flatMap(tag => {
100
+ var _Object$values$, _Object$values$2;
101
101
  const {
102
102
  type,
103
103
  name,
@@ -105,36 +105,27 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
105
105
  } = tag;
106
106
  const typePart = type ? `{${type}} ` : '';
107
107
  const imprt = 'import ' + (description ? `${typePart}${name} ${description}` : `${typePart}${name}`);
108
- const getImports = (0, _synckit.createSyncFn)(pathName);
109
- const imports = /** @type {import('parse-imports').Import[]} */getImports(imprt);
110
- if (!imports) {
111
- return null;
112
- }
113
- return imports.flatMap(({
114
- importClause
115
- }) => {
116
- /* c8 ignore next */
117
- const {
118
- default: dflt,
119
- named,
120
- namespace
121
- } = importClause || {};
122
- const types = [];
123
- if (dflt) {
124
- types.push(dflt);
108
+ const importsExports = (0, _parseImportsExports.parseImportsExports)(imprt);
109
+ const types = [];
110
+ const namedImports = (_Object$values$ = Object.values(importsExports.namedImports || {})[0]) === null || _Object$values$ === void 0 ? void 0 : _Object$values$[0];
111
+ if (namedImports) {
112
+ if (namedImports.default) {
113
+ types.push(namedImports.default);
125
114
  }
126
- if (namespace) {
127
- types.push(namespace);
115
+ if (namedImports.names) {
116
+ types.push(...Object.keys(namedImports.names));
128
117
  }
129
- if (named) {
130
- for (const {
131
- binding
132
- } of named) {
133
- types.push(binding);
134
- }
118
+ }
119
+ const namespaceImports = (_Object$values$2 = Object.values(importsExports.namespaceImports || {})[0]) === null || _Object$values$2 === void 0 ? void 0 : _Object$values$2[0];
120
+ if (namespaceImports) {
121
+ if (namespaceImports.namespace) {
122
+ types.push(namespaceImports.namespace);
135
123
  }
136
- return types;
137
- });
124
+ if (namespaceImports.default) {
125
+ types.push(namespaceImports.default);
126
+ }
127
+ }
128
+ return types;
138
129
  }).filter(Boolean)) : [];
139
130
  const ancestorNodes = [];
140
131
  let currentNode = node;
@@ -1 +1 @@
1
- {"version":3,"file":"noUndefinedTypes.cjs","names":["_path","require","_url","_synckit","_jsdoccomment","_iterateJsdoc","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","__dirname","dirname","fileURLToPath","pathToFileURL","__filename","toString","pathName","join","extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","_default","exports","iterateJsdoc","context","node","report","settings","sourceCode","utils","_globalScope$childSco","scopeManager","globalScope","definedTypes","disableReporting","markVariablesAsUsed","options","definedPreferredTypes","preferredTypes","structuredTags","mode","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","Boolean","comments","getAllComments","comment","test","value","commentNode","parseComment","typedefDeclarations","flatMap","doc","tags","tag","isNamepathDefiningTag","name","importTags","type","description","typePart","imprt","getImports","createSyncFn","imports","importClause","dflt","named","namespace","types","push","binding","ancestorNodes","currentNode","_currentNode","parent","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","getValidRuntimeIdentifiers","scope","result","Set","variables","add","upper","allDefinedTypes","concat","getScope","tagToParsedType","propertyName","potentialType","parsedType","tryParseType","parseType","typeTags","filterTags","tagMightHaveTypePosition","namepathReferencingTags","isNamepathReferencingTag","namepathOrUrlReferencingTags","filterAllTags","isNamepathOrUrlReferencingTag","tagsWithTypes","traverse","nde","_structuredTags$tag$t","structuredTypes","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\n\nimport { createSyncFn } from 'synckit';\nimport {\n getJSDocComment,\n parse as parseType,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc.js';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst pathName = join(__dirname, '../import-worker.mjs');\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\nconst typescriptGlobals = [\n // https://www.typescriptlang.org/docs/handbook/utility-types.html\n 'Awaited',\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\n/**\n * @param {string|false|undefined} [str]\n * @returns {undefined|string|false}\n */\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n scopeManager,\n } = sourceCode;\n\n // When is this ever `null`?\n const globalScope = /** @type {import('eslint').Scope.Scope} */ (\n scopeManager.globalScope\n );\n\n const\n /**\n * @type {{\n * definedTypes: string[],\n * disableReporting: boolean,\n * markVariablesAsUsed: boolean\n * }}\n */ {\n definedTypes = [],\n disableReporting = false,\n markVariablesAsUsed = true,\n } = context.options[0] || {};\n\n /** @type {(string|undefined)[]} */\n let definedPreferredTypes = [];\n const {\n preferredTypes,\n structuredTags,\n mode,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = /** @type {string[]} */ (Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter(Boolean));\n }\n\n const comments = sourceCode.getAllComments()\n .filter((comment) => {\n return (/^\\*\\s/u).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n });\n\n const typedefDeclarations = comments\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n\n const importTags = settings.mode === 'typescript' ? /** @type {string[]} */ (comments.flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return tag === 'import';\n });\n }).flatMap((tag) => {\n const {\n type, name, description\n } = tag;\n const typePart = type ? `{${type}} `: '';\n const imprt = 'import ' + (description\n ? `${typePart}${name} ${description}`\n : `${typePart}${name}`);\n\n const getImports = createSyncFn(pathName);\n const imports = /** @type {import('parse-imports').Import[]} */ (getImports(imprt));\n if (!imports) {\n return null;\n }\n\n return imports.flatMap(({importClause}) => {\n /* c8 ignore next */\n const {default: dflt, named, namespace} = importClause || {};\n const types = [];\n if (dflt) {\n types.push(dflt);\n }\n if (namespace) {\n types.push(namespace);\n }\n if (named) {\n for (const {binding} of named) {\n types.push(binding);\n }\n }\n\n return types;\n });\n }).filter(Boolean)) : [];\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n /**\n * @param {import('eslint').Rule.Node} ancestorNode\n * @returns {import('comment-parser').Spec[]}\n */\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdoc.tags.filter((tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n utils.getPresentTags([\n 'template',\n ]);\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n /**\n * @param {import(\"eslint\").Scope.Scope | null} scope\n * @returns {Set<string>}\n */\n const getValidRuntimeIdentifiers = (scope) => {\n const result = new Set()\n while (scope) {\n for (const {name} of scope.variables) {\n result.add(name)\n }\n scope = scope.upper\n }\n return result\n };\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).map(({\n name,\n }) => {\n return name;\n /* c8 ignore next */\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(importTags)\n .concat(definedTypes)\n .concat(/** @type {string[]} */ (definedPreferredTypes))\n .concat(...getValidRuntimeIdentifiers(node && sourceCode.getScope(node)))\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n /**\n * @typedef {{\n * parsedType: import('jsdoc-type-pratt-parser').RootResult;\n * tag: import('comment-parser').Spec|import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: import('../iterateJsdoc.js').Integer\n * }\n * }} TypeAndTagInfo\n */\n\n /**\n * @param {string} propertyName\n * @returns {(tag: (import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * name?: string,\n * type?: string,\n * line?: import('../iterateJsdoc.js').Integer\n * })|import('comment-parser').Spec & {\n * namepathOrURL?: string\n * }\n * ) => undefined|TypeAndTagInfo}\n */\n const tagToParsedType = (propertyName) => {\n return (tag) => {\n try {\n const potentialType = tag[\n /** @type {\"type\"|\"name\"|\"namepathOrURL\"} */ (propertyName)\n ];\n return {\n parsedType: mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode),\n tag,\n };\n } catch {\n return undefined;\n }\n };\n };\n\n const typeTags = utils.filterTags(({\n tag,\n }) => {\n return tag !== 'import' && utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n }).map(tagToParsedType('type'));\n\n const namepathReferencingTags = utils.filterTags(({\n tag,\n }) => {\n return utils.isNamepathReferencingTag(tag);\n }).map(tagToParsedType('name'));\n\n const namepathOrUrlReferencingTags = utils.filterAllTags(({\n tag,\n }) => {\n return utils.isNamepathOrUrlReferencingTag(tag);\n }).map(tagToParsedType('namepathOrURL'));\n\n const tagsWithTypes = /** @type {TypeAndTagInfo[]} */ ([\n ...typeTags,\n ...namepathReferencingTags,\n ...namepathOrUrlReferencingTags,\n // Remove types which failed to parse\n ].filter(Boolean));\n\n for (const {\n tag,\n parsedType,\n } of tagsWithTypes) {\n traverse(parsedType, (nde) => {\n const {\n type,\n value,\n } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n if (!disableReporting) {\n report(`The type '${value}' is undefined.`, null, tag);\n }\n } else if (markVariablesAsUsed && !extraTypes.includes(value)) {\n if (sourceCode.markVariableAsUsed) {\n sourceCode.markVariableAsUsed(value);\n /* c8 ignore next 3 */\n } else {\n context.markVariableAsUsed(value);\n }\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n disableReporting: {\n type: 'boolean',\n },\n markVariablesAsUsed: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"noUndefinedTypes.cjs","names":["_path","require","_url","_parseImportsExports","_jsdoccomment","_iterateJsdoc","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","__dirname","dirname","fileURLToPath","pathToFileURL","__filename","toString","extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","_default","exports","iterateJsdoc","context","node","report","settings","sourceCode","utils","_globalScope$childSco","scopeManager","globalScope","definedTypes","disableReporting","markVariablesAsUsed","options","definedPreferredTypes","preferredTypes","structuredTags","mode","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","Boolean","comments","getAllComments","comment","test","value","commentNode","parseComment","typedefDeclarations","flatMap","doc","tags","tag","isNamepathDefiningTag","name","importTags","_Object$values$","_Object$values$2","type","description","typePart","imprt","importsExports","parseImportsExports","types","namedImports","push","names","namespaceImports","namespace","ancestorNodes","currentNode","_currentNode","parent","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","getValidRuntimeIdentifiers","scope","result","Set","variables","add","upper","allDefinedTypes","concat","getScope","tagToParsedType","propertyName","potentialType","parsedType","tryParseType","parseType","typeTags","filterTags","tagMightHaveTypePosition","namepathReferencingTags","isNamepathReferencingTag","namepathOrUrlReferencingTags","filterAllTags","isNamepathOrUrlReferencingTag","tagsWithTypes","traverse","nde","_structuredTags$tag$t","structuredTypes","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\n\nimport {parseImportsExports} from 'parse-imports-exports';\nimport {\n getJSDocComment,\n parse as parseType,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc.js';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\nconst typescriptGlobals = [\n // https://www.typescriptlang.org/docs/handbook/utility-types.html\n 'Awaited',\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\n/**\n * @param {string|false|undefined} [str]\n * @returns {undefined|string|false}\n */\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n scopeManager,\n } = sourceCode;\n\n // When is this ever `null`?\n const globalScope = /** @type {import('eslint').Scope.Scope} */ (\n scopeManager.globalScope\n );\n\n const\n /**\n * @type {{\n * definedTypes: string[],\n * disableReporting: boolean,\n * markVariablesAsUsed: boolean\n * }}\n */ {\n definedTypes = [],\n disableReporting = false,\n markVariablesAsUsed = true,\n } = context.options[0] || {};\n\n /** @type {(string|undefined)[]} */\n let definedPreferredTypes = [];\n const {\n preferredTypes,\n structuredTags,\n mode,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = /** @type {string[]} */ (Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter(Boolean));\n }\n\n const comments = sourceCode.getAllComments()\n .filter((comment) => {\n return (/^\\*\\s/u).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n });\n\n const typedefDeclarations = comments\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n\n const importTags = settings.mode === 'typescript' ? /** @type {string[]} */ (comments.flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return tag === 'import';\n });\n }).flatMap((tag) => {\n const {\n type, name, description\n } = tag;\n const typePart = type ? `{${type}} `: '';\n const imprt = 'import ' + (description\n ? `${typePart}${name} ${description}`\n : `${typePart}${name}`);\n\n const importsExports = parseImportsExports(imprt);\n\n const types = [];\n const namedImports = Object.values(importsExports.namedImports || {})[0]?.[0];\n if (namedImports) {\n if (namedImports.default) {\n types.push(namedImports.default);\n }\n if (namedImports.names) {\n types.push(...Object.keys(namedImports.names));\n }\n }\n\n const namespaceImports = Object.values(importsExports.namespaceImports || {})[0]?.[0];\n if (namespaceImports) {\n if (namespaceImports.namespace) {\n types.push(namespaceImports.namespace);\n }\n if (namespaceImports.default) {\n types.push(namespaceImports.default);\n }\n }\n\n return types;\n }).filter(Boolean)) : [];\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n /**\n * @param {import('eslint').Rule.Node} ancestorNode\n * @returns {import('comment-parser').Spec[]}\n */\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdoc.tags.filter((tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n utils.getPresentTags([\n 'template',\n ]);\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n /**\n * @param {import(\"eslint\").Scope.Scope | null} scope\n * @returns {Set<string>}\n */\n const getValidRuntimeIdentifiers = (scope) => {\n const result = new Set()\n while (scope) {\n for (const {name} of scope.variables) {\n result.add(name)\n }\n scope = scope.upper\n }\n return result\n };\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).map(({\n name,\n }) => {\n return name;\n /* c8 ignore next */\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(importTags)\n .concat(definedTypes)\n .concat(/** @type {string[]} */ (definedPreferredTypes))\n .concat(...getValidRuntimeIdentifiers(node && sourceCode.getScope(node)))\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n /**\n * @typedef {{\n * parsedType: import('jsdoc-type-pratt-parser').RootResult;\n * tag: import('comment-parser').Spec|import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: import('../iterateJsdoc.js').Integer\n * }\n * }} TypeAndTagInfo\n */\n\n /**\n * @param {string} propertyName\n * @returns {(tag: (import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * name?: string,\n * type?: string,\n * line?: import('../iterateJsdoc.js').Integer\n * })|import('comment-parser').Spec & {\n * namepathOrURL?: string\n * }\n * ) => undefined|TypeAndTagInfo}\n */\n const tagToParsedType = (propertyName) => {\n return (tag) => {\n try {\n const potentialType = tag[\n /** @type {\"type\"|\"name\"|\"namepathOrURL\"} */ (propertyName)\n ];\n return {\n parsedType: mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode),\n tag,\n };\n } catch {\n return undefined;\n }\n };\n };\n\n const typeTags = utils.filterTags(({\n tag,\n }) => {\n return tag !== 'import' && utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n }).map(tagToParsedType('type'));\n\n const namepathReferencingTags = utils.filterTags(({\n tag,\n }) => {\n return utils.isNamepathReferencingTag(tag);\n }).map(tagToParsedType('name'));\n\n const namepathOrUrlReferencingTags = utils.filterAllTags(({\n tag,\n }) => {\n return utils.isNamepathOrUrlReferencingTag(tag);\n }).map(tagToParsedType('namepathOrURL'));\n\n const tagsWithTypes = /** @type {TypeAndTagInfo[]} */ ([\n ...typeTags,\n ...namepathReferencingTags,\n ...namepathOrUrlReferencingTags,\n // Remove types which failed to parse\n ].filter(Boolean));\n\n for (const {\n tag,\n parsedType,\n } of tagsWithTypes) {\n traverse(parsedType, (nde) => {\n const {\n type,\n value,\n } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n if (!disableReporting) {\n report(`The type '${value}' is undefined.`, null, tag);\n }\n } else if (markVariablesAsUsed && !extraTypes.includes(value)) {\n if (sourceCode.markVariableAsUsed) {\n sourceCode.markVariableAsUsed(value);\n /* c8 ignore next 3 */\n } else {\n context.markVariableAsUsed(value);\n }\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n disableReporting: {\n type: 'boolean',\n },\n markVariablesAsUsed: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AAEA,IAAAE,oBAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAMA,IAAAI,aAAA,GAAAC,uBAAA,CAAAL,OAAA;AAE4B,SAAAM,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAE5B,MAAMW,QAAS,GAAG,IAAAC,aAAO,EAAC,IAAAC,kBAAa,EAAA5B,OAAA,QAAA6B,aAAA,CAAAC,UAAA,EAAAC,QAAA,EAAgB,CAAC,CAAC;AAEzD,MAAMC,UAAU,GAAG,CACjB,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAC1D,UAAU,EAAE,QAAQ,EACpB,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EACrC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EACvC,MAAM,EAAE,MAAM,EAAE,OAAO,EACvB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAChD;AAED,MAAMC,iBAAiB,GAAG;AACxB;AACA,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EACV,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,EACT,SAAS,EACT,aAAa,EACb,YAAY,EACZ,uBAAuB,EACvB,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,CACf;;AAED;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAIC,GAAG,IAAK;EAChC,OAAOA,GAAG,IAAIA,GAAG,CAACC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;AACxD,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAA1B,OAAA,GAEa,IAAA2B,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,IAAI;EACJC,MAAM;EACNC,QAAQ;EACRC,UAAU;EACVC;AACF,CAAC,KAAK;EAAA,IAAAC,qBAAA;EACJ,MAAM;IACJC;EACF,CAAC,GAAGH,UAAU;;EAEd;EACA,MAAMI,WAAW,GAAG;EAClBD,YAAY,CAACC,WACd;EAED;EACE;AACJ;AACA;AACA;AACA;AACA;AACA;EAAQ;IACFC,YAAY,GAAG,EAAE;IACjBC,gBAAgB,GAAG,KAAK;IACxBC,mBAAmB,GAAG;EACxB,CAAC,GAAGX,OAAO,CAACY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;EAE9B;EACA,IAAIC,qBAAqB,GAAG,EAAE;EAC9B,MAAM;IACJC,cAAc;IACdC,cAAc;IACdC;EACF,CAAC,GAAGb,QAAQ;EACZ,IAAIzB,MAAM,CAACuC,IAAI,CAACH,cAAc,CAAC,CAACI,MAAM,EAAE;IACtCL,qBAAqB,GAAG,uBAAyBnC,MAAM,CAACyC,MAAM,CAACL,cAAc,CAAC,CAACM,GAAG,CAAEC,aAAa,IAAK;MACpG,IAAI,OAAOA,aAAa,KAAK,QAAQ,EAAE;QACrC;QACA,OAAO3B,gBAAgB,CAAC2B,aAAa,CAAC;MACxC;MAEA,IAAI,CAACA,aAAa,EAAE;QAClB,OAAOC,SAAS;MAClB;MAEA,IAAI,OAAOD,aAAa,KAAK,QAAQ,EAAE;QACrChB,KAAK,CAACkB,cAAc,CAClB,wFACF,CAAC;MACH;MAEA,OAAO7B,gBAAgB,CAAC2B,aAAa,CAACG,WAAW,CAAC;IACpD,CAAC,CAAC,CACCC,MAAM,CAACC,OAAO,CAAE;EACrB;EAEA,MAAMC,QAAQ,GAAGvB,UAAU,CAACwB,cAAc,CAAC,CAAC,CACzCH,MAAM,CAAEI,OAAO,IAAK;IACnB,OAAQ,QAAQ,CAAEC,IAAI,CAACD,OAAO,CAACE,KAAK,CAAC;EACvC,CAAC,CAAC,CACDX,GAAG,CAAEY,WAAW,IAAK;IACpB,OAAO,IAAAC,0BAAY,EAACD,WAAW,EAAE,EAAE,CAAC;EACtC,CAAC,CAAC;EAEJ,MAAME,mBAAmB,GAAGP,QAAQ,CACjCQ,OAAO,CAAEC,GAAG,IAAK;IAChB,OAAOA,GAAG,CAACC,IAAI,CAACZ,MAAM,CAAC,CAAC;MACtBa;IACF,CAAC,KAAK;MACJ,OAAOjC,KAAK,CAACkC,qBAAqB,CAACD,GAAG,CAAC;IACzC,CAAC,CAAC;EACJ,CAAC,CAAC,CACDlB,GAAG,CAAEkB,GAAG,IAAK;IACZ,OAAOA,GAAG,CAACE,IAAI;EACjB,CAAC,CAAC;EAGJ,MAAMC,UAAU,GAAGtC,QAAQ,CAACa,IAAI,KAAK,YAAY,KAAG,uBAAyBW,QAAQ,CAACQ,OAAO,CAAEC,GAAG,IAAK;IACrG,OAAOA,GAAG,CAACC,IAAI,CAACZ,MAAM,CAAC,CAAC;MACtBa;IACF,CAAC,KAAK;MACJ,OAAOA,GAAG,KAAK,QAAQ;IACzB,CAAC,CAAC;EACJ,CAAC,CAAC,CAACH,OAAO,CAAEG,GAAG,IAAK;IAAA,IAAAI,eAAA,EAAAC,gBAAA;IAClB,MAAM;MACJC,IAAI;MAAEJ,IAAI;MAAEK;IACd,CAAC,GAAGP,GAAG;IACP,MAAMQ,QAAQ,GAAGF,IAAI,GAAG,IAAIA,IAAI,IAAI,GAAE,EAAE;IACxC,MAAMG,KAAK,GAAG,SAAS,IAAIF,WAAW,GAClC,GAAGC,QAAQ,GAAGN,IAAI,IAAIK,WAAW,EAAE,GACnC,GAAGC,QAAQ,GAAGN,IAAI,EAAE,CAAC;IAEzB,MAAMQ,cAAc,GAAG,IAAAC,wCAAmB,EAACF,KAAK,CAAC;IAEjD,MAAMG,KAAK,GAAG,EAAE;IAChB,MAAMC,YAAY,IAAAT,eAAA,GAAGhE,MAAM,CAACyC,MAAM,CAAC6B,cAAc,CAACG,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAAT,eAAA,uBAAnDA,eAAA,CAAsD,CAAC,CAAC;IAC7E,IAAIS,YAAY,EAAE;MAChB,IAAIA,YAAY,CAAC/E,OAAO,EAAE;QACxB8E,KAAK,CAACE,IAAI,CAACD,YAAY,CAAC/E,OAAO,CAAC;MAClC;MACA,IAAI+E,YAAY,CAACE,KAAK,EAAE;QACtBH,KAAK,CAACE,IAAI,CAAC,GAAG1E,MAAM,CAACuC,IAAI,CAACkC,YAAY,CAACE,KAAK,CAAC,CAAC;MAChD;IACF;IAEA,MAAMC,gBAAgB,IAAAX,gBAAA,GAAGjE,MAAM,CAACyC,MAAM,CAAC6B,cAAc,CAACM,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAAX,gBAAA,uBAAvDA,gBAAA,CAA0D,CAAC,CAAC;IACrF,IAAIW,gBAAgB,EAAE;MACpB,IAAIA,gBAAgB,CAACC,SAAS,EAAE;QAC9BL,KAAK,CAACE,IAAI,CAACE,gBAAgB,CAACC,SAAS,CAAC;MACxC;MACA,IAAID,gBAAgB,CAAClF,OAAO,EAAE;QAC5B8E,KAAK,CAACE,IAAI,CAACE,gBAAgB,CAAClF,OAAO,CAAC;MACtC;IACF;IAEA,OAAO8E,KAAK;EACd,CAAC,CAAC,CAACzB,MAAM,CAACC,OAAO,CAAC,IAAI,EAAE;EAExB,MAAM8B,aAAa,GAAG,EAAE;EAExB,IAAIC,WAAW,GAAGxD,IAAI;EACtB;EACA,QAAAyD,YAAA,GAAOD,WAAW,cAAAC,YAAA,eAAXA,YAAA,CAAaC,MAAM,EAAE;IAAA,IAAAD,YAAA;IAC1BF,aAAa,CAACJ,IAAI,CAACK,WAAW,CAAC;IAC/BA,WAAW,GAAGA,WAAW,CAACE,MAAM;EAClC;;EAEA;AACF;AACA;AACA;EACE,MAAMC,eAAe,GAAG,SAAAA,CAAUC,YAAY,EAAE;IAC9C,MAAM7B,WAAW,GAAG,IAAA8B,6BAAe,EAAC1D,UAAU,EAAEyD,YAAY,EAAE1D,QAAQ,CAAC;IACvE,IAAI,CAAC6B,WAAW,EAAE;MAChB,OAAO,EAAE;IACX;IAEA,MAAM+B,KAAK,GAAG,IAAA9B,0BAAY,EAACD,WAAW,EAAE,EAAE,CAAC;IAE3C,OAAO+B,KAAK,CAAC1B,IAAI,CAACZ,MAAM,CAAEa,GAAG,IAAK;MAChC,OAAOA,GAAG,CAACA,GAAG,KAAK,UAAU;IAC/B,CAAC,CAAC;EACJ,CAAC;;EAED;EACA;EACA,MAAM0B,YAAY,GAAGR,aAAa,CAACtC,MAAM,GACvCsC,aAAa,CAACrB,OAAO,CAAE0B,YAAY,IAAK;IACtC,OAAOD,eAAe,CAACC,YAAY,CAAC;EACtC,CAAC,CAAC,GACFxD,KAAK,CAAC4D,cAAc,CAAC,CACnB,UAAU,CACX,CAAC;EAEJ,MAAMC,mBAAmB,GAAGF,YAAY,CAAC7B,OAAO,CAAEG,GAAG,IAAK;IACxD,OAAOjC,KAAK,CAAC8D,uBAAuB,CAAC7B,GAAG,CAAC;EAC3C,CAAC,CAAC;;EAEF;EACA;EACA,MAAM8B,aAAa,GAAG,EAAA9D,qBAAA,GAAAE,WAAW,CAAC6D,WAAW,CAAC,CAAC,CAAC,cAAA/D,qBAAA,gBAAAA,qBAAA,GAA1BA,qBAAA,CAA4BgE,KAAK,cAAAhE,qBAAA,uBAAjCA,qBAAA,CAAmCsC,IAAI,MAAK,SAAS;;EAE3E;AACF;AACA;AACA;EACE,MAAM2B,0BAA0B,GAAIC,KAAK,IAAK;IAC5C,MAAMC,MAAM,GAAG,IAAIC,GAAG,CAAC,CAAC;IACxB,OAAOF,KAAK,EAAE;MACZ,KAAK,MAAM;QAAChC;MAAI,CAAC,IAAIgC,KAAK,CAACG,SAAS,EAAE;QACpCF,MAAM,CAACG,GAAG,CAACpC,IAAI,CAAC;MAClB;MACAgC,KAAK,GAAGA,KAAK,CAACK,KAAK;IACrB;IACA,OAAOJ,MAAM;EACf,CAAC;EAED,MAAMK,eAAe,GAAG,IAAIJ,GAAG,CAAClE,WAAW,CAACmE,SAAS,CAACvD,GAAG,CAAC,CAAC;IACzDoB;EACF,CAAC,KAAK;IACJ,OAAOA,IAAI;EACb,CAAC;;EAEC;EAAA,CACCuC,MAAM,CACLX,aAAa,GACX5D,WAAW,CAAC6D,WAAW,CAAClC,OAAO,CAAC,CAAC;IAC/BwC;EACF,CAAC,KAAK;IACJ,OAAOA,SAAS;EAClB,CAAC,CAAC,CAACvD,GAAG,CAAC,CAAC;IACNoB;EACF,CAAC,KAAK;IACJ,OAAOA,IAAI;IACb;EACA,CAAC,CAAC,GAAG,EACT,CAAC,CACAuC,MAAM,CAACvF,UAAU,CAAC,CAClBuF,MAAM,CAAC7C,mBAAmB,CAAC,CAC3B6C,MAAM,CAACtC,UAAU,CAAC,CAClBsC,MAAM,CAACtE,YAAY,CAAC,CACpBsE,MAAM,EAAC,uBAAyBlE,qBAAsB,CAAC,CACvDkE,MAAM,CAAC,GAAGR,0BAA0B,CAACtE,IAAI,IAAIG,UAAU,CAAC4E,QAAQ,CAAC/E,IAAI,CAAC,CAAC,CAAC,CACxE8E,MAAM,CACL5E,QAAQ,CAACa,IAAI,KAAK,OAAO,GACvB,EAAE,GACF,CACE,IAAGb,QAAQ,CAACa,IAAI,KAAK,YAAY,GAAGvB,iBAAiB,GAAG,EAAE,GAC1D,GAAGyE,mBAAmB,CAE5B,CAAC,CAAC;;EAEJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;EAEE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMe,eAAe,GAAIC,YAAY,IAAK;IACxC,OAAQ5C,GAAG,IAAK;MACd,IAAI;QACF,MAAM6C,aAAa,GAAG7C,GAAG,GACvB,4CAA8C4C,YAAY,EAC3D;QACD,OAAO;UACLE,UAAU,EAAEpE,IAAI,KAAK,YAAY,GAC/B,IAAAqE,sBAAY,GAAC,qBAAuBF,aAAc,CAAC,GACnD,IAAAG,mBAAS,GAAC,qBAAuBH,aAAa,EAAGnE,IAAI,CAAC;UACxDsB;QACF,CAAC;MACH,CAAC,CAAC,MAAM;QACN,OAAOhB,SAAS;MAClB;IACF,CAAC;EACH,CAAC;EAED,MAAMiE,QAAQ,GAAGlF,KAAK,CAACmF,UAAU,CAAC,CAAC;IACjClD;EACF,CAAC,KAAK;IACJ,OAAOA,GAAG,KAAK,QAAQ,IAAIjC,KAAK,CAACoF,wBAAwB,CAACnD,GAAG,CAAC,KAAKA,GAAG,KAAK,UAAU,IAAInC,QAAQ,CAACa,IAAI,KAAK,SAAS,CAAC;EACvH,CAAC,CAAC,CAACI,GAAG,CAAC6D,eAAe,CAAC,MAAM,CAAC,CAAC;EAE/B,MAAMS,uBAAuB,GAAGrF,KAAK,CAACmF,UAAU,CAAC,CAAC;IAChDlD;EACF,CAAC,KAAK;IACJ,OAAOjC,KAAK,CAACsF,wBAAwB,CAACrD,GAAG,CAAC;EAC5C,CAAC,CAAC,CAAClB,GAAG,CAAC6D,eAAe,CAAC,MAAM,CAAC,CAAC;EAE/B,MAAMW,4BAA4B,GAAGvF,KAAK,CAACwF,aAAa,CAAC,CAAC;IACxDvD;EACF,CAAC,KAAK;IACJ,OAAOjC,KAAK,CAACyF,6BAA6B,CAACxD,GAAG,CAAC;EACjD,CAAC,CAAC,CAAClB,GAAG,CAAC6D,eAAe,CAAC,eAAe,CAAC,CAAC;EAExC,MAAMc,aAAa,GAAG,+BAAiC,CACrD,GAAGR,QAAQ,EACX,GAAGG,uBAAuB,EAC1B,GAAGE;EACH;EAAA,CACD,CAACnE,MAAM,CAACC,OAAO,CAAE;EAElB,KAAK,MAAM;IACTY,GAAG;IACH8C;EACF,CAAC,IAAIW,aAAa,EAAE;IAClB,IAAAC,sBAAQ,EAACZ,UAAU,EAAGa,GAAG,IAAK;MAC5B,MAAM;QACJrD,IAAI;QACJb;MACF,CAAC,GAAG,2DAA6DkE,GAAI;MAErE,IAAIrD,IAAI,KAAK,eAAe,EAAE;QAAA,IAAAsD,qBAAA;QAC5B,MAAMC,eAAe,IAAAD,qBAAA,GAAGnF,cAAc,CAACuB,GAAG,CAACA,GAAG,CAAC,cAAA4D,qBAAA,uBAAvBA,qBAAA,CAAyBtD,IAAI;QACrD,IAAI,CAACkC,eAAe,CAACzG,GAAG,CAAC0D,KAAK,CAAC,KAC5B,CAACqE,KAAK,CAACC,OAAO,CAACF,eAAe,CAAC,IAAI,CAACA,eAAe,CAACG,QAAQ,CAACvE,KAAK,CAAC,CAAC,EACrE;UACA,IAAI,CAACrB,gBAAgB,EAAE;YACrBR,MAAM,CAAC,aAAa6B,KAAK,iBAAiB,EAAE,IAAI,EAAEO,GAAG,CAAC;UACxD;QACF,CAAC,MAAM,IAAI3B,mBAAmB,IAAI,CAACnB,UAAU,CAAC8G,QAAQ,CAACvE,KAAK,CAAC,EAAE;UAC7D,IAAI3B,UAAU,CAACmG,kBAAkB,EAAE;YACjCnG,UAAU,CAACmG,kBAAkB,CAACxE,KAAK,CAAC;YACtC;UACA,CAAC,MAAM;YACL/B,OAAO,CAACuG,kBAAkB,CAACxE,KAAK,CAAC;UACnC;QACF;MACF;IACF,CAAC,CAAC;EACJ;AACF,CAAC,EAAE;EACDyE,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJ7D,WAAW,EAAE,kDAAkD;MAC/D8D,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVrG,YAAY,EAAE;UACZsG,KAAK,EAAE;YACLnE,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACDlC,gBAAgB,EAAE;UAChBkC,IAAI,EAAE;QACR,CAAC;QACDjC,mBAAmB,EAAE;UACnBiC,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAoE,MAAA,CAAAlH,OAAA,GAAAA,OAAA,CAAA1B,OAAA","ignoreList":[]}
package/package.json CHANGED
@@ -12,10 +12,9 @@
12
12
  "escape-string-regexp": "^4.0.0",
13
13
  "espree": "^10.1.0",
14
14
  "esquery": "^1.6.0",
15
- "parse-imports": "^2.1.1",
15
+ "parse-imports-exports": "^0.2.4",
16
16
  "semver": "^7.6.3",
17
- "spdx-expression-parse": "^4.0.0",
18
- "synckit": "^0.9.1"
17
+ "spdx-expression-parse": "^4.0.0"
19
18
  },
20
19
  "description": "JSDoc linting rules for ESLint.",
21
20
  "devDependencies": {
@@ -146,7 +145,7 @@
146
145
  "scripts": {
147
146
  "tsc": "tsc",
148
147
  "tsc-build": "tsc -p tsconfig-prod.json",
149
- "build": "rimraf ./dist && cross-env NODE_ENV=production babel ./src --out-file-extension .cjs --out-dir ./dist --copy-files --source-maps --ignore ./src/bin/*.js --no-copy-ignored && replace 'require\\(\"\\.(.*?)\\.[^.]*?\"\\)' 'require(\".$1.cjs\")' 'dist' -r --include=\"*.cjs\" && cp src/import-worker.mjs dist/import-worker.mjs && pnpm tsc-build",
148
+ "build": "rimraf ./dist && cross-env NODE_ENV=production babel ./src --out-file-extension .cjs --out-dir ./dist --copy-files --source-maps --ignore ./src/bin/*.js --no-copy-ignored && replace 'require\\(\"\\.(.*?)\\.[^.]*?\"\\)' 'require(\".$1.cjs\")' 'dist' -r --include=\"*.cjs\" && pnpm tsc-build",
150
149
  "check-docs": "babel-node ./src/bin/generateDocs.js --check",
151
150
  "create-docs": "npm run create-options && babel-node ./src/bin/generateDocs.js",
152
151
  "create-rule": "babel-node ./src/bin/generateRule.js",
@@ -161,5 +160,5 @@
161
160
  "test-cov": "cross-env TIMING=1 c8 --reporter text npm run test-no-cov",
162
161
  "test-index": "npm run test-no-cov -- test/rules/index.js"
163
162
  },
164
- "version": "50.6.8"
163
+ "version": "50.6.10"
165
164
  }
@@ -0,0 +1,2 @@
1
+ ignoredBuiltDependencies:
2
+ - core-js-pure
@@ -1,13 +1,12 @@
1
1
  import { dirname, join } from 'node:path';
2
2
  import { fileURLToPath } from 'node:url';
3
3
 
4
- import { createSyncFn } from 'synckit';
5
4
  import semver from 'semver';
6
5
  import spdxExpressionParse from 'spdx-expression-parse';
6
+ import {parseImportsExports} from 'parse-imports-exports';
7
7
  import iterateJsdoc from '../iterateJsdoc.js';
8
8
 
9
9
  const __dirname = dirname(fileURLToPath(import.meta.url));
10
- const pathName = join(__dirname, '../import-worker.mjs');
11
10
 
12
11
  const allowedKinds = new Set([
13
12
  'class',
@@ -175,8 +174,9 @@ export default iterateJsdoc(({
175
174
  ? `${typePart}${name} ${description}`
176
175
  : `${typePart}${name}`);
177
176
 
178
- const getImports = createSyncFn(pathName);
179
- if (!getImports(imprt)) {
177
+ const importsExports = parseImportsExports(imprt);
178
+
179
+ if (importsExports.errors) {
180
180
  report(
181
181
  `Bad @import tag`,
182
182
  null,
@@ -1,7 +1,7 @@
1
1
  import { dirname, join } from 'path';
2
2
  import { fileURLToPath } from 'url';
3
3
 
4
- import { createSyncFn } from 'synckit';
4
+ import {parseImportsExports} from 'parse-imports-exports';
5
5
  import {
6
6
  getJSDocComment,
7
7
  parse as parseType,
@@ -13,7 +13,6 @@ import iterateJsdoc, {
13
13
  } from '../iterateJsdoc.js';
14
14
 
15
15
  const __dirname = dirname(fileURLToPath(import.meta.url));
16
- const pathName = join(__dirname, '../import-worker.mjs');
17
16
 
18
17
  const extraTypes = [
19
18
  'null', 'undefined', 'void', 'string', 'boolean', 'object',
@@ -152,30 +151,30 @@ export default iterateJsdoc(({
152
151
  ? `${typePart}${name} ${description}`
153
152
  : `${typePart}${name}`);
154
153
 
155
- const getImports = createSyncFn(pathName);
156
- const imports = /** @type {import('parse-imports').Import[]} */ (getImports(imprt));
157
- if (!imports) {
158
- return null;
159
- }
154
+ const importsExports = parseImportsExports(imprt);
160
155
 
161
- return imports.flatMap(({importClause}) => {
162
- /* c8 ignore next */
163
- const {default: dflt, named, namespace} = importClause || {};
164
- const types = [];
165
- if (dflt) {
166
- types.push(dflt);
156
+ const types = [];
157
+ const namedImports = Object.values(importsExports.namedImports || {})[0]?.[0];
158
+ if (namedImports) {
159
+ if (namedImports.default) {
160
+ types.push(namedImports.default);
167
161
  }
168
- if (namespace) {
169
- types.push(namespace);
162
+ if (namedImports.names) {
163
+ types.push(...Object.keys(namedImports.names));
170
164
  }
171
- if (named) {
172
- for (const {binding} of named) {
173
- types.push(binding);
174
- }
165
+ }
166
+
167
+ const namespaceImports = Object.values(importsExports.namespaceImports || {})[0]?.[0];
168
+ if (namespaceImports) {
169
+ if (namespaceImports.namespace) {
170
+ types.push(namespaceImports.namespace);
175
171
  }
172
+ if (namespaceImports.default) {
173
+ types.push(namespaceImports.default);
174
+ }
175
+ }
176
176
 
177
- return types;
178
- });
177
+ return types;
179
178
  }).filter(Boolean)) : [];
180
179
 
181
180
  const ancestorNodes = [];
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- var _synckit = require("synckit");
4
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
5
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
6
- (0, _synckit.runAsWorker)(async imprt => {
7
- const {
8
- parseImports
9
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('parse-imports')));
10
- try {
11
- // ESLint doesn't support async rules
12
- return [...(await parseImports(imprt))];
13
- } catch (err) {
14
- return false;
15
- }
16
- });
17
- //# sourceMappingURL=import-worker.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import-worker.cjs","names":["_synckit","require","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","runAsWorker","imprt","parseImports","Promise","resolve","then","err"],"sources":["../src/import-worker.mjs"],"sourcesContent":["import { runAsWorker } from 'synckit'\n\nrunAsWorker(async (imprt) => {\n const { parseImports } = await import('parse-imports');\n try {\n // ESLint doesn't support async rules\n return [...await parseImports(imprt)];\n } catch (err) {\n return false;\n }\n})\n"],"mappings":";;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAAqC,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAI,wBAAAJ,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAM,OAAA,EAAAN,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAI,GAAA,CAAAP,CAAA,UAAAG,CAAA,CAAAK,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAN,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAErC,IAAAW,oBAAW,EAAC,MAAOC,KAAK,IAAK;EAC3B,MAAM;IAAEC;EAAa,CAAC,GAAG,MAAAC,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAArB,uBAAA,CAAAN,OAAA,CAAa,eAAe,GAAC;EACtD,IAAI;IACF;IACA,OAAO,CAAC,IAAG,MAAMwB,YAAY,CAACD,KAAK,CAAC,EAAC;EACvC,CAAC,CAAC,OAAOK,GAAG,EAAE;IACZ,OAAO,KAAK;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,11 +0,0 @@
1
- import { runAsWorker } from 'synckit'
2
-
3
- runAsWorker(async (imprt) => {
4
- const { parseImports } = await import('parse-imports');
5
- try {
6
- // ESLint doesn't support async rules
7
- return [...await parseImports(imprt)];
8
- } catch (err) {
9
- return false;
10
- }
11
- })
@@ -1,11 +0,0 @@
1
- import { runAsWorker } from 'synckit'
2
-
3
- runAsWorker(async (imprt) => {
4
- const { parseImports } = await import('parse-imports');
5
- try {
6
- // ESLint doesn't support async rules
7
- return [...await parseImports(imprt)];
8
- } catch (err) {
9
- return false;
10
- }
11
- })