import { IsTupleList, List } from "../list"; import { Builtin } from "../primitive"; import { IsUnknown } from "../type"; import { Readonly } from "."; /** * makes (nested) keys of an object readonly * * @since 0.0.2 */ export type DeepReadonly = T extends Builtin ? T : T extends Promise ? Promise> : IsTupleList extends true ? { readonly [K in keyof T]: DeepReadonly; } : T extends List ? ReadonlyArray> : T extends Map ? Map, DeepReadonly> : T extends Set ? Set> : T extends ReadonlyMap ? ReadonlyMap, DeepReadonly> : T extends ReadonlySet ? ReadonlySet> : T extends WeakMap ? WeakMap, DeepReadonly> : T extends WeakSet ? WeakSet> : T extends {} ? { readonly [K in keyof T]: DeepReadonly; } : IsUnknown extends true ? unknown : Readonly; //# sourceMappingURL=deep-readonly.d.ts.map