Skip to content

Commit

Permalink
[Refactor] importType resolve path lazily
Browse files Browse the repository at this point in the history
  • Loading branch information
meowtec committed Jan 27, 2022
1 parent 0ded887 commit 0d14165
Showing 1 changed file with 11 additions and 10 deletions.
21 changes: 11 additions & 10 deletions src/core/importType.js
Expand Up @@ -31,14 +31,14 @@ export function isBuiltIn(name, settings, path) {
}

export function isExternalModule(name, path, context) {
if (arguments.length < 3) {
if (arguments.length < 3) {
throw new TypeError('isExternalModule: name, path, and context are all required');
}
return (isModule(name) || isScoped(name)) && typeTest(name, context, path) === 'external';
}

export function isExternalModuleMain(name, path, context) {
if (arguments.length < 3) {
if (arguments.length < 3) {
throw new TypeError('isExternalModule: name, path, and context are all required');
}
return isModuleMain(name) && typeTest(name, context, path) === 'external';
Expand Down Expand Up @@ -109,20 +109,21 @@ function isExternalLookingName(name) {
return isModule(name) || isScoped(name);
}

function typeTest(name, context, path ) {
function resolveImportType(name, context) {
const { settings } = context;
if (isInternalRegexMatch(name, settings)) { return 'internal'; }
if (isAbsolute(name, settings, path)) { return 'absolute'; }
if (isAbsolute(name, settings)) { return 'absolute'; }
if (isRelativeToParent(name, settings)) { return 'parent'; }
if (isIndex(name, settings)) { return 'index'; }
if (isRelativeToSibling(name, settings)) { return 'sibling'; }

// `resolve` is expensive, do it only when necessary
const path = resolve(name, context);
if (isBuiltIn(name, settings, path)) { return 'builtin'; }
if (isRelativeToParent(name, settings, path)) { return 'parent'; }
if (isIndex(name, settings, path)) { return 'index'; }
if (isRelativeToSibling(name, settings, path)) { return 'sibling'; }
if (isExternalPath(path, context)) { return 'external'; }
if (isInternalPath(path, context)) { return 'internal'; }
if (isExternalLookingName(name)) { return 'external'; }
return 'unknown';
}

export default function resolveImportType(name, context) {
return typeTest(name, context, resolve(name, context));
}
export default resolveImportType;

0 comments on commit 0d14165

Please sign in to comment.