import { isRef, ref } from '../src/ref'
-import { isReactive, markRaw, reactive, toRaw } from '../src/reactive'
+import {
+ isProxy,
+ isReactive,
+ markRaw,
+ reactive,
+ readonly,
+ shallowReactive,
+ shallowReadonly,
+ toRaw,
+} from '../src/reactive'
import { computed } from '../src/computed'
import { effect } from '../src/effect'
delete obj[key]
expect(dummy).toBe(false)
})
+
+ test('isProxy', () => {
+ const foo = {}
+ expect(isProxy(foo)).toBe(false)
+
+ const fooRe = reactive(foo)
+ expect(isProxy(fooRe)).toBe(true)
+
+ const fooSRe = shallowReactive(foo)
+ expect(isProxy(fooSRe)).toBe(true)
+
+ const barRl = readonly(foo)
+ expect(isProxy(barRl)).toBe(true)
+
+ const barSRl = shallowReadonly(foo)
+ expect(isProxy(barSRl)).toBe(true)
+
+ const c = computed(() => {})
+ expect(isProxy(c)).toBe(false)
+ })
})
* @param value - The value to check.
* @see {@link https://vuejs.org/api/reactivity-utilities.html#isproxy}
*/
-export function isProxy(value: unknown): boolean {
- return isReactive(value) || isReadonly(value)
+export function isProxy(value: any): boolean {
+ return value ? !!value[ReactiveFlags.RAW] : false
}
/**