Skip to content

Commit 7c90241

Browse files
authored
handle undeclared dependencies (#1184)
1 parent 8f9ada2 commit 7c90241

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/npm.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import type {StringLiteral} from "./javascript/source.js";
1212
import {getStringLiteralValue, isStringLiteral} from "./javascript/source.js";
1313
import {relativePath} from "./path.js";
1414
import {Sourcemap} from "./sourcemap.js";
15-
import {faint} from "./tty.js";
15+
import {faint, yellow} from "./tty.js";
1616

1717
export interface NpmSpecifier {
1818
name: string;
@@ -144,7 +144,7 @@ export async function getDependencyResolver(
144144
if (value.startsWith("/npm/")) {
145145
const {name: depName, range: depRange} = parseNpmSpecifier(value.slice("/npm/".length));
146146
if (depName === name) return; // ignore self-references, e.g. mermaid plugin
147-
if (existsSync(join(root, ".observablehq", "cache", "_npm", `${depName}@${depRange}`))) return; // already resolved
147+
if (depRange && existsSync(join(root, ".observablehq", "cache", "_npm", `${depName}@${depRange}`))) return; // already resolved
148148
dependencies.add(value);
149149
}
150150
}
@@ -163,9 +163,11 @@ export async function getDependencyResolver(
163163
? "latest" // force Arquero, Mosaic & DuckDB-Wasm to use the (same) latest version of Arrow
164164
: name === "@uwdata/mosaic-core" && depName === "@duckdb/duckdb-wasm"
165165
? "1.28.0" // force Mosaic to use the latest (stable) version of DuckDB-Wasm
166-
: pkg.dependencies?.[depName] ?? pkg.devDependencies?.[depName] ?? pkg.peerDependencies?.[depName];
167-
if (range === undefined) continue; // only resolve if we find a range
168-
resolutions.set(dependency, await resolveNpmImport(root, `${depName}@${range}/${depPath}`));
166+
: pkg.dependencies?.[depName] ??
167+
pkg.devDependencies?.[depName] ??
168+
pkg.peerDependencies?.[depName] ??
169+
void console.warn(yellow(`${depName} is an undeclared dependency of ${name}; resolving latest version`));
170+
resolutions.set(dependency, await resolveNpmImport(root, `${depName}${range ? `@${range}` : ""}/${depPath}`));
169171
}
170172
}
171173

0 commit comments

Comments
 (0)