Skip to content

Commit

Permalink
fixup Object.create assignment, __PURE__ tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
guybedford committed Apr 3, 2020
1 parent 35a88be commit 5f4310d
Show file tree
Hide file tree
Showing 16 changed files with 67 additions and 30 deletions.
16 changes: 10 additions & 6 deletions src/ast/variables/NamespaceVariable.ts
Expand Up @@ -92,7 +92,8 @@ export default class NamespaceVariable extends Variable {
return `${t}${safeName}: ${original.getName()}`;
});

members.unshift(`${t}__proto__:${_}null`);
const objectCreate = this.reexportedNamespaceVariables.length;
if (!objectCreate) members.unshift(`${t}__proto__:${_}null`);

if (options.namespaceToStringTag) {
members.unshift(`${t}[Symbol.toStringTag]:${_}'Module'`);
Expand All @@ -101,12 +102,15 @@ export default class NamespaceVariable extends Variable {
const name = this.getName();
let output = `{${n}${members.join(`,${n}`)}${n}}`;
if (this.reexportedNamespaceVariables.length) {
output = `/*#__PURE__*/Object.assign(${this.reexportedNamespaceVariables
output = `Object.assign(Object.create(null), ${this.reexportedNamespaceVariables
.map((v) => v.getName())
.join(', ')}, ${output})`;
}
if (this.syntheticNamedExports) {
output = `/*#__PURE__*/Object.assign(${output}, ${this.module.getDefaultExport().getName()})`;
.join(', ')}, ${output}${
this.syntheticNamedExports ? ', ' + this.module.getDefaultExport().getName() : ''
})`;
if (!options.freeze) output = '*#__PURE__*/' + output;
} else if (this.syntheticNamedExports) {
output = `Object.assign(${output}, ${this.module.getDefaultExport().getName()})`;
if (!options.freeze) output = '*#__PURE__*/' + output;
}
if (options.freeze) {
output = `/*#__PURE__*/Object.freeze(${output})`;
Expand Down
Expand Up @@ -6,7 +6,7 @@ define(function () { 'use strict';
};
const foo = 100;

var ns = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.assign({
var ns = /*#__PURE__*/Object.freeze(Object.assign({
__proto__: null,
foo: foo,
'default': d
Expand Down
Expand Up @@ -6,7 +6,7 @@ const d = {
};
const foo = 100;

var ns = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.assign({
var ns = /*#__PURE__*/Object.freeze(Object.assign({
__proto__: null,
foo: foo,
'default': d
Expand Down
Expand Up @@ -4,7 +4,7 @@ const d = {
};
const foo = 100;

var ns = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.assign({
var ns = /*#__PURE__*/Object.freeze(Object.assign({
__proto__: null,
foo: foo,
'default': d
Expand Down
Expand Up @@ -9,7 +9,7 @@ System.register([], function () {
};
const foo = 100;

var ns = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.assign({
var ns = /*#__PURE__*/Object.freeze(Object.assign({
__proto__: null,
foo: foo,
'default': d
Expand Down
11 changes: 11 additions & 0 deletions test/cli/node_modules/bar/lib/config.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions test/cli/node_modules/bar/package.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions test/cli/node_modules/rollup-config-foo/lib/config.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions test/cli/node_modules/rollup-config-foo/package.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/cli/samples/watch/bundle-error/main.js
@@ -1 +1 @@
export default 42;
<=>
23 changes: 19 additions & 4 deletions test/cli/samples/watch/watch-config-early-update/rollup.config.js
@@ -1,9 +1,24 @@

export default {
input: {output2: "main.js"},
import path from 'path';
import fs from 'fs';
const messageFile = path.resolve(__dirname, '_actual', 'message.txt');
export default new Promise(resolve => {
fs.writeFileSync(messageFile, 'loading');
const watcher = fs.watch(messageFile, event => {
if (event === 'change') {
const content = fs.readFileSync(messageFile, 'utf8');
if (content === 'loaded') {
watcher.close();
fs.writeFileSync(messageFile, 'resolved');
resolve({
input: {output1: "main.js"},
output: {
dir: "_actual",
format: "es"
}
};

});
}
}
});
});

8 changes: 1 addition & 7 deletions test/cli/samples/watch/watch-config/rollup.config.js
@@ -1,7 +1 @@
export default {
input: {output: "main4.js"},
output: {
dir: "_actual",
format: "es"
}
};
throw new Error("Config contains initial errors");
3 changes: 1 addition & 2 deletions test/form/samples/ns-external-star-reexport/_expected/amd.js
Expand Up @@ -2,8 +2,7 @@ define(['external-ns-1', 'external-ns-2'], function (externalNs1, externalNs2) {

const val = 5;

var ns = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.assign(externalNs1, externalNs2, {
__proto__: null,
var ns = /*#__PURE__*/Object.freeze(Object.assign(Object.create(null), externalNs1, externalNs2, {
val: val
}));

Expand Down
3 changes: 1 addition & 2 deletions test/form/samples/ns-external-star-reexport/_expected/cjs.js
Expand Up @@ -5,8 +5,7 @@ var externalNs2 = require('external-ns-2');

const val = 5;

var ns = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.assign(externalNs1, externalNs2, {
__proto__: null,
var ns = /*#__PURE__*/Object.freeze(Object.assign(Object.create(null), externalNs1, externalNs2, {
val: val
}));

Expand Down
3 changes: 1 addition & 2 deletions test/form/samples/ns-external-star-reexport/_expected/es.js
Expand Up @@ -3,8 +3,7 @@ import * as externalNs2 from 'external-ns-2';

const val = 5;

var ns = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.assign(externalNs1, externalNs2, {
__proto__: null,
var ns = /*#__PURE__*/Object.freeze(Object.assign(Object.create(null), externalNs1, externalNs2, {
val: val
}));

Expand Down
Expand Up @@ -11,8 +11,7 @@ System.register(['external-ns-1', 'external-ns-2'], function (exports) {

const val = 5;

var ns = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.assign(externalNs1, externalNs2, {
__proto__: null,
var ns = /*#__PURE__*/Object.freeze(Object.assign(Object.create(null), externalNs1, externalNs2, {
val: val
}));

Expand Down

0 comments on commit 5f4310d

Please sign in to comment.