@@ -38,6 +38,9 @@ function $push (document: Doc, keyval: Record<string, PropertyType>): void {
3838 arr . push ( val )
3939 }
4040 } else {
41+ if ( doc [ key ] == null ) {
42+ doc [ key ] = [ ]
43+ }
4144 doc [ key ] . push ( val )
4245 }
4346 }
@@ -53,7 +56,7 @@ function $pull (document: Doc, keyval: Record<string, PropertyType>): void {
5356 if ( typeof keyval [ key ] === 'object' && keyval [ key ] !== null ) {
5457 const { $in } = keyval [ key ] as PullArray < PropertyType >
5558
56- doc [ key ] = arr . filter ( ( val ) => {
59+ doc [ key ] = ( arr ?? [ ] ) . filter ( ( val ) => {
5760 if ( $in !== undefined ) {
5861 return ! $in . includes ( val )
5962 } else {
@@ -67,7 +70,7 @@ function $pull (document: Doc, keyval: Record<string, PropertyType>): void {
6770 }
6871 } )
6972 } else {
70- doc [ key ] = arr . filter ( ( val ) => val !== keyval [ key ] )
73+ doc [ key ] = ( arr ?? [ ] ) . filter ( ( val ) => val !== keyval [ key ] )
7174 }
7275 }
7376}
@@ -119,7 +122,7 @@ function $move (document: Doc, keyval: Record<string, PropertyType>): void {
119122 }
120123 const arr = doc [ key ] as Array < any >
121124 const desc = keyval [ key ]
122- doc [ key ] = arr . filter ( ( val ) => val !== desc . $value )
125+ doc [ key ] = ( arr ?? [ ] ) . filter ( ( val ) => val !== desc . $value )
123126 doc [ key ] . splice ( desc . $position , 0 , desc . $value )
124127 }
125128}
@@ -134,7 +137,7 @@ function $pushMixin (document: Doc, options: any): void {
134137 const keyval = options . values
135138 for ( const key in keyval ) {
136139 const arr = mixin [ key ]
137- if ( arr === undefined ) {
140+ if ( arr == null ) {
138141 mixin [ key ] = [ keyval [ key ] ]
139142 } else {
140143 arr . push ( keyval [ key ] )
0 commit comments