Skip to content

Commit 379143d

Browse files
committed
Check for Proxy before using it
1 parent b7f3a45 commit 379143d

File tree

2 files changed

+28
-22
lines changed

2 files changed

+28
-22
lines changed

dist/build.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Main.js

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -29,38 +29,44 @@ export default {
2929
observer = new Observer(connection, opts)
3030
Vue.prototype.$socket = observer.WebSocket
3131
}
32+
const hasProxy = typeof Proxy !== 'undefined' && typeof Proxy === 'function' && /native code/.test(Proxy.toString())
3233

3334
Vue.mixin({
3435
created () {
3536
let vm = this
3637
let sockets = this.$options['sockets']
3738

38-
this.$options.sockets = new Proxy({}, {
39-
set (target, key, value) {
40-
Emitter.addListener(key, value, vm)
41-
target[key] = value
42-
return true
43-
},
44-
deleteProperty (target, key) {
45-
Emitter.removeListener(key, vm.$options.sockets[key], vm)
46-
delete target.key
47-
return true
48-
}
49-
})
50-
51-
if (sockets) {
52-
Object.keys(sockets).forEach((key) => {
53-
this.$options.sockets[key] = sockets[key]
39+
if (hasProxy) {
40+
this.$options.sockets = new Proxy({}, {
41+
set (target, key, value) {
42+
Emitter.addListener(key, value, vm)
43+
target[key] = value
44+
return true
45+
},
46+
deleteProperty (target, key) {
47+
Emitter.removeListener(key, vm.$options.sockets[key], vm)
48+
delete target.key
49+
return true
50+
}
5451
})
52+
if (sockets) {
53+
Object.keys(sockets).forEach((key) => {
54+
this.$options.sockets[key] = sockets[key]
55+
})
56+
}
57+
} else {
58+
Object.seal(this.$options.sockets)
5559
}
5660
},
5761
beforeDestroy () {
58-
let sockets = this.$options['sockets']
62+
if (hasProxy) {
63+
let sockets = this.$options['sockets']
5964

60-
if (sockets) {
61-
Object.keys(sockets).forEach((key) => {
62-
delete this.$options.sockets[key]
63-
})
65+
if (sockets) {
66+
Object.keys(sockets).forEach((key) => {
67+
delete this.$options.sockets[key]
68+
})
69+
}
6470
}
6571
}
6672
})

0 commit comments

Comments
 (0)