From 9abaf68e8486a8b0d8773bc4571380529f0f6d5e Mon Sep 17 00:00:00 2001 From: jdalton Date: Wed, 4 Mar 2020 17:40:02 -0800 Subject: [PATCH] Update generated code of getInteropBlock() to work with null prototype objects --- src/finalisers/shared/getInteropBlock.ts | 2 +- .../_expected/amd/generated-dep.js | 2 +- .../amd/_virtual/_external_commonjs-external | 2 +- .../_expected/amd/commonjs.js | 2 +- .../_expected/amd/main.js | 2 +- test/form/samples/compact/_expected/amd.js | 4 ++-- test/form/samples/compact/_expected/iife.js | 4 ++-- test/form/samples/compact/_expected/umd.js | 2 +- .../_expected/amd.js | 2 +- .../_expected/iife.js | 2 +- .../_expected/umd.js | 2 +- .../export-default-import/_expected/amd.js | 2 +- .../export-default-import/_expected/iife.js | 2 +- .../export-default-import/_expected/umd.js | 2 +- .../external-deshadowing/_expected/amd.js | 2 +- .../external-deshadowing/_expected/iife.js | 2 +- .../external-deshadowing/_expected/umd.js | 2 +- .../_expected/amd.js | 2 +- .../_expected/iife.js | 2 +- .../_expected/umd.js | 2 +- .../samples/external-imports/_expected/amd.js | 2 +- .../samples/external-imports/_expected/iife.js | 2 +- .../samples/external-imports/_expected/umd.js | 2 +- .../guessed-global-names/_expected/amd.js | 2 +- .../guessed-global-names/_expected/iife.js | 2 +- .../guessed-global-names/_expected/umd.js | 2 +- .../samples/paths-function/_expected/amd.js | 2 +- .../samples/paths-function/_expected/iife.js | 2 +- .../samples/paths-function/_expected/umd.js | 2 +- .../samples/paths-relative/_expected/amd.js | 2 +- .../samples/paths-relative/_expected/iife.js | 2 +- .../samples/paths-relative/_expected/umd.js | 2 +- test/form/samples/paths/_expected/amd.js | 2 +- test/form/samples/paths/_expected/iife.js | 2 +- test/form/samples/paths/_expected/umd.js | 2 +- .../_expected/amd.js | 2 +- .../_expected/iife.js | 2 +- .../_expected/umd.js | 2 +- .../reexport-external-default/_expected/amd.js | 2 +- .../_expected/iife.js | 2 +- .../reexport-external-default/_expected/umd.js | 2 +- .../_expected/amd.js | 2 +- .../_expected/iife.js | 2 +- .../_expected/umd.js | 2 +- .../_expected/amd.js | 2 +- .../_expected/iife.js | 2 +- .../_expected/umd.js | 2 +- .../form/samples/url-external/_expected/amd.js | 2 +- .../samples/url-external/_expected/iife.js | 2 +- .../form/samples/url-external/_expected/umd.js | 2 +- .../_expected/amd.js | 2 +- .../_expected/iife.js | 2 +- .../_expected/umd.js | 2 +- .../_config.js | 18 ++++++++++++++++++ .../default-export-with-null-prototype/main.js | 3 +++ 55 files changed, 76 insertions(+), 55 deletions(-) create mode 100644 test/function/samples/default-export-with-null-prototype/_config.js create mode 100644 test/function/samples/default-export-with-null-prototype/main.js diff --git a/src/finalisers/shared/getInteropBlock.ts b/src/finalisers/shared/getInteropBlock.ts index 3aabf076edb..0e458e54b9d 100644 --- a/src/finalisers/shared/getInteropBlock.ts +++ b/src/finalisers/shared/getInteropBlock.ts @@ -20,7 +20,7 @@ export default function getInteropBlock( } return ( - `${name}${_}=${_}${name}${_}&&${_}${name}.hasOwnProperty('default')${_}?` + + `${name}${_}=${_}${name}${_}&&${_}Object.prototype.hasOwnProperty.call(${name},${_}'default')${_}?` + `${_}${name}['default']${_}:${_}${name};` ); }) diff --git a/test/chunking-form/samples/avoid-chunk-import-hoisting/_expected/amd/generated-dep.js b/test/chunking-form/samples/avoid-chunk-import-hoisting/_expected/amd/generated-dep.js index 4fc2383a2a2..aaf66da1323 100644 --- a/test/chunking-form/samples/avoid-chunk-import-hoisting/_expected/amd/generated-dep.js +++ b/test/chunking-form/samples/avoid-chunk-import-hoisting/_expected/amd/generated-dep.js @@ -1,6 +1,6 @@ define(['exports', 'lib'], function (exports, value) { 'use strict'; - value = value && value.hasOwnProperty('default') ? value['default'] : value; + value = value && Object.prototype.hasOwnProperty.call(value, 'default') ? value['default'] : value; var dep = 2 * value; diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/_external_commonjs-external b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/_external_commonjs-external index ad2b06d6161..aac3dad0875 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/_external_commonjs-external +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/_external_commonjs-external @@ -1,6 +1,6 @@ define(['external'], function (external) { 'use strict'; - external = external && external.hasOwnProperty('default') ? external['default'] : external; + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/commonjs.js b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/commonjs.js index 6f1ab74a4e9..bd160dfd08e 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/commonjs.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/commonjs.js @@ -1,6 +1,6 @@ define(['exports', 'external', './other', './_virtual/_external_commonjs-external', './_virtual/other.js_commonjs-proxy'], function (exports, external, other, _external_commonjsExternal, other$1) { 'use strict'; - external = external && external.hasOwnProperty('default') ? external['default'] : external; + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; const { value } = other$1; diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/main.js b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/main.js index 5e740cc642c..48e1747cfda 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/main.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/main.js @@ -1,6 +1,6 @@ define(['external', './commonjs'], function (external, commonjs) { 'use strict'; - external = external && external.hasOwnProperty('default') ? external['default'] : external; + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; console.log(commonjs.default, external); diff --git a/test/form/samples/compact/_expected/amd.js b/test/form/samples/compact/_expected/amd.js index ae3955b3c27..6be712a0259 100644 --- a/test/form/samples/compact/_expected/amd.js +++ b/test/form/samples/compact/_expected/amd.js @@ -1,6 +1,6 @@ -define(['external'],function(x){'use strict';x=x&&x.hasOwnProperty('default')?x['default']:x;var self=/*#__PURE__*/Object.freeze({[Symbol.toStringTag]:'Module',__proto__:null,get default(){return foo}});console.log(self); +define(['external'],function(x){'use strict';x=x&&Object.prototype.hasOwnProperty.call(x,'default')?x['default']:x;var self=/*#__PURE__*/Object.freeze({[Symbol.toStringTag]:'Module',__proto__:null,get default(){return foo}});console.log(self); function foo () { console.log( x ); } // trailing comment -return foo;}); \ No newline at end of file +return foo;}); diff --git a/test/form/samples/compact/_expected/iife.js b/test/form/samples/compact/_expected/iife.js index 110ab76bfb1..d17c5d43442 100644 --- a/test/form/samples/compact/_expected/iife.js +++ b/test/form/samples/compact/_expected/iife.js @@ -1,6 +1,6 @@ -var foo=(function(x){'use strict';x=x&&x.hasOwnProperty('default')?x['default']:x;var self=/*#__PURE__*/Object.freeze({[Symbol.toStringTag]:'Module',__proto__:null,get default(){return foo}});console.log(self); +var foo=(function(x){'use strict';x=x&&Object.prototype.hasOwnProperty.call(x,'default')?x['default']:x;var self=/*#__PURE__*/Object.freeze({[Symbol.toStringTag]:'Module',__proto__:null,get default(){return foo}});console.log(self); function foo () { console.log( x ); } // trailing comment -return foo;}(x)); \ No newline at end of file +return foo;}(x)); diff --git a/test/form/samples/compact/_expected/umd.js b/test/form/samples/compact/_expected/umd.js index 93901234cfc..18250d221e0 100644 --- a/test/form/samples/compact/_expected/umd.js +++ b/test/form/samples/compact/_expected/umd.js @@ -1,4 +1,4 @@ -(function(g,f){typeof exports==='object'&&typeof module!=='undefined'?module.exports=f(require('external')):typeof define==='function'&&define.amd?define(['external'],f):(g=g||self,g.foo=f(g.x));}(this,(function(x){'use strict';x=x&&x.hasOwnProperty('default')?x['default']:x;var self=/*#__PURE__*/Object.freeze({[Symbol.toStringTag]:'Module',__proto__:null,get default(){return foo}});console.log(self); +(function(g,f){typeof exports==='object'&&typeof module!=='undefined'?module.exports=f(require('external')):typeof define==='function'&&define.amd?define(['external'],f):(g=g||self,g.foo=f(g.x));}(this,(function(x){'use strict';x=x&&Object.prototype.hasOwnProperty.call(x,'default')?x['default']:x;var self=/*#__PURE__*/Object.freeze({[Symbol.toStringTag]:'Module',__proto__:null,get default(){return foo}});console.log(self); function foo () { console.log( x ); } diff --git a/test/form/samples/deconflict-format-specific-globals/_expected/amd.js b/test/form/samples/deconflict-format-specific-globals/_expected/amd.js index 3e5eb19d02c..f5bf6f86c8d 100644 --- a/test/form/samples/deconflict-format-specific-globals/_expected/amd.js +++ b/test/form/samples/deconflict-format-specific-globals/_expected/amd.js @@ -19,7 +19,7 @@ define(['module', 'require', 'external'], function (module, require, external) { } } - external = external && external.hasOwnProperty('default') ? external['default'] : external; + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; console.log(external); diff --git a/test/form/samples/deconflict-format-specific-globals/_expected/iife.js b/test/form/samples/deconflict-format-specific-globals/_expected/iife.js index e8aa89b3fcb..31905bacc66 100644 --- a/test/form/samples/deconflict-format-specific-globals/_expected/iife.js +++ b/test/form/samples/deconflict-format-specific-globals/_expected/iife.js @@ -1,7 +1,7 @@ var bundle = (function (external) { 'use strict'; - external = external && external.hasOwnProperty('default') ? external['default'] : external; + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; console.log(external); diff --git a/test/form/samples/deconflict-format-specific-globals/_expected/umd.js b/test/form/samples/deconflict-format-specific-globals/_expected/umd.js index 27e967c3740..3fdf74e1f46 100644 --- a/test/form/samples/deconflict-format-specific-globals/_expected/umd.js +++ b/test/form/samples/deconflict-format-specific-globals/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, global.bundle = factory(global.external)); }(this, (function (external) { 'use strict'; - external = external && external.hasOwnProperty('default') ? external['default'] : external; + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; console.log(external); diff --git a/test/form/samples/export-default-import/_expected/amd.js b/test/form/samples/export-default-import/_expected/amd.js index 2be38062460..9fab6961904 100644 --- a/test/form/samples/export-default-import/_expected/amd.js +++ b/test/form/samples/export-default-import/_expected/amd.js @@ -1,6 +1,6 @@ define(['exports', 'x'], function (exports, x) { 'use strict'; - x = x && x.hasOwnProperty('default') ? x['default'] : x; + x = x && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; diff --git a/test/form/samples/export-default-import/_expected/iife.js b/test/form/samples/export-default-import/_expected/iife.js index ccb224f947a..4158e308c99 100644 --- a/test/form/samples/export-default-import/_expected/iife.js +++ b/test/form/samples/export-default-import/_expected/iife.js @@ -1,7 +1,7 @@ var myBundle = (function (exports, x) { 'use strict'; - x = x && x.hasOwnProperty('default') ? x['default'] : x; + x = x && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; diff --git a/test/form/samples/export-default-import/_expected/umd.js b/test/form/samples/export-default-import/_expected/umd.js index c37652e46a8..b8886fbc23d 100644 --- a/test/form/samples/export-default-import/_expected/umd.js +++ b/test/form/samples/export-default-import/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.myBundle = {}, global.x)); }(this, (function (exports, x) { 'use strict'; - x = x && x.hasOwnProperty('default') ? x['default'] : x; + x = x && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; diff --git a/test/form/samples/external-deshadowing/_expected/amd.js b/test/form/samples/external-deshadowing/_expected/amd.js index ddf292350fa..851ae0a309d 100644 --- a/test/form/samples/external-deshadowing/_expected/amd.js +++ b/test/form/samples/external-deshadowing/_expected/amd.js @@ -1,6 +1,6 @@ define(['exports', 'a', 'b'], function (exports, a, Test$1) { 'use strict'; - Test$1 = Test$1 && Test$1.hasOwnProperty('default') ? Test$1['default'] : Test$1; + Test$1 = Test$1 && Object.prototype.hasOwnProperty.call(Test$1, 'default') ? Test$1['default'] : Test$1; const Test = () => { console.log(a.Test); diff --git a/test/form/samples/external-deshadowing/_expected/iife.js b/test/form/samples/external-deshadowing/_expected/iife.js index a316d064806..c8e2234e4b7 100644 --- a/test/form/samples/external-deshadowing/_expected/iife.js +++ b/test/form/samples/external-deshadowing/_expected/iife.js @@ -1,7 +1,7 @@ var myBundle = (function (exports, a, Test$1) { 'use strict'; - Test$1 = Test$1 && Test$1.hasOwnProperty('default') ? Test$1['default'] : Test$1; + Test$1 = Test$1 && Object.prototype.hasOwnProperty.call(Test$1, 'default') ? Test$1['default'] : Test$1; const Test = () => { console.log(a.Test); diff --git a/test/form/samples/external-deshadowing/_expected/umd.js b/test/form/samples/external-deshadowing/_expected/umd.js index 7016fd90016..c3a21806bb2 100644 --- a/test/form/samples/external-deshadowing/_expected/umd.js +++ b/test/form/samples/external-deshadowing/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.myBundle = {}, global.a, global.b)); }(this, (function (exports, a, Test$1) { 'use strict'; - Test$1 = Test$1 && Test$1.hasOwnProperty('default') ? Test$1['default'] : Test$1; + Test$1 = Test$1 && Object.prototype.hasOwnProperty.call(Test$1, 'default') ? Test$1['default'] : Test$1; const Test = () => { console.log(a.Test); diff --git a/test/form/samples/external-imports-custom-names/_expected/amd.js b/test/form/samples/external-imports-custom-names/_expected/amd.js index 0061bcfe708..990a9471fd7 100644 --- a/test/form/samples/external-imports-custom-names/_expected/amd.js +++ b/test/form/samples/external-imports-custom-names/_expected/amd.js @@ -1,6 +1,6 @@ define(['jquery'], function ($) { 'use strict'; - $ = $ && $.hasOwnProperty('default') ? $['default'] : $; + $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $; $( function () { $( 'body' ).html( '

hello world!

' ); diff --git a/test/form/samples/external-imports-custom-names/_expected/iife.js b/test/form/samples/external-imports-custom-names/_expected/iife.js index 9d27440261b..1104f0e03bd 100644 --- a/test/form/samples/external-imports-custom-names/_expected/iife.js +++ b/test/form/samples/external-imports-custom-names/_expected/iife.js @@ -1,7 +1,7 @@ (function ($) { 'use strict'; - $ = $ && $.hasOwnProperty('default') ? $['default'] : $; + $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $; $( function () { $( 'body' ).html( '

hello world!

' ); diff --git a/test/form/samples/external-imports-custom-names/_expected/umd.js b/test/form/samples/external-imports-custom-names/_expected/umd.js index fd75ee31755..e657b318686 100644 --- a/test/form/samples/external-imports-custom-names/_expected/umd.js +++ b/test/form/samples/external-imports-custom-names/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.jQuery)); }(this, (function ($) { 'use strict'; - $ = $ && $.hasOwnProperty('default') ? $['default'] : $; + $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $; $( function () { $( 'body' ).html( '

hello world!

' ); diff --git a/test/form/samples/external-imports/_expected/amd.js b/test/form/samples/external-imports/_expected/amd.js index 987d30e41b4..aebc9376930 100644 --- a/test/form/samples/external-imports/_expected/amd.js +++ b/test/form/samples/external-imports/_expected/amd.js @@ -1,6 +1,6 @@ define(['factory', 'baz', 'shipping-port', 'alphabet'], function (factory, baz, containers, alphabet) { 'use strict'; - factory = factory && factory.hasOwnProperty('default') ? factory['default'] : factory; + factory = factory && Object.prototype.hasOwnProperty.call(factory, 'default') ? factory['default'] : factory; var alphabet__default = 'default' in alphabet ? alphabet['default'] : alphabet; factory( null ); diff --git a/test/form/samples/external-imports/_expected/iife.js b/test/form/samples/external-imports/_expected/iife.js index fb0f172d051..89e8261b043 100644 --- a/test/form/samples/external-imports/_expected/iife.js +++ b/test/form/samples/external-imports/_expected/iife.js @@ -1,7 +1,7 @@ (function (factory, baz, containers, alphabet) { 'use strict'; - factory = factory && factory.hasOwnProperty('default') ? factory['default'] : factory; + factory = factory && Object.prototype.hasOwnProperty.call(factory, 'default') ? factory['default'] : factory; var alphabet__default = 'default' in alphabet ? alphabet['default'] : alphabet; factory( null ); diff --git a/test/form/samples/external-imports/_expected/umd.js b/test/form/samples/external-imports/_expected/umd.js index b997f310acb..041d0464080 100644 --- a/test/form/samples/external-imports/_expected/umd.js +++ b/test/form/samples/external-imports/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.factory, global.baz, global.containers, global.alphabet)); }(this, (function (factory, baz, containers, alphabet) { 'use strict'; - factory = factory && factory.hasOwnProperty('default') ? factory['default'] : factory; + factory = factory && Object.prototype.hasOwnProperty.call(factory, 'default') ? factory['default'] : factory; var alphabet__default = 'default' in alphabet ? alphabet['default'] : alphabet; factory( null ); diff --git a/test/form/samples/guessed-global-names/_expected/amd.js b/test/form/samples/guessed-global-names/_expected/amd.js index 9d13ee97532..61394b470af 100644 --- a/test/form/samples/guessed-global-names/_expected/amd.js +++ b/test/form/samples/guessed-global-names/_expected/amd.js @@ -1,6 +1,6 @@ define(['unchanged', 'changed', 'special-character', 'with/slash', './relative'], function (unchanged, changedName, specialCharacter, slash, relative_js) { 'use strict'; - changedName = changedName && changedName.hasOwnProperty('default') ? changedName['default'] : changedName; + changedName = changedName && Object.prototype.hasOwnProperty.call(changedName, 'default') ? changedName['default'] : changedName; console.log(unchanged.foo, changedName, specialCharacter.bar, slash.baz, relative_js.quux); diff --git a/test/form/samples/guessed-global-names/_expected/iife.js b/test/form/samples/guessed-global-names/_expected/iife.js index 4ecb13ccfde..127fd3d059b 100644 --- a/test/form/samples/guessed-global-names/_expected/iife.js +++ b/test/form/samples/guessed-global-names/_expected/iife.js @@ -1,7 +1,7 @@ (function (unchanged, changedName, specialCharacter, slash, relative_js) { 'use strict'; - changedName = changedName && changedName.hasOwnProperty('default') ? changedName['default'] : changedName; + changedName = changedName && Object.prototype.hasOwnProperty.call(changedName, 'default') ? changedName['default'] : changedName; console.log(unchanged.foo, changedName, specialCharacter.bar, slash.baz, relative_js.quux); diff --git a/test/form/samples/guessed-global-names/_expected/umd.js b/test/form/samples/guessed-global-names/_expected/umd.js index 52632f59939..6133022812e 100644 --- a/test/form/samples/guessed-global-names/_expected/umd.js +++ b/test/form/samples/guessed-global-names/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.unchanged, global.changedName, global.specialCharacter, global.slash, global.relative_js)); }(this, (function (unchanged, changedName, specialCharacter, slash, relative_js) { 'use strict'; - changedName = changedName && changedName.hasOwnProperty('default') ? changedName['default'] : changedName; + changedName = changedName && Object.prototype.hasOwnProperty.call(changedName, 'default') ? changedName['default'] : changedName; console.log(unchanged.foo, changedName, specialCharacter.bar, slash.baz, relative_js.quux); diff --git a/test/form/samples/paths-function/_expected/amd.js b/test/form/samples/paths-function/_expected/amd.js index fe9f13f94ed..e9cd1a89377 100644 --- a/test/form/samples/paths-function/_expected/amd.js +++ b/test/form/samples/paths-function/_expected/amd.js @@ -1,6 +1,6 @@ define(['https://unpkg.com/foo'], function (foo) { 'use strict'; - foo = foo && foo.hasOwnProperty('default') ? foo['default'] : foo; + foo = foo && Object.prototype.hasOwnProperty.call(foo, 'default') ? foo['default'] : foo; assert.equal( foo, 42 ); diff --git a/test/form/samples/paths-function/_expected/iife.js b/test/form/samples/paths-function/_expected/iife.js index e1c212ba377..57e136764ba 100644 --- a/test/form/samples/paths-function/_expected/iife.js +++ b/test/form/samples/paths-function/_expected/iife.js @@ -1,7 +1,7 @@ (function (foo) { 'use strict'; - foo = foo && foo.hasOwnProperty('default') ? foo['default'] : foo; + foo = foo && Object.prototype.hasOwnProperty.call(foo, 'default') ? foo['default'] : foo; assert.equal( foo, 42 ); diff --git a/test/form/samples/paths-function/_expected/umd.js b/test/form/samples/paths-function/_expected/umd.js index 9ec1d24990b..10e1ffcde7a 100644 --- a/test/form/samples/paths-function/_expected/umd.js +++ b/test/form/samples/paths-function/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.foo)); }(this, (function (foo) { 'use strict'; - foo = foo && foo.hasOwnProperty('default') ? foo['default'] : foo; + foo = foo && Object.prototype.hasOwnProperty.call(foo, 'default') ? foo['default'] : foo; assert.equal( foo, 42 ); diff --git a/test/form/samples/paths-relative/_expected/amd.js b/test/form/samples/paths-relative/_expected/amd.js index 46535010cb4..434ca8bb4f6 100644 --- a/test/form/samples/paths-relative/_expected/amd.js +++ b/test/form/samples/paths-relative/_expected/amd.js @@ -1,6 +1,6 @@ define(['../foo'], function (foo) { 'use strict'; - foo = foo && foo.hasOwnProperty('default') ? foo['default'] : foo; + foo = foo && Object.prototype.hasOwnProperty.call(foo, 'default') ? foo['default'] : foo; assert.equal( foo, 42 ); diff --git a/test/form/samples/paths-relative/_expected/iife.js b/test/form/samples/paths-relative/_expected/iife.js index e1c212ba377..57e136764ba 100644 --- a/test/form/samples/paths-relative/_expected/iife.js +++ b/test/form/samples/paths-relative/_expected/iife.js @@ -1,7 +1,7 @@ (function (foo) { 'use strict'; - foo = foo && foo.hasOwnProperty('default') ? foo['default'] : foo; + foo = foo && Object.prototype.hasOwnProperty.call(foo, 'default') ? foo['default'] : foo; assert.equal( foo, 42 ); diff --git a/test/form/samples/paths-relative/_expected/umd.js b/test/form/samples/paths-relative/_expected/umd.js index e62e957c412..5dee3d68723 100644 --- a/test/form/samples/paths-relative/_expected/umd.js +++ b/test/form/samples/paths-relative/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.foo)); }(this, (function (foo) { 'use strict'; - foo = foo && foo.hasOwnProperty('default') ? foo['default'] : foo; + foo = foo && Object.prototype.hasOwnProperty.call(foo, 'default') ? foo['default'] : foo; assert.equal( foo, 42 ); diff --git a/test/form/samples/paths/_expected/amd.js b/test/form/samples/paths/_expected/amd.js index fe9f13f94ed..e9cd1a89377 100644 --- a/test/form/samples/paths/_expected/amd.js +++ b/test/form/samples/paths/_expected/amd.js @@ -1,6 +1,6 @@ define(['https://unpkg.com/foo'], function (foo) { 'use strict'; - foo = foo && foo.hasOwnProperty('default') ? foo['default'] : foo; + foo = foo && Object.prototype.hasOwnProperty.call(foo, 'default') ? foo['default'] : foo; assert.equal( foo, 42 ); diff --git a/test/form/samples/paths/_expected/iife.js b/test/form/samples/paths/_expected/iife.js index e1c212ba377..57e136764ba 100644 --- a/test/form/samples/paths/_expected/iife.js +++ b/test/form/samples/paths/_expected/iife.js @@ -1,7 +1,7 @@ (function (foo) { 'use strict'; - foo = foo && foo.hasOwnProperty('default') ? foo['default'] : foo; + foo = foo && Object.prototype.hasOwnProperty.call(foo, 'default') ? foo['default'] : foo; assert.equal( foo, 42 ); diff --git a/test/form/samples/paths/_expected/umd.js b/test/form/samples/paths/_expected/umd.js index 9ec1d24990b..10e1ffcde7a 100644 --- a/test/form/samples/paths/_expected/umd.js +++ b/test/form/samples/paths/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.foo)); }(this, (function (foo) { 'use strict'; - foo = foo && foo.hasOwnProperty('default') ? foo['default'] : foo; + foo = foo && Object.prototype.hasOwnProperty.call(foo, 'default') ? foo['default'] : foo; assert.equal( foo, 42 ); diff --git a/test/form/samples/reexport-external-default-and-name/_expected/amd.js b/test/form/samples/reexport-external-default-and-name/_expected/amd.js index 6884f896916..dfc278c15be 100644 --- a/test/form/samples/reexport-external-default-and-name/_expected/amd.js +++ b/test/form/samples/reexport-external-default-and-name/_expected/amd.js @@ -1,6 +1,6 @@ define(['exports', 'external'], function (exports, external) { 'use strict'; - external = external && external.hasOwnProperty('default') ? external['default'] : external; + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; const value = 42; diff --git a/test/form/samples/reexport-external-default-and-name/_expected/iife.js b/test/form/samples/reexport-external-default-and-name/_expected/iife.js index bd001fe2f10..87e6a78278e 100644 --- a/test/form/samples/reexport-external-default-and-name/_expected/iife.js +++ b/test/form/samples/reexport-external-default-and-name/_expected/iife.js @@ -1,7 +1,7 @@ var bundle = (function (exports, external) { 'use strict'; - external = external && external.hasOwnProperty('default') ? external['default'] : external; + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; const value = 42; diff --git a/test/form/samples/reexport-external-default-and-name/_expected/umd.js b/test/form/samples/reexport-external-default-and-name/_expected/umd.js index 474467c55ce..6fca71d7f4c 100644 --- a/test/form/samples/reexport-external-default-and-name/_expected/umd.js +++ b/test/form/samples/reexport-external-default-and-name/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.bundle = {}, global.external)); }(this, (function (exports, external) { 'use strict'; - external = external && external.hasOwnProperty('default') ? external['default'] : external; + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; const value = 42; diff --git a/test/form/samples/reexport-external-default/_expected/amd.js b/test/form/samples/reexport-external-default/_expected/amd.js index 44863dc1288..cea23a3414e 100644 --- a/test/form/samples/reexport-external-default/_expected/amd.js +++ b/test/form/samples/reexport-external-default/_expected/amd.js @@ -1,6 +1,6 @@ define(['external1', 'external2'], function (external1, external2) { 'use strict'; - external2 = external2 && external2.hasOwnProperty('default') ? external2['default'] : external2; + external2 = external2 && Object.prototype.hasOwnProperty.call(external2, 'default') ? external2['default'] : external2; console.log(external1.foo); diff --git a/test/form/samples/reexport-external-default/_expected/iife.js b/test/form/samples/reexport-external-default/_expected/iife.js index 7d9a819618e..1d6ec76f1bc 100644 --- a/test/form/samples/reexport-external-default/_expected/iife.js +++ b/test/form/samples/reexport-external-default/_expected/iife.js @@ -1,7 +1,7 @@ var bundle = (function (external1, external2) { 'use strict'; - external2 = external2 && external2.hasOwnProperty('default') ? external2['default'] : external2; + external2 = external2 && Object.prototype.hasOwnProperty.call(external2, 'default') ? external2['default'] : external2; console.log(external1.foo); diff --git a/test/form/samples/reexport-external-default/_expected/umd.js b/test/form/samples/reexport-external-default/_expected/umd.js index a32c5a8463a..0525bd5d5fe 100644 --- a/test/form/samples/reexport-external-default/_expected/umd.js +++ b/test/form/samples/reexport-external-default/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, global.bundle = factory(global.external1, global.external2)); }(this, (function (external1, external2) { 'use strict'; - external2 = external2 && external2.hasOwnProperty('default') ? external2['default'] : external2; + external2 = external2 && Object.prototype.hasOwnProperty.call(external2, 'default') ? external2['default'] : external2; console.log(external1.foo); diff --git a/test/form/samples/relative-external-with-global/_expected/amd.js b/test/form/samples/relative-external-with-global/_expected/amd.js index 084748c64a2..6e925ec17b2 100644 --- a/test/form/samples/relative-external-with-global/_expected/amd.js +++ b/test/form/samples/relative-external-with-global/_expected/amd.js @@ -1,6 +1,6 @@ define(['./lib/throttle'], function (throttle) { 'use strict'; - throttle = throttle && throttle.hasOwnProperty('default') ? throttle['default'] : throttle; + throttle = throttle && Object.prototype.hasOwnProperty.call(throttle, 'default') ? throttle['default'] : throttle; const fn = throttle( () => { console.log( '.' ); diff --git a/test/form/samples/relative-external-with-global/_expected/iife.js b/test/form/samples/relative-external-with-global/_expected/iife.js index 0d3e8842090..e371c2b3b25 100644 --- a/test/form/samples/relative-external-with-global/_expected/iife.js +++ b/test/form/samples/relative-external-with-global/_expected/iife.js @@ -1,7 +1,7 @@ (function (throttle) { 'use strict'; - throttle = throttle && throttle.hasOwnProperty('default') ? throttle['default'] : throttle; + throttle = throttle && Object.prototype.hasOwnProperty.call(throttle, 'default') ? throttle['default'] : throttle; const fn = throttle( () => { console.log( '.' ); diff --git a/test/form/samples/relative-external-with-global/_expected/umd.js b/test/form/samples/relative-external-with-global/_expected/umd.js index be024920ad5..1a772d6991c 100644 --- a/test/form/samples/relative-external-with-global/_expected/umd.js +++ b/test/form/samples/relative-external-with-global/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.Lib.throttle)); }(this, (function (throttle) { 'use strict'; - throttle = throttle && throttle.hasOwnProperty('default') ? throttle['default'] : throttle; + throttle = throttle && Object.prototype.hasOwnProperty.call(throttle, 'default') ? throttle['default'] : throttle; const fn = throttle( () => { console.log( '.' ); diff --git a/test/form/samples/resolve-external-dynamic-imports/_expected/amd.js b/test/form/samples/resolve-external-dynamic-imports/_expected/amd.js index 9a4d9c1e6ef..814956b8125 100644 --- a/test/form/samples/resolve-external-dynamic-imports/_expected/amd.js +++ b/test/form/samples/resolve-external-dynamic-imports/_expected/amd.js @@ -19,7 +19,7 @@ define(['require', 'exports', 'external'], function (require, exports, myExterna } } - myExternal = myExternal && myExternal.hasOwnProperty('default') ? myExternal['default'] : myExternal; + myExternal = myExternal && Object.prototype.hasOwnProperty.call(myExternal, 'default') ? myExternal['default'] : myExternal; const test = () => myExternal; diff --git a/test/form/samples/resolve-external-dynamic-imports/_expected/iife.js b/test/form/samples/resolve-external-dynamic-imports/_expected/iife.js index 5e0d818f0ca..ab83517366c 100644 --- a/test/form/samples/resolve-external-dynamic-imports/_expected/iife.js +++ b/test/form/samples/resolve-external-dynamic-imports/_expected/iife.js @@ -1,7 +1,7 @@ var bundle = (function (exports, myExternal) { 'use strict'; - myExternal = myExternal && myExternal.hasOwnProperty('default') ? myExternal['default'] : myExternal; + myExternal = myExternal && Object.prototype.hasOwnProperty.call(myExternal, 'default') ? myExternal['default'] : myExternal; const test = () => myExternal; diff --git a/test/form/samples/resolve-external-dynamic-imports/_expected/umd.js b/test/form/samples/resolve-external-dynamic-imports/_expected/umd.js index db633c3cc02..a68206b6984 100644 --- a/test/form/samples/resolve-external-dynamic-imports/_expected/umd.js +++ b/test/form/samples/resolve-external-dynamic-imports/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.bundle = {}, global.myExternal)); }(this, (function (exports, myExternal) { 'use strict'; - myExternal = myExternal && myExternal.hasOwnProperty('default') ? myExternal['default'] : myExternal; + myExternal = myExternal && Object.prototype.hasOwnProperty.call(myExternal, 'default') ? myExternal['default'] : myExternal; const test = () => myExternal; diff --git a/test/form/samples/url-external/_expected/amd.js b/test/form/samples/url-external/_expected/amd.js index c435682c098..3ac4177a2a5 100644 --- a/test/form/samples/url-external/_expected/amd.js +++ b/test/form/samples/url-external/_expected/amd.js @@ -1,6 +1,6 @@ define(['https://external.com/external.js'], function (external) { 'use strict'; - external = external && external.hasOwnProperty('default') ? external['default'] : external; + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; console.log(external); diff --git a/test/form/samples/url-external/_expected/iife.js b/test/form/samples/url-external/_expected/iife.js index 549bf95badc..146f82abcee 100644 --- a/test/form/samples/url-external/_expected/iife.js +++ b/test/form/samples/url-external/_expected/iife.js @@ -1,7 +1,7 @@ (function (external) { 'use strict'; - external = external && external.hasOwnProperty('default') ? external['default'] : external; + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; console.log(external); diff --git a/test/form/samples/url-external/_expected/umd.js b/test/form/samples/url-external/_expected/umd.js index 8002a385ed2..f5e7523eaee 100644 --- a/test/form/samples/url-external/_expected/umd.js +++ b/test/form/samples/url-external/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.external)); }(this, (function (external) { 'use strict'; - external = external && external.hasOwnProperty('default') ? external['default'] : external; + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; console.log(external); diff --git a/test/form/samples/use-global-map-for-export-name/_expected/amd.js b/test/form/samples/use-global-map-for-export-name/_expected/amd.js index 3ee270a88f1..45be980cc49 100644 --- a/test/form/samples/use-global-map-for-export-name/_expected/amd.js +++ b/test/form/samples/use-global-map-for-export-name/_expected/amd.js @@ -1,6 +1,6 @@ define(['leaflet'], function (L) { 'use strict'; - L = L && L.hasOwnProperty('default') ? L['default'] : L; + L = L && Object.prototype.hasOwnProperty.call(L, 'default') ? L['default'] : L; L.terminator = function(options) { }; diff --git a/test/form/samples/use-global-map-for-export-name/_expected/iife.js b/test/form/samples/use-global-map-for-export-name/_expected/iife.js index 325179b7c1a..72d2db0e424 100644 --- a/test/form/samples/use-global-map-for-export-name/_expected/iife.js +++ b/test/form/samples/use-global-map-for-export-name/_expected/iife.js @@ -1,7 +1,7 @@ (function (L) { 'use strict'; - L = L && L.hasOwnProperty('default') ? L['default'] : L; + L = L && Object.prototype.hasOwnProperty.call(L, 'default') ? L['default'] : L; L.terminator = function(options) { }; diff --git a/test/form/samples/use-global-map-for-export-name/_expected/umd.js b/test/form/samples/use-global-map-for-export-name/_expected/umd.js index d1cebac3105..b5fd446c60d 100644 --- a/test/form/samples/use-global-map-for-export-name/_expected/umd.js +++ b/test/form/samples/use-global-map-for-export-name/_expected/umd.js @@ -4,7 +4,7 @@ (global = global || self, factory(global.L)); }(this, (function (L) { 'use strict'; - L = L && L.hasOwnProperty('default') ? L['default'] : L; + L = L && Object.prototype.hasOwnProperty.call(L, 'default') ? L['default'] : L; L.terminator = function(options) { }; diff --git a/test/function/samples/default-export-with-null-prototype/_config.js b/test/function/samples/default-export-with-null-prototype/_config.js new file mode 100644 index 00000000000..8912ca75d4c --- /dev/null +++ b/test/function/samples/default-export-with-null-prototype/_config.js @@ -0,0 +1,18 @@ +module.exports = { + description: 'default exports of objects with null prototypes are supported', + options: { + external: ['foo'], + output: { + format: 'iife', + globals: { foo: 'foo' } + }, + plugins: [ + { + renderChunk: code => ` + const foo = { __proto__: null, bar: 42 }; + ${code} + ` + } + ] + } +}; diff --git a/test/function/samples/default-export-with-null-prototype/main.js b/test/function/samples/default-export-with-null-prototype/main.js new file mode 100644 index 00000000000..60a3a136372 --- /dev/null +++ b/test/function/samples/default-export-with-null-prototype/main.js @@ -0,0 +1,3 @@ +import foo from 'foo'; + +assert.equal(foo.bar, 42);