Skip to content

Commit

Permalink
Merge pull request #30 from hlysine/develop
Browse files Browse the repository at this point in the history
  • Loading branch information
hlysine committed Jun 11, 2023
2 parents d434b4b + c339023 commit c280d16
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
7 changes: 7 additions & 0 deletions src/__tests__/helper.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@ describe('createWrappedRef', () => {
expect(Object.getOwnPropertyDescriptor(wrapped, 'a')).toEqual(
Object.getOwnPropertyDescriptor(obj, 'a')
);

Object.defineProperty(obj, 'a', {
configurable: false,
});
// expect non-configurable properties to not be reported as existing
// see invariants at https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor#invariants
expect(Object.getOwnPropertyDescriptor(wrapped, 'a')).toBeUndefined();
});
it('traps getPrototypeOf', () => {
const obj = { a: 1 };
Expand Down
9 changes: 8 additions & 1 deletion src/helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,14 @@ export function createWrappedRef<T>(ref: T): WrappedRef<T> {
else return Reflect.get(target[WRAP_KEY] as any, p, receiver);
},
getOwnPropertyDescriptor(target, p) {
return Reflect.getOwnPropertyDescriptor(target[WRAP_KEY] as any, p);
const descriptor = Reflect.getOwnPropertyDescriptor(
target[WRAP_KEY] as any,
p
);
if (descriptor && !descriptor.configurable) {
return undefined;
}
return descriptor;
},
getPrototypeOf(target) {
return Reflect.getPrototypeOf(target[WRAP_KEY] as any);
Expand Down

0 comments on commit c280d16

Please sign in to comment.