import { getObjectUtils } from "../object"; import { getObjectLikeUtils } from "../object-like"; import { BaseObjectSchema, ObjectSchema } from "../object/types"; import { getSchemaUtils } from "../schema-utils"; import { constructLazyBaseSchema, getMemoizedSchema, SchemaGetter } from "./lazy"; export function lazyObject(getter: SchemaGetter>): ObjectSchema { const baseSchema: BaseObjectSchema = { ...constructLazyBaseSchema(getter), _getRawProperties: async () => (await getMemoizedSchema(getter))._getRawProperties(), _getParsedProperties: async () => (await getMemoizedSchema(getter))._getParsedProperties(), }; return { ...baseSchema, ...getSchemaUtils(baseSchema), ...getObjectLikeUtils(baseSchema), ...getObjectUtils(baseSchema), }; }