type Secure<T> = T extends Function | RegExp | Primitive | Date | Error | Map<any, any> | Set<any> | Promise<any> ? T : T extends readonly any[] ? number extends T["length"] ? SecureArray<T[number]> : { readonly [K in keyof T]: Secure<T[K]>; } : T extends object ? SecureObject<T> : T
Deep Readonly object for type safety