Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | 1x 1x 1x | import {
createBaseErrorMsg,
findPackageJson,
InvalidModuleSpecifierError,
} from "./utils";
import resolvePackageImportsExports from "./resolvePackageImportsExports";
import { IsomorphicRollupFs } from "../../fs-iface";
interface ParamObject {
importSpecifier: string;
importer: string;
moduleDirs: readonly string[];
conditions: readonly string[];
resolveId: (id: string) => any;
fs: IsomorphicRollupFs;
validateImportsExports: boolean;
}
async function resolvePackageImports({
importSpecifier,
importer,
moduleDirs,
conditions,
resolveId,
fs,
validateImportsExports = true,
}: ParamObject) {
const result = await findPackageJson(importer, moduleDirs, fs);
if (!result) {
throw new Error(
`${createBaseErrorMsg(importSpecifier, importer)}. Could not find a parent package.json.`,
);
}
const { pkgPath, pkgJsonPath, pkgJson } = result;
const pkgURL = `/${pkgPath}/`;
const context = {
importer,
importSpecifier,
moduleDirs,
pkgURL,
pkgJsonPath,
conditions,
resolveId,
};
// Assert: specifier begins with "#".
if (validateImportsExports && !importSpecifier.startsWith("#")) {
throw new InvalidModuleSpecifierError(
context,
true,
"Invalid import specifier.",
);
}
// If specifier is exactly equal to "#" or starts with "#/", then
if (
validateImportsExports &&
(importSpecifier === "#" || importSpecifier.startsWith("#/"))
) {
// Throw an Invalid Module Specifier error.
throw new InvalidModuleSpecifierError(
context,
true,
"Invalid import specifier.",
);
}
const { imports } = pkgJson;
if (validateImportsExports && !imports) {
throw new InvalidModuleSpecifierError(context, true);
}
// Let packageURL be the result of LOOKUP_PACKAGE_SCOPE(parentURL).
// If packageURL is not null, then
return resolvePackageImportsExports(context, {
matchKey: importSpecifier,
matchObj: imports,
isImports: true,
validateImportsExports,
});
}
export default resolvePackageImports;
|