From eb2b4c171ddfda9b641cb7bbf917b0c6ed970eec Mon Sep 17 00:00:00 2001 From: Roberto Dip Date: Fri, 13 Sep 2019 19:24:16 -0300 Subject: [PATCH] fix(targets): prevent exceptions on JS SDK (#285) - Prevent errors when assigning readonly 'name' property. - Prevent exceptions when used with webpack DefinePlugin --- packages/targets/sources/web/js.component.handlebars | 2 +- packages/targets/sources/web/sdk/index.js | 4 +++- .../goldens/Bindings/diez-target-test-stub-web/index.js | 6 ++++-- .../goldens/Primitives/diez-target-test-stub-web/index.js | 6 ++++-- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/targets/sources/web/js.component.handlebars b/packages/targets/sources/web/js.component.handlebars index 215ff8f51..ad7ce760a 100644 --- a/packages/targets/sources/web/js.component.handlebars +++ b/packages/targets/sources/web/js.component.handlebars @@ -24,7 +24,7 @@ class {{{componentName}}} { } {{#if public}} -{{{componentName}}}.name = '{{{componentName}}}'; +Object.defineProperty({{{componentName}}}, 'name', {value: '{{{componentName}}}'}); {{/if}} module.exports.{{{componentName}}} = {{{componentName}}}; diff --git a/packages/targets/sources/web/sdk/index.js b/packages/targets/sources/web/sdk/index.js index 4a4f791df..e8109f686 100644 --- a/packages/targets/sources/web/sdk/index.js +++ b/packages/targets/sources/web/sdk/index.js @@ -1,7 +1,9 @@ if (typeof process === 'undefined' || !process) { process = {env: {}}; } else if (!process.env) { - process.env = {}; + Object.defineProperty(process, 'env', { + value: {}, + }); } const Environment = { diff --git a/packages/targets/test/goldens/Bindings/diez-target-test-stub-web/index.js b/packages/targets/test/goldens/Bindings/diez-target-test-stub-web/index.js index 27f1a0c83..2099032c8 100644 --- a/packages/targets/test/goldens/Bindings/diez-target-test-stub-web/index.js +++ b/packages/targets/test/goldens/Bindings/diez-target-test-stub-web/index.js @@ -1,7 +1,9 @@ if (typeof process === 'undefined' || !process) { process = {env: {}}; } else if (!process.env) { - process.env = {}; + Object.defineProperty(process, 'env', { + value: {}, + }); } const Environment = { @@ -486,7 +488,7 @@ class Bindings { } } -Bindings.name = 'Bindings'; +Object.defineProperty(Bindings, 'name', {value: 'Bindings'}); module.exports.Bindings = Bindings; diff --git a/packages/targets/test/goldens/Primitives/diez-target-test-stub-web/index.js b/packages/targets/test/goldens/Primitives/diez-target-test-stub-web/index.js index dc82f54a4..a6493c149 100644 --- a/packages/targets/test/goldens/Primitives/diez-target-test-stub-web/index.js +++ b/packages/targets/test/goldens/Primitives/diez-target-test-stub-web/index.js @@ -1,7 +1,9 @@ if (typeof process === 'undefined' || !process) { process = {env: {}}; } else if (!process.env) { - process.env = {}; + Object.defineProperty(process, 'env', { + value: {}, + }); } const Environment = { @@ -57,7 +59,7 @@ class Primitives { } } -Primitives.name = 'Primitives'; +Object.defineProperty(Primitives, 'name', {value: 'Primitives'}); module.exports.Primitives = Primitives;