summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/node/package_json.rs7
-rw-r--r--ext/node/resolution.rs2
-rw-r--r--tests/specs/check/npm_pkg_empty_main_entry/__test__.jsonc10
-rw-r--r--tests/specs/check/npm_pkg_empty_main_entry/check.out5
-rw-r--r--tests/specs/check/npm_pkg_empty_main_entry/deno.json3
-rw-r--r--tests/specs/check/npm_pkg_empty_main_entry/index.ts5
-rw-r--r--tests/specs/check/npm_pkg_empty_main_entry/node_modules/@types/package/index.d.ts1
-rw-r--r--tests/specs/check/npm_pkg_empty_main_entry/node_modules/@types/package/package.json3
-rw-r--r--tests/specs/check/npm_pkg_empty_main_entry/node_modules/package/index.js1
-rw-r--r--tests/specs/check/npm_pkg_empty_main_entry/node_modules/package/package.json3
-rw-r--r--tests/specs/check/npm_pkg_empty_main_entry/package.json6
-rw-r--r--tests/specs/check/npm_pkg_empty_main_entry/run.out1
12 files changed, 43 insertions, 4 deletions
diff --git a/ext/node/package_json.rs b/ext/node/package_json.rs
index 9d6a491b5..9ac3a0969 100644
--- a/ext/node/package_json.rs
+++ b/ext/node/package_json.rs
@@ -213,12 +213,13 @@ impl PackageJson {
Ok(package_json)
}
- pub fn main(&self, referrer_kind: NodeModuleKind) -> Option<&String> {
- if referrer_kind == NodeModuleKind::Esm && self.typ == "module" {
+ pub fn main(&self, referrer_kind: NodeModuleKind) -> Option<&str> {
+ let main = if referrer_kind == NodeModuleKind::Esm && self.typ == "module" {
self.module.as_ref().or(self.main.as_ref())
} else {
self.main.as_ref()
- }
+ };
+ main.map(|m| m.trim()).filter(|m| !m.is_empty())
}
pub fn specifier(&self) -> ModuleSpecifier {
diff --git a/ext/node/resolution.rs b/ext/node/resolution.rs
index d878a5059..50c4e2bb5 100644
--- a/ext/node/resolution.rs
+++ b/ext/node/resolution.rs
@@ -1232,7 +1232,7 @@ impl NodeResolver {
) -> Result<Option<ModuleSpecifier>, AnyError> {
let maybe_main = if mode.is_types() {
match package_json.types.as_ref() {
- Some(types) => Some(types),
+ Some(types) => Some(types.as_str()),
None => {
// fallback to checking the main entrypoint for
// a corresponding declaration file
diff --git a/tests/specs/check/npm_pkg_empty_main_entry/__test__.jsonc b/tests/specs/check/npm_pkg_empty_main_entry/__test__.jsonc
new file mode 100644
index 000000000..a61769ed6
--- /dev/null
+++ b/tests/specs/check/npm_pkg_empty_main_entry/__test__.jsonc
@@ -0,0 +1,10 @@
+{
+ "steps": [{
+ "args": "check index.ts",
+ "output": "check.out",
+ "exitCode": 1
+ }, {
+ "args": "run index.ts",
+ "output": "run.out"
+ }]
+}
diff --git a/tests/specs/check/npm_pkg_empty_main_entry/check.out b/tests/specs/check/npm_pkg_empty_main_entry/check.out
new file mode 100644
index 000000000..9fcc4b290
--- /dev/null
+++ b/tests/specs/check/npm_pkg_empty_main_entry/check.out
@@ -0,0 +1,5 @@
+Check file:///[WILDLINE]/index.ts
+error: TS2322 [ERROR]: Type 'number' is not assignable to type 'string'.
+const result: string = add(1, 2);
+ ~~~~~~
+ at file:///[WILDLINE]/index.ts:4:7
diff --git a/tests/specs/check/npm_pkg_empty_main_entry/deno.json b/tests/specs/check/npm_pkg_empty_main_entry/deno.json
new file mode 100644
index 000000000..6134d86d1
--- /dev/null
+++ b/tests/specs/check/npm_pkg_empty_main_entry/deno.json
@@ -0,0 +1,3 @@
+{
+ "unstable": ["byonm"]
+}
diff --git a/tests/specs/check/npm_pkg_empty_main_entry/index.ts b/tests/specs/check/npm_pkg_empty_main_entry/index.ts
new file mode 100644
index 000000000..45966c024
--- /dev/null
+++ b/tests/specs/check/npm_pkg_empty_main_entry/index.ts
@@ -0,0 +1,5 @@
+// this package has an empty "main" entry in its package.json for both the package and @types/package
+import { add } from "package";
+
+const result: string = add(1, 2);
+console.log(result);
diff --git a/tests/specs/check/npm_pkg_empty_main_entry/node_modules/@types/package/index.d.ts b/tests/specs/check/npm_pkg_empty_main_entry/node_modules/@types/package/index.d.ts
new file mode 100644
index 000000000..9b197eb1e
--- /dev/null
+++ b/tests/specs/check/npm_pkg_empty_main_entry/node_modules/@types/package/index.d.ts
@@ -0,0 +1 @@
+export function add(a: number, b: number): number;
diff --git a/tests/specs/check/npm_pkg_empty_main_entry/node_modules/@types/package/package.json b/tests/specs/check/npm_pkg_empty_main_entry/node_modules/@types/package/package.json
new file mode 100644
index 000000000..dbb176e65
--- /dev/null
+++ b/tests/specs/check/npm_pkg_empty_main_entry/node_modules/@types/package/package.json
@@ -0,0 +1,3 @@
+{
+ "main": ""
+} \ No newline at end of file
diff --git a/tests/specs/check/npm_pkg_empty_main_entry/node_modules/package/index.js b/tests/specs/check/npm_pkg_empty_main_entry/node_modules/package/index.js
new file mode 100644
index 000000000..62c45aa26
--- /dev/null
+++ b/tests/specs/check/npm_pkg_empty_main_entry/node_modules/package/index.js
@@ -0,0 +1 @@
+module.exports.add = (a, b) => a + b;
diff --git a/tests/specs/check/npm_pkg_empty_main_entry/node_modules/package/package.json b/tests/specs/check/npm_pkg_empty_main_entry/node_modules/package/package.json
new file mode 100644
index 000000000..dbb176e65
--- /dev/null
+++ b/tests/specs/check/npm_pkg_empty_main_entry/node_modules/package/package.json
@@ -0,0 +1,3 @@
+{
+ "main": ""
+} \ No newline at end of file
diff --git a/tests/specs/check/npm_pkg_empty_main_entry/package.json b/tests/specs/check/npm_pkg_empty_main_entry/package.json
new file mode 100644
index 000000000..fd3fd8d4e
--- /dev/null
+++ b/tests/specs/check/npm_pkg_empty_main_entry/package.json
@@ -0,0 +1,6 @@
+{
+ "dependencies": {
+ "package": "*",
+ "@types/package": "*"
+ }
+}
diff --git a/tests/specs/check/npm_pkg_empty_main_entry/run.out b/tests/specs/check/npm_pkg_empty_main_entry/run.out
new file mode 100644
index 000000000..00750edc0
--- /dev/null
+++ b/tests/specs/check/npm_pkg_empty_main_entry/run.out
@@ -0,0 +1 @@
+3