Skip to content

Commit 3469c45

Browse files
committed
feat(core): preserve non enumerable properties
1 parent c9b0879 commit 3469c45

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

packages/@posva/vuefire-core/__tests__/firestore/utils.spec.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,4 +180,20 @@ describe('Firestore utils', () => {
180180
'arr.2': docRef,
181181
})
182182
})
183+
184+
it('keeps non enumerable properties', () => {
185+
const obj = {}
186+
Object.defineProperty(obj, 'bar', {
187+
value: 'foo',
188+
enumerable: false,
189+
})
190+
const [noRefsDoc, refs] = extractRefs(obj, undefined, {})
191+
expect(Object.getOwnPropertyDescriptor(noRefsDoc, 'bar')).toEqual({
192+
value: 'foo',
193+
enumerable: false,
194+
configurable: false,
195+
writable: false,
196+
})
197+
expect(refs).toEqual({})
198+
})
183199
})

packages/@posva/vuefire-core/src/firestore/utils.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,12 @@ export function extractRefs(
4242
const [data, refs] = result
4343
// Add all properties that are not enumerable (not visible in the for loop)
4444
// getOwnPropertyDescriptors does not exist on IE
45-
// Object.getOwnPropertyNames(doc).forEach(propertyName => {
46-
// const descriptor = Object.getOwnPropertyDescriptor(doc, propertyName)
47-
// if (descriptor && !descriptor.enumerable) {
48-
// Object.defineProperty(data, propertyName, descriptor)
49-
// }
50-
// })
51-
// TODO: add test for the code above and remove this one
52-
const idDescriptor = Object.getOwnPropertyDescriptor(doc, 'id')
53-
if (idDescriptor && !idDescriptor.enumerable) {
54-
Object.defineProperty(data, 'id', idDescriptor)
55-
}
45+
Object.getOwnPropertyNames(doc).forEach(propertyName => {
46+
const descriptor = Object.getOwnPropertyDescriptor(doc, propertyName)
47+
if (descriptor && !descriptor.enumerable) {
48+
Object.defineProperty(data, propertyName, descriptor)
49+
}
50+
})
5651

5752
// recursively traverse doc to copy values and extract references
5853
for (const key in doc) {

0 commit comments

Comments
 (0)