|
@@ -17,6 +17,7 @@ export const enum ReactiveFlags {
|
|
|
SKIP = '__v_skip',
|
|
SKIP = '__v_skip',
|
|
|
IS_REACTIVE = '__v_isReactive',
|
|
IS_REACTIVE = '__v_isReactive',
|
|
|
IS_READONLY = '__v_isReadonly',
|
|
IS_READONLY = '__v_isReadonly',
|
|
|
|
|
+ IS_SHALLOW = '__v_isShallow',
|
|
|
RAW = '__v_raw'
|
|
RAW = '__v_raw'
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -24,6 +25,7 @@ export interface Target {
|
|
|
[ReactiveFlags.SKIP]?: boolean
|
|
[ReactiveFlags.SKIP]?: boolean
|
|
|
[ReactiveFlags.IS_REACTIVE]?: boolean
|
|
[ReactiveFlags.IS_REACTIVE]?: boolean
|
|
|
[ReactiveFlags.IS_READONLY]?: boolean
|
|
[ReactiveFlags.IS_READONLY]?: boolean
|
|
|
|
|
+ [ReactiveFlags.IS_SHALLOW]?: boolean
|
|
|
[ReactiveFlags.RAW]?: any
|
|
[ReactiveFlags.RAW]?: any
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -87,7 +89,7 @@ export type UnwrapNestedRefs<T> = T extends Ref ? T : UnwrapRefSimple<T>
|
|
|
export function reactive<T extends object>(target: T): UnwrapNestedRefs<T>
|
|
export function reactive<T extends object>(target: T): UnwrapNestedRefs<T>
|
|
|
export function reactive(target: object) {
|
|
export function reactive(target: object) {
|
|
|
// if trying to observe a readonly proxy, return the readonly version.
|
|
// if trying to observe a readonly proxy, return the readonly version.
|
|
|
- if (target && (target as Target)[ReactiveFlags.IS_READONLY]) {
|
|
|
|
|
|
|
+ if (isReadonly(target)) {
|
|
|
return target
|
|
return target
|
|
|
}
|
|
}
|
|
|
return createReactiveObject(
|
|
return createReactiveObject(
|
|
@@ -226,6 +228,10 @@ export function isReadonly(value: unknown): boolean {
|
|
|
return !!(value && (value as Target)[ReactiveFlags.IS_READONLY])
|
|
return !!(value && (value as Target)[ReactiveFlags.IS_READONLY])
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+export function isShallow(value: unknown): boolean {
|
|
|
|
|
+ return !!(value && (value as Target)[ReactiveFlags.IS_SHALLOW])
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
export function isProxy(value: unknown): boolean {
|
|
export function isProxy(value: unknown): boolean {
|
|
|
return isReactive(value) || isReadonly(value)
|
|
return isReactive(value) || isReadonly(value)
|
|
|
}
|
|
}
|