Spaces:
Sleeping
Sleeping
File size: 1,171 Bytes
cd6720a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import { getDeepPropertyDescriptor } from './patchesRegistry'
/**
* Returns a boolean indicating whether the given global property
* is defined and is configurable.
*/
export function hasConfigurableGlobal(
propertyName: keyof typeof globalThis
): boolean {
const match = getDeepPropertyDescriptor(globalThis, propertyName)
// The property is not set at all.
if (typeof match === 'undefined') {
return false
}
const { descriptor } = match
// The property is set to a getter that returns undefined.
if (
typeof descriptor.get === 'function' &&
typeof descriptor.get() === 'undefined'
) {
return false
}
// The property is set to a value equal to undefined.
if (typeof descriptor.get === 'undefined' && descriptor.value == null) {
return false
}
if (typeof descriptor.set === 'undefined' && !descriptor.configurable) {
console.error(
`[MSW] Failed to apply interceptor: the global \`${propertyName}\` property is non-configurable. This is likely an issue with your environment. If you are using a framework, please open an issue about this in their repository.`
)
return false
}
return true
}
|