Sha256: 90e191716b8091125151367c5cdcc8b14257eed1d0bec5c19518701646c791ae
Contents?: true
Size: 1.61 KB
Versions: 43
Compression:
Stored size: 1.61 KB
Contents
/** * @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$/ /** * 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 }
Version data entries
43 entries across 43 versions & 1 rubygems