From 6346e827a67d0fab8ab02b312bcebca72e2c71d1 Mon Sep 17 00:00:00 2001 From: ampatspell Date: Fri, 15 Jun 2018 19:16:59 +0300 Subject: [PATCH] [BUGFIX] bring back isObject guard for ember-utils/is_proxy `WeakSet.has` throws `TypeError` if argument is not an object: https://www.ecma-international.org/ecma-262/6.0/#sec-weakset.prototype.has While recent Chrome versions just returns `false`. --- packages/ember-utils/lib/is_proxy.ts | 5 ++++- packages/ember-utils/tests/is_proxy_test.js | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 packages/ember-utils/tests/is_proxy_test.js diff --git a/packages/ember-utils/lib/is_proxy.ts b/packages/ember-utils/lib/is_proxy.ts index 008159c2a22..9ec455fc723 100644 --- a/packages/ember-utils/lib/is_proxy.ts +++ b/packages/ember-utils/lib/is_proxy.ts @@ -4,7 +4,10 @@ import WeakSet from './weak_set'; const PROXIES = new WeakSet(); export function isProxy(object: any | undefined | null) { - return PROXIES.has(object); + if (isObject(object)) { + return PROXIES.has(object); + } + return false; } export function setProxy(object: object) { diff --git a/packages/ember-utils/tests/is_proxy_test.js b/packages/ember-utils/tests/is_proxy_test.js new file mode 100644 index 00000000000..d9c61b581ba --- /dev/null +++ b/packages/ember-utils/tests/is_proxy_test.js @@ -0,0 +1,18 @@ +import { isProxy, setProxy } from '..'; +import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; + +moduleFor( + 'ember-utils isProxy', + class extends AbstractTestCase { + ['@test basic'](assert) { + let proxy = {}; + setProxy(proxy); + + assert.equal(isProxy(proxy), true); + + assert.equal(isProxy({}), false); + assert.equal(isProxy(undefined), false); + assert.equal(isProxy(null), false); + } + } +);