@@ -8,50 +8,53 @@ import fromInside from '../fixtures/node_modules/pkgexports/lib/hole.js';
8
8
[ requireFixture , importFixture ] . forEach ( ( loadFixture ) => {
9
9
const isRequire = loadFixture === requireFixture ;
10
10
11
+ const maybeWrapped = isRequire ? ( exports ) => exports :
12
+ ( exports ) => ( { ...exports , 'module.exports' : exports . default } ) ;
13
+
11
14
const validSpecifiers = new Map ( [
12
15
// A simple mapping of a path.
13
- [ 'pkgexports/valid-cjs' , { default : 'asdf' } ] ,
16
+ [ 'pkgexports/valid-cjs' , maybeWrapped ( { default : 'asdf' } ) ] ,
14
17
// A mapping pointing to a file that needs special encoding (%20) in URLs.
15
- [ 'pkgexports/space' , { default : 'encoded path' } ] ,
18
+ [ 'pkgexports/space' , maybeWrapped ( { default : 'encoded path' } ) ] ,
16
19
// Verifying that normal packages still work with exports turned on.
17
20
isRequire ? [ 'baz/index' , { default : 'eye catcher' } ] : [ null ] ,
18
21
// Fallbacks
19
- [ 'pkgexports/fallbackdir/asdf.js' , { default : 'asdf' } ] ,
20
- [ 'pkgexports/fallbackfile' , { default : 'asdf' } ] ,
22
+ [ 'pkgexports/fallbackdir/asdf.js' , maybeWrapped ( { default : 'asdf' } ) ] ,
23
+ [ 'pkgexports/fallbackfile' , maybeWrapped ( { default : 'asdf' } ) ] ,
21
24
// Conditional split for require
22
25
[ 'pkgexports/condition' , isRequire ? { default : 'encoded path' } :
23
- { default : 'asdf' } ] ,
26
+ maybeWrapped ( { default : 'asdf' } ) ] ,
24
27
// String exports sugar
25
- [ 'pkgexports-sugar' , { default : 'main' } ] ,
28
+ [ 'pkgexports-sugar' , maybeWrapped ( { default : 'main' } ) ] ,
26
29
// Conditional object exports sugar
27
30
[ 'pkgexports-sugar2' , isRequire ? { default : 'not-exported' } :
28
- { default : 'main' } ] ,
31
+ maybeWrapped ( { default : 'main' } ) ] ,
29
32
// Resolve self
30
33
[ 'pkgexports/resolve-self' , isRequire ?
31
34
{ default : 'self-cjs' } : { default : 'self-mjs' } ] ,
32
35
// Resolve self sugar
33
- [ 'pkgexports-sugar' , { default : 'main' } ] ,
36
+ [ 'pkgexports-sugar' , maybeWrapped ( { default : 'main' } ) ] ,
34
37
// Path patterns
35
- [ 'pkgexports/subpath/sub-dir1' , { default : 'main' } ] ,
36
- [ 'pkgexports/subpath/sub-dir1.js' , { default : 'main' } ] ,
37
- [ 'pkgexports/features/dir1' , { default : 'main' } ] ,
38
- [ 'pkgexports/dir1/dir1/trailer' , { default : 'main' } ] ,
39
- [ 'pkgexports/dir2/dir2/trailer' , { default : 'index' } ] ,
40
- [ 'pkgexports/a/dir1/dir1' , { default : 'main' } ] ,
41
- [ 'pkgexports/a/b/dir1/dir1' , { default : 'main' } ] ,
38
+ [ 'pkgexports/subpath/sub-dir1' , maybeWrapped ( { default : 'main' } ) ] ,
39
+ [ 'pkgexports/subpath/sub-dir1.js' , maybeWrapped ( { default : 'main' } ) ] ,
40
+ [ 'pkgexports/features/dir1' , maybeWrapped ( { default : 'main' } ) ] ,
41
+ [ 'pkgexports/dir1/dir1/trailer' , maybeWrapped ( { default : 'main' } ) ] ,
42
+ [ 'pkgexports/dir2/dir2/trailer' , maybeWrapped ( { default : 'index' } ) ] ,
43
+ [ 'pkgexports/a/dir1/dir1' , maybeWrapped ( { default : 'main' } ) ] ,
44
+ [ 'pkgexports/a/b/dir1/dir1' , maybeWrapped ( { default : 'main' } ) ] ,
42
45
43
46
// Deprecated:
44
47
// Double slashes:
45
- [ 'pkgexports/a//dir1/dir1' , { default : 'main' } ] ,
48
+ [ 'pkgexports/a//dir1/dir1' , maybeWrapped ( { default : 'main' } ) ] ,
46
49
// double slash target
47
- [ 'pkgexports/doubleslash' , { default : 'asdf' } ] ,
50
+ [ 'pkgexports/doubleslash' , maybeWrapped ( { default : 'asdf' } ) ] ,
48
51
// Null target with several slashes
49
- [ 'pkgexports/sub//internal/test.js' , { default : 'internal only' } ] ,
50
- [ 'pkgexports/sub//internal//test.js' , { default : 'internal only' } ] ,
51
- [ 'pkgexports/sub/////internal/////test.js' , { default : 'internal only' } ] ,
52
+ [ 'pkgexports/sub//internal/test.js' , maybeWrapped ( { default : 'internal only' } ) ] ,
53
+ [ 'pkgexports/sub//internal//test.js' , maybeWrapped ( { default : 'internal only' } ) ] ,
54
+ [ 'pkgexports/sub/////internal/////test.js' , maybeWrapped ( { default : 'internal only' } ) ] ,
52
55
// trailing slash
53
56
[ 'pkgexports/trailing-pattern-slash/' ,
54
- { default : 'trailing-pattern-slash' } ] ,
57
+ maybeWrapped ( { default : 'trailing-pattern-slash' } ) ] ,
55
58
] ) ;
56
59
57
60
if ( ! isRequire ) {
@@ -214,11 +217,15 @@ import fromInside from '../fixtures/node_modules/pkgexports/lib/hole.js';
214
217
215
218
const { requireFromInside, importFromInside } = fromInside ;
216
219
[ importFromInside , requireFromInside ] . forEach ( ( loadFromInside ) => {
220
+ const isRequire = loadFromInside === requireFromInside ;
221
+ const maybeWrapped = isRequire ? ( exports ) => exports :
222
+ ( exports ) => ( { ...exports , 'module.exports' : exports . default } ) ;
223
+
217
224
const validSpecifiers = new Map ( [
218
225
// A file not visible from outside of the package
219
- [ '../not-exported.js' , { default : 'not-exported' } ] ,
226
+ [ '../not-exported.js' , maybeWrapped ( { default : 'not-exported' } ) ] ,
220
227
// Part of the public interface
221
- [ 'pkgexports/valid-cjs' , { default : 'asdf' } ] ,
228
+ [ 'pkgexports/valid-cjs' , maybeWrapped ( { default : 'asdf' } ) ] ,
222
229
] ) ;
223
230
for ( const [ validSpecifier , expected ] of validSpecifiers ) {
224
231
if ( validSpecifier === null ) continue ;
0 commit comments