Skip to content

Commit 8bf1574

Browse files
committed
CJS fake namespace object contains exports now
webpack#6576
1 parent 213226e commit 8bf1574

File tree

7 files changed

+21
-21
lines changed

7 files changed

+21
-21
lines changed

lib/ContextModule.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,12 +269,12 @@ class ContextModule extends Module {
269269
getReturn(type) {
270270
if (type === 1) return "module";
271271
if (type === 2)
272-
return 'Object.assign({/* fake namespace object */}, module, { "default": module })';
272+
return 'Object.assign({/* fake namespace object */}, typeof module === "object" && module, { "default": module })';
273273
if (type === 0) {
274274
if (this.options.namespaceObject === "strict") {
275275
return '/* fake namespace object */ { "default": module }';
276276
} else {
277-
return '(typeof module === "object" && module && module.__esModule ? module : /* fake namespace object */ { "default": module })';
277+
return '(typeof module === "object" && module && module.__esModule ? module : Object.assign({/* fake namespace object */}, typeof module === "object" && module, { "default": module }))';
278278
}
279279
}
280280
}

lib/RuntimeTemplate.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ module.exports = class RuntimeTemplate {
9494
} else {
9595
return `Object(function() { var module = ${
9696
rawModule
97-
}; return typeof module === "object" && module && module.__esModule ? module : { /* fake namespace object */ "default": module }; }())`;
97+
}; return typeof module === "object" && module && module.__esModule ? module : Object.assign({/* fake namespace object */}, typeof module === "object" && module, { "default": module }); }())`;
9898
}
9999
}
100100

@@ -150,7 +150,7 @@ module.exports = class RuntimeTemplate {
150150
} else {
151151
getModuleFunction = `function() { ${header}var module = ${
152152
rawModule
153-
}; return typeof module === "object" && module && module.__esModule ? module : { /* fake namespace object */ "default": module }; }`;
153+
}; return typeof module === "object" && module && module.__esModule ? module : Object.assign({/* fake namespace object */}, typeof module === "object" && module, { "default": module }); }`;
154154
}
155155

156156
return `${promise || "Promise.resolve()"}.then(${getModuleFunction})`;

test/cases/mjs/non-mjs-namespace-object-lazy/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
it("should receive a namespace object when importing commonjs", function(done) {
22
import("./cjs").then(function(result) {
3-
result.should.be.eql({ default: { named: "named", default: "default" } });
3+
result.should.be.eql({ named: "named", default: { named: "named", default: "default" } });
44
done();
55
}).catch(done);
66
});
@@ -60,9 +60,9 @@ function promiseTest(promise, equalsTo) {
6060

6161
it("should receive a namespace object when importing commonjs via context", function() {
6262
return Promise.all([
63-
promiseTest(contextCJS("one"), { default: { named: "named", default: "default" } }),
63+
promiseTest(contextCJS("one"), { named: "named", default: { named: "named", default: "default" } }),
6464
promiseTest(contextCJS("two"), { __esModule: true, named: "named", default: "default" }),
65-
promiseTest(contextCJS("three"), { default: { named: "named", default: "default" } }),
65+
promiseTest(contextCJS("three"), { named: "named", default: { named: "named", default: "default" } }),
6666
promiseTest(contextCJS("null"), { default: null })
6767
]);
6868
});
@@ -77,7 +77,7 @@ it("should receive a namespace object when importing harmony via context", funct
7777

7878
it("should receive a namespace object when importing mixed content via context", function() {
7979
return Promise.all([
80-
promiseTest(contextMixed("one"), { default: { named: "named", default: "default" } }),
80+
promiseTest(contextMixed("one"), { named: "named", default: { named: "named", default: "default" } }),
8181
promiseTest(contextMixed("two"), { __esModule: true, named: "named", default: "default" }),
8282
promiseTest(contextMixed("three"), { named: "named", default: "default" }),
8383
promiseTest(contextMixed("null"), { default: null })

test/statsCases/aggressive-splitting-entry/expected.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Child fitting:
55
Built at: Thu Jan 01 1970 00:00:00 GMT
66
Asset Size Chunks Chunk Names
77
fb95acf7c457672e70d0.js 1.05 KiB 0 [emitted]
8-
a1e683753eca705a0882.js 9.92 KiB 1 [emitted]
8+
a1e683753eca705a0882.js 9.97 KiB 1 [emitted]
99
d43339a3d0f86c6b8d90.js 1.94 KiB 2 [emitted]
1010
6c7fb52c5514dbfbf094.js 1.94 KiB 3 [emitted]
1111
Entrypoint main = d43339a3d0f86c6b8d90.js 6c7fb52c5514dbfbf094.js a1e683753eca705a0882.js
@@ -31,7 +31,7 @@ Child content-change:
3131
Built at: Thu Jan 01 1970 00:00:00 GMT
3232
Asset Size Chunks Chunk Names
3333
fb95acf7c457672e70d0.js 1.05 KiB 0 [emitted]
34-
a1e683753eca705a0882.js 9.92 KiB 1 [emitted]
34+
a1e683753eca705a0882.js 9.97 KiB 1 [emitted]
3535
d43339a3d0f86c6b8d90.js 1.94 KiB 2 [emitted]
3636
6c7fb52c5514dbfbf094.js 1.94 KiB 3 [emitted]
3737
Entrypoint main = d43339a3d0f86c6b8d90.js 6c7fb52c5514dbfbf094.js a1e683753eca705a0882.js

test/statsCases/import-weak/expected.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Time: Xms
33
Built at: Thu Jan 01 1970 00:00:00 GMT
44
Asset Size Chunks Chunk Names
55
0.js 149 bytes 0 [emitted]
6-
entry.js 7.63 KiB 1 [emitted] entry
6+
entry.js 7.79 KiB 1 [emitted] entry
77
Entrypoint entry = entry.js
88
[0] ./modules/b.js 22 bytes {0} [built]
99
[1] ./entry.js 120 bytes {1} [built]

test/statsCases/limit-chunk-count-plugin/expected.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Child 1 chunks:
44
Time: Xms
55
Built at: Thu Jan 01 1970 00:00:00 GMT
66
Asset Size Chunks Chunk Names
7-
bundle.js 5.52 KiB 0 [emitted] main
7+
bundle.js 5.68 KiB 0 [emitted] main
88
Entrypoint main = bundle.js
99
chunk {0} bundle.js (main) 191 bytes <{0}> >{0}< [entry] [rendered]
1010
[0] ./index.js 73 bytes {0} [built]
@@ -17,9 +17,9 @@ Child 2 chunks:
1717
Hash: f90c7b21ae5c6e853a0d
1818
Time: Xms
1919
Built at: Thu Jan 01 1970 00:00:00 GMT
20-
Asset Size Chunks Chunk Names
21-
0.bundle.js 912 bytes 0 [emitted]
22-
bundle.js 7.14 KiB 1 [emitted] main
20+
Asset Size Chunks Chunk Names
21+
0.bundle.js 1 KiB 0 [emitted]
22+
bundle.js 7.19 KiB 1 [emitted] main
2323
Entrypoint main = bundle.js
2424
chunk {0} 0.bundle.js 118 bytes <{0}> <{1}> >{0}< [rendered]
2525
[0] ./d.js 22 bytes {0} [built]
@@ -34,9 +34,9 @@ Child 3 chunks:
3434
Time: Xms
3535
Built at: Thu Jan 01 1970 00:00:00 GMT
3636
Asset Size Chunks Chunk Names
37-
0.bundle.js 774 bytes 0 [emitted]
37+
0.bundle.js 886 bytes 0 [emitted]
3838
1.bundle.js 245 bytes 1 [emitted]
39-
bundle.js 7.14 KiB 2 [emitted] main
39+
bundle.js 7.19 KiB 2 [emitted] main
4040
Entrypoint main = bundle.js
4141
chunk {0} 0.bundle.js 74 bytes <{0}> <{2}> >{0}< >{1}< [rendered]
4242
[0] ./d.js 22 bytes {0} [built]
@@ -54,8 +54,8 @@ Child 4 chunks:
5454
Asset Size Chunks Chunk Names
5555
0.bundle.js 236 bytes 0 [emitted]
5656
1.bundle.js 245 bytes 1 [emitted]
57-
2.bundle.js 603 bytes 2 [emitted]
58-
bundle.js 7.14 KiB 3 [emitted] main
57+
2.bundle.js 715 bytes 2 [emitted]
58+
bundle.js 7.19 KiB 3 [emitted] main
5959
Entrypoint main = bundle.js
6060
chunk {0} 0.bundle.js 44 bytes <{2}> <{3}> [rendered]
6161
[0] ./d.js 22 bytes {0} [built]

test/statsCases/named-chunks-plugin-async/expected.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ Hash: c5b0089a4015e8744f8e
22
Time: Xms
33
Built at: Thu Jan 01 1970 00:00:00 GMT
44
Asset Size Chunks Chunk Names
5-
chunk-containing-__a_js.js 453 bytes chunk-containing-__a_js [emitted]
5+
chunk-containing-__a_js.js 509 bytes chunk-containing-__a_js [emitted]
66
chunk-containing-__b_js.js 173 bytes chunk-containing-__b_js [emitted]
7-
entry.js 7.17 KiB entry [emitted] entry
7+
entry.js 7.28 KiB entry [emitted] entry
88
Entrypoint entry = entry.js
99
[0] ./modules/b.js 22 bytes {chunk-containing-__b_js} [built]
1010
[1] ./modules/a.js 37 bytes {chunk-containing-__a_js} [built]

0 commit comments

Comments
 (0)