import { DeepPick } from "../lib" ; import { ComplexNestedPartial , ComplexNestedRequired } from "./types" ; function testDeepPickInRequiredObject ( ) { let obj1 ; obj1 = { } ; obj1 = { simple : 1 } ; let obj2 ; obj2 = { } ; obj2 = { simple : undefined } ; obj2 = { simple : 2 } ; let obj2_1 ; obj2_1 = { } ; obj2_1 = { simple : undefined } ; obj2_1 = { simple : 2 } ; let obj3 ; obj3 = { } ; obj3 = { nested : undefined } ; obj3 = { nested : { date : undefined } } ; obj3 = { nested : { date : new Date ( ) } } ; let obj3_1 ; obj3_1 = { } ; obj3_1 = { nested : undefined } ; obj3_1 = { nested : { date : undefined } } ; obj3_1 = { nested : { date : new Date ( ) } } ; let obj4 ; obj4 = { } ; obj4 = { nested : undefined } ; obj4 = { nested : { func : undefined } } ; obj4 = { nested : { func : ( ) => "123" } } ; let obj4_1 ; obj4_1 = { } ; obj4_1 = { nested : undefined } ; obj4_1 = { nested : { func : undefined } } ; obj4_1 = { nested : { func : ( ) => "123" } } ; let obj5 ; obj5 = { } ; obj5 = { nested : undefined } ; obj5 = { nested : { array : undefined } } ; obj5 = { nested : { array : [ ] } } ; obj5 = { nested : { array : [ ] as const } } ; obj5 = { nested : { array : [ "1" ] } } ; obj5 = { nested : { array : [ { bar : "1" } ] } } ; obj5 = { nested : { array : [ { bar : 1 } ] } } ; let obj5_1 ; obj5_1 = { } ; obj5_1 = { nested : undefined } ; obj5_1 = { nested : { array : undefined } } ; obj5_1 = { nested : { array : [ ] } } ; obj5_1 = { nested : { array : [ ] as const } } ; obj5_1 = { nested : { array : [ "1" ] } } ; obj5_1 = { nested : { array : [ { bar : "1" } ] } } ; obj5_1 = { nested : { array : [ { bar : 1 } ] } } ; let obj6 ; obj6 = { } ; obj6 = { nested : undefined } ; obj6 = { nested : { tuple : undefined } } ; obj6 = { nested : { tuple : [ ] } } ; obj6 = { nested : { tuple : [ ] as const } } ; obj6 = { nested : { tuple : [ "1" , 2 , { good : true } ] } } ; obj6 = { nested : { tuple : [ "1" , 2 , { good : true } ] as const } } ; let obj6_1 ; obj6_1 = { } ; obj6_1 = { nested : undefined } ; obj6_1 = { nested : { tuple : undefined } } ; obj6_1 = { nested : { tuple : [ ] } } ; obj6_1 = { nested : { tuple : [ ] as const } } ; obj6_1 = { nested : { tuple : [ "1" , 2 , { good : true } ] } } ; obj6_1 = { nested : { tuple : [ "1" , 2 , { good : true } ] as const } } ; let obj7 ; obj7 = { } ; obj7 = { nested : undefined } ; obj7 = { nested : { set : undefined } } ; obj7 = { nested : { set : new Set < number > ( ) } } ; obj7 = { nested : { set : new Set < { } > ( ) } } ; obj7 = { nested : { set : new Set < { name : string ; } > ( ) } } ; let obj7_1 ; obj7_1 = { } ; obj7_1 = { nested : undefined } ; obj7_1 = { nested : { set : undefined } } ; obj7_1 = { nested : { set : new Set < number > ( ) } } ; obj7_1 = { nested : { set : new Set < { } > ( ) } } ; obj7_1 = { nested : { set : new Set < { name : string ; } > ( ) } } ; let obj8 ; obj8 = { } ; obj8 = { nested : undefined } ; obj8 = { nested : { map : undefined } } ; obj8 = { nested : { map : new Map < number , boolean > ( ) } } ; obj8 = { nested : { map : new Map < string , { } > ( ) } } ; obj8 = { nested : { map : new Map < string , { name : string ; } > ( ) } } ; let obj8_1 ; obj8_1 = { } ; obj8_1 = { nested : undefined } ; obj8_1 = { nested : { map : undefined } } ; obj8_1 = { nested : { map : new Map < number , boolean > ( ) } } ; obj8_1 = { nested : { map : new Map < string , { } > ( ) } } ; obj8_1 = { nested : { map : new Map < string , { name : string ; } > ( ) } } ; let obj9 ; obj9 = { } ; obj9 = { nested : undefined } ; obj9 = { nested : { promise : undefined } } ; obj9 = { nested : { promise : new Promise < boolean > ( ( ) => { } ) } } ; obj9 = { nested : { promise : new Promise < { } > ( ( ) => { } ) } } ; obj9 = { nested : { promise : new Promise < { bar : number ; } > ( ( ) => { } ) } } ; obj9 = { nested : { promise : new Promise < { foo : string ; } > ( ( ) => { } ) } } ; obj9 = { nested : { promise : new Promise < { foo : string ; bar : number ; } > ( ( ) => { } ) } } ; let obj9_1 ; obj9_1 = { } ; obj9_1 = { nested : undefined } ; obj9_1 = { nested : { promise : undefined } } ; obj9_1 = { nested : { promise : new Promise < boolean > ( ( ) => { } ) } } ; obj9_1 = { nested : { promise : new Promise < { } > ( ( ) => { } ) } } ; obj9_1 = { nested : { promise : new Promise < { bar : number ; } > ( ( ) => { } ) } } ; obj9_1 = { nested : { promise : new Promise < { foo : string ; } > ( ( ) => { } ) } } ; obj9_1 = { nested : { promise : new Promise < { foo : string ; bar : number ; } > ( ( ) => { } ) } } ; let obj10 ; obj10 = { } ; obj10 = { nested : undefined } ; obj10 = { nested : { date : undefined } } ; obj10 = { nested : { array : undefined } } ; obj10 = { nested : { array : undefined , date : undefined } } ; obj10 = { nested : { array : [ { bar : 1 } ] , date : undefined } } ; obj10 = { nested : { array : undefined , date : new Date ( ) } } ; obj10 = { nested : { array : [ { bar : 1 } ] , date : new Date ( ) } } ; } function testDeepPickInPartialObject ( ) { let obj1 ; obj1 = { } ; obj1 = { simple : 1 } ; let obj2 ; obj2 = { } ; obj2 = { simple : undefined } ; obj2 = { simple : 2 } ; let obj2_1 ; obj2_1 = { } ; obj2_1 = { simple : undefined } ; obj2_1 = { simple : 2 } ; let obj3 ; obj3 = { } ; obj3 = { nested : undefined } ; obj3 = { nested : { date : undefined } } ; obj3 = { nested : { date : new Date ( ) } } ; let obj3_1 ; obj3_1 = { } ; obj3_1 = { nested : undefined } ; obj3_1 = { nested : { date : undefined } } ; obj3_1 = { nested : { date : new Date ( ) } } ; let obj4 ; obj4 = { } ; obj4 = { nested : undefined } ; obj4 = { nested : { func : undefined } } ; obj4 = { nested : { func : ( ) => "123" } } ; let obj4_1 ; obj4_1 = { } ; obj4_1 = { nested : undefined } ; obj4_1 = { nested : { func : undefined } } ; obj4_1 = { nested : { func : ( ) => "123" } } ; let obj5 ; obj5 = { } ; obj5 = { nested : undefined } ; obj5 = { nested : { array : undefined } } ; obj5 = { nested : { array : [ ] } } ; obj5 = { nested : { array : [ ] as const } } ; obj5 = { nested : { array : [ "1" ] } } ; obj5 = { nested : { array : [ { bar : "1" } ] } } ; obj5 = { nested : { array : [ { bar : 1 } ] } } ; let obj5_1 ; obj5_1 = { } ; obj5_1 = { nested : undefined } ; obj5_1 = { nested : { array : undefined } } ; obj5_1 = { nested : { array : [ ] } } ; obj5_1 = { nested : { array : [ ] as const } } ; obj5_1 = { nested : { array : [ "1" ] } } ; obj5_1 = { nested : { array : [ { bar : "1" } ] } } ; obj5_1 = { nested : { array : [ { bar : 1 } ] } } ; let obj6 ; obj6 = { } ; obj6 = { nested : undefined } ; obj6 = { nested : { tuple : undefined } } ; obj6 = { nested : { tuple : [ ] } } ; obj6 = { nested : { tuple : [ ] as const } } ; obj6 = { nested : { tuple : [ "1" , 2 , { good : true } ] } } ; obj6 = { nested : { tuple : [ "1" , 2 , { good : true } ] as const } } ; let obj6_1 ; obj6_1 = { } ; obj6_1 = { nested : undefined } ; obj6_1 = { nested : { tuple : undefined } } ; obj6_1 = { nested : { tuple : [ ] } } ; obj6_1 = { nested : { tuple : [ ] as const } } ; obj6_1 = { nested : { tuple : [ "1" , 2 , { good : true } ] } } ; obj6_1 = { nested : { tuple : [ "1" , 2 , { good : true } ] as const } } ; let obj7 ; obj7 = { } ; obj7 = { nested : undefined } ; obj7 = { nested : { set : undefined } } ; obj7 = { nested : { set : new Set < number > ( ) } } ; obj7 = { nested : { set : new Set < { } > ( ) } } ; obj7 = { nested : { set : new Set < { name ? : string ; } > ( ) } } ; obj7 = { nested : { set : new Set < { name : string ; } > ( ) } } ; let obj7_1 ; obj7_1 = { } ; obj7_1 = { nested : undefined } ; obj7_1 = { nested : { set : undefined } } ; obj7_1 = { nested : { set : new Set < number > ( ) } } ; obj7_1 = { nested : { set : new Set < { } > ( ) } } ; obj7_1 = { nested : { set : new Set < { name ? : string ; } > ( ) } } ; obj7_1 = { nested : { set : new Set < { name : string ; } > ( ) } } ; let obj8 ; obj8 = { } ; obj8 = { nested : undefined } ; obj8 = { nested : { map : undefined } } ; obj8 = { nested : { map : new Map < number , boolean > ( ) } } ; obj8 = { nested : { map : new Map < string , { } > ( ) } } ; obj8 = { nested : { map : new Map < string , { name ? : string ; } > ( ) } } ; obj8 = { nested : { map : new Map < string , { name : string ; } > ( ) } } ; let obj8_1 ; obj8_1 = { } ; obj8_1 = { nested : undefined } ; obj8_1 = { nested : { map : undefined } } ; obj8_1 = { nested : { map : new Map < number , boolean > ( ) } } ; obj8_1 = { nested : { map : new Map < string , { } > ( ) } } ; obj8_1 = { nested : { map : new Map < string , { name ? : string ; } > ( ) } } ; obj8_1 = { nested : { map : new Map < string , { name : string ; } > ( ) } } ; let obj9 ; obj9 = { } ; obj9 = { nested : undefined } ; obj9 = { nested : { promise : undefined } } ; obj9 = { nested : { promise : new Promise < boolean > ( ( ) => { } ) } } ; obj9 = { nested : { promise : new Promise < { } > ( ( ) => { } ) } } ; obj9 = { nested : { promise : new Promise < { foo : string ; } > ( ( ) => { } ) } } ; obj9 = { nested : { promise : new Promise < { bar : number ; } > ( ( ) => { } ) } } ; obj9 = { nested : { promise : new Promise < { foo ? : string ; } > ( ( ) => { } ) } } ; obj9 = { nested : { promise : new Promise < { bar ? : number ; } > ( ( ) => { } ) } } ; obj9 = { nested : { promise : new Promise < { foo ? : string ; bar ? : number ; } > ( ( ) => { } ) } } ; obj9 = { nested : { promise : new Promise < { foo : string ; bar : number ; } > ( ( ) => { } ) } } ; let obj9_1 ; obj9_1 = { } ; obj9_1 = { nested : undefined } ; obj9_1 = { nested : { promise : undefined } } ; obj9_1 = { nested : { promise : new Promise < boolean > ( ( ) => { } ) } } ; obj9_1 = { nested : { promise : new Promise < { } > ( ( ) => { } ) } } ; obj9_1 = { nested : { promise : new Promise < { foo : string ; } > ( ( ) => { } ) } } ; obj9_1 = { nested : { promise : new Promise < { bar : number ; } > ( ( ) => { } ) } } ; obj9_1 = { nested : { promise : new Promise < { foo ? : string ; } > ( ( ) => { } ) } } ; obj9_1 = { nested : { promise : new Promise < { bar ? : number ; } > ( ( ) => { } ) } } ; obj9_1 = { nested : { promise : new Promise < { foo ? : string ; bar ? : number ; } > ( ( ) => { } ) } } ; obj9_1 = { nested : { promise : new Promise < { foo : string ; bar : number ; } > ( ( ) => { } ) } } ; let obj10 ; obj10 = { } ; obj10 = { nested : undefined } ; obj10 = { nested : { date : undefined } } ; obj10 = { nested : { array : undefined } } ; obj10 = { nested : { array : undefined , date : undefined } } ; obj10 = { nested : { array : [ { bar : 1 } ] , date : undefined } } ; obj10 = { nested : { array : undefined , date : new Date ( ) } } ; obj10 = { nested : { array : [ { bar : 1 } ] , date : new Date ( ) } } ; { type MapType = Map < string , { name : string ; age : number ; } > ; let map ; } { type MapType = Map < string , { name : string ; age : number ; } > ; let map ; map = new Map < string , { age : number ; } > ( ) ; map = new Map < string , { name : string ; } > ( ) ; map = new Map < string , { name : string ; age : number ; } > ( ) ; map = new Map < number , { } > ( ) ; map . set ( "key" , { age : 1 } ) ; } { type MapType = ReadonlyMap < string , { name : string ; age : number ; } > ; let map ; } { type MapType = ReadonlyMap < string , { name : string ; age : number ; } > ; let map ; map = new Map < string , { age : number ; } > ( ) ; map = new Map < string , { name : string ; } > ( ) ; map = new Map < string , { name : string ; age : number ; } > ( ) ; map = new Map < number , { } > ( ) ; map . set ( "key" , { age : 1 } ) ; } { type MapType = WeakMap < { a : string ; } , { name : string ; age : number ; } > ; `` ; let map ; } { type MapType = WeakMap < { a : string ; } , { name : string ; age : number ; } > ; let map ; map = new WeakMap < { a : string ; } , { age : number ; } > ( ) ; map = new Map < { a : string ; } , { name : string ; } > ( ) ; map = new Map < { a : string ; } , { name : string ; age : number ; } > ( ) ; map = new Map < { a : number ; } , { } > ( ) ; map . set ( { a : "key" } , { age : 1 } ) ; } { type SetType = Set < { name : string ; age : number ; } > ; let set ; set = new Set < { age : number ; } > ( ) ; set = new Set < { name : string ; } > ( ) ; set = new Set < { name : string ; age : number ; } > ( ) ; set = new Set < { } > ( ) ; set . add ( { age : 1 } ) ; } { type ReadonlySetType = ReadonlySet < { name : string ; age : number ; } > ; let set ; set = new Set < { age : number ; } > ( ) ; set = new Set < { name : string ; } > ( ) ; set = new Set < { name : string ; age : number ; } > ( ) ; set = new Set < { } > ( ) ; set . add ( { age : 1 } ) ; } { type WeakSetType = WeakSet < { name : string ; age : number ; } > ; let set ; set = new WeakSet < { age : number ; } > ( ) ; set = new WeakSet < { name : string ; } > ( ) ; set = new WeakSet < { name : string ; age : number ; } > ( ) ; set = new WeakSet < { } > ( ) ; set . add ( { age : 1 } ) ; } { type ArrayType = Array < { name : string ; age : number ; } > ; let arr ; arr = new Array < { age : number ; } > ( ) ; arr = new Array < { name : string ; } > ( ) ; arr = new Array < { name : string ; age : number ; } > ( ) ; arr = new Array < { } > ( ) ; arr . push ( { age : 1 } ) ; } { type PromiseType = Promise < { name : string ; age : number ; } > ; let promise ; promise = new Promise < { age : number ; } > ( ( ) => { } ) ; promise = new Promise < { name : string ; } > ( ( ) => { } ) ; promise = new Promise < { name : string ; age : number ; } > ( ( ) => { } ) ; promise = new Promise < { } > ( ( ) => { } ) ; } }