Skip to content
This repository was archived by the owner on Apr 16, 2020. It is now read-only.

Commit 32f4f2b

Browse files
committed
esm: Treat all non-nullish values the same
1 parent c86a017 commit 32f4f2b

File tree

6 files changed

+18
-4
lines changed

6 files changed

+18
-4
lines changed

doc/api/esm.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,8 @@ import feature from 'es-module-package/features/x.js';
268268
If a package has no exports, setting `"exports": false` can be used instead of
269269
`"exports": {}` to indicate the package does not intent for submodules to be
270270
exposed.
271+
This is just a convention that works because `false`, just like `{}`, has no
272+
iterable own properties.
271273

272274
## <code>import</code> Specifiers
273275

src/module_wrap.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -615,8 +615,7 @@ Maybe<const PackageConfig*> GetPackageConfig(Environment* env,
615615
Persistent<Value> exports;
616616
if (pkg_json->Get(env->context(),
617617
env->exports_string()).ToLocal(&exports_v) &&
618-
(exports_v->IsObject() ||
619-
(exports_v->IsBoolean() && exports_v->IsFalse()))) {
618+
!exports_v->IsNullOrUndefined()) {
620619
exports.Reset(env->isolate(), exports_v);
621620

622621
auto entry = env->package_json_cache.emplace(path,

test/es-module/test-esm-exports.mjs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { mustCall } from '../common/index.mjs';
44
import { ok, strictEqual } from 'assert';
55

66
import { asdf, asdf2 } from '../fixtures/pkgexports.mjs';
7-
import { loadMissing } from '../fixtures/pkgexports-missing.mjs';
7+
import { loadMissing, loadFromNumber } from '../fixtures/pkgexports-missing.mjs';
88

99
strictEqual(asdf, 'asdf');
1010
strictEqual(asdf2, 'asdf');
@@ -13,3 +13,8 @@ loadMissing().catch(mustCall((err) => {
1313
ok(err.message.toString().startsWith('Package exports'));
1414
ok(err.message.toString().indexOf('do not define a \'./missing\' subpath'));
1515
}));
16+
17+
loadFromNumber().then(console.log).catch(mustCall((err) => {
18+
ok(err.message.toString().startsWith('Package exports'));
19+
ok(err.message.toString().indexOf('do not define a \'./missing\' subpath'));
20+
}));

test/fixtures/node_modules/pkgexports-number/hidden.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/fixtures/node_modules/pkgexports-number/package.json

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/fixtures/pkgexports-missing.mjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1-
export function loadMissing () {
1+
export function loadMissing() {
22
return import('pkgexports/missing');
33
}
4+
5+
export function loadFromNumber() {
6+
return import('pkgexports-number/hidden.js');
7+
}

0 commit comments

Comments
 (0)