| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /**
- * @author Toru Nagashima
- * See LICENSE file in root directory for full license.
- */
- "use strict"
- const path = require("path")
- const resolve = require("resolve")
- const getResolvePaths = require("./get-resolve-paths")
- const getTryExtensions = require("./get-try-extensions")
- const ImportTarget = require("./import-target")
- const stripImportPathParams = require("./strip-import-path-params")
- const MODULE_TYPE = /^(?:Import|Export(?:Named|Default|All))Declaration$/u
- /**
- * Gets a list of `import`/`export` declaration targets.
- *
- * Core modules of Node.js (e.g. `fs`, `http`) are excluded.
- *
- * @param {RuleContext} context - The rule context.
- * @param {ASTNode} programNode - The node of Program.
- * @param {boolean} includeCore - The flag to include core modules.
- * @returns {ImportTarget[]} A list of found target's information.
- */
- module.exports = function getImportExportTargets(
- context,
- programNode,
- includeCore
- ) {
- const retv = []
- const basedir = path.dirname(path.resolve(context.getFilename()))
- const paths = getResolvePaths(context)
- const extensions = getTryExtensions(context)
- const options = { basedir, paths, extensions }
- for (const statement of programNode.body) {
- // Skip if it's not a module declaration.
- if (!MODULE_TYPE.test(statement.type)) {
- continue
- }
- // Gets the target module.
- const node = statement.source
- const name = node && stripImportPathParams(node.value)
- if (name && (includeCore || !resolve.isCore(name))) {
- retv.push(new ImportTarget(node, name, options))
- }
- }
- return retv
- }
|