Skip to content

Commit 5e6dcf8

Browse files
committed
refactor: makeTrapsForGetters function
1 parent 4164f0d commit 5e6dcf8

File tree

1 file changed

+17
-27
lines changed

1 file changed

+17
-27
lines changed

src/proxy.js

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -393,40 +393,30 @@ function makeIterable(next) {
393393
})
394394
}
395395

396+
/** These traps all use the `Reflect` API on the `source(state)` */
397+
const basicTraps = [
398+
"ownKeys",
399+
"has",
400+
"set",
401+
"deleteProperty",
402+
"defineProperty",
403+
"getOwnPropertyDescriptor",
404+
"preventExtensions",
405+
"isExtensible",
406+
"getPrototypeOf"
407+
].reduce((traps, name) => {
408+
traps[name] = (state, ...args) => Reflect[name](source(state), ...args)
409+
return traps
410+
}, {})
411+
396412
function makeTrapsForGetters(getters) {
397413
return {
414+
...basicTraps,
398415
get(state, prop, receiver) {
399416
return getters.hasOwnProperty(prop)
400417
? getters[prop](state, prop, receiver)
401418
: Reflect.get(state, prop, receiver)
402419
},
403-
ownKeys(state) {
404-
return Reflect.ownKeys(source(state))
405-
},
406-
set(state, ...args) {
407-
return Reflect.set(source(state), ...args)
408-
},
409-
has(state, ...args) {
410-
return Reflect.has(source(state), ...args)
411-
},
412-
deleteProperty(state, ...args) {
413-
return Reflect.deleteProperty(source(state), ...args)
414-
},
415-
defineProperty(state, ...args) {
416-
return Reflect.defineProperty(source(state), ...args)
417-
},
418-
getOwnPropertyDescriptor(state, ...args) {
419-
return Reflect.getOwnPropertyDescriptor(source(state), ...args)
420-
},
421-
preventExtensions(state) {
422-
return Reflect.preventExtensions(source(state))
423-
},
424-
isExtensible(state) {
425-
return Reflect.isExtensible(source(state))
426-
},
427-
getPrototypeOf(state) {
428-
return Reflect.getPrototypeOf(source(state))
429-
},
430420
setPrototypeOf(state) {
431421
throw new Error("Object.setPrototypeOf() cannot be used on an Immer draft") // prettier-ignore
432422
}

0 commit comments

Comments
 (0)