@@ -17,13 +17,15 @@ export const enum ReactiveFlags {
17
17
SKIP = '__v_skip' ,
18
18
IS_REACTIVE = '__v_isReactive' ,
19
19
IS_READONLY = '__v_isReadonly' ,
20
+ IS_SHALLOW = '__v_isShallow' ,
20
21
RAW = '__v_raw'
21
22
}
22
23
23
24
export interface Target {
24
25
[ ReactiveFlags . SKIP ] ?: boolean
25
26
[ ReactiveFlags . IS_REACTIVE ] ?: boolean
26
27
[ ReactiveFlags . IS_READONLY ] ?: boolean
28
+ [ ReactiveFlags . IS_SHALLOW ] ?: boolean
27
29
[ ReactiveFlags . RAW ] ?: any
28
30
}
29
31
@@ -87,7 +89,7 @@ export type UnwrapNestedRefs<T> = T extends Ref ? T : UnwrapRefSimple<T>
87
89
export function reactive < T extends object > ( target : T ) : UnwrapNestedRefs < T >
88
90
export function reactive ( target : object ) {
89
91
// if trying to observe a readonly proxy, return the readonly version.
90
- if ( target && ( target as Target ) [ ReactiveFlags . IS_READONLY ] ) {
92
+ if ( isReadonly ( target ) ) {
91
93
return target
92
94
}
93
95
return createReactiveObject (
@@ -226,6 +228,10 @@ export function isReadonly(value: unknown): boolean {
226
228
return ! ! ( value && ( value as Target ) [ ReactiveFlags . IS_READONLY ] )
227
229
}
228
230
231
+ export function isShallow ( value : unknown ) : boolean {
232
+ return ! ! ( value && ( value as Target ) [ ReactiveFlags . IS_SHALLOW ] )
233
+ }
234
+
229
235
export function isProxy ( value : unknown ) : boolean {
230
236
return isReactive ( value ) || isReadonly ( value )
231
237
}
0 commit comments